|
|
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 l
Length: 2625 (0xa41)
Types: TextFile
Names: »list_rchan.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/pp/list_rchan.c«
/* list_rchan.c: utility routines for struct LIST_REFORMAT */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/list_rchan.c,v 5.0 90/09/20 16:11:08 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/list_rchan.c,v 5.0 90/09/20 16:11:08 pp Exp Locker: pp $
*
* $Log: list_rchan.c,v $
* Revision 5.0 90/09/20 16:11:08 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include "list_rchan.h"
/* --------------------- Begin Routines -------------------------------- */
/*
Creates a new list structure
*/
LIST_RCHAN* list_rchan_new (site, chan)
char *site;
char *chan;
{
LIST_RCHAN *list;
PP_DBG (("Lib/pp/list_rchan_new (%s, %s)", site, chan));
if (site == NULLCP && chan == NULLCP)
return (NULLIST_RCHAN);
list = list_rchan_malloc ();
if (list == NULLIST_RCHAN)
return (NULLIST_RCHAN);
if (chan) {
list -> li_chan = ch_nm2struct (chan);
if (list -> li_chan == NULLCHAN) {
PP_LOG (LLOG_EXCEPTIONS,
("Chan %s not known", chan));
return (NULLIST_RCHAN);
}
PP_DBG (("Channel '%s' added", list -> li_chan -> ch_name));
}
if (site)
list -> li_mta = strdup (site);
return (list);
}
/*
Sets the channel part in the list structure
*/
int list_rchan_schan (list, chan)
LIST_RCHAN *list;
char *chan;
{
PP_DBG (("Lib/pp/list_rchan_schan (%s)", chan));
if (chan == NULLCP) return (NOTOK);
if ((list -> li_chan = ch_nm2struct (chan)) == NULLCHAN)
return (NOTOK);
return (OK);
}
/*
Sets the site/mta info of the list structure
*/
int list_rchan_ssite (list, site)
LIST_RCHAN *list;
char *site;
{
PP_DBG (("Lib/pp/list_rchan_ssite (%s)", site));
if (site == NULLCP) return (NOTOK);
list -> li_mta = strdup (site);
return (OK);
}
/*
Adds item onto the end of base
*/
void list_rchan_add (base, new)
LIST_RCHAN **base,
*new;
{
LIST_RCHAN *rp = *base;
if (rp == NULLIST_RCHAN)
*base = new;
else {
while (rp->li_next != NULLIST_RCHAN)
rp = rp->li_next;
rp->li_next = new;
}
}
/*
Do not free the CHAN ptr because set by ch_all[]
*/
void list_rchan_free (list)
LIST_RCHAN *list;
{
if (list == NULLIST_RCHAN) return;
if (list -> li_next)
list_rchan_free (list->li_next);
if (list -> li_mta)
free (list -> li_mta);
free ((char *)list);
}
LIST_RCHAN *list_rchan_malloc()
{
LIST_RCHAN *new;
new = (LIST_RCHAN*) smalloc (sizeof (LIST_RCHAN));
new->li_mta = NULLCP;
new->li_chan = NULLCHAN;
new->li_auth = NULL_AUTH;
new->li_next = NULLIST_RCHAN;
return (new);
}