From 40a47ede7280c023495be97d54b08d60a932f4a7 Mon Sep 17 00:00:00 2001 From: Emmanuel Dreyfus Date: Thu, 8 Dec 2011 10:55:27 +0000 Subject: utimens availability check fusexmp uses utimens and takes that function for granted. It is part of POSIX exended API set 2 and some systems do not have it yet. Attached patch checks for utimens availability and returns ENOSYS if unavailable. --- example/fusexmp_fh.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'example/fusexmp_fh.c') diff --git a/example/fusexmp_fh.c b/example/fusexmp_fh.c index 046185c..57053ca 100644 --- a/example/fusexmp_fh.c +++ b/example/fusexmp_fh.c @@ -283,16 +283,19 @@ static int xmp_ftruncate(const char *path, off_t size, return 0; } +#ifdef HAVE_UTIMENSAT static int xmp_utimens(const char *path, const struct timespec ts[2]) { int res; + /* don't use utime/utimes since they follow symlinks */ res = utimensat(0, path, ts, AT_SYMLINK_NOFOLLOW); if (res == -1) return -errno; return 0; } +#endif static int xmp_create(const char *path, mode_t mode, struct fuse_file_info *fi) { @@ -513,7 +516,9 @@ static struct fuse_operations xmp_oper = { .chown = xmp_chown, .truncate = xmp_truncate, .ftruncate = xmp_ftruncate, +#ifdef HAVE_UTIMENSAT .utimens = xmp_utimens, +#endif .create = xmp_create, .open = xmp_open, .read = xmp_read, -- cgit v1.2.3