Use the same mh_hostname() function from test/common.h in mhsign(1)
[mmh] / sbr / fmt_scan.c
index d0b112b..4d4d633 100644 (file)
@@ -230,15 +230,16 @@ cpstripped(char **start, char *end, char *str)
                }
        }
 #else
-       while((c = (unsigned char) *s++) && *start < end)
-               if (!iscntrl(c) && !isspace(c))
+       while((c = (unsigned char) *s++) && *start < end) {
+               if (!iscntrl(c) && !isspace(c)) {
                        *(*start)++ = c;
-               else {
+               } else {
                        while ((c = (unsigned char) *s) &&
                                        (iscntrl(c) || isspace(c)))
                                s++;
                        *(*start)++ = ' ';
                }
+       }
 #endif
 }
 
@@ -298,12 +299,13 @@ fmt_trim(char *str, int width)
        char *xp;
        int ljust, i;
        char buffer[BUFSIZ];
+       char *dst;
 
        strncpy(buffer, str, sizeof(buffer));
-       buffer[sizeof(buffer)-1] = '\0';
-       str = buffer;
-       while (isspace(*str)) {
-               str++;
+       dst = buffer;
+       dst[sizeof(buffer)-1] = '\0';
+       while (isspace(*dst)) {
+               dst++;
        }
        ljust = 0;
        if ((i = width) < 0) {
@@ -311,17 +313,18 @@ fmt_trim(char *str, int width)
                ljust++;
        }
 
-       if (!ljust && i > 0 && (int)strlen(str) > i) {
-               str[i] = '\0';
+       if (!ljust && i > 0 && (int)strlen(dst) > i) {
+               dst[i] = '\0';
        }
-       xp = str;
-       xp += strlen(str) - 1;
-       while (xp > str && isspace(*xp)) {
+       xp = dst;
+       xp += strlen(dst) - 1;
+       while (xp > dst && isspace(*xp)) {
                *xp-- = '\0';
        }
-       if (ljust && i > 0 && (int)strlen(str) > i) {
-               str += strlen(str) - i;
+       if (ljust && i > 0 && (int)strlen(dst) > i) {
+               dst += strlen(dst) - i;
        }
+       strncpy(str, dst, strlen(str) + 1);
        return str;
 }