From bf25c3a43f79f568b55c45e2701f5c961977b47c Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sun, 15 Mar 2009 01:04:50 +0000 Subject: 26735: Check some function return values for failures. Gets rid of some compiler warnings, and improves error handling/notification. --- Src/Modules/files.c | 3 ++- Src/Modules/mapfile.c | 6 ++++-- Src/Modules/zftp.c | 5 +++-- 3 files changed, 9 insertions(+), 5 deletions(-) (limited to 'Src/Modules') diff --git a/Src/Modules/files.c b/Src/Modules/files.c index f22b23fb7..0b991c556 100644 --- a/Src/Modules/files.c +++ b/Src/Modules/files.c @@ -428,7 +428,8 @@ recursivecmd(char *nam, int opt_noerr, int opt_recurse, int opt_safe, if ((err & 2) && ds.dirfd >= 0 && restoredir(&ds) && zchdir(pwd)) { zsfree(pwd); pwd = ztrdup("/"); - chdir(pwd); + if (chdir(pwd) < 0) + zwarn("failed to chdir(%s): %e", pwd, errno); } if (ds.dirfd >= 0) close(ds.dirfd); diff --git a/Src/Modules/mapfile.c b/Src/Modules/mapfile.c index d825c7faa..422c7077c 100644 --- a/Src/Modules/mapfile.c +++ b/Src/Modules/mapfile.c @@ -92,7 +92,8 @@ setpmmapfile(Param pm, char *value) * First we need to make sure the file is long enough for * when we msync. On AIX, at least, we just get zeroes otherwise. */ - ftruncate(fd, len); + if (ftruncate(fd, len) < 0) + zwarn("ftruncate failed: %e", errno); memcpy(mmptr, value, len); #ifndef MS_SYNC #define MS_SYNC 0 @@ -102,7 +103,8 @@ setpmmapfile(Param pm, char *value) * Then we need to truncate again, since mmap() always maps complete * pages. Honestly, I tried it without, and you need both. */ - ftruncate(fd, len); + if (ftruncate(fd, len) < 0) + zwarn("ftruncate failed: %e", errno); munmap(mmptr, len); } #else /* don't USE_MMAP */ diff --git a/Src/Modules/zftp.c b/Src/Modules/zftp.c index 12a9f0de2..0dc94866a 100644 --- a/Src/Modules/zftp.c +++ b/Src/Modules/zftp.c @@ -2043,8 +2043,9 @@ zfgetinfo(char *prompt, int noecho) fflush(stderr); } - fgets(instr, 256, stdin); - if (instr[len = strlen(instr)-1] == '\n') + if (fgets(instr, 256, stdin) == NULL) + instr[len = 0] = '\0'; + else if (instr[len = strlen(instr)-1] == '\n') instr[len] = '\0'; strret = dupstring(instr); -- cgit 1.4.1