Print this page
    
11972 resync smatch
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/tools/smatch/src/test-parsing.c
          +++ new/usr/src/tools/smatch/src/test-parsing.c
   1    1  /*
   2    2   * Example trivial client program that uses the sparse library
   3    3   * to tokenize, preprocess and parse a C file, and prints out
   4    4   * the results.
   5    5   *
   6    6   * Copyright (C) 2003 Transmeta Corp.
   7    7   *               2003 Linus Torvalds
   8    8   *
   9    9   * Permission is hereby granted, free of charge, to any person obtaining a copy
  10   10   * of this software and associated documentation files (the "Software"), to deal
  11   11   * in the Software without restriction, including without limitation the rights
  12   12   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  13   13   * copies of the Software, and to permit persons to whom the Software is
  14   14   * furnished to do so, subject to the following conditions:
  15   15   *
  16   16   * The above copyright notice and this permission notice shall be included in
  17   17   * all copies or substantial portions of the Software.
  18   18   *
  19   19   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  20   20   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21   21   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  22   22   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  23   23   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  24   24   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  25   25   * THE SOFTWARE.
  26   26   */
  27   27  #include <stdarg.h>
  28   28  #include <stdlib.h>
  29   29  #include <stdio.h>
  30   30  #include <string.h>
  31   31  #include <ctype.h>
  32   32  #include <unistd.h>
  33   33  #include <fcntl.h>
  34   34  
  35   35  #include "lib.h"
  36   36  #include "allocate.h"
  37   37  #include "token.h"
  38   38  #include "parse.h"
  39   39  #include "symbol.h"
  40   40  #include "expression.h"
  41   41  
  42   42  static void clean_up_symbols(struct symbol_list *list)
  43   43  {
  44   44          struct symbol *sym;
  45   45  
  46   46          FOR_EACH_PTR(list, sym) {
  47   47                  expand_symbol(sym);
  48   48          } END_FOR_EACH_PTR(sym);
  49   49  }
  50   50  
  51   51  int main(int argc, char **argv)
  52   52  {
  53   53          struct symbol_list * list;
  54   54          struct string_list * filelist = NULL;
  55   55          char *file;
  56   56  
  
    | 
      ↓ open down ↓ | 
    56 lines elided | 
    
      ↑ open up ↑ | 
  
  57   57          list = sparse_initialize(argc, argv, &filelist);
  58   58  
  59   59          // Simplification
  60   60          clean_up_symbols(list);
  61   61  
  62   62  #if 1
  63   63          show_symbol_list(list, "\n\n");
  64   64          printf("\n\n");
  65   65  #endif
  66   66  
  67      -        FOR_EACH_PTR_NOTAG(filelist, file) {
       67 +        FOR_EACH_PTR(filelist, file) {
  68   68                  list = sparse(file);
  69   69  
  70   70                  // Simplification
  71   71                  clean_up_symbols(list);
  72   72  
  73   73  #if 1
  74   74                  // Show the end result.
  75   75                  show_symbol_list(list, "\n\n");
  76   76                  printf("\n\n");
  77   77  #endif
  78      -        } END_FOR_EACH_PTR_NOTAG(file);
       78 +        } END_FOR_EACH_PTR(file);
  79   79  
  80   80  #if 0
  81   81          // And show the allocation statistics
  82   82          show_ident_alloc();
  83   83          show_token_alloc();
  84   84          show_symbol_alloc();
  85   85          show_expression_alloc();
  86   86          show_statement_alloc();
  87   87          show_string_alloc();
  88   88          show_bytes_alloc();
  89   89  #endif
  90   90          return 0;
  91   91  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX