mkenumb 865 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. BEGIN{
  2. oargc = 0;
  3. for(argc = 1; argc < ARGC; argc++){
  4. if(ARGV[argc] !~ /^-.+/ || ARGV[argc] ~ /--/)
  5. break;
  6. if(ARGV[argc] != "-D")
  7. oargv[ARGV[argc]] = oargc++;
  8. else
  9. DEBUG = 1;
  10. ARGV[argc] = "";
  11. }
  12. }
  13. /^enum([ \t]*{|$)/{
  14. inenum = 1;
  15. if(DEBUG)
  16. printf "inenum = 1\n";
  17. next;
  18. }
  19. inenum && /^};$/{
  20. if(DEBUG)
  21. printf "inenum = 0\n";
  22. inenum = 0;
  23. }
  24. inenum && $0 ~ /^[ \t]+[_A-Za-z][_0-9A-Za-z]+[ \t]+=[ \t]+[0-9A-Z_a-z()<> ]+,/{
  25. tab = "\t";
  26. if(length($1) < 8)
  27. sep = tab tab;
  28. else
  29. sep = tab;
  30. split($3, a, ",");
  31. gsub(/ull/, "", a[1])
  32. printf "#define %s%s%s", $1, sep, a[1];
  33. if(match($0, /\/\*.*\*\/$/)){
  34. len = length(a[1]);
  35. sep = "";
  36. while(len < 24){
  37. sep = sep tab;
  38. len += 8;
  39. }
  40. printf "%s%s", sep, substr($0, RSTART);
  41. }
  42. printf "\n"
  43. }
  44. !inenum && /^#(define|include) /{
  45. printf "%s\n", $0;
  46. }
  47. /^$/{
  48. printf "\n";
  49. }
  50. END{}