if (!cxt)
return;
- termwidth = get_terminal_width();
- if (termwidth <= 0)
- termwidth = 80;
+ termwidth = get_terminal_width(80);
fprintf(out, _("\nAvailable columns (for -o):\n"));
(ptr)->capslock = 0; \
} while (0)
-extern int get_terminal_width(void);
+extern int get_terminal_width(int default_width);
extern int get_terminal_name(int fd, const char **path, const char **name,
const char **number);
#include "c.h"
#include "ttyutils.h"
-int get_terminal_width(void)
+int get_terminal_width(int default_width)
{
-#ifdef TIOCGSIZE
- struct ttysize t_win;
-#endif
-#ifdef TIOCGWINSZ
- struct winsize w_win;
-#endif
- const char *cp;
+ int width = 0;
-#ifdef TIOCGSIZE
- if (ioctl (STDIN_FILENO, TIOCGSIZE, &t_win) == 0)
- return t_win.ts_cols;
-#endif
-#ifdef TIOCGWINSZ
+#if defined(TIOCGWINSZ)
+ struct winsize w_win;
if (ioctl (STDIN_FILENO, TIOCGWINSZ, &w_win) == 0)
- return w_win.ws_col;
+ width = w_win.ws_col;
+#elif defined(TIOCGSIZE)
+ struct ttysize t_win;
+ if (ioctl (STDIN_FILENO, TIOCGSIZE, &t_win) == 0)
+ width = t_win.ts_cols;
#endif
- cp = getenv("COLUMNS");
- if (cp) {
- char *end = NULL;
- long c;
- errno = 0;
- c = strtol(cp, &end, 10);
+ if (width <= 0) {
+ const char *cp = getenv("COLUMNS");
+
+ if (cp) {
+ char *end = NULL;
+ long c;
+
+ errno = 0;
+ c = strtol(cp, &end, 10);
- if (errno == 0 && end && *end == '\0' && end > cp &&
- c > 0 && c <= INT_MAX)
- return c;
+ if (errno == 0 && end && *end == '\0' && end > cp &&
+ c > 0 && c <= INT_MAX)
+ width = c;
+ }
}
- return 0;
+
+ return width > 0 ? width : default_width;
}
int get_terminal_name(int fd,
fprintf(stderr, "tty name: %s\n", name);
fprintf(stderr, "tty number: %s\n", num);
}
- fprintf(stderr, "tty width: %d\n", get_terminal_width());
+ fprintf(stderr, "tty width: %d\n", get_terminal_width(0));
return EXIT_SUCCESS;
}
scols_table_set_symbols(tb, NULL); /* use default */
tb->is_term = isatty(STDOUT_FILENO) ? 1 : 0;
- tb->termwidth = tb->is_term ? get_terminal_width() : 0;
- if (tb->termwidth <= 0)
- tb->termwidth = 80;
+ tb->termwidth = tb->is_term ? get_terminal_width(80) : 0;
tb->termwidth -= tb->termreduce;
bufsz = tb->termwidth;
int len, w;
if (term_width < 0) {
- term_width = get_terminal_width();
- if (term_width <= 0)
- term_width = 80;
+ term_width = get_terminal_width(80);
}
if (term_width > 80) {
term_width -= 80;
if (dev == NULL) {
pretty_print_line("device", "fs_type", "label",
"mount point", "UUID");
- for (len=get_terminal_width()-1; len > 0; len--)
+ for (len=get_terminal_width(0)-1; len > 0; len--)
fputc('-', stdout);
fputc('\n', stdout);
return;
}
/* pretty print */
- width = get_terminal_width();
- if (width == 0)
- width = KILL_OUTPUT_WIDTH;
- else
- width -= 1;
+ width = get_terminal_width(KILL_OUTPUT_WIDTH + 1) - 1;
for (n = 0; n < ARRAY_SIZE(sys_signame); n++)
pretty_print_signal(fp, width, &lpos,
sys_signame[n].val, sys_signame[n].name);
textdomain(PACKAGE);
atexit(close_stdout);
- termwidth = get_terminal_width();
- if (termwidth <= 0)
- termwidth = 80;
+ termwidth = get_terminal_width(80);
colsep = mbs_to_wcs(" ");
while ((ch = getopt_long(argc, argv, "hVc:s:txo:", longopts, NULL)) != -1)