Skip to content
Snippets Groups Projects
info_getcols_fd.c 894 B
Newer Older
  • Learn to ignore specific revisions
  • Eric Vidal's avatar
    Eric Vidal committed
    /*
     * info_getcols_fd.c
     *
     * Copyright (c) 2018-2021 Eric Vidal <eric@obarun.org>
     *
     * All rights reserved.
     *
     * This file is part of Obarun. It is subject to the license terms in
     * the LICENSE file found in the top-level directory of this
     * distribution.
     * This file may not be copied, modified, propagated, or distributed
     * except according to the terms contained in the LICENSE file./
     * */
    
    #include <unistd.h>
    #include <sys/ioctl.h>
    #include <wchar.h>
    
    #include <66/info.h>
    
    int info_getcols_fd(int fd)
    {
        int width = -1;
    
        if(!isatty(fd)) return 0;
    
    #if defined(TIOCGSIZE)
        struct ttysize win;
        if(ioctl(fd, TIOCGSIZE, &win) == 0)
            width = win.ts_cols;
    #elif defined(TIOCGWINSZ)
        struct winsize win;
        if(ioctl(fd, TIOCGWINSZ, &win) == 0)
            width = win.ws_col;
    #endif
    
        // return abitrary value
        if(width <= 0) return 100 ;
    
        return width;
    }