|
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 |
|