$NetBSD: patch-ag,v 1.6 2014/09/23 22:40:27 jperkin Exp $ - needs term.h for termcap - get terminal size from termcap only if LINES and COLUMNS aren't set in the environment - return values from non-void functions (arguably these should be made void but it causes complications) - don't use implicit int - add missing conditionals around conditionally-used declaration - remove unused variables - use correct type signature for signal handler - use time_t for calling time() --- src/unix.c.orig 1995-11-18 16:36:58.000000000 +0000 +++ src/unix.c @@ -123,6 +123,9 @@ int scnothing() #include /* Curses screen output */ #undef WINDOW /* Oh no! */ #endif /* CURSES */ +#ifndef __sun +#include +#endif /** Completion include files **/ /** Directory accessing: Try and figure this out... if you can! **/ @@ -816,9 +819,19 @@ int scopen() exit(1); } - /* Get size from termcap */ - term.t_nrow = tgetnum("li") - 1; - term.t_ncol = tgetnum("co"); + /* + * If LINES and/or COLUMNS are set in the environment then use those + * values, otherwise get them from termcap. + */ + if ((cp = getenv("LINES")) == NULL || sscanf(cp, "%hd", + &term.t_nrow) != 1) + term.t_nrow = tgetnum("li"); + term.t_nrow -= 1; + + if ((cp = getenv("COLUMNS")) == NULL || sscanf(cp, "%hd", + &term.t_ncol) != 1) + term.t_ncol = tgetnum("co"); + if (term.t_nrow < 3 || term.t_ncol < 3) { puts("Screen size is too small!"); exit(1); @@ -956,6 +969,7 @@ int sckopen() dis_ufk(); #endif #endif + return 0; } /* close keyboard -hm */ @@ -968,6 +982,7 @@ int sckclose() dis_sfk(); #endif #endif + return 0; } /** Move cursor **/ @@ -1063,7 +1078,7 @@ int state; /* New state */ } /** Beep **/ -scbeep() +int scbeep() { #if TERMCAP || TERMIOS #if !NOISY @@ -1085,7 +1100,9 @@ scbeep() } #if COLOR +#if USG || AUX static char cmap[8] = { 0, 4, 2, 6, 1, 5, 3, 7 }; +#endif /** Set foreground color **/ int scfcol(color) @@ -1230,11 +1247,9 @@ int bktoshell(f, n) /** Get time of day **/ char * timeset() { - long int buf; /* Should be time_t */ + time_t buf; char * sp, * cp; - char * ctime(); - /* Get system time */ time(&buf); @@ -1553,7 +1568,6 @@ char *fspec; /* Filename specificatio /** Get next filename from pattern **/ char *getnfile() { - int index; struct DIRENTRY * dp; struct stat fstat; @@ -1706,15 +1720,15 @@ char *name; /* name of directory to dele /* * Window size changes handled via signals. */ -void winch_changed() +void winch_changed(int sig) { + (void)sig; signal(SIGWINCH,winch_changed); winch_flag = 1; } void winch_new_size() { - EWINDOW *wp; struct winsize win; winch_flag=0;