From 0c6cee5d656d933100b86b7d58803bdbd549e456 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 18 Aug 1998 23:27:30 +0000 Subject: [PATCH] Update. 1998-08-18 Ulrich Drepper * include/features.h: Define __USE_EXTERN_INLINES for recent enough gcc. * argp/argp.h: Define extern inline functions only if __USE_EXTERN_INLINES is defined. * libio/stdio.h: Likewise. * math/math.h: Likewise. * stdlib/stdlib.h: Likewise. * string/argz.h: Likewise. * sysdeps/generic/bits/sigset.h: Likewise. * sysdeps/unix/sysv/linux/bits/sigset.h: Likewise. * sysdeps/unix/sysv/sysv4/bits/sigset.h: Likewise. * sysdeps/wordsize-32/inttypes.h: Likewise. * sysdeps/wordsize-64/inttypes.h: Likewise. * wcsmbs/wchar.h: Likewise. * sysdeps/generic/bits/glob.c [_LIBC]: Define __stat using __xstat to allow compilation without optimization. 1998-08-14 Thorsten Kukuk * nis/nss_compat/compat-grp.c: Set errno to ENOENT if we have no more entries. * nis/nss_compat/compat-initgroups.c: Likewise. * nis/nss_compat/compat-pwd.c: Likewise. * nis/nss_compat/compat-spwd.c: Likewise. * nis/nss_nis/nis-alias.c: Likewise. * nis/nss_nis/nis-ethers.c: Likewise. * nis/nss_nis/nis-grp.c: Likewise. * nis/nss_nis/nis-hosts.c: Likewise. * nis/nss_nis/nis-initgroups.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-pwd.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-service.c: Likewise. * nis/nss_nis/nis-spwd.c: Likewise. * nis/rpcsvc/yp.h: Generate new without 1024 byte limits. * nis/ypclnt.c: Try binding dir only first time, could be to old. * nis/yp_xdr.c: Remove 1024 byte limit. * nis/ypupdate_xdr.c: Likewise. * nis/nss_nis/nis-publickey.c: Make sure, nobody could send wrong data. --- ChangeLog | 49 ++ argp/argp.h | 4 +- bits/sigset.h | 8 +- libio/stdio.h | 32 +- math/math.h | 2 +- nis/nss_compat/compat-grp.c | 27 +- nis/nss_compat/compat-initgroups.c | 17 +- nis/nss_compat/compat-pwd.c | 32 +- nis/nss_compat/compat-spwd.c | 28 +- nis/nss_nis/nis-alias.c | 4 +- nis/nss_nis/nis-ethers.c | 16 +- nis/nss_nis/nis-grp.c | 24 +- nis/nss_nis/nis-hosts.c | 1 + nis/nss_nis/nis-initgroups.c | 5 +- nis/nss_nis/nis-network.c | 23 +- nis/nss_nis/nis-proto.c | 25 +- nis/nss_nis/nis-publickey.c | 26 +- nis/nss_nis/nis-pwd.c | 24 +- nis/nss_nis/nis-rpc.c | 21 +- nis/nss_nis/nis-service.c | 17 +- nis/nss_nis/nis-spwd.c | 15 +- nis/rpcsvc/yp.h | 958 ++++++++++++---------------------- nis/yp_xdr.c | 642 +++++++++++------------ nis/ypclnt.c | 4 +- nis/ypupdate_xdr.c | 46 +- stdlib/stdlib.h | 5 +- string/argz.h | 4 +- sysdeps/generic/bits/sigset.h | 8 +- sysdeps/generic/glob.c | 1 + sysdeps/unix/sysv/linux/bits/sigset.h | 6 +- sysdeps/unix/sysv/sysv4/bits/sigset.h | 8 +- sysdeps/wordsize-32/inttypes.h | 4 +- sysdeps/wordsize-64/inttypes.h | 4 +- wcsmbs/wchar.h | 2 +- 34 files changed, 989 insertions(+), 1103 deletions(-) rewrite nis/rpcsvc/yp.h (76%) rewrite nis/yp_xdr.c (76%) diff --git a/ChangeLog b/ChangeLog index 982f148016..2f51192fd7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,52 @@ +1998-08-18 Ulrich Drepper + + * include/features.h: Define __USE_EXTERN_INLINES for recent + enough gcc. + * argp/argp.h: Define extern inline functions only if + __USE_EXTERN_INLINES is defined. + * libio/stdio.h: Likewise. + * math/math.h: Likewise. + * stdlib/stdlib.h: Likewise. + * string/argz.h: Likewise. + * sysdeps/generic/bits/sigset.h: Likewise. + * sysdeps/unix/sysv/linux/bits/sigset.h: Likewise. + * sysdeps/unix/sysv/sysv4/bits/sigset.h: Likewise. + * sysdeps/wordsize-32/inttypes.h: Likewise. + * sysdeps/wordsize-64/inttypes.h: Likewise. + * wcsmbs/wchar.h: Likewise. + + * sysdeps/generic/bits/glob.c [_LIBC]: Define __stat using __xstat + to allow compilation without optimization. + +1998-08-14 Thorsten Kukuk + + * nis/nss_compat/compat-grp.c: Set errno to ENOENT if we have no + more entries. + * nis/nss_compat/compat-initgroups.c: Likewise. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + * nis/nss_nis/nis-alias.c: Likewise. + * nis/nss_nis/nis-ethers.c: Likewise. + * nis/nss_nis/nis-grp.c: Likewise. + * nis/nss_nis/nis-hosts.c: Likewise. + * nis/nss_nis/nis-initgroups.c: Likewise. + * nis/nss_nis/nis-network.c: Likewise. + * nis/nss_nis/nis-proto.c: Likewise. + * nis/nss_nis/nis-pwd.c: Likewise. + * nis/nss_nis/nis-rpc.c: Likewise. + * nis/nss_nis/nis-service.c: Likewise. + * nis/nss_nis/nis-spwd.c: Likewise. + + * nis/rpcsvc/yp.h: Generate new without 1024 byte limits. + + * nis/ypclnt.c: Try binding dir only first time, could be to old. + + * nis/yp_xdr.c: Remove 1024 byte limit. + * nis/ypupdate_xdr.c: Likewise. + + * nis/nss_nis/nis-publickey.c: Make sure, nobody could send + wrong data. + 1998-08-18 Roland McGrath * Rules (binaries-static, binaries-shared static pattern rules): diff --git a/argp/argp.h b/argp/argp.h index 780c45f69c..8b6485e80e 100644 --- a/argp/argp.h +++ b/argp/argp.h @@ -521,7 +521,7 @@ extern void *_argp_input __P ((__const struct argp *argp, extern void *__argp_input __P ((__const struct argp *argp, __const struct argp_state *state)); -#ifdef __OPTIMIZE__ +#ifdef __USE_EXTERN_INLINES # if !_LIBC # define __argp_usage argp_usage @@ -564,7 +564,7 @@ __option_is_end (__const struct argp_option *__opt) # undef __option_is_short # undef __option_is_end # endif -#endif /* __OPTIMIZE__ */ +#endif /* Use extern inlines. */ #ifdef __cplusplus } diff --git a/bits/sigset.h b/bits/sigset.h index c442d53643..a57458dd28 100644 --- a/bits/sigset.h +++ b/bits/sigset.h @@ -38,7 +38,7 @@ typedef unsigned long int __sigset_t; #define _SIGSET_H_fns 1 #ifndef _EXTERN_INLINE -#define _EXTERN_INLINE extern __inline +# define _EXTERN_INLINE extern __inline #endif /* Return a mask that includes SIG only. The cast to `sigset_t' avoids @@ -63,7 +63,8 @@ extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); -#define __SIGSETFN(NAME, BODY, CONST) \ +#ifdef __USE_EXTERN_INLINES +# define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ { \ @@ -75,7 +76,8 @@ __SIGSETFN (__sigismember, (*__set & __mask) ? 1 : 0, __const) __SIGSETFN (__sigaddset, ((*__set |= __mask), 0), ) __SIGSETFN (__sigdelset, ((*__set &= ~__mask), 0), ) -#undef __SIGSETFN +# undef __SIGSETFN +#endif #endif /* ! _SIGSET_H_fns. */ diff --git a/libio/stdio.h b/libio/stdio.h index e7b167d848..4d01061b3e 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -279,13 +279,13 @@ extern int vsprintf __P ((char *__restrict __s, __const char *__restrict __format, _G_va_list __arg)); -#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ +#ifdef __USE_EXTERN_INLINES __STDIO_INLINE int vprintf (__const char *__restrict __fmt, _G_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } -#endif /* Optimizing. */ +#endif /* Use extern inlines. */ #if defined __USE_BSD || defined __USE_ISOC9X || defined __USE_UNIX98 /* Maximum chars of output to write in MAXLEN. */ @@ -368,20 +368,20 @@ extern int getchar __P ((void)); optimization for it. */ #define getc(_fp) _IO_getc (_fp) -#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ +#ifdef __USE_EXTERN_INLINES __STDIO_INLINE int getchar (void) { return _IO_getc (stdin); } -#endif /* Optimizing. */ +#endif /* Use extern inlines. */ #if defined __USE_POSIX || defined __USE_MISC /* These are defined in POSIX.1:1996. */ extern int getc_unlocked __P ((FILE *__stream)); extern int getchar_unlocked __P ((void)); -# ifdef __OPTIMIZE__ +# ifdef __USE_EXTERN_INLINES __STDIO_INLINE int getc_unlocked (FILE *__fp) { @@ -393,7 +393,7 @@ getchar_unlocked (void) { return _IO_getc_unlocked (stdin); } -# endif /* Optimizing. */ +# endif /* Use extern inlines. */ #endif /* Use POSIX or MISC. */ @@ -408,25 +408,25 @@ extern int putchar __P ((int __c)); so we always do the optimization for it. */ #define putc(_ch, _fp) _IO_putc (_ch, _fp) -#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ +#ifdef __USE_EXTERN_INLINES __STDIO_INLINE int putchar (int __c) { return _IO_putc (__c, stdout); } -#endif +#endif /* Use extern inlines. */ #ifdef __USE_MISC /* Faster version when locking is not necessary. */ extern int fputc_unlocked __P ((int __c, FILE *__stream)); -# ifdef __OPTIMIZE__ +# ifdef __USE_EXTERN_INLINES __STDIO_INLINE int fputc_unlocked (int __c, FILE *__stream) { return _IO_putc_unlocked (__c, __stream); } -# endif /* Optimizing. */ +# endif /* Use extern inlines. */ #endif /* Use MISC. */ #if defined __USE_POSIX || defined __USE_MISC @@ -434,7 +434,7 @@ fputc_unlocked (int __c, FILE *__stream) extern int putc_unlocked __P ((int __c, FILE *__stream)); extern int putchar_unlocked __P ((int __c)); -# ifdef __OPTIMIZE__ +# ifdef __USE_EXTERN_INLINES __STDIO_INLINE int putc_unlocked (int __c, FILE *__stream) { @@ -446,7 +446,7 @@ putchar_unlocked (int __c) { return _IO_putc_unlocked (__c, stdout); } -# endif /* Optimizing. */ +# endif /* Use extern inlines. */ #endif /* Use POSIX or MISC. */ @@ -489,13 +489,13 @@ extern _IO_ssize_t getdelim __P ((char **__lineptr, size_t *__n, extern _IO_ssize_t getline __P ((char **__lineptr, size_t *__n, FILE *__stream)); -# if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ +# ifdef __USE_EXTERN_INLINES __STDIO_INLINE _IO_ssize_t getline (char **__lineptr, size_t *__n, FILE *__stream) { return __getdelim (__lineptr, __n, '\n', __stream); } -# endif /* Optimizing. */ +# endif /* Use extern inlines. */ #endif @@ -614,7 +614,7 @@ extern void clearerr_unlocked __P ((FILE *__stream)); extern int feof_unlocked __P ((FILE *__stream)); extern int ferror_unlocked __P ((FILE *__stream)); -# ifdef __OPTIMIZE__ +# ifdef __USE_EXTERN_INLINES __STDIO_INLINE int feof_unlocked (FILE *__stream) { @@ -626,7 +626,7 @@ ferror_unlocked (FILE *__stream) { return _IO_ferror_unlocked (__stream); } -# endif /* Optimizing. */ +# endif /* Use extern inlines. */ #endif diff --git a/math/math.h b/math/math.h index 2ac6f11032..5381f29e9a 100644 --- a/math/math.h +++ b/math/math.h @@ -306,7 +306,7 @@ extern int matherr __P ((struct exception *__exc)); /* Get machine-dependent inline versions (if there are any). */ -#ifdef __OPTIMIZE__ +#ifdef __USE_EXTERN_INLINES # include #endif diff --git a/nis/nss_compat/compat-grp.c b/nis/nss_compat/compat-grp.c index ca5abc4d2c..3ef2039e84 100644 --- a/nis/nss_compat/compat-grp.c +++ b/nis/nss_compat/compat-grp.c @@ -246,6 +246,7 @@ getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, if (yp_get_default_domain (&domain) != YPERR_SUCCESS) { ent->nis = 0; + *errnop = ENOENT; return NSS_STATUS_NOTFOUND; } @@ -285,6 +286,7 @@ getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, != YPERR_SUCCESS) { ent->nis = 0; + *errnop = ENOENT; return NSS_STATUS_NOTFOUND; } @@ -440,7 +442,10 @@ getgrnam_plusgroup (const char *name, struct group *result, char *buffer, if (yp_match (domain, "group.byname", name, strlen (name), &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (buflen < ((size_t) outvallen + 1)) { @@ -485,7 +490,10 @@ getgrent_next_file (struct group *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -625,7 +633,10 @@ internal_getgrnam_r (const char *name, struct group *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -667,7 +678,10 @@ internal_getgrnam_r (const char *name, struct group *result, ent_t *ent, if (result->gr_name[0] == '-' && result->gr_name[1] != '\0') { if (strcmp (&result->gr_name[1], name) == 0) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } else continue; } @@ -828,7 +842,10 @@ internal_getgrgid_r (gid_t gid, struct group *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c index 9def98ba52..97ddaeebab 100644 --- a/nis/nss_compat/compat-initgroups.c +++ b/nis/nss_compat/compat-initgroups.c @@ -228,6 +228,7 @@ getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, &outval, &outvallen) != YPERR_SUCCESS) { ent->nis = 0; + *errnop = ENOENT; return NSS_STATUS_UNAVAIL; } @@ -252,6 +253,7 @@ getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, != YPERR_SUCCESS) { ent->nis = 0; + *errnop = ENOENT; return NSS_STATUS_NOTFOUND; } @@ -403,11 +405,17 @@ getgrnam_plusgroup (const char *name, struct group *result, char *buffer, int outvallen; if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (yp_match (domain, "group.byname", name, strlen (name), &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (buflen < ((size_t) outvallen + 1)) { @@ -452,7 +460,10 @@ getgrent_next_file (struct group *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); diff --git a/nis/nss_compat/compat-pwd.c b/nis/nss_compat/compat-pwd.c index eec2634f3a..4cbf739d05 100644 --- a/nis/nss_compat/compat-pwd.c +++ b/nis/nss_compat/compat-pwd.c @@ -681,6 +681,7 @@ getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer, { ent->nis = 0; give_pwd_free (&ent->pwd); + *errnop = ENOENT; return NSS_STATUS_NOTFOUND; } @@ -790,7 +791,10 @@ getpwnam_plususer (const char *name, struct passwd *result, char *buffer, if (yp_match (domain, "passwd.byname", name, strlen (name), &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (buflen < ((size_t) outvallen + 1)) { @@ -840,7 +844,10 @@ getpwent_next_file (struct passwd *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -915,7 +922,11 @@ getpwent_next_file (struct passwd *result, ent_t *ent, if (status == NSS_STATUS_RETURN) continue; else - return status; + { + if (status == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + return status; + } } /* -user */ @@ -1051,7 +1062,10 @@ internal_getpwnam_r (const char *name, struct passwd *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -1146,7 +1160,10 @@ internal_getpwnam_r (const char *name, struct passwd *result, ent_t *ent, && result->pw_name[1] != '@') { if (strcmp (&result->pw_name[1], name) == 0) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } else continue; } @@ -1196,7 +1213,10 @@ _nss_compat_getpwnam_r (const char *name, struct passwd *pwd, enum nss_status status; if (name[0] == '-' || name[0] == '+') - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } __libc_lock_lock (lock); diff --git a/nis/nss_compat/compat-spwd.c b/nis/nss_compat/compat-spwd.c index 1d4216393a..cf117fa964 100644 --- a/nis/nss_compat/compat-spwd.c +++ b/nis/nss_compat/compat-spwd.c @@ -631,6 +631,7 @@ getspent_next_nis (struct spwd *result, ent_t *ent, { ent->nis = 0; give_spwd_free (&ent->pwd); + *errnop = ENOENT; return NSS_STATUS_NOTFOUND; } @@ -736,12 +737,16 @@ getspnam_plususer (const char *name, struct spwd *result, char *buffer, int outvallen; if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (yp_match (domain, "shadow.byname", name, strlen (name), &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (buflen < ((size_t) outvallen + 1)) { free (outval); @@ -791,7 +796,10 @@ getspent_next_file (struct spwd *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -999,7 +1007,10 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent, buffer[buflen - 1] = '\xff'; p = fgets (buffer, buflen, ent->stream); if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } if (p == NULL || buffer[buflen - 1] != '\xff') { fsetpos (ent->stream, &pos); @@ -1050,7 +1061,10 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent, { if (user != NULL && user[0] != '-') if (strcmp (user, name) == 0) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } __internal_endnetgrent (&netgrdata); continue; diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c index 50f08d2e0c..d1dc992c83 100644 --- a/nis/nss_nis/nis-alias.c +++ b/nis/nss_nis/nis-alias.c @@ -167,7 +167,9 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, &result, &len)); if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } diff --git a/nis/nss_nis/nis-ethers.c b/nis/nss_nis/nis-ethers.c index a5723747fc..c95f766469 100644 --- a/nis/nss_nis/nis-ethers.c +++ b/nis/nss_nis/nis-ethers.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -158,7 +158,10 @@ internal_nis_getetherent_r (struct ether *eth, char *buffer, size_t buflen, char *p; if (next == NULL) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } p = strncpy (buffer, next->val, buflen); while (isspace (*p)) @@ -212,7 +215,9 @@ _nss_nis_gethostton_r (const char *name, struct ether *eth, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -297,7 +302,10 @@ _nss_nis_getntohost_r (struct ether_addr *addr, struct ether *eth, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } diff --git a/nis/nss_nis/nis-grp.c b/nis/nss_nis/nis-grp.c index 40d45825e4..6dca66e4df 100644 --- a/nis/nss_nis/nis-grp.c +++ b/nis/nss_nis/nis-grp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -104,7 +104,9 @@ internal_nis_getgrent_r (struct group *grp, char *buffer, size_t buflen, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -178,7 +180,9 @@ _nss_nis_getgrnam_r (const char *name, struct group *grp, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = EAGAIN; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -202,7 +206,10 @@ _nss_nis_getgrnam_r (const char *name, struct group *grp, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = EAGAIN; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } @@ -227,7 +234,9 @@ _nss_nis_getgrgid_r (gid_t gid, struct group *grp, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -251,7 +260,10 @@ _nss_nis_getgrgid_r (gid_t gid, struct group *grp, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } diff --git a/nis/nss_nis/nis-hosts.c b/nis/nss_nis/nis-hosts.c index 4abc613bbb..d791b98b3e 100644 --- a/nis/nss_nis/nis-hosts.c +++ b/nis/nss_nis/nis-hosts.c @@ -176,6 +176,7 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer, *h_errnop = TRY_AGAIN; break; case NSS_STATUS_NOTFOUND: + *errnop = ENOENT; *h_errnop = HOST_NOT_FOUND; break; default: diff --git a/nis/nss_nis/nis-initgroups.c b/nis/nss_nis/nis-initgroups.c index 5960c80502..b69fea4e85 100644 --- a/nis/nss_nis/nis-initgroups.c +++ b/nis/nss_nis/nis-initgroups.c @@ -112,7 +112,10 @@ internal_getgrent_r (struct group *grp, char *buffer, size_t buflen, do { if (intern->next == NULL) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } p = strncpy (buffer, intern->next->val, buflen); while (isspace (*p)) ++p; diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c index 802c03229e..7a1b65e584 100644 --- a/nis/nss_nis/nis-network.c +++ b/nis/nss_nis/nis-network.c @@ -104,7 +104,9 @@ internal_nis_getnetent_r (struct netent *net, char *buffer, size_t buflen, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) { *herrnop = NETDB_INTERNAL; *errnop = errno; @@ -203,7 +205,9 @@ _nss_nis_getnetbyname_r (const char *name, struct netent *net, char *buffer, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) { *errnop = errno; *herrnop = NETDB_INTERNAL; @@ -233,7 +237,10 @@ _nss_nis_getnetbyname_r (const char *name, struct netent *net, char *buffer, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else return NSS_STATUS_SUCCESS; @@ -281,7 +288,10 @@ _nss_nis_getnetbyaddr_r (unsigned long addr, int type, struct netent *net, continue; } else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else { @@ -313,7 +323,10 @@ _nss_nis_getnetbyaddr_r (unsigned long addr, int type, struct netent *net, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nis/nis-proto.c b/nis/nss_nis/nis-proto.c index 3af0f4e896..e65bfa7c8d 100644 --- a/nis/nss_nis/nis-proto.c +++ b/nis/nss_nis/nis-proto.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -150,7 +150,10 @@ internal_nis_getprotoent_r (struct protoent *proto, char *p; if (next == NULL) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } p = strncpy (buffer, next->val, buflen); while (isspace (*p)) @@ -204,7 +207,9 @@ _nss_nis_getprotobyname_r (const char *name, struct protoent *proto, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -228,7 +233,10 @@ _nss_nis_getprotobyname_r (const char *name, struct protoent *proto, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } @@ -253,7 +261,9 @@ _nss_nis_getprotobynumber_r (int number, struct protoent *proto, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -277,7 +287,10 @@ _nss_nis_getprotobynumber_r (int number, struct protoent *proto, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } diff --git a/nis/nss_nis/nis-publickey.c b/nis/nss_nis/nis-publickey.c index 1ab041f435..73afd442a9 100644 --- a/nis/nss_nis/nis-publickey.c +++ b/nis/nss_nis/nis-publickey.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -30,7 +30,9 @@ extern int xdecrypt (char *, char *); #include "nss-nis.h" -/* If we haven't found the entry, we give a SUCCESS and an empty key back. */ +/* If we haven't found the entry, we give a SUCCESS and an empty key back. + Solaris docu says: sizeof (pkey) == HEXKEYBYTES + 1. +*/ enum nss_status _nss_nis_getpublickey (const char *netname, char *pkey, int *errnop) { @@ -56,7 +58,9 @@ _nss_nis_getpublickey (const char *netname, char *pkey, int *errnop) if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -66,7 +70,8 @@ _nss_nis_getpublickey (const char *netname, char *pkey, int *errnop) char *p = strchr (result, ':'); if (p != NULL) *p = 0; - strcpy (pkey, result); + strncpy (pkey, result, HEXKEYBYTES + 1); + pkey[HEXKEYBYTES] = '\0'; } return NSS_STATUS_SUCCESS; } @@ -76,7 +81,7 @@ _nss_nis_getsecretkey (const char *netname, char *skey, char *passwd, int *errnop) { enum nss_status retval; - char buf[1024]; + char buf[2 * (HEXKEYBYTES + 1)]; char *domain, *result; int len; @@ -98,7 +103,9 @@ _nss_nis_getsecretkey (const char *netname, char *skey, char *passwd, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -109,15 +116,16 @@ _nss_nis_getsecretkey (const char *netname, char *skey, char *passwd, if (p == NULL) return NSS_STATUS_SUCCESS; - p++; - strcpy (buf, p); + ++p; + strncpy (buf, p, 2 * (HEXKEYBYTES + 1)); + buf[2 * (HEXKEYBYTES + 1)] = '\0'; if (!xdecrypt (buf, passwd)) return NSS_STATUS_SUCCESS; if (memcmp (buf, &(buf[HEXKEYBYTES]), KEYCHECKSUMSIZE) != 0) return NSS_STATUS_SUCCESS; - buf[HEXKEYBYTES] = 0; + buf[HEXKEYBYTES] = '\0'; strcpy (skey, buf); } return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nis/nis-pwd.c b/nis/nss_nis/nis-pwd.c index b70091508c..614637a173 100644 --- a/nis/nss_nis/nis-pwd.c +++ b/nis/nss_nis/nis-pwd.c @@ -106,7 +106,9 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -231,7 +233,9 @@ _nss_nis_getpwnam_r (const char *name, struct passwd *pwd, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -302,7 +306,10 @@ _nss_nis_getpwnam_r (const char *name, struct passwd *pwd, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else return NSS_STATUS_SUCCESS; @@ -329,7 +336,9 @@ _nss_nis_getpwuid_r (uid_t uid, struct passwd *pwd, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -400,8 +409,11 @@ _nss_nis_getpwuid_r (uid_t uid, struct passwd *pwd, { if (parse_res == -1) return NSS_STATUS_TRYAGAIN; - else - return NSS_STATUS_NOTFOUND; + else + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nis/nis-rpc.c b/nis/nss_nis/nis-rpc.c index 879e90af6d..a56ad037fe 100644 --- a/nis/nss_nis/nis-rpc.c +++ b/nis/nss_nis/nis-rpc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -167,7 +167,10 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen, do { if (data->next == NULL) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } p = strncpy (buffer, data->next->val, buflen); while (isspace (*p)) ++p; @@ -242,7 +245,10 @@ _nss_nis_getrpcbyname_r (const char *name, struct rpcent *rpc, internal_nis_endrpcent (&data); if (!found && status == NSS_STATUS_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } else return status; } @@ -267,7 +273,9 @@ _nss_nis_getrpcbynumber_r (int number, struct rpcent *rpc, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -292,7 +300,10 @@ _nss_nis_getrpcbynumber_r (int number, struct rpcent *rpc, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } else return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nis/nis-service.c b/nis/nss_nis/nis-service.c index dfae9f7be2..fac62a9679 100644 --- a/nis/nss_nis/nis-service.c +++ b/nis/nss_nis/nis-service.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -166,7 +166,10 @@ internal_nis_getservent_r (struct servent *serv, char *buffer, do { if (data->next == NULL) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } p = strncpy (buffer, data->next->val, buflen); while (isspace (*p)) ++p; @@ -236,7 +239,10 @@ _nss_nis_getservbyname_r (const char *name, char *protocol, internal_nis_endservent (&data); if (!found && status == NSS_STATUS_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } else return status; } @@ -270,7 +276,10 @@ _nss_nis_getservbyport_r (int port, char *protocol, struct servent *serv, internal_nis_endservent (&data); if (!found && status == NSS_STATUS_SUCCESS) - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } else return status; } diff --git a/nis/nss_nis/nis-spwd.c b/nis/nss_nis/nis-spwd.c index 452f91dc0b..37ea2f9dbf 100644 --- a/nis/nss_nis/nis-spwd.c +++ b/nis/nss_nis/nis-spwd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -104,7 +104,9 @@ internal_nis_getspent_r (struct spwd *sp, char *buffer, size_t buflen, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -178,7 +180,9 @@ _nss_nis_getspnam_r (const char *name, struct spwd *sp, if (retval != NSS_STATUS_SUCCESS) { - if (retval == NSS_STATUS_TRYAGAIN) + if (retval == NSS_STATUS_NOTFOUND) + *errnop = ENOENT; + else if (retval == NSS_STATUS_TRYAGAIN) *errnop = errno; return retval; } @@ -202,7 +206,10 @@ _nss_nis_getspnam_r (const char *name, struct spwd *sp, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; else - return NSS_STATUS_NOTFOUND; + { + *errnop = ENOENT; + return NSS_STATUS_NOTFOUND; + } } return NSS_STATUS_SUCCESS; } diff --git a/nis/rpcsvc/yp.h b/nis/rpcsvc/yp.h dissimilarity index 76% index 40914c5813..556e57476f 100644 --- a/nis/rpcsvc/yp.h +++ b/nis/rpcsvc/yp.h @@ -1,621 +1,337 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * 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 - */ - -#ifndef __RPCSVC_YP_H__ -#define __RPCSVC_YP_H__ - -#include - -#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; -#ifdef __cplusplus -extern "C" bool_t xdr_ypstat(XDR *, ypstat*); -#elif __STDC__ -extern bool_t xdr_ypstat(XDR *, ypstat*); -#else /* Old Style C */ -bool_t xdr_ypstat(); -#endif /* Old Style C */ - - -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; -#ifdef __cplusplus -extern "C" bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); -#elif __STDC__ -extern bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); -#else /* Old Style C */ -bool_t xdr_ypxfrstat(); -#endif /* Old Style C */ - - -typedef char *domainname; -#ifdef __cplusplus -extern "C" bool_t xdr_domainname(XDR *, domainname*); -#elif __STDC__ -extern bool_t xdr_domainname(XDR *, domainname*); -#else /* Old Style C */ -bool_t xdr_domainname(); -#endif /* Old Style C */ - - -typedef char *mapname; -#ifdef __cplusplus -extern "C" bool_t xdr_mapname(XDR *, mapname*); -#elif __STDC__ -extern bool_t xdr_mapname(XDR *, mapname*); -#else /* Old Style C */ -bool_t xdr_mapname(); -#endif /* Old Style C */ - - -typedef char *peername; -#ifdef __cplusplus -extern "C" bool_t xdr_peername(XDR *, peername*); -#elif __STDC__ -extern bool_t xdr_peername(XDR *, peername*); -#else /* Old Style C */ -bool_t xdr_peername(); -#endif /* Old Style C */ - - -typedef struct { - u_int keydat_len; - char *keydat_val; -} keydat; -#ifdef __cplusplus -extern "C" bool_t xdr_keydat(XDR *, keydat*); -#elif __STDC__ -extern bool_t xdr_keydat(XDR *, keydat*); -#else /* Old Style C */ -bool_t xdr_keydat(); -#endif /* Old Style C */ - - -typedef struct { - u_int valdat_len; - char *valdat_val; -} valdat; -#ifdef __cplusplus -extern "C" bool_t xdr_valdat(XDR *, valdat*); -#elif __STDC__ -extern bool_t xdr_valdat(XDR *, valdat*); -#else /* Old Style C */ -bool_t xdr_valdat(); -#endif /* Old Style C */ - - -struct ypmap_parms { - domainname domain; - mapname map; - u_int ordernum; - peername peer; -}; -typedef struct ypmap_parms ypmap_parms; -#ifdef __cplusplus -extern "C" bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); -#elif __STDC__ -extern bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); -#else /* Old Style C */ -bool_t xdr_ypmap_parms(); -#endif /* Old Style C */ - - -struct ypreq_key { - domainname domain; - mapname map; - keydat key; -}; -typedef struct ypreq_key ypreq_key; -#ifdef __cplusplus -extern "C" bool_t xdr_ypreq_key(XDR *, ypreq_key*); -#elif __STDC__ -extern bool_t xdr_ypreq_key(XDR *, ypreq_key*); -#else /* Old Style C */ -bool_t xdr_ypreq_key(); -#endif /* Old Style C */ - - -struct ypreq_nokey { - domainname domain; - mapname map; -}; -typedef struct ypreq_nokey ypreq_nokey; -#ifdef __cplusplus -extern "C" bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); -#elif __STDC__ -extern bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); -#else /* Old Style C */ -bool_t xdr_ypreq_nokey(); -#endif /* Old Style C */ - - -struct ypreq_xfr { - ypmap_parms map_parms; - u_int transid; - u_int prog; - u_int port; -}; -typedef struct ypreq_xfr ypreq_xfr; -#ifdef __cplusplus -extern "C" bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); -#elif __STDC__ -extern bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); -#else /* Old Style C */ -bool_t xdr_ypreq_xfr(); -#endif /* Old Style C */ - - -struct ypresp_val { - ypstat stat; - valdat val; -}; -typedef struct ypresp_val ypresp_val; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_val(XDR *, ypresp_val*); -#elif __STDC__ -extern bool_t xdr_ypresp_val(XDR *, ypresp_val*); -#else /* Old Style C */ -bool_t xdr_ypresp_val(); -#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 -extern "C" bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); -#elif __STDC__ -extern bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); -#else /* Old Style C */ -bool_t xdr_ypresp_key_val(); -#endif /* Old Style C */ - - -struct ypresp_master { - ypstat stat; - peername peer; -}; -typedef struct ypresp_master ypresp_master; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_master(XDR *, ypresp_master*); -#elif __STDC__ -extern bool_t xdr_ypresp_master(XDR *, ypresp_master*); -#else /* Old Style C */ -bool_t xdr_ypresp_master(); -#endif /* Old Style C */ - - -struct ypresp_order { - ypstat stat; - u_int ordernum; -}; -typedef struct ypresp_order ypresp_order; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_order(XDR *, ypresp_order*); -#elif __STDC__ -extern bool_t xdr_ypresp_order(XDR *, ypresp_order*); -#else /* Old Style C */ -bool_t xdr_ypresp_order(); -#endif /* Old Style C */ - - -struct ypresp_all { - bool_t more; - union { - ypresp_key_val val; - } ypresp_all_u; -}; -typedef struct ypresp_all ypresp_all; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_all(XDR *, ypresp_all*); -#elif __STDC__ -extern bool_t xdr_ypresp_all(XDR *, ypresp_all*); -#else /* Old Style C */ -bool_t xdr_ypresp_all(); -#endif /* Old Style C */ - - -struct ypresp_xfr { - u_int transid; - ypxfrstat xfrstat; -}; -typedef struct ypresp_xfr ypresp_xfr; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); -#elif __STDC__ -extern bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); -#else /* Old Style C */ -bool_t xdr_ypresp_xfr(); -#endif /* Old Style C */ - - -struct ypmaplist { - mapname map; - struct ypmaplist *next; -}; -typedef struct ypmaplist ypmaplist; -#ifdef __cplusplus -extern "C" bool_t xdr_ypmaplist(XDR *, ypmaplist*); -#elif __STDC__ -extern bool_t xdr_ypmaplist(XDR *, ypmaplist*); -#else /* Old Style C */ -bool_t xdr_ypmaplist(); -#endif /* Old Style C */ - - -struct ypresp_maplist { - ypstat stat; - ypmaplist *maps; -}; -typedef struct ypresp_maplist ypresp_maplist; -#ifdef __cplusplus -extern "C" bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); -#elif __STDC__ -extern bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); -#else /* Old Style C */ -bool_t xdr_ypresp_maplist(); -#endif /* Old Style C */ - - -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; -#ifdef __cplusplus -extern "C" bool_t xdr_yppush_status(XDR *, yppush_status*); -#elif __STDC__ -extern bool_t xdr_yppush_status(XDR *, yppush_status*); -#else /* Old Style C */ -bool_t xdr_yppush_status(); -#endif /* Old Style C */ - - -struct yppushresp_xfr { - u_int transid; - yppush_status status; -}; -typedef struct yppushresp_xfr yppushresp_xfr; -#ifdef __cplusplus -extern "C" bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); -#elif __STDC__ -extern bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); -#else /* Old Style C */ -bool_t xdr_yppushresp_xfr(); -#endif /* Old Style C */ - - -enum ypbind_resptype { - YPBIND_SUCC_VAL = 1, - YPBIND_FAIL_VAL = 2, -}; -typedef enum ypbind_resptype ypbind_resptype; -#ifdef __cplusplus -extern "C" bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); -#elif __STDC__ -extern bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); -#else /* Old Style C */ -bool_t xdr_ypbind_resptype(); -#endif /* Old Style C */ - - -struct ypbind_binding { - char ypbind_binding_addr[4]; - char ypbind_binding_port[2]; -}; -typedef struct ypbind_binding ypbind_binding; -#ifdef __cplusplus -extern "C" bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); -#elif __STDC__ -extern bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); -#else /* Old Style C */ -bool_t xdr_ypbind_binding(); -#endif /* Old Style C */ - - -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; -#ifdef __cplusplus -extern "C" bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); -#elif __STDC__ -extern bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); -#else /* Old Style C */ -bool_t xdr_ypbind_resp(); -#endif /* Old Style C */ - -#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; -#ifdef __cplusplus -extern "C" bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); -#elif __STDC__ -extern bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); -#else /* Old Style C */ -bool_t xdr_ypbind_setdom(); -#endif /* Old Style C */ - - -#define YPPROG ((u_long)100004) -#define YPVERS ((u_long)2) - -#ifdef __cplusplus -#define YPPROC_NULL ((u_long)0) -extern "C" void * ypproc_null_2(void *, CLIENT *); -extern "C" void * ypproc_null_2_svc(void *, struct svc_req *); -#define YPPROC_DOMAIN ((u_long)1) -extern "C" bool_t * ypproc_domain_2(domainname *, CLIENT *); -extern "C" bool_t * ypproc_domain_2_svc(domainname *, struct svc_req *); -#define YPPROC_DOMAIN_NONACK ((u_long)2) -extern "C" bool_t * ypproc_domain_nonack_2(domainname *, CLIENT *); -extern "C" bool_t * ypproc_domain_nonack_2_svc(domainname *, struct svc_req *); -#define YPPROC_MATCH ((u_long)3) -extern "C" ypresp_val * ypproc_match_2(ypreq_key *, CLIENT *); -extern "C" ypresp_val * ypproc_match_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_FIRST ((u_long)4) -extern "C" ypresp_key_val * ypproc_first_2(ypreq_key *, CLIENT *); -extern "C" ypresp_key_val * ypproc_first_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_NEXT ((u_long)5) -extern "C" ypresp_key_val * ypproc_next_2(ypreq_key *, CLIENT *); -extern "C" ypresp_key_val * ypproc_next_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_XFR ((u_long)6) -extern "C" ypresp_xfr * ypproc_xfr_2(ypreq_xfr *, CLIENT *); -extern "C" ypresp_xfr * ypproc_xfr_2_svc(ypreq_xfr *, struct svc_req *); -#define YPPROC_CLEAR ((u_long)7) -extern "C" void * ypproc_clear_2(void *, CLIENT *); -extern "C" void * ypproc_clear_2_svc(void *, struct svc_req *); -#define YPPROC_ALL ((u_long)8) -extern "C" ypresp_all * ypproc_all_2(ypreq_nokey *, CLIENT *); -extern "C" ypresp_all * ypproc_all_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_MASTER ((u_long)9) -extern "C" ypresp_master * ypproc_master_2(ypreq_nokey *, CLIENT *); -extern "C" ypresp_master * ypproc_master_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_ORDER ((u_long)10) -extern "C" ypresp_order * ypproc_order_2(ypreq_nokey *, CLIENT *); -extern "C" ypresp_order * ypproc_order_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_MAPLIST ((u_long)11) -extern "C" ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *); -extern "C" ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *); - -#elif __STDC__ -#define YPPROC_NULL ((u_long)0) -extern void * ypproc_null_2(void *, CLIENT *); -extern void * ypproc_null_2_svc(void *, struct svc_req *); -#define YPPROC_DOMAIN ((u_long)1) -extern bool_t * ypproc_domain_2(domainname *, CLIENT *); -extern bool_t * ypproc_domain_2_svc(domainname *, struct svc_req *); -#define YPPROC_DOMAIN_NONACK ((u_long)2) -extern bool_t * ypproc_domain_nonack_2(domainname *, CLIENT *); -extern bool_t * ypproc_domain_nonack_2_svc(domainname *, struct svc_req *); -#define YPPROC_MATCH ((u_long)3) -extern ypresp_val * ypproc_match_2(ypreq_key *, CLIENT *); -extern ypresp_val * ypproc_match_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_FIRST ((u_long)4) -extern ypresp_key_val * ypproc_first_2(ypreq_key *, CLIENT *); -extern ypresp_key_val * ypproc_first_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_NEXT ((u_long)5) -extern ypresp_key_val * ypproc_next_2(ypreq_key *, CLIENT *); -extern ypresp_key_val * ypproc_next_2_svc(ypreq_key *, struct svc_req *); -#define YPPROC_XFR ((u_long)6) -extern ypresp_xfr * ypproc_xfr_2(ypreq_xfr *, CLIENT *); -extern ypresp_xfr * ypproc_xfr_2_svc(ypreq_xfr *, struct svc_req *); -#define YPPROC_CLEAR ((u_long)7) -extern void * ypproc_clear_2(void *, CLIENT *); -extern void * ypproc_clear_2_svc(void *, struct svc_req *); -#define YPPROC_ALL ((u_long)8) -extern ypresp_all * ypproc_all_2(ypreq_nokey *, CLIENT *); -extern ypresp_all * ypproc_all_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_MASTER ((u_long)9) -extern ypresp_master * ypproc_master_2(ypreq_nokey *, CLIENT *); -extern ypresp_master * ypproc_master_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_ORDER ((u_long)10) -extern ypresp_order * ypproc_order_2(ypreq_nokey *, CLIENT *); -extern ypresp_order * ypproc_order_2_svc(ypreq_nokey *, struct svc_req *); -#define YPPROC_MAPLIST ((u_long)11) -extern ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *); -extern ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *); - -#else /* Old Style C */ -#define YPPROC_NULL ((u_long)0) -extern void * ypproc_null_2(); -extern void * ypproc_null_2_svc(); -#define YPPROC_DOMAIN ((u_long)1) -extern bool_t * ypproc_domain_2(); -extern bool_t * ypproc_domain_2_svc(); -#define YPPROC_DOMAIN_NONACK ((u_long)2) -extern bool_t * ypproc_domain_nonack_2(); -extern bool_t * ypproc_domain_nonack_2_svc(); -#define YPPROC_MATCH ((u_long)3) -extern ypresp_val * ypproc_match_2(); -extern ypresp_val * ypproc_match_2_svc(); -#define YPPROC_FIRST ((u_long)4) -extern ypresp_key_val * ypproc_first_2(); -extern ypresp_key_val * ypproc_first_2_svc(); -#define YPPROC_NEXT ((u_long)5) -extern ypresp_key_val * ypproc_next_2(); -extern ypresp_key_val * ypproc_next_2_svc(); -#define YPPROC_XFR ((u_long)6) -extern ypresp_xfr * ypproc_xfr_2(); -extern ypresp_xfr * ypproc_xfr_2_svc(); -#define YPPROC_CLEAR ((u_long)7) -extern void * ypproc_clear_2(); -extern void * ypproc_clear_2_svc(); -#define YPPROC_ALL ((u_long)8) -extern ypresp_all * ypproc_all_2(); -extern ypresp_all * ypproc_all_2_svc(); -#define YPPROC_MASTER ((u_long)9) -extern ypresp_master * ypproc_master_2(); -extern ypresp_master * ypproc_master_2_svc(); -#define YPPROC_ORDER ((u_long)10) -extern ypresp_order * ypproc_order_2(); -extern ypresp_order * ypproc_order_2_svc(); -#define YPPROC_MAPLIST ((u_long)11) -extern ypresp_maplist * ypproc_maplist_2(); -extern ypresp_maplist * ypproc_maplist_2_svc(); -#endif /* Old Style C */ - -#define YPPUSH_XFRRESPPROG ((u_long)0x40000000) -#define YPPUSH_XFRRESPVERS ((u_long)1) - -#ifdef __cplusplus -#define YPPUSHPROC_NULL ((u_long)0) -extern "C" void * yppushproc_null_1(void *, CLIENT *); -extern "C" void * yppushproc_null_1_svc(void *, struct svc_req *); -#define YPPUSHPROC_XFRRESP ((u_long)1) -extern "C" void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *); -extern "C" void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *); - -#elif __STDC__ -#define YPPUSHPROC_NULL ((u_long)0) -extern void * yppushproc_null_1(void *, CLIENT *); -extern void * yppushproc_null_1_svc(void *, struct svc_req *); -#define YPPUSHPROC_XFRRESP ((u_long)1) -extern void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *); -extern void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *); - -#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 */ - -#define YPBINDPROG ((u_long)100007) -#define YPBINDVERS ((u_long)2) - -#ifdef __cplusplus -#define YPBINDPROC_NULL ((u_long)0) -extern "C" void * ypbindproc_null_2(void *, CLIENT *); -extern "C" void * ypbindproc_null_2_svc(void *, struct svc_req *); -#define YPBINDPROC_DOMAIN ((u_long)1) -extern "C" ypbind_resp * ypbindproc_domain_2(domainname *, CLIENT *); -extern "C" ypbind_resp * ypbindproc_domain_2_svc(domainname *, struct svc_req *); -#define YPBINDPROC_SETDOM ((u_long)2) -extern "C" void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *); -extern "C" void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *); - -#elif __STDC__ -#define YPBINDPROC_NULL ((u_long)0) -extern void * ypbindproc_null_2(void *, CLIENT *); -extern void * ypbindproc_null_2_svc(void *, struct svc_req *); -#define YPBINDPROC_DOMAIN ((u_long)1) -extern ypbind_resp * ypbindproc_domain_2(domainname *, CLIENT *); -extern ypbind_resp * ypbindproc_domain_2_svc(domainname *, struct svc_req *); -#define YPBINDPROC_SETDOM ((u_long)2) -extern void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *); -extern void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *); - -#else /* Old Style C */ -#define YPBINDPROC_NULL ((u_long)0) -extern void * ypbindproc_null_2(); -extern void * ypbindproc_null_2_svc(); -#define YPBINDPROC_DOMAIN ((u_long)1) -extern ypbind_resp * ypbindproc_domain_2(); -extern ypbind_resp * ypbindproc_domain_2_svc(); -#define YPBINDPROC_SETDOM ((u_long)2) -extern void * ypbindproc_setdom_2(); -extern void * ypbindproc_setdom_2_svc(); -#endif /* Old Style C */ - -#endif /* !__RPCSVC_YP_H__ */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * 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 + */ + +#ifndef __RPCSVC_YP_H__ +#define __RPCSVC_YP_H__ + +#include +#include + +#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; + +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; + +typedef char *domainname; +typedef char *mapname; +typedef char *peername; + +typedef struct { + u_int keydat_len; + char *keydat_val; +} keydat; + +typedef struct { + u_int valdat_len; + char *valdat_val; +} valdat; + +struct ypmap_parms { + domainname domain; + mapname map; + u_int ordernum; + peername peer; +}; +typedef struct ypmap_parms ypmap_parms; + +struct ypreq_key { + domainname domain; + mapname map; + keydat key; +}; +typedef struct ypreq_key ypreq_key; + +struct ypreq_nokey { + domainname domain; + mapname map; +}; +typedef struct ypreq_nokey ypreq_nokey; + +struct ypreq_xfr { + ypmap_parms map_parms; + u_int transid; + u_int prog; + u_int port; +}; +typedef struct ypreq_xfr ypreq_xfr; + +struct ypresp_val { + ypstat stat; + valdat val; +}; +typedef struct ypresp_val ypresp_val; + +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; + +struct ypresp_master { + ypstat stat; + peername peer; +}; +typedef struct ypresp_master ypresp_master; + +struct ypresp_order { + ypstat stat; + u_int ordernum; +}; +typedef struct ypresp_order ypresp_order; + +struct ypresp_all { + bool_t more; + union { + ypresp_key_val val; + } ypresp_all_u; +}; +typedef struct ypresp_all ypresp_all; + +struct ypresp_xfr { + u_int transid; + ypxfrstat xfrstat; +}; +typedef struct ypresp_xfr ypresp_xfr; + +struct ypmaplist { + mapname map; + struct ypmaplist *next; +}; +typedef struct ypmaplist ypmaplist; + +struct ypresp_maplist { + ypstat stat; + ypmaplist *maps; +}; +typedef struct ypresp_maplist 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; + +struct yppushresp_xfr { + u_int transid; + yppush_status status; +}; +typedef struct yppushresp_xfr yppushresp_xfr; + +enum ypbind_resptype { + YPBIND_SUCC_VAL = 1, + YPBIND_FAIL_VAL = 2, +}; +typedef enum ypbind_resptype ypbind_resptype; + +struct ypbind_binding { + char ypbind_binding_addr[4]; + char ypbind_binding_port[2]; +}; +typedef struct ypbind_binding 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; + +#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; + +__BEGIN_DECLS + +#define YPPROG ((u_long)100004) +#define YPVERS ((u_long)2) + +#define YPPROC_NULL ((u_long)0) +extern void *ypproc_null_2 __P ((void *, CLIENT *)); +extern void *ypproc_null_2_svc __P ((void *, struct svc_req *)); +#define YPPROC_DOMAIN ((u_long)1) +extern bool_t *ypproc_domain_2 __P ((domainname *, CLIENT *)); +extern bool_t *ypproc_domain_2_svc __P ((domainname *, struct svc_req *)); +#define YPPROC_DOMAIN_NONACK ((u_long)2) +extern bool_t *ypproc_domain_nonack_2 __P ((domainname *, CLIENT *)); +extern bool_t *ypproc_domain_nonack_2_svc __P ((domainname *, struct svc_req *)); +#define YPPROC_MATCH ((u_long)3) +extern ypresp_val *ypproc_match_2 __P ((ypreq_key *, CLIENT *)); +extern ypresp_val *ypproc_match_2_svc __P ((ypreq_key *, struct svc_req *)); +#define YPPROC_FIRST ((u_long)4) +extern ypresp_key_val *ypproc_first_2 __P ((ypreq_key *, CLIENT *)); +extern ypresp_key_val *ypproc_first_2_svc __P ((ypreq_key *, struct svc_req *)); +#define YPPROC_NEXT ((u_long)5) +extern ypresp_key_val *ypproc_next_2 __P ((ypreq_key *, CLIENT *)); +extern ypresp_key_val *ypproc_next_2_svc __P ((ypreq_key *, struct svc_req *)); +#define YPPROC_XFR ((u_long)6) +extern ypresp_xfr *ypproc_xfr_2 __P ((ypreq_xfr *, CLIENT *)); +extern ypresp_xfr *ypproc_xfr_2_svc __P ((ypreq_xfr *, struct svc_req *)); +#define YPPROC_CLEAR ((u_long)7) +extern void *ypproc_clear_2 __P ((void *, CLIENT *)); +extern void *ypproc_clear_2_svc __P ((void *, struct svc_req *)); +#define YPPROC_ALL ((u_long)8) +extern ypresp_all *ypproc_all_2 __P ((ypreq_nokey *, CLIENT *)); +extern ypresp_all *ypproc_all_2_svc __P ((ypreq_nokey *, struct svc_req *)); +#define YPPROC_MASTER ((u_long)9) +extern ypresp_master *ypproc_master_2 __P ((ypreq_nokey *, CLIENT *)); +extern ypresp_master *ypproc_master_2_svc __P ((ypreq_nokey *, struct svc_req *)); +#define YPPROC_ORDER ((u_long)10) +extern ypresp_order *ypproc_order_2 __P ((ypreq_nokey *, CLIENT *)); +extern ypresp_order *ypproc_order_2_svc __P ((ypreq_nokey *, struct svc_req *)); +#define YPPROC_MAPLIST ((u_long)11) +extern ypresp_maplist *ypproc_maplist_2 __P ((domainname *, CLIENT *)); +extern ypresp_maplist *ypproc_maplist_2_svc __P ((domainname *, struct svc_req *)); +extern int ypprog_2_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); + + +#define YPPUSH_XFRRESPPROG ((u_long)0x40000000) +#define YPPUSH_XFRRESPVERS ((u_long)1) + +#define YPPUSHPROC_NULL ((u_long)0) +extern void *yppushproc_null_1 __P ((void *, CLIENT *)); +extern void *yppushproc_null_1_svc __P ((void *, struct svc_req *)); +#define YPPUSHPROC_XFRRESP ((u_long)1) +extern void *yppushproc_xfrresp_1 __P ((yppushresp_xfr *, CLIENT *)); +extern void *yppushproc_xfrresp_1_svc __P ((yppushresp_xfr *, struct svc_req *)); +extern int yppush_xfrrespprog_1_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); + + +#define YPBINDPROG ((u_long)100007) +#define YPBINDVERS ((u_long)2) + +#define YPBINDPROC_NULL ((u_long)0) +extern void *ypbindproc_null_2 __P ((void *, CLIENT *)); +extern void *ypbindproc_null_2_svc __P ((void *, struct svc_req *)); +#define YPBINDPROC_DOMAIN ((u_long)1) +extern ypbind_resp *ypbindproc_domain_2 __P ((domainname *, CLIENT *)); +extern ypbind_resp *ypbindproc_domain_2_svc __P ((domainname *, struct svc_req *)); +#define YPBINDPROC_SETDOM ((u_long)2) +extern void *ypbindproc_setdom_2 __P ((ypbind_setdom *, CLIENT *)); +extern void *ypbindproc_setdom_2_svc __P ((ypbind_setdom *, struct svc_req *)); +extern int ypbindprog_2_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); + + +extern bool_t xdr_ypstat __P ((XDR *, ypstat*)); +extern bool_t xdr_ypxfrstat __P ((XDR *, ypxfrstat*)); +extern bool_t xdr_domainname __P ((XDR *, domainname*)); +extern bool_t xdr_mapname __P ((XDR *, mapname*)); +extern bool_t xdr_peername __P ((XDR *, peername*)); +extern bool_t xdr_keydat __P ((XDR *, keydat*)); +extern bool_t xdr_valdat __P ((XDR *, valdat*)); +extern bool_t xdr_ypmap_parms __P ((XDR *, ypmap_parms*)); +extern bool_t xdr_ypreq_key __P ((XDR *, ypreq_key*)); +extern bool_t xdr_ypreq_nokey __P ((XDR *, ypreq_nokey*)); +extern bool_t xdr_ypreq_xfr __P ((XDR *, ypreq_xfr*)); +extern bool_t xdr_ypresp_val __P ((XDR *, ypresp_val*)); +extern bool_t xdr_ypresp_key_val __P ((XDR *, ypresp_key_val*)); +extern bool_t xdr_ypresp_master __P ((XDR *, ypresp_master*)); +extern bool_t xdr_ypresp_order __P ((XDR *, ypresp_order*)); +extern bool_t xdr_ypresp_all __P ((XDR *, ypresp_all*)); +extern bool_t xdr_ypresp_xfr __P ((XDR *, ypresp_xfr*)); +extern bool_t xdr_ypmaplist __P ((XDR *, ypmaplist*)); +extern bool_t xdr_ypresp_maplist __P ((XDR *, ypresp_maplist*)); +extern bool_t xdr_yppush_status __P ((XDR *, yppush_status*)); +extern bool_t xdr_yppushresp_xfr __P ((XDR *, yppushresp_xfr*)); +extern bool_t xdr_ypbind_resptype __P ((XDR *, ypbind_resptype*)); +extern bool_t xdr_ypbind_binding __P ((XDR *, ypbind_binding*)); +extern bool_t xdr_ypbind_resp __P ((XDR *, ypbind_resp*)); +extern bool_t xdr_ypbind_setdom __P ((XDR *, ypbind_setdom*)); + +__END_DECLS + +#endif /* !__RPCSVC_YP_H__ */ diff --git a/nis/yp_xdr.c b/nis/yp_xdr.c dissimilarity index 76% index e6477be778..f189169687 100644 --- a/nis/yp_xdr.c +++ b/nis/yp_xdr.c @@ -1,342 +1,300 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * 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 - */ - -#include - -bool_t -xdr_ypstat (XDR *xdrs, ypstat *objp) -{ - if (!xdr_enum(xdrs, (enum_t *)objp)) - return (FALSE); - return (TRUE); -} - -bool_t -xdr_ypxfrstat(XDR *xdrs, ypxfrstat *objp) -{ - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_domainname(XDR *xdrs, domainname *objp) -{ - if (!xdr_string(xdrs, objp, YPMAXDOMAIN)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_mapname(XDR *xdrs, mapname *objp) -{ - if (!xdr_string(xdrs, objp, YPMAXMAP)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_peername(XDR *xdrs, peername *objp) -{ - if (!xdr_string(xdrs, objp, YPMAXPEER)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_keydat(XDR *xdrs, keydat *objp) -{ - if (!xdr_bytes(xdrs, (char **)&objp->keydat_val, (u_int *)&objp->keydat_len, YPMAXRECORD)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_valdat(XDR *xdrs, valdat *objp) -{ - if (!xdr_bytes(xdrs, (char **)&objp->valdat_val, (u_int *)&objp->valdat_len, YPMAXRECORD)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypmap_parms(XDR *xdrs, ypmap_parms *objp) -{ - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ordernum)) { - return (FALSE); - } - if (!xdr_peername(xdrs, &objp->peer)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypreq_key(XDR *xdrs, ypreq_key *objp) -{ - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_keydat(xdrs, &objp->key)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypreq_nokey(XDR *xdrs, ypreq_nokey *objp) -{ - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypreq_xfr(XDR *xdrs, ypreq_xfr *objp) -{ - if (!xdr_ypmap_parms(xdrs, &objp->map_parms)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->prog)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->port)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_val(XDR *xdrs, ypresp_val *objp) -{ - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_valdat(xdrs, &objp->val)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_key_val(XDR *xdrs, ypresp_key_val *objp) -{ - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_valdat(xdrs, &objp->val)) { - return (FALSE); - } - if (!xdr_keydat(xdrs, &objp->key)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_master(XDR *xdrs, ypresp_master *objp) -{ - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_peername(xdrs, &objp->peer)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_order(XDR *xdrs, ypresp_order *objp) -{ - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ordernum)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_all(XDR *xdrs, ypresp_all *objp) -{ - if (!xdr_bool(xdrs, &objp->more)) { - return (FALSE); - } - switch (objp->more) { - case TRUE: - if (!xdr_ypresp_key_val(xdrs, &objp->ypresp_all_u.val)) { - return (FALSE); - } - break; - case FALSE: - break; - default: - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_xfr(XDR *xdrs, ypresp_xfr *objp) -{ - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_ypxfrstat(xdrs, &objp->xfrstat)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypmaplist(XDR *xdrs, ypmaplist *objp) -{ - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypresp_maplist(XDR *xdrs, ypresp_maplist *objp) -{ - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_pointer(xdrs, (char **)&objp->maps, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_yppush_status(XDR *xdrs, yppush_status *objp) -{ - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_yppushresp_xfr(XDR *xdrs, yppushresp_xfr *objp) -{ - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_yppush_status(xdrs, &objp->status)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypbind_resptype(XDR *xdrs, ypbind_resptype *objp) -{ - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypbind_binding(XDR *xdrs, ypbind_binding *objp) -{ - if (!xdr_opaque(xdrs, objp->ypbind_binding_addr, 4)) { - return (FALSE); - } - if (!xdr_opaque(xdrs, objp->ypbind_binding_port, 2)) { - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypbind_resp(XDR *xdrs, ypbind_resp *objp) -{ - if (!xdr_ypbind_resptype(xdrs, &objp->ypbind_status)) { - return (FALSE); - } - switch (objp->ypbind_status) { - case YPBIND_FAIL_VAL: - if (!xdr_u_int(xdrs, &objp->ypbind_resp_u.ypbind_error)) { - return (FALSE); - } - break; - case YPBIND_SUCC_VAL: - if (!xdr_ypbind_binding(xdrs, &objp->ypbind_resp_u.ypbind_bindinfo)) { - return (FALSE); - } - break; - default: - return (FALSE); - } - return (TRUE); -} - -bool_t -xdr_ypbind_setdom(XDR *xdrs, ypbind_setdom *objp) -{ - if (!xdr_domainname(xdrs, &objp->ypsetdom_domain)) { - return (FALSE); - } - if (!xdr_ypbind_binding(xdrs, &objp->ypsetdom_binding)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ypsetdom_vers)) { - return (FALSE); - } - return (TRUE); -} +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * 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 + */ + +#include + +bool_t +xdr_ypstat (XDR *xdrs, ypstat *objp) +{ + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypxfrstat (XDR *xdrs, ypxfrstat *objp) +{ + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_domainname (XDR *xdrs, domainname *objp) +{ + if (!xdr_string (xdrs, objp, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mapname (XDR *xdrs, mapname *objp) +{ + if (!xdr_string (xdrs, objp, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_peername (XDR *xdrs, peername *objp) +{ + if (!xdr_string (xdrs, objp, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_keydat (XDR *xdrs, keydat *objp) +{ + if (!xdr_bytes (xdrs, (char **) &objp->keydat_val, + (u_int *) &objp->keydat_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_valdat (XDR *xdrs, valdat *objp) +{ + if (!xdr_bytes (xdrs, (char **) &objp->valdat_val, + (u_int *) &objp->valdat_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypmap_parms (XDR *xdrs, ypmap_parms *objp) +{ + if (!xdr_domainname (xdrs, &objp->domain)) + return FALSE; + if (!xdr_mapname (xdrs, &objp->map)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->ordernum)) + return FALSE; + if (!xdr_peername (xdrs, &objp->peer)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypreq_key (XDR *xdrs, ypreq_key *objp) +{ + if (!xdr_domainname (xdrs, &objp->domain)) + return FALSE; + if (!xdr_mapname (xdrs, &objp->map)) + return FALSE; + if (!xdr_keydat (xdrs, &objp->key)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypreq_nokey (XDR *xdrs, ypreq_nokey *objp) +{ + if (!xdr_domainname (xdrs, &objp->domain)) + return FALSE; + if (!xdr_mapname (xdrs, &objp->map)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypreq_xfr (XDR *xdrs, ypreq_xfr *objp) +{ + if (!xdr_ypmap_parms (xdrs, &objp->map_parms)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->transid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->prog)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->port)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_val (XDR *xdrs, ypresp_val *objp) +{ + if (!xdr_ypstat (xdrs, &objp->stat)) + return FALSE; + if (!xdr_valdat (xdrs, &objp->val)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_key_val (XDR *xdrs, ypresp_key_val *objp) +{ + if (!xdr_ypstat (xdrs, &objp->stat)) + return FALSE; + if (!xdr_valdat (xdrs, &objp->val)) + return FALSE; + if (!xdr_keydat (xdrs, &objp->key)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_master (XDR *xdrs, ypresp_master *objp) +{ + if (!xdr_ypstat (xdrs, &objp->stat)) + return FALSE; + if (!xdr_peername (xdrs, &objp->peer)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_order (XDR *xdrs, ypresp_order *objp) +{ + if (!xdr_ypstat (xdrs, &objp->stat)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->ordernum)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_all (XDR *xdrs, ypresp_all *objp) +{ + if (!xdr_bool (xdrs, &objp->more)) + return FALSE; + switch (objp->more) + { + case TRUE: + if (!xdr_ypresp_key_val (xdrs, &objp->ypresp_all_u.val)) + return FALSE; + break; + case FALSE: + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_ypresp_xfr (XDR *xdrs, ypresp_xfr *objp) +{ + if (!xdr_u_int (xdrs, &objp->transid)) + return FALSE; + if (!xdr_ypxfrstat (xdrs, &objp->xfrstat)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypmaplist (XDR *xdrs, ypmaplist *objp) +{ + if (!xdr_mapname (xdrs, &objp->map)) + return FALSE; + if (!xdr_pointer (xdrs, (char **) &objp->next, sizeof (ypmaplist), + (xdrproc_t) xdr_ypmaplist)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypresp_maplist (XDR *xdrs, ypresp_maplist *objp) +{ + if (!xdr_ypstat (xdrs, &objp->stat)) + return FALSE; + if (!xdr_pointer (xdrs, (char **) &objp->maps, sizeof (ypmaplist), + (xdrproc_t) xdr_ypmaplist)) + return FALSE; + return TRUE; +} + +bool_t +xdr_yppush_status (XDR *xdrs, yppush_status *objp) +{ + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_yppushresp_xfr (XDR *xdrs, yppushresp_xfr *objp) +{ + if (!xdr_u_int (xdrs, &objp->transid)) + return FALSE; + if (!xdr_yppush_status (xdrs, &objp->status)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypbind_resptype (XDR *xdrs, ypbind_resptype *objp) +{ + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypbind_binding (XDR *xdrs, ypbind_binding *objp) +{ + if (!xdr_opaque (xdrs, objp->ypbind_binding_addr, 4)) + return FALSE; + if (!xdr_opaque (xdrs, objp->ypbind_binding_port, 2)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ypbind_resp (XDR *xdrs, ypbind_resp *objp) +{ + if (!xdr_ypbind_resptype (xdrs, &objp->ypbind_status)) + return FALSE; + switch (objp->ypbind_status) + { + case YPBIND_FAIL_VAL: + if (!xdr_u_int (xdrs, &objp->ypbind_resp_u.ypbind_error)) + return FALSE; + break; + case YPBIND_SUCC_VAL: + if (!xdr_ypbind_binding (xdrs, &objp->ypbind_resp_u.ypbind_bindinfo)) + return FALSE; + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_ypbind_setdom (XDR *xdrs, ypbind_setdom *objp) +{ + if (!xdr_domainname (xdrs, &objp->ypsetdom_domain)) + return FALSE; + if (!xdr_ypbind_binding (xdrs, &objp->ypsetdom_binding)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->ypsetdom_vers)) + return FALSE; + return TRUE; +} diff --git a/nis/ypclnt.c b/nis/ypclnt.c index 198c4775b5..94fce94f9d 100644 --- a/nis/ypclnt.c +++ b/nis/ypclnt.c @@ -90,7 +90,7 @@ __yp_bind (const char *domain, dom_binding **ypdb) do { - try++; + ++try; if (try > MAXTRIES) { if (is_new) @@ -99,7 +99,7 @@ __yp_bind (const char *domain, dom_binding **ypdb) } #if USE_BINDINGDIR - if (ysd->dom_vers < 1 && try < 3) + if (ysd->dom_vers < 1 && try == 1) /* Try binding dir only first time */ { char path[sizeof (BINDINGDIR) - 1 + strlen (domain) + 10]; struct iovec vec[2]; diff --git a/nis/ypupdate_xdr.c b/nis/ypupdate_xdr.c index 53624337ab..e4027b07df 100644 --- a/nis/ypupdate_xdr.c +++ b/nis/ypupdate_xdr.c @@ -31,43 +31,35 @@ * Copyright (c) 1986, 1990 by Sun Microsystems, Inc. */ -/* from @(#)ypupdate_prot.x 1.3 91/03/11 TIRPC 1.0 */ - -/* - * Compiled from ypupdate_prot.x using rpcgen - * This is NOT source code! - * DO NOT EDIT THIS FILE! - */ - - #include -bool_t -xdr_yp_buf (XDR * xdrs, yp_buf * objp) +bool_t +xdr_yp_buf (XDR *xdrs, yp_buf *objp) { - if (!xdr_bytes (xdrs, (char **) &objp->yp_buf_val, (u_int *) & objp->yp_buf_len, MAXYPDATALEN)) - return (FALSE); - return (TRUE); + if (!xdr_bytes (xdrs, (char **) &objp->yp_buf_val, + (u_int *) &objp->yp_buf_len, ~0)) + return FALSE; + return TRUE; } -bool_t -xdr_ypupdate_args (XDR * xdrs, ypupdate_args * objp) +bool_t +xdr_ypupdate_args (XDR *xdrs, ypupdate_args *objp) { - if (!xdr_string (xdrs, &objp->mapname, MAXMAPNAMELEN)) - return (FALSE); + if (!xdr_string (xdrs, &objp->mapname, ~0)) + return FALSE; if (!xdr_yp_buf (xdrs, &objp->key)) - return (FALSE); + return FALSE; if (!xdr_yp_buf (xdrs, &objp->datum)) - return (FALSE); - return (TRUE); + return FALSE; + return TRUE; } -bool_t -xdr_ypdelete_args (XDR * xdrs, ypdelete_args * objp) +bool_t +xdr_ypdelete_args (XDR *xdrs, ypdelete_args *objp) { - if (!xdr_string (xdrs, &objp->mapname, MAXMAPNAMELEN)) - return (FALSE); + if (!xdr_string (xdrs, &objp->mapname, ~0)) + return FALSE; if (!xdr_yp_buf (xdrs, &objp->key)) - return (FALSE); - return (TRUE); + return FALSE; + return TRUE; } diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h index 7c96fb53ee..a7488e0ce8 100644 --- a/stdlib/stdlib.h +++ b/stdlib/stdlib.h @@ -219,7 +219,8 @@ extern unsigned long long int __strtoull_internal __P ((__const char * # endif #endif /* GCC */ -#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && __GNUC__ >= 2 +#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ + && defined __USE_EXTERN_INLINES /* Define inline functions which call the internal entry points. */ extern __inline double @@ -306,7 +307,7 @@ atoll (__const char *__nptr) return strtoll (__nptr, (char **) NULL, 10); } # endif -#endif /* Optimizing GCC >=2. */ +#endif /* Optimizing and Inlining. */ #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED diff --git a/string/argz.h b/string/argz.h index 20e8a55321..c8dd918247 100644 --- a/string/argz.h +++ b/string/argz.h @@ -133,7 +133,7 @@ extern char *__argz_next __P ((char *argz, size_t __argz_len, extern char *argz_next __P ((char *argz, size_t __argz_len, __const char *entry)); -#if defined __OPTIMIZE__ && __GNUC__ >= 2 +#ifdef __USE_EXTERN_INLINES extern inline char * __argz_next (char *__argz, size_t __argz_len, __const char *__entry) { @@ -152,7 +152,7 @@ argz_next (char *__argz, size_t __argz_len, __const char *__entry) { return __argz_next (__argz, __argz_len, __entry); } -#endif /* optimizing GCC2 */ +#endif /* Use extern inlines. */ __END_DECLS diff --git a/sysdeps/generic/bits/sigset.h b/sysdeps/generic/bits/sigset.h index c442d53643..a57458dd28 100644 --- a/sysdeps/generic/bits/sigset.h +++ b/sysdeps/generic/bits/sigset.h @@ -38,7 +38,7 @@ typedef unsigned long int __sigset_t; #define _SIGSET_H_fns 1 #ifndef _EXTERN_INLINE -#define _EXTERN_INLINE extern __inline +# define _EXTERN_INLINE extern __inline #endif /* Return a mask that includes SIG only. The cast to `sigset_t' avoids @@ -63,7 +63,8 @@ extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); -#define __SIGSETFN(NAME, BODY, CONST) \ +#ifdef __USE_EXTERN_INLINES +# define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ { \ @@ -75,7 +76,8 @@ __SIGSETFN (__sigismember, (*__set & __mask) ? 1 : 0, __const) __SIGSETFN (__sigaddset, ((*__set |= __mask), 0), ) __SIGSETFN (__sigdelset, ((*__set &= ~__mask), 0), ) -#undef __SIGSETFN +# undef __SIGSETFN +#endif #endif /* ! _SIGSET_H_fns. */ diff --git a/sysdeps/generic/glob.c b/sysdeps/generic/glob.c index 591bd56f7e..509fc1b972 100644 --- a/sysdeps/generic/glob.c +++ b/sysdeps/generic/glob.c @@ -253,6 +253,7 @@ extern char *alloca (); # define readdir(str) __readdir (str) # define getpwnam_r(name, bufp, buf, len, res) \ __getpwnam_r (name, bufp, buf, len, res) +# define __stat(fname, buf) __xstat (_STAT_VER, fname, buf) #endif #if !(defined STDC_HEADERS || defined __GNU_LIBRARY__) diff --git a/sysdeps/unix/sysv/linux/bits/sigset.h b/sysdeps/unix/sysv/linux/bits/sigset.h index 14f30cbfd8..66a9c51c54 100644 --- a/sysdeps/unix/sysv/linux/bits/sigset.h +++ b/sysdeps/unix/sysv/linux/bits/sigset.h @@ -104,7 +104,8 @@ extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); -# define __SIGSETFN(NAME, BODY, CONST) \ +# ifdef __USE_EXTERN_INLINES +# define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ { \ @@ -117,7 +118,8 @@ __SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, __const) __SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), ) __SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), ) -#undef __SIGSETFN +# undef __SIGSETFN +# endif #endif /* ! _SIGSET_H_fns. */ diff --git a/sysdeps/unix/sysv/sysv4/bits/sigset.h b/sysdeps/unix/sysv/sysv4/bits/sigset.h index 1461c93b3d..c5d596dad8 100644 --- a/sysdeps/unix/sysv/sysv4/bits/sigset.h +++ b/sysdeps/unix/sysv/sysv4/bits/sigset.h @@ -48,9 +48,10 @@ typedef struct #define __SSELT(s) ((s) / __NSSBITS) #define __SSMASK(s) (1 << ((s) % __NSSBITS)) -#ifndef _EXTERN_INLINE -#define _EXTERN_INLINE extern __inline -#endif +#ifdef __USE_EXTERN_INLINES +# ifndef _EXTERN_INLINE +# define _EXTERN_INLINE extern __inline +# endif _EXTERN_INLINE int __sigemptyset (__sigset_t *__set) @@ -92,5 +93,6 @@ __sigismember (__const __sigset_t *__set, int __sig) return 1; return 0; } +#endif /* use extern inlines. */ #endif /* ! _SIGSET_H_fns */ diff --git a/sysdeps/wordsize-32/inttypes.h b/sysdeps/wordsize-32/inttypes.h index 188f4def4a..79d3eed31c 100644 --- a/sysdeps/wordsize-32/inttypes.h +++ b/sysdeps/wordsize-32/inttypes.h @@ -204,7 +204,7 @@ extern intmax_t wcstoimax __P ((__const wchar_t * __restrict __nptr, extern uintmax_t wcstoumax __P ((__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base)); -#if defined __GNUC__ && __GNUC__ >= 2 && defined __OPTIMIZE__ +#ifdef __USE_EXTERN_INLINES /* Like `strtol' but convert to `intmax_t'. */ # ifndef __strtoll_internal_defined @@ -267,7 +267,7 @@ wcstoumax (__const wchar_t *__restrict nptr, wchar_t **__restrict endptr, { return __wcstoull_internal (nptr, endptr, base, 0); } -#endif /* GCC and Optimization. */ +#endif /* Use extern inlines. */ __END_DECLS diff --git a/sysdeps/wordsize-64/inttypes.h b/sysdeps/wordsize-64/inttypes.h index 5e497dbfae..c76d2c887d 100644 --- a/sysdeps/wordsize-64/inttypes.h +++ b/sysdeps/wordsize-64/inttypes.h @@ -210,7 +210,7 @@ extern intmax_t wcstoimax __P ((__const wchar_t * __restrict __nptr, extern uintmax_t wcstoumax __P ((__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base)); -#if defined __GNUC__ && __GNUC__ >= 2 && defined __OPTIMIZE__ +#ifdef __USE_EXTERN_INLINES /* Like `strtol' but convert to `intmax_t'. */ # ifndef __strtol_internal_defined @@ -269,7 +269,7 @@ wcstoumax (__const wchar_t *__restrict nptr, wchar_t **__restrict endptr, { return __wcstoul_internal (nptr, endptr, base, 0); } -#endif /* GCC and Optimization. */ +#endif /* Use extern inlines. */ __END_DECLS diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h index 7063d9ca76..0bf9c7c5b9 100644 --- a/wcsmbs/wchar.h +++ b/wcsmbs/wchar.h @@ -234,7 +234,7 @@ extern size_t mbrlen __P ((__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps)); #if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ - && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) + && defined __USE_EXTERN_INLINES /* Define inline function as optimization. */ extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) -- 2.11.4.GIT