diff options
Diffstat (limited to 'readline/shell.c')
-rw-r--r-- | readline/shell.c | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/readline/shell.c b/readline/shell.c index 6947295..ac0fb36 100644 --- a/readline/shell.c +++ b/readline/shell.c @@ -59,8 +59,6 @@ #include "rlstdc.h" #include "rlshell.h" -#include "rldefs.h" - #include "xmalloc.h" #if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) @@ -122,27 +120,31 @@ sh_single_quote (string) /* Set the environment variables LINES and COLUMNS to lines and cols, respectively. */ -static char setenv_buf[INT_STRLEN_BOUND (int) + 1]; -static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == 6 */ -static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ - void sh_set_lines_and_columns (lines, cols) int lines, cols; { -#if defined (HAVE_SETENV) - sprintf (setenv_buf, "%d", lines); - setenv ("LINES", setenv_buf, 1); + char *b; - sprintf (setenv_buf, "%d", cols); - setenv ("COLUMNS", setenv_buf, 1); +#if defined (HAVE_SETENV) + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); + sprintf (b, "%d", lines); + setenv ("LINES", b, 1); + xfree (b); + + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); + sprintf (b, "%d", cols); + setenv ("COLUMNS", b, 1); + xfree (b); #else /* !HAVE_SETENV */ # if defined (HAVE_PUTENV) - sprintf (putenv_buf1, "LINES=%d", lines); - putenv (putenv_buf1); + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); + sprintf (b, "LINES=%d", lines); + putenv (b); - sprintf (putenv_buf2, "COLUMNS=%d", cols); - putenv (putenv_buf2); + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); + sprintf (b, "COLUMNS=%d", cols); + putenv (b); # endif /* HAVE_PUTENV */ #endif /* !HAVE_SETENV */ } @@ -157,27 +159,15 @@ sh_get_env_value (varname) char * sh_get_home_dir () { - static char *home_dir = (char *)NULL; + char *home_dir; struct passwd *entry; - if (home_dir) - return (home_dir); - home_dir = (char *)NULL; #if defined (HAVE_GETPWUID) -# if defined (__TANDEM) - entry = getpwnam (getlogin ()); -# else entry = getpwuid (getuid ()); -# endif if (entry) - home_dir = savestring (entry->pw_dir); -#endif - -#if defined (HAVE_GETPWENT) - endpwent (); /* some systems need this */ + home_dir = entry->pw_dir; #endif - return (home_dir); } |