]> git.ozlabs.org Git - ccan/blobdiff - ccan/opt/usage.c
opt: accept newline in help strings
[ccan] / ccan / opt / usage.c
index ef33f9188dd304f41b12f19c6bbd29b3f8a69849..494b179bfde97ccb93c8969ce066f1b5860b5097 100644 (file)
@@ -1,6 +1,6 @@
 /* Licensed under GPLv3+ - see LICENSE file for details */
 #include <ccan/opt/opt.h>
-#ifdef HAVE_SYS_TERMIOS_H
+#if HAVE_SYS_TERMIOS_H
 #include <sys/ioctl.h>
 #include <sys/termios.h> /* Required on Solaris for struct winsize */
 #endif
@@ -24,7 +24,8 @@ static unsigned int get_columns(void)
 
        if (env)
                ws_col = atoi(env);
-#ifdef HAVE_SYS_TERMIOS_H
+
+#ifdef TIOCGWINSZ
        if (!ws_col)
        {
                struct winsize w;
@@ -46,7 +47,7 @@ static size_t consume_words(const char *words, size_t maxlen, size_t *prefix)
        size_t oldlen, len;
 
        /* Swallow leading whitespace. */
-       *prefix = strspn(words, " ");
+       *prefix = strspn(words, " \n");
        words += *prefix;
 
        /* Use at least one word, even if it takes us over maxlen. */
@@ -54,7 +55,9 @@ static size_t consume_words(const char *words, size_t maxlen, size_t *prefix)
        while (len <= maxlen) {
                oldlen = len;
                len += strspn(words+len, " ");
-               len += strcspn(words+len, " ");
+               if (words[len] == '\n')
+                       break;
+               len += strcspn(words+len, " \n");
                if (len == oldlen)
                        break;
        }