test structure too
[tridge/junkcode.git] / xattr.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <sys/types.h>
4 #include <attr/xattr.h>
5
6
7 ssize_t sys_getxattr(const char *path, const char *name, void *value, size_t size)
8 {
9         return getxattr(path, name, value, size);
10 }
11
12 ssize_t sys_fgetxattr(int filedes, const char *name, void *value, size_t size)
13 {
14         return fgetxattr(filedes, name, value, size);
15 }
16
17 int sys_setxattr(const char *path, const char *name, const void *value, 
18                  size_t size, int flags)
19 {
20         return setxattr(path, name, value, size, flags);
21 }
22
23 int sys_fsetxattr(int filedes, const char *name, const void *value, 
24                   size_t size, int flags)
25 {
26         return fsetxattr(filedes, name, value, size, flags);
27 }
28
29
30 int main(int argc, const char *argv[])
31 {
32         const char *fname = argv[1];
33         int rc;
34         size_t size = 1*1024*1024;
35         char *buf = malloc(size);
36         const char *attrname = "user.DOSATTRIB";
37
38         memset(buf, 'x', size);
39
40         do {
41           rc = sys_setxattr(fname, attrname, buf, size, 0);
42           if (rc == -1) size--;
43         } while (rc == -1 && size > 1);
44         if (rc == -1) {
45                 perror("setxattr");
46                 exit(1);
47         }
48         printf("set xattr of size %d\n", size);
49
50         rc = sys_getxattr(fname, attrname, buf, size);
51         if (rc == -1) {
52                 perror("getxattr");
53                 exit(1);
54         }
55         buf[rc] = 0;
56
57         return 0;
58 }