diff options
Diffstat (limited to 'Src/utils.c')
-rw-r--r-- | Src/utils.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/Src/utils.c b/Src/utils.c index 075d27241..e43a3cdb4 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -3820,6 +3820,14 @@ wordcount(char *s, char *sep, int mul) return r; } +/* + * 's' is a NULL-terminated array of strings. + * 'sep' is a string. + * + * Return a string consisting of the elements of 's' joined by 'sep', + * allocated on the heap iff 'heap'. + */ + /**/ mod_export char * sepjoin(char **s, char *sep, int heap) @@ -4670,6 +4678,10 @@ attachtty(pid_t pgrp) ep = 1; } } + else + { + last_attached_pgrp = pgrp; + } } } @@ -7447,19 +7459,28 @@ mailstat(char *path, struct stat *st) /* See if cur/ is present */ dir = appstr(ztrdup(path), "/cur"); - if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) { + zsfree(dir); + return 0; + } st_ret.st_atime = st_tmp.st_atime; /* See if tmp/ is present */ dir[plen] = 0; dir = appstr(dir, "/tmp"); - if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) { + zsfree(dir); + return 0; + } st_ret.st_mtime = st_tmp.st_mtime; /* And new/ */ dir[plen] = 0; dir = appstr(dir, "/new"); - if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) { + zsfree(dir); + return 0; + } st_ret.st_mtime = st_tmp.st_mtime; #if THERE_IS_EXACTLY_ONE_MAILDIR_IN_MAILPATH @@ -7471,6 +7492,7 @@ mailstat(char *path, struct stat *st) st_tmp.st_atime == st_new_last.st_atime && st_tmp.st_mtime == st_new_last.st_mtime) { *st = st_ret_last; + zsfree(dir); return 0; } st_new_last = st_tmp; |