summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/c_lines.awk
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/c_lines.awk')
-rwxr-xr-xreference/C/CONTRIB/SNIP/c_lines.awk43
1 files changed, 43 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/c_lines.awk b/reference/C/CONTRIB/SNIP/c_lines.awk
new file mode 100755
index 0000000..219138c
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/c_lines.awk
@@ -0,0 +1,43 @@
+# count lines in a C program, not counting comments, blank lines or
+# form feeds
+# does separate count of preprocessor directives
+# if a preprocessor directive is commented out, it does not count
+#
+# By: Dan Kozak
+
+{
+ if (file == "") {
+ file = FILENAME
+ }
+ if (file != FILENAME) {
+ printf("Number of lines in %s is: %d\n",file,nl+ppd)
+ printf("Number of preprocessor directives is: %d\n",ppd)
+ printf("Number of lines excluding preprocessor directives is: %d\n\n",nl)
+ file = FILENAME
+ tnl += nl
+ tppd += ppd
+ nl = 0
+ ppd = 0
+ }
+
+ if ($0 == "") { ; }
+ else if ($1 ~ /^\/\*/ && $NF ~ /\*\/$/) { ; }
+ else if ($0 ~ /\/\*/ && $0 !~ /\*\//) { in_comment = 1 }
+ else if ($0 !~ /\/\*/ && $0 ~ /\*\//) { in_comment = 0 }
+ else if (in_comment) { ; }
+ else if ($1 ~ /^#/) { ppd++ }
+ else { nl++ }
+}
+
+END { printf("Number of lines in %s is: %d\n",file,nl+ppd)
+ printf("Number of preprocessor directives is: %d\n",ppd)
+ printf("Number of lines excluding preprocessor directives is:
+%d\n\n",nl)
+ file = FILENAME
+ tnl += nl
+ tppd += ppd
+ printf("Total number of lines is: %d\n",tnl+tppd)
+ printf("Number of preprocessor directives is: %d\n",tppd)
+ printf("Number of lines excluding preprocessor directives is:
+%d\n",tnl)
+ }