1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
From 2a6b675f7bdf6eaf512620c43980abe91a20de28 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Fri, 25 Jul 2014 15:28:33 +0200
Subject: [PATCH 15/15] diff: add support for --no-dereference
Add flag for not following symlinks when recursing
function old new delta
.rodata 7934 7967 +33
diff_longopts 253 270 +17
packed_usage 1704 1720 +16
diff_main 1665 1662 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 66/-3) Total: 63 bytes
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
---
editors/diff.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/editors/diff.c b/editors/diff.c
index ff26936..585b7f6 100644
--- a/editors/diff.c
+++ b/editors/diff.c
@@ -117,6 +117,9 @@
//usage: "\n -N Treat absent files as empty"
//usage: "\n -q Output only whether files differ"
//usage: "\n -r Recurse"
+//usage: IF_LONG_OPTS(
+//usage: "\n --no-dereference Don't follow symlinks"
+//usage: )
//usage: "\n -S Start with FILE when comparing directories"
//usage: "\n -T Make tabs line up by prefixing a tab when necessary"
//usage: "\n -s Report when two files are the same"
@@ -158,6 +161,7 @@ enum { /* Commandline flags */
FLAG_p, /* not implemented */
FLAG_B,
FLAG_E, /* not implemented */
+ FLAG_no_deref,
};
#define FLAG(x) (1 << FLAG_##x)
@@ -872,7 +876,8 @@ static void diffdir(char *p[2], const char *s_start)
* Using list.len to specify its length,
* add_to_dirlist will remove it. */
list[i].len = strlen(p[i]);
- recursive_action(p[i], ACTION_RECURSE | ACTION_FOLLOWLINKS,
+ recursive_action(p[i], ACTION_RECURSE |
+ ((option_mask32 & FLAG(no_deref)) ? 0 : ACTION_FOLLOWLINKS),
add_to_dirlist, skip_dir, &list[i], 0);
/* Sort dl alphabetically.
* GNU diff does this ignoring any number of trailing dots.
@@ -969,6 +974,7 @@ static const char diff_longopts[] ALIGN1 =
"report-identical-files\0" No_argument "s"
"starting-file\0" Required_argument "S"
"minimal\0" No_argument "d"
+ "no-dereference\0" No_argument "\xff"
;
#endif
--
2.9.1
|