diff options
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/dd.c | 15 | ||||
-rw-r--r-- | coreutils/ls.c | 2 | ||||
-rw-r--r-- | coreutils/mkdir.c | 3 | ||||
-rw-r--r-- | coreutils/rm.c | 5 |
4 files changed, 18 insertions, 7 deletions
diff --git a/coreutils/dd.c b/coreutils/dd.c index 9468cdd..39c6a62 100644 --- a/coreutils/dd.c +++ b/coreutils/dd.c @@ -162,8 +162,13 @@ extern int dd_main (int argc, char **argv) intotal = 0; outTotal = 0; - if (inFile == NULL) - inFd = STDIN; + if (inFile == NULL) { + struct stat statBuf; + inFd = fileno(stdin); + if (fstat(inFd, &statBuf) < 0) + exit( FALSE); + count = statBuf.st_size; + } else inFd = open (inFile, 0); @@ -174,7 +179,7 @@ extern int dd_main (int argc, char **argv) } if (outFile == NULL) - outFd = STDOUT; + outFd = fileno(stdout); else outFd = creat (outFile, 0666); @@ -191,6 +196,8 @@ extern int dd_main (int argc, char **argv) if (inCc < 0) { perror (inFile); goto cleanup; + } else if (inCc == 0) { + goto cleanup; } intotal += inCc; cp = buf; @@ -202,6 +209,8 @@ extern int dd_main (int argc, char **argv) if (outCc < 0) { perror (outFile); goto cleanup; + } else if (outCc == 0) { + goto cleanup; } inCc -= outCc; diff --git a/coreutils/ls.c b/coreutils/ls.c index f09cbbc..0558bb2 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -475,7 +475,7 @@ ls_main(int argc, char * * argv) /* choose a display format */ if (display_fmt == FMT_AUTO) - display_fmt = isatty(STDOUT_FILENO) ? FMT_COLUMNS : FMT_SINGLE; + display_fmt = isatty(fileno(stdout)) ? FMT_COLUMNS : FMT_SINGLE; if (argi < argc - 1) opts |= DISP_DIRNAME; /* 2 or more items? label directories */ #ifdef FEATURE_AUTOWIDTH diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c index 28315ca..2cd1788 100644 --- a/coreutils/mkdir.c +++ b/coreutils/mkdir.c @@ -85,8 +85,9 @@ extern int mkdir_main(int argc, char **argv) fprintf(stderr, "%s: File exists\n", *argv); exit( FALSE); } - if (parentFlag == TRUE) + if (parentFlag == TRUE) { createPath(*argv, mode); + } else { if (mkdir (*argv, mode) != 0) { perror(*argv); diff --git a/coreutils/rm.c b/coreutils/rm.c index ba5d30e..ee434fb 100644 --- a/coreutils/rm.c +++ b/coreutils/rm.c @@ -31,8 +31,8 @@ static const char* rm_usage = "rm [OPTION]... FILE...\n\n" "Remove (unlink) the FILE(s).\n\n" "Options:\n" -"\t-f\tremove existing destinations, never prompt\n" -"\t-r\tremove the contents of directories recursively\n"; +"\t-f\t\tremove existing destinations, never prompt\n" +"\t-r or -R\tremove the contents of directories recursively\n"; static int recursiveFlag = FALSE; @@ -72,6 +72,7 @@ extern int rm_main(int argc, char **argv) while (**argv == '-') { while (*++(*argv)) switch (**argv) { + case 'R': case 'r': recursiveFlag = TRUE; break; |