Annotation of researchv9/X11/src/X.V11R1/util/makedepend/pr.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * $Header: pr.c,v 1.2 87/08/14 18:08:47 toddb Exp $
        !             3:  *
        !             4:  * $Log:       pr.c,v $
        !             5:  * Revision 1.2  87/08/14  18:08:47  toddb
        !             6:  * Don't unmark each included file in recursive_pr_includes(): leaving it
        !             7:  * marked prevents multiple inclusions from being printed if an include
        !             8:  * file happens to be a terminal node on the graph.
        !             9:  * 
        !            10:  * Revision 1.1  87/08/14  18:01:02  toddb
        !            11:  * Initial revision
        !            12:  * 
        !            13:  * Revision 1.1  87/04/08  16:40:57  rich
        !            14:  * Initial revision
        !            15:  * 
        !            16:  * Revision 1.2  86/04/18  14:06:52  toddb
        !            17:  * Added a new field to struct inclist: "i_marked".  This is used
        !            18:  * by recursive_pr() to tell if it is traversing a loop of include
        !            19:  * files.
        !            20:  * 
        !            21:  * Revision 1.1  86/04/15  08:34:45  toddb
        !            22:  * Initial revision
        !            23:  * 
        !            24:  */
        !            25: #include "def.h"
        !            26: 
        !            27: extern struct  inclist inclist[ MAXFILES ],
        !            28:                        *inclistp;
        !            29: extern char    *objfile;
        !            30: extern int     width;
        !            31: extern boolean printed;
        !            32: extern boolean verbose;
        !            33: extern boolean show_where_not;
        !            34: 
        !            35: add_include(file, file_red, include, dot)
        !            36:        struct inclist  *file, *file_red;
        !            37:        char    *include;
        !            38:        boolean dot;
        !            39: {
        !            40:        register struct inclist *newfile;
        !            41:        register struct filepointer     *content;
        !            42: 
        !            43:        /*
        !            44:         * First decide what the pathname of this include file really is.
        !            45:         */
        !            46:        newfile = inc_path(file->i_file, include, dot);
        !            47:        if (newfile == NULL) {
        !            48:                if (file != file_red)
        !            49:                        log("%s (reading %s): ",
        !            50:                                file_red->i_file, file->i_file);
        !            51:                else
        !            52:                        log("%s: ", file->i_file);
        !            53:                log("cannot find include file \"%s\"\n", include);
        !            54:                show_where_not = TRUE;
        !            55:                newfile = inc_path(file->i_file, include, dot);
        !            56:                show_where_not = FALSE;
        !            57:        }
        !            58: 
        !            59:        included_by(file, newfile);
        !            60:        if (!newfile->i_searched) {
        !            61:                newfile->i_searched = TRUE;
        !            62:                content = getfile(newfile->i_file);
        !            63:                find_includes(content, newfile, file_red, 0);
        !            64:                freefile(content);
        !            65:        }
        !            66: }
        !            67: 
        !            68: recursive_pr_include(head, file, base)
        !            69:        register struct inclist *head;
        !            70:        register char   *file, *base;
        !            71: {
        !            72:        register int    i;
        !            73: 
        !            74:        if (head->i_marked)
        !            75:                return;
        !            76:        head->i_marked = TRUE;
        !            77:        if (head->i_file != file)
        !            78:                pr(head, file, base);
        !            79:        for (i=0; i<head->i_listlen; i++)
        !            80:                recursive_pr_include(head->i_list[ i ], file, base);
        !            81: }
        !            82: 
        !            83: pr(ip, file, base)
        !            84:        register struct inclist  *ip;
        !            85:        char    *file, *base;
        !            86: {
        !            87:        static char     *lastfile;
        !            88:        static int      current_len;
        !            89:        register int    len, i;
        !            90:        char    buf[ BUFSIZ ];
        !            91: 
        !            92:        printed = TRUE;
        !            93:        len = strlen(ip->i_file)+1;
        !            94:        if (current_len + len > width || file != lastfile) {
        !            95:                lastfile = file;
        !            96:                sprintf(buf, "\n%s%s: %s", base, objfile, ip->i_file);
        !            97:                len = current_len = strlen(buf);
        !            98:        }
        !            99:        else {
        !           100:                buf[0] = ' ';
        !           101:                strcpy(buf+1, ip->i_file);
        !           102:                current_len += len;
        !           103:        }
        !           104:        fwrite(buf, len, 1, stdout);
        !           105: 
        !           106:        /*
        !           107:         * If verbose is set, then print out what this file includes.
        !           108:         */
        !           109:        if (! verbose || ip->i_list == NULL || ip->i_notified)
        !           110:                return;
        !           111:        ip->i_notified = TRUE;
        !           112:        lastfile = NULL;
        !           113:        printf("\n# %s includes:", ip->i_file);
        !           114:        for (i=0; i<ip->i_listlen; i++)
        !           115:                printf("\n#\t%s", ip->i_list[ i ]->i_incstring);
        !           116: }
        !           117: 
        !           118: catch(n)
        !           119: {
        !           120:        fflush(stdout);
        !           121:        log_fatal("got signal %d\n", n);
        !           122: }

unix.superglobalmegacorp.com

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