Index: linux/libc/ChangeLog diff -u linux/libc/ChangeLog:1.163 linux/libc/ChangeLog:1.165 --- linux/libc/ChangeLog:1.163 Sun Jan 26 22:33:17 1997 +++ linux/libc/ChangeLog Mon Feb 3 20:30:25 1997 @@ -1,3 +1,31 @@ +Mon Feb 3 19:57:45 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * version 5.4.22 is released. + + * <_G_config.h>: change version to 5.4.22. + + * elf/libc/jump.params: set version to 5.4.22. + + * elf/libm/jump.params: set version to 5.0.8. + + * release.libc: update. + + * : + * : + * : update from glibc 2.0.1. + +Sun Feb 2 23:41:28 1997 "Hans-Frieder Vogt" + + * bsd/realbsd.c: return the offending path in error. + +Sat Feb 1 11:47:26 1997 Stephen L Moshier + + * sysdeps/linux/i386/math/frexpl.c: Preserve sign of input. + +Wed Jan 29 20:50:53 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sysdeps/linux/i386/crt/crt0.S: align stack to 8 bytes. + Sun Jan 26 21:03:51 1997 H.J. Lu (hjl@gnu.ai.mit.edu) * version 5.4.21 is released. @@ -5,6 +33,8 @@ * <_G_config.h>: change version to 5.4.21. * elf/libc/jump.params: set version to 5.4.21. + + * release.libc: update. * (vm86old): renamed from vm86. (vm86): new. Index: linux/libc/release.libc diff -u linux/libc/release.libc:1.36 linux/libc/release.libc:1.37 --- linux/libc/release.libc:1.36 Sun Jan 26 22:33:17 1997 +++ linux/libc/release.libc Mon Feb 3 19:54:14 1997 @@ -19,20 +19,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.21 or above to compile libc +If you use linux 2.1.x, you need libc 5.4.22 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.21 if you want. +libc.so.5.4.22 if you want. -Due to the new, improved locale, the Linux C library 5.4.21 is binary +Due to the new, improved locale, the Linux C library 5.4.22 is binary compatible with libc 5.3.12 but not vice versa. The binaries -compiled/linked with libc.so.5.4.21 may not run with libc.so.5.3.12. +compiled/linked with libc.so.5.4.22 may not run with libc.so.5.3.12. You may need to regenerate locale files for the new locale in libc -5.4.21 if you use locales other tha C/POSIX which are the defaults. +5.4.22 if you use locales other tha C/POSIX which are the defaults. The locale sources are at @@ -41,7 +41,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.21. Please read +This is the beta release of the Linux C library 5.4.22. Please read the ChangeLog for details regarding changes/bug fixes. DISTRIBUTION SITES: @@ -62,11 +62,11 @@ DISTRIBUTION FILES: -1. libc-5.4.21.bin.tar.gz +1. libc-5.4.22.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.21.bin.tar.gz are not complete. You need to +The header files in libc-5.4.22.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 +77,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.21.tar.gz +2. libc-5.4.22.tar.gz Source tree for libc and header files. -3. libc-5.4.20-5.4.21.diff.gz +3. libc-5.4.21-5.4.22.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 +152,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.21.bin.tar.gz | tar xvf - +gzip -dc libc-5.4.22.bin.tar.gz | tar xvf - SOURCE INSTALLATION: @@ -219,7 +219,7 @@ H.J. hjl@gnu.ai.mit.edu -01/26/97 +02/05/97 ---- RCS file: /home/cvs/gnu/make/dir.c,v retrieving revision 1.1.1.1 Index: linux/libc/bsd/realpath.c diff -u linux/libc/bsd/realpath.c:1.6 linux/libc/bsd/realpath.c:1.7 --- linux/libc/bsd/realpath.c:1.6 Fri Dec 6 17:36:00 1996 +++ linux/libc/bsd/realpath.c Mon Feb 3 19:54:15 1997 @@ -139,8 +139,12 @@ n = readlink(got_path, link_path, PATH_MAX - 1); if (n < 0) { /* EINVAL means the file exists but isn't a symlink. */ - if (errno != EINVAL) + if (errno != EINVAL) { + /* Make sure it's null terminated. */ + *new_path = '\0'; + strcpy (resolved_path, got_path); return NULL; + } } else { /* Note: readlink doesn't add the null byte. */ Index: linux/libc/elf/libc/jump.params diff -u linux/libc/elf/libc/jump.params:1.74 linux/libc/elf/libc/jump.params:1.75 --- linux/libc/elf/libc/jump.params:1.74 Sun Jan 26 10:00:47 1997 +++ linux/libc/elf/libc/jump.params Mon Feb 3 19:54:17 1997 @@ -1 +1 @@ -Version=5.4.21 +Version=5.4.22 Index: linux/libc/elf/libm/jump.params diff -u linux/libc/elf/libm/jump.params:1.9 linux/libc/elf/libm/jump.params:1.10 --- linux/libc/elf/libm/jump.params:1.9 Tue Dec 3 19:11:11 1996 +++ linux/libc/elf/libm/jump.params Mon Feb 3 19:54:18 1997 @@ -1 +1 @@ -Version=5.0.7 +Version=5.0.8 Index: linux/libc/sysdeps/linux/i386/crt/crt0.S diff -u linux/libc/sysdeps/linux/i386/crt/crt0.S:1.13 linux/libc/sysdeps/linux/i386/crt/crt0.S:1.14 --- linux/libc/sysdeps/linux/i386/crt/crt0.S:1.13 Wed Apr 10 00:56:28 1996 +++ linux/libc/sysdeps/linux/i386/crt/crt0.S Mon Feb 3 19:54:22 1997 @@ -113,6 +113,7 @@ popl %ecx movl %esp,%ebx /* Points to the arguments */ movl %esp,%eax /* Same here */ + andl $0xfffffff8,%esp movl %ecx,%edx addl %edx,%edx addl %edx,%edx Index: linux/libc/sysdeps/linux/i386/math/frexpl.c diff -u linux/libc/sysdeps/linux/i386/math/frexpl.c:1.3 linux/libc/sysdeps/linux/i386/math/frexpl.c:1.4 --- linux/libc/sysdeps/linux/i386/math/frexpl.c:1.3 Fri Oct 4 15:53:33 1996 +++ linux/libc/sysdeps/linux/i386/math/frexpl.c Mon Feb 3 19:54:24 1997 @@ -68,6 +68,7 @@ } *pw2 = i - 0x3ffe; - *q = 0x3ffe; + *q &= 0x8000; /* Let the original sign bit pass through. */ + *q |= 0x3ffe; return( u.y ); } Index: linux/include/_G_config.h diff -u linux/include/_G_config.h:1.80 linux/include/_G_config.h:1.81 --- linux/include/_G_config.h:1.80 Sun Jan 26 10:09:41 1997 +++ linux/include/_G_config.h Mon Feb 3 19:54:47 1997 @@ -2,10 +2,10 @@ #ifndef _G_config_h #define _G_config_h -#define _LINUX_C_LIB_VERSION "5.4.21" +#define _LINUX_C_LIB_VERSION "5.4.22" #define _LINUX_C_LIB_VERSION_MAJOR 5 #define _LINUX_C_LIB_VERSION_MINOR 4 -#define _LINUX_C_LIB_VERSION_SUBMINOR 21 +#define _LINUX_C_LIB_VERSION_SUBMINOR 22 #define _G_LIB_VERSION "2.7.2" Index: linux/include/rpcsvc/yp.h diff -u linux/include/rpcsvc/yp.h:1.1 linux/include/rpcsvc/yp.h:1.2 --- linux/include/rpcsvc/yp.h:1.1 Sun Jan 26 10:09:42 1997 +++ linux/include/rpcsvc/yp.h Mon Feb 3 19:54:48 1997 @@ -5,23 +5,23 @@ * may copy or modify Sun RPC without charge, but are not authorized * to license or distribute it to anyone else except as part of a product or * program developed by the user. - * + * * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * + * * Sun RPC is provided with no support and without any obligation on the * part of Sun Microsystems, Inc. to assist in its use, correction, * modification or enhancement. - * + * * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * OR ANY PART THEREOF. - * + * * In no event will Sun Microsystems, Inc. be liable for any lost revenue * or profits or other special, indirect and consequential damages, even if * Sun has been advised of the possibility of such damages. - * + * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, California 94043 @@ -51,13 +51,13 @@ YP_VERS = -8, }; typedef enum ypstat ypstat; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypstat(XDR *, ypstat*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypstat(XDR *, ypstat*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypstat(); -#endif /* Old Style C */ +#endif /* Old Style C */ enum ypxfrstat { @@ -79,69 +79,69 @@ YPXFR_REFUSED = -14, }; typedef enum ypxfrstat ypxfrstat; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypxfrstat(); -#endif /* Old Style C */ +#endif /* Old Style C */ typedef char *domainname; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_domainname(XDR *, domainname*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_domainname(XDR *, domainname*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_domainname(); -#endif /* Old Style C */ +#endif /* Old Style C */ typedef char *mapname; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_mapname(XDR *, mapname*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_mapname(XDR *, mapname*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_mapname(); -#endif /* Old Style C */ +#endif /* Old Style C */ typedef char *peername; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_peername(XDR *, peername*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_peername(XDR *, peername*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_peername(); -#endif /* Old Style C */ +#endif /* Old Style C */ typedef struct { u_int keydat_len; char *keydat_val; } keydat; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_keydat(XDR *, keydat*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_keydat(XDR *, keydat*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_keydat(); -#endif /* Old Style C */ +#endif /* Old Style C */ typedef struct { u_int valdat_len; char *valdat_val; } valdat; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_valdat(XDR *, valdat*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_valdat(XDR *, valdat*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_valdat(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypmap_parms { @@ -151,13 +151,13 @@ peername peer; }; typedef struct ypmap_parms ypmap_parms; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypmap_parms(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypreq_key { @@ -166,13 +166,13 @@ keydat key; }; typedef struct ypreq_key ypreq_key; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypreq_key(XDR *, ypreq_key*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypreq_key(XDR *, ypreq_key*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypreq_key(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypreq_nokey { @@ -180,13 +180,13 @@ mapname map; }; typedef struct ypreq_nokey ypreq_nokey; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypreq_nokey(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypreq_xfr { @@ -196,13 +196,13 @@ u_int port; }; typedef struct ypreq_xfr ypreq_xfr; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypreq_xfr(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_val { @@ -210,28 +210,38 @@ valdat val; }; typedef struct ypresp_val ypresp_val; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_val(XDR *, ypresp_val*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_val(XDR *, ypresp_val*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_val(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_key_val { ypstat stat; +#ifdef STUPID_SUN_BUG + /* This is the form as distributed by Sun. But even the Sun NIS + servers expect the values in the other order. So their + implementation somehow must change the order internally. We + don't want to follow this bad example since the user should be + able to use rpcgen on this file. */ + keydat key; + valdat val; +#else valdat val; keydat key; +#endif }; typedef struct ypresp_key_val ypresp_key_val; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_key_val(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_master { @@ -239,13 +249,13 @@ peername peer; }; typedef struct ypresp_master ypresp_master; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_master(XDR *, ypresp_master*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_master(XDR *, ypresp_master*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_master(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_order { @@ -253,13 +263,13 @@ u_int ordernum; }; typedef struct ypresp_order ypresp_order; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_order(XDR *, ypresp_order*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_order(XDR *, ypresp_order*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_order(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_all { @@ -269,13 +279,13 @@ } ypresp_all_u; }; typedef struct ypresp_all ypresp_all; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_all(XDR *, ypresp_all*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_all(XDR *, ypresp_all*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_all(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_xfr { @@ -283,13 +293,13 @@ ypxfrstat xfrstat; }; typedef struct ypresp_xfr ypresp_xfr; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_xfr(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypmaplist { @@ -297,13 +307,13 @@ struct ypmaplist *next; }; typedef struct ypmaplist ypmaplist; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypmaplist(XDR *, ypmaplist*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypmaplist(XDR *, ypmaplist*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypmaplist(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypresp_maplist { @@ -311,13 +321,13 @@ ypmaplist *maps; }; typedef struct ypresp_maplist ypresp_maplist; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypresp_maplist(); -#endif /* Old Style C */ +#endif /* Old Style C */ enum yppush_status { @@ -339,13 +349,13 @@ YPPUSH_REFUSED = -14, }; typedef enum yppush_status yppush_status; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_yppush_status(XDR *, yppush_status*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_yppush_status(XDR *, yppush_status*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_yppush_status(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct yppushresp_xfr { @@ -353,13 +363,13 @@ yppush_status status; }; typedef struct yppushresp_xfr yppushresp_xfr; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_yppushresp_xfr(); -#endif /* Old Style C */ +#endif /* Old Style C */ enum ypbind_resptype { @@ -367,13 +377,13 @@ YPBIND_FAIL_VAL = 2, }; typedef enum ypbind_resptype ypbind_resptype; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypbind_resptype(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypbind_binding { @@ -381,13 +391,13 @@ char ypbind_binding_port[2]; }; typedef struct ypbind_binding ypbind_binding; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypbind_binding(); -#endif /* Old Style C */ +#endif /* Old Style C */ struct ypbind_resp { @@ -398,13 +408,13 @@ } ypbind_resp_u; }; typedef struct ypbind_resp ypbind_resp; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypbind_resp(); -#endif /* Old Style C */ +#endif /* Old Style C */ #define YPBIND_ERR_ERR 1 #define YPBIND_ERR_NOSERV 2 @@ -416,13 +426,13 @@ u_int ypsetdom_vers; }; typedef struct ypbind_setdom ypbind_setdom; -#ifdef __cplusplus +#ifdef __cplusplus extern "C" bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); -#elif __STDC__ +#elif __STDC__ extern bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); -#else /* Old Style C */ +#else /* Old Style C */ bool_t xdr_ypbind_setdom(); -#endif /* Old Style C */ +#endif /* Old Style C */ #define YPPROG ((u_long)100004) @@ -504,7 +514,7 @@ extern ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *); extern ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *); -#else /* Old Style C */ +#else /* Old Style C */ #define YPPROC_NULL ((u_long)0) extern void * ypproc_null_2(); extern void * ypproc_null_2_svc(); @@ -541,7 +551,7 @@ #define YPPROC_MAPLIST ((u_long)11) extern ypresp_maplist * ypproc_maplist_2(); extern ypresp_maplist * ypproc_maplist_2_svc(); -#endif /* Old Style C */ +#endif /* Old Style C */ #define YPPUSH_XFRRESPPROG ((u_long)0x40000000) #define YPPUSH_XFRRESPVERS ((u_long)1) @@ -562,14 +572,14 @@ extern void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *); extern void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *); -#else /* Old Style C */ +#else /* Old Style C */ #define YPPUSHPROC_NULL ((u_long)0) extern void * yppushproc_null_1(); extern void * yppushproc_null_1_svc(); #define YPPUSHPROC_XFRRESP ((u_long)1) extern void * yppushproc_xfrresp_1(); extern void * yppushproc_xfrresp_1_svc(); -#endif /* Old Style C */ +#endif /* Old Style C */ #define YPBINDPROG ((u_long)100007) #define YPBINDVERS ((u_long)2) @@ -596,7 +606,7 @@ extern void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *); extern void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *); -#else /* Old Style C */ +#else /* Old Style C */ #define YPBINDPROC_NULL ((u_long)0) extern void * ypbindproc_null_2(); extern void * ypbindproc_null_2_svc(); @@ -606,6 +616,6 @@ #define YPBINDPROC_SETDOM ((u_long)2) extern void * ypbindproc_setdom_2(); extern void * ypbindproc_setdom_2_svc(); -#endif /* Old Style C */ +#endif /* Old Style C */ #endif /* !__RPCSVC_YP_H__ */ Index: linux/include/rpcsvc/yp.x diff -u linux/include/rpcsvc/yp.x:1.2 linux/include/rpcsvc/yp.x:1.3 --- linux/include/rpcsvc/yp.x:1.2 Sun Jan 26 10:09:42 1997 +++ linux/include/rpcsvc/yp.x Mon Feb 3 19:54:48 1997 @@ -7,23 +7,23 @@ * may copy or modify Sun RPC without charge, but are not authorized * to license or distribute it to anyone else except as part of a product or * program developed by the user. - * + * * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * + * * Sun RPC is provided with no support and without any obligation on the * part of Sun Microsystems, Inc. to assist in its use, correction, * modification or enhancement. - * + * * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * OR ANY PART THEREOF. - * + * * In no event will Sun Microsystems, Inc. be liable for any lost revenue * or profits or other special, indirect and consequential damages, even if * Sun has been advised of the possibility of such damages. - * + * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, California 94043 @@ -82,7 +82,7 @@ struct ypmap_parms { - domainname domain; + domainname domain; mapname map; unsigned int ordernum; peername peer; @@ -95,10 +95,10 @@ }; struct ypreq_nokey { - domainname domain; + domainname domain; mapname map; }; - + struct ypreq_xfr { ypmap_parms map_parms; unsigned int transid; @@ -115,6 +115,11 @@ struct ypresp_key_val { ypstat stat; #ifdef STUPID_SUN_BUG + /* This is the form as distributed by Sun. But even the Sun NIS + servers expect the values in the other order. So their + implementation somehow must change the order internally. We + don't want to follow this bad example since the user should be + able to use rpcgen on this file. */ keydat key; valdat val; #else @@ -125,7 +130,7 @@ struct ypresp_master { - ypstat stat; + ypstat stat; peername peer; }; @@ -184,31 +189,31 @@ * Response structure and overall result status codes. Success and failure * represent two separate response message types. */ - + enum ypbind_resptype { - YPBIND_SUCC_VAL = 1, + YPBIND_SUCC_VAL = 1, YPBIND_FAIL_VAL = 2 }; - + struct ypbind_binding { opaque ypbind_binding_addr[4]; /* In network order */ opaque ypbind_binding_port[2]; /* In network order */ -}; +}; union ypbind_resp switch (ypbind_resptype ypbind_status) { case YPBIND_FAIL_VAL: unsigned ypbind_error; case YPBIND_SUCC_VAL: ypbind_binding ypbind_bindinfo; -}; +}; /* Detailed failure reason codes for response field ypbind_error*/ - + const YPBIND_ERR_ERR = 1; /* Internal error */ const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */ const YPBIND_ERR_RESC = 3; /* System resource allocation failure */ - - + + /* * Request data structure for ypbind "Set domain" procedure. */ @@ -224,11 +229,11 @@ */ program YPPROG { version YPVERS { - void + void YPPROC_NULL(void) = 0; - bool - YPPROC_DOMAIN(domainname) = 1; + bool + YPPROC_DOMAIN(domainname) = 1; bool YPPROC_DOMAIN_NONACK(domainname) = 2; @@ -236,10 +241,10 @@ ypresp_val YPPROC_MATCH(ypreq_key) = 3; - ypresp_key_val + ypresp_key_val YPPROC_FIRST(ypreq_key) = 4; - ypresp_key_val + ypresp_key_val YPPROC_NEXT(ypreq_key) = 5; ypresp_xfr @@ -257,7 +262,7 @@ ypresp_order YPPROC_ORDER(ypreq_nokey) = 10; - ypresp_maplist + ypresp_maplist YPPROC_MAPLIST(domainname) = 11; } = 2; } = 100004; @@ -272,7 +277,13 @@ YPPUSHPROC_NULL(void) = 0; #ifdef STUPID_SUN_BUG - yppushresp_xfr + /* This is the form as distributed by Sun. But even + the Sun NIS servers expect the values in the other + order. So their implementation somehow must change + the order internally. We don't want to follow this + bad example since the user should be able to use + rpcgen on this file. */ + yppushresp_xfr YPPUSHPROC_XFRRESP(void) = 1; #else void @@ -288,7 +299,7 @@ version YPBINDVERS { void YPBINDPROC_NULL(void) = 0; - + ypbind_resp YPBINDPROC_DOMAIN(domainname) = 1; @@ -296,5 +307,3 @@ YPBINDPROC_SETDOM(ypbind_setdom) = 2; } = 2; } = 100007; - - Index: linux/include/rpcsvc/yp_prot.h diff -u linux/include/rpcsvc/yp_prot.h:1.3 linux/include/rpcsvc/yp_prot.h:1.4 --- linux/include/rpcsvc/yp_prot.h:1.3 Mon Jan 27 07:35:32 1997 +++ linux/include/rpcsvc/yp_prot.h Mon Feb 3 19:54:48 1997 @@ -70,21 +70,20 @@ #define YPMSGSZ 1600 typedef struct { - u_int keydat_len; - char *keydat_val; + u_int keydat_len; + char *keydat_val; } keydat; typedef struct { - u_int valdat_len; - char *valdat_val; + u_int valdat_len; + char *valdat_val; } valdat; struct ypmap_parms { char *domain; /* Null string means not available */ char *map; /* Null string means not available */ unsigned int ordernum; /* 0 means not available */ - char *peer; /* Null string means not available */ -#define owner peer; + char *owner; /* Null string means not available */ }; /* @@ -114,48 +113,68 @@ #define ypxfr_ordernum map_parms.ordernum #define ypxfr_owner map_parms.owner +/* Return status values */ + +enum ypstat { + YP_TRUE = 1, /* General purpose success code */ +#define YP_TRUE YP_TRUE + YP_NOMORE = 2, /* No more entries in map */ +#define YP_NOMORE YP_NOMORE + YP_FALSE = 0, /* General purpose failure code */ +#define YP_FALSE YP_FALSE + YP_NOMAP = -1, /* No such map in domain */ +#define YP_NOMAP YP_NOMAP + YP_NODOM = -2, /* Domain not supported */ +#define YP_NODOM YP_NODOM + YP_NOKEY = -3, /* No such key in map */ +#define YP_NOKEY YP_NOKEY + YP_BADOP = -4, /* Invalid operation */ +#define YP_BADOP YP_BADOP + YP_BADDB = -5, /* Server data base is bad */ +#define YP_BADDB YP_BADDB + YP_YPERR = -6, /* NIS server error */ +#define YP_YPERR YP_YPERR + YP_BADARGS = -7, /* Request arguments bad */ +#define YP_BADARGS YP_BADARGS + YP_VERS = -8, /* NIS server version mismatch - server can't supply + requested service. */ +#define YP_VERS YP_VERS +}; + /* * Response parameter structures */ -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; struct ypresp_val { - ypstat stat; -#define status stat + ypstat status; valdat valdat; }; struct ypresp_key_val { - ypstat stat; -#define status stat + ypstat status; +#ifdef STUPID_SUN_BUG + /* This is the form as distributed by Sun. But even the Sun NIS + servers expect the values in the other order. So their + implementation somehow must change the order internally. We + don't want to follow this bad example since the user should be + able to use rpcgen on this file. */ keydat keydat; valdat valdat; +#else + valdat valdat; + keydat keydat; +#endif }; struct ypresp_master { - ypstat stat; -#define status stat - char *peer; -#define master peer + ypstat status; + char *master; }; struct ypresp_order { - ypstat stat; -#define status stat + ypstat status; u_int ordernum; }; @@ -167,8 +186,7 @@ }; struct ypresp_maplist { - ypstat stat; -#define status stat + ypstat status; struct ypmaplist *list; }; @@ -192,20 +210,6 @@ #define YPPROC_MAPLIST ((u_long)11) #define YPPROC_NEWXFR ((u_long)12) -/* Return status values */ - -#define YP_TRUE YP_TRUE /* General purpose success code */ -#define YP_NOMORE YP_NOMORE /* No more entries in map */ -#define YP_FALSE YP_FALSE /* General purpose failure code */ -#define YP_NOMAP YP_NOMAP /* No such map in domain */ -#define YP_NODOM YP_NODOM /* Domain not supported */ -#define YP_NOKEY YP_NOKEY /* No such key in map */ -#define YP_BADOP YP_BADOP /* Invalid operation */ -#define YP_BADDB YP_BADDB /* Server data base is bad */ -#define YP_YPERR YP_YPERR /* NIS server error */ -#define YP_BADARGS YP_BADARGS /* Request arguments bad */ -#define YP_VERS YP_VERS /* NIS server version mismatch - server - * can't supply requested service. */ /* * Protocol between clients and NIS binder servers */ @@ -284,23 +288,43 @@ #define YPPUSHPROC_NULL ((u_long)0) #define YPPUSHPROC_XFRRESP ((u_long)1) +/* Status values for yppushresp_xfr.status */ + 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, + YPPUSH_SUCC = 1, /* Success */ +#define YPPUSH_SUCC YPPUSH_SUCC + YPPUSH_AGE = 2, /* Master's version not newer */ +#define YPPUSH_AGE YPPUSH_AGE + YPPUSH_NOMAP = -1, /* Can't find server for map */ +#define YPPUSH_NOMAP YPPUSH_NOMAP + YPPUSH_NODOM = -2, /* Domain not supported */ +#define YPPUSH_NODOM YPPUSH_NODOM + YPPUSH_RSRC = -3, /* Local resouce alloc failure */ +#define YPPUSH_RSRC YPPUSH_RSRC + YPPUSH_RPC = -4, /* RPC failure talking to server */ +#define YPPUSH_RPC YPPUSH_RPC + YPPUSH_MADDR = -5, /* Can't get master address */ +#define YPPUSH_MADDR YPPUSH_MADDR + YPPUSH_YPERR = -6, /* NIS server/map db error */ +#define YPPUSH_YPERR YPPUSH_YPERR + YPPUSH_BADARGS = -7, /* Request arguments bad */ +#define YPPUSH_BADARGS YPPUSH_BADARGS + YPPUSH_DBM = -8, /* Local dbm operation failed */ +#define YPPUSH_DBM YPPUSH_DBM + YPPUSH_FILE = -9, /* Local file I/O operation failed */ +#define YPPUSH_FILE YPPUSH_FILE + YPPUSH_SKEW = -10, /* Map version skew during transfer */ +#define YPPUSH_SKEW YPPUSH_SKEW + YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */ +#define YPPUSH_CLEAR YPPUSH_CLEAR + YPPUSH_FORCE = -12, /* No local order number in map - use -f flag*/ +#define YPPUSH_FORCE YPPUSH_FORCE + YPPUSH_XFRERR = -13, /* ypxfr error */ +#define YPPUSH_XFRERR YPPUSH_XFRERR + YPPUSH_REFUSED = -14, /* Transfer request refused by ypserv */ +#define YPPUSH_REFUSED YPPUSH_REFUSED + YPPUSH_NOALIAS = -15 /* Alias not found for map or domain */ +#define YPPUSH_NOALIAS YPPUSH_NOALIAS }; typedef enum yppush_status yppush_status; @@ -309,28 +333,6 @@ yppush_status status; }; -/* Status values for yppushresp_xfr.status */ - -#define YPPUSH_SUCC YPPUSH_SUCC /* Success */ -#define YPPUSH_AGE YPPUSH_AGE /* Master's version not newer */ -#define YPPUSH_NOMAP YPPUSH_NOMAP /* Can't find server for map */ -#define YPPUSH_NODOM YPPUSH_NODOM /* Domain not supported */ -#define YPPUSH_RSRC YPPUSH_RSRC /* Local resouce alloc failure */ -#define YPPUSH_RPC YPPUSH_RPC /* RPC failure talking to server */ -#define YPPUSH_MADDR YPPUSH_MADDR /* Can't get master address */ -#define YPPUSH_YPERR YPPUSH_YPERR /* NIS server/map db error */ -#define YPPUSH_BADARGS YPPUSH_BADARGS /* Request arguments bad */ -#define YPPUSH_DBM YPPUSH_DBM /* Local dbm operation failed */ -#define YPPUSH_FILE YPPUSH_FILE /* Local file I/O operation failed */ -#define YPPUSH_SKEW YPPUSH_SKEW /* Map version skew during transfer */ -#define YPPUSH_CLEAR YPPUSH_CLEAR /* Can't send "Clear" req to local - * ypserv */ -#define YPPUSH_FORCE YPPUSH_FORCE /* No local order number in map - - * use -f flag. */ -#define YPPUSH_XFRERR YPPUSH_XFRERR /* ypxfr error */ -#define YPPUSH_REFUSED YPPUSH_REFUSED /* Transfer request refused by ypserv */ -#define YPPUSH_NOALIAS YPPUSH_REFUSED /* Alias not found for map or domain */ - struct ypresp_all { bool_t more; union { @@ -338,12 +340,8 @@ } ypresp_all_u; }; -typedef char *domainname; - __BEGIN_DECLS -extern bool_t xdr_ypdomain_wrap_string __P ((XDR *__xdrs, char ** __objp)); -extern bool_t xdr_ypmap_wrap_string __P ((XDR *__xdrs, char ** __objp)); extern bool_t xdr_ypreq_key __P ((XDR *__xdrs, struct ypreq_key * __objp)); extern bool_t xdr_ypreq_nokey __P ((XDR *__xdrs, struct ypreq_nokey * __objp)); extern bool_t xdr_ypreq_xfr __P ((XDR *__xdrs, struct ypreq_xfr * __objp)); @@ -352,7 +350,6 @@ extern bool_t xdr_ypbind_resp __P ((XDR *__xdrs, struct ypbind_resp * __objp)); extern bool_t xdr_ypbind_setdom __P ((XDR *__xdrs, struct ypbind_setdom * __objp)); extern bool_t xdr_ypmap_parms __P ((XDR *__xdrs, struct ypmap_parms * __objp)); -extern bool_t xdr_ypowner_wrap_string __P ((XDR *__xdrs, char ** __objp)); extern bool_t xdr_yppushresp_xfr __P ((XDR *__xdrs, struct yppushresp_xfr * __objp)); extern bool_t xdr_ypresp_order __P ((XDR *__xdrs, struct ypresp_order * __objp)); extern bool_t xdr_ypresp_master __P ((XDR *__xdrs, struct ypresp_master * __objp)); @@ -363,9 +360,8 @@ extern bool_t xdr_ypstat __P ((XDR *__xdrs, enum ypbind_resptype * __objp)); extern bool_t xdr_ypresp_all __P ((XDR *__xdrs, struct ypresp_all * __objp)); extern bool_t xdr_ypresp_all_seq __P ((XDR *__xdrs, u_long * __objp)); -extern bool_t xdr_ypmaplist_str __P ((XDR *__xdrs, char * __objp)); extern bool_t xdr_ypmaplist __P ((XDR *__xdrs, struct ypmaplist * __objp)); -extern bool_t xdr_domainname(XDR *, domainname*); +extern bool_t xdr_domainname __P ((XDR *__xdrs, char ** __objp)); __END_DECLS