1
0

iron out bugs

This commit is contained in:
dtb 2023-08-14 20:41:02 -04:00
parent 6828c30aa1
commit 3fc6198996

View File

@ -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)