LCOV - code coverage report
Current view: top level - libreoffice/soltools/mkdepend - pr.c (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 25 47 53.2 %
Date: 2012-12-27 Functions: 2 3 66.7 %
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          34 : 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             :     register struct inclist *newfile;
      46             :     register struct filepointer *content;
      47             : 
      48             :     /*
      49             :      * First decide what the pathname of this include file really is.
      50             :      */
      51          34 :     newfile = inc_path(file->i_file, include, dot, incCollection);
      52          34 :     if (newfile == NULL) {
      53          13 :         if (failOK)
      54          34 :             return;
      55          13 :         if (file != file_red)
      56           2 :             warning("%s (reading %s, line %d): ",
      57             :                 file_red->i_file, file->i_file, filep->f_line);
      58             :         else
      59          11 :             warning("%s, line %d: ", file->i_file, filep->f_line);
      60          13 :         warning1("cannot find include file \"%s\"\n", include);
      61          13 :         show_where_not = TRUE;
      62          13 :         newfile = inc_path(file->i_file, include, dot, incCollection);
      63          13 :         show_where_not = FALSE;
      64             :     }
      65             : 
      66          34 :     if (newfile) {
      67             : 
      68             :         /* Only add new dependency files if they don't have "/usr/include" in them. */
      69          21 :         if (!(newfile && newfile->i_file && strstr(newfile->i_file, "/usr/"))) {
      70           0 :             included_by(file, newfile);
      71             :         }
      72             : 
      73          21 :         if (!newfile->i_searched) {
      74           9 :             newfile->i_searched = TRUE;
      75           9 :             content = getfile(newfile->i_file);
      76           9 :             find_includes(content, newfile, file_red, 0, failOK, incCollection, symbols);
      77           9 :             freefile(content);
      78             :         }
      79             :     }
      80             : }
      81             : 
      82           2 : void recursive_pr_include(head, file, base)
      83             :     register struct inclist *head;
      84             :     register char   *file, *base;
      85             : {
      86             :     register int    i;
      87             : 
      88           2 :     if (head->i_marked)
      89           2 :         return;
      90           2 :     head->i_marked = TRUE;
      91           2 :     if (head->i_file != file)
      92           0 :         pr(head, file, base);
      93           2 :     for (i=0; i<head->i_listlen; i++)
      94           0 :         recursive_pr_include(head->i_list[ i ], file, base);
      95             : }
      96             : 
      97           0 : size_t pr(ip, file, base)
      98             :     register struct inclist  *ip;
      99             :     char    *file, *base;
     100             : {
     101             :     size_t ret;
     102             :     static char *lastfile;
     103             :     static int  current_len;
     104             :     register int    len, i;
     105             :     char    buf[ BUFSIZ ];
     106             : 
     107           0 :     printed = TRUE;
     108           0 :     len = (int)strlen(ip->i_file)+1;
     109           0 :     if (current_len + len > width || file != lastfile) {
     110           0 :         lastfile = file;
     111           0 :         sprintf(buf, "\n%s%s%s: %s", objprefix, base, objsuffix,
     112             :             ip->i_file);
     113           0 :         len = current_len = (int)strlen(buf);
     114             :     }
     115             :     else {
     116           0 :         buf[0] = ' ';
     117           0 :         strcpy(buf+1, ip->i_file);
     118           0 :         current_len += len;
     119             :     }
     120           0 :     ret = fwrite(buf, len, 1, stdout);
     121             : 
     122             :     /*
     123             :      * If verbose is set, then print out what this file includes.
     124             :      */
     125           0 :     if (! verbose || ip->i_list == NULL || ip->i_notified)
     126           0 :         return ret;
     127           0 :     ip->i_notified = TRUE;
     128           0 :     lastfile = NULL;
     129           0 :     printf("\n# %s includes:", ip->i_file);
     130           0 :     for (i=0; i<ip->i_listlen; i++)
     131           0 :         printf("\n#\t%s", ip->i_list[ i ]->i_incstring);
     132           0 :     return ret;
     133             : }
     134             : 
     135             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10