aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-22 22:31:04 +1000
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-23 04:44:37 +1000
commitdf9141a4384f3a85c31b1f35fd76c9260776c254 (patch)
treeb4eec9b4b65c8852de226c8866e7439cf2a6237d
parentc80479aae2106531a8b7fe0d21de2c0639fbec96 (diff)
downloadbusybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.tar.gz
busybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.tar.bz2
busybox-w32-df9141a4384f3a85c31b1f35fd76c9260776c254.zip
coreutils/diff: support /dev/null
-rw-r--r--coreutils/diff.c13
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}