diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-22 22:31:04 +1000 |
---|---|---|
committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-23 04:44:37 +1000 |
commit | df9141a4384f3a85c31b1f35fd76c9260776c254 (patch) | |
tree | b4eec9b4b65c8852de226c8866e7439cf2a6237d | |
parent | c80479aae2106531a8b7fe0d21de2c0639fbec96 (diff) | |
download | busybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.tar.gz busybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.tar.bz2 busybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.zip |
coreutils/diff: support /dev/null
-rw-r--r-- | coreutils/diff.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/coreutils/diff.c b/coreutils/diff.c index f0e298797..7599273c8 100644 --- a/coreutils/diff.c +++ b/coreutils/diff.c | |||
@@ -1174,6 +1174,7 @@ int diff_main(int argc, char **argv) | |||
1174 | char *U_opt; | 1174 | char *U_opt; |
1175 | char *f1, *f2; | 1175 | char *f1, *f2; |
1176 | llist_t *L_arg = NULL; | 1176 | llist_t *L_arg = NULL; |
1177 | int flags = 0; | ||
1177 | 1178 | ||
1178 | /* exactly 2 params; collect multiple -L <label> */ | 1179 | /* exactly 2 params; collect multiple -L <label> */ |
1179 | opt_complementary = "=2:L::"; | 1180 | opt_complementary = "=2:L::"; |
@@ -1207,11 +1208,21 @@ int diff_main(int argc, char **argv) | |||
1207 | if (LONE_DASH(f1)) { | 1208 | if (LONE_DASH(f1)) { |
1208 | fstat(STDIN_FILENO, &stb1); | 1209 | fstat(STDIN_FILENO, &stb1); |
1209 | gotstdin = 1; | 1210 | gotstdin = 1; |
1211 | #ifdef __MINGW32__ | ||
1212 | } else if ( !strncmp( f1, "/dev/null", 10 ) ) { | ||
1213 | flags |= D_EMPTY1; | ||
1214 | stb1.st_mode = S_IFREG; | ||
1215 | #endif | ||
1210 | } else | 1216 | } else |
1211 | xstat(f1, &stb1); | 1217 | xstat(f1, &stb1); |
1212 | if (LONE_DASH(f2)) { | 1218 | if (LONE_DASH(f2)) { |
1213 | fstat(STDIN_FILENO, &stb2); | 1219 | fstat(STDIN_FILENO, &stb2); |
1214 | gotstdin = 1; | 1220 | gotstdin = 1; |
1221 | #ifdef __MINGW32__ | ||
1222 | } else if ( !strncmp( f2, "/dev/null", 10 ) ) { | ||
1223 | flags |= D_EMPTY2; | ||
1224 | stb2.st_mode = S_IFREG; | ||
1225 | #endif | ||
1215 | } else | 1226 | } else |
1216 | xstat(f2, &stb2); | 1227 | xstat(f2, &stb2); |
1217 | if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode))) | 1228 | if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode))) |
@@ -1236,7 +1247,7 @@ int diff_main(int argc, char **argv) | |||
1236 | * This can be fixed (volunteers?) */ | 1247 | * This can be fixed (volunteers?) */ |
1237 | if (!S_ISREG(stb1.st_mode) || !S_ISREG(stb2.st_mode)) | 1248 | if (!S_ISREG(stb1.st_mode) || !S_ISREG(stb2.st_mode)) |
1238 | bb_error_msg_and_die("can't diff non-seekable stream"); | 1249 | bb_error_msg_and_die("can't diff non-seekable stream"); |
1239 | print_status(diffreg(f1, f2, 0), f1, f2, NULL); | 1250 | print_status(diffreg(f1, f2, flags), f1, f2, NULL); |
1240 | } | 1251 | } |
1241 | return status; | 1252 | return status; |
1242 | } | 1253 | } |