LCOV - code coverage report
Current view: top level - soltools/mkdepend - pr.c (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 62 0.0 %
Date: 2014-11-03 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /* $XConsortium: pr.c,v 1.17 94/04/17 20:10:38 gildea Exp $ */
       3             : /*
       4             : 
       5             : Copyright (c) 1993, 1994  X Consortium
       6             : 
       7             : Permission is hereby granted, free of charge, to any person obtaining a copy
       8             : of this software and associated documentation files (the "Software"), to deal
       9             : in the Software without restriction, including without limitation the rights
      10             : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      11             : copies of the Software, and to permit persons to whom the Software is
      12             : furnished to do so, subject to the following conditions:
      13             : 
      14             : The above copyright notice and this permission notice shall be included in
      15             : all copies or substantial portions of the Software.
      16             : 
      17             : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      18             : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      19             : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
      20             : X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
      21             : AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
      22             : CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
      23             : 
      24             : Except as contained in this notice, the name of the X Consortium shall not be
      25             : used in advertising or otherwise to promote the sale, use or other dealings
      26             : in this Software without prior written authorization from the X Consortium.
      27             : 
      28             : */
      29             : 
      30             : #include "def.h"
      31             : #include <string.h>
      32             : size_t pr( struct inclist *ip, char *file,char *base);
      33             : 
      34             : extern struct   inclist inclist[ MAXFILES ],
      35             :                 *inclistp;
      36             : extern char *objprefix;
      37             : extern char *objsuffix;
      38             : extern int  width;
      39             : extern boolean  printed;
      40             : extern boolean  verbose;
      41             : extern boolean  show_where_not;
      42             : 
      43           0 : void add_include(struct filepointer *filep, struct inclist *file, struct inclist *file_red, char *include, boolean dot, boolean failOK, struct IncludesCollection* incCollection, struct symhash *symbols)
      44             : {
      45             :     struct inclist *newfile;
      46             :     struct filepointer *content;
      47             : 
      48             :     /*
      49             :      * First decide what the pathname of this include file really is.
      50             :      */
      51           0 :     newfile = inc_path(file->i_file, include, dot, incCollection);
      52           0 :     if (newfile == NULL) {
      53           0 :         if (failOK)
      54           0 :             return;
      55           0 :         if (file != file_red)
      56           0 :             warning("%s (reading %s, line %d): ",
      57             :                 file_red->i_file, file->i_file, filep->f_line);
      58             :         else
      59           0 :             warning("%s, line %d: ", file->i_file, filep->f_line);
      60           0 :         warning1("cannot find include file \"%s\"\n", include);
      61           0 :         show_where_not = TRUE;
      62           0 :         newfile = inc_path(file->i_file, include, dot, incCollection);
      63           0 :         show_where_not = FALSE;
      64             :     }
      65             : 
      66           0 :     if (newfile) {
      67             : 
      68             :         /* Only add new dependency files if they don't have "/usr/include" in them. */
      69           0 :         if (!(newfile && newfile->i_file && strstr(newfile->i_file, "/usr/"))) {
      70           0 :             included_by(file, newfile);
      71             :         }
      72             : 
      73           0 :         if (!newfile->i_searched) {
      74           0 :             newfile->i_searched = TRUE;
      75           0 :             content = getfile(newfile->i_file);
      76           0 :             find_includes(content, newfile, file_red, 0, failOK, incCollection, symbols);
      77           0 :             freefile(content);
      78             :         }
      79             :     }
      80             : }
      81             : 
      82           0 : void pr_dummy(struct inclist  *ip)
      83             : {
      84           0 :     fwrite(ip->i_file, strlen(ip->i_file), 1, stdout);
      85           0 :     fwrite(" :\n\n", 4, 1, stdout);
      86           0 : }
      87             : 
      88           0 : void recursive_pr_dummy(struct inclist *head, char *file)
      89             : {
      90             :     int    i;
      91             : 
      92           0 :     if (head->i_marked == 2)
      93           0 :         return;
      94           0 :     head->i_marked = 2; // it's a large boolean...
      95           0 :     if (head->i_file != file)
      96           0 :         pr_dummy(head);
      97           0 :     for (i=0; i<head->i_listlen; i++)
      98           0 :         recursive_pr_dummy(head->i_list[ i ], file);
      99             : }
     100             : 
     101             : 
     102           0 : void recursive_pr_include(struct inclist *head, char *file, char *base)
     103             : {
     104             :     int    i;
     105             : 
     106           0 :     if (head->i_marked)
     107           0 :         return;
     108           0 :     head->i_marked = TRUE;
     109           0 :     if (head->i_file != file)
     110           0 :         pr(head, file, base);
     111           0 :     for (i=0; i<head->i_listlen; i++)
     112           0 :         recursive_pr_include(head->i_list[ i ], file, base);
     113             : }
     114             : 
     115           0 : size_t pr(struct inclist *ip, char *file, char *base)
     116             : {
     117             :     size_t ret;
     118             :     static char *lastfile;
     119             :     static int  current_len;
     120             :     int    len, i;
     121             :     char    buf[ BUFSIZ ];
     122             : 
     123           0 :     printed = TRUE;
     124           0 :     len = (int)strlen(ip->i_file)+4;
     125           0 :     if (file != lastfile) {
     126           0 :         lastfile = file;
     127           0 :         sprintf(buf, "\n%s%s%s: \\\n %s", objprefix, base, objsuffix,
     128             :             ip->i_file);
     129           0 :         len = current_len = (int)strlen(buf);
     130             :     }
     131             :     else {
     132           0 :         buf[0] = ' ';
     133           0 :         buf[1] = '\\';
     134           0 :         buf[2] = '\n';
     135           0 :         buf[3] = ' ';
     136           0 :         strcpy(buf+4, ip->i_file);
     137           0 :         current_len += len;
     138             :     }
     139           0 :     ret = fwrite(buf, len, 1, stdout);
     140             : 
     141             :     /*
     142             :      * If verbose is set, then print out what this file includes.
     143             :      */
     144           0 :     if (! verbose || ip->i_list == NULL || ip->i_notified)
     145           0 :         return ret;
     146           0 :     ip->i_notified = TRUE;
     147           0 :     lastfile = NULL;
     148           0 :     printf("\n# %s includes:", ip->i_file);
     149           0 :     for (i=0; i<ip->i_listlen; i++)
     150           0 :         printf("\n#\t%s", ip->i_list[ i ]->i_incstring);
     151           0 :     return ret;
     152             : }
     153             : 
     154             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10