X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=abook.c;h=fd3e336b76da349f10ac9418384113f13d5197c2;hb=f23af6b90ad6dbe1180c0e660112739be70fd86a;hp=da165382683649f3fb596b1e13e285c8e4ce5a1d;hpb=42b63bdef9bec780253f214fa2c7d0b5ce484725;p=pkg%2Fabook.git diff --git a/abook.c b/abook.c index da16538..fd3e336 100644 --- a/abook.c +++ b/abook.c @@ -242,7 +242,7 @@ set_filename(char **var, char *path) cwd = my_getcwd(); - *var = strconcat(cwd, path, NULL); + *var = strconcat(cwd, "/", path, NULL); free(cwd); } @@ -604,13 +604,13 @@ abook_fopen (const char *path, const char *mode) { struct stat s; - if( ! strchr(mode, 'r') ) - return fopen(path, mode); - - if ( (stat(path, &s)) == -1 ) + if((stat(path, &s)) == -1) return NULL; - - return S_ISREG(s.st_mode) ? fopen(path, mode) : NULL; + + if(strchr(mode, 'r')) + return S_ISREG(s.st_mode) ? fopen(path, mode) : NULL; + else + return S_ISDIR(s.st_mode) ? NULL : fopen(path, mode); } @@ -754,6 +754,12 @@ add_email(int quiet) { char *line; char *name = NULL, *email = NULL; + struct stat s; + + if( (fstat(fileno(stdin), &s)) == -1 || S_ISDIR(s.st_mode)) { + fprintf(stderr, "stdin is a directory or cannot stat stdin\n"); + exit(1); + } init_add_email();