filter_knr2ansi.pl 769 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/perl
  2. #
  3. # Goes through the input line by line to find K&R style function
  4. # declarations, and replaces them with ANSI style declarations.
  5. #
  6. @blah = <>;
  7. for ($i = 0; $i < @blah; $i++)
  8. {
  9. if ($blah[$i] =~ /^([a-zA-Z_0-9]+)\s*\([^)]+\)\s*$/)
  10. {
  11. $name = $1;
  12. $funci = $i;
  13. $blah[$funci]="$name (";
  14. $i++;
  15. $lastline = $i;
  16. while ($lastline < @blah && $blah[$lastline] !~ /^{/)
  17. {
  18. $lastline++;
  19. }
  20. $lastline--;
  21. while ($i < @blah && $blah[$i] !~ /^{/)
  22. {
  23. $arg = $blah[$i];
  24. if ($i != $lastline)
  25. {
  26. $arg =~ s/;/,/g;
  27. }
  28. else
  29. {
  30. $arg =~ s/;//g;
  31. }
  32. $blah[$i] = "";
  33. $blah[$funci] = "$blah[$funci]" . "$arg";
  34. $i++;
  35. }
  36. $blah[$funci] = "$blah[$funci]" . ")\n";
  37. }
  38. }
  39. for ($i = 0; $i < @blah; $i++)
  40. {
  41. print $blah[$i];
  42. }