shell.c (136758) | shell.c (157188) |
---|---|
1/* $FreeBSD: head/contrib/libreadline/shell.c 136758 2004-10-21 20:02:02Z peter $ */ 2 | 1/* $FreeBSD: head/contrib/libreadline/shell.c 157188 2006-03-27 23:11:32Z ache $ */ |
3/* shell.c -- readline utility functions that are normally provided by 4 bash when readline is linked as part of the shell. */ 5 6/* Copyright (C) 1997 Free Software Foundation, Inc. 7 8 This file is part of the GNU Readline Library, a library for 9 reading lines of text with interactive input and history editing. 10 --- 34 unchanged lines hidden (view full) --- 45#else 46# include <strings.h> 47#endif /* !HAVE_STRING_H */ 48 49#if defined (HAVE_LIMITS_H) 50# include <limits.h> 51#endif 52 | 2/* shell.c -- readline utility functions that are normally provided by 3 bash when readline is linked as part of the shell. */ 4 5/* Copyright (C) 1997 Free Software Foundation, Inc. 6 7 This file is part of the GNU Readline Library, a library for 8 reading lines of text with interactive input and history editing. 9 --- 34 unchanged lines hidden (view full) --- 44#else 45# include <strings.h> 46#endif /* !HAVE_STRING_H */ 47 48#if defined (HAVE_LIMITS_H) 49# include <limits.h> 50#endif 51 |
52#if defined (HAVE_FCNTL_H) |
|
53#include <fcntl.h> | 53#include <fcntl.h> |
54#endif 55#if defined (HAVE_PWD_H) |
|
54#include <pwd.h> | 56#include <pwd.h> |
57#endif |
|
55 56#include <stdio.h> 57 58#include "rlstdc.h" 59#include "rlshell.h" 60#include "xmalloc.h" 61 | 58 59#include <stdio.h> 60 61#include "rlstdc.h" 62#include "rlshell.h" 63#include "xmalloc.h" 64 |
62#if !defined (HAVE_GETPW_DECLS) | 65#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) |
63extern struct passwd *getpwuid PARAMS((uid_t)); | 66extern struct passwd *getpwuid PARAMS((uid_t)); |
64#endif /* !HAVE_GETPW_DECLS */ | 67#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ |
65 66#ifndef NULL 67# define NULL 0 68#endif 69 70#ifndef CHAR_BIT 71# define CHAR_BIT 8 72#endif --- 46 unchanged lines hidden (view full) --- 119/* Set the environment variables LINES and COLUMNS to lines and cols, 120 respectively. */ 121void 122sh_set_lines_and_columns (lines, cols) 123 int lines, cols; 124{ 125 char *b; 126 | 68 69#ifndef NULL 70# define NULL 0 71#endif 72 73#ifndef CHAR_BIT 74# define CHAR_BIT 8 75#endif --- 46 unchanged lines hidden (view full) --- 122/* Set the environment variables LINES and COLUMNS to lines and cols, 123 respectively. */ 124void 125sh_set_lines_and_columns (lines, cols) 126 int lines, cols; 127{ 128 char *b; 129 |
127#if defined (HAVE_PUTENV) 128 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); 129 sprintf (b, "LINES=%d", lines); 130 putenv (b); 131 132 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); 133 sprintf (b, "COLUMNS=%d", cols); 134 putenv (b); 135#else /* !HAVE_PUTENV */ 136# if defined (HAVE_SETENV) | 130#if defined (HAVE_SETENV) |
137 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); 138 sprintf (b, "%d", lines); 139 setenv ("LINES", b, 1); 140 free (b); 141 142 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); 143 sprintf (b, "%d", cols); 144 setenv ("COLUMNS", b, 1); 145 free (b); | 131 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); 132 sprintf (b, "%d", lines); 133 setenv ("LINES", b, 1); 134 free (b); 135 136 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); 137 sprintf (b, "%d", cols); 138 setenv ("COLUMNS", b, 1); 139 free (b); |
146# endif /* HAVE_SETENV */ 147#endif /* !HAVE_PUTENV */ | 140#else /* !HAVE_SETENV */ 141# if defined (HAVE_PUTENV) 142 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); 143 sprintf (b, "LINES=%d", lines); 144 putenv (b); 145 146 b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); 147 sprintf (b, "COLUMNS=%d", cols); 148 putenv (b); 149# endif /* HAVE_PUTENV */ 150#endif /* !HAVE_SETENV */ |
148} 149 150char * 151sh_get_env_value (varname) 152 const char *varname; 153{ 154 return ((char *)getenv (varname)); 155} 156 157char * 158sh_get_home_dir () 159{ 160 char *home_dir; 161 struct passwd *entry; 162 163 home_dir = (char *)NULL; | 151} 152 153char * 154sh_get_env_value (varname) 155 const char *varname; 156{ 157 return ((char *)getenv (varname)); 158} 159 160char * 161sh_get_home_dir () 162{ 163 char *home_dir; 164 struct passwd *entry; 165 166 home_dir = (char *)NULL; |
167#if defined (HAVE_GETPWUID) |
|
164 entry = getpwuid (getuid ()); 165 if (entry) 166 home_dir = entry->pw_dir; | 168 entry = getpwuid (getuid ()); 169 if (entry) 170 home_dir = entry->pw_dir; |
171#endif |
|
167 return (home_dir); 168} 169 170#if !defined (O_NDELAY) 171# if defined (FNDELAY) 172# define O_NDELAY FNDELAY 173# endif 174#endif 175 176int 177sh_unset_nodelay_mode (fd) 178 int fd; 179{ | 172 return (home_dir); 173} 174 175#if !defined (O_NDELAY) 176# if defined (FNDELAY) 177# define O_NDELAY FNDELAY 178# endif 179#endif 180 181int 182sh_unset_nodelay_mode (fd) 183 int fd; 184{ |
185#if defined (HAVE_FCNTL) |
|
180 int flags, bflags; 181 182 if ((flags = fcntl (fd, F_GETFL, 0)) < 0) 183 return -1; 184 185 bflags = 0; 186 187#ifdef O_NONBLOCK --- 4 unchanged lines hidden (view full) --- 192 bflags |= O_NDELAY; 193#endif 194 195 if (flags & bflags) 196 { 197 flags &= ~bflags; 198 return (fcntl (fd, F_SETFL, flags)); 199 } | 186 int flags, bflags; 187 188 if ((flags = fcntl (fd, F_GETFL, 0)) < 0) 189 return -1; 190 191 bflags = 0; 192 193#ifdef O_NONBLOCK --- 4 unchanged lines hidden (view full) --- 198 bflags |= O_NDELAY; 199#endif 200 201 if (flags & bflags) 202 { 203 flags &= ~bflags; 204 return (fcntl (fd, F_SETFL, flags)); 205 } |
206#endif |
|
200 201 return 0; 202} | 207 208 return 0; 209} |