summaryrefslogtreecommitdiffstats
path: root/bin/checkapi
blob: 293522735876e15531391b7d5944276c2f613ba9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl -w
#
# Copyright by the Board of Trustees of the University of Illinois.
# All rights reserved.
#
# This file is part of HDF5.  The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the files COPYING and Copyright.html.  COPYING can be found at the root
# of the source code distribution tree; Copyright.html can be found at the
# root level of an installed copy of the electronic HDF5 document set and
# is linked from the top-level documents page.  It can also be found at
# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html.  If you do not have
# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
#
require 5.003;

# Purpose: insures that API functions aren't called internally.
# Usage:   checkapi H5*.c
my $comment = 0;
while (<>) {

  # Remove comments within the line.
  s/\/\*.*?\*\///g;

  # Process comment begin and end tokens on this line.
  $comment-- if /\*\//;		# count comment ends
  next if $comment;		# skip line if in comment
  $comment++ if /\/\*/;		# count comment starts
  s/(.*)\/\*.*/$1/;		# remove comments that begin on this line

  # Remove character strings
  s/\\.//g;			# remove escaped characters
  s/\".*?\"//g;			# remove string constants

  # Disregard the following hits
  next if /^H5/;
  next if /^\#/;
  next if /FUNC_ENTER/;

  next unless /(H5[A-Z]{1,2}[a-z]\w*)/;
  print "$ARGV:$.: $1\n";
} continue {
  if (eof) {
    print "$ARGV:$.: bad comment nesting\n" if $comment;
    $comment = 0;
    close ARGV;		# reset line number
  }
}