Changeset 5604

Show
Ignore:
Timestamp:
06/11/08 12:15:40 (4 months ago)
Author:
morris
Message:

Consult env variables LINES and COLUMNS if TIOCGWINSZ fails

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/system/wi-system.c

    r5265 r5604  
    160160 
    161161wi_string_t * wi_user_name(void) { 
    162         char                   *env
     162        wi_string_t            *user
    163163        struct passwd   *pwd; 
    164164         
    165         env = getenv("USER"); 
    166          
    167         if(env
    168                 return wi_string_with_cstring(env)
     165        user = wi_getenv(WI_STR("USER")); 
     166         
     167        if(user
     168                return user
    169169         
    170170        pwd = getpwuid(getuid()); 
     
    179179 
    180180wi_string_t * wi_user_home(void) { 
    181         char                   *env
     181        wi_string_t            *home
    182182        struct passwd   *pwd; 
    183183         
    184         env = getenv("HOME"); 
    185          
    186         if(env
    187                 return wi_string_with_cstring(env)
     184        home = wi_getenv(WI_STR("HOME")); 
     185         
     186        if(home
     187                return home
    188188         
    189189        pwd = getpwuid(getuid()); 
     
    258258#pragma mark - 
    259259 
     260wi_string_t * wi_getenv(wi_string_t *name) { 
     261        char                    *value; 
     262         
     263        value = getenv(wi_string_cstring(name)); 
     264         
     265        if(!value) 
     266                return NULL; 
     267         
     268        return wi_string_with_cstring(value); 
     269} 
     270 
     271 
     272 
     273#pragma mark - 
     274 
    260275void wi_getopt_reset(void) { 
    261276#ifdef __GLIBC__ 
  • libwired/trunk/libwired/system/wi-system.h

    r5265 r5604  
    5050WI_EXPORT void                                  wi_free(void *); 
    5151 
     52WI_EXPORT wi_string_t *                 wi_getenv(wi_string_t *); 
     53 
    5254WI_EXPORT void                                  wi_getopt_reset(void); 
    5355 
  • libwired/trunk/libwired/system/wi-terminal.c

    r5603 r5604  
    6161#include <wired/wi-runtime.h> 
    6262#include <wired/wi-string.h> 
     63#include <wired/wi-system.h> 
    6364#include <wired/wi-terminal.h> 
    6465 
     
    375376 
    376377wi_size_t wi_terminal_lookup_size(wi_terminal_t *terminal) { 
     378        wi_string_t                     *width, *height; 
    377379        struct winsize          win; 
    378  
    379         if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &win) < 0) 
    380                 return wi_make_size(0, 0); 
    381  
    382         return wi_make_size(win.ws_col, win.ws_row); 
     380         
     381        if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &win) >= 0) 
     382                return wi_make_size(win.ws_col, win.ws_row); 
     383 
     384        width   = wi_getenv(WI_STR("COLUMNS")); 
     385        height  = wi_getenv(WI_STR("LINES")); 
     386         
     387        if(width && height) 
     388                return wi_make_size(wi_string_integer(width), wi_string_integer(height)); 
     389         
     390        return wi_make_size(0, 0); 
    383391} 
    384392