Annotation of researchv10no/cmd/asd/fullname.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     fullname -- return the full pathname corresponding to the
                      3:  *     abbreviated pathname given as argument.  Returned value
                      4:  *     is in a buffer that will stay around no longer than its
                      5:  *     argument or the next call to fullname, whichever is earlier.
                      6:  */
                      7: 
                      8: #include "asd.h"
                      9: 
                     10: char *
                     11: fullname (s)
                     12:        register char *s;
                     13: {
                     14:        register char *t;
                     15:        static char *r;
                     16:        static int size;
                     17:        register unsigned n;
                     18: 
                     19:        /* if first char is slash, absolute path */
                     20:        if (s[0] == '/')
                     21:                return s;
                     22:        
                     23:        /* strip leading './' */
                     24:        while (s[0] == '.' && s[1] == '/')
                     25:                s += 2;
                     26:        
                     27:        t = pwd();
                     28: 
                     29:        /* null string or "." means current directory */
                     30:        if (s[0] == '\0' || strcmp (s, ".") == 0)
                     31:                return t;
                     32:        
                     33:        n = strlen (s) + strlen (t) + 2;
                     34:        if (n > size) {
                     35:                r = ralloc (r, n);
                     36:                size = n;
                     37:        }
                     38: 
                     39:        strcpy (r, t);
                     40:        strcat (r, "/");
                     41:        strcat (r, s);
                     42: 
                     43:        return r;
                     44: }

unix.superglobalmegacorp.com

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