[BACK]Return to getnetgrent.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / gen

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libc/gen/getnetgrent.c between version 1.11.2.2 and 1.11.2.3

version 1.11.2.2, 1997/05/26 16:33:34 version 1.11.2.3, 1998/11/02 03:33:14
Line 32 
Line 32 
  * SUCH DAMAGE.   * SUCH DAMAGE.
  */   */
   
   #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)  #if defined(LIBC_SCCS) && !defined(lint)
 static char *rcsid = "$NetBSD$";  __RCSID("$NetBSD$");
 #endif /* LIBC_SCCS and not lint */  #endif /* LIBC_SCCS and not lint */
   
   #include "namespace.h"
 #include <sys/types.h>  #include <sys/types.h>
 #include <stdio.h>  #include <stdio.h>
 #define _NETGROUP_PRIVATE  #define _NETGROUP_PRIVATE
Line 53  static char *rcsid = "$NetBSD$";
Line 55  static char *rcsid = "$NetBSD$";
 #include <rpcsvc/ypclnt.h>  #include <rpcsvc/ypclnt.h>
 #include <rpcsvc/yp_prot.h>  #include <rpcsvc/yp_prot.h>
 #endif  #endif
   
   #ifdef __weak_alias
   __weak_alias(endnetgrent,_endnetgrent);
   __weak_alias(getnetgrent,_getnetgrent);
   __weak_alias(innetgr,_innetgr);
   __weak_alias(setnetgrent,_setnetgrent);
   #endif
   
 #define _NG_STAR(s)     (((s) == NULL || *(s) == '\0') ? _ngstar : s)  #define _NG_STAR(s)     (((s) == NULL || *(s) == '\0') ? _ngstar : s)
 #define _NG_EMPTY(s)    ((s) == NULL ? "" : s)  #define _NG_EMPTY(s)    ((s) == NULL ? "" : s)
Line 64  static struct netgroup *_nghead = (struc
Line 73  static struct netgroup *_nghead = (struc
 static struct netgroup *_nglist = (struct netgroup *)NULL;  static struct netgroup *_nglist = (struct netgroup *)NULL;
 static DB *_ng_db;  static DB *_ng_db;
   
 static int              getstring __P((char **, int, char **));  static int              getstring __P((char **, int, __aconst char **));
 static struct netgroup  *getnetgroup __P((char **));  static struct netgroup  *getnetgroup __P((char **));
 static int               lookup __P((char *, char **, int));  static int               lookup __P((char *, char **, int));
 static void              addgroup __P((StringList *, char *));  static void              addgroup __P((StringList *, char *));
Line 84  static int
Line 93  static int
 getstring(pp, del, str)  getstring(pp, del, str)
         char    **pp;          char    **pp;
         int       del;          int       del;
         char    **str;          char    __aconst **str;
 {  {
           size_t len;
         char *sp, *ep, *dp;          char *sp, *ep, *dp;
   
         /* skip leading blanks */          /* skip leading blanks */
Line 107  getstring(pp, del, str)
Line 117  getstring(pp, del, str)
   
         *pp = ++dp;          *pp = ++dp;
   
         del = (ep - sp) + 1;          len = (ep - sp) + 1;
         if (del > 1) {          if (len > 1) {
                 dp = malloc(del);                  dp = malloc(len);
                 if (dp == NULL)                  if (dp == NULL)
                         _err(1, _ngoomem);                          err(1, _ngoomem);
                 memcpy(dp, sp, del);                  memcpy(dp, sp, len);
                 dp[del - 1] = '\0';                  dp[len - 1] = '\0';
         } else          } else
                 dp = NULL;                  dp = NULL;
   
Line 132  getnetgroup(pp)
Line 142  getnetgroup(pp)
         struct netgroup *ng = malloc(sizeof(struct netgroup));          struct netgroup *ng = malloc(sizeof(struct netgroup));
   
         if (ng == NULL)          if (ng == NULL)
                 _err(1, _ngoomem);                  err(1, _ngoomem);
   
         (*pp)++;        /* skip '(' */          (*pp)++;        /* skip '(' */
         if (!getstring(pp, ',', &ng->ng_host))          if (!getstring(pp, ',', &ng->ng_host))
Line 155  getnetgroup(pp)
Line 165  getnetgroup(pp)
   
 baddomain:  baddomain:
         if (ng->ng_user)          if (ng->ng_user)
                 free(ng->ng_user);                  free((char *)ng->ng_user);
 baduser:  baduser:
         if (ng->ng_host)          if (ng->ng_host)
                 free(ng->ng_host);                  free((char *)ng->ng_host);
 badhost:  badhost:
         free(ng);          free(ng);
         return NULL;          return NULL;
 }  }
   
   
   static int _local_lookup __P((void *, void *, va_list));
   
 static int  static int
 _local_lookup(rv, cb_data, ap)  _local_lookup(rv, cb_data, ap)
         void    *rv;          void    *rv;
Line 186  _local_lookup(rv, cb_data, ap)
Line 198  _local_lookup(rv, cb_data, ap)
         len = strlen(name) + 2;          len = strlen(name) + 2;
         ks = malloc(len);          ks = malloc(len);
         if (ks == NULL)          if (ks == NULL)
                 _err(1, _ngoomem);                  err(1, _ngoomem);
   
         ks[0] = bywhat;          ks[0] = bywhat;
         memcpy(&ks[1], name, len - 1);          memcpy(&ks[1], name, len - 1);
Line 212  _local_lookup(rv, cb_data, ap)
Line 224  _local_lookup(rv, cb_data, ap)
 }  }
   
 #ifdef YP  #ifdef YP
   static int _nis_lookup __P((void *, void *, va_list));
   
 static int  static int
 _nis_lookup(rv, cb_data, ap)  _nis_lookup(rv, cb_data, ap)
         void    *rv;          void    *rv;
Line 257  _nis_lookup(rv, cb_data, ap)
Line 271  _nis_lookup(rv, cb_data, ap)
   
   
         *line = NULL;          *line = NULL;
         switch (yp_match(__ypdomain, map, name, strlen(name), line, &i)) {          switch (yp_match(__ypdomain, map, name, (int)strlen(name), line, &i)) {
         case 0:          case 0:
                 return NS_SUCCESS;                  return NS_SUCCESS;
         case YPERR_KEY:          case YPERR_KEY:
Line 319  _ng_parse(p, name, ng)
Line 333  _ng_parse(p, name, ng)
   
                 if (**p == '(') {                  if (**p == '(') {
                         if ((*ng = getnetgroup(p)) == NULL) {                          if ((*ng = getnetgroup(p)) == NULL) {
                                 _warnx("netgroup: Syntax error `%s'", *p);                                  warnx("netgroup: Syntax error `%s'", *p);
                                 return _NG_ERROR;                                  return _NG_ERROR;
                         }                          }
                         return _NG_GROUP;                          return _NG_GROUP;
                 } else {                  } else {
                         char           *np;                          char    *np;
                         int             i;                          size_t  i;
   
                         for (np = *p; **p && !_NG_ISSPACE(**p); (*p)++)                          for (np = *p; **p && !_NG_ISSPACE(**p); (*p)++)
                                 continue;                                  continue;
Line 333  _ng_parse(p, name, ng)
Line 347  _ng_parse(p, name, ng)
                                 i = (*p - np) + 1;                                  i = (*p - np) + 1;
                                 *name = malloc(i);                                  *name = malloc(i);
                                 if (*name == NULL)                                  if (*name == NULL)
                                         _err(1, _ngoomem);                                          err(1, _ngoomem);
                                 memcpy(*name, np, i);                                  memcpy(*name, np, i);
                                 (*name)[i - 1] = '\0';                                  (*name)[i - 1] = '\0';
                                 return _NG_NAME;                                  return _NG_NAME;
Line 362  addgroup(sl, grp)
Line 376  addgroup(sl, grp)
         /* check for cycles */          /* check for cycles */
         if (sl_find(sl, grp) != NULL) {          if (sl_find(sl, grp) != NULL) {
                 free(grp);                  free(grp);
                 _warnx("netgroup: Cycle in group `%s'", grp);                  warnx("netgroup: Cycle in group `%s'", grp);
                 return;                  return;
         }          }
         sl_add(sl, grp);          sl_add(sl, grp);
Line 455  in_find(sl, grp, host, user, domain)
Line 469  in_find(sl, grp, host, user, domain)
         /* check for cycles */          /* check for cycles */
         if (sl_find(sl, grp) != NULL) {          if (sl_find(sl, grp) != NULL) {
                 free(grp);                  free(grp);
                 _warnx("netgroup: Cycle in group `%s'", grp);                  warnx("netgroup: Cycle in group `%s'", grp);
                 return 0;                  return 0;
         }          }
         sl_add(sl, grp);          sl_add(sl, grp);
Line 481  in_find(sl, grp, host, user, domain)
Line 495  in_find(sl, grp, host, user, domain)
                         /* new netgroup */                          /* new netgroup */
                         i = in_check(host, user, domain, ng);                          i = in_check(host, user, domain, ng);
                         if (ng->ng_host != NULL)                          if (ng->ng_host != NULL)
                                 free(ng->ng_host);                                  free((char *)ng->ng_host);
                         if (ng->ng_user != NULL)                          if (ng->ng_user != NULL)
                                 free(ng->ng_user);                                  free((char *)ng->ng_user);
                         if (ng->ng_domain != NULL)                          if (ng->ng_domain != NULL)
                                 free(ng->ng_domain);                                  free((char *)ng->ng_domain);
                         free(ng);                          free(ng);
                         if (i) {                          if (i) {
                                 free(line);                                  free(line);
Line 524  _ng_makekey(s1, s2, len)
Line 538  _ng_makekey(s1, s2, len)
 {  {
         char *buf = malloc(len);          char *buf = malloc(len);
         if (buf == NULL)          if (buf == NULL)
                 _err(1, _ngoomem);                  err(1, _ngoomem);
         (void) snprintf(buf, len, "%s.%s", _NG_STAR(s1), _NG_STAR(s2));          (void) snprintf(buf, len, "%s.%s", _NG_STAR(s1), _NG_STAR(s2));
         return buf;          return buf;
 }  }
Line 616  endnetgrent()
Line 630  endnetgrent()
         for (_nglist = _nghead; _nglist != NULL; _nglist = _nghead) {          for (_nglist = _nghead; _nglist != NULL; _nglist = _nghead) {
                 _nghead = _nglist->ng_next;                  _nghead = _nglist->ng_next;
                 if (_nglist->ng_host != NULL)                  if (_nglist->ng_host != NULL)
                         free(_nglist->ng_host);                          free((char *)_nglist->ng_host);
                 if (_nglist->ng_user != NULL)                  if (_nglist->ng_user != NULL)
                         free(_nglist->ng_user);                          free((char *)_nglist->ng_user);
                 if (_nglist->ng_domain != NULL)                  if (_nglist->ng_domain != NULL)
                         free(_nglist->ng_domain);                          free((char *)_nglist->ng_domain);
                 free(_nglist);                  free(_nglist);
         }          }
   
Line 647  setnetgrent(ng)
Line 661  setnetgrent(ng)
   
         ng_copy = strdup(ng);          ng_copy = strdup(ng);
         if (ng_copy == NULL)          if (ng_copy == NULL)
                 _err(1, _ngoomem);                  err(1, _ngoomem);
         addgroup(sl, ng_copy);          addgroup(sl, ng_copy);
         _nghead = _nglist;          _nghead = _nglist;
         sl_free(sl, 1);          sl_free(sl, 1);

Legend:
Removed from v.1.11.2.2  
changed lines
  Added in v.1.11.2.3

CVSweb <webmaster@jp.NetBSD.org>