diff options
-rw-r--r-- | utils/statd/misc.c | 30 | ||||
-rw-r--r-- | utils/statd/monitor.c | 4 | ||||
-rw-r--r-- | utils/statd/statd.h | 2 |
3 files changed, 19 insertions, 17 deletions
diff --git a/utils/statd/misc.c b/utils/statd/misc.c index fd201b4..7256291 100644 --- a/utils/statd/misc.c +++ b/utils/statd/misc.c @@ -53,23 +53,25 @@ xstrdup (const char *string) /* - * Call with check=1 to verify that this host is not still on the rtnl - * before unlinking file. + * Unlinking a file. */ void -xunlink (char *path, char *host, short int check) +xunlink (char *path, char *host) { - char *tozap; + char *tozap; - tozap=alloca (strlen(path)+strlen(host)+2); - sprintf (tozap, "%s/%s", path, host); + tozap = malloc(strlen(path)+strlen(host)+2); + if (tozap == NULL) { + note(N_ERROR, "xunlink: malloc failed: errno %d (%s)", + errno, strerror(errno)); + return; + } + sprintf (tozap, "%s/%s", path, host); - if (!check || !nlist_gethost(rtnl, host, 0)) { - if (unlink (tozap) == -1) - note (N_ERROR, "unlink (%s): %s", tozap, strerror (errno)); - else - dprintf (N_DEBUG, "Unlinked %s", tozap); - } - else - dprintf (N_DEBUG, "Not unlinking %s--host still monitored.", tozap); + if (unlink (tozap) == -1) + note(N_ERROR, "unlink (%s): %s", tozap, strerror (errno)); + else + dprintf (N_DEBUG, "Unlinked %s", tozap); + + free(tozap); } diff --git a/utils/statd/monitor.c b/utils/statd/monitor.c index a6a1d9c..24c2531 100644 --- a/utils/statd/monitor.c +++ b/utils/statd/monitor.c @@ -352,7 +352,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp) /* PRC: do the HA callout: */ ha_callout("del-client", mon_name, my_name, -1); - xunlink(SM_DIR, clnt->dns_name, 1); + xunlink(SM_DIR, clnt->dns_name); nlist_free(&rtnl, clnt); return (&result); @@ -404,7 +404,7 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp) temp = NL_NEXT(clnt); /* PRC: do the HA callout: */ ha_callout("del-client", mon_name, my_name, -1); - xunlink(SM_DIR, clnt->dns_name, 1); + xunlink(SM_DIR, clnt->dns_name); nlist_free(&rtnl, clnt); ++count; clnt = temp; diff --git a/utils/statd/statd.h b/utils/statd/statd.h index 5a6e289..88ba208 100644 --- a/utils/statd/statd.h +++ b/utils/statd/statd.h @@ -53,7 +53,7 @@ extern int process_notify_list(void); extern int process_reply(FD_SET_TYPE *); extern char * xstrdup(const char *); extern void * xmalloc(size_t); -extern void xunlink (char *, char *, short int); +extern void xunlink (char *, char *); extern void load_state(void); /* |