|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 2173 (0x87d) Types: TextFile Names: »tb_getuser.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/table/tb_getuser.c«
/* tb_getuser.c: grab an user */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/table/RCS/tb_getuser.c,v 5.0 90/09/20 16:15:37 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Lib/table/RCS/tb_getuser.c,v 5.0 90/09/20 16:15:37 pp Exp Locker: pp $ * * $Log: tb_getuser.c,v $ * Revision 5.0 90/09/20 16:15:37 pp * rcsforce : 5.0 public release * */ #include "util.h" #include "chan.h" #include "list_rchan.h" #define MAX_ALTERNATIVE_CHANS 20 #define MAX_USER_ARGS 5 /* --------------------- Begin Routines -------------------------------- */ extern char *user_tbl, *loc_dom_mta; LIST_RCHAN *tb_getuser (key, subdom) char *key; char *subdom; { char *argv [MAX_ALTERNATIVE_CHANS], *subargv[MAX_USER_ARGS], buf [BUFSIZ], tblname[FILNSIZE]; int argc, i; Table *User = NULLTBL; LIST_RCHAN *chans = NULLIST_RCHAN, *tmp; if (subdom == NULLCP || *subdom == '\0') (void) sprintf(tblname,"%s", user_tbl); else (void) sprintf(tblname,"%s-%s", subdom, user_tbl); PP_DBG (("Lib/tb_getuser (%s)", tblname)); if ((User = tb_nm2struct (tblname)) == NULLTBL) { PP_OPER (NULLCP, ("Lib/tb_getuser (no table '%s')", tblname)); return (NULLIST_RCHAN); } if (tb_k2val (User, key, buf) == NOTOK) return (NULLIST_RCHAN); if ((argc = sstr2arg (buf, MAX_ALTERNATIVE_CHANS, argv, ",")) == NOTOK) return (NULLIST_RCHAN); for (i = 0; i < argc; i++) { if ((sstr2arg (argv[i], MAX_USER_ARGS, subargv, " ")) == NOTOK) { PP_LOG(LLOG_EXCEPTIONS, ("Unable to parse delivery channels for '%s' in the user table '%s'", key, tblname)); list_rchan_free(chans); return NULLIST_RCHAN; } if ((tmp = list_rchan_new ((subargv[1] == NULLCP) ? loc_dom_mta : subargv[1], NULLCP)) == NULLIST_RCHAN) { PP_LOG(LLOG_EXCEPTIONS, ("Unable to find delivery channel '%s' for '%s' in the user table '%s'", argv[0], key, tblname)); list_rchan_free(chans); return NULLIST_RCHAN; } tmp -> li_chan = ch_nm2struct(subargv[0]); list_rchan_add (&chans, tmp); } return (chans); }