diff contrib/filter_knr2ansi.pl @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/filter_knr2ansi.pl	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+#
+# Goes through the input line by line to find K&R style function
+# declarations, and replaces them with ANSI style declarations.
+#
+@blah = <>;
+
+for ($i = 0; $i < @blah; $i++)
+{
+	if ($blah[$i] =~ /^([a-zA-Z_0-9]+)\s*\([^)]+\)\s*$/)
+	{
+		$name = $1;
+		$funci = $i;
+		$blah[$funci]="$name (";
+		$i++;
+		$lastline = $i;
+		while ($lastline < @blah && $blah[$lastline] !~ /^{/)
+		{
+			$lastline++;
+		}
+		$lastline--;
+		while ($i < @blah && $blah[$i] !~ /^{/)
+		{
+			$arg = $blah[$i];
+			if ($i != $lastline)
+			{
+				$arg =~ s/;/,/g;
+			}
+			else
+			{
+				$arg =~ s/;//g;
+			}
+			$blah[$i] = "";
+			$blah[$funci] = "$blah[$funci]" . "$arg";
+			$i++;
+		}
+		$blah[$funci] = "$blah[$funci]" . ")\n";
+	}
+}
+
+for ($i = 0; $i < @blah; $i++)
+{
+	print $blah[$i];
+}
+