Contents of /trunk/acl/patches/acl-2.2.47-introduce-new-WALK_TREE_DEREFERENCE_TOPLEVEL-flag.patch
Parent Directory | Revision Log
Revision 949 -
(show annotations)
(download)
Tue Dec 22 22:35:23 2009 UTC (14 years, 9 months ago) by niro
File size: 1749 byte(s)
Tue Dec 22 22:35:23 2009 UTC (14 years, 9 months ago) by niro
File size: 1749 byte(s)
-added acl patches
1 | http://bugs.gentoo.org/265425 |
2 | |
3 | From 1a80c89ee88357137b598fa3357b576933c5746c Mon Sep 17 00:00:00 2001 |
4 | From: Andreas Gruenbacher <agruen@suse.de> |
5 | Date: Tue, 23 Jun 2009 00:17:49 +0200 |
6 | Subject: [PATCH] Introduce new WALK_TREE_DEREFERENCE_TOPLEVEL flag |
7 | |
8 | This flag indicates to dereference top-level symlinks. (If non |
9 | top-level symlinks should be stat()ed as well, the |
10 | WALK_TREE_DEREFERENCE flag must be specified.) |
11 | --- |
12 | include/walk_tree.h | 9 +++++---- |
13 | libmisc/walk_tree.c | 4 +++- |
14 | 2 files changed, 8 insertions(+), 5 deletions(-) |
15 | |
16 | diff --git a/include/walk_tree.h b/include/walk_tree.h |
17 | index 53a8fc5..9f1ec34 100644 |
18 | --- a/include/walk_tree.h |
19 | +++ b/include/walk_tree.h |
20 | @@ -20,10 +20,11 @@ |
21 | #ifndef __WALK_TREE_H |
22 | #define __WALK_TREE_H |
23 | |
24 | -#define WALK_TREE_RECURSIVE 0x1 |
25 | -#define WALK_TREE_PHYSICAL 0x2 |
26 | -#define WALK_TREE_LOGICAL 0x4 |
27 | -#define WALK_TREE_DEREFERENCE 0x8 |
28 | +#define WALK_TREE_RECURSIVE 0x01 |
29 | +#define WALK_TREE_PHYSICAL 0x02 |
30 | +#define WALK_TREE_LOGICAL 0x04 |
31 | +#define WALK_TREE_DEREFERENCE 0x08 |
32 | +#define WALK_TREE_DEREFERENCE_TOPLEVEL 0x10 |
33 | |
34 | #define WALK_TREE_TOPLEVEL 0x100 |
35 | #define WALK_TREE_SYMLINK 0x200 |
36 | diff --git a/libmisc/walk_tree.c b/libmisc/walk_tree.c |
37 | index 2777145..30ff92a 100644 |
38 | --- a/libmisc/walk_tree.c |
39 | +++ b/libmisc/walk_tree.c |
40 | @@ -78,7 +78,9 @@ static int walk_tree_rec(const char *path, int walk_flags, |
41 | return func(path, NULL, flags | WALK_TREE_FAILED, arg); |
42 | if (S_ISLNK(st.st_mode)) { |
43 | flags |= WALK_TREE_SYMLINK; |
44 | - if (flags & WALK_TREE_DEREFERENCE) { |
45 | + if ((flags & WALK_TREE_DEREFERENCE) || |
46 | + ((flags & WALK_TREE_TOPLEVEL) && |
47 | + (flags & WALK_TREE_DEREFERENCE_TOPLEVEL))) { |
48 | if (stat(path, &st) != 0) |
49 | return func(path, NULL, |
50 | flags | WALK_TREE_FAILED, arg); |
51 | -- |
52 | 1.6.3.3 |
53 |