]> arthur.barton.de Git - netatalk.git/commitdiff
Creating EAs that existed on Solaris
authorFrank Lahm <franklahm@googlemail.com>
Tue, 31 Jan 2012 11:37:43 +0000 (12:37 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Tue, 31 Jan 2012 11:37:43 +0000 (12:37 +0100)
libatalk/vfs/extattr.c

index 66f0b8c0c5b644b4e926a3c887c3b15399a1147a..c98b6ea14f751e3f0293dec15f67c7d2afb89ab8 100644 (file)
@@ -866,24 +866,38 @@ static int solaris_unlinkat(int attrdirfd, const char *name)
 
 static int solaris_attropen(const char *path, const char *attrpath, int oflag, mode_t mode)
 {
-       int filedes = attropen(path, attrpath, oflag, mode);
-       if (filedes == -1) {
-        if (errno != ENOENT)
+       int filedes;
+
+       if ((filedes = attropen(path, attrpath, oflag, mode)) == -1) {
+        switch (errno) {
+        case ENOENT:
+        case EEXIST:
+            break;
+        default:
             LOG(log_error, logtype_default, "attropen(\"%s\", ea:'%s'): %s",
                 path, attrpath, strerror(errno));
-        errno = ENOATTR;
+            errno = ENOATTR;
+            break;
+        }
        }
        return filedes;
 }
 
 static int solaris_openat(int fildes, const char *path, int oflag, mode_t mode)
 {
-       int filedes = openat(fildes, path, oflag, mode);
-       if (filedes == -1) {
-        if (errno != ENOENT)
+       int filedes;
+
+       if ((filedes = openat(fildes, path, oflag, mode)) == -1) {
+        switch (errno) {
+        case ENOENT:
+        case EEXIST:
+            break;
+        default:
             LOG(log_error, logtype_default, "openat(\"%s\"): %s",
                 path, strerror(errno));
-        errno = ENOATTR;
+            errno = ENOATTR;
+            break;
+        }
        }
        return filedes;
 }