Annotation of researchv10no/cmd/asd/transname.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *     transname - take a pathname, expand it, and translate it
        !             3:  *     according to the replist.  The result is in a buffer
        !             4:  *     that will stay around no longer than the next call
        !             5:  *     to transname.  If no translation, transname will
        !             6:  *     just return fullname applied to its argument.
        !             7:  */
        !             8: 
        !             9: #include "asd.h"
        !            10: 
        !            11: char *
        !            12: transname (s)
        !            13:        register char *s;
        !            14: {
        !            15:        register struct replist *rl;
        !            16:        static char *res;
        !            17:        static int size;
        !            18:        register int n;
        !            19: 
        !            20:        s = fullname (s);
        !            21: 
        !            22:        /* look for substitution */
        !            23:        for (rl = replist; rl; rl = rl->link) {
        !            24:                register char *p = rl->source;
        !            25:                register char *q = s;
        !            26: 
        !            27:                /* comparison loop */
        !            28:                while (*p != '\0' && *p == *q) {
        !            29:                        p++;
        !            30:                        q++;
        !            31:                }
        !            32: 
        !            33:                if (*p == '\0') {
        !            34:                        /* comparison successful */
        !            35:                        n = strlen (rl->dest) + strlen (q) + 1;
        !            36:                        if (n > size) {
        !            37:                                size = n;
        !            38:                                res = ralloc (res, (unsigned) n);
        !            39:                        }
        !            40:                        strcpy (res, rl->dest);
        !            41:                        strcat (res, q);
        !            42:                        return res;
        !            43:                }
        !            44:        }
        !            45: 
        !            46:        /* search loop failed, return expanded input */
        !            47:        return s;
        !            48: }

unix.superglobalmegacorp.com

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