|
|
1.1 ! root 1: /* $Header: CHstrtoname.c,v 2.0 85/11/21 07:22:34 jqj Exp $ */ ! 2: ! 3: /* contains: ! 4: * CH_strtoname ! 5: */ ! 6: ! 7: /* $Log: CHstrtoname.c,v $ ! 8: * Revision 2.0 85/11/21 07:22:34 jqj ! 9: * 4.3BSD standard release ! 10: * ! 11: * Revision 1.1 85/03/26 06:27:02 jqj ! 12: * Initial revision ! 13: * ! 14: * Revision 1.1 85/03/26 06:27:02 jqj ! 15: * Initial revision ! 16: * ! 17: */ ! 18: ! 19: #include <xnscourier/Clearinghouse2.h> ! 20: ! 21: static char *copy(); ! 22: ! 23: /* ! 24: * Given a string in standard format, return an ObjectName. ! 25: * If the string is incomplete, e.g. "jqj" or "::cornell-univ", fill ! 26: * in default values from defaults. ! 27: */ ! 28: Clearinghouse2_ObjectName ! 29: CH_StringToName(str,defaults) ! 30: char *str; ! 31: Clearinghouse2_ObjectName *defaults; ! 32: { ! 33: register char *s1; ! 34: extern char *index(); ! 35: register Clearinghouse2_ObjectName result; ! 36: ! 37: s1 = result.object = (str ? copy(str) : ""); ! 38: if (s1 = index(s1,':')) { ! 39: *s1 = '\0'; ! 40: result.domain = ++s1; ! 41: if (s1 = index(s1,':')) { ! 42: *s1 = '\0'; ! 43: result.organization = ++s1; ! 44: } ! 45: else ! 46: result.organization = ""; ! 47: } ! 48: else ! 49: result.organization = result.domain = ""; ! 50: /* now fill in defaults if any */ ! 51: if (defaults == (Clearinghouse2_ObjectName*) NULL) ! 52: return(result); ! 53: if (*result.object == '\0' && defaults->object != NULL) ! 54: result.object = copy(defaults->object); ! 55: if (*result.domain == '\0' && defaults->domain != NULL) ! 56: result.domain = copy(defaults->domain); ! 57: if (*result.organization == '\0' && defaults->organization != NULL) ! 58: result.organization = copy(defaults->organization); ! 59: return(result); ! 60: } ! 61: ! 62: ! 63: static char * ! 64: copy(s) ! 65: char *s; ! 66: { ! 67: char *p; ! 68: extern char *malloc(); ! 69: ! 70: if ((p = malloc(strlen(s) + 1)) == NULL) { ! 71: exit(1); ! 72: } ! 73: (void) strcpy(p, s); ! 74: return (p); ! 75: } ! 76:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.