|
|
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 o
Length: 1570 (0x622)
Types: TextFile
Names: »or_getpn.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/or/or_getpn.c«
/* or_getpn.c: get personal name out of the tree */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/or/RCS/or_getpn.c,v 5.0 90/09/20 16:08:07 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/or/RCS/or_getpn.c,v 5.0 90/09/20 16:08:07 pp Exp Locker: pp $
*
* $Log: or_getpn.c,v $
* Revision 5.0 90/09/20 16:08:07 pp
* rcsforce : 5.0 public release
*
*/
#include "or.h"
#include "util.h"
/* --- *** ---
Get PN out of tree and put into buf
--- *** --- */
int or_getpn (or, buf)
OR_ptr or;
char *buf;
{
OR_ptr ptr;
PP_DBG (("or_util.c/or_getpn ()"));
buf[0] = '\0';
if ((ptr = or_find (or, OR_G, NULLCP)) != NULLOR) {
if (strlen (ptr -> or_value) > 1
&& index (ptr -> or_value, '.') == NULLCP) {
(void) strcat (buf, ptr -> or_value);
(void) strcat (buf, ".");
}
else
return FALSE;
}
if ((ptr = or_find (or, OR_I, NULLCP)) != NULLOR) {
char *p,
*q;
q = &buf[strlen(buf)];
for (p = ptr -> or_value; *p != '\0'; p++) {
if (!isalpha (*p))
return FALSE;
*q++ = *p;
*q++ = '.';
}
*q = '\0';
}
if ((ptr = or_find (or, OR_S, NULLCP)) != NULLOR) {
if (index (ptr -> or_value, '.') != NULLCP) {
/* Surname with "." - yuk */
if (buf[0] == '\0'
|| strlen (ptr -> or_value) < 3
|| ptr -> or_value[0] == '.'
|| ptr -> or_value[1] == '.' )
return FALSE;
}
(void) strcat (buf, ptr -> or_value);
}
else
return FALSE;
PP_DBG (("or_util.c/or_getpn: Got PN '%s'", buf));
return TRUE;
}