Annotation of 43BSD/contrib/xns/morexnslib/ch/CHstrtoname.c, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.