X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Fusage.c;h=ff0545591ed4050a5153aa5c8d6db2041a1295e4;hp=d9b2ee59cc3e4ba9a10df5a5eb358a74b5b4fb89;hb=e4fbff960f8d384ee793259ff6e13bb798114c98;hpb=3d45cf27cf586c9afe078ceb06fee115ea246a92 diff --git a/ccan/opt/usage.c b/ccan/opt/usage.c index d9b2ee59..ff054559 100644 --- a/ccan/opt/usage.c +++ b/ccan/opt/usage.c @@ -1,6 +1,10 @@ /* Licensed under GPLv3+ - see LICENSE file for details */ #include +#if HAVE_SYS_TERMIOS_H #include +#include /* Required on Solaris for struct winsize */ +#endif +#include /* Required on Solaris for ioctl */ #include #include #include @@ -15,19 +19,24 @@ const char opt_hidden[1]; static unsigned int get_columns(void) { - struct winsize w; + int ws_col = 0; const char *env = getenv("COLUMNS"); - w.ws_col = 0; if (env) - w.ws_col = atoi(env); - if (!w.ws_col) - if (ioctl(0, TIOCGWINSZ, &w) == -1) - w.ws_col = 0; - if (!w.ws_col) - w.ws_col = 80; - - return w.ws_col; + ws_col = atoi(env); + +#ifdef TIOCGWINSZ + if (!ws_col) + { + struct winsize w; + if (ioctl(0, TIOCGWINSZ, &w) != -1) + ws_col = w.ws_col; + } +#endif + if (!ws_col) + ws_col = 80; + + return ws_col; } /* Return number of chars of words to put on this line. @@ -58,7 +67,7 @@ static char *add_str_len(char *base, size_t *len, size_t *max, const char *str, size_t slen) { if (slen >= *max - *len) - base = realloc(base, *max = (*max * 2 + slen + 1)); + base = opt_alloc.realloc(base, *max = (*max * 2 + slen + 1)); memcpy(base + *len, str, slen); *len += slen; return base; @@ -72,7 +81,7 @@ static char *add_str(char *base, size_t *len, size_t *max, const char *str) static char *add_indent(char *base, size_t *len, size_t *max, size_t indent) { if (indent >= *max - *len) - base = realloc(base, *max = (*max * 2 + indent + 1)); + base = opt_alloc.realloc(base, *max = (*max * 2 + indent + 1)); memset(base + *len, ' ', indent); *len += indent; return base;