- minor shrinkage: -25 bytes or so.

This commit is contained in:
Bernhard Reutner-Fischer 2007-01-06 21:47:09 +00:00
parent 3697a829de
commit ea9e35f5dd

View File

@ -907,13 +907,12 @@ static int diffreg(char *ofile1, char *ofile2, int flags)
if (LONE_DASH(file1) && LONE_DASH(file2)) if (LONE_DASH(file1) && LONE_DASH(file2))
goto closem; goto closem;
f1 = stdin; f1 = f2 = stdin;
if (flags & D_EMPTY1) if (flags & D_EMPTY1)
f1 = xfopen(bb_dev_null, "r"); f1 = xfopen(bb_dev_null, "r");
else if (NOT_LONE_DASH(file1)) else if (NOT_LONE_DASH(file1))
f1 = xfopen(file1, "r"); f1 = xfopen(file1, "r");
f2 = stdin;
if (flags & D_EMPTY2) if (flags & D_EMPTY2)
f2 = xfopen(bb_dev_null, "r"); f2 = xfopen(bb_dev_null, "r");
else if (NOT_LONE_DASH(file2)) else if (NOT_LONE_DASH(file2))
@ -1166,8 +1165,8 @@ static void diffdir(char *p1, char *p2)
int diff_main(int argc, char **argv) int diff_main(int argc, char **argv)
{ {
int gotstdin = 0; int gotstdin = 0;
char *U_opt; char *U_opt;
char *f1, *f2;
llist_t *L_arg = NULL; llist_t *L_arg = NULL;
opt_complementary = "L::"; opt_complementary = "L::";
@ -1212,34 +1211,37 @@ int diff_main(int argc, char **argv)
bb_error_msg("missing filename"); bb_error_msg("missing filename");
bb_show_usage(); bb_show_usage();
} }
if (LONE_DASH(argv[0])) {
f1 = argv[0];
f2 = argv[1];
if (LONE_DASH(f1)) {
fstat(STDIN_FILENO, &stb1); fstat(STDIN_FILENO, &stb1);
gotstdin = 1; gotstdin = 1;
} else } else
xstat(argv[0], &stb1); xstat(f1, &stb1);
if (LONE_DASH(argv[1])) { if (LONE_DASH(f2)) {
fstat(STDIN_FILENO, &stb2); fstat(STDIN_FILENO, &stb2);
gotstdin = 1; gotstdin = 1;
} else } else
xstat(argv[1], &stb2); xstat(f2, &stb2);
if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode))) if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode)))
bb_error_msg_and_die("can't compare - to a directory"); bb_error_msg_and_die("can't compare - to a directory");
if (S_ISDIR(stb1.st_mode) && S_ISDIR(stb2.st_mode)) { if (S_ISDIR(stb1.st_mode) && S_ISDIR(stb2.st_mode)) {
#if ENABLE_FEATURE_DIFF_DIR #if ENABLE_FEATURE_DIFF_DIR
diffdir(argv[0], argv[1]); diffdir(f1, f2);
#else #else
bb_error_msg_and_die("directory comparison not supported"); bb_error_msg_and_die("directory comparison not supported");
#endif #endif
} else { } else {
if (S_ISDIR(stb1.st_mode)) { if (S_ISDIR(stb1.st_mode)) {
argv[0] = concat_path_file(argv[0], argv[1]); f1 = concat_path_file(f1, f2);
xstat(argv[0], &stb1); xstat(f1, &stb1);
} }
if (S_ISDIR(stb2.st_mode)) { if (S_ISDIR(stb2.st_mode)) {
argv[1] = concat_path_file(argv[1], argv[0]); f2 = concat_path_file(f2, f1);
xstat(argv[1], &stb2); xstat(argv[1], &stb2);
} }
print_status(diffreg(argv[0], argv[1], 0), argv[0], argv[1], NULL); print_status(diffreg(f1, f2, 0), f1, f2, NULL);
} }
return status; return status;
} }