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 */
|
/* NetBSD's default size according to an strace */
|
||||||
static unsigned char buf[4096];
|
static unsigned char buf[4096];
|
||||||
static char **default_argv = {
|
static char *default_argv[] = {
|
||||||
(char [])"cat",
|
"cat",
|
||||||
(char [])"-",
|
"-",
|
||||||
NULL
|
(char *)NULL
|
||||||
}
|
};
|
||||||
static char *program_name = *default_argv;
|
|
||||||
static char *stdout_name = "/dev/stdout";
|
static char *stdout_name = "/dev/stdout";
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
@ -53,13 +52,13 @@ int main(int argc, char *argv[]){
|
|||||||
if(arguing && *argv[optind] == '-'){ /* "--" */
|
if(arguing && *argv[optind] == '-'){ /* "--" */
|
||||||
arguing = 0;
|
arguing = 0;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
if(*argv[optind] == '-' && argv[optind][1] == '\0'){ /* "-" */
|
if(*argv[optind] == '-' && argv[optind][1] == '\0'){ /* "-" */
|
||||||
fn = stdout_name;
|
fn = stdout_name;
|
||||||
fo = stdout;
|
fo = stdout;
|
||||||
}else{
|
}else{
|
||||||
fn = argv[optind];
|
fn = argv[optind];
|
||||||
if(stat(fn, &fi) == -1){
|
if(stat(fn, &fi) == -1){
|
||||||
fclose(fo);
|
|
||||||
switch(errno){
|
switch(errno){
|
||||||
case EFAULT: case ENOENT: case ENOTDIR:
|
case EFAULT: case ENOENT: case ENOTDIR:
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
@ -82,11 +81,16 @@ int main(int argc, char *argv[]){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(S_ISDIR(fi.st_mode)){
|
if(S_ISDIR(fi.st_mode)){
|
||||||
fclose(fo);
|
|
||||||
fprintf(stderr, "%s: %s: Is a directory.\n",
|
fprintf(stderr, "%s: %s: Is a directory.\n",
|
||||||
argv[0], fn);
|
argv[0], fn);
|
||||||
return EX_DATAERR;
|
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)
|
while((c = getc(fo)) != EOF)
|
||||||
|
Loading…
Reference in New Issue
Block a user