check_defines.lua 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. usedlines = {c={}, n={}}
  2. useddefs = {c={}, n={}}
  3. function AddElem(tab, q)
  4. if (tab.c[q]) then
  5. tab.c[q] = tab.c[q] + 1
  6. else
  7. tab.c[q] = 1
  8. tab.n[#tab.n+1]=q
  9. end
  10. end
  11. function PrintTab(tab)
  12. table.sort(tab.n)
  13. for _,n in ipairs(tab.n) do
  14. --print(tab.c[n], n)
  15. print(n)
  16. end
  17. end
  18. function noifdef(f)
  19. local out = {}
  20. local changed = false
  21. for l in io.lines(f) do
  22. local n = l:gsub("^#ifdef ([%w_]+)", "#if defined(%1)")
  23. n = n:gsub("^#ifndef ([%w_]+)", "#if !defined(%1)")
  24. out[#out+1] = (n)
  25. if l ~= n then
  26. --print(l , "-->", n)
  27. changed = true
  28. end
  29. if n:match("^#if") then
  30. local q = n:gsub("%/%*.+%*%/", "")
  31. q = q:gsub("%s+$", "")
  32. q = q:gsub("^%s+", "")
  33. q = q:gsub("%s+", " ")
  34. AddElem(usedlines, q)
  35. for w in q:gmatch("%(%s*([%w_]+)%s*%)") do
  36. AddElem(useddefs, w)
  37. end
  38. end
  39. end
  40. if changed then
  41. local f = io.open(f, "w")
  42. for _,l in pairs(out) do
  43. f:write(l .. "\n")
  44. end
  45. f:close()
  46. print(f .. " rewritten")
  47. end
  48. -- print(#out .. " lines processed")
  49. end
  50. path = path or ""
  51. noifdef(path .. "src/civetweb.c")
  52. noifdef(path .. "src/civetweb_private_lua.h")
  53. noifdef(path .. "src/main.c")
  54. noifdef(path .. "src/md5.inl")
  55. noifdef(path .. "src/mod_duktape.inl")
  56. noifdef(path .. "src/mod_lua.inl")
  57. noifdef(path .. "src/sha1.inl")
  58. noifdef(path .. "src/timer.inl")
  59. noifdef(path .. "src/wolfssl_extras.inl")
  60. --PrintTab(usedlines)
  61. --print("Defines used")
  62. PrintTab(useddefs)