mk-string-arrays.pl
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:1k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. #******************************************************************************
  2. # $Id: mk-string-arrays.pl,v 1.4 1998/04/07 23:31:51 rousskov Exp $
  3. #
  4. # File: mk-strs.pl
  5. #
  6. # Author: Max Okumoto <okumoto@ucsd.edu>
  7. #
  8. # Abstract: This perl script parses enums and builds an array of
  9. # printable strings.
  10. #
  11. # Warning: The parser is very simplistic, and will prob not work for
  12. # things other than squid.
  13. #******************************************************************************
  14. $pat{'err_type'} = "err_type_str";
  15. $pat{'icp_opcode'} = "icp_opcode_str";
  16. $pat{'swap_log_op'} = "swap_log_op_str";
  17. $pat{'lookup_t'} = "lookup_t_str";
  18. $state = 0; # start state
  19. while (<>) {
  20. if ($state == 0) {
  21. # Looking for start of typedef
  22. if (/^typedef enum /) {
  23. $count = 0; # enum index
  24. $state = 1;
  25. }
  26. next;
  27. } elsif ($state == 1) {
  28. # Looking for end of typedef
  29. if (/^} /) {
  30. ($b, $t) = split(/[ t;]/, $_);
  31. if (defined($pat{$t})) {
  32. print "const char *$pat{$t}[] = n";
  33. print "{n";
  34. for ($i = 0; $i < $count; $i++) {
  35. printf "t"%s"%sn",
  36. $ea[$i],
  37. $i == $count - 1 ? '' : ',';
  38. }
  39. print "};n";
  40. print "n";
  41. }
  42. $state = 0;
  43. } else {
  44. ($e) = split(' ', $_);
  45. $e =~ s/,//;
  46. $ea[$count] = $e;
  47. $count++;
  48. }
  49. next;
  50. }
  51. }
  52. exit 0;