6
#include <glusterfs/api/glfs.h>
7
#include <glusterfs/api/glfs-handles.h>
9
#define ACL_TYPE_ACCESS (0x8000)
11
#define VALIDATE_AND_GOTO_LABEL_ON_ERROR(func, ret, label) \
14
fprintf(stderr, "%s : returned error %d (%s)\n", func, ret, \
21
main(int argc, char *argv[])
24
int flags = O_RDWR | O_SYNC;
29
const char *filename = "file_tmp";
30
struct glfs_object *object = NULL;
35
fprintf(stderr, "Invalid argument\n");
42
fs = glfs_new(volname);
44
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_new", ret, out);
46
ret = glfs_set_volfile_server(fs, "tcp", "localhost", 24007);
47
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_set_volfile_server", ret, out);
49
ret = glfs_set_logging(fs, logfile, 7);
50
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_set_logging", ret, out);
53
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_init", ret, out);
55
fd = glfs_creat(fs, filename, flags, 0044);
58
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_creat", ret, out);
62
object = glfs_h_lookupat(fs, NULL, filename, NULL, 0);
65
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_h_lookupat", ret, out);
68
ret = glfs_chown(fs, filename, 99, 99);
69
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_chown", ret, out);
71
ret = glfs_setfsuid(99);
72
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_setfsuid", ret, out);
74
ret = glfs_setfsgid(99);
75
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_setfsgid", ret, out);
77
acl = glfs_h_acl_get(fs, object, ACL_TYPE_ACCESS);
80
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_h_acl_get", ret, out);
83
ret = glfs_h_acl_set(fs, object, ACL_TYPE_ACCESS, acl);
84
VALIDATE_AND_GOTO_LABEL_ON_ERROR("glfs_h_acl_get", ret, out);