003 File Manager
Current Path:
/usr/src/contrib/tcp_wrappers
usr
/
src
/
contrib
/
tcp_wrappers
/
📁
..
📄
BLURB
(1.7 KB)
📄
Banners.Makefile
(2.17 KB)
📄
CHANGES
(18.75 KB)
📄
DISCLAIMER
(1.21 KB)
📄
Makefile
(32.68 KB)
📄
README
(47.08 KB)
📄
README.IRIX
(2.57 KB)
📄
README.NIS
(6.52 KB)
📄
clean_exit.c
(1.07 KB)
📄
diag.c
(1.44 KB)
📄
environ.c
(4.75 KB)
📄
eval.c
(3.59 KB)
📄
fakelog.c
(1012 B)
📄
fix_options.c
(3.7 KB)
📄
fromhost.c
(1.37 KB)
📄
hosts_access.3
(3.52 KB)
📄
hosts_access.5
(15.97 KB)
📄
hosts_access.c
(14.13 KB)
📄
hosts_ctl.c
(1.08 KB)
📄
hosts_options.5
(6.5 KB)
📄
inetcf.c
(8.03 KB)
📄
inetcf.h
(516 B)
📄
misc.c
(1.9 KB)
📄
miscd.c
(3.07 KB)
📄
mystdarg.h
(571 B)
📄
myvsyslog.c
(766 B)
📄
ncr.c
(2.52 KB)
📄
options.c
(13.85 KB)
📄
patchlevel.h
(88 B)
📄
percent_m.c
(797 B)
📄
percent_x.c
(2.37 KB)
📄
printf.ck
(39 B)
📄
ptx.c
(2.65 KB)
📄
refuse.c
(911 B)
📄
rfc931.c
(5.95 KB)
📄
safe_finger.c
(4.98 KB)
📄
scaffold.c
(6.38 KB)
📄
scaffold.h
(370 B)
📄
setenv.c
(931 B)
📄
shell_cmd.c
(2.13 KB)
📄
socket.c
(12.06 KB)
📄
strcasecmp.c
(3.78 KB)
📄
tcpd.8
(6.86 KB)
📄
tcpd.c
(3.49 KB)
📄
tcpd.h
(8.18 KB)
📄
tcpdchk.8
(2.51 KB)
📄
tcpdchk.c
(12.84 KB)
📄
tcpdmatch.8
(3.18 KB)
📄
tcpdmatch.c
(10.69 KB)
📄
tli-sequent.c
(4.85 KB)
📄
tli-sequent.h
(411 B)
📄
tli.c
(10.34 KB)
📄
try-from.c
(2.01 KB)
📄
update.c
(3.05 KB)
📄
vfprintf.c
(3.12 KB)
📄
workarounds.c
(7.57 KB)
Editing: environ.c
/* * Many systems have putenv() but no setenv(). Other systems have setenv() * but no putenv() (MIPS). Still other systems have neither (NeXT). This is a * re-implementation that hopefully ends all problems. * * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. */ #ifndef lint static char sccsid[] = "@(#) environ.c 1.2 94/03/23 16:09:46"; #endif /* System libraries. */ extern char **environ; extern char *strchr(); extern char *strcpy(); extern char *strncpy(); extern char *malloc(); extern char *realloc(); extern int strncmp(); extern void free(); #ifdef no_memcpy #define memcpy(d,s,l) bcopy(s,d,l) #else extern char *memcpy(); #endif /* Local stuff. */ static int addenv(); /* append entry to environment */ static int allocated = 0; /* environ is, or is not, allocated */ #define DO_CLOBBER 1 /* namelength - determine length of name in "name=whatever" */ static int namelength(name) char *name; { char *equal; equal = strchr(name, '='); return ((equal == 0) ? strlen(name) : (equal - name)); } /* findenv - given name, locate name=value */ static char **findenv(name, len) char *name; int len; { char **envp; for (envp = environ; envp && *envp; envp++) if (strncmp(name, *envp, len) == 0 && (*envp)[len] == '=') return (envp); return (0); } /* getenv - given name, locate value */ char *getenv(name) char *name; { int len = namelength(name); char **envp = findenv(name, len); return (envp ? *envp + len + 1 : 0); } /* putenv - update or append environment (name,value) pair */ int putenv(nameval) char *nameval; { char *equal = strchr(nameval, '='); char *value = (equal ? equal : ""); return (setenv(nameval, value, DO_CLOBBER)); } /* unsetenv - remove variable from environment */ void unsetenv(name) char *name; { char **envp; if ((envp = findenv(name, namelength(name))) != 0) while (envp[0] = envp[1]) envp++; } /* setenv - update or append environment (name,value) pair */ int setenv(name, value, clobber) char *name; char *value; int clobber; { char *destination; char **envp; int l_name; /* length of name part */ int l_nameval; /* length of name=value */ /* Permit name= and =value. */ l_name = namelength(name); envp = findenv(name, l_name); if (envp != 0 && clobber == 0) return (0); if (*value == '=') value++; l_nameval = l_name + strlen(value) + 1; /* * Use available memory if the old value is long enough. Never free an * old name=value entry because it may not be allocated. */ destination = (envp != 0 && strlen(*envp) >= l_nameval) ? *envp : malloc(l_nameval + 1); if (destination == 0) return (-1); strncpy(destination, name, l_name); destination[l_name] = '='; strcpy(destination + l_name + 1, value); return ((envp == 0) ? addenv(destination) : (*envp = destination, 0)); } /* cmalloc - malloc and copy block of memory */ static char *cmalloc(new_len, old, old_len) char *old; int old_len; { char *new = malloc(new_len); if (new != 0) memcpy(new, old, old_len); return (new); } /* addenv - append environment entry */ static int addenv(nameval) char *nameval; { char **envp; int n_used; /* number of environment entries */ int l_used; /* bytes used excl. terminator */ int l_need; /* bytes needed incl. terminator */ for (envp = environ; envp && *envp; envp++) /* void */ ; n_used = envp - environ; l_used = n_used * sizeof(*envp); l_need = l_used + 2 * sizeof(*envp); envp = allocated ? (char **) realloc((char *) environ, l_need) : (char **) cmalloc(l_need, (char *) environ, l_used); if (envp == 0) { return (-1); } else { allocated = 1; environ = envp; environ[n_used++] = nameval; /* add new entry */ environ[n_used] = 0; /* terminate list */ return (0); } } #ifdef TEST /* * Stand-alone program for test purposes. */ /* printenv - display environment */ static void printenv() { char **envp; for (envp = environ; envp && *envp; envp++) printf("%s\n", *envp); } int main(argc, argv) int argc; char **argv; { char *cp; int changed = 0; if (argc < 2) { printf("usage: %s name[=value]...\n", argv[0]); return (1); } while (--argc && *++argv) { if (argv[0][0] == '-') { /* unsetenv() test */ unsetenv(argv[0] + 1); changed = 1; } else if (strchr(argv[0], '=') == 0) { /* getenv() test */ cp = getenv(argv[0]); printf("%s: %s\n", argv[0], cp ? cp : "not found"); } else { /* putenv() test */ if (putenv(argv[0])) { perror("putenv"); return (1); } changed = 1; } } if (changed) printenv(); return (0); } #endif /* TEST */
Upload File
Create Folder