Drop register storage class
[mmh] / sbr / utils.c
index f450c58..515c9a0 100644 (file)
@@ -11,6 +11,9 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <errno.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sysexits.h>
 
 /*
 ** We allocate space for messages (msgs array)
@@ -27,11 +30,11 @@ mh_xmalloc(size_t size)
        void *memory;
 
        if (size == 0)
-               adios(NULL, "Tried to malloc 0 bytes");
+               adios(EX_SOFTWARE, NULL, "Tried to malloc 0 bytes");
 
        memory = malloc(size);
        if (!memory)
-               adios(NULL, "Malloc failed");
+               adios(EX_OSERR, NULL, "Malloc failed");
 
        return memory;
 }
@@ -45,15 +48,16 @@ mh_xrealloc(void *ptr, size_t size)
        void *memory;
 
        /* Some non-POSIX realloc()s don't cope with realloc(NULL,sz) */
-       if (!ptr)
+       if (!ptr) {
                return mh_xmalloc(size);
+       }
 
        if (size == 0)
-               adios(NULL, "Tried to realloc 0bytes");
+               adios(EX_SOFTWARE, NULL, "Tried to realloc 0 bytes");
 
        memory = realloc(ptr, size);
        if (!memory)
-               adios(NULL, "Realloc failed");
+               adios(EX_OSERR, NULL, "Realloc failed");
 
        return memory;
 }
@@ -65,21 +69,23 @@ mh_xrealloc(void *ptr, size_t size)
 char *
 pwd(void)
 {
-       register char *cp;
+       char *cp;
        static char curwd[PATH_MAX];
 
-       if (!getcwd (curwd, PATH_MAX)) {
-               admonish (NULL, "unable to determine working directory");
-               if (!mypath || !*mypath
-                       || (strcpy (curwd, mypath), chdir (curwd)) == -1) {
-                       strcpy (curwd, "/");
-                       chdir (curwd);
+       if (!getcwd(curwd, PATH_MAX)) {
+               admonish(NULL, "unable to determine working directory");
+               if (!mypath || !*mypath ||
+                               (strcpy(curwd, mypath), chdir(curwd)) == -1) {
+                       strcpy(curwd, "/");
+                       chdir(curwd);
                }
                return curwd;
        }
 
-       if ((cp = curwd + strlen (curwd) - 1) > curwd && *cp == '/')
+       if ((cp = curwd + strlen(curwd) - 1) > curwd && *cp == '/') {
+               /* strip trailing slash */
                *cp = '\0';
+       }
 
        return curwd;
 }
@@ -87,33 +93,34 @@ pwd(void)
 /*
 ** add   -- If "s1" is NULL, this routine just creates a
 **       -- copy of "s2" into newly malloc'ed memory.
+**       -- (use getcpy() instead in this case)
 **       --
 **       -- If "s1" is not NULL, then copy the concatenation
 **       -- of "s1" and "s2" (note the order) into newly
 **       -- malloc'ed memory.  Then free "s1".
 */
 char *
-add (char *s2, char *s1)
+add(char *s2, char *s1)
 {
        char *cp;
        size_t len1 = 0, len2 = 0;
 
        if (s1)
-               len1 = strlen (s1);
+               len1 = strlen(s1);
        if (s2)
-               len2 = strlen (s2);
+               len2 = strlen(s2);
 
-       cp = mh_xmalloc (len1 + len2 + 1);
+       cp = mh_xmalloc(len1 + len2 + 1);
 
        /* Copy s1 and free it */
        if (s1) {
-               memcpy (cp, s1, len1);
-               free (s1);
+               memcpy(cp, s1, len1);
+               free(s1);
        }
 
        /* Copy s2 */
        if (s2)
-               memcpy (cp + len1, s2, len2);
+               memcpy(cp + len1, s2, len2);
 
        /* Now NULL terminate the string */
        cp[len1 + len2] = '\0';
@@ -121,30 +128,6 @@ add (char *s2, char *s1)
        return cp;
 }
 
-/*
-** folder_exists
-**     Check to see if a folder exists.
-*/
-int
-folder_exists(char *folder)
-{
-       struct stat st;
-       int exists = 0;
-
-       if (stat (folder, &st) == -1) {
-               /*
-               ** The folder either doesn't exist, or we hit an error.
-               ** Either way return a failure.
-               */
-               exists = 0;
-       } else {
-               /* We can see a folder with the right name */
-               exists = 1;
-       }
-
-       return exists;
-}
-
 
 /*
 ** create_folder
@@ -157,21 +140,21 @@ create_folder(char *folder, int autocreate, void (*done_callback)(int))
        extern int errno;
        char *cp;
 
-       if (stat (folder, &st) == -1) {
+       if (stat(folder, &st) == -1) {
                if (errno != ENOENT)
-                       adios (folder, "error on folder");
+                       adios(EX_IOERR, folder, "error on folder");
                if (autocreate == 0) {
                        /* ask before creating folder */
-                       cp = concat ("Create folder \"", folder, "\"? ", NULL);
-                       if (!getanswer (cp))
-                               done_callback (1);
-                       free (cp);
+                       cp = concat("Create folder \"", folder, "\"? ", NULL);
+                       if (!getanswer(cp))
+                               done_callback(EX_CANTCREAT);
+                       free(cp);
                } else if (autocreate == -1) {
                        /* do not create, so exit */
-                       done_callback (1);
+                       done_callback(EX_CANTCREAT);
                }
-               if (!makedir (folder))
-                       adios (NULL, "unable to create folder %s", folder);
+               if (!makedir(folder))
+                       adios(EX_CANTCREAT, NULL, "unable to create folder %s", folder);
        }
 }
 
@@ -180,13 +163,13 @@ create_folder(char *folder, int autocreate, void (*done_callback)(int))
 **     Return the number of digits in a nonnegative integer.
 */
 int
-num_digits (int n)
+num_digits(int n)
 {
        int ndigits = 0;
 
        /* Sanity check */
        if (n < 0)
-               adios (NULL, "oops, num_digits called with negative value");
+               adios(EX_SOFTWARE, NULL, "oops, num_digits called with negative value");
 
        if (n == 0)
                return 1;
@@ -212,19 +195,3 @@ app_msgarg(struct msgs_array *msgs, char *cp)
                                (msgs->max+=MAXMSGS)*sizeof(*msgs->msgs));
        msgs->msgs[msgs->size++] = cp;
 }
-
-/* Open a form or components file */
-int
-open_form(char **form, char *def)
-{
-       int in;
-       if (*form) {
-               if ((in = open (etcpath (*form), O_RDONLY)) == NOTOK)
-                       adios (*form, "unable to open form file");
-       } else {
-               if ((in = open (etcpath (def), O_RDONLY)) == NOTOK)
-                       adios (def, "unable to open default components file");
-               *form = def;
-       }
-       return in;
-}