diff options
Diffstat (limited to 'geo-replication/src')
-rw-r--r-- | geo-replication/src/procdiggy.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/geo-replication/src/procdiggy.c b/geo-replication/src/procdiggy.c index 6f6ee64bb3a..8068ef79a42 100644 --- a/geo-replication/src/procdiggy.c +++ b/geo-replication/src/procdiggy.c @@ -31,6 +31,10 @@ pidinfo(pid_t pid, char **name) }; char *p = NULL; int ret = 0; + pid_t lpid = -1; + + if (name) + *name = NULL; snprintf(path, sizeof path, PROC "/%d/status", pid); @@ -38,14 +42,12 @@ pidinfo(pid_t pid, char **name) if (!f) return -1; - if (name) - *name = NULL; for (;;) { size_t len; memset(buf, 0, sizeof(buf)); if (fgets(buf, sizeof(buf), f) == NULL || (len = strlen(buf)) == 0 || buf[len - 1] != '\n') { - pid = -1; + lpid = -1; goto out; } buf[len - 1] = '\0'; @@ -57,7 +59,7 @@ pidinfo(pid_t pid, char **name) ; *name = gf_strdup(p); if (!*name) { - pid = -2; + lpid = -2; goto out; } continue; @@ -71,17 +73,17 @@ pidinfo(pid_t pid, char **name) while (isspace(*++p)) ; - ret = gf_string2int(p, &pid); + ret = gf_string2int(p, &lpid); if (ret == -1) - pid = -1; + lpid = -1; out: fclose(f); - if (pid == -1 && name && *name) + if (lpid == -1 && name && *name) GF_FREE(*name); - if (pid == -2) + if (lpid == -2) fprintf(stderr, "out of memory\n"); - return pid; + return lpid; } int |