source: git/kernel/check_aso.pl @ 83bde7

spielwiese
Last change on this file since 83bde7 was 341696, checked in by Hans Schönemann <hannes@…>, 14 years ago
Adding Id property to all files git-svn-id: file:///usr/local/Singular/svn/trunk@12231 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.7 KB
Line 
1#!/usr/local/bin/perl
2###########################################################################
3# $Id$
4
5###########################################################################
6##
7## FILE: check_aso.pl
8## PURPOSE: checks source files for Alloc(sizeof(..)) statements and
9##          fixes them, if requested
10## AUTHOR: obachman (10/99)
11##
12
13$Usage = <<EOT;
14$0 [-fh] file(s)
15Checks source files for Alloc(sizeof(..)) statements and
16fixes them, if -f
17EOT
18
19# parse command-line options 
20while  (@ARGV && $ARGV[0] =~ /^-/) 
21{
22  $_ = shift(@ARGV);
23  if (/^-h/)
24  {
25    print STDOUT $Usage;
26    exit(0);
27  }
28# $fix = 1 if /^-f/;
29}
30
31
32# process file
33while (<>)
34{
35  # Check for Alloc(sizeof(..)), Free(..,sizeof(..))
36  if (/(^|[^\w])(Alloc|Alloc0|AllocAligned|AllocAligned0)\s*\(\s*sizeof\s*\(\s*([^\)]*)\s*\)\s*\)/ 
37      ||
38      /(^|[^\w])(Free|FreeAligned)\s*\(.*,\s*sizeof\s*\(\s*([^\)]*)\s*\)\s*\)/)
39  {
40    $what = $3;
41    $alloc = $2;
42    $what =~ s/^\s*//;
43    $what =~ s/\s*$//;
44    if ($what !~ /^\w[\w\d]*$/)
45    {
46      print STDERR "Warning: Argument $what to $alloc does not match \w[\w\d]* at $ARGV:$.\n";
47    }
48    else
49    {
50      # error if inside sizeof(..) is weird
51      print STDERR "Warning: $alloc(sizeof($what)) found at $ARGV:$.";
52      if ($fix)
53      {
54        s/sizeof\s*\(\s*$what\s*\)/$what/; 
55        $what = $alloc."SizeOf";
56        s/$alloc/$what/;
57        $fixed = 1;
58        print " (fixed)\n";
59      }
60      else
61      {
62        print "\nRun '$0 -f $ARGV' to fix\n";
63      }
64    }
65  }
66  $content .= $_ if $fix;
67} 
68continue
69{
70  if (eof)
71  {
72    close ARGV;
73    if ($fix && $fixed)
74    {
75      print STDERR "Creating $ARGV.bak and fixing $ARGV\n";
76      system("cp $ARGV $ARGV.bak");
77      open(ARGV, ">$ARGV");
78      print ARGV $content;
79      close(ARGV);
80      $fixed = 0;
81    }
82  }
83}
84
Note: See TracBrowser for help on using the repository browser.