From 8f2ece695d8822e9ecc63ecd157e90bf17a6fe65 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 2 Aug 1997 21:00:51 +0000 Subject: Update. 1997-08-02 21:27 Ulrich Drepper * inet/Makefile (headers): Rename netinet/inbits.h to bits/in.h. * inet/netinet/in.h: Include bits/in.h instead of netinet/inbits.h. * sysdeps/generic/netinet/inbits.h: Move to... * sysdeps/generic/bits/in.h: ... here. * sysdeps/unix/sysv/linux/bits/inbits.h: Move to ... * sysdeps/unix/sysv/linux/bits/in.h: ... here. * nis/Makefile (headers): Add bits/nislib.h. * nis/rpcsvc/nislib.h: Moved to .... * nis/bits/nislib.h: ... here. * nis/nss_compat/compat-grp.c: Don't include . * nis/nss_compat/compat-pwd.c: Likewise. * nis/nss_compat/compat-spwd.c: Likewise. * nis/nss_nisplus/nisplus-alias.c: Likewise. * nis/nss_nisplus/nisplus-ethers.c: Likewise. * nis/nss_nisplus/nisplus-grp.c: Likewise. * nis/nss_nisplus/nisplus-hosts.c: Likewise. * nis/nss_nisplus/nisplus-netgrp.c: Likewise. * nis/nss_nisplus/nisplus-ntework.c: Likewise. * nis/nss_nisplus/nisplus-proto.c: Likewise. * nis/nss_nisplus/nisplus-publickey.c: Likewise. * nis/nss_nisplus/nisplus-pwd.c: Likewise. * nis/nss_nisplus/nisplus-rpc.c: Likewise. * nis/nss_nisplus/nisplus-service.c: Likewise. * nis/nss_nisplus/nisplus-spwd.c: Likewise. * nis/rpcsvc/nis.x: Include bits/nislib.h, not rpcsvc/nislib.h. * nis/rpcsvc/nis.h: Likewise. * inet/getnameinfo.c (nrl_domainname): Change return type to const char *. (getnameinfo): Change type of local variable c to const char *. * inet/inet_ntoa.c: Rewrite to use __libc_once for initialization. * stdlib/fmtmsg.c: Likewise. * intl/bindtextdom.c: Update from latest gettext. * intl/dcgettext.c: Likewise. * intl/finddomain.c: Likewise. * intl/l10nflist.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. * login/getutid_r.c: Remove parameter to setutent call. * login/getutline_r.c: Likewise. * posix/wordexp.c: Complete rewrite. Not fully implemented yet, though. Patch by Tim Waugh . * stdio-common/printf_fp.c: Remove relative include paths. * stdio-common/printf_fphex.c: Likewise. * sysdeps/generic/crypt.h: Cleanup. Don't define non standard elements unless __USE_GNU. * sysdeps/generic/vlimit.c: Pretty print. * sysdeps/generic/vtimes.c: Likewise. * sysdeps/i386/elf/bsd-_setjmp.S: New file. Empty dummy file. * sysdeps/i386/elf/bsd-setjmp.S: New file. Empty dummy file. * sysdeps/i386/elf/setjmp.S: New file. Define __setjmp and also weak definitions of setjmp and _setjmp. * sysdeps/i386/fpu/bits/mathinline.h: More patches by John Bowman. * sysdeps/stub/if_index.h: Set errno in all functions and add stub warnings. * sysdeps/stub/libc-lock.h: Add __libc_once. 1997-08-02 01:57 Ulrich Drepper * sysdeps/unix/sysv/linux/ptrace.c: Don't set errno in error case since the __syscall_ptrace call already did this. Reported by Philip Gladstone . 1997-07-29 Andreas Jaeger * sysdeps/unix/sysv/linux/sys/fsuid.h: Change include to . 1997-08-01 23:18 Ulrich Drepper * csu/defs.awk: Fix regexp for end and align. Patch by Klaus Espenlaub . * locale/programs/localedef.c (print_escaped): New function. (show_info): Use print_escaped if strings can control unprintable characters. Patch by Jochen Hein . 1997-08-01 18:45 Thorsten Kukuk * nis/nss_nisplus/nisplus-alias.c: Fix NULL pointer problems * nis/nss_nisplus/nisplus-grp.c: Likewise. 1997-07-31 Andreas Schwab * elf/dl-profile.c (_dl_start_profile): Use _dl_sysdep_error instead of fprintf. 1997-07-31 Andreas Schwab * manual/socket.texi (Host Address Functions): Fix arguments of @deftypefun. 1997-07-31 Andreas Schwab * elf/dl-runtime.c: Avoid warning about profile_fixup being unused. * sysdeps/m68k/dl-machine.h: Add support for shared library profiling. 1997-07-31 Andreas Schwab * md5-crypt/Makefile (extra-objs): Add onlymd5-crypt.o for dependencies. 1997-07-31 Andreas Schwab * Make-dist (subdirs): Distribute both aout and elf. 1997-07-31 23:04 Mark Kettenis * login/utmp-private.h: Remove reset argument from backend setutent. * login/getutent_r.c (__setutent): Allways call the setutent function in the daemon backend. (setutent_unknown): Function removed. (getutent_unknown, pututline_unknown): Call __setutent instead of setutent_unknown. * login/utmp_file.c (setutent_file): Removed reset argument. All callers changed. * login/utmp_daemon.c (setutent_daemon): Removed reset argument. All callers changed. Try to open connection even if a previous connection failed, but first check if the sockets exist in the filesystem. * login/utmp_daemon.c (pututline_daemon): Try to open connection before reporting failure. * login/programs/database.c (open_database): Create compatibility file if it does not already exist. Supply mode argument in open calls to guarantee that created files have the proper protection. * login/programs/utmpd.c (main): Remove files created by a previous `bind' before creating sockets. Suggested by a sun . 1997-07-29 Andreas Jaeger * math/libm-test.c: Remove unneeded function check_int_exec. * BUGS: Correct typos. * gmon/gmon.c: Add alias for monstartup, declare _strerror_internal. 1997-07-30 Andreas Jaeger * manual/socket.texi (Host Address Functions): Reformat inet_ntop entry to confirm with expected behaviour of some scripts. * libc.map: Add functions/variables in global namespace, remove wildcards. 1997-07-29 Andreas Jaeger * resolv/libresolv.map: Add variables and routines used by named, nslookup and other bind utils. * libc.map: Likewise. 1997-07-31 00:35 Philip Blundell * sysdeps/unix/sysv/linux/if_index.c: Rewrite to avoid using /proc filesystem. * inet/test_ifindex.c: New file. * inet/Makefile (tests): Add test_ifindex. 1997-08-01 04:25 Ulrich Drepper * nis/nss_nisplus/nisplus-parser.c: Fix another bug in the parser. Patch by Thorsten Kukuk . * manual/errno.texi: Fix typo. Reported by Erik Talvola . (write_hist): Remove dependency on 32 bit int. --- nis/Makefile | 2 +- nis/nislib/nislib.h | 268 ++++++++++++++++++++++++++++++++++++ nis/nss_compat/compat-grp.c | 1 - nis/nss_compat/compat-pwd.c | 1 - nis/nss_compat/compat-spwd.c | 1 - nis/nss_nisplus/nisplus-alias.c | 16 ++- nis/nss_nisplus/nisplus-ethers.c | 16 +-- nis/nss_nisplus/nisplus-grp.c | 16 ++- nis/nss_nisplus/nisplus-hosts.c | 29 ++-- nis/nss_nisplus/nisplus-netgrp.c | 1 - nis/nss_nisplus/nisplus-network.c | 15 +- nis/nss_nisplus/nisplus-parser.c | 19 +-- nis/nss_nisplus/nisplus-proto.c | 9 +- nis/nss_nisplus/nisplus-publickey.c | 1 - nis/nss_nisplus/nisplus-pwd.c | 9 +- nis/nss_nisplus/nisplus-rpc.c | 3 +- nis/nss_nisplus/nisplus-service.c | 3 +- nis/nss_nisplus/nisplus-spwd.c | 1 - nis/rpcsvc/nis.h | 2 +- nis/rpcsvc/nis.x | 60 ++++---- nis/rpcsvc/nislib.h | 268 ------------------------------------ 21 files changed, 373 insertions(+), 368 deletions(-) create mode 100644 nis/nislib/nislib.h delete mode 100644 nis/rpcsvc/nislib.h (limited to 'nis') diff --git a/nis/Makefile b/nis/Makefile index e7dd50c1d9..7c70c9c2a8 100644 --- a/nis/Makefile +++ b/nis/Makefile @@ -21,7 +21,7 @@ # subdir := nis -headers := $(wildcard rpcsvc/*.[hx]) +headers := $(wildcard rpcsvc/*.[hx]) bits/nislib.h distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \ nisplus-parser.h diff --git a/nis/nislib/nislib.h b/nis/nislib/nislib.h new file mode 100644 index 0000000000..73b3804e85 --- /dev/null +++ b/nis/nislib/nislib.h @@ -0,0 +1,268 @@ +/* Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Thorsten Kukuk , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef __RPCSVC_NISLIB_H__ +#define __RPCSVC_NISLIB_H__ + +#include + +__BEGIN_DECLS + +typedef const char *const_nis_name; + +/* nis_names: These functions are used to locate and manipulate all NIS+ + * objects except the NIS+ entry objects. + * + * nis_lookup (name, flags) resolves a NIS+ name and returns a copy of + * that object from a NIS+ server. + * const nis_name name: name of the object to be resolved + * u_long flags: logically ORing zero or more flags (FOLLOW_LINKS, + * HARD_LOOKUP, [NO_CACHE], MASTER_ONLY, EXPAND_NAME) + * + * nis_add (name, obj) adds objects to the NIS+ namespace. + * const nis_name name: fully qualified NIS+ name. + * const nis_object *obj: object members zo_name and zo_domain will be + * constructed from name. + * + * nis_remove (name, obj) removes objects from the NIS+ namespace. + * const nis_name name: fully qualified NIS+ name. + * const nis_object *obj: if not NULL, it is assumed to point to a copy + * of the object being removed. In this case, if + * the object on the server does not have the same + * object identifier as the object being passed, + * the operation will fail with the NIS_NOTSAMEOBJ + * error. + * + * nis_modify (name, obj) can change specific attributes of an object + * that already exists in the namespace. + */ +extern nis_result *nis_lookup __P ((const_nis_name name, u_long flags)); +extern nis_result *nis_add __P ((const_nis_name name, const nis_object *obj)); +extern nis_result *nis_remove __P ((const_nis_name name, + const nis_object *obj)); +extern nis_result *nis_modify __P ((const_nis_name name, + const nis_object *obj)); + +/* nis_tables: These functions are used to search and modify NIS+ tables. + * + * nis_list (table_name, flags, callback(table_name, obj, userdata), userdata) + * search a table in the NIS+ namespace. + * const nis_name table_name: indexed name ([xx=yy],table.dir) + * u_long flags: logically ORing one or more flags (FOLLOW_LINKS, + * [FOLLOW_PATH], HARD_LOOKUP, [ALL_RESULTS], [NO_CACHE], + * MASTER_ONLY, EXPAND_NAME, RETURN_RESULT) + * callback(): callback is an optional pointer to a function that will + * process the ENTRY type objects that are returned from the + * search. If this pointer is NULL, then all entries that match + * the search criteria are returned in the nis_result structure, + * otherwise this function will be called once for each + * entry returned. + * void *userdata: passed to callback function along with the returned + * entry object. + * + * nis_add_entry (table_name, obj, flags) will add the NIS+ object to the + * NIS+ table_name. + * const nis_name table_name + * const nis_object *obj + * u_long flags: 0, ADD_OVERWRITE, RETURN_RESULT + * + * nis_modify_entry (name, obj, flags) modifies an object identified by name. + * const nis_name name: object identifier + * const nis_object *obj: should point to an entry with the EN_MODIFIED + * flag set in each column that contains new + * information. + * u_long flags: 0, MOD_SAMEOBJ, RETURN_RESULT + * + * nis_remove_entry (table_name, obj, flags) removes a set of entries + * identified by table_name from the table. + * const nis_name table_name: indexed NIS+ name + * const nis_object *obj: if obj is non-null, it is presumed to point to + * a cached copy of the entry. When the removal is + * attempted, and the object that would be removed + * is not the same as the cached object pointed to + * by object then the operation will fail with an + * NIS_NOTSAMEOBJ error + * u_long flags: 0, REM_MULTIPLE + * + * nis_first_entry (table_name) fetches entries from a table one at a time. + * const nis_name table_name + * + * nis_next_entry (table_name, cookie) retrieves the "next" entry from a + * table specified by table_name. + * const nis_name table_name: + * const netobj *cookie: The value of cookie from the nis_result structure + * form the previous call. + */ +extern nis_result *nis_list __P ((const_nis_name name, u_long flags, + int (*callback)(const_nis_name table_name, + const nis_object *obj, + const void *userdata), + const void *userdata)); +extern nis_result *nis_add_entry __P ((const_nis_name table_name, + const nis_object *obj, u_long flags)); +extern nis_result *nis_modify_entry __P ((const_nis_name name, + const nis_object *obj, + u_long flags)); +extern nis_result *nis_remove_entry __P ((const_nis_name table_name, + const nis_object *obj, + u_long flags)); +extern nis_result *nis_first_entry __P ((const_nis_name table_name)); +extern nis_result *nis_next_entry __P ((const_nis_name table_name, + const netobj *cookie)); +/* +** nis_server +*/ +extern nis_error nis_mkdir __P ((const_nis_name dirname, + const nis_server *machine)); +extern nis_error nis_rmdir __P ((const_nis_name dirname, + const nis_server *machine)); +extern nis_error nis_servstate __P ((const nis_server *machine, + const nis_tag *tags, int numtags, + nis_tag **result)); +extern nis_error nis_stats __P ((const nis_server *machine, + const nis_tag *tags, int numtags, + nis_tag **result)); +extern void nis_freetags __P ((nis_tag *tags, int numtags)); +extern nis_server **nis_getservlist __P ((const_nis_name dirname)); +extern void nis_freeservlist __P ((nis_server **machines)); + +/* +** nis_subr +*/ +extern nis_name nis_leaf_of __P ((const_nis_name name)); +extern nis_name nis_leaf_of_r __P ((const_nis_name name, char *buffer, + size_t buflen)); +extern nis_name nis_name_of __P ((const_nis_name name)); +extern nis_name nis_name_of_r __P ((const_nis_name name, char *buffer, + size_t buflen)); +extern nis_name nis_domain_of __P ((const_nis_name name)); +extern nis_name nis_domain_of_r __P ((const_nis_name name, char *buffer, + size_t buflen)); +extern nis_name *nis_getnames __P ((const_nis_name name)); +extern void nis_freenames __P ((nis_name *namelist)); +extern name_pos nis_dir_cmp __P ((const_nis_name n1, const_nis_name n2)); +extern nis_object *nis_clone_object __P ((const nis_object *src, + nis_object *dest)); +extern void nis_destroy_object __P ((nis_object *obj)); +extern void nis_print_object __P ((const nis_object *obj)); + +/* +** nis_local_names +*/ +extern nis_name nis_local_group __P ((void)); +extern nis_name nis_local_directory __P ((void)); +extern nis_name nis_local_principal __P ((void)); +extern nis_name nis_local_host __P ((void)); + +/* +** nis_error +*/ +extern const char *nis_sperrno __P ((const nis_error status)); +extern void nis_perror __P ((const nis_error status, const char *label)); +extern void nis_lerror __P ((const nis_error status, const char *label)); +extern char *nis_sperror __P ((const nis_error status, const char *label)); +extern char *nis_sperror_r __P ((const nis_error status, const char *label, + char *buffer, size_t buflen)); +/* +** nis_groups +*/ +extern bool_t nis_ismember __P ((const_nis_name principal, + const_nis_name group)); +extern nis_error nis_addmember __P ((const_nis_name member, + const_nis_name group)); +extern nis_error nis_removemember __P ((const_nis_name member, + const_nis_name group)); +extern nis_error nis_creategroup __P ((const_nis_name group, u_long flags)); +extern nis_error nis_destroygroup __P ((const_nis_name group)); +extern void nis_print_group_entry __P ((const_nis_name group)); +extern nis_error nis_verifygroup __P ((const_nis_name group)); + +/* +** nis_ping +*/ +extern void nis_ping __P ((const_nis_name dirname, u_long utime, + const nis_object *dirobj)); +extern nis_result *nis_checkpoint __P ((const_nis_name dirname)); + +/* +** nis_print (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) +*/ +extern void nis_print_result __P ((const nis_result *result)); +extern void nis_print_rights __P ((u_long rights)); +extern void nis_print_directory __P ((const directory_obj *dirobj)); +extern void nis_print_group __P ((const group_obj *grpobj)); +extern void nis_print_table __P ((const table_obj *tblobj)); +extern void nis_print_link __P ((const link_obj *lnkobj)); +extern void nis_print_entry __P ((const entry_obj *enobj)); + +/* +** nis_file (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) +*/ +extern directory_obj *readColdStartFile __P ((void)); +extern bool_t writeColdStartFile __P ((const directory_obj *dirobj)); +extern nis_object *nis_read_obj __P ((const char *obj)); +extern bool_t nis_write_obj __P ((const char *file, const nis_object *obj)); + +/* +** nis_clone - (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) +*/ +extern directory_obj *nis_clone_directory __P ((const directory_obj *src, + directory_obj *dest)); +extern group_obj *nis_clone_group __P ((const group_obj *src, + group_obj *dest)); +extern table_obj *nis_clone_table __P ((const table_obj *src, + table_obj *dest)); +extern entry_obj *nis_clone_entry __P ((const entry_obj *src, + entry_obj *dest)); +extern link_obj *nis_clone_link __P ((const link_obj *src, link_obj *dest)); +extern objdata *nis_clone_objdata __P ((const objdata *src, objdata *dest)); +extern nis_result *nis_clone_result __P ((const nis_result *src, + nis_result *dest)); + +/* nis_free - nis_freeresult */ +extern void nis_freeresult __P ((nis_result *result)); +/* (XXX THE FOLLOWING ARE INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */ +extern void nis_free_attr __P ((nis_attr *attr)); +extern void nis_free_request __P ((ib_request *req)); +extern void nis_free_endpoints __P ((endpoint *ep, unsigned int count)); +extern void nis_free_servers __P ((nis_server *machine, unsigned int count)); +extern void nis_free_directory __P ((directory_obj *dirobj)); +extern void nis_free_group __P ((group_obj *grpobj)); +extern void nis_free_table __P ((table_obj *tblobj)); +extern void nis_free_entry __P ((entry_obj *enobj)); +extern void nis_free_link __P ((link_obj *lnkobj)); +extern void nis_free_object __P ((nis_object *obj)); + +/* (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */ +extern nis_name __nis_default_owner __P ((char *)); +extern nis_name __nis_default_group __P ((char *)); +extern u_long __nis_default_ttl __P ((char *)); +extern u_long __nis_default_access __P ((char *, u_long)); +extern fd_result *__nis_finddirectory __P ((directory_obj *, const_nis_name)); +extern u_long __nis_hash __P ((const void *keyarg, register size_t len)); +extern log_result *__nis_dumplog __P ((nis_server *,nis_name, u_long)); +extern log_result *__nis_dump __P ((nis_server *, nis_name, + int (*)(nis_name, nis_object *, void *))); +/* NIS+ cache locking */ +extern int __nis_lock_cache __P ((void)); +extern int __nis_unlock_cache __P ((void)); + +__END_DECLS + +#endif /* __RPCSVC_NISLIB_H__ */ diff --git a/nis/nss_compat/compat-grp.c b/nis/nss_compat/compat-grp.c index 35ae2f7b02..c0ddbdffdf 100644 --- a/nis/nss_compat/compat-grp.c +++ b/nis/nss_compat/compat-grp.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include "nss-nisplus.h" diff --git a/nis/nss_compat/compat-pwd.c b/nis/nss_compat/compat-pwd.c index 6fac0f46c6..681258d2e6 100644 --- a/nis/nss_compat/compat-pwd.c +++ b/nis/nss_compat/compat-pwd.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include "netgroup.h" diff --git a/nis/nss_compat/compat-spwd.c b/nis/nss_compat/compat-spwd.c index a4c6201c2d..431380dac6 100644 --- a/nis/nss_compat/compat-spwd.c +++ b/nis/nss_compat/compat-spwd.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include "netgroup.h" diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c index 0a16b3890f..8d682d785c 100644 --- a/nis/nss_nisplus/nisplus-alias.c +++ b/nis/nss_nisplus/nisplus-alias.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -153,6 +152,8 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry, static enum nss_status internal_setaliasent (void) { + enum nss_status status; + if (result) nis_freeresult (result); result = NULL; @@ -162,12 +163,13 @@ internal_setaliasent (void) next_entry = 0; result = nis_list(tablename_val, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) + status = niserr2nss (result->status); + if (status != NSS_STATUS_SUCCESS) { nis_freeresult (result); result = NULL; } - return niserr2nss (result->status); + return status; } enum nss_status @@ -206,7 +208,13 @@ internal_nisplus_getaliasent_r (struct aliasent *alias, int parse_res; if (result == NULL) - internal_setaliasent (); + { + enum nss_status status; + + status = internal_setaliasent (); + if (result == NULL || status != NSS_STATUS_SUCCESS) + return status; + } /* Get the next entry until we found a correct one. */ do diff --git a/nis/nss_nisplus/nisplus-ethers.c b/nis/nss_nisplus/nisplus-ethers.c index d7c3720932..cfdb3dc4e1 100644 --- a/nis/nss_nisplus/nisplus-ethers.c +++ b/nis/nss_nisplus/nisplus-ethers.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include "nss-nisplus.h" @@ -153,7 +152,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, do { nis_result *saved_result; - + if (result == NULL) { saved_result = NULL; @@ -175,7 +174,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer, + if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer, buflen)) == -1) { nis_freeresult (result); @@ -187,7 +186,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, if (saved_result != NULL) nis_freeresult (saved_result); } - + } while (!parse_res); return NSS_STATUS_SUCCESS; @@ -233,14 +232,14 @@ _nss_nisplus_gethostton_r (const char *name, struct etherent *eth, nis_freeresult (result); return status; } - + if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, buflen)) == -1) { nis_freeresult (result); return NSS_STATUS_TRYAGAIN; } - + if (parse_res) return NSS_STATUS_SUCCESS; } @@ -282,16 +281,15 @@ _nss_nisplus_getntohost_r (const struct ether_addr *addr, return status; } - if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, + if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, buflen)) == -1) { nis_freeresult (result); return NSS_STATUS_TRYAGAIN; } - + if (parse_res) return NSS_STATUS_SUCCESS; } return NSS_STATUS_NOTFOUND; } - diff --git a/nis/nss_nisplus/nisplus-grp.c b/nis/nss_nisplus/nisplus-grp.c index 08e9e040fe..1031d69ac9 100644 --- a/nis/nss_nisplus/nisplus-grp.c +++ b/nis/nss_nisplus/nisplus-grp.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "nss-nisplus.h" #include "nisplus-parser.h" @@ -57,6 +56,8 @@ _nss_create_tablename (void) static enum nss_status internal_setgrent (void) { + enum nss_status status; + if (result) nis_freeresult (result); result = NULL; @@ -67,12 +68,13 @@ internal_setgrent (void) return NSS_STATUS_UNAVAIL; result = nis_list (tablename_val, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL); - if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) + status = niserr2nss (result->status); + if (status != NSS_STATUS_SUCCESS) { nis_freeresult (result); result = NULL; } - return niserr2nss (result->status); + return status; } enum nss_status @@ -109,7 +111,13 @@ internal_nisplus_getgrent_r (struct group *gr, char *buffer, size_t buflen) int parse_res; if (result == NULL) - internal_setgrent (); + { + enum nss_status status; + + status = internal_setgrent (); + if (result == NULL || status != NSS_STATUS_SUCCESS) + return status; + } /* Get the next entry until we found a correct one. */ do diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c index 10f939e341..89a8bf7564 100644 --- a/nis/nss_nisplus/nisplus-hosts.c +++ b/nis/nss_nisplus/nisplus-hosts.c @@ -26,7 +26,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -98,7 +97,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, if (NISENTRYLEN (0, 0, result) + 1 > room_left) goto no_more_room; - + p = stpncpy (first_unused, NISENTRYVAL (0, 0, result), NISENTRYLEN (0, 0, result)); *p = '\0'; @@ -114,7 +113,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); @@ -131,7 +130,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, host->h_addr_list = (char **) first_unused; if (room_left < 2 * sizeof (char *)) goto no_more_room; - + room_left -= (2 * sizeof (char *)); host->h_addr_list[0] = data; host->h_addr_list[1] = NULL; @@ -242,7 +241,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, result = nis_first_entry(tablename_val); if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) { - enum nss_status retval = niserr2nss (result->status); + enum nss_status retval = niserr2nss (result->status); if (retval == NSS_STATUS_TRYAGAIN) { *herrnop = NETDB_INTERNAL; @@ -250,12 +249,12 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, } return retval; } - + } else { nis_result *res2; - + saved_res = result; res2 = nis_next_entry(tablename_val, &result->cookie); result = res2; @@ -273,7 +272,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, return retval; } } - + parse_res = _nss_nisplus_parse_hostent (result, AF_INET6, host, buffer, buflen); if (parse_res < 1 && errno != ERANGE) @@ -288,9 +287,9 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, } if (saved_res != NULL) nis_freeresult (saved_res); - + } while (!parse_res); - + return NSS_STATUS_SUCCESS; } @@ -349,10 +348,10 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host, else sprintf(buf, "[cname=%s],%s", NISENTRYVAL(0, 0, result), tablename_val); - + nis_freeresult (result); result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - + retval = niserr2nss (result->status); if (retval != NSS_STATUS_SUCCESS) { @@ -369,7 +368,7 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host, _nss_nisplus_parse_hostent (result, af, host, buffer, buflen); nis_freeresult (result); - + if (parse_res > 0) return NSS_STATUS_SUCCESS; @@ -435,10 +434,10 @@ _nss_nisplus_gethostbyaddr_r (const char *addr, int addrlen, int type, parse_res = _nss_nisplus_parse_hostent (result, type, host, buffer, buflen); nis_freeresult (result); - + if (parse_res > 0) return NSS_STATUS_SUCCESS; - + *herrnop = NETDB_INTERNAL; if (parse_res == -1) return NSS_STATUS_TRYAGAIN; diff --git a/nis/nss_nisplus/nisplus-netgrp.c b/nis/nss_nisplus/nisplus-netgrp.c index 9c38539de8..967eec898c 100644 --- a/nis/nss_nisplus/nisplus-netgrp.c +++ b/nis/nss_nisplus/nisplus-netgrp.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "nss-nisplus.h" diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c index 57362dba78..ff71af8573 100644 --- a/nis/nss_nisplus/nisplus-network.c +++ b/nis/nss_nisplus/nisplus-network.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -86,7 +85,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); @@ -217,7 +216,7 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer, if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) { int retval; - + retval = niserr2nss (result->status); nis_freeresult (result); result = NULL; @@ -254,15 +253,15 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer, + if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen)) == -1) { *herrnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } - + } while (!parse_res); - + return NSS_STATUS_SUCCESS; } @@ -301,7 +300,7 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network, { nis_result *result; char buf[strlen (name) + 255 + tablename_len]; - + /* Search at first in the alias list, and use the correct name for the next search */ sprintf(buf, "[name=%s],%s", name, tablename_val); @@ -390,7 +389,7 @@ _nss_nisplus_getnetbyaddr_r (const unsigned long addr, const int type, if (parse_res > 0) return NSS_STATUS_SUCCESS; - + *herrnop = NETDB_INTERNAL; if (parse_res == -1) return NSS_STATUS_TRYAGAIN; diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c index 3d0ff32e57..db5f487159 100644 --- a/nis/nss_nisplus/nisplus-parser.c +++ b/nis/nss_nisplus/nisplus-parser.c @@ -212,20 +212,23 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, room_left -= sizeof (char *); gr->gr_mem[count] = line; - while (*line != '\0' && *line != ',' && !isspace(*line)) + while (*line != '\0' && *line != ',' && !isspace (*line)) ++line; - if (line != gr->gr_mem[count]) + if (*line == ',' || isspace (*line)) { - if (*line != '\0') - { - *line = '\0'; + int is = isspace (*line); + + *line = '\0'; + if (is) + while (*line != '\0' && (*line == ',' || isspace (*line))) ++line; - } + else + ++line; ++count; } else - gr->gr_mem[count] = NULL; + gr->gr_mem[count+1] = NULL; } if (room_left < sizeof (char *)) goto no_more_room; @@ -241,7 +244,7 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp, { char *first_unused = buffer; size_t room_left = buflen; - + if (result == NULL) return 0; diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c index 707a0e5296..ddfce86905 100644 --- a/nis/nss_nisplus/nisplus-proto.c +++ b/nis/nss_nisplus/nisplus-proto.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -212,7 +211,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer, else { nis_result *res; - + saved_res = result; res = nis_next_entry (tablename_val, &result->cookie); result = res; @@ -224,7 +223,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, + if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen)) == -1) { nis_freeresult (result); @@ -346,10 +345,10 @@ _nss_nisplus_getprotobynumber_r (const int number, struct protoent *proto, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; - + if (parse_res) return NSS_STATUS_SUCCESS; - + return NSS_STATUS_NOTFOUND; } } diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c index 4c596b8ada..554da95754 100644 --- a/nis/nss_nisplus/nisplus-publickey.c +++ b/nis/nss_nisplus/nisplus-publickey.c @@ -25,7 +25,6 @@ #include #include #include -#include #ifdef HAVE_SECURE_RPC #include extern int xdecrypt (char *, char *); diff --git a/nis/nss_nisplus/nisplus-pwd.c b/nis/nss_nisplus/nisplus-pwd.c index 2c1fb19cab..e358b060e1 100644 --- a/nis/nss_nisplus/nisplus-pwd.c +++ b/nis/nss_nisplus/nisplus-pwd.c @@ -23,7 +23,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -97,7 +96,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen) do { nis_result *saved_res; - + if (result == NULL) { saved_res = NULL; @@ -123,7 +122,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen) } } - if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, + if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen)) == -1) { nis_freeresult (result); @@ -192,7 +191,7 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw, if (parse_res) return NSS_STATUS_SUCCESS; - + return NSS_STATUS_NOTFOUND; } } @@ -227,7 +226,7 @@ _nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; - + if (parse_res) return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c index b70c2ebbca..6682a7502a 100644 --- a/nis/nss_nisplus/nisplus-rpc.c +++ b/nis/nss_nisplus/nisplus-rpc.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -225,7 +224,7 @@ internal_nisplus_getrpcent_r (struct rpcent *rpc, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, + if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen)) == -1) { nis_freeresult (result); diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c index 37042d9d13..e8a12145d3 100644 --- a/nis/nss_nisplus/nisplus-service.c +++ b/nis/nss_nisplus/nisplus-service.c @@ -24,7 +24,6 @@ #include #include #include -#include #include "nss-nisplus.h" @@ -205,7 +204,7 @@ internal_nisplus_getservent_r (struct servent *serv, char *buffer, do { nis_result *saved_res; - + if (result == NULL) { saved_res = NULL; diff --git a/nis/nss_nisplus/nisplus-spwd.c b/nis/nss_nisplus/nisplus-spwd.c index c7f1e2a567..507aa4bcad 100644 --- a/nis/nss_nisplus/nisplus-spwd.c +++ b/nis/nss_nisplus/nisplus-spwd.c @@ -23,7 +23,6 @@ #include #include #include -#include #include "nss-nisplus.h" #include "nisplus-parser.h" diff --git a/nis/rpcsvc/nis.h b/nis/rpcsvc/nis.h index b91ce19903..e24c7d05b3 100644 --- a/nis/rpcsvc/nis.h +++ b/nis/rpcsvc/nis.h @@ -767,7 +767,7 @@ typedef enum name_pos name_pos; #endif /* Prototypes, and extern declarations for the NIS library functions. */ -#include +#include #endif /* __NIS_RPCGEN_H */ /* EDIT_START */ diff --git a/nis/rpcsvc/nis.x b/nis/rpcsvc/nis.x index 625ed57f10..e68114c36b 100644 --- a/nis/rpcsvc/nis.x +++ b/nis/rpcsvc/nis.x @@ -28,7 +28,7 @@ % * Mountain View, California 94043 % */ -/* +/* * From 4.1 : @(#)nis.x 1.61 Copyright 1989 Sun Microsystems * * RPC Language Protocol description file for NIS Plus @@ -44,9 +44,9 @@ % * structures used by the NIS service. It includes the file nis_tags.h % * which defines the tag values. This allows the tags to change without % * having to change the nis.x file. -% * +% * % * NOTE : DO NOT EDIT THIS FILE! It is automatically generated when -% * rpcgen is run on the nis.x file. Note that there is a +% * rpcgen is run on the nis.x file. Note that there is a % * simple sed script to remove some unneeded lines. (See the % * Makefile target nis.h) % * @@ -118,11 +118,11 @@ enum nis_error { }; -/* +/* * Structure definitions for the parameters and results of the actual * NIS RPC calls. * - * This is the standard result (in the protocol) of most of the nis + * This is the standard result (in the protocol) of most of the nis * requests. */ @@ -136,11 +136,11 @@ struct nis_result { u_long cticks; /* Client ticks */ }; -/* - * A Name Service request - * This request is used to access the name space, ns_name is the name +/* + * A Name Service request + * This request is used to access the name space, ns_name is the name * of the object within the namespace and the object is it's value, for - * add/modify, a copy of the original for remove. + * add/modify, a copy of the original for remove. */ struct ns_request { @@ -148,7 +148,7 @@ struct ns_request { nis_object ns_object<1>; /* Optional Object (add/remove) */ }; -/* +/* * An information base request * This request includes the NIS name of the table we wish to search, the * search criteria in the form of attribute/value pairs and an optional @@ -168,7 +168,7 @@ struct ib_request { }; /* - * This argument to the PING call notifies the replicas that something in + * This argument to the PING call notifies the replicas that something in * a directory has changed and this is it's timestamp. The replica will use * the timestamp to determine if its resync operation was successful. */ @@ -177,8 +177,8 @@ struct ping_args { u_long stamp; /* timestamp of the transaction */ }; -/* - * These are the type of entries that are stored in the transaction log, +/* + * These are the type of entries that are stored in the transaction log, * note that modifications will appear as two entries, for names, they have * a "OLD" entry followed by a "NEW" entry. For entries in tables, there * is a remove followed by an add. It is done this way so that we can read @@ -196,13 +196,13 @@ enum log_entry_t { MOD_IBASE = 7, /* Entry was modified in information base */ UPD_STAMP = 8 /* Update timestamp (used as fenceposts) */ }; - + /* - * This result is returned from the name service when it is requested to + * This result is returned from the name service when it is requested to * dump logged entries from its transaction log. Information base updates * will have the name of the information base in the le_name field and * a canonical set of attribute/value pairs to fully specify the entry's - * 'name'. + * 'name'. */ struct log_entry { u_long le_time; /* Time in seconds */ @@ -218,7 +218,7 @@ struct log_result { netobj lr_cookie; /* Used by the dump callback */ log_entry lr_entries<>; /* zero or more entries */ }; - + struct cp_result { nis_error cp_status; /* Status of the checkpoint */ u_long cp_zticks; /* Service 'ticks' */ @@ -227,7 +227,7 @@ struct cp_result { /* * This structure defines a generic NIS tag list. The taglist contains - * zero or tags, each of which is a type and a value. (u_long). + * zero or tags, each of which is a type and a value. (u_long). * These are used to report statistics (see tag definitions below) * and to set or reset state variables. */ @@ -254,17 +254,17 @@ struct fd_args { struct fd_result { nis_error status; /* Status returned by function */ nis_name source; /* Source of this answer */ - opaque dir_data<>; /* Directory Data (XDR'ed) */ + opaque dir_data<>; /* Directory Data (XDR'ed) */ opaque signature<>; /* Signature of the source */ }; -/* +/* * What's going on here? Well, it's like this. When the service * is being compiled it wants to have the service definition specific * info included, and when the client is being compiled it wants that * info. This includes the appropriate file which was generated by - * make in the protocols directory (probably /usr/include/rpcsvc). + * make in the protocols directory (probably /usr/include/rpcsvc). */ #ifdef RPC_SVC %#include "nis_svc.h" @@ -296,10 +296,10 @@ program NIS_PROG { /* If fetch and optionally reset statistics */ nis_taglist NIS_STATUS(nis_taglist) = 14; - + /* Dump changes to directory since time in da_time */ log_result NIS_DUMPLOG(dump_args) = 15; - + /* Dump contents of directory named */ log_result NIS_DUMP(dump_args) = 16; @@ -314,16 +314,16 @@ program NIS_PROG { /* Send 'status changed' ping to replicates */ void NIS_PING(ping_args) = 20; - + /* Modify server behaviour (such as debugging) */ nis_taglist NIS_SERVSTATE(nis_taglist) = 21; - + /* Create a Directory */ nis_error NIS_MKDIR(nis_name) = 22; - + /* Remove a Directory */ nis_error NIS_RMDIR(nis_name) = 23; - + /* Update public keys of a directory object */ nis_error NIS_UPDKEYS(nis_name) = 24; } = 3; @@ -423,18 +423,18 @@ program NIS_PROG { %#endif % %/* Prototypes, and extern declarations for the NIS library functions. */ -%#include +%#include %#endif /* __NIS_RPCGEN_H */ %/* EDIT_START */ % %/* % * nis_3.h -% * +% * % * This file contains definitions that are only of interest to the actual % * service daemon and client stubs. Normal users of NIS will not include % * this file. % * -% * NOTE : This include file is automatically created by a combination +% * NOTE : This include file is automatically created by a combination % * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead % * and then remake this file. % */ diff --git a/nis/rpcsvc/nislib.h b/nis/rpcsvc/nislib.h deleted file mode 100644 index 73b3804e85..0000000000 --- a/nis/rpcsvc/nislib.h +++ /dev/null @@ -1,268 +0,0 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef __RPCSVC_NISLIB_H__ -#define __RPCSVC_NISLIB_H__ - -#include - -__BEGIN_DECLS - -typedef const char *const_nis_name; - -/* nis_names: These functions are used to locate and manipulate all NIS+ - * objects except the NIS+ entry objects. - * - * nis_lookup (name, flags) resolves a NIS+ name and returns a copy of - * that object from a NIS+ server. - * const nis_name name: name of the object to be resolved - * u_long flags: logically ORing zero or more flags (FOLLOW_LINKS, - * HARD_LOOKUP, [NO_CACHE], MASTER_ONLY, EXPAND_NAME) - * - * nis_add (name, obj) adds objects to the NIS+ namespace. - * const nis_name name: fully qualified NIS+ name. - * const nis_object *obj: object members zo_name and zo_domain will be - * constructed from name. - * - * nis_remove (name, obj) removes objects from the NIS+ namespace. - * const nis_name name: fully qualified NIS+ name. - * const nis_object *obj: if not NULL, it is assumed to point to a copy - * of the object being removed. In this case, if - * the object on the server does not have the same - * object identifier as the object being passed, - * the operation will fail with the NIS_NOTSAMEOBJ - * error. - * - * nis_modify (name, obj) can change specific attributes of an object - * that already exists in the namespace. - */ -extern nis_result *nis_lookup __P ((const_nis_name name, u_long flags)); -extern nis_result *nis_add __P ((const_nis_name name, const nis_object *obj)); -extern nis_result *nis_remove __P ((const_nis_name name, - const nis_object *obj)); -extern nis_result *nis_modify __P ((const_nis_name name, - const nis_object *obj)); - -/* nis_tables: These functions are used to search and modify NIS+ tables. - * - * nis_list (table_name, flags, callback(table_name, obj, userdata), userdata) - * search a table in the NIS+ namespace. - * const nis_name table_name: indexed name ([xx=yy],table.dir) - * u_long flags: logically ORing one or more flags (FOLLOW_LINKS, - * [FOLLOW_PATH], HARD_LOOKUP, [ALL_RESULTS], [NO_CACHE], - * MASTER_ONLY, EXPAND_NAME, RETURN_RESULT) - * callback(): callback is an optional pointer to a function that will - * process the ENTRY type objects that are returned from the - * search. If this pointer is NULL, then all entries that match - * the search criteria are returned in the nis_result structure, - * otherwise this function will be called once for each - * entry returned. - * void *userdata: passed to callback function along with the returned - * entry object. - * - * nis_add_entry (table_name, obj, flags) will add the NIS+ object to the - * NIS+ table_name. - * const nis_name table_name - * const nis_object *obj - * u_long flags: 0, ADD_OVERWRITE, RETURN_RESULT - * - * nis_modify_entry (name, obj, flags) modifies an object identified by name. - * const nis_name name: object identifier - * const nis_object *obj: should point to an entry with the EN_MODIFIED - * flag set in each column that contains new - * information. - * u_long flags: 0, MOD_SAMEOBJ, RETURN_RESULT - * - * nis_remove_entry (table_name, obj, flags) removes a set of entries - * identified by table_name from the table. - * const nis_name table_name: indexed NIS+ name - * const nis_object *obj: if obj is non-null, it is presumed to point to - * a cached copy of the entry. When the removal is - * attempted, and the object that would be removed - * is not the same as the cached object pointed to - * by object then the operation will fail with an - * NIS_NOTSAMEOBJ error - * u_long flags: 0, REM_MULTIPLE - * - * nis_first_entry (table_name) fetches entries from a table one at a time. - * const nis_name table_name - * - * nis_next_entry (table_name, cookie) retrieves the "next" entry from a - * table specified by table_name. - * const nis_name table_name: - * const netobj *cookie: The value of cookie from the nis_result structure - * form the previous call. - */ -extern nis_result *nis_list __P ((const_nis_name name, u_long flags, - int (*callback)(const_nis_name table_name, - const nis_object *obj, - const void *userdata), - const void *userdata)); -extern nis_result *nis_add_entry __P ((const_nis_name table_name, - const nis_object *obj, u_long flags)); -extern nis_result *nis_modify_entry __P ((const_nis_name name, - const nis_object *obj, - u_long flags)); -extern nis_result *nis_remove_entry __P ((const_nis_name table_name, - const nis_object *obj, - u_long flags)); -extern nis_result *nis_first_entry __P ((const_nis_name table_name)); -extern nis_result *nis_next_entry __P ((const_nis_name table_name, - const netobj *cookie)); -/* -** nis_server -*/ -extern nis_error nis_mkdir __P ((const_nis_name dirname, - const nis_server *machine)); -extern nis_error nis_rmdir __P ((const_nis_name dirname, - const nis_server *machine)); -extern nis_error nis_servstate __P ((const nis_server *machine, - const nis_tag *tags, int numtags, - nis_tag **result)); -extern nis_error nis_stats __P ((const nis_server *machine, - const nis_tag *tags, int numtags, - nis_tag **result)); -extern void nis_freetags __P ((nis_tag *tags, int numtags)); -extern nis_server **nis_getservlist __P ((const_nis_name dirname)); -extern void nis_freeservlist __P ((nis_server **machines)); - -/* -** nis_subr -*/ -extern nis_name nis_leaf_of __P ((const_nis_name name)); -extern nis_name nis_leaf_of_r __P ((const_nis_name name, char *buffer, - size_t buflen)); -extern nis_name nis_name_of __P ((const_nis_name name)); -extern nis_name nis_name_of_r __P ((const_nis_name name, char *buffer, - size_t buflen)); -extern nis_name nis_domain_of __P ((const_nis_name name)); -extern nis_name nis_domain_of_r __P ((const_nis_name name, char *buffer, - size_t buflen)); -extern nis_name *nis_getnames __P ((const_nis_name name)); -extern void nis_freenames __P ((nis_name *namelist)); -extern name_pos nis_dir_cmp __P ((const_nis_name n1, const_nis_name n2)); -extern nis_object *nis_clone_object __P ((const nis_object *src, - nis_object *dest)); -extern void nis_destroy_object __P ((nis_object *obj)); -extern void nis_print_object __P ((const nis_object *obj)); - -/* -** nis_local_names -*/ -extern nis_name nis_local_group __P ((void)); -extern nis_name nis_local_directory __P ((void)); -extern nis_name nis_local_principal __P ((void)); -extern nis_name nis_local_host __P ((void)); - -/* -** nis_error -*/ -extern const char *nis_sperrno __P ((const nis_error status)); -extern void nis_perror __P ((const nis_error status, const char *label)); -extern void nis_lerror __P ((const nis_error status, const char *label)); -extern char *nis_sperror __P ((const nis_error status, const char *label)); -extern char *nis_sperror_r __P ((const nis_error status, const char *label, - char *buffer, size_t buflen)); -/* -** nis_groups -*/ -extern bool_t nis_ismember __P ((const_nis_name principal, - const_nis_name group)); -extern nis_error nis_addmember __P ((const_nis_name member, - const_nis_name group)); -extern nis_error nis_removemember __P ((const_nis_name member, - const_nis_name group)); -extern nis_error nis_creategroup __P ((const_nis_name group, u_long flags)); -extern nis_error nis_destroygroup __P ((const_nis_name group)); -extern void nis_print_group_entry __P ((const_nis_name group)); -extern nis_error nis_verifygroup __P ((const_nis_name group)); - -/* -** nis_ping -*/ -extern void nis_ping __P ((const_nis_name dirname, u_long utime, - const nis_object *dirobj)); -extern nis_result *nis_checkpoint __P ((const_nis_name dirname)); - -/* -** nis_print (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) -*/ -extern void nis_print_result __P ((const nis_result *result)); -extern void nis_print_rights __P ((u_long rights)); -extern void nis_print_directory __P ((const directory_obj *dirobj)); -extern void nis_print_group __P ((const group_obj *grpobj)); -extern void nis_print_table __P ((const table_obj *tblobj)); -extern void nis_print_link __P ((const link_obj *lnkobj)); -extern void nis_print_entry __P ((const entry_obj *enobj)); - -/* -** nis_file (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) -*/ -extern directory_obj *readColdStartFile __P ((void)); -extern bool_t writeColdStartFile __P ((const directory_obj *dirobj)); -extern nis_object *nis_read_obj __P ((const char *obj)); -extern bool_t nis_write_obj __P ((const char *file, const nis_object *obj)); - -/* -** nis_clone - (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) -*/ -extern directory_obj *nis_clone_directory __P ((const directory_obj *src, - directory_obj *dest)); -extern group_obj *nis_clone_group __P ((const group_obj *src, - group_obj *dest)); -extern table_obj *nis_clone_table __P ((const table_obj *src, - table_obj *dest)); -extern entry_obj *nis_clone_entry __P ((const entry_obj *src, - entry_obj *dest)); -extern link_obj *nis_clone_link __P ((const link_obj *src, link_obj *dest)); -extern objdata *nis_clone_objdata __P ((const objdata *src, objdata *dest)); -extern nis_result *nis_clone_result __P ((const nis_result *src, - nis_result *dest)); - -/* nis_free - nis_freeresult */ -extern void nis_freeresult __P ((nis_result *result)); -/* (XXX THE FOLLOWING ARE INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */ -extern void nis_free_attr __P ((nis_attr *attr)); -extern void nis_free_request __P ((ib_request *req)); -extern void nis_free_endpoints __P ((endpoint *ep, unsigned int count)); -extern void nis_free_servers __P ((nis_server *machine, unsigned int count)); -extern void nis_free_directory __P ((directory_obj *dirobj)); -extern void nis_free_group __P ((group_obj *grpobj)); -extern void nis_free_table __P ((table_obj *tblobj)); -extern void nis_free_entry __P ((entry_obj *enobj)); -extern void nis_free_link __P ((link_obj *lnkobj)); -extern void nis_free_object __P ((nis_object *obj)); - -/* (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */ -extern nis_name __nis_default_owner __P ((char *)); -extern nis_name __nis_default_group __P ((char *)); -extern u_long __nis_default_ttl __P ((char *)); -extern u_long __nis_default_access __P ((char *, u_long)); -extern fd_result *__nis_finddirectory __P ((directory_obj *, const_nis_name)); -extern u_long __nis_hash __P ((const void *keyarg, register size_t len)); -extern log_result *__nis_dumplog __P ((nis_server *,nis_name, u_long)); -extern log_result *__nis_dump __P ((nis_server *, nis_name, - int (*)(nis_name, nis_object *, void *))); -/* NIS+ cache locking */ -extern int __nis_lock_cache __P ((void)); -extern int __nis_unlock_cache __P ((void)); - -__END_DECLS - -#endif /* __RPCSVC_NISLIB_H__ */ -- cgit 1.4.1