From be266b43647ef57632d7bcfd07a4441f737b5aed Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Fri, 13 Nov 2009 00:59:34 +0100 Subject: Refactor do/while cycle and multiple while cycles * It makes the code clearer to read/understand * Cppcheck tool doesn't show this anymore: [./util.c:215]: (error) Resource leak: fd [Dan: don't change the coding style] Signed-off-by: Dan McGee --- lib/libalpm/trans.c | 5 ++++- lib/libalpm/util.c | 11 +++++++---- src/pacman/pacman.c | 4 +++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index aea71db1..4879d236 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -261,7 +261,10 @@ int SYMEXPORT alpm_trans_release() /* unlock db */ if(!nolock_flag) { if(handle->lckfd != -1) { - while(close(handle->lckfd) == -1 && errno == EINTR); + int fd; + do { + fd = close(handle->lckfd); + } while(fd == -1 && errno == EINTR); handle->lckfd = -1; } if(_alpm_lckrm()) { diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index cf2d6236..27e861e4 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -212,8 +212,9 @@ int _alpm_lckmk() _alpm_makepath(dir); FREE(dir); - while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1 - && errno == EINTR); + do { + fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000); + } while (fd == -1 && errno == EINTR); if(fd > 0) { FILE *f = fdopen(fd, "w"); fprintf(f, "%ld\n", (long)getpid()); @@ -315,7 +316,7 @@ int _alpm_unpack(const char *archive, const char *prefix, alpm_list_t *list, int st = archive_entry_stat(entry); entryname = archive_entry_pathname(entry); - + if(S_ISREG(st->st_mode)) { archive_entry_set_perm(entry, 0644); } else if(S_ISDIR(st->st_mode)) { @@ -511,7 +512,9 @@ int _alpm_run_chroot(const char *root, const char *cmd) /* this code runs for the parent only (wait on the child) */ pid_t retpid; int status; - while((retpid = waitpid(pid, &status, 0)) == -1 && errno == EINTR); + do { + retpid = waitpid(pid, &status, 0); + } while(retpid == -1 && errno == EINTR); if(retpid == -1) { _alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)\n"), strerror(errno)); diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index f4f80449..574a4a8a 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -234,7 +234,9 @@ static void cleanup(int ret) { static ssize_t xwrite(int fd, const void *buf, size_t count) { ssize_t ret; - while((ret = write(fd, buf, count)) == -1 && errno == EINTR); + do { + ret = write(fd, buf, count); + } while(ret == -1 && errno == EINTR); return(ret); } -- cgit v1.2.3-70-g09d2