DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T o

⟦5e73c198a⟧ TextFile

    Length: 1570 (0x622)
    Types: TextFile
    Names: »or_getpn.c«

Derivation

└─⟦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« 

TextFile

/* 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;
}