mirror of
https://github.com/moparisthebest/pacman
synced 2024-10-31 15:45:03 -04:00
avoid line wrapping if not in a tty or COLUMNS=0
Scripts that parse pacman's output (like pacsearch) generally do not want wrapped lines. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
This commit is contained in:
parent
50296576d0
commit
dc339faf6a
@ -46,7 +46,7 @@
|
||||
#include "conf.h"
|
||||
#include "callback.h"
|
||||
|
||||
static int cached_columns = 0;
|
||||
static int cached_columns = -1;
|
||||
|
||||
struct table_cell_t {
|
||||
char *label;
|
||||
@ -158,13 +158,17 @@ static int flush_term_input(int fd)
|
||||
|
||||
void columns_cache_reset(void)
|
||||
{
|
||||
cached_columns = 0;
|
||||
cached_columns = -1;
|
||||
}
|
||||
|
||||
static int getcols_fd(int fd)
|
||||
{
|
||||
int width = -1;
|
||||
|
||||
if(!isatty(fd)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(TIOCGSIZE)
|
||||
struct ttysize win;
|
||||
if(ioctl(fd, TIOCGSIZE, &win) == 0) {
|
||||
@ -187,22 +191,26 @@ static int getcols_fd(int fd)
|
||||
unsigned short getcols(void)
|
||||
{
|
||||
const char *e;
|
||||
int c = 0;
|
||||
int c = -1;
|
||||
|
||||
if(cached_columns > 0) {
|
||||
if(cached_columns >= 0) {
|
||||
return cached_columns;
|
||||
}
|
||||
|
||||
e = getenv("COLUMNS");
|
||||
if(e) {
|
||||
c = strtol(e, NULL, 10);
|
||||
if(e && *e) {
|
||||
char *p = NULL;
|
||||
c = strtol(e, &p, 10);
|
||||
if(*p != '\0') {
|
||||
c= -1;
|
||||
}
|
||||
}
|
||||
|
||||
if(c <= 0) {
|
||||
if(c < 0) {
|
||||
c = getcols_fd(STDOUT_FILENO);
|
||||
}
|
||||
|
||||
if(c <= 0) {
|
||||
if(c < 0) {
|
||||
c = 80;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user