iron out bugs
This commit is contained in:
parent
6828c30aa1
commit
3fc6198996
20
cat/cat.c
20
cat/cat.c
@ -9,12 +9,11 @@
|
||||
|
||||
/* NetBSD's default size according to an strace */
|
||||
static unsigned char buf[4096];
|
||||
static char **default_argv = {
|
||||
(char [])"cat",
|
||||
(char [])"-",
|
||||
NULL
|
||||
}
|
||||
static char *program_name = *default_argv;
|
||||
static char *default_argv[] = {
|
||||
"cat",
|
||||
"-",
|
||||
(char *)NULL
|
||||
};
|
||||
static char *stdout_name = "/dev/stdout";
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
@ -53,13 +52,13 @@ int main(int argc, char *argv[]){
|
||||
if(arguing && *argv[optind] == '-'){ /* "--" */
|
||||
arguing = 0;
|
||||
continue;
|
||||
}
|
||||
if(*argv[optind] == '-' && argv[optind][1] == '\0'){ /* "-" */
|
||||
fn = stdout_name;
|
||||
fo = stdout;
|
||||
}else{
|
||||
fn = argv[optind];
|
||||
if(stat(fn, &fi) == -1){
|
||||
fclose(fo);
|
||||
switch(errno){
|
||||
case EFAULT: case ENOENT: case ENOTDIR:
|
||||
fprintf(stderr,
|
||||
@ -82,11 +81,16 @@ int main(int argc, char *argv[]){
|
||||
}
|
||||
}
|
||||
if(S_ISDIR(fi.st_mode)){
|
||||
fclose(fo);
|
||||
fprintf(stderr, "%s: %s: Is a directory.\n",
|
||||
argv[0], fn);
|
||||
return EX_DATAERR;
|
||||
}
|
||||
if((fo = fopen(fn, "r")) == NULL){
|
||||
fprintf(stderr,
|
||||
"%s: %s: Error opening file.\n",
|
||||
argv[0], fn);
|
||||
return EX_OSERR;
|
||||
}
|
||||
}
|
||||
|
||||
while((c = getc(fo)) != EOF)
|
||||
|
Loading…
Reference in New Issue
Block a user