Index: linux/libc/ChangeLog diff -u linux/libc/ChangeLog:1.167 linux/libc/ChangeLog:1.184 --- linux/libc/ChangeLog:1.167 Fri Feb 14 19:42:59 1997 +++ linux/libc/ChangeLog Fri May 30 19:23:08 1997 @@ -1,3 +1,282 @@ +Fri May 30 21:06:03 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.33 is released. + + * <_G_config.h>: change version to 5.4.33. + + * elf/libc/jump.params: set version to 5.4.33. + + * release.libc: update. + +Fri May 30 19:18:32 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/linux/glibcstat.h: new, from glibc 2. + + * sysdeps/linux/_fxstat.c: + * sysdeps/linux/_lxstat.c: + * sysdeps/linux/_xstat.c: add glibc compatibility. + +Fri May 30 07:56:13 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.32 is released. + + * <_G_config.h>: change version to 5.4.32. + + * elf/libc/jump.params: set version to 5.4.32. + + * release.libc: update. + +Wed May 28 07:31:49 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * time/strptime.c: use 9999 as the limit for year, instead + of INT_MAX. Yes, we got a year 9999 problem. + Always use 1900 for offset. + +Sat May 24 17:13:25 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.31 is released. + + * <_G_config.h>: change version to 5.4.31. + + * elf/libc/jump.params: set version to 5.4.31. + + * release.libc: update. + +Sat May 24 16:08:09 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/linux/i386/crt/gcrt0.S: move monstartup () before + _mcleanup (). + +Tue May 20 14:42:44 1997 Martin Mares + + * misc/syslog.c: fix a typo which causes strange console + message. + +Mon May 19 07:11:52 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/linux/_errlist.c (_sys_errlist): change errno == 0 + from "Unknown error" to "Success". + +Sun May 18 20:11:52 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.30 is released. + + * <_G_config.h>: change version to 5.4.30. + + * elf/libc/jump.params: set version to 5.4.30. + + * release.libc: update. + + * yp/yp_xdr.c (xdr_ypmaplist_str): commented out. + (xdr_ypmaplist): fix a typo. + +Fri May 16 19:45:15 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.29 is released. + + * <_G_config.h>: change version to 5.4.29. + + * elf/libc/jump.params: set version to 5.4.29. + + * release.libc: update. + +Fri May 16 02:01:35 1997 Martin Mares + + * misc/syslog.c: fix several possible buffer + overruns. + +Thu May 15 01:13:58 1997 Rafael Moreno + + * nls/linux/Spanish/LEEME: + * nls/linux/Spanish/auth.m: + * nls/linux/Spanish/clnt-misc.m: + * nls/linux/Spanish/errlist-u.m: + * nls/linux/Spanish/errlist.m: + * nls/linux/Spanish/gencat.m: + * nls/linux/Spanish/h-errlist.m: + * nls/linux/Spanish/net-misc.m: + * nls/linux/Spanish/rpc-errlist.m: + * nls/linux/Spanish/rpc-misc.m: + * nls/linux/Spanish/siglist-u.m: + * nls/linux/Spanish/siglist.m: new messages for Spanish. + +Sat May 10 14:39:26 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.28 is released. + + * <_G_config.h>: change version to 5.4.28. + + * elf/libc/jump.params: set version to 5.4.28. + + * release.libc: update. + +Fri May 8 08:13:09 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * (poll): added the system call number. + + * : new file from glibc 2. + + * sysdeps/linux/Makefile (SRC1S): add poll.c. + (SRC2S): add __syscall_poll.S. + + * sysdeps/linux/__flock.c: save errno. + + * sysdeps/linux/poll.c: new from glibc 2. + + * sysdeps/linux/__syscall_poll.S: new. + +Mon May 5 08:23:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * nys/nsw/src/nis/nis_group.c (parse_result): call + xstrdup () for add_member (). Reported by Jason Mcmullan + . + +Sun May 4 08:50:33 1997 Thorsten Kukuk + + * nys/nsw/src/nis/nis_hosts.c : + * nys/nsw/src/nis/nis_publickey.c: fixes some wrong return + codes in error cases and checks for NULL pointer + dereferencing. + +Sat May 3 16:00:00 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.27 is released. + + * <_G_config.h>: change version to 5.4.27. + + * elf/libc/jump.params: set version to 5.4.27. + + * release.libc: update. + +Tue Apr 29 05:29:08 1997 Miquel van Smoorenburg + + * yp/yplib.c (): fix argument for xdr_domainname (). + +Thu Apr 10 17:15:09 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * elf/libm/jump.params: set version to 5.0.9. + +Thu Apr 10 13:05:59 1997 Kristopher Giesing + + * sysdeps/linux/i386/math/pow.c: bug fix. + +Tue Apr 8 08:02:39 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.26 is released. + + * <_G_config.h>: change version to 5.4.26. + + * elf/libc/jump.params: set version to 5.4.26. + + * release.libc: update. + +Tue Apr 8 07:32:49 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * libio/genops.c (_IO_flush_all_linebuffered): don't flush on + a read-only stream. + +Tue Apr 8 06:47:24 1997 jpmg@eng.cam.ac.uk + + * sysdeps/linux/__fpathconf.c: return -1 for + _POSIX_CHOWN_RESTRICTED on NFS. + +Tue Apr 1 17:53:39 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * : new for appletalk. + + * (IP_MSS): new. + +Thu Mar 27 07:37:13 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * libio/fileops.c (_IO_file_overflow): set error when try to + write on a read-only stream. + +Sun Mar 23 14:24:34 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.25 is released. + + * <_G_config.h>: change version to 5.4.25. + + * elf/libc/jump.params: set version to 5.4.25. + + * release.libc: update. + +Sun Mar 23 14:21:04 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/linux/readv.c: + * sysdeps/linux/writev.c: check count <= UIO_FASTIOV + for error and use emulation if necessary. + + * posix/putenv.c: backed out the change on Fri Feb 21 13:28:23 + 1997 H.J. Lu (hjl@gnu.ai.mit.edu) since it breaks many + TeX programs unless they are recompiled with -DSMART_PUTENV. + + * (_PATH_DEFPATH): remove ".". + +Thu Mar 20 13:01:39 1997 Thorsten Kukuk + + * nys/yp/src/yp.h: removed. + + * nys/yp/src/yp_clnt.c: + * nys/yp/src/yp_conf.c: + * nys/yp/src/yp_if.c: + * nys/yp/src/yp_xdr.c: modified for new xdr_domainname (). + +Mon Mar 17 07:56:12 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * bsd/setenv.c (setenv): don't copy name when we reuse the + buffer for replacement. + +Mon Feb 24 23:05:00 1997 Wolfram Gloger + + * dl-malloc/malloc.c (malloc_get_state): New function. + Saves global malloc state to an opaque data structure which + is dynamically allocated in the heap. + + * dl-malloc/malloc.c (malloc_set_state): New function. + Restore previously obtained state. + + * : Add declaration of malloc_get_state() + and malloc_set_state(). + +Fri Mar 14 20:01:08 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.24 is released. + + * <_G_config.h>: change version to 5.4.24. + + * elf/libc/jump.params: set version to 5.4.24. + + * release.libc: update. + +Wed Mar 12 22:13:44 1997 alan@spri.levels.unisa.edu.au (Alan Modra) + + * time/strptime.c: Fix abbreviated/full names. Reported by + Steven Gribble . + +Wed Mar 12 20:40:45 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * inet/gethstnmad.c (_gethtbyname): return the complete aliase + list no matter what. + +Sun Mar 9 07:32:37 1997 "Marty Leisner" + + * sysdeps/linux/__lseek.S: define __CHECK_RETURN_ADDR. + +Thu Feb 27 08:07:07 1997 David van Leeuwen + + * sysdeps/linux/_errlist.c (ENOMEDIUM, EMEDIUMTYPE): new. + +Mon Feb 24 07:25:58 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/m68k/hton.c: updated from sysdeps/i386/hton.c. + +Fri Feb 21 13:28:23 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * : undefine assert_perror first. + + * posix/putenv.c: update from glibc 2.0.2. + Fri Feb 14 19:41:54 1997 H.J. Lu (hjl@gnu.ai.mit.edu) * version 5.4.23 is released. Index: linux/libc/release.libc diff -u linux/libc/release.libc:1.38 linux/libc/release.libc:1.51 --- linux/libc/release.libc:1.38 Fri Feb 14 19:42:59 1997 +++ linux/libc/release.libc Fri May 30 19:23:08 1997 @@ -1,13 +1,36 @@ Hi, Gals and Guys, -I have modified the NIS support in glibc. Please get the latst -ypclients at where you get this C library. Please test NIS programs -as much as you can. Thanks. - -There is a NYS bug. If a service is not available, the some NIS/NIS+ -routines will give back a NULL pointer, but the other functions expect a -struct with the error code. The easiest way to fix it is to remove the -services (nis, yp, ...) which are not available on your machine. +I would like to release libc 5.4.33 to public in a day or 2. But +I was told libc 5.4.26 doesn't work with shadow-970211. I couldn't +reproduce the problem. I'd like to hear the results of libc 5.4.33 +and shadow-970211 before I release 5.4.33 to public. Thanks. + +I added the glibc stat support so that I can run netscape with +XFree86 compiled for glibc 2. Please check it out. + +I modified sysdeps/linux/i386/crt/gcrt0.S to call sbrk () before any +calls to malloc () which may be used by atexit () since not all malloc +implemenation allow the outside sbrk () calls. Please check if profile +still works fine. + +The NYS bug is suppposed to be fixed. If a service is not available, +the some NIS/NIS+ routines will give back a NULL pointer, but the +other functions expect a struct with the error code. Please check +it out. + +glibc's putenv () was used in libc 5.4.23 which breaks many TeX +binaries. You have to re-compile them with -DSMART_PUTENV. Otherwise +they won't work. Please see kpathsea/xputenv.c in those packages for +details. I backed this change out in libc 5.4.33. + +I have modified the NIS support in libc, which is not compatible +with the previous version, but is compatible with SunOS, Solaris, ... +except for those brain dead xxxBSD. Please make sure you have the +same ypclients as the one at where you get this C library. Otherwise +your NIS won't work with the modified NIS code in this libc. If you +use a different yp client other than those in my YP clients package, +you may need a patch. Please send me a note and I will fix it for +you as soon as possible. Binaries of locale and localedef are included in the binary release. @@ -19,20 +42,20 @@ so that the old XFree86 binaries will run fine with the new XFree86 shared librraries compiled with libc 6.x/glibc 2.x. -If you use linux 2.1.x, you need libc 5.4.23 or above to compile libc +If you use linux 2.1.x, you need libc 5.4.33 or above to compile libc yourself. The pre-compiled libc should run fine under linux 2.1.x. Also this library is compiled with -D_REENTRANT so that errno is MT safe. The shared libraries are now compiled with -g1 which can provide minimum information when core dump happens. You can strip -libc.so.5.4.23 if you want. +libc.so.5.4.33 if you want. -Due to the new, improved locale, the Linux C library 5.4.23 is binary +Due to the new, improved locale, the Linux C library 5.4.33 is binary compatible with libc 5.3.12 but not vice versa. The binaries -compiled/linked with libc.so.5.4.23 may not run with libc.so.5.3.12. +compiled/linked with libc.so.5.4.33 may not run with libc.so.5.3.12. You may need to regenerate locale files for the new locale in libc -5.4.23 if you use locales other tha C/POSIX which are the defaults. +5.4.33 if you use locales other tha C/POSIX which are the defaults. The locale sources are at @@ -41,7 +64,7 @@ There are many security bug fixes. Please consult ChangeLog for details. Please let me know if there are more security bugs remains. -This is the beta release of the Linux C library 5.4.23. Please read +This is the beta release of the Linux C library 5.4.33. Please read the ChangeLog for details regarding changes/bug fixes. DISTRIBUTION SITES: @@ -62,11 +85,11 @@ DISTRIBUTION FILES: -1. libc-5.4.23.bin.tar.gz +1. libc-5.4.33.bin.tar.gz REQUIRED. This package contains the header files for libc, shared and static ELF libraries libc and libm, and the static ELF library libbsd.a. -The header files in libc-5.4.23.bin.tar.gz are not complete. You need to +The header files in libc-5.4.33.bin.tar.gz are not complete. You need to install the kernel source tree for the system-dependent header files. The header files are in lib-x.y.z.bin.tar.gz and libc-x.y.z.tar.gz. You @@ -77,11 +100,11 @@ to extract the header files without the binaries files. A separate tar file for the header files may cause unnecessary confusion. -2. libc-5.4.23.tar.gz +2. libc-5.4.33.tar.gz Source tree for libc and header files. -3. libc-5.4.22-5.4.23.diff.gz +3. libc-5.4.32-5.4.33.diff.gz Context diffs against the source tree from the previous libc release. Please make sure the empty libc/regex/rx.h is deleted. @@ -152,7 +175,7 @@ rm -f /usr/include/wcstr.h /usr/include/mbstr.h rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread -gzip -dc libc-5.4.23.bin.tar.gz | tar xvf - +gzip -dc libc-5.4.33.bin.tar.gz | tar xvf - SOURCE INSTALLATION: @@ -179,8 +202,7 @@ new libc.so* to /lib, do "ldconfig -v", reboot, then do "make install" A dirent bug, which erroneously defined d->reclen to d->namlen if USE_GNU -was defined, has been fixed. Unfortunately, some GNU packages depend on -this bug. GNU make 3.xx is one of them. A patch is included here. +was defined, has been fixed. A back door has been added for the file descriptor in DIR. You need to define DIRENT_ILLEGAL_ACCESS to access the dd_fd field. You should use @@ -219,50 +241,4 @@ H.J. hjl@gnu.ai.mit.edu -02/14/97 ----- -RCS file: /home/cvs/gnu/make/dir.c,v -retrieving revision 1.1.1.1 -diff -c -r1.1.1.1 dir.c -*** 1.1.1.1 1995/06/25 03:27:16 ---- dir.c 1995/06/25 03:55:22 -*************** -*** 20,26 **** - - #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) - #include -! #ifndef __GNU_LIBRARY__ - #define D_NAMLEN(d) strlen((d)->d_name) - #else /* GNU C library. */ - #define D_NAMLEN(d) ((d)->d_namlen) ---- 20,26 ---- - - #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) - #include -! #ifndef __BAD_GNU_LIBRARY__ - #define D_NAMLEN(d) strlen((d)->d_name) - #else /* GNU C library. */ - #define D_NAMLEN(d) ((d)->d_namlen) -=================================================================== -RCS file: /home/cvs/gnu/make/glob/glob.c,v -retrieving revision 1.1.1.1 -diff -c -r1.1.1.1 glob.c -*** 1.1.1.1 1995/06/25 03:27:18 ---- glob/glob.c 1995/06/25 03:56:01 -*************** -*** 64,70 **** - - #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) - #include -! #ifndef __GNU_LIBRARY__ - #define D_NAMLEN(d) strlen((d)->d_name) - #else /* GNU C library. */ - #define D_NAMLEN(d) ((d)->d_namlen) ---- 64,70 ---- - - #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) - #include -! #ifndef __BAD_GNU_LIBRARY__ - #define D_NAMLEN(d) strlen((d)->d_name) - #else /* GNU C library. */ - #define D_NAMLEN(d) ((d)->d_namlen) +05/30/97 Index: linux/libc/bsd/setenv.c diff -u linux/libc/bsd/setenv.c:1.3 linux/libc/bsd/setenv.c:1.4 --- linux/libc/bsd/setenv.c:1.3 Tue Mar 12 21:08:10 1996 +++ linux/libc/bsd/setenv.c Sun Mar 23 14:29:17 1997 @@ -115,9 +115,9 @@ goto do_return; } *ep = new; + memcpy (*ep, name, namelen); + (*ep)[namelen] = '='; } - memcpy (*ep, name, namelen); - (*ep)[namelen] = '='; memcpy (&(*ep)[namelen + 1], value, vallen + 1); } Index: linux/libc/dl-malloc/malloc.c diff -u linux/libc/dl-malloc/malloc.c:1.10 linux/libc/dl-malloc/malloc.c:1.11 --- linux/libc/dl-malloc/malloc.c:1.10 Fri Feb 14 19:38:14 1997 +++ linux/libc/dl-malloc/malloc.c Sun Mar 23 14:29:18 1997 @@ -851,6 +851,8 @@ #define mALLOC_TRIm __malloc_trim #define mALLOC_USABLE_SIZe __malloc_usable_size #define mALLOC_STATs __malloc_stats +#define mALLOC_GET_STATe __malloc_get_state +#define mALLOC_SET_STATe __malloc_set_state #pragma weak calloc = __libc_calloc #pragma weak free = __libc_free @@ -865,6 +867,8 @@ #pragma weak malloc_trim = __malloc_trim #pragma weak malloc_usable_size = __malloc_usable_size #pragma weak malloc_stats = __malloc_stats +#pragma weak malloc_get_state = __malloc_get_state +#pragma weak malloc_set_state = __malloc_set_state #else @@ -880,6 +884,8 @@ #define mALLOC_TRIm malloc_trim #define mALLOC_USABLE_SIZe malloc_usable_size #define mALLOC_STATs malloc_stats +#define mALLOC_GET_STATe malloc_get_state +#define mALLOC_SET_STATe malloc_set_state #endif @@ -900,6 +906,8 @@ void mALLOC_STATs(); int mALLOPt(int, int); struct mallinfo mALLINFo(void); +Void_t* mALLOC_GET_STATe(void); +int mALLOC_SET_STATe(Void_t*); #if defined(MALLOC_HOOKS) /* Hooks for debugging versions. */ @@ -927,6 +935,8 @@ void mALLOC_STATs(); int mALLOPt(); struct mallinfo mALLINFo(); +Void_t* mALLOC_GET_STATe(); +int mALLOC_SET_STATe(); #if defined(MALLOC_HOOKS) /* Hooks for debugging versions. */ @@ -3187,6 +3197,127 @@ +/* Get/set state: malloc_get_state() records the current state of all + malloc variables (_except_ for the actual heap contents and `hook' + function pointers) in a system dependent, opaque data structure. + This data structure is dynamically allocated and can be free()d + after use. malloc_set_state() restores the state of all malloc + variables to the previously obtained state. This is especially + useful when using this malloc as part of a shared library, and when + the heap contents are saved/restored via some other method. The + primary example for this is GNU Emacs with its `dumping' procedure. + `Hook' function pointers are never saved or restored by these + functions. */ + +#define MALLOC_STATE_MAGIC 0x444c4541l +#define MALLOC_STATE_VERSION (0*0x100l + 0l) /* major*0x100 + minor */ + +struct malloc_state { + long magic; + long version; + mbinptr av[NAV * 2 + 2]; + char* sbrk_base; + int sbrked_mem_bytes; + unsigned long trim_threshold; + unsigned long top_pad; + unsigned int n_mmaps_max; + unsigned long mmap_threshold; + int check_action; + unsigned long max_sbrked_mem; + unsigned long max_total_mem; + unsigned int n_mmaps; + unsigned int max_n_mmaps; + unsigned long mmapped_mem; + unsigned long max_mmapped_mem; +}; + +Void_t* +mALLOC_GET_STATe() +{ + struct malloc_state* ms; + int i; + mbinptr b; + + ms = (struct malloc_state*)mALLOc(sizeof(*ms)); + if(!ms) return 0; + ms->magic = MALLOC_STATE_MAGIC; + ms->version = MALLOC_STATE_VERSION; + ms->av[0] = av_[0]; + ms->av[1] = av_[1]; + for(i=0; iav[2*i+2] = ms->av[2*i+3] = 0; /* empty bin (or initial top) */ + else { + ms->av[2*i+2] = first(b); + ms->av[2*i+3] = last(b); + } + } + ms->sbrk_base = sbrk_base; + ms->sbrked_mem_bytes = sbrked_mem; + ms->trim_threshold = trim_threshold; + ms->top_pad = top_pad; + ms->n_mmaps_max = n_mmaps_max; + ms->mmap_threshold = mmap_threshold; + ms->check_action = check_action; + ms->max_sbrked_mem = max_sbrked_mem; + ms->max_total_mem = max_total_mem; + ms->n_mmaps = n_mmaps; + ms->max_n_mmaps = max_n_mmaps; + ms->mmapped_mem = mmapped_mem; + ms->max_mmapped_mem = max_mmapped_mem; + return (Void_t*)ms; +} + +int +#if __STD_C +mALLOC_SET_STATe(Void_t* msptr) +#else +mALLOC_SET_STATe(msptr) Void_t* msptr; +#endif +{ + struct malloc_state* ms = (struct malloc_state*)msptr; + int i; + mbinptr b; + + if(ms->magic != MALLOC_STATE_MAGIC) return -1; + /* Must fail if the major version is too high. */ + if((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) return -2; + av_[0] = ms->av[0]; + av_[1] = ms->av[1]; + for(i=0; iav[2*i+2] == 0) + first(b) = last(b) = b; + else { + first(b) = ms->av[2*i+2]; + last(b) = ms->av[2*i+3]; + if(i > 0) { + /* Make sure the links to the av_-bins in the heap are correct. */ + first(b)->bk = b; + last(b)->fd = b; + } + } + } + sbrk_base = ms->sbrk_base; + sbrked_mem = ms->sbrked_mem_bytes; + trim_threshold = ms->trim_threshold; + top_pad = ms->top_pad; + n_mmaps_max = ms->n_mmaps_max; + mmap_threshold = ms->mmap_threshold; + check_action = ms->check_action; + max_sbrked_mem = ms->max_sbrked_mem; + max_total_mem = ms->max_total_mem; + n_mmaps = ms->n_mmaps; + max_n_mmaps = ms->max_n_mmaps; + mmapped_mem = ms->mmapped_mem; + max_mmapped_mem = ms->max_mmapped_mem; + /* add version-dependent code here */ + return 0; +} + + + /* Malloc hooks: When compiling with MALLOC_HOOKS defined, all calls to malloc(), realloc(), free() and memalign() are routed through the global function pointers __malloc_hook, __realloc_hook, @@ -3210,6 +3341,11 @@ /* Already initialized? */ int __libc_malloc_initialized = 0; +#if !__STDC +char* getenv(); +int atoi(); +#endif + /* Initialization routine. */ static void malloc_init () @@ -3218,6 +3354,14 @@ if(__libc_malloc_initialized) return; __libc_malloc_initialized = 1; + if((s = getenv("MALLOC_TRIM_THRESHOLD_"))) + mALLOPt(M_TRIM_THRESHOLD, atoi(s)); + if((s = getenv("MALLOC_TOP_PAD_"))) + mALLOPt(M_TOP_PAD, atoi(s)); + if((s = getenv("MALLOC_MMAP_THRESHOLD_"))) + mALLOPt(M_MMAP_THRESHOLD, atoi(s)); + if((s = getenv("MALLOC_MMAP_MAX_"))) + mALLOPt(M_MMAP_MAX, atoi(s)); s = getenv("MALLOC_CHECK_"); if(s) { if(s[0]) mALLOPt(M_CHECK_ACTION, (int)(s[0] - '0')); Index: linux/libc/elf/libc/jump.params diff -u linux/libc/elf/libc/jump.params:1.76 linux/libc/elf/libc/jump.params:1.86 --- linux/libc/elf/libc/jump.params:1.76 Fri Feb 14 19:38:15 1997 +++ linux/libc/elf/libc/jump.params Fri May 30 19:18:47 1997 @@ -1 +1 @@ -Version=5.4.23 +Version=5.4.33 Index: linux/libc/elf/libm/jump.params diff -u linux/libc/elf/libm/jump.params:1.10 linux/libc/elf/libm/jump.params:1.11 --- linux/libc/elf/libm/jump.params:1.10 Mon Feb 3 19:54:18 1997 +++ linux/libc/elf/libm/jump.params Sat May 3 16:01:17 1997 @@ -1 +1 @@ -Version=5.0.8 +Version=5.0.9 Index: linux/libc/inet/gethstnmad.c diff -u linux/libc/inet/gethstnmad.c:1.15 linux/libc/inet/gethstnmad.c:1.16 --- linux/libc/inet/gethstnmad.c:1.15 Fri Feb 14 19:38:15 1997 +++ linux/libc/inet/gethstnmad.c Fri Mar 14 20:03:03 1997 @@ -1333,6 +1333,9 @@ * alias field contains that name, and the name field contains the primary * name of the host. Unlike dns, however, this behavior will still take place * even if the alias applies only to one of the interfaces. + * + * I changed to return aliase list no matter what. H.J. + * * - determining a "local" address to put first is dependant on the netmask * being such that the least significant network bit is more significant * than any host bit. Only strange netmasks will violate this. @@ -1359,6 +1362,8 @@ static struct hostent ht; static char *aliases[MAXALIASES]; static char namebuf[MAXHOSTNAMELEN]; + static char aliasebuf[BUFSIZ+1]; + int gap = aliasebuf - hostbuf; hap = ht_addr_ptrs; lhap = loc_addr_ptrs; @@ -1384,7 +1389,9 @@ for (cp = p->h_aliases; *cp != 0; cp++) if (strcasecmp(*cp, name) == 0){ found++; +#if 0 aliases[0]=name; +#endif /* * This should not overflow, but it is * better to be safe than sorry. @@ -1393,6 +1400,22 @@ sizeof(namebuf)); namebuf[sizeof(namebuf)-1] = 0; } + + cp = p->h_aliases; + if (found && aliases[0] == NULL && *cp) + { + int i; + + memcpy (aliasebuf, hostbuf, sizeof(aliasebuf)); + for (i = 0; *cp != 0 && + i < sizeof (aliases) / sizeof (aliases [0]) - 1; + i++, cp++) + { + aliases [i] = *cp + gap; + } + aliases [i] = NULL; + } + if (strcasecmp(p->h_name, localname) == 0) localfound++; else Index: linux/libc/libio/fileops.c diff -u linux/libc/libio/fileops.c:1.13 linux/libc/libio/fileops.c:1.14 --- linux/libc/libio/fileops.c:1.13 Wed May 22 08:49:24 1996 +++ linux/libc/libio/fileops.c Mon Apr 7 09:47:29 1997 @@ -326,7 +326,10 @@ register _IO_FILE* f AND int ch) { if (f->_flags & _IO_NO_WRITES) /* SET ERROR */ + { + f->_flags |= _IO_ERR_SEEN; return EOF; + } /* If currently reading or no buffer allocated. */ if ((f->_flags & _IO_CURRENTLY_PUTTING) == 0) { Index: linux/libc/libio/genops.c diff -u linux/libc/libio/genops.c:1.10 linux/libc/libio/genops.c:1.11 --- linux/libc/libio/genops.c:1.10 Fri Oct 4 15:52:56 1996 +++ linux/libc/libio/genops.c Tue Apr 8 09:11:14 1997 @@ -668,7 +668,7 @@ _IO_FILE *fp; for (fp = _IO_list_all; fp != NULL; fp = fp->_chain) - if (fp->_flags & _IO_LINE_BUF) + if ((fp->_flags & _IO_NO_WRITES) == 0 && fp->_flags & _IO_LINE_BUF) _IO_OVERFLOW (fp, EOF); } Index: linux/libc/misc/syslog.c diff -u linux/libc/misc/syslog.c:1.7 linux/libc/misc/syslog.c:1.9 --- linux/libc/misc/syslog.c:1.7 Tue Dec 3 07:34:19 1996 +++ linux/libc/misc/syslog.c Sat May 24 16:10:40 1997 @@ -55,6 +55,11 @@ * investigation of such Bad Things with grep, and, * - to correct the handling of case where "write" * returns after writing only part of the message. + * Rewritten by Martin Mares on May 14, 1997 + * - better buffer overrun checks. + * - special handling of "%m" removed as we use GNU sprintf which handles + * it automatically. + * - Major code cleanup. */ #include @@ -120,17 +125,12 @@ static int LogFacility = LOG_USER; /* default facility code */ static int LogMask = 0xff; /* mask of priorities to be logged */ -/* #define TRUNCATED "[truncated by syslog.c] " -*/ -#define TRUNCATED "[truncated] " /* AIV */ - static void closelog_intern( int ); void syslog( int, const char *, ...); void vsyslog( int, const char *, va_list ); void openlog( const char *, int, int ); void closelog( void ); int setlogmask( int ); -static void prepend(char *buf, int bufsize, char *tag); static void closelog_intern(int to_default) @@ -172,13 +172,12 @@ void vsyslog( int pri, const char *fmt, va_list ap ) { - register int cnt; register char *p; - char *last_chr; + char *last_chr, *head_end, *end, *stdp; time_t now; int fd, saved_errno; - int sz, rc; - char tbuf[2048], fmt_cpy[1024], *stdp; + int rc; + char tbuf[1024]; /* syslogd is unable to handle longer messages */ struct sigaction action, oldaction; int sigpipe; @@ -193,9 +192,7 @@ /* See if we should just throw out this message. */ if (!(LogMask & LOG_MASK(LOG_PRI(pri))) || (pri &~ (LOG_PRIMASK|LOG_FACMASK))) - { goto getout; - } if (LogFile < 0 || !connected) openlog(LogTag, LogStat | LOG_NDELAY, 0); @@ -203,97 +200,55 @@ if ((pri & LOG_FACMASK) == 0) pri |= LogFacility; - /* Build the message. */ + /* Build the message. We know the starting part of the message can take + * no longer than 64 characters plus length of the LogTag. So it's + * safe to test only LogTag and use normal sprintf everywhere else. + */ (void)time(&now); - (void)snprintf(tbuf, sizeof(tbuf), "<%d>%.15s ", pri, ctime(&now) + 4); - stdp = ""; - for (p = tbuf; *p; ++p); - if (LogStat & LOG_PERROR) - stdp = p; + stdp = p = tbuf + sprintf(tbuf, "<%d>%.15s ", pri, ctime(&now) + 4); if (LogTag) { - (void)strcpy(p, LogTag); - for (; *p; ++p); - } - if (LogStat & LOG_PID) { - (void)snprintf(p, sizeof(tbuf)-(p-tbuf), "[%d]", getpid()); - for (; *p; ++p); + if (strlen(LogTag) < sizeof(tbuf) - 64) + p += sprintf(p, "%s", LogTag); + else + p += sprintf(p, ""); } + if (LogStat & LOG_PID) + p += sprintf(p, "[%d]", getpid()); if (LogTag) { *p++ = ':'; *p++ = ' '; - *p = '\0'; } + head_end = p; - /* Substitute error message for %m. */ - { - register char ch, *t1; - - /* We have to make sure we don't overrun fmt_cpy. */ - for (t1 = fmt_cpy; ((ch=*fmt)!='\0') && (t1<(fmt_cpy+(sizeof(fmt_cpy)-1))); ++fmt) { - if (ch == '%' && fmt[1] == '%') { - if (t1<(fmt_cpy+(sizeof(fmt_cpy)-2))) { - *t1++='%'; *t1++='%'; fmt++; - continue; - } else { - /* flag message as truncated to alert the good guys */ - prepend(tbuf, sizeof(tbuf), TRUNCATED); - for (; *p; ++p); - break; - } - } - if (ch == '%' && fmt[1] == 'm') { - ++fmt; - sz=sizeof(fmt_cpy)-(t1-fmt_cpy); - rc=snprintf(t1, sz, "%s", strerror(saved_errno)); - if ((-1==rc) || (rc>sz)) { - /* flag message as truncated to alert the good guys */ - prepend(tbuf, sizeof(tbuf), TRUNCATED); - for (; *p; ++p); - for (; *t1; t1++); - break; - } - for (; *t1; t1++); - } - else - *t1++ = ch; - } - *t1 = '\0'; - if (ch!=0) { - /* flag message as truncated to alert the good guys */ - prepend(tbuf, sizeof(tbuf), TRUNCATED); - for (; *p; ++p); - } - } + /* We format the rest of the message. If the buffer becomes full, we mark + * the message as truncated. Note that we require at least 2 free bytes + * in the buffer as we might want to add "\r\n" there. + */ - sz=sizeof(tbuf)-(p-tbuf); - rc=vsnprintf(p, sz, fmt_cpy, ap); - if ((-1==rc) || (rc>sz)) { - /* flag message as truncated to alert the good guys */ - prepend(tbuf, sizeof(tbuf), TRUNCATED); + end = tbuf + sizeof(tbuf) - 1; + errno = saved_errno; + p += vsnprintf(p, end - p, fmt, ap); + if (p >= end || p < head_end) { /* Returned -1 in case of error... */ + static char truncate_msg[12] = "[truncated] "; + memmove(head_end + sizeof(truncate_msg), head_end, + end - head_end - sizeof(truncate_msg)); + memcpy(head_end, truncate_msg, sizeof(truncate_msg)); + p = end - 1; } - for(; *p; p++); - cnt = p - tbuf; + last_chr = p; /* Output to stderr if requested. */ if (LogStat & LOG_PERROR) { - struct iovec iov[2]; - register struct iovec *v = iov; - - v->iov_base = stdp; - v->iov_len = cnt - (stdp - tbuf); - ++v; - v->iov_base = "\n"; - v->iov_len = 1; - (void)writev(STDERR_FILENO, iov, 2); + *last_chr = '\n'; + (void)write(STDERR_FILENO, stdp, last_chr - stdp + 1); } - /* Output the message to the local logger. */ -#if 1 - /* Use NUL as a message delimiter. */ - p=tbuf; last_chr=tbuf+cnt; + /* Output the message to the local logger using NUL as a message delimiter. */ + p = tbuf; + *last_chr = 0; do { - rc=write(LogFile, p, ((last_chr-p)+1)); - if (rc<0) { + rc = write(LogFile, p, last_chr + 1 - p); + if (rc < 0) { if ((errno==EAGAIN) || (errno==EINTR)) rc=0; else { @@ -302,16 +257,10 @@ } } p+=rc; - } while (p<=last_chr); - if (p>last_chr) - { - goto getout; - } -#else - if (write(LogFile, tbuf, cnt) >= 0) { + } while (p <= last_chr); + if (rc >= 0) goto getout; - } -#endif + /* * Output the message to the console; don't worry about blocking, * if console blocks everything will. Make sure the error reported @@ -320,10 +269,10 @@ /* should mode be `O_WRONLY | O_NOCTTY' ? -- Uli */ if (LogStat & LOG_CONS && (fd = open(_PATH_CONSOLE, O_WRONLY, 0)) >= 0) { - (void)strcat(tbuf, "\r\n"); - cnt += 2; p = index(tbuf, '>') + 1; - (void)write(fd, p, cnt - (p - tbuf)); + last_chr[0] = '\r'; + last_chr[1] = '\n'; + (void)write(fd, p, last_chr - p + 2); (void)close(fd); } @@ -397,53 +346,4 @@ LogMask = pmask; UNLOCK(); return (omask); -} - -static void prepend(char *buf, int bufsize, char *tag) -{ - - /* Prepends "tag" to the beginning of the data in "buf" - right after the priority (if present) and the timestamp - (if present) shifting existing contents to the right - to make room, and truncating any characters which may - get shifted off the end of "buf". If the tag is already - there, we return without doing anything. - A. Ian Vogelesang March 7/96 */ - - /* bufsize is total size of buf, including terminating null */ - /* tag must be null-terminated string */ - - int taglen,bufleft; - char *p; - register char *q; - - if ((NULL==buf) || (NULL==tag)) return; - taglen=strlen(tag); - if (0==taglen) return; - - p=buf; - - if ((p[0]=='<') && isdigit(p[1])) { - if (p[2]=='>') p+=3; - else if (isdigit(p[2])) - if (p[3]=='>') p+=4; - else if (isdigit(p[3]) && (p[4]=='>')) p+=5; - } - if (isalpha(p[0]) && isalpha(p[1]) && isalpha(p[2]) && \ - (' '==p[3]) && ((' '==p[4]) || isdigit(p[4])) && isdigit(p[5]) && \ - (' '==p[6]) && isdigit(p[7]) && isdigit(p[8]) && \ - (':'==p[9]) && isdigit(p[10]) && isdigit(p[11]) && \ - (':'==p[12]) && isdigit(p[13]) && isdigit(p[14]) && \ - (' '==p[15]) ) p+=16; - bufleft=bufsize-(p-buf); - if (taglen>=(bufleft-1)) { - bcopy(tag,p,(bufleft-1)); - *(p+(bufleft-1))='\0'; - return; - } - if (0==bcmp(p,tag,taglen)) return; - *(p+(bufleft-1)-taglen)='\0'; - for (q=index(p,'\0'); q>=p; q--) *(q+taglen)=*q; - bcopy(tag,p,taglen); - return; } Index: linux/libc/nls/msgcat.c diff -u linux/libc/nls/msgcat.c:1.6 linux/libc/nls/msgcat.c:1.7 --- linux/libc/nls/msgcat.c:1.6 Fri Oct 4 15:53:05 1996 +++ linux/libc/nls/msgcat.c Fri Mar 14 20:03:04 1997 @@ -1,5 +1,5 @@ #if 0 -static char rcsid[] = "@(#)$Id: msgcat.c,v 1.5 1996/09/19 21:23:02 hjl Exp $"; +static char rcsid[] = "@(#)$Id: msgcat.c,v 1.6 1996/10/04 22:53:05 hjl Exp $"; #endif /* -*- c++ -*- */ @@ -141,13 +141,13 @@ if (stat(catpath, &sbuf)) return(NLERR); } else { #if BROKEN_SETLOCALE - if ((lang = (char *) getenv("LANG")) == NULL) lang = "C"; + if ((lang = (char *) getenv ("LANG")) == NULL) lang = "C"; #else /* Query the locale from the previous setlocale call in msgcat-libc.c*/ if ((lang = (char *) setlocale(LC_MESSAGES,(char *) NULL)) == NULL) lang="C"; #endif - if ((nlspath = (char *) getenv("NLSPATH")) == NULL) { + if ((nlspath = (char *) getenv ("NLSPATH")) == NULL) { #if OLD_NLS_PATHS nlspath = "/nlslib/%L/%N.cat:/nlslib/%N/%L"; #else Index: linux/libc/nls/linux/Spanish/LEEME diff -u /dev/null linux/libc/nls/linux/Spanish/LEEME:1.1 --- /dev/null Wed Jun 4 16:34:48 1997 +++ linux/libc/nls/linux/Spanish/LEEME Fri May 16 16:44:45 1997 @@ -0,0 +1,4 @@ +Esto es un intento de traducir los mensajes de error de libc +al español. Posiblemente haya muchos errores, pero por lo +menos es un principio. Espero que alguien pueda corregir y completar +las traducciones. Index: linux/libc/nls/linux/Spanish/auth.m diff -u /dev/null linux/libc/nls/linux/Spanish/auth.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/auth.m Fri May 16 16:44:46 1997 @@ -0,0 +1,26 @@ +$set 7 #AuthList + +$ #1 Original Message:(Authentication OK) +# Autenticación correcta + +$ #2 Original Message:(Invalid client credential) +# Credencial de cliente no válida + +$ #3 Original Message:(Server rejected credential) +# Credential rechazada por el servidor + +$ #4 Original Message:(Invalid client verifier) +# Verificador de cliente no válido + +$ #5 Original Message:(Server rejected verifier) +# Verificador rechazado por el servidor + +$ #6 Original Message:(Client credential too weak) +# Credential de cliente demasiado débil + +$ #7 Original Message:(Invalid server verifier) +# Verificador de servidor no válido + +$ #8 Original Message:(Failed (unspecified error)) +# Fallo (error no especificado) + Index: linux/libc/nls/linux/Spanish/clnt-misc.m diff -u /dev/null linux/libc/nls/linux/Spanish/clnt-misc.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/clnt-misc.m Fri May 16 16:44:46 1997 @@ -0,0 +1,13 @@ +$set 9 #ClntMisc + +$ #Errno Original Message:(; errno = %s) +# ; errno = %s + +$ #LowHigh Original Message:(; low version = %lu, high version = %lu) +# ; version inferior= %lu, version superior= %lu) + +$ #Why Original Message:(; why = ) +# ; por qué = + +$ #UnknownAuth Original Message:((unknown authentication error - %d)) +# (error de autenticación desconocido - %d) Index: linux/libc/nls/linux/Spanish/errlist-u.m diff -u /dev/null linux/libc/nls/linux/Spanish/errlist-u.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/errlist-u.m Fri May 16 16:44:46 1997 @@ -0,0 +1,7 @@ +$set 2 #UnknownError + +$ #1 Original Message:(Unknown error 000000000000000000000) +# Error desconocido 000000000000000000000 + +$ #2 Original Message:(Unknown error %d) +# Error desconocido %d Index: linux/libc/nls/linux/Spanish/errlist.m diff -u /dev/null linux/libc/nls/linux/Spanish/errlist.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/errlist.m Fri May 16 16:44:46 1997 @@ -0,0 +1,367 @@ +$set 1 #ErrorList + +$ #0 Original Message:(Unknown error) +# Error desconocido + +$ #1 Original Message:(Operation not permitted) +# Operación no permitida + +$ #2 Original Message:(No such file or directory) +# Fichero o directorio inexistente + +$ #3 Original Message:(No such process) +# Proceso inexistente + +$ #4 Original Message:(Interrupted system call) +# Llamada al sistema interrumpida + +$ #5 Original Message:(I/O error) +# Error de entrada/salida + +$ #6 Original Message:(No such device or address) +# Dispositivo o dirección inexistente + +$ #7 Original Message:(Arg list too long) +# Lista de argumentos demasiado larga + +$ #8 Original Message:(Exec format error) +# Error en el formato del ejecutable + +$ #9 Original Message:(Bad file number) +# Número de fichero mal + +$ #10 Original Message:(No child processes) +# No hay procesos hijos + +$ #11 Original Message:(Try again) +# Prueba otra vez + +$ #12 Original Message:(Out of memory) +# No hay memoria suficiente + +$ #13 Original Message:(Permission denied) +# Permiso denegado + +$ #14 Original Message:(Bad address) +# Dirección mal + +$ #15 Original Message:(Block device required) +# Dispositivo de bloque requerido + +$ #16 Original Message:(Device or resource busy) +# Dispositivo o recurso ocupado + +$ #17 Original Message:(File exists) +# El fichero ya existe + +$ #18 Original Message:(Cross-device link) +# Cross-device link + +$ #19 Original Message:(No such device) +# No existe el dispositivo + +$ #20 Original Message:(Not a directory) +# No es un directorio + +$ #21 Original Message:(Is a directory) +# Es un directorio + +$ #22 Original Message:(Invalid argument) +# Argumento no válido + +$ #23 Original Message:(File table overflow) +# Desbordamiento en la tabla de ficheros + +$ #24 Original Message:(Too many open files) +# Demasiados ficheros abiertos + +$ #25 Original Message:(Not a typewriter) +# Not a typewriter + +$ #26 Original Message:(Text file busy) +# Fichero ocupado + +$ #27 Original Message:(File too large) +# Fichero demasiado grande + +$ #28 Original Message:(No space left on device) +# No queda espacio en el dispositivo + +$ #29 Original Message:(Illegal seek) +# Seek ilegal + +$ #30 Original Message:(Read-only file system) +# sistema de ficheros de sólo lectura + +$ #31 Original Message:(Too many links) +# Demasiados enlaces + +$ #32 Original Message:(Broken pipe) +# tubería (pipe) rota + +$ #33 Original Message:(Math argument out of domain of func) +# Argumento matemático fuera del dominio de la función + +$ #34 Original Message:(Math result not representable) +# Resultado matemático no representable + +$ #35 Original Message:(Resource deadlock would occur) +# Posibilidad de un bloqueo (deadlock) de recursos + +$ #36 Original Message:(File name too long) +# Nombre de fichero demasiado largo + +$ #37 Original Message:(No record locks available) +# No quedan bloqueos (locks) de registro + +$ #38 Original Message:(Function not implemented) +# Función no implementada + +$ #39 Original Message:(Directory not empty) +# Directorio no vacío + +$ #40 Original Message:(Too many symbolic links encountered) +# Demasiados enlaces (links) simbólicos + +$ #41 Original Message:(Operation would block) +# La operación podría causar un bloqueo + +$ #42 Original Message:(No message of desired type) +# No hay un mensaje del tipo deseado + +$ #43 Original Message:(Identifier removed) +# Identificador eliminado + +$ #44 Original Message:(Channel number out of range) +# Número de canal fuera de rango + +$ #45 Original Message:(Level 2 not synchronized) +# Nivel 2 no sincronizado + +$ #46 Original Message:(Level 3 halted) +# Nivel 3 parado + +$ #47 Original Message:(Level 3 reset) +# Nivel 3 reinicializado + +$ #48 Original Message:(Link number out of range) +# Número de enlace fuera de rango + +$ #49 Original Message:(Protocol driver not attached) +# Controlador de protocolo no conectado + +$ #50 Original Message:(No CSI structure available) +# No estructura CSI disponible + +$ #51 Original Message:(Level 2 halted) +# Nivel 2 parado + +$ #52 Original Message:(Invalid exchange) +# Intercambio no válido + +$ #53 Original Message:(Invalid request descriptor) +# Descriptor de petición (request descriptor) no válido + +$ #54 Original Message:(Exchange full) +# Exchange full + +$ #55 Original Message:(No anode) +# No anode + +$ #56 Original Message:(Invalid request code) +# Invalid request code + +$ #57 Original Message:(Invalid slot) +# Ranura no válida + +$ #58 Original Message:(File locking deadlock error) +# Error por bloqueo (deadlock) de fichero + +$ #59 Original Message:(Bad font file format) +# Formato de fuente incorrecto + +$ #60 Original Message:(Device not a stream) +# El dispositivo ne es un stream + +$ #61 Original Message:(No data available) +# No hay datos disponibles + +$ #62 Original Message:(Timer expired) +# Temporizador expirado + +$ #63 Original Message:(Out of streams resources) +# No quedan streams disponibles + +$ #64 Original Message:(Machine is not on the network) +# La máquina no está en la red + +$ #65 Original Message:(Package not installed) +# Paquete (Package) no instalado + +$ #66 Original Message:(Object is remote) +# El objeto es remoto + +$ #67 Original Message:(Link has been severed) +# El enlace ha sido cortado + +$ #68 Original Message:(Advertise error) +# Advertise error + +$ #69 Original Message:(Srmount error) +# Srmount error + +$ #70 Original Message:(Communication error on send) +# Error de comunicacion al enviar (send) + +$ #71 Original Message:(Protocol error) +# Error de protocolo + +$ #72 Original Message:(Multihop attempted) +# Intentado multihop + +$ #73 Original Message:(RFS specific error) +# error específico de RFS + +$ #74 Original Message:(Not a data message) +# No es un mensaje de datos + +$ #75 Original Message:(Value too large for defined data type) +# Valor demasiado grande para el tipo de dato definido + +$ #76 Original Message:(Name not unique on network) +# Nombre no único en la red + +$ #77 Original Message:(File descriptor in bad state) +# Descriptor de fichero en mal estado + +$ #78 Original Message:(Remote address changed) +# Dirección remota cambiada + +$ #79 Original Message:(Can not access a needed shared library) +# No puedo acceder a una biblioteca compartida (shared library) necesaria + +$ #80 Original Message:(Accessing a corrupted shared library) +# Accediendo a una biblioteca compartida (shared library) en mal estado + +$ #81 Original Message:(.lib section in a.out corrupted) +# .lib sección in a.out en mal estado + +$ #82 Original Message:(Attempting to link in too many shared libraries) +# Intentando enlazar con demasiadas bibliotecas compartidas (shared libraries) + +$ #83 Original Message:(Cannot exec a shared library directly) +# No puedo ejecutar una biblioteca compartida (shared library) directamente + +$ #84 Original Message:(Illegal byte sequence) +# Secuencia de bytes ilegal + +$ #85 Original Message:(Interrupted system call should be restarted) +# Llamada al sistema interrumpida debería ser reinicializada + +$ #86 Original Message:(Streams pipe error) +# Streams pipe error + +$ #87 Original Message:(Too many users) +# Demasiados usuarios + +$ #88 Original Message:(Socket operation on non-socket) +# Operación de socket en no-socket + +$ #89 Original Message:(Destination address required) +# Falta dirección de destino + +$ #90 Original Message:(Message too long) +# Mensaje demasiado largo + +$ #91 Original Message:(Protocol wrong type for socket) +# Protocolo de tipo erróneo para el socket + +$ #92 Original Message:(Protocol not available) +# Protocolo no disponible + +$ #93 Original Message:(Protocol not supported) +# Protocolo no soportado + +$ #94 Original Message:(Socket type not supported) +# Tipo de socket no soportado + +$ #95 Original Message:(Operation not supported on transport endpoint) +# Operación no soportada en terminal de transporte (transport endpoint) + +$ #96 Original Message:(Protocol family not supported) +# Familia de protocolos no soportada + +$ #97 Original Message:(Address family not supported by protocol) +# Familia de direcciones no soportada por el protocolo + +$ #98 Original Message:(Address already in use) +# Dirección ya en uso + +$ #99 Original Message:(Cannot assign requested address) +# No puedo asignar la dirección solicitada + +$ #100 Original Message:(Network is down) +# La red está caída + +$ #101 Original Message:(Network is unreachable) +# Red fuera de alcance + +$ #102 Original Message:(Network dropped connection because of reset) +# La red cortó la conexión debido a un reinicio + +$ #103 Original Message:(Software caused connection abort) +# Conexión abortada por programa + +$ #104 Original Message:(Connection reset by peer) +# Conexión reninicializada por el otro extremo + +$ #105 Original Message:(No buffer space available) +# No queda espacio para buffers + +$ #106 Original Message:(Transport endpoint is already connected) +# Terminal (transport endpoint) ya conectado + +$ #107 Original Message:(Transport endpoint is not connected) +# Terminal (transport endpoint) no conectado + +$ #108 Original Message:(Cannot send after transport endpoint shutdown) +# No se puede enviar despues del cierre del terminal (transport endpoint shutdown) + +$ #109 Original Message:(Too many references: cannot splice) +# Demasiadas referencias: cannot splice + +$ #110 Original Message:(Connection timed out) +# Conexión temporizada + +$ #111 Original Message:(Connection refused) +# Conexión rechazada + +$ #112 Original Message:(Host is down) +# Host caído + +$ #113 Original Message:(No route to host) +# No hay ruta al host + +$ #114 Original Message:(Operation already in progress) +# Operación en ya progreso + +$ #115 Original Message:(Operation now in progress) +# Operatión en progreso + +$ #116 Original Message:(Stale NFS file handle) +# Stale NFS file handle + +$ #117 Original Message:(Structure needs cleaning) +# La estructura necesita ser limpiada + +$ #118 Original Message:(Not a XENIX named type file) +# No es un fichero XENIX (XENIX named type file) + +$ #119 Original Message:(No XENIX semaphores available) +# No hay semáforos XENIX disponibles + +$ #120 Original Message:(Is a named type file) +# Is a named type file + +$ #121 Original Message:(Remote I/O error) +# Error remoto de entrada/salida Index: linux/libc/nls/linux/Spanish/gencat.m diff -u /dev/null linux/libc/nls/linux/Spanish/gencat.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/gencat.m Fri May 16 16:44:46 1997 @@ -0,0 +1,48 @@ +$ #0 Original Message:(gencat catfile msgfile...) +# gencat catfile msgfile... +$ #1 Original Message:(Use: gencat [-new] [-or] [-lang C|C++|ANSIC] catfile msgfile [-h ]...\n) +# Usar: gencat [-new] [-or] [-lang C|C++|ANSIC] catfile msgfile [-h ]...\n +$ #2 Original Message:(-lang) +# -lang +$ #3 Original Message:(C) +# C +$ #4 Original Message:(C++) +# C++ +$ #5 Original Message:(ANSIC) +# ANSIC +$ #6 Original Message:(gencat: Unrecognized language: %s\n) +# gencat: Unrecognized language: %s\n +$ #7 Original Message:(-h) +# -h +$ #8 Original Message:(gencat: Can't write to a header before reading something.\n) +# gencat: Can't write to a header before reading something.\n +$ #9 Original Message:(-new) +# -new +$ #10 Original Message:(gencat: You must specify -new before the catalog file name\n) +# gencat: You must specify -new before the catalog file name\n +$ #11 Original Message:(-or) +# -or +$ #12 Original Message:(gencat: Unable to create a new %s.\n) +# gencat: Unable to create a new %s.\n +$ #13 Original Message:(gencat: Unable to create %s.\n) +# gencat: Unable to create %s.\n +$ #14 Original Message:(gencat: Unable to truncate %s.\n) +# gencat: Unable to truncate %s.\n +$ #15 Original Message:(gencat: Unable to read %s\n) +# gencat: Unable to read %s\n +$ #16 Original Message:(gencat: Unable to create header file %s.\n) +# gencat: Unable to create header file %s.\n +$ #17 Original Message:(/tmp/gencat.%d) +# /tmp/gencat.%d +$ #18 Original Message:(gencat: Unable to open temporary file: %s\n) +# gencat: Unable to open temporary file: %s\n +$ #19 Original Message:(gencat: Unable to read header file: %s\n) +# gencat: Unable to read header file: %s\n +$ #20 Original Message:(gencat: Unable to seek in tempfile: %s\n) +# gencat: Unable to seek in tempfile: %s\n +$ #21 Original Message:(gencat: Unable to seek in tempfile: %s\n) +# gencat: Unable to seek in tempfile: %s\n +$ #22 Original Message:(gencat: Unable to truncate header file: %s\n) +# gencat: Unable to truncate header file: %s\n +$ #23 Original Message:(gencat: Error writing to header file: %s\n) +# gencat: Error writing to header file: %s\n Index: linux/libc/nls/linux/Spanish/h-errlist.m diff -u /dev/null linux/libc/nls/linux/Spanish/h-errlist.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/h-errlist.m Fri May 16 16:44:46 1997 @@ -0,0 +1,17 @@ +$set 5 #HerrorList + +$ #1 Original Message:(Error 0) +# Error 0 + +$ #2 Original Message:(Unknown host) +# Host desconocido + +$ #3 Original Message:(Host name lookup failure) +# Nombre de host no encontrado + +$ #4 Original Message:(Unknown server error) +# Error. Servidor desconocido + +$ #5 Original Message:(No address associated with name) +# No hay una dirección asociada con el nombre + Index: linux/libc/nls/linux/Spanish/net-misc.m diff -u /dev/null linux/libc/nls/linux/Spanish/net-misc.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/net-misc.m Fri May 16 16:44:46 1997 @@ -0,0 +1,86 @@ +$set 11 #NetMisc + +$ #AllPortsInUse Original Message:(All ports in use) +# Todos los puertos en uso + +$ #ConnectTo Original Message:(connect to address) +# conexión a la dirección + +$ #Trying Original Message:(Trying %s...\n) +# Intentando %s...\n + +$ #SettingUpStderr Original Message:(write: setting up stderr) +# write: setting up stderr + +$ #Accept Original Message:(accept) +# accept + +$ #Getsockname Original Message:(getsockname) +# getsockname + +$ #ProtocolFailure Original Message:(socket: protocol failure in circuit setup.) +# socket: fallo de protocolo (protocol failure in circuit setup.) + +$ #RcmdSocket Original Message:(rcmd: socket) +# rcmd: socket + +$ #RexecSocket Original Message:(rexec: socket) +# rexec: socket + +$ #NetrcWrongPasswordMode Original Message:(Error - .netrc file not correct mode.\nRemove password or correct mode.) +# Error - el fichero .netrc no tiene el modo de acceso correcto.\nElimina el password o corrige el modo de acceso. + +$ #UnknownNetrcOption Original Message:(Unknown .netrc option) +# Opción desconocida en .netrc + +$ #ResolvIncorrectFormat Original Message:(resolv+: %s: \"%s\" command incorrectly formatted.\n) +# resolv+: %s: "%s" comando con formato incorrecto.\n + +$ #ResolvInvalid Original Message:(resolv+: \"%s\" is an invalid keyword\n) +# resolv+: "%s" es un comando no válido\n + +$ #ResolvValid Original Message:(resolv+: valid keywords are: %s, %s and %s\n) +# resolv+: comandos válidos son: %s, %s y %s\n + +$ #Unrecognized Original Message:(resolv+: search order not specified or unrecognized keyword, host resolution will fail.\n) +# resolv+: orden de búsqueda no especificado o comando irreconocible, la búsqueda del host fallará.\n + +$ #PossibleSpoof Original Message:(gethostbyaddr: %s != %u.%u.%u.%u, possible spoof attempt) +# gethostbyaddr: %s != %u.%u.%u.%u, possible spoof attempt + +$ #SelectSetup Original Message:(rcmd: select (setting up stderr): ) +# rcmd: select (inicializando stderr): + +$ #RcmdProtocolError Original Message:(select: protocol failure in circuit setup) +# select: fallo de protocolo en inicialización de circuito + +$ #RhostLstat Original Message:(.rhosts lstat failed) +# .rhosts lstat failed + +$ #RhostNotRegular Original Message:(.rhosts not regular file) +# .rhosts no es un fichero normal + +$ #BadRhostsOwner Original Message:(bad .rhosts owner) +# propietario de .rhosts incorrecto + +$ #RhostFstatFailed Original Message:(.rhosts fstat failed) +# .rhosts fstat failed + +$ #RhostWritable Original Message:(.rhosts writeable by other than owner) +# .rhosts tiene permiso de escritura por usuarios distintos del propietario + +$ #Name Original Message:(Name) +# Nombre + +$ #Password Original Message:(Password) +# Password + +$ #AskedForGot Original Message:(gethostby*.getanswer: asked for \"%s\", got \"%s\") +# gethostby*.getanswer: preguntó por "%s", consiguió "%s" + +$ #AskedForGotCNAME Original Message:(gethostby*.getanswer: asked for \"%s\", got CNAME for \"%s\") +# gethostby*.getanswer: preguntó por "%s", consiguió CNAME para "%s" + +$ #AskedForType Original Message:(gethostby*.getanswer: asked for type %d(%s), got %d(%s)) +# gethostby*.getanswer: preguntó por tipo %d(%s), consiguió %d(%s) + Index: linux/libc/nls/linux/Spanish/rpc-errlist.m diff -u /dev/null linux/libc/nls/linux/Spanish/rpc-errlist.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/rpc-errlist.m Fri May 16 16:44:46 1997 @@ -0,0 +1,58 @@ +$set 8 #RpcErrList + +$ #1 Original Message:(RPC: Success) +# RPC: Exito + +$ #2 Original Message:(RPC: Can't encode arguments) +# RPC: No puedo codificar los argumentos + +$ #3 Original Message:(RPC: Can't decode result) +# RPC: No puedo decodificar el resultado + +$ #4 Original Message:(RPC: Unable to send) +# RPC: Incapaz de enviar + +$ #5 Original Message:(RPC: Unable to receive) +# RPC: Incapaz de recibir + +$ #6 Original Message:(RPC: Timed out) +# RPC: Timed out + +$ #7 Original Message:(RPC: Incompatible versions of RPC) +# RPC: Versiones incompatibles de RPC + +$ #8 Original Message:(RPC: Authentication error) +# RPC: Error de autenticación + +$ #9 Original Message:(RPC: Program unavailable) +# RPC: Programa no disponible + +$ #10 Original Message:(RPC: Program/version mismatch) +# RPC: Programa/versión no coinciden (mismatch) + +$ #11 Original Message:(RPC: Procedure unavailable) +# RPC: Procedimiento no disponible + +$ #12 Original Message:(RPC: Server can't decode arguments) +# RPC: El servidor no puede decodificar argumentos + +$ #13 Original Message:(RPC: Remote system error) +# RPC: Error de sistema remoto + +$ #14 Original Message:(RPC: Unknown host) +# RPC: Host desconocido + +$ #15 Original Message:(RPC: Port mapper failure) +# RPC: Port mapper failure + +$ #16 Original Message:(RPC: Program not registered) +# RPC: Programa no registrado + +$ #17 Original Message:(RPC: Failed (unspecified error)) +# RPC: Fallo (error no especificado) + +$ #18 Original Message:(RPC: Unknown protocol) +# RPC: Protocolo desconocido + +$ #Unknown Original Message:(RPC: (unknown error code)) +# RPC: (código de error desconocido) Index: linux/libc/nls/linux/Spanish/rpc-misc.m diff -u /dev/null linux/libc/nls/linux/Spanish/rpc-misc.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/rpc-misc.m Fri May 16 16:44:46 1997 @@ -0,0 +1,106 @@ +$set 10 #RpcMisc + +$ #OutOfMemory Original Message:(out of memory) +# No hay memoria + +$ #CannotRegister Original Message:(Cannot register service) +# No se puede registrar el servicio + +$ #FatalMarshall Original Message:(auth_none.c - Fatal marshalling problem) +# auth_none.c - Fatal marshalling problem + +$ #FatalHeader Original Message:(clnt_raw.c - Fatal header serialization error.) +# clnt_raw.c - Fatal header serialization error. + +$ #Hostname Original Message:(get_myaddress: gethostbyname) +# get_myaddress: gethostbyname + +$ #Socket Original Message:(get_myaddress: socket) +# get_myaddress: socket + +$ #Iface Original Message:(get_myaddress: ioctl (get interface configuration)) +# get_myaddress: ioctl (get interface configuration) + +$ #Ioctl Original Message:(get_myaddress: ioctl) +# get_myaddress: ioctl + +$ #Getmaps Original Message:(pmap_getmaps rpc problem) +# pmap_getmaps rpc problem + +$ #BConfig Original Message:(broadcast: ioctl (get interface configuration)) +# broadcast: ioctl (get interface configuration) + +$ #BFlags Original Message:(broadcast: ioctl (get interface flags)) +# broadcast: ioctl (get interface flags) + +$ #CantCreateBSocket Original Message:(Cannot create socket for broadcast rpc) +# Cannot create socket for broadcast rpc + +$ #CantSetBOption Original Message:(Cannot set socket option SO_BROADCAST) +# Cannot set socket option SO_BROADCAST + +$ #CantSendBPacket Original Message:(Cannot send broadcast packet) +# Cannot send broadcast packet + +$ #BSelectProblem Original Message:(Broadcast select problem) +# Broadcast select problem + +$ #CantReceiveBReply Original Message:(Cannot receive reply to broadcast) +# Cannot receive reply to broadcast + +$ #BDesProblem Original Message:(Broadcast deserialization problem) +# Broadcast deserialization problem + +$ #BadAuthLen Original Message:(bad auth_len gid %d str %d auth %d\n) +# bad auth_len gid %d str %d auth %d\n + +$ #SelectFailed Original Message:(svc_run: - select failed) +# svc_run: - select failed + +$ #CantReassignProc Original Message:(can't reassign procedure number %d\n) +# can't reassign procedure number %d\n + +$ #CantCreateServer Original Message:(couldn't create an rpc server) +# couldn't create an rpc server + +$ #CantRegisterProg Original Message:(couldn't register prog %d vers %d\n) +# couldn't register prog %d vers %d\n + +$ #TroubleReplying Original Message:(trouble replying to prog %d\n) +# trouble replying to prog %d\n + +$ #NeverRegisteredProg Original Message:(never registered prog %d\n) +# never registered prog %d\n + +$ #TcpSocketCreateProblem Original Message:(svc_tcp.c - tcp socket creation problem) +# svc_tcp.c - tcp socket creation problem + +$ #CantGetNameListen Original Message:(svctcp_.c - cannot getsockname or listen) +# svctcp_.c - cannot getsockname or listen + +$ #UdpSocketCreateProblem Original Message:(svcudp_create: socket creation problem) +# svcudp_create: socket creation problem + +$ #UdpCantGetName Original Message:(svcudp_create - cannot getsockname) +# svcudp_create - cannot getsockname + +$ #CacheAlreadyEnabled Original Message:(enablecache: cache already enabled) +# enablecache: cache already enabled + +$ #CantAllocateCache Original Message:(enablecache: could not allocate cache) +# enablecache: could not allocate cache + +$ #CantAllocateCacheData Original Message:(enablecache: could not allocate cache data) +# enablecache: could not allocate cache data + +$ #CantAllocateCacheFifo Original Message:(enablecache: could not allocate cache fifo) +# enablecache: could not allocate cache fifo + +$ #VictimNotFound Original Message:(cache_set: victim not found) +# cache_set: victim not found + +$ #VictimAllocFailed Original Message:(cache_set: victim alloc failed) +# cache_set: victim alloc failed + +$ #CantAllocateRpcBuffer Original Message:(cache_set: could not allocate new rpc_buffer) +# cache_set: could not allocate new rpc_buffer Index: linux/libc/nls/linux/Spanish/siglist-u.m diff -u /dev/null linux/libc/nls/linux/Spanish/siglist-u.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/siglist-u.m Fri May 16 16:44:46 1997 @@ -0,0 +1,7 @@ +$set 4 #UnknownSignal + +$ #0 Original Message:(Unknown signal 000000000000000000) +# Señal desconocida 000000000000000000 + +$ #1 Original Message:(Unknown signal %d) +# Señal desconocida %d Index: linux/libc/nls/linux/Spanish/siglist.m diff -u /dev/null linux/libc/nls/linux/Spanish/siglist.m:1.1 --- /dev/null Wed Jun 4 16:34:49 1997 +++ linux/libc/nls/linux/Spanish/siglist.m Fri May 16 16:44:46 1997 @@ -0,0 +1,97 @@ +$set 3 #SignalList + +$ #0 Original Message:(Unknown signal) +# Señal desconocida + +$ #1 Original Message:(Hangup) +# Señal de Hangup + +$ #2 Original Message:(Interrupt) +# Interrupción + +$ #3 Original Message:(Quit) +# Señal de abandonar + +$ #4 Original Message:(Illegal instruction) +# Instrucción ilegal + +$ #5 Original Message:(Trace/breakpoint trap) +# Trace/breakpoint trap + +$ #6 Original Message:(IOT trap/Abort) +# IOT trap/Abort + +$ #7 Original Message:(Bus Error) +# Error de bus + +$ #8 Original Message:(Floating point exception) +# Excepción de coma flotante + +$ #9 Original Message:(Killed) +# Killed + +$ #10 Original Message:(User defined signal 1) +# Señal 1 definida por el usuario + +$ #11 Original Message:(Segmentation fault) +# Fallo de segmentación + +$ #12 Original Message:(User defined signal 2) +# Señal 2 definida por el usuario + +$ #13 Original Message:(Broken pipe) +# Tubería (pipe) rota + +$ #14 Original Message:(Alarm clock) +# Alarm clock + +$ #15 Original Message:(Terminated) +# Señal de acabado + +$ #16 Original Message:(Stack fault) +# Fallo de pila + +$ #17 Original Message:(Child exited) +# El hijo ha acabado + +$ #18 Original Message:(Continued) +# Continued + +$ #19 Original Message:(Stopped (signal)) +# Parado (señal) + +$ #20 Original Message:(Stopped) +# Parado + +$ #21 Original Message:(Stopped (tty input)) +# Parado (entrada por tty) + +$ #22 Original Message:(Stopped (tty output)) +# Parado (salida por tty) + +$ #23 Original Message:(Urgent condition) +# Condición urgente + +$ #24 Original Message:(CPU time limit exceeded) +# Tiempo permitido de CPU superado + +$ #25 Original Message:(File size limit exceeded) +# Límite de tamaño de fichero superado + +$ #26 Original Message:(Virtual time alarm) +# Alarma de tiempo virtual + +$ #27 Original Message:(Profile signal) +# Profile signal + +$ #28 Original Message:(Window size changed) +# Tamaño de ventana cambiado + +$ #29 Original Message:(Possible I/O) +# Posible entrada/salida + +$ #30 Original Message:(Power failure) +# Fallo de alimentación + +$ #31 Original Message:(Unused signal) +# Señal no usada Index: linux/libc/nys/nsw/src/nis/nis_group.c diff -u linux/libc/nys/nsw/src/nis/nis_group.c:1.1 linux/libc/nys/nsw/src/nis/nis_group.c:1.2 --- linux/libc/nys/nsw/src/nis/nis_group.c:1.1 Wed Mar 15 19:04:25 1995 +++ linux/libc/nys/nsw/src/nis/nis_group.c Sat May 10 14:44:36 1997 @@ -83,8 +83,7 @@ static struct group *parse_result(nis_result *res) { static struct group grp; - static char *sp = NULL; - char *cp; + char *cp, *sp; if (res == NULL) @@ -127,20 +126,17 @@ grp.gr_passwd = xstrdup(NISENTRYCOL(0, 1, res)); grp.gr_gid = atoi(NISENTRYCOL(0, 2, res)); - if (sp) - free(sp); - - sp = xstrdup(NISENTRYCOL(0, 3, res)); + sp = NISENTRYCOL(0, 3, res); while ((cp = strchr(sp, ',')) != NULL) { *cp++ = '\0'; - if (add_member(&grp, sp) < 0) + if (add_member(&grp, xstrdup (sp)) < 0) return NULL; sp = cp; } - if (add_member(&grp, sp) < 0) + if (add_member(&grp, xstrdup (sp)) < 0) return NULL; return &grp; Index: linux/libc/nys/nsw/src/nis/nis_hosts.c diff -u linux/libc/nys/nsw/src/nis/nis_hosts.c:1.4 linux/libc/nys/nsw/src/nis/nis_hosts.c:1.5 --- linux/libc/nys/nsw/src/nis/nis_hosts.c:1.4 Sun Nov 3 02:51:31 1996 +++ linux/libc/nys/nsw/src/nis/nis_hosts.c Sat May 10 14:44:36 1997 @@ -140,19 +140,21 @@ { nis_result *res; char buf[81]; - + if (name == NULL || strlen(name) > 8) return NULL; - + /* ** Search at first in the alias list, and use the correct name ** for the next search */ sprintf(buf, "[name=%s],hosts.org_dir", name); res = nis_list(buf, EXPAND_NAME, NULL, NULL); - + if (res == NULL) + return NULL; + /* - ** If we do not find it, try it as original name. But if the + ** If we do not find it, try it as original name. But if the ** database is correct, we should find it in the first case, too */ if ((res->status != NIS_SUCCESS && @@ -164,9 +166,9 @@ sprintf(buf, "[cname=%s],hosts.org_dir", name); else sprintf(buf, "[cname=%s],hosts.org_dir", NISENTRYCOL(0, 0, res)); - + res = nis_list(buf, EXPAND_NAME, NULL, NULL); - + return parse_result(res); } @@ -176,10 +178,11 @@ { nis_result *res; char buf[81]; - + sprintf(buf, "[addr=%s],hosts.org_dir", addr); - + res = nis_list(buf, EXPAND_NAME, NULL, NULL); + return parse_result(res); } Index: linux/libc/nys/nsw/src/nis/nis_publickey.c diff -u linux/libc/nys/nsw/src/nis/nis_publickey.c:1.2 linux/libc/nys/nsw/src/nis/nis_publickey.c:1.3 --- linux/libc/nys/nsw/src/nis/nis_publickey.c:1.2 Sun Nov 3 02:51:31 1996 +++ linux/libc/nys/nsw/src/nis/nis_publickey.c Sat May 10 14:44:37 1997 @@ -43,6 +43,8 @@ char buf[NIS_MAXNAMELEN+1]; char *p; + publickey[0] = '\0'; + domain = strchr(netname, '@'); if (!domain) return (0); @@ -58,6 +60,9 @@ res = nis_list(buf, EXPAND_NAME, NULL, NULL); + if (res == NULL) + return 0; + switch (res->status) { case NIS_SUCCESS: case NIS_S_SUCCESS: @@ -94,6 +99,8 @@ int len; char buf[NIS_MAXNAMELEN+1]; + secretkey[0] = '\0'; + domain = strchr(netname, '@'); if (!domain) return (0); @@ -109,6 +116,8 @@ res = nis_list(buf, USE_DGRAM+NO_AUTHINFO+FOLLOW_LINKS+FOLLOW_PATH, NULL, NULL); + if (res == NULL) + return 0; switch (res->status) { case NIS_SUCCESS: case NIS_S_SUCCESS: Index: linux/libc/nys/yp/src/yp.h diff -u linux/libc/nys/yp/src/yp.h:1.3 linux/libc/nys/yp/src/yp.h:removed --- linux/libc/nys/yp/src/yp.h:1.3 Sat Jun 10 17:19:46 1995 +++ linux/libc/nys/yp/src/yp.h Wed Jun 4 16:34:53 1997 @@ -1,288 +0,0 @@ -#define YPMAXRECORD 1024 -#define YPMAXDOMAIN 64 -#define YPMAXMAP 64 -#define YPMAXPEER 64 - -enum ypstat { - YP_TRUE = 1, - YP_NOMORE = 2, - YP_FALSE = 0, - YP_NOMAP = -1, - YP_NODOM = -2, - YP_NOKEY = -3, - YP_BADOP = -4, - YP_BADDB = -5, - YP_YPERR = -6, - YP_BADARGS = -7, - YP_VERS = -8, -}; -typedef enum ypstat ypstat; -bool_t xdr_ypstat(XDR *, ypstat*); - - -enum ypxfrstat { - YPXFR_SUCC = 1, - YPXFR_AGE = 2, - YPXFR_NOMAP = -1, - YPXFR_NODOM = -2, - YPXFR_RSRC = -3, - YPXFR_RPC = -4, - YPXFR_MADDR = -5, - YPXFR_YPERR = -6, - YPXFR_BADARGS = -7, - YPXFR_DBM = -8, - YPXFR_FILE = -9, - YPXFR_SKEW = -10, - YPXFR_CLEAR = -11, - YPXFR_FORCE = -12, - YPXFR_XFRERR = -13, - YPXFR_REFUSED = -14, -}; -typedef enum ypxfrstat ypxfrstat; -bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); - - -typedef char *domainname; -bool_t xdr_domainname(XDR *, char *); - - -typedef char *mapname; -bool_t xdr_mapname(XDR *, mapname*); - - -typedef char *peername; -bool_t xdr_peername(XDR *, peername*); - - -typedef struct { - u_int keydat_len; - char *keydat_val; -} keydat; -bool_t xdr_keydat(XDR *, keydat*); - - -typedef struct { - u_int valdat_len; - char *valdat_val; -} valdat; -bool_t xdr_valdat(XDR *, valdat*); - - -struct ypmap_parms { - domainname domain; - mapname map; - u_int ordernum; - peername peer; -}; -typedef struct ypmap_parms ypmap_parms; -bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); - - -struct ypreq_key { - domainname domain; - mapname map; - keydat key; -}; -typedef struct ypreq_key ypreq_key; -bool_t xdr_ypreq_key(XDR *, ypreq_key*); - - -struct ypreq_nokey { - domainname domain; - mapname map; -}; -typedef struct ypreq_nokey ypreq_nokey; -bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); - - -struct ypreq_xfr { - ypmap_parms map_parms; - u_int transid; - u_int prog; - u_int port; -}; -typedef struct ypreq_xfr ypreq_xfr; -bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); - - -struct ypresp_val { - ypstat stat; - valdat val; -}; -typedef struct ypresp_val ypresp_val; -bool_t xdr_ypresp_val(XDR *, ypresp_val*); - - -struct ypresp_key_val { - ypstat stat; - valdat val; - keydat key; -}; -typedef struct ypresp_key_val ypresp_key_val; -bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); - - -struct ypresp_master { - ypstat stat; - peername peer; -}; -typedef struct ypresp_master ypresp_master; -bool_t xdr_ypresp_master(XDR *, ypresp_master*); - - -struct ypresp_order { - ypstat stat; - u_int ordernum; -}; -typedef struct ypresp_order ypresp_order; -bool_t xdr_ypresp_order(XDR *, ypresp_order*); - - -struct ypresp_all { - bool_t more; - union { - ypresp_key_val val; - } ypresp_all_u; -}; -typedef struct ypresp_all ypresp_all; -bool_t xdr_ypresp_all(XDR *, ypresp_all*); - - -struct ypresp_xfr { - u_int transid; - ypxfrstat xfrstat; -}; -typedef struct ypresp_xfr ypresp_xfr; -bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); - - -struct ypmaplist { - mapname map; - struct ypmaplist *next; -}; -typedef struct ypmaplist ypmaplist; -bool_t xdr_ypmaplist(XDR *, ypmaplist*); - - -struct ypresp_maplist { - ypstat stat; - ypmaplist *maps; -}; -typedef struct ypresp_maplist ypresp_maplist; -bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); - - -enum yppush_status { - YPPUSH_SUCC = 1, - YPPUSH_AGE = 2, - YPPUSH_NOMAP = -1, - YPPUSH_NODOM = -2, - YPPUSH_RSRC = -3, - YPPUSH_RPC = -4, - YPPUSH_MADDR = -5, - YPPUSH_YPERR = -6, - YPPUSH_BADARGS = -7, - YPPUSH_DBM = -8, - YPPUSH_FILE = -9, - YPPUSH_SKEW = -10, - YPPUSH_CLEAR = -11, - YPPUSH_FORCE = -12, - YPPUSH_XFRERR = -13, - YPPUSH_REFUSED = -14, -}; -typedef enum yppush_status yppush_status; -bool_t xdr_yppush_status(XDR *, yppush_status*); - - -struct yppushresp_xfr { - u_int transid; - yppush_status status; -}; -typedef struct yppushresp_xfr yppushresp_xfr; -bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); - - -enum ypbind_resptype { - YPBIND_SUCC_VAL = 1, - YPBIND_FAIL_VAL = 2, -}; -typedef enum ypbind_resptype ypbind_resptype; -bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); - - -struct ypbind_binding { - char ypbind_binding_addr[4]; - char ypbind_binding_port[2]; -}; -typedef struct ypbind_binding ypbind_binding; -bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); - - -struct ypbind_resp { - ypbind_resptype ypbind_status; - union { - u_int ypbind_error; - ypbind_binding ypbind_bindinfo; - } ypbind_resp_u; -}; -typedef struct ypbind_resp ypbind_resp; -bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); - -#define YPBIND_ERR_ERR 1 -#define YPBIND_ERR_NOSERV 2 -#define YPBIND_ERR_RESC 3 - -struct ypbind_setdom { - domainname ypsetdom_domain; - ypbind_binding ypsetdom_binding; - u_int ypsetdom_vers; -}; -typedef struct ypbind_setdom ypbind_setdom; -bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); - - -#define YPPROG ((u_long)100004) -#define YPVERS ((u_long)2) -#define YPPROC_NULL ((u_long)0) -extern void *ypproc_null_2(void *, CLIENT *); -#define YPPROC_DOMAIN ((u_long)1) -extern bool_t *ypproc_domain_2(domainname, CLIENT *); -#define YPPROC_DOMAIN_NONACK ((u_long)2) -extern bool_t *ypproc_domain_nonack_2(domainname, CLIENT *); -#define YPPROC_MATCH ((u_long)3) -extern ypresp_val *ypproc_match_2(ypreq_key *, CLIENT *); -#define YPPROC_FIRST ((u_long)4) -extern ypresp_key_val *ypproc_first_2(ypreq_key *, CLIENT *); -#define YPPROC_NEXT ((u_long)5) -extern ypresp_key_val *ypproc_next_2(ypreq_key *, CLIENT *); -#define YPPROC_XFR ((u_long)6) -extern ypresp_xfr *ypproc_xfr_2(ypreq_xfr *, CLIENT *); -#define YPPROC_CLEAR ((u_long)7) -extern void *ypproc_clear_2(void *, CLIENT *); -#define YPPROC_ALL ((u_long)8) -extern ypresp_all *ypproc_all_2(ypreq_nokey *, CLIENT *); -#define YPPROC_MASTER ((u_long)9) -extern ypresp_master *ypproc_master_2(ypreq_nokey *, CLIENT *); -#define YPPROC_ORDER ((u_long)10) -extern ypresp_order *ypproc_order_2(ypreq_nokey *, CLIENT *); -#define YPPROC_MAPLIST ((u_long)11) -extern ypresp_maplist *ypproc_maplist_2(domainname, CLIENT *); - - -#define YPPUSH_XFRRESPPROG ((u_long)0x40000000) -#define YPPUSH_XFRRESPVERS ((u_long)1) -#define YPPUSHPROC_NULL ((u_long)0) -extern void *yppushproc_null_1(void *, CLIENT *); -#define YPPUSHPROC_XFRRESP ((u_long)1) -extern yppushresp_xfr *yppushproc_xfrresp_1(void *, CLIENT *); - - -#define YPBINDPROG ((u_long)100007) -#define YPBINDVERS ((u_long)2) -#define YPBINDPROC_NULL ((u_long)0) -extern void *ypbindproc_null_2(void *, CLIENT *); -#define YPBINDPROC_DOMAIN ((u_long)1) -extern ypbind_resp *ypbindproc_domain_2(domainname, CLIENT *); -#define YPBINDPROC_SETDOM ((u_long)2) -extern void *ypbindproc_setdom_2(ypbind_setdom *, CLIENT *); - Index: linux/libc/nys/yp/src/yp_clnt.c diff -u linux/libc/nys/yp/src/yp_clnt.c:1.3 linux/libc/nys/yp/src/yp_clnt.c:1.4 --- linux/libc/nys/yp/src/yp_clnt.c:1.3 Sat Jun 10 17:19:47 1995 +++ linux/libc/nys/yp/src/yp_clnt.c Sun Mar 23 14:29:22 1997 @@ -3,7 +3,7 @@ #ifdef ENABLE_YPEMU #include -#include "yp.h" +#include /* Default timeout can be changed using clnt_control() */ @@ -23,7 +23,7 @@ bool_t * -ypproc_domain_2(domainname argp, CLIENT *clnt) +ypproc_domain_2(domainname *argp, CLIENT *clnt) { static bool_t res; @@ -36,7 +36,7 @@ bool_t * -ypproc_domain_nonack_2(domainname argp, CLIENT *clnt) +ypproc_domain_nonack_2(domainname *argp, CLIENT *clnt) { static bool_t res; @@ -142,7 +142,7 @@ ypresp_maplist * -ypproc_maplist_2(domainname argp, CLIENT *clnt) +ypproc_maplist_2(domainname *argp, CLIENT *clnt) { static ypresp_maplist res; @@ -167,8 +167,8 @@ } -yppushresp_xfr * -yppushproc_xfrresp_1(void *argp, CLIENT *clnt) +void * +yppushproc_xfrresp_1(yppushresp_xfr *argp, CLIENT *clnt) { static yppushresp_xfr res; @@ -194,7 +194,7 @@ ypbind_resp * -ypbindproc_domain_2(domainname argp, CLIENT *clnt) +ypbindproc_domain_2(domainname *argp, CLIENT *clnt) { static ypbind_resp res; Index: linux/libc/nys/yp/src/yp_conf.c diff -u linux/libc/nys/yp/src/yp_conf.c:1.4 linux/libc/nys/yp/src/yp_conf.c:1.5 --- linux/libc/nys/yp/src/yp_conf.c:1.4 Tue Jan 23 23:52:38 1996 +++ linux/libc/nys/yp/src/yp_conf.c Sun Mar 23 14:29:23 1997 @@ -33,7 +33,7 @@ #include #include #include -#include "yp.h" +#include #include "yp_conf.h" struct yp_conf *_yp_config = NULL; Index: linux/libc/nys/yp/src/yp_if.c diff -u linux/libc/nys/yp/src/yp_if.c:1.6 linux/libc/nys/yp/src/yp_if.c:1.7 --- linux/libc/nys/yp/src/yp_if.c:1.6 Fri Oct 4 15:53:07 1996 +++ linux/libc/nys/yp/src/yp_if.c Sun Mar 23 14:29:23 1997 @@ -33,7 +33,7 @@ #include #include #include -#include "yp.h" +#include #include "yp_conf.h" #include "rpcsvc/ypclnt.h" #include Index: linux/libc/nys/yp/src/yp_xdr.c diff -u linux/libc/nys/yp/src/yp_xdr.c:1.3 linux/libc/nys/yp/src/yp_xdr.c:1.4 --- linux/libc/nys/yp/src/yp_xdr.c:1.3 Sat Jun 10 17:19:47 1995 +++ linux/libc/nys/yp/src/yp_xdr.c Sun Mar 23 14:29:23 1997 @@ -3,7 +3,7 @@ #ifdef ENABLE_YPEMU #include -#include "yp.h" +#include bool_t xdr_ypstat(XDR *xdrs, ypstat *objp) @@ -30,9 +30,9 @@ bool_t -xdr_domainname(XDR *xdrs, domainname objp) +xdr_domainname(XDR *xdrs, domainname *objp) { - if (!xdr_string(xdrs, &objp, YPMAXDOMAIN)) { + if (!xdr_string(xdrs, objp, YPMAXDOMAIN)) { return (FALSE); } return (TRUE); @@ -92,7 +92,7 @@ bool_t xdr_ypmap_parms(XDR *xdrs, ypmap_parms *objp) { - if (!xdr_domainname(xdrs, objp->domain)) { + if (!xdr_domainname(xdrs, &objp->domain)) { return (FALSE); } if (!xdr_mapname(xdrs, &objp->map)) { @@ -113,7 +113,7 @@ bool_t xdr_ypreq_key(XDR *xdrs, ypreq_key *objp) { - if (!xdr_domainname(xdrs, objp->domain)) { + if (!xdr_domainname(xdrs, &objp->domain)) { return (FALSE); } if (!xdr_mapname(xdrs, &objp->map)) { @@ -131,7 +131,7 @@ bool_t xdr_ypreq_nokey(XDR *xdrs, ypreq_nokey *objp) { - if (!xdr_domainname(xdrs, objp->domain)) { + if (!xdr_domainname(xdrs, &objp->domain)) { return (FALSE); } if (!xdr_mapname(xdrs, &objp->map)) { @@ -377,7 +377,7 @@ bool_t xdr_ypbind_setdom(XDR *xdrs, ypbind_setdom *objp) { - if (!xdr_domainname(xdrs, objp->ypsetdom_domain)) { + if (!xdr_domainname(xdrs, &objp->ypsetdom_domain)) { return (FALSE); } if (!xdr_ypbind_binding(xdrs, &objp->ypsetdom_binding)) { Index: linux/libc/sysdeps/linux/Makefile diff -u linux/libc/sysdeps/linux/Makefile:1.22 linux/libc/sysdeps/linux/Makefile:1.23 --- linux/libc/sysdeps/linux/Makefile:1.22 Sun Jan 26 22:33:22 1997 +++ linux/libc/sysdeps/linux/Makefile Sat May 10 14:44:38 1997 @@ -43,7 +43,7 @@ opendir.c rewinddir.c seekdir.c telldir.c morecore.c \ __getdirentries.c ttyname.c ttyname_r.c getcwd.c \ ftw.c glob.c sendmsg.c recvmsg.c readv.c writev.c scandir.c \ - sysctl.c kernel_version.c + sysctl.c kernel_version.c poll.c SRC2S= __access.S __chdir.S __chmod.S __chown.S __close.S __dup.S \ __dup2.S __execve.S __fchmod.S __fchdir.S __fchown.S __fcntl.S \ __fork.S __fstatfs.S __getegid.S __geteuid.S \ @@ -70,7 +70,7 @@ sched_setparam.S sched_getparam.S sched_setscheduler.S \ sched_getscheduler.S sched_yield.S sched_get_priority_max.S \ sched_get_priority_min.S sched_rr_get_interval.S fdatasync.S \ - nanosleep.S + nanosleep.S __syscall_poll.S SRC3S= fstatfs.c statfs.c uname.c __vfork.c vfork.c SRCS=$(SRC1S) $(SRC2S) $(SRC3S) Index: linux/libc/sysdeps/linux/__flock.c diff -u linux/libc/sysdeps/linux/__flock.c:1.4 linux/libc/sysdeps/linux/__flock.c:1.5 --- linux/libc/sysdeps/linux/__flock.c:1.4 Fri Oct 4 15:53:26 1996 +++ linux/libc/sysdeps/linux/__flock.c Sat May 10 14:44:38 1997 @@ -32,13 +32,14 @@ int cmd; #ifdef __linux__ + int errno_saved = errno; /* We try the system call first. */ cmd = __syscall_flock (fd, operation); if (cmd == 0 || (cmd < 0 && errno != ENOSYS)) { return cmd; } - errno = 0; + errno = errno_saved; #endif switch (operation & ~LOCK_NB) { Index: linux/libc/sysdeps/linux/__fpathconf.c diff -u linux/libc/sysdeps/linux/__fpathconf.c:1.3 linux/libc/sysdeps/linux/__fpathconf.c:1.4 --- linux/libc/sysdeps/linux/__fpathconf.c:1.3 Fri Dec 6 15:35:08 1996 +++ linux/libc/sysdeps/linux/__fpathconf.c Tue Apr 8 10:32:17 1997 @@ -24,6 +24,8 @@ #include #ifdef __linux__ #include +#include +#include #endif @@ -101,7 +103,21 @@ case _PC_CHOWN_RESTRICTED: #ifdef _POSIX_CHOWN_RESTRICTED +# ifdef __linux__ + { + struct statfs buf; + if (__fstatfs (fd, &buf) < 0) return -1; + else { + if (buf.f_type == NFS_SUPER_MAGIC) { + errno = EINVAL; + return -1; + } else + return _POSIX_CHOWN_RESTRICTED; + } + } +# else return _POSIX_CHOWN_RESTRICTED; +# endif #else return -1; #endif Index: linux/libc/sysdeps/linux/__lseek.S diff -u linux/libc/sysdeps/linux/__lseek.S:1.1.1.1 linux/libc/sysdeps/linux/__lseek.S:1.2 --- linux/libc/sysdeps/linux/__lseek.S:1.1.1.1 Fri Feb 17 21:33:32 1995 +++ linux/libc/sysdeps/linux/__lseek.S Fri Mar 14 20:03:07 1997 @@ -16,6 +16,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#define __CHECK_RETURN_ADDR #include SYSCALL__ (lseek, 3) Index: linux/libc/sysdeps/linux/__syscall_poll.S diff -u /dev/null linux/libc/sysdeps/linux/__syscall_poll.S:1.1 --- /dev/null Wed Jun 4 16:35:00 1997 +++ linux/libc/sysdeps/linux/__syscall_poll.S Sat May 10 14:44:38 1997 @@ -0,0 +1,22 @@ +/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include + +SYSCALL__ (syscall_poll, 3) + ret Index: linux/libc/sysdeps/linux/_errlist.c diff -u linux/libc/sysdeps/linux/_errlist.c:1.2 linux/libc/sysdeps/linux/_errlist.c:1.4 --- linux/libc/sysdeps/linux/_errlist.c:1.2 Wed Mar 15 19:05:31 1995 +++ linux/libc/sysdeps/linux/_errlist.c Sat May 24 16:10:41 1997 @@ -7,7 +7,7 @@ /* This is a list of all known signal numbers. */ CONST char *CONST _sys_errlist[] = { - "Unknown error", /* 0 */ + "Success", /* 0 */ "Operation not permitted", /* EPERM */ "No such file or directory", /* ENOENT */ "No such process", /* ESRCH */ @@ -130,6 +130,8 @@ "Is a named type file", /* EISNAM */ "Remote I/O error", /* EREMOTEIO */ "Quota exceeded", /* EDQUOT */ + "No medium found", /* ENOMEDIUM */ + "Wrong medium type", /* EMEDIUMTYPE */ NULL }; Index: linux/libc/sysdeps/linux/_fxstat.c diff -u linux/libc/sysdeps/linux/_fxstat.c:1.7 linux/libc/sysdeps/linux/_fxstat.c:1.8 --- linux/libc/sysdeps/linux/_fxstat.c:1.7 Sun Dec 1 11:43:28 1996 +++ linux/libc/sysdeps/linux/_fxstat.c Fri May 30 19:18:52 1997 @@ -2,6 +2,7 @@ #include #include #include +#include "glibcstat.h" #ifdef __SVR4_I386_ABI_L1__ #define prev_fstat __prev_fstat @@ -15,13 +16,50 @@ int __machdep_sys__fxstat(int version, int fd, struct stat * statbuf) { + int result; + struct stat kbuf; + struct glibcstat *buf = (struct glibcstat *) statbuf; + switch(version) { case 1: - return prev_fstat (fd, statbuf); + result = prev_fstat (fd, statbuf); + break; + + case _STAT_VER_LINUX: + result = prev_fstat (fd, &kbuf); + if (result == 0) + { + /* Convert to current kernel version of `struct stat'. */ + buf->st_dev = kbuf.st_dev; + buf->__pad1 = 0; + buf->st_ino = kbuf.st_ino; + buf->st_mode = kbuf.st_mode; + buf->st_nlink = kbuf.st_nlink; + buf->st_uid = kbuf.st_uid; + buf->st_gid = kbuf.st_gid; + buf->st_rdev = kbuf.st_rdev; + buf->__pad2 = 0; + buf->st_size = kbuf.st_size; + buf->st_blksize = kbuf.st_blksize; + buf->st_blocks = kbuf.st_blocks; + buf->st_atime = kbuf.st_atime; + buf->__unused1 = 0; + buf->st_mtime = kbuf.st_mtime; + buf->__unused2 = 0; + buf->st_ctime = kbuf.st_ctime; + buf->__unused3 = 0; + buf->__unused4 = 0; + buf->__unused5 = 0; + } + break; + default: - return EINVAL; + result = EINVAL; + break; } + + return result; } #else @@ -33,14 +71,51 @@ int _fxstat(int version, int fd, struct stat * statbuf) { + int result; + struct stat kbuf; + struct glibcstat *buf = (struct glibcstat *) statbuf; + switch(version) { case 1: - return prev_fstat (fd, statbuf); + result = prev_fstat (fd, statbuf); + break; + + case _STAT_VER_LINUX: + result = prev_fstat (fd, &kbuf); + if (result == 0) + { + /* Convert to current kernel version of `struct stat'. */ + buf->st_dev = kbuf.st_dev; + buf->__pad1 = 0; + buf->st_ino = kbuf.st_ino; + buf->st_mode = kbuf.st_mode; + buf->st_nlink = kbuf.st_nlink; + buf->st_uid = kbuf.st_uid; + buf->st_gid = kbuf.st_gid; + buf->st_rdev = kbuf.st_rdev; + buf->__pad2 = 0; + buf->st_size = kbuf.st_size; + buf->st_blksize = kbuf.st_blksize; + buf->st_blocks = kbuf.st_blocks; + buf->st_atime = kbuf.st_atime; + buf->__unused1 = 0; + buf->st_mtime = kbuf.st_mtime; + buf->__unused2 = 0; + buf->st_ctime = kbuf.st_ctime; + buf->__unused3 = 0; + buf->__unused4 = 0; + buf->__unused5 = 0; + } + break; + default: errno = EINVAL; - return -1; + result = -1; + break; } + + return result; } elf_alias (_fxstat, __fxstat); Index: linux/libc/sysdeps/linux/_lxstat.c diff -u linux/libc/sysdeps/linux/_lxstat.c:1.4 linux/libc/sysdeps/linux/_lxstat.c:1.5 --- linux/libc/sysdeps/linux/_lxstat.c:1.4 Sun Dec 1 11:43:28 1996 +++ linux/libc/sysdeps/linux/_lxstat.c Fri May 30 19:18:52 1997 @@ -2,6 +2,7 @@ #include #include #include +#include "glibcstat.h" #ifdef __SVR4_I386_ABI_L1__ #define prev_lstat __prev_lstat @@ -13,14 +14,50 @@ int _lxstat(int version, const char * path, struct stat * statbuf) { + int result; + struct stat kbuf; + struct glibcstat *buf = (struct glibcstat *) statbuf; + switch(version) { case 1: - return prev_lstat (path, statbuf); + result = prev_lstat (path, statbuf); + break; + + case _STAT_VER_LINUX: + result = prev_lstat (path, &kbuf); + if (result == 0) + { + /* Convert to current kernel version of `struct stat'. */ + buf->st_dev = kbuf.st_dev; + buf->__pad1 = 0; + buf->st_ino = kbuf.st_ino; + buf->st_mode = kbuf.st_mode; + buf->st_nlink = kbuf.st_nlink; + buf->st_uid = kbuf.st_uid; + buf->st_gid = kbuf.st_gid; + buf->st_rdev = kbuf.st_rdev; + buf->__pad2 = 0; + buf->st_size = kbuf.st_size; + buf->st_blksize = kbuf.st_blksize; + buf->st_blocks = kbuf.st_blocks; + buf->st_atime = kbuf.st_atime; + buf->__unused1 = 0; + buf->st_mtime = kbuf.st_mtime; + buf->__unused2 = 0; + buf->st_ctime = kbuf.st_ctime; + buf->__unused3 = 0; + buf->__unused4 = 0; + buf->__unused5 = 0; + } + break; + default: errno = EINVAL; - return -1; + result = -1; + break; } + return result; } elf_alias (_lxstat, __lxstat); Index: linux/libc/sysdeps/linux/_xstat.c diff -u linux/libc/sysdeps/linux/_xstat.c:1.8 linux/libc/sysdeps/linux/_xstat.c:1.9 --- linux/libc/sysdeps/linux/_xstat.c:1.8 Sun Dec 1 11:43:28 1996 +++ linux/libc/sysdeps/linux/_xstat.c Fri May 30 19:18:52 1997 @@ -2,6 +2,7 @@ #include #include #include +#include "glibcstat.h" #ifdef __SVR4_I386_ABI_L1__ #define prev_stat __prev_stat @@ -13,14 +14,51 @@ int _xstat(int version, const char * path, struct stat * statbuf) { + int result; + struct stat kbuf; + struct glibcstat *buf = (struct glibcstat *) statbuf; + switch(version) { case 1: - return prev_stat (path, statbuf); + result = prev_stat (path, statbuf); + break; + + case _STAT_VER_LINUX: + result = prev_stat (path, &kbuf); + if (result == 0) + { + /* Convert to current kernel version of `struct stat'. */ + buf->st_dev = kbuf.st_dev; + buf->__pad1 = 0; + buf->st_ino = kbuf.st_ino; + buf->st_mode = kbuf.st_mode; + buf->st_nlink = kbuf.st_nlink; + buf->st_uid = kbuf.st_uid; + buf->st_gid = kbuf.st_gid; + buf->st_rdev = kbuf.st_rdev; + buf->__pad2 = 0; + buf->st_size = kbuf.st_size; + buf->st_blksize = kbuf.st_blksize; + buf->st_blocks = kbuf.st_blocks; + buf->st_atime = kbuf.st_atime; + buf->__unused1 = 0; + buf->st_mtime = kbuf.st_mtime; + buf->__unused2 = 0; + buf->st_ctime = kbuf.st_ctime; + buf->__unused3 = 0; + buf->__unused4 = 0; + buf->__unused5 = 0; + } + break; + default: errno = EINVAL; - return -1; + result = -1; + break; } + + return result; } elf_alias (_xstat, __xstat); Index: linux/libc/sysdeps/linux/glibcstat.h diff -u /dev/null linux/libc/sysdeps/linux/glibcstat.h:1.1 --- /dev/null Wed Jun 4 16:35:00 1997 +++ linux/libc/sysdeps/linux/glibcstat.h Fri May 30 19:18:53 1997 @@ -0,0 +1,68 @@ +/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _GLIBCSTAT_H +#define _GLIBCSTAT_H 1 + +/* Versions of the `struct stat' data structure. */ +#define _STAT_VER_LINUX_OLD 1 +#define _STAT_VER_SVR4 2 +#define _STAT_VER_LINUX 3 +#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 1 +#define _MKNOD_VER_SVR4 2 +#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ + +typedef unsigned long long int __glibc_dev_t; +typedef unsigned long int __glibc_ino_t; +typedef unsigned int __glibc_mode_t; +typedef unsigned int __glibc_nlink_t; +typedef unsigned int __glibc_uid_t; +typedef unsigned int __glibc_gid_t; +typedef long int __glibc_off_t; +typedef long int __glibc_time_t; + +struct glibcstat + { + __glibc_dev_t st_dev; /* Device. */ + unsigned short int __pad1; + __glibc_ino_t st_ino; /* File serial number. */ + __glibc_mode_t st_mode; /* File mode. */ + __glibc_nlink_t st_nlink; /* Link count. */ + __glibc_uid_t st_uid; /* User ID of the file's owner. */ + __glibc_gid_t st_gid; /* Group ID of the file's group.*/ + __glibc_dev_t st_rdev; /* Device number, if device. */ + unsigned short int __pad2; + __glibc_off_t st_size; /* Size of file, in bytes. */ + unsigned long int st_blksize; /* Optimal block size for I/O. */ +#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ + + unsigned long int st_blocks; /* Number of 512-byte blocks allocated. */ + __glibc_time_t st_atime; /* Time of last access. */ + unsigned long int __unused1; + __glibc_time_t st_mtime; /* Time of last modification. */ + unsigned long int __unused2; + __glibc_time_t st_ctime; /* Time of last status change. */ + unsigned long int __unused3; + unsigned long int __unused4; + unsigned long int __unused5; + }; + +#endif /* glibcstat.h */ Index: linux/libc/sysdeps/linux/poll.c diff -u /dev/null linux/libc/sysdeps/linux/poll.c:1.1 --- /dev/null Wed Jun 4 16:35:00 1997 +++ linux/libc/sysdeps/linux/poll.c Sat May 10 14:44:39 1997 @@ -0,0 +1,98 @@ +/* Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include +#include +#include +#include + +extern int __syscall_poll __P ((struct pollfd *fds, unsigned int nfds, + int timeout)); + +/* Poll the file descriptors described by the NFDS structures starting at + FDS. If TIMEOUT is nonzero and not -1, allow TIMEOUT milliseconds for + an event to occur; if TIMEOUT is -1, block until an event occurs. + Returns the number of file descriptors with events, zero if timed out, + or -1 for errors. */ + +int +poll (fds, nfds, timeout) + struct pollfd *fds; + unsigned long int nfds; + int timeout; +{ + struct timeval tv; + fd_set rset, wset, xset; + struct pollfd *f; + int ready; + int maxfd = 0; + static int must_emulate = 0; + + if (!must_emulate) + { + int errno_saved = errno; + + ready = __syscall_poll (fds, nfds, timeout); + + if (ready >= 0 || errno != ENOSYS) + return ready; + + must_emulate = 1; + errno = errno_saved; + } + + FD_ZERO (&rset); + FD_ZERO (&wset); + FD_ZERO (&xset); + + for (f = fds; f < &fds[nfds]; ++f) + if (f->fd >= 0) + { + if (f->events & POLLIN) + FD_SET (f->fd, &rset); + if (f->events & POLLOUT) + FD_SET (f->fd, &wset); + if (f->events & POLLPRI) + FD_SET (f->fd, &xset); + if (f->fd > maxfd && (f->events & (POLLIN|POLLOUT|POLLPRI))) + maxfd = f->fd; + } + + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout % 1000) * 1000; + + ready = __select (maxfd + 1, &rset, &wset, &xset, + timeout == -1 ? NULL : &tv); + if (ready > 0) + for (f = fds; f < &fds[nfds]; ++f) + { + f->revents = 0; + if (f->fd >= 0) + { + if (FD_ISSET (f->fd, &rset)) + f->revents |= POLLIN; + if (FD_ISSET (f->fd, &wset)) + f->revents |= POLLOUT; + if (FD_ISSET (f->fd, &xset)) + f->revents |= POLLPRI; + } + } + + return ready; +} Index: linux/libc/sysdeps/linux/readv.c diff -u linux/libc/sysdeps/linux/readv.c:1.5 linux/libc/sysdeps/linux/readv.c:1.6 --- linux/libc/sysdeps/linux/readv.c:1.5 Fri Oct 4 15:53:28 1996 +++ linux/libc/sysdeps/linux/readv.c Mon Mar 24 17:37:34 1997 @@ -33,10 +33,17 @@ int __readv( int, const struct iovec *, size_t); +/* Not all versions of the kernel support the large number of records. +*/ +#ifndef UIO_FASTIOV +# define UIO_FASTIOV 8 /* 8 is a safe number. */ +#endif + int DEFUN(__readv, (fd, vector, count), int fd AND CONST struct iovec *vector AND size_t count) { + int errno_saved = errno; char *buffer; size_t bytes; int bytes_read; @@ -44,25 +51,14 @@ /* We try the system call first. */ #define min(a, b) ((a) > (b) ? (b) : (a)) -#ifdef MAX_IOVEC - for (i = 0, bytes = 0; i < count; i += MAX_IOVEC, bytes += bytes_read) { - bytes_read = __syscall_readv (fd, vector+i, min(count-i,MAX_IOVEC)); - if (bytes_read < 0) { - if (errno != ENOSYS) return bytes_read; - else goto nonsyscall; /* probably shouldn't happen */ - } - } - return bytes; - nonsyscall: -#else /* this probably means syscall doesn't exist, but just in case... */ bytes_read = __syscall_readv (fd, vector, count); - if (bytes_read >= 0 || (bytes_read < 0 && errno != ENOSYS)) + if (bytes_read >= 0 || + (errno != ENOSYS && (errno != EINVAL || count <= UIO_FASTIOV))) { return bytes_read; } -#endif - errno = 0; + errno = errno_saved; /* Find the total number of bytes to be read. */ bytes = 0; Index: linux/libc/sysdeps/linux/writev.c diff -u linux/libc/sysdeps/linux/writev.c:1.8 linux/libc/sysdeps/linux/writev.c:1.9 --- linux/libc/sysdeps/linux/writev.c:1.8 Fri Oct 4 15:53:29 1996 +++ linux/libc/sysdeps/linux/writev.c Mon Mar 24 17:37:34 1997 @@ -33,10 +33,17 @@ int __writev( int, const struct iovec *, size_t); +/* Not all versions of the kernel support the large number of records. +*/ +#ifndef UIO_FASTIOV +# define UIO_FASTIOV 8 /* 8 is a safe number. */ +#endif + int DEFUN(__writev, (fd, vector, count), int fd AND CONST struct iovec *vector AND size_t count) { + int errno_saved = errno; char *buffer; register char *bp; size_t bytes, to_copy; @@ -45,29 +52,14 @@ /* We try the system call first. */ #define min(a, b) ((a) > (b) ? (b) : (a)) -#ifdef MAX_IOVEC - for (i = 0, bytes = 0; i < count; i += MAX_IOVEC, bytes += bytes_write) { - bytes_write = __syscall_writev (fd, vector+i, min(count-i,MAX_IOVEC)); - if (bytes_write < 0) - { - if (bytes > 0) - return bytes; - if (errno == ENOSYS) - goto nonsyscall; /* probably shouldn't happen */ - return bytes_write; - } - } - return bytes; - nonsyscall: -#else /* this probably means syscall doesn't exist, but just in case... */ bytes_write = __syscall_writev (fd, vector, count); - if (bytes_write >= 0 || (bytes_write < 0 && errno != ENOSYS)) + if (bytes_write >= 0 || + (errno != ENOSYS && (errno != EINVAL || count <= UIO_FASTIOV))) { return bytes_write; } -#endif - errno = 0; + errno = errno_saved; /* Find the total number of bytes to be written. */ bytes = 0; Index: linux/libc/sysdeps/linux/i386/crt/gcrt0.S diff -u linux/libc/sysdeps/linux/i386/crt/gcrt0.S:1.9 linux/libc/sysdeps/linux/i386/crt/gcrt0.S:1.10 --- linux/libc/sysdeps/linux/i386/crt/gcrt0.S:1.9 Wed Apr 10 00:56:28 1996 +++ linux/libc/sysdeps/linux/i386/crt/gcrt0.S Sat May 24 17:24:10 1997 @@ -164,13 +164,13 @@ /* * Setup profiling */ - pushl V_MCLEANUP - call ATEXIT - addl $4,%esp pushl V_ETEXT pushl V_ENTRY call MONSTARTUP addl $8,%esp + pushl V_MCLEANUP + call ATEXIT + addl $4,%esp /* * ok, set up the ___environ and call _main */ Index: linux/libc/sysdeps/linux/i386/math/pow.c diff -u linux/libc/sysdeps/linux/i386/math/pow.c:1.1.1.1 linux/libc/sysdeps/linux/i386/math/pow.c:1.2 --- linux/libc/sysdeps/linux/i386/math/pow.c:1.1.1.1 Fri Feb 17 21:33:36 1995 +++ linux/libc/sysdeps/linux/i386/math/pow.c Sat May 3 16:01:19 1997 @@ -15,7 +15,6 @@ #include #include - double pow (x,y) double x,y; { @@ -24,9 +23,46 @@ if (y == 0.0) return 1.0; - if (x == 0.0) return (y < 0.0) ? __infnan(EDOM) : 0.0; - if (y == 1.0) return x; + + if (!finite(x) || !finite(y)) { + /* + * Handle some IEEE special values + */ + /* printf("Handling special values %g and %g\n", x, y); */ + if (__isnan(x) || __isnan(y)) + return __infnan(EDOM); + else if (fabs(x) == 1.0) + return __infnan(EDOM); + else if (y < 0.0) + return (fabs(x) < 1.0) ? __infnan(ERANGE) : 0.0; + else if (!finite(y)) + return (fabs(x) < 1.0) ? 0.0 : __infnan(ERANGE); + else { + /* + * x is +/-Inf, y is positive & finite + */ + long long tmp; + + tmp = (long long) y; + + /* Even or odd */ + negative = tmp & 1; + + /* That is only valid if y is an integer < 2^64. */ + if ((y != (double) tmp) & (x < 0)) { + return __infnan( EDOM); + } + + return negative ? x : __infnan(ERANGE); + } + /* + * All other special values will fall out of the + * calculation below + */ + } + + if (x == 0.0) return (y < 0.0) ? __infnan(ERANGE) : 0.0; if (x < 0.0) { long long tmp; @@ -42,9 +78,9 @@ } x = -x; - } else { - negative = 0; - } + } else { + negative = 0; + } /* * Inline assembler implements the following algorithm: Index: linux/libc/sysdeps/m68k/hton.c diff -u linux/libc/sysdeps/m68k/hton.c:1.3 linux/libc/sysdeps/m68k/hton.c:1.4 --- linux/libc/sysdeps/m68k/hton.c:1.3 Fri Jan 19 14:04:41 1996 +++ linux/libc/sysdeps/m68k/hton.c Fri Mar 14 20:32:16 1997 @@ -1,5 +1,13 @@ #include #include +#ifdef __linux__ +# include +# ifdef LINUX_VERSION_CODE +# if LINUX_VERSION_CODE >= 131328 +# include +# endif +# endif +#endif #undef ntohl #undef ntohs Index: linux/libc/time/strptime.c diff -u linux/libc/time/strptime.c:1.4 linux/libc/time/strptime.c:1.6 --- linux/libc/time/strptime.c:1.4 Fri Feb 14 19:38:18 1997 +++ linux/libc/time/strptime.c Fri May 30 10:02:40 1997 @@ -119,10 +119,10 @@ /* Match day of week. */ for (cnt = 0; cnt < 7; ++cnt) { - if (match_string (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt), rp)) - break; if (match_string (_NL_CURRENT (LC_TIME, DAY_1 + cnt), rp)) break; + if (match_string (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt), rp)) + break; } if (cnt == 7) /* Does not match a weekday name. */ @@ -135,10 +135,10 @@ /* Match month name. */ for (cnt = 0; cnt < 12; ++cnt) { - if (match_string (_NL_CURRENT (LC_TIME, ABMON_1 + cnt), rp)) - break; if (match_string (_NL_CURRENT (LC_TIME, MON_1 + cnt), rp)) break; + if (match_string (_NL_CURRENT (LC_TIME, ABMON_1 + cnt), rp)) + break; } if (cnt == 12) /* Does not match a month name. */ @@ -244,8 +244,17 @@ break; case 'Y': /* Match year including century number. */ - get_number (0, INT_MAX); - tm->tm_year = val - (val >= 2000 ? 2000 : 1900); + /* Use 9999 instead of INT_MAX. That is best we can do. + * Let others worry about a year 9999 problem. H.J. */ + if (sizeof (time_t) > 4) + { + get_number (0, 9999); + } + else + { + get_number (0, 2038); + } + tm->tm_year = val - 1900; break; case 'Z': /* XXX How to handle this? */ Index: linux/libc/yp/yp_xdr.c diff -u linux/libc/yp/yp_xdr.c:1.3 linux/libc/yp/yp_xdr.c:1.4 --- linux/libc/yp/yp_xdr.c:1.3 Sun Jan 26 10:00:50 1997 +++ linux/libc/yp/yp_xdr.c Sun May 18 20:58:56 1997 @@ -285,6 +285,7 @@ return (TRUE); } +#if 0 bool_t xdr_ypmaplist_str (XDR *xdrs, char *objp) { @@ -294,11 +295,16 @@ } return (TRUE); } +#endif bool_t xdr_ypmaplist(XDR *xdrs, struct ypmaplist *objp) { +#if 0 if (!xdr_ypmaplist_str(xdrs, objp->map)) +#else + if (!xdr_mapname(xdrs, &objp->map)) +#endif { return (FALSE); } Index: linux/libc/yp/yplib.c diff -u linux/libc/yp/yplib.c:1.7 linux/libc/yp/yplib.c:1.8 --- linux/libc/yp/yplib.c:1.7 Sun Jan 26 10:00:50 1997 +++ linux/libc/yp/yplib.c Sat May 3 16:01:19 1997 @@ -319,7 +319,7 @@ tv.tv_usec = 0; r = clnt_call (client, YPBINDPROC_DOMAIN, - (xdrproc_t)xdr_domainname, dom, + (xdrproc_t)xdr_domainname, (char *)&dom, (xdrproc_t)xdr_ypbind_resp, (char *)&ypbr, tv); if (r != RPC_SUCCESS) Index: linux/include/_G_config.h diff -u linux/include/_G_config.h:1.82 linux/include/_G_config.h:1.92 --- linux/include/_G_config.h:1.82 Fri Feb 14 19:37:18 1997 +++ linux/include/_G_config.h Fri May 30 19:23:13 1997 @@ -2,10 +2,10 @@ #ifndef _G_config_h #define _G_config_h -#define _LINUX_C_LIB_VERSION "5.4.23" +#define _LINUX_C_LIB_VERSION "5.4.33" #define _LINUX_C_LIB_VERSION_MAJOR 5 #define _LINUX_C_LIB_VERSION_MINOR 4 -#define _LINUX_C_LIB_VERSION_SUBMINOR 23 +#define _LINUX_C_LIB_VERSION_SUBMINOR 33 #define _G_LIB_VERSION "2.7.2" Index: linux/include/assert.h diff -u linux/include/assert.h:1.4 linux/include/assert.h:1.5 --- linux/include/assert.h:1.4 Thu Jul 6 19:15:27 1995 +++ linux/include/assert.h Fri Mar 14 20:03:44 1997 @@ -24,6 +24,7 @@ #undef _ASSERT_H #undef assert +#undef assert_perror #endif /* assert.h */ Index: linux/include/malloc.h diff -u linux/include/malloc.h:1.6 linux/include/malloc.h:1.7 --- linux/include/malloc.h:1.6 Fri Feb 14 19:37:18 1997 +++ linux/include/malloc.h Sun Mar 23 14:25:47 1997 @@ -116,15 +116,15 @@ struct mallinfo { int arena; /* total space allocated from system */ - int ordblks; /* number of available chunks */ + int ordblks; /* number of non-inuse chunks */ int smblks; /* unused -- always zero */ - int hblks; /* unused -- always zero */ - int hblkhd; /* unused -- always zero */ + int hblks; /* number of mmapped regions */ + int hblkhd; /* total space in mmapped regions */ int usmblks; /* unused -- always zero */ int fsmblks; /* unused -- always zero */ int uordblks; /* total allocated space */ - int fordblks; /* available (unallocated) space */ - int keepcost; /* unused -- always zero */ + int fordblks; /* total non-inuse space */ + int keepcost; /* top-most, releasable (via malloc_trim) space */ }; extern struct mallinfo mallinfo __P((void)); @@ -144,6 +144,13 @@ #define M_MMAP_MAX -4 #endif +/* Record the state of all malloc variables in an opaque data structure. */ +extern void * malloc_get_state __P ((void)); + +/* Restore the state of all malloc variables from data obtained with + malloc_get_state(). */ +extern int malloc_set_state __P ((void * __ptr)); + __END_DECLS Index: linux/include/paths.h diff -u linux/include/paths.h:1.5 linux/include/paths.h:1.6 --- linux/include/paths.h:1.5 Tue Dec 17 08:24:15 1996 +++ linux/include/paths.h Sun Mar 23 14:25:47 1997 @@ -43,7 +43,7 @@ #endif /* Default search path. */ -#define _PATH_DEFPATH "/usr/local/bin:/usr/bin:/bin:." +#define _PATH_DEFPATH "/usr/local/bin:/usr/bin:/bin" #define _PATH_DEFPATH_ROOT "/sbin:/bin:/usr/sbin:/usr/bin" #define _PATH_BSHELL "/bin/sh" Index: linux/include/netatalk/at.h diff -u /dev/null linux/include/netatalk/at.h:1.1 --- /dev/null Wed Jun 4 16:35:09 1997 +++ linux/include/netatalk/at.h Mon Apr 7 09:47:26 1997 @@ -0,0 +1,8 @@ +#ifndef __NETATALK_AT_H +#define __NETATALK_AT_H 1 + +#include +#include +#include + +#endif Index: linux/include/netinet/ip.h diff -u linux/include/netinet/ip.h:1.5 linux/include/netinet/ip.h:1.6 --- linux/include/netinet/ip.h:1.5 Sat Dec 7 21:42:00 1996 +++ linux/include/netinet/ip.h Mon Apr 7 09:47:26 1997 @@ -33,6 +33,7 @@ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* more fragments flag */ +#define IP_MSS 576 /* default maximum segment size */ #endif Index: linux/include/sys/poll.h diff -u /dev/null linux/include/sys/poll.h:1.1 --- /dev/null Wed Jun 4 16:35:11 1997 +++ linux/include/sys/poll.h Sat May 10 14:40:32 1997 @@ -0,0 +1,67 @@ +/* Compatibility definitions for System V `poll' interface. + Copyright (C) 1994, 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_POLL_H + +#define _SYS_POLL_H 1 +#include + +__BEGIN_DECLS + +/* Data structure describing a polling request. */ +struct pollfd + { + int fd; /* File descriptor to poll. */ + short int events; /* Types of events poller cares about. */ + short int revents; /* Types of events that actually occurred. */ + }; + +/* Event types that can be polled for. These bits may be set in `events' + to indicate the interesting event types; they will appear in `revents' + to indicate the status of the file descriptor. */ +#define POLLIN 01 /* There is data to read. */ +#define POLLPRI 02 /* There is urgent data to read. */ +#define POLLOUT 04 /* Writing now will not block. */ + +/* Some aliases. */ +#define POLLWRNORM POLLOUT + +/* Event types always implicitly polled for. These bits need not be set in + `events', but they will appear in `revents' to indicate the status of + the file descriptor. */ +#define POLLERR 010 /* Error condition. */ +#define POLLHUP 020 /* Hung up. */ +#define POLLNVAL 040 /* Invalid polling request. */ + +/* Canonical number of polling requests to read in at a time in poll. */ +#define NPOLLFILE 30 + + +/* Poll the file descriptors described by the NFDS structures starting at + FDS. If TIMEOUT is nonzero and not -1, allow TIMEOUT milliseconds for + an event to occur; if TIMEOUT is -1, block until an event occurs. + Returns the number of file descriptors with events, zero if timed out, + or -1 for errors. */ + +extern int poll __P ((struct pollfd *__fds, unsigned long int __nfds, + int __timeout)); + +__END_DECLS + +#endif /* _SYS_POLL_H */ Index: linux/include/sys/syscall.h diff -u linux/include/sys/syscall.h:1.10 linux/include/sys/syscall.h:1.11 --- linux/include/sys/syscall.h:1.10 Sun Jan 26 22:29:08 1997 +++ linux/include/sys/syscall.h Sat May 10 14:40:32 1997 @@ -145,12 +145,12 @@ #define SYS_getdents 141 #define SYS__newselect 142 #define SYS_flock 143 -#define SYS_syscall_flock 143 +#define SYS_syscall_flock SYS_flock #define SYS_msync 144 #define SYS_readv 145 -#define SYS_syscall_readv 145 +#define SYS_syscall_readv SYS_readv #define SYS_writev 146 -#define SYS_syscall_writev 146 +#define SYS_syscall_writev SYS_writev #define SYS_getsid 147 #define SYS_fdatasync 148 #define SYS__sysctl 149 @@ -172,5 +172,7 @@ #define SYS_getresuid 165 #define SYS_vm86 166 #define SYS_query_module 167 +#define SYS_poll 168 +#define SYS_syscall_poll SYS_poll #endif /* */