diff options
author | David A. Wheeler <dwheeler@dwheeler.com> | 2013-08-25 08:16:13 -0400 |
---|---|---|
committer | David A. Wheeler <dwheeler@dwheeler.com> | 2013-08-25 08:16:13 -0400 |
commit | ba8f663f16c3e8c4abd2ef7ec5966a7dc338b962 (patch) | |
tree | c86c5d0b270f81c1fb72b5bb4a3db277ad2bd1e1 /fortran_count | |
download | sloccount-git-ba8f663f16c3e8c4abd2ef7ec5966a7dc338b962.tar.gz |
Initial commit of version 2.26.
Diffstat (limited to 'fortran_count')
-rwxr-xr-x | fortran_count | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/fortran_count b/fortran_count new file mode 100755 index 0000000..4df1f32 --- /dev/null +++ b/fortran_count @@ -0,0 +1,83 @@ +#!/usr/bin/perl +# fortran_count - count physical lines of code in Fortran 77. +# Usage: fortran_count [-f file] [list_of_files] +# file: file with a list of files to count (if "-", read list from stdin) +# list_of_files: list of files to count +# -f file or list_of_files can be used, or both + +# Ignores comment-only lines +# (where column 1 character = C, c, *, or !, +# or where a ! is preceded only by white space) +# Lines beginning with !hpf$ or !omp$ are not comments lines either. + +# This is part of SLOCCount, a toolsuite that counts +# source lines of code (SLOC). +# Copyright (C) 2001-2004 David A. Wheeler. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# To contact David A. Wheeler, see his website at: +# http://www.dwheeler.com. +# +# + +$total_sloc = 0; + +# Do we have "-f" (read list of files from second argument)? +if (($#ARGV >= 1) && ($ARGV[0] eq "-f")) { + # Yes, we have -f + if ($ARGV[1] eq "-") { + # The list of files is in STDIN + while (<STDIN>) { + chomp ($_); + &count_file ($_); + } + } else { + # The list of files is in the file $ARGV[1] + open (FILEWITHLIST, $ARGV[1]) || die "Error: Could not open $ARGV[1]\n"; + while (<FILEWITHLIST>) { + chomp ($_); + &count_file ($_); + } + close FILEWITHLIST; + } + shift @ARGV; shift @ARGV; +} +# Process all (remaining) arguments as file names +while ($file = shift @ARGV) { + &count_file ($file); +} + +print "Total:\n"; +print "$total_sloc\n"; + +sub count_file { + my ($file) = @_; + my $sloc = 0; + + open (FILE, $file); + while (<FILE>) { + # a normal comment is m/^[c*!]/i + # a fancier comment is m/^\s+!/i + # an empty line is m/^\s*$/i + # a HPF statement is m/^[c*!]hpf\$/i + # an Open MP statement is m/^[c*!]omp\$/i + if (! m/^([c*!]|\s+!|\s*$)/i || m/^[c*!](hpf|omp)\$/i) {$sloc++;} + } + print "$sloc $file\n"; + $total_sloc += $sloc; + $sloc = 0; + close (FILE); +} |