Jiří Moskovčák 789e5e
--- acl-2.2.39/getfacl/getfacl.c.old	2007-11-08 14:38:56.000000000 +0100
Jiří Moskovčák 789e5e
+++ acl-2.2.39/getfacl/getfacl.c	2007-11-08 14:39:19.000000000 +0100
Jiří Moskovčák b2af30
@@ -598,17 +598,17 @@ int __do_print(const char *file, const s
Jiří Moskovčák b2af30
 char *resolve_symlinks(const char *file)
Steve Grubb d5ab53
 {
Jiří Moskovčák b2af30
 	static char buffer[4096];
Jiří Moskovčák b2af30
+	struct stat stat;
Jiří Moskovčák b2af30
 	char *path = NULL;
Steve Grubb d5ab53
-	ssize_t len;
Jiří Moskovčák b2af30
 
Steve Grubb d5ab53
-	len = readlink(file, buffer, sizeof(buffer)-1);
Steve Grubb d5ab53
-	if (len < 0) {
Steve Grubb d5ab53
-		if (errno == EINVAL)	/* not a symlink, use given path */
Steve Grubb d5ab53
-			path = (char *)file;
Steve Grubb d5ab53
-	} else {
Steve Grubb d5ab53
-		buffer[len+1] = '\0';
Steve Grubb d5ab53
-		path = buffer;
Jiří Moskovčák b2af30
-	}
Jiří Moskovčák b2af30
+	if (lstat(file, &stat) == -1)
Jiří Moskovčák b2af30
+		return path;
Steve Grubb d5ab53
+
Jiří Moskovčák b2af30
+	if (S_ISLNK(stat.st_mode) && !opt_walk_physical)
Jiří Moskovčák b2af30
+		path = realpath(file, buffer);
Jiří Moskovčák b2af30
+	else
Jiří Moskovčák b2af30
+		path = (char *)file; 	/* not a symlink, use given path */
Steve Grubb d5ab53
+
Jiří Moskovčák b2af30
 	return path;
Steve Grubb d5ab53
 }
Steve Grubb d5ab53
 
Jiří Moskovčák 789e5e
--- acl-2.2.39/setfacl/setfacl.c.old	2006-06-20 08:51:25.000000000 +0200
Jiří Moskovčák 789e5e
+++ acl-2.2.39/setfacl/setfacl.c	2007-11-08 14:39:19.000000000 +0100
Jiří Moskovčák 789e5e
@@ -314,17 +316,17 @@ int __do_set(const char *file, const str
Jiří Moskovčák 789e5e
 char *resolve_symlinks(const char *file)
Jiří Moskovčák 789e5e
 {
Jiří Moskovčák 789e5e
 	static char buffer[4096];
Jiří Moskovčák 789e5e
+	struct stat stat;
Jiří Moskovčák 789e5e
 	char *path = NULL;
Jiří Moskovčák 789e5e
-	ssize_t len;
Jiří Moskovčák 789e5e
 
Jiří Moskovčák 789e5e
-	len = readlink(file, buffer, sizeof(buffer)-1);
Jiří Moskovčák 789e5e
-	if (len < 0) {
Jiří Moskovčák 789e5e
-		if (errno == EINVAL)	/* not a symlink, use given path */
Jiří Moskovčák 789e5e
-			path = (char *)file;
Jiří Moskovčák 789e5e
-	} else {
Jiří Moskovčák 789e5e
-		buffer[len+1] = '\0';
Jiří Moskovčák 789e5e
-		path = buffer;
Jiří Moskovčák 789e5e
-	}
Jiří Moskovčák 789e5e
+	if (lstat(file, &stat) == -1)
Jiří Moskovčák 789e5e
+		return path;
Jiří Moskovčák 789e5e
+
Jiří Moskovčák 789e5e
+	if (S_ISLNK(stat.st_mode) && !opt_walk_physical)
Jiří Moskovčák 789e5e
+		path = realpath(file, buffer);
Jiří Moskovčák 789e5e
+	else
Jiří Moskovčák 789e5e
+		path = (char *)file;    /* not a symlink, use given path */
Jiří Moskovčák 789e5e
+
Jiří Moskovčák 789e5e
 	return path;
Jiří Moskovčák 789e5e
 }
Jiří Moskovčák 789e5e