Bug 70141 - getxattr(2): #include <attr/xattr.h> problem
Summary: getxattr(2): #include <attr/xattr.h> problem
Status: RESOLVED CODE_FIX
Alias: None
Product: Documentation
Classification: Unclassified
Component: man-pages (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: documentation_man-pages@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-06 13:21 UTC by Fabrice Bauzac
Modified: 2014-02-07 12:08 UTC (History)
2 users (show)

See Also:
Kernel Version:
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Fabrice Bauzac 2014-02-06 13:21:41 UTC
Hello,

On the getxattr(2) manual page [1], it is indicated that the includes should be

#include <sys/types.h>
#include <attr/xattr.h>

However, on my system [2], the compiler (g++) cannot find <attr/xattr.h>.

#include <attr/xattr.h>
fatal error: attr/xattr.h: No such file or directory

There are only two xattr.h files on my system (according to locate(1)):

/usr/include/linux/xattr.h
/usr/include/sys/xattr.h

It appears that replacing <attr/xattr.h> with <sys/xattr.h> fixes my compilation problem.

I guess the manual page needs to be fixed?

Thanks!

Best regards
Fabrice

[1] http://man7.org/linux/man-pages/man2/fgetxattr.2.html

[2]
Fedora core 19
Linux localhost.localdomain 3.12.9-201.fc19.x86_64 #1 SMP
kernel-3.12.9-201.fc19.x86_64
glibc-headers-2.17-20.fc19.x86_64
Comment 1 Mike Frysinger 2014-02-06 13:30:20 UTC
attr/xattr.h is provided by the attr package (which might be named diff depending on your distro).  historically it was the provider of xattr functionality.

that said, current versions of glibc provide equivalent functionality so there shouldn't be a need to point people to the attr package.
Comment 2 Fabrice Bauzac 2014-02-06 13:51:00 UTC
On my system, /usr/include/sys/xattr.h is provided by glibc-headers-2.17-20.fc19.x86_64.
Comment 3 Michael Kerrisk 2014-02-06 14:28:59 UTC
(In reply to Fabrice Bauzac from comment #2)
> On my system, /usr/include/sys/xattr.h is provided by
> glibc-headers-2.17-20.fc19.x86_64.

It looks like this has been so for a very long time now (bak to glibc 2.3?), but the man pages didn't get fixed. I've applied a fix (s%xattr/%sys/%) to

getxattr.2
listxattr.2
removexattr.2
setxattr.2

Thanks for the report.

Cheers,

Michael
Comment 4 Mike Frysinger 2014-02-06 18:40:18 UTC
(In reply to Fabrice Bauzac from comment #2)

ok, but i didn't say sys/xattr.h, i said attr/xattr.h

(In reply to Michael Kerrisk from comment #3)

i think these manpages were originally imported from the attr project ?

the "standard" funcs have been provided by glibc for a long time:
 - {l,f,}getxattr
 - {l,f,}listxattr
 - {l,f,}removexattr
 - {l,f,}setxattr

the attr package provides more funcs than those, and it provides command line utils for interacting with file xattrs, so it's not a completely obsolete package (at least for Linux)
Comment 5 Michael Kerrisk 2014-02-07 12:08:44 UTC
(In reply to Mike Frysinger from comment #4)
> (In reply to Fabrice Bauzac from comment #2)
> 
> ok, but i didn't say sys/xattr.h, i said attr/xattr.h
> 
> (In reply to Michael Kerrisk from comment #3)
> 
> i think these manpages were originally imported from the attr project ?

Yes, that's my recollection.

> the "standard" funcs have been provided by glibc for a long time:
>  - {l,f,}getxattr
>  - {l,f,}listxattr
>  - {l,f,}removexattr
>  - {l,f,}setxattr
> 
> the attr package provides more funcs than those, and it provides command
> line utils for interacting with file xattrs, so it's not a completely
> obsolete package (at least for Linux)

Yup.

Note You need to log in before you can comment on or make changes to this bug.