X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fstatd%2Fmisc.c;h=44af30eea07ef8ccf7d4f9990c5ed18540c66041;hp=d2365d647bb7e5fd86f82c6e87ad3166830d7256;hb=9ccfe0fa5a43dfc4453b09e328565a6c8f999fe4;hpb=311607be93bc843e5d170b3e56b7d9d2587b3e1e diff --git a/utils/statd/misc.c b/utils/statd/misc.c index d2365d6..44af30e 100644 --- a/utils/statd/misc.c +++ b/utils/statd/misc.c @@ -6,7 +6,9 @@ * NSM for Linux. */ -#include "config.h" +#ifdef HAVE_CONFIG_H +#include +#endif #include #include @@ -27,8 +29,7 @@ xmalloc (size_t size) return ((void *)NULL); if (!(ptr = malloc (size))) - /* SHIT! SHIT! SHIT! */ - die ("malloc failed"); + xlog_err ("malloc failed"); return (ptr); } @@ -44,30 +45,31 @@ xstrdup (const char *string) /* Will only fail if underlying malloc() fails (ENOMEM). */ if (!(result = strdup (string))) - die ("strdup failed"); + xlog_err ("strdup failed"); return (result); } /* - * 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) { + xlog(L_ERROR, "xunlink: malloc failed: errno %d (%m)", errno); + return; + } + sprintf (tozap, "%s/%s", path, host); - if (!check || !nlist_gethost(rtnl, host, 0)) { - if (unlink (tozap) == -1) - log (L_ERROR, "unlink (%s): %s", tozap, strerror (errno)); - else - dprintf (L_DEBUG, "Unlinked %s", tozap); - } - else - dprintf (L_DEBUG, "Not unlinking %s--host still monitored.", tozap); + if (unlink (tozap) == -1) + xlog(L_ERROR, "unlink (%s): %m", tozap); + else + xlog(D_GENERAL, "Unlinked %s", tozap); + + free(tozap); }