#!/usr/bin/perl -w
#
# Copyright by The HDF Group.
# 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://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
# access to either file, you may request a copy from help@hdfgroup.org.
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(_NOINIT)*/;
  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
  }