remind-rb 6.2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +328 -0
  3. data/README.md +141 -0
  4. data/ext/remind/shim.c +379 -0
  5. data/lib/remind/builder.rb +252 -0
  6. data/lib/remind/library.rb +141 -0
  7. data/lib/remind/native.rb +257 -0
  8. data/lib/remind/reminder.rb +527 -0
  9. data/lib/remind/runtime.rb +130 -0
  10. data/lib/remind/session.rb +246 -0
  11. data/lib/remind/source.rb +160 -0
  12. data/lib/remind/value.rb +170 -0
  13. data/lib/remind/version.rb +13 -0
  14. data/lib/remind.rb +147 -0
  15. data/remind-v06.02.10/COPYRIGHT +300 -0
  16. data/remind-v06.02.10/configure +5684 -0
  17. data/remind-v06.02.10/configure.ac +131 -0
  18. data/remind-v06.02.10/docs/WHATSNEW +3858 -0
  19. data/remind-v06.02.10/include/ansitext.rem +35 -0
  20. data/remind-v06.02.10/include/holidays/ad/02.rem +15 -0
  21. data/remind-v06.02.10/include/holidays/ad/03.rem +14 -0
  22. data/remind-v06.02.10/include/holidays/ad/04.rem +14 -0
  23. data/remind-v06.02.10/include/holidays/ad/05.rem +14 -0
  24. data/remind-v06.02.10/include/holidays/ad/06.rem +16 -0
  25. data/remind-v06.02.10/include/holidays/ad/07.rem +15 -0
  26. data/remind-v06.02.10/include/holidays/ad/08.rem +14 -0
  27. data/remind-v06.02.10/include/holidays/ad.rem +28 -0
  28. data/remind-v06.02.10/include/holidays/ae.rem +10 -0
  29. data/remind-v06.02.10/include/holidays/al.rem +33 -0
  30. data/remind-v06.02.10/include/holidays/am.rem +19 -0
  31. data/remind-v06.02.10/include/holidays/ao.rem +41 -0
  32. data/remind-v06.02.10/include/holidays/ar.rem +38 -0
  33. data/remind-v06.02.10/include/holidays/as.rem +40 -0
  34. data/remind-v06.02.10/include/holidays/at/1.rem +15 -0
  35. data/remind-v06.02.10/include/holidays/at/2.rem +16 -0
  36. data/remind-v06.02.10/include/holidays/at/3.rem +15 -0
  37. data/remind-v06.02.10/include/holidays/at/4.rem +15 -0
  38. data/remind-v06.02.10/include/holidays/at/5.rem +15 -0
  39. data/remind-v06.02.10/include/holidays/at/6.rem +15 -0
  40. data/remind-v06.02.10/include/holidays/at/7.rem +15 -0
  41. data/remind-v06.02.10/include/holidays/at/8.rem +15 -0
  42. data/remind-v06.02.10/include/holidays/at/9.rem +15 -0
  43. data/remind-v06.02.10/include/holidays/at.rem +32 -0
  44. data/remind-v06.02.10/include/holidays/au/act.rem +27 -0
  45. data/remind-v06.02.10/include/holidays/au/nsw.rem +25 -0
  46. data/remind-v06.02.10/include/holidays/au/nt.rem +28 -0
  47. data/remind-v06.02.10/include/holidays/au/qld.rem +23 -0
  48. data/remind-v06.02.10/include/holidays/au/sa.rem +29 -0
  49. data/remind-v06.02.10/include/holidays/au/tas.rem +16 -0
  50. data/remind-v06.02.10/include/holidays/au/vic.rem +24 -0
  51. data/remind-v06.02.10/include/holidays/au/wa.rem +24 -0
  52. data/remind-v06.02.10/include/holidays/au.rem +21 -0
  53. data/remind-v06.02.10/include/holidays/aw.rem +19 -0
  54. data/remind-v06.02.10/include/holidays/az.rem +44 -0
  55. data/remind-v06.02.10/include/holidays/ba/bih.rem +23 -0
  56. data/remind-v06.02.10/include/holidays/ba/brc.rem +20 -0
  57. data/remind-v06.02.10/include/holidays/ba/srp.rem +23 -0
  58. data/remind-v06.02.10/include/holidays/ba.rem +22 -0
  59. data/remind-v06.02.10/include/holidays/bb.rem +28 -0
  60. data/remind-v06.02.10/include/holidays/bd.rem +14 -0
  61. data/remind-v06.02.10/include/holidays/be.rem +24 -0
  62. data/remind-v06.02.10/include/holidays/bf.rem +29 -0
  63. data/remind-v06.02.10/include/holidays/bg.rem +34 -0
  64. data/remind-v06.02.10/include/holidays/bh.rem +11 -0
  65. data/remind-v06.02.10/include/holidays/bi.rem +30 -0
  66. data/remind-v06.02.10/include/holidays/bn.rem +22 -0
  67. data/remind-v06.02.10/include/holidays/bo/b.rem +13 -0
  68. data/remind-v06.02.10/include/holidays/bo/c.rem +13 -0
  69. data/remind-v06.02.10/include/holidays/bo/h.rem +13 -0
  70. data/remind-v06.02.10/include/holidays/bo/l.rem +13 -0
  71. data/remind-v06.02.10/include/holidays/bo/n.rem +13 -0
  72. data/remind-v06.02.10/include/holidays/bo/o.rem +13 -0
  73. data/remind-v06.02.10/include/holidays/bo/p.rem +13 -0
  74. data/remind-v06.02.10/include/holidays/bo/s.rem +13 -0
  75. data/remind-v06.02.10/include/holidays/bo/t.rem +13 -0
  76. data/remind-v06.02.10/include/holidays/bo.rem +32 -0
  77. data/remind-v06.02.10/include/holidays/br/ac.rem +21 -0
  78. data/remind-v06.02.10/include/holidays/br/al.rem +16 -0
  79. data/remind-v06.02.10/include/holidays/br/am.rem +13 -0
  80. data/remind-v06.02.10/include/holidays/br/ap.rem +15 -0
  81. data/remind-v06.02.10/include/holidays/br/ba.rem +13 -0
  82. data/remind-v06.02.10/include/holidays/br/ce.rem +15 -0
  83. data/remind-v06.02.10/include/holidays/br/df.rem +14 -0
  84. data/remind-v06.02.10/include/holidays/br/es.rem +13 -0
  85. data/remind-v06.02.10/include/holidays/br/go.rem +14 -0
  86. data/remind-v06.02.10/include/holidays/br/ma.rem +13 -0
  87. data/remind-v06.02.10/include/holidays/br/mg.rem +13 -0
  88. data/remind-v06.02.10/include/holidays/br/ms.rem +13 -0
  89. data/remind-v06.02.10/include/holidays/br/pa.rem +13 -0
  90. data/remind-v06.02.10/include/holidays/br/pb.rem +13 -0
  91. data/remind-v06.02.10/include/holidays/br/pe.rem +13 -0
  92. data/remind-v06.02.10/include/holidays/br/pi.rem +13 -0
  93. data/remind-v06.02.10/include/holidays/br/pr.rem +13 -0
  94. data/remind-v06.02.10/include/holidays/br/rj.rem +13 -0
  95. data/remind-v06.02.10/include/holidays/br/rn.rem +14 -0
  96. data/remind-v06.02.10/include/holidays/br/ro.rem +14 -0
  97. data/remind-v06.02.10/include/holidays/br/rr.rem +13 -0
  98. data/remind-v06.02.10/include/holidays/br/rs.rem +13 -0
  99. data/remind-v06.02.10/include/holidays/br/sc.rem +14 -0
  100. data/remind-v06.02.10/include/holidays/br/se.rem +13 -0
  101. data/remind-v06.02.10/include/holidays/br/sp.rem +13 -0
  102. data/remind-v06.02.10/include/holidays/br/to.rem +15 -0
  103. data/remind-v06.02.10/include/holidays/br.rem +33 -0
  104. data/remind-v06.02.10/include/holidays/bs.rem +26 -0
  105. data/remind-v06.02.10/include/holidays/bw.rem +31 -0
  106. data/remind-v06.02.10/include/holidays/by.rem +17 -0
  107. data/remind-v06.02.10/include/holidays/bz.rem +43 -0
  108. data/remind-v06.02.10/include/holidays/ca/ab.rem +17 -0
  109. data/remind-v06.02.10/include/holidays/ca/bc.rem +14 -0
  110. data/remind-v06.02.10/include/holidays/ca/mb.rem +16 -0
  111. data/remind-v06.02.10/include/holidays/ca/nb.rem +14 -0
  112. data/remind-v06.02.10/include/holidays/ca/nl.rem +19 -0
  113. data/remind-v06.02.10/include/holidays/ca/ns.rem +16 -0
  114. data/remind-v06.02.10/include/holidays/ca/nt.rem +14 -0
  115. data/remind-v06.02.10/include/holidays/ca/nu.rem +16 -0
  116. data/remind-v06.02.10/include/holidays/ca/on.rem +16 -0
  117. data/remind-v06.02.10/include/holidays/ca/pe.rem +13 -0
  118. data/remind-v06.02.10/include/holidays/ca/qc.rem +18 -0
  119. data/remind-v06.02.10/include/holidays/ca/sk.rem +14 -0
  120. data/remind-v06.02.10/include/holidays/ca/yt.rem +17 -0
  121. data/remind-v06.02.10/include/holidays/ca.rem +37 -0
  122. data/remind-v06.02.10/include/holidays/cg.rem +17 -0
  123. data/remind-v06.02.10/include/holidays/ch/ag.rem +22 -0
  124. data/remind-v06.02.10/include/holidays/ch/ai.rem +20 -0
  125. data/remind-v06.02.10/include/holidays/ch/ar.rem +16 -0
  126. data/remind-v06.02.10/include/holidays/ch/be.rem +17 -0
  127. data/remind-v06.02.10/include/holidays/ch/bl.rem +17 -0
  128. data/remind-v06.02.10/include/holidays/ch/bs.rem +17 -0
  129. data/remind-v06.02.10/include/holidays/ch/fr.rem +19 -0
  130. data/remind-v06.02.10/include/holidays/ch/ge.rem +17 -0
  131. data/remind-v06.02.10/include/holidays/ch/gl.rem +22 -0
  132. data/remind-v06.02.10/include/holidays/ch/gr.rem +18 -0
  133. data/remind-v06.02.10/include/holidays/ch/ju.rem +21 -0
  134. data/remind-v06.02.10/include/holidays/ch/lu.rem +21 -0
  135. data/remind-v06.02.10/include/holidays/ch/ne.rem +18 -0
  136. data/remind-v06.02.10/include/holidays/ch/nw.rem +24 -0
  137. data/remind-v06.02.10/include/holidays/ch/ow.rem +24 -0
  138. data/remind-v06.02.10/include/holidays/ch/sg.rem +20 -0
  139. data/remind-v06.02.10/include/holidays/ch/sh.rem +20 -0
  140. data/remind-v06.02.10/include/holidays/ch/so.rem +17 -0
  141. data/remind-v06.02.10/include/holidays/ch/sz.rem +22 -0
  142. data/remind-v06.02.10/include/holidays/ch/tg.rem +18 -0
  143. data/remind-v06.02.10/include/holidays/ch/ti.rem +23 -0
  144. data/remind-v06.02.10/include/holidays/ch/ur.rem +22 -0
  145. data/remind-v06.02.10/include/holidays/ch/vd.rem +17 -0
  146. data/remind-v06.02.10/include/holidays/ch/vs.rem +23 -0
  147. data/remind-v06.02.10/include/holidays/ch/zg.rem +23 -0
  148. data/remind-v06.02.10/include/holidays/ch/zh.rem +18 -0
  149. data/remind-v06.02.10/include/holidays/ch.rem +18 -0
  150. data/remind-v06.02.10/include/holidays/chinese-new-year.rem +86 -0
  151. data/remind-v06.02.10/include/holidays/cl/ap.rem +13 -0
  152. data/remind-v06.02.10/include/holidays/cl/nb.rem +13 -0
  153. data/remind-v06.02.10/include/holidays/cl.rem +46 -0
  154. data/remind-v06.02.10/include/holidays/cm.rem +21 -0
  155. data/remind-v06.02.10/include/holidays/co.rem +85 -0
  156. data/remind-v06.02.10/include/holidays/cr.rem +39 -0
  157. data/remind-v06.02.10/include/holidays/cu.rem +19 -0
  158. data/remind-v06.02.10/include/holidays/cw.rem +24 -0
  159. data/remind-v06.02.10/include/holidays/cy.rem +27 -0
  160. data/remind-v06.02.10/include/holidays/cz.rem +20 -0
  161. data/remind-v06.02.10/include/holidays/de/bb.rem +15 -0
  162. data/remind-v06.02.10/include/holidays/de/be.rem +13 -0
  163. data/remind-v06.02.10/include/holidays/de/bw.rem +15 -0
  164. data/remind-v06.02.10/include/holidays/de/by.rem +18 -0
  165. data/remind-v06.02.10/include/holidays/de/hb.rem +13 -0
  166. data/remind-v06.02.10/include/holidays/de/he.rem +13 -0
  167. data/remind-v06.02.10/include/holidays/de/hh.rem +13 -0
  168. data/remind-v06.02.10/include/holidays/de/mv.rem +14 -0
  169. data/remind-v06.02.10/include/holidays/de/ni.rem +13 -0
  170. data/remind-v06.02.10/include/holidays/de/nw.rem +14 -0
  171. data/remind-v06.02.10/include/holidays/de/rp.rem +14 -0
  172. data/remind-v06.02.10/include/holidays/de/sh.rem +13 -0
  173. data/remind-v06.02.10/include/holidays/de/sl.rem +15 -0
  174. data/remind-v06.02.10/include/holidays/de/sn.rem +14 -0
  175. data/remind-v06.02.10/include/holidays/de/st.rem +14 -0
  176. data/remind-v06.02.10/include/holidays/de/th.rem +14 -0
  177. data/remind-v06.02.10/include/holidays/de.rem +23 -0
  178. data/remind-v06.02.10/include/holidays/discordian.rem +25 -0
  179. data/remind-v06.02.10/include/holidays/dj.rem +12 -0
  180. data/remind-v06.02.10/include/holidays/dk.rem +23 -0
  181. data/remind-v06.02.10/include/holidays/dm.rem +24 -0
  182. data/remind-v06.02.10/include/holidays/do.rem +36 -0
  183. data/remind-v06.02.10/include/holidays/dz.rem +12 -0
  184. data/remind-v06.02.10/include/holidays/ec.rem +48 -0
  185. data/remind-v06.02.10/include/holidays/ee.rem +19 -0
  186. data/remind-v06.02.10/include/holidays/eg.rem +17 -0
  187. data/remind-v06.02.10/include/holidays/es/an.rem +17 -0
  188. data/remind-v06.02.10/include/holidays/es/ar.rem +17 -0
  189. data/remind-v06.02.10/include/holidays/es/as.rem +17 -0
  190. data/remind-v06.02.10/include/holidays/es/cb.rem +15 -0
  191. data/remind-v06.02.10/include/holidays/es/ce.rem +15 -0
  192. data/remind-v06.02.10/include/holidays/es/cl.rem +17 -0
  193. data/remind-v06.02.10/include/holidays/es/cm.rem +15 -0
  194. data/remind-v06.02.10/include/holidays/es/cn.rem +15 -0
  195. data/remind-v06.02.10/include/holidays/es/ct.rem +16 -0
  196. data/remind-v06.02.10/include/holidays/es/ex.rem +16 -0
  197. data/remind-v06.02.10/include/holidays/es/ga.rem +15 -0
  198. data/remind-v06.02.10/include/holidays/es/ib.rem +15 -0
  199. data/remind-v06.02.10/include/holidays/es/mc.rem +17 -0
  200. data/remind-v06.02.10/include/holidays/es/md.rem +16 -0
  201. data/remind-v06.02.10/include/holidays/es/ml.rem +15 -0
  202. data/remind-v06.02.10/include/holidays/es/nc.rem +15 -0
  203. data/remind-v06.02.10/include/holidays/es/pv.rem +15 -0
  204. data/remind-v06.02.10/include/holidays/es/ri.rem +16 -0
  205. data/remind-v06.02.10/include/holidays/es/vc.rem +16 -0
  206. data/remind-v06.02.10/include/holidays/es.rem +23 -0
  207. data/remind-v06.02.10/include/holidays/et.rem +20 -0
  208. data/remind-v06.02.10/include/holidays/fi.rem +43 -0
  209. data/remind-v06.02.10/include/holidays/fr/bl.rem +13 -0
  210. data/remind-v06.02.10/include/holidays/fr/ges.rem +14 -0
  211. data/remind-v06.02.10/include/holidays/fr/gp.rem +16 -0
  212. data/remind-v06.02.10/include/holidays/fr/gy.rem +13 -0
  213. data/remind-v06.02.10/include/holidays/fr/mf.rem +13 -0
  214. data/remind-v06.02.10/include/holidays/fr/mq.rem +15 -0
  215. data/remind-v06.02.10/include/holidays/fr/nc.rem +13 -0
  216. data/remind-v06.02.10/include/holidays/fr/pf.rem +15 -0
  217. data/remind-v06.02.10/include/holidays/fr/re.rem +13 -0
  218. data/remind-v06.02.10/include/holidays/fr/wf.rem +14 -0
  219. data/remind-v06.02.10/include/holidays/fr/yt.rem +13 -0
  220. data/remind-v06.02.10/include/holidays/fr.rem +18 -0
  221. data/remind-v06.02.10/include/holidays/ga.rem +18 -0
  222. data/remind-v06.02.10/include/holidays/gb/eng.rem +14 -0
  223. data/remind-v06.02.10/include/holidays/gb/nir.rem +20 -0
  224. data/remind-v06.02.10/include/holidays/gb/sct.rem +20 -0
  225. data/remind-v06.02.10/include/holidays/gb/wls.rem +14 -0
  226. data/remind-v06.02.10/include/holidays/gb.rem +27 -0
  227. data/remind-v06.02.10/include/holidays/ge.rem +24 -0
  228. data/remind-v06.02.10/include/holidays/gh.rem +34 -0
  229. data/remind-v06.02.10/include/holidays/gl.rem +25 -0
  230. data/remind-v06.02.10/include/holidays/gr.rem +37 -0
  231. data/remind-v06.02.10/include/holidays/gt.rem +24 -0
  232. data/remind-v06.02.10/include/holidays/gu.rem +37 -0
  233. data/remind-v06.02.10/include/holidays/hk.rem +25 -0
  234. data/remind-v06.02.10/include/holidays/hn.rem +18 -0
  235. data/remind-v06.02.10/include/holidays/hr.rem +21 -0
  236. data/remind-v06.02.10/include/holidays/ht.rem +34 -0
  237. data/remind-v06.02.10/include/holidays/hu.rem +20 -0
  238. data/remind-v06.02.10/include/holidays/id.rem +15 -0
  239. data/remind-v06.02.10/include/holidays/ie.rem +41 -0
  240. data/remind-v06.02.10/include/holidays/im.rem +26 -0
  241. data/remind-v06.02.10/include/holidays/in/ap.rem +14 -0
  242. data/remind-v06.02.10/include/holidays/in/as.rem +13 -0
  243. data/remind-v06.02.10/include/holidays/in/br.rem +14 -0
  244. data/remind-v06.02.10/include/holidays/in/cg.rem +13 -0
  245. data/remind-v06.02.10/include/holidays/in/gj.rem +15 -0
  246. data/remind-v06.02.10/include/holidays/in/hr.rem +14 -0
  247. data/remind-v06.02.10/include/holidays/in/ka.rem +13 -0
  248. data/remind-v06.02.10/include/holidays/in/kl.rem +14 -0
  249. data/remind-v06.02.10/include/holidays/in/mh.rem +15 -0
  250. data/remind-v06.02.10/include/holidays/in/mp.rem +13 -0
  251. data/remind-v06.02.10/include/holidays/in/od.rem +15 -0
  252. data/remind-v06.02.10/include/holidays/in/rj.rem +14 -0
  253. data/remind-v06.02.10/include/holidays/in/sk.rem +13 -0
  254. data/remind-v06.02.10/include/holidays/in/tn.rem +15 -0
  255. data/remind-v06.02.10/include/holidays/in/ts.rem +14 -0
  256. data/remind-v06.02.10/include/holidays/in/uk.rem +13 -0
  257. data/remind-v06.02.10/include/holidays/in/up.rem +13 -0
  258. data/remind-v06.02.10/include/holidays/in/wb.rem +16 -0
  259. data/remind-v06.02.10/include/holidays/in.rem +24 -0
  260. data/remind-v06.02.10/include/holidays/is.rem +23 -0
  261. data/remind-v06.02.10/include/holidays/it/ag.rem +13 -0
  262. data/remind-v06.02.10/include/holidays/it/al.rem +13 -0
  263. data/remind-v06.02.10/include/holidays/it/an.rem +13 -0
  264. data/remind-v06.02.10/include/holidays/it/andria.rem +13 -0
  265. data/remind-v06.02.10/include/holidays/it/ao.rem +13 -0
  266. data/remind-v06.02.10/include/holidays/it/ap.rem +13 -0
  267. data/remind-v06.02.10/include/holidays/it/aq.rem +13 -0
  268. data/remind-v06.02.10/include/holidays/it/ar.rem +13 -0
  269. data/remind-v06.02.10/include/holidays/it/at.rem +13 -0
  270. data/remind-v06.02.10/include/holidays/it/av.rem +13 -0
  271. data/remind-v06.02.10/include/holidays/it/ba.rem +13 -0
  272. data/remind-v06.02.10/include/holidays/it/barletta.rem +13 -0
  273. data/remind-v06.02.10/include/holidays/it/bg.rem +13 -0
  274. data/remind-v06.02.10/include/holidays/it/bl.rem +13 -0
  275. data/remind-v06.02.10/include/holidays/it/bn.rem +13 -0
  276. data/remind-v06.02.10/include/holidays/it/bo.rem +13 -0
  277. data/remind-v06.02.10/include/holidays/it/br.rem +13 -0
  278. data/remind-v06.02.10/include/holidays/it/bs.rem +13 -0
  279. data/remind-v06.02.10/include/holidays/it/bt.rem +15 -0
  280. data/remind-v06.02.10/include/holidays/it/bz.rem +14 -0
  281. data/remind-v06.02.10/include/holidays/it/ca.rem +13 -0
  282. data/remind-v06.02.10/include/holidays/it/cb.rem +13 -0
  283. data/remind-v06.02.10/include/holidays/it/ce.rem +13 -0
  284. data/remind-v06.02.10/include/holidays/it/cesena.rem +13 -0
  285. data/remind-v06.02.10/include/holidays/it/ch.rem +13 -0
  286. data/remind-v06.02.10/include/holidays/it/cl.rem +13 -0
  287. data/remind-v06.02.10/include/holidays/it/cn.rem +13 -0
  288. data/remind-v06.02.10/include/holidays/it/co.rem +13 -0
  289. data/remind-v06.02.10/include/holidays/it/cr.rem +13 -0
  290. data/remind-v06.02.10/include/holidays/it/cs.rem +13 -0
  291. data/remind-v06.02.10/include/holidays/it/ct.rem +13 -0
  292. data/remind-v06.02.10/include/holidays/it/cz.rem +13 -0
  293. data/remind-v06.02.10/include/holidays/it/en.rem +13 -0
  294. data/remind-v06.02.10/include/holidays/it/fc.rem +14 -0
  295. data/remind-v06.02.10/include/holidays/it/fe.rem +13 -0
  296. data/remind-v06.02.10/include/holidays/it/fg.rem +13 -0
  297. data/remind-v06.02.10/include/holidays/it/fi.rem +13 -0
  298. data/remind-v06.02.10/include/holidays/it/fm.rem +14 -0
  299. data/remind-v06.02.10/include/holidays/it/forli.rem +13 -0
  300. data/remind-v06.02.10/include/holidays/it/fr.rem +13 -0
  301. data/remind-v06.02.10/include/holidays/it/ge.rem +13 -0
  302. data/remind-v06.02.10/include/holidays/it/go.rem +13 -0
  303. data/remind-v06.02.10/include/holidays/it/gr.rem +13 -0
  304. data/remind-v06.02.10/include/holidays/it/im.rem +13 -0
  305. data/remind-v06.02.10/include/holidays/it/is.rem +13 -0
  306. data/remind-v06.02.10/include/holidays/it/kr.rem +13 -0
  307. data/remind-v06.02.10/include/holidays/it/lc.rem +13 -0
  308. data/remind-v06.02.10/include/holidays/it/le.rem +13 -0
  309. data/remind-v06.02.10/include/holidays/it/li.rem +13 -0
  310. data/remind-v06.02.10/include/holidays/it/lo.rem +13 -0
  311. data/remind-v06.02.10/include/holidays/it/lt.rem +14 -0
  312. data/remind-v06.02.10/include/holidays/it/lu.rem +13 -0
  313. data/remind-v06.02.10/include/holidays/it/mb.rem +13 -0
  314. data/remind-v06.02.10/include/holidays/it/mc.rem +13 -0
  315. data/remind-v06.02.10/include/holidays/it/me.rem +13 -0
  316. data/remind-v06.02.10/include/holidays/it/mi.rem +13 -0
  317. data/remind-v06.02.10/include/holidays/it/mn.rem +13 -0
  318. data/remind-v06.02.10/include/holidays/it/mo.rem +13 -0
  319. data/remind-v06.02.10/include/holidays/it/ms.rem +13 -0
  320. data/remind-v06.02.10/include/holidays/it/mt.rem +13 -0
  321. data/remind-v06.02.10/include/holidays/it/na.rem +13 -0
  322. data/remind-v06.02.10/include/holidays/it/no.rem +13 -0
  323. data/remind-v06.02.10/include/holidays/it/nu.rem +13 -0
  324. data/remind-v06.02.10/include/holidays/it/or.rem +13 -0
  325. data/remind-v06.02.10/include/holidays/it/pa.rem +13 -0
  326. data/remind-v06.02.10/include/holidays/it/pc.rem +13 -0
  327. data/remind-v06.02.10/include/holidays/it/pd.rem +13 -0
  328. data/remind-v06.02.10/include/holidays/it/pe.rem +13 -0
  329. data/remind-v06.02.10/include/holidays/it/pesaro.rem +13 -0
  330. data/remind-v06.02.10/include/holidays/it/pg.rem +14 -0
  331. data/remind-v06.02.10/include/holidays/it/pi.rem +13 -0
  332. data/remind-v06.02.10/include/holidays/it/pn.rem +14 -0
  333. data/remind-v06.02.10/include/holidays/it/pr.rem +13 -0
  334. data/remind-v06.02.10/include/holidays/it/pt.rem +13 -0
  335. data/remind-v06.02.10/include/holidays/it/pu.rem +14 -0
  336. data/remind-v06.02.10/include/holidays/it/pv.rem +13 -0
  337. data/remind-v06.02.10/include/holidays/it/pz.rem +13 -0
  338. data/remind-v06.02.10/include/holidays/it/ra.rem +13 -0
  339. data/remind-v06.02.10/include/holidays/it/rc.rem +13 -0
  340. data/remind-v06.02.10/include/holidays/it/re.rem +13 -0
  341. data/remind-v06.02.10/include/holidays/it/rg.rem +14 -0
  342. data/remind-v06.02.10/include/holidays/it/ri.rem +13 -0
  343. data/remind-v06.02.10/include/holidays/it/rm.rem +13 -0
  344. data/remind-v06.02.10/include/holidays/it/rn.rem +13 -0
  345. data/remind-v06.02.10/include/holidays/it/ro.rem +13 -0
  346. data/remind-v06.02.10/include/holidays/it/sa.rem +13 -0
  347. data/remind-v06.02.10/include/holidays/it/si.rem +13 -0
  348. data/remind-v06.02.10/include/holidays/it/so.rem +13 -0
  349. data/remind-v06.02.10/include/holidays/it/sp.rem +13 -0
  350. data/remind-v06.02.10/include/holidays/it/sr.rem +13 -0
  351. data/remind-v06.02.10/include/holidays/it/ss.rem +13 -0
  352. data/remind-v06.02.10/include/holidays/it/su.rem +13 -0
  353. data/remind-v06.02.10/include/holidays/it/sv.rem +13 -0
  354. data/remind-v06.02.10/include/holidays/it/ta.rem +13 -0
  355. data/remind-v06.02.10/include/holidays/it/te.rem +13 -0
  356. data/remind-v06.02.10/include/holidays/it/tn.rem +13 -0
  357. data/remind-v06.02.10/include/holidays/it/to.rem +13 -0
  358. data/remind-v06.02.10/include/holidays/it/tp.rem +13 -0
  359. data/remind-v06.02.10/include/holidays/it/tr.rem +13 -0
  360. data/remind-v06.02.10/include/holidays/it/trani.rem +13 -0
  361. data/remind-v06.02.10/include/holidays/it/ts.rem +13 -0
  362. data/remind-v06.02.10/include/holidays/it/tv.rem +13 -0
  363. data/remind-v06.02.10/include/holidays/it/ud.rem +13 -0
  364. data/remind-v06.02.10/include/holidays/it/urbino.rem +13 -0
  365. data/remind-v06.02.10/include/holidays/it/va.rem +13 -0
  366. data/remind-v06.02.10/include/holidays/it/vb.rem +13 -0
  367. data/remind-v06.02.10/include/holidays/it/vc.rem +13 -0
  368. data/remind-v06.02.10/include/holidays/it/ve.rem +14 -0
  369. data/remind-v06.02.10/include/holidays/it/vi.rem +13 -0
  370. data/remind-v06.02.10/include/holidays/it/vr.rem +13 -0
  371. data/remind-v06.02.10/include/holidays/it/vt.rem +13 -0
  372. data/remind-v06.02.10/include/holidays/it/vv.rem +13 -0
  373. data/remind-v06.02.10/include/holidays/it.rem +26 -0
  374. data/remind-v06.02.10/include/holidays/je.rem +19 -0
  375. data/remind-v06.02.10/include/holidays/jewish.rem +135 -0
  376. data/remind-v06.02.10/include/holidays/jm.rem +24 -0
  377. data/remind-v06.02.10/include/holidays/jo.rem +11 -0
  378. data/remind-v06.02.10/include/holidays/jp.rem +27 -0
  379. data/remind-v06.02.10/include/holidays/ke.rem +25 -0
  380. data/remind-v06.02.10/include/holidays/kg.rem +20 -0
  381. data/remind-v06.02.10/include/holidays/kh.rem +22 -0
  382. data/remind-v06.02.10/include/holidays/kn.rem +28 -0
  383. data/remind-v06.02.10/include/holidays/kr.rem +19 -0
  384. data/remind-v06.02.10/include/holidays/kw.rem +10 -0
  385. data/remind-v06.02.10/include/holidays/kz.rem +34 -0
  386. data/remind-v06.02.10/include/holidays/la.rem +47 -0
  387. data/remind-v06.02.10/include/holidays/lgbtq/au.rem +8 -0
  388. data/remind-v06.02.10/include/holidays/lgbtq/br.rem +10 -0
  389. data/remind-v06.02.10/include/holidays/lgbtq/ca.rem +7 -0
  390. data/remind-v06.02.10/include/holidays/lgbtq/cl.rem +7 -0
  391. data/remind-v06.02.10/include/holidays/lgbtq/ie.rem +7 -0
  392. data/remind-v06.02.10/include/holidays/lgbtq/in.rem +7 -0
  393. data/remind-v06.02.10/include/holidays/lgbtq/nl.rem +7 -0
  394. data/remind-v06.02.10/include/holidays/lgbtq/ua.rem +7 -0
  395. data/remind-v06.02.10/include/holidays/lgbtq/uk.rem +8 -0
  396. data/remind-v06.02.10/include/holidays/lgbtq/us.rem +16 -0
  397. data/remind-v06.02.10/include/holidays/lgbtq.rem +34 -0
  398. data/remind-v06.02.10/include/holidays/li.rem +31 -0
  399. data/remind-v06.02.10/include/holidays/ls.rem +18 -0
  400. data/remind-v06.02.10/include/holidays/lt.rem +23 -0
  401. data/remind-v06.02.10/include/holidays/lu.rem +18 -0
  402. data/remind-v06.02.10/include/holidays/lv.rem +25 -0
  403. data/remind-v06.02.10/include/holidays/ma.rem +17 -0
  404. data/remind-v06.02.10/include/holidays/mc.rem +26 -0
  405. data/remind-v06.02.10/include/holidays/md.rem +21 -0
  406. data/remind-v06.02.10/include/holidays/me.rem +28 -0
  407. data/remind-v06.02.10/include/holidays/mg.rem +24 -0
  408. data/remind-v06.02.10/include/holidays/mh.rem +22 -0
  409. data/remind-v06.02.10/include/holidays/misc.rem +9 -0
  410. data/remind-v06.02.10/include/holidays/mk.rem +17 -0
  411. data/remind-v06.02.10/include/holidays/mp.rem +44 -0
  412. data/remind-v06.02.10/include/holidays/mr.rem +11 -0
  413. data/remind-v06.02.10/include/holidays/mt.rem +21 -0
  414. data/remind-v06.02.10/include/holidays/mv.rem +12 -0
  415. data/remind-v06.02.10/include/holidays/mw.rem +36 -0
  416. data/remind-v06.02.10/include/holidays/mx.rem +15 -0
  417. data/remind-v06.02.10/include/holidays/my/01.rem +13 -0
  418. data/remind-v06.02.10/include/holidays/my/02.rem +13 -0
  419. data/remind-v06.02.10/include/holidays/my/03.rem +14 -0
  420. data/remind-v06.02.10/include/holidays/my/04.rem +18 -0
  421. data/remind-v06.02.10/include/holidays/my/05.rem +16 -0
  422. data/remind-v06.02.10/include/holidays/my/06.rem +17 -0
  423. data/remind-v06.02.10/include/holidays/my/07.rem +17 -0
  424. data/remind-v06.02.10/include/holidays/my/08.rem +15 -0
  425. data/remind-v06.02.10/include/holidays/my/09.rem +14 -0
  426. data/remind-v06.02.10/include/holidays/my/10.rem +16 -0
  427. data/remind-v06.02.10/include/holidays/my/11.rem +16 -0
  428. data/remind-v06.02.10/include/holidays/my/12.rem +19 -0
  429. data/remind-v06.02.10/include/holidays/my/13.rem +22 -0
  430. data/remind-v06.02.10/include/holidays/my/14.rem +16 -0
  431. data/remind-v06.02.10/include/holidays/my/15.rem +18 -0
  432. data/remind-v06.02.10/include/holidays/my/16.rem +16 -0
  433. data/remind-v06.02.10/include/holidays/my.rem +23 -0
  434. data/remind-v06.02.10/include/holidays/mz.rem +25 -0
  435. data/remind-v06.02.10/include/holidays/na.rem +27 -0
  436. data/remind-v06.02.10/include/holidays/ng.rem +21 -0
  437. data/remind-v06.02.10/include/holidays/ni/mn.rem +14 -0
  438. data/remind-v06.02.10/include/holidays/ni.rem +24 -0
  439. data/remind-v06.02.10/include/holidays/nl.rem +26 -0
  440. data/remind-v06.02.10/include/holidays/no.rem +19 -0
  441. data/remind-v06.02.10/include/holidays/nz/auk.rem +13 -0
  442. data/remind-v06.02.10/include/holidays/nz/can.rem +13 -0
  443. data/remind-v06.02.10/include/holidays/nz/cit.rem +13 -0
  444. data/remind-v06.02.10/include/holidays/nz/hkb.rem +13 -0
  445. data/remind-v06.02.10/include/holidays/nz/mbh.rem +13 -0
  446. data/remind-v06.02.10/include/holidays/nz/nsn.rem +13 -0
  447. data/remind-v06.02.10/include/holidays/nz/ntl.rem +13 -0
  448. data/remind-v06.02.10/include/holidays/nz/ota.rem +14 -0
  449. data/remind-v06.02.10/include/holidays/nz/south_canterbury.rem +13 -0
  450. data/remind-v06.02.10/include/holidays/nz/stl.rem +13 -0
  451. data/remind-v06.02.10/include/holidays/nz/tki.rem +13 -0
  452. data/remind-v06.02.10/include/holidays/nz/wgn.rem +13 -0
  453. data/remind-v06.02.10/include/holidays/nz/wtc.rem +13 -0
  454. data/remind-v06.02.10/include/holidays/nz.rem +69 -0
  455. data/remind-v06.02.10/include/holidays/pa.rem +27 -0
  456. data/remind-v06.02.10/include/holidays/pagan.rem +65 -0
  457. data/remind-v06.02.10/include/holidays/pe.rem +22 -0
  458. data/remind-v06.02.10/include/holidays/pg.rem +24 -0
  459. data/remind-v06.02.10/include/holidays/ph.rem +26 -0
  460. data/remind-v06.02.10/include/holidays/pk.rem +13 -0
  461. data/remind-v06.02.10/include/holidays/pl.rem +20 -0
  462. data/remind-v06.02.10/include/holidays/pr.rem +40 -0
  463. data/remind-v06.02.10/include/holidays/pt/01.rem +13 -0
  464. data/remind-v06.02.10/include/holidays/pt/02.rem +13 -0
  465. data/remind-v06.02.10/include/holidays/pt/03.rem +13 -0
  466. data/remind-v06.02.10/include/holidays/pt/04.rem +13 -0
  467. data/remind-v06.02.10/include/holidays/pt/05.rem +13 -0
  468. data/remind-v06.02.10/include/holidays/pt/06.rem +13 -0
  469. data/remind-v06.02.10/include/holidays/pt/07.rem +13 -0
  470. data/remind-v06.02.10/include/holidays/pt/08.rem +13 -0
  471. data/remind-v06.02.10/include/holidays/pt/09.rem +13 -0
  472. data/remind-v06.02.10/include/holidays/pt/10.rem +13 -0
  473. data/remind-v06.02.10/include/holidays/pt/12.rem +13 -0
  474. data/remind-v06.02.10/include/holidays/pt/13.rem +13 -0
  475. data/remind-v06.02.10/include/holidays/pt/14.rem +13 -0
  476. data/remind-v06.02.10/include/holidays/pt/15.rem +13 -0
  477. data/remind-v06.02.10/include/holidays/pt/16.rem +13 -0
  478. data/remind-v06.02.10/include/holidays/pt/18.rem +13 -0
  479. data/remind-v06.02.10/include/holidays/pt/20.rem +13 -0
  480. data/remind-v06.02.10/include/holidays/pt/30.rem +14 -0
  481. data/remind-v06.02.10/include/holidays/pt.rem +17 -0
  482. data/remind-v06.02.10/include/holidays/pw.rem +34 -0
  483. data/remind-v06.02.10/include/holidays/py.rem +20 -0
  484. data/remind-v06.02.10/include/holidays/ro.rem +24 -0
  485. data/remind-v06.02.10/include/holidays/rs.rem +26 -0
  486. data/remind-v06.02.10/include/holidays/ru.rem +21 -0
  487. data/remind-v06.02.10/include/holidays/sa.rem +13 -0
  488. data/remind-v06.02.10/include/holidays/sc.rem +28 -0
  489. data/remind-v06.02.10/include/holidays/se.rem +23 -0
  490. data/remind-v06.02.10/include/holidays/sg.rem +16 -0
  491. data/remind-v06.02.10/include/holidays/si.rem +20 -0
  492. data/remind-v06.02.10/include/holidays/sk.rem +25 -0
  493. data/remind-v06.02.10/include/holidays/sm.rem +25 -0
  494. data/remind-v06.02.10/include/holidays/sv/ss.rem +14 -0
  495. data/remind-v06.02.10/include/holidays/sv.rem +25 -0
  496. data/remind-v06.02.10/include/holidays/sz.rem +26 -0
  497. data/remind-v06.02.10/include/holidays/td.rem +22 -0
  498. data/remind-v06.02.10/include/holidays/th.rem +72 -0
  499. data/remind-v06.02.10/include/holidays/tl.rem +31 -0
  500. data/remind-v06.02.10/include/holidays/tn.rem +15 -0
  501. data/remind-v06.02.10/include/holidays/to.rem +38 -0
  502. data/remind-v06.02.10/include/holidays/tr.rem +17 -0
  503. data/remind-v06.02.10/include/holidays/tw.rem +26 -0
  504. data/remind-v06.02.10/include/holidays/tz.rem +23 -0
  505. data/remind-v06.02.10/include/holidays/ua.rem +20 -0
  506. data/remind-v06.02.10/include/holidays/uk.rem +27 -0
  507. data/remind-v06.02.10/include/holidays/um.rem +32 -0
  508. data/remind-v06.02.10/include/holidays/us/ak.rem +17 -0
  509. data/remind-v06.02.10/include/holidays/us/al.rem +17 -0
  510. data/remind-v06.02.10/include/holidays/us/ar.rem +13 -0
  511. data/remind-v06.02.10/include/holidays/us/as.rem +20 -0
  512. data/remind-v06.02.10/include/holidays/us/az.rem +14 -0
  513. data/remind-v06.02.10/include/holidays/us/ca.rem +16 -0
  514. data/remind-v06.02.10/include/holidays/us/co.rem +14 -0
  515. data/remind-v06.02.10/include/holidays/us/ct.rem +17 -0
  516. data/remind-v06.02.10/include/holidays/us/dc.rem +16 -0
  517. data/remind-v06.02.10/include/holidays/us/de.rem +14 -0
  518. data/remind-v06.02.10/include/holidays/us/fl.rem +14 -0
  519. data/remind-v06.02.10/include/holidays/us/ga.rem +18 -0
  520. data/remind-v06.02.10/include/holidays/us/gu.rem +17 -0
  521. data/remind-v06.02.10/include/holidays/us/hi.rem +19 -0
  522. data/remind-v06.02.10/include/holidays/us/ia.rem +15 -0
  523. data/remind-v06.02.10/include/holidays/us/id.rem +14 -0
  524. data/remind-v06.02.10/include/holidays/us/il.rem +17 -0
  525. data/remind-v06.02.10/include/holidays/us/in.rem +19 -0
  526. data/remind-v06.02.10/include/holidays/us/ks.rem +16 -0
  527. data/remind-v06.02.10/include/holidays/us/ky.rem +16 -0
  528. data/remind-v06.02.10/include/holidays/us/la.rem +14 -0
  529. data/remind-v06.02.10/include/holidays/us/ma.rem +17 -0
  530. data/remind-v06.02.10/include/holidays/us/md-extra.rem +19 -0
  531. data/remind-v06.02.10/include/holidays/us/md.rem +14 -0
  532. data/remind-v06.02.10/include/holidays/us/me.rem +14 -0
  533. data/remind-v06.02.10/include/holidays/us/mi.rem +19 -0
  534. data/remind-v06.02.10/include/holidays/us/mo.rem +16 -0
  535. data/remind-v06.02.10/include/holidays/us/mp.rem +23 -0
  536. data/remind-v06.02.10/include/holidays/us/ms.rem +14 -0
  537. data/remind-v06.02.10/include/holidays/us/mt.rem +13 -0
  538. data/remind-v06.02.10/include/holidays/us/nc.rem +22 -0
  539. data/remind-v06.02.10/include/holidays/us/ne.rem +14 -0
  540. data/remind-v06.02.10/include/holidays/us/nh.rem +14 -0
  541. data/remind-v06.02.10/include/holidays/us/nj.rem +17 -0
  542. data/remind-v06.02.10/include/holidays/us/nm.rem +14 -0
  543. data/remind-v06.02.10/include/holidays/us/nv.rem +16 -0
  544. data/remind-v06.02.10/include/holidays/us/ny.rem +17 -0
  545. data/remind-v06.02.10/include/holidays/us/oh.rem +13 -0
  546. data/remind-v06.02.10/include/holidays/us/ok.rem +13 -0
  547. data/remind-v06.02.10/include/holidays/us/pa.rem +14 -0
  548. data/remind-v06.02.10/include/holidays/us/pr.rem +21 -0
  549. data/remind-v06.02.10/include/holidays/us/ri.rem +14 -0
  550. data/remind-v06.02.10/include/holidays/us/sc.rem +13 -0
  551. data/remind-v06.02.10/include/holidays/us/sd.rem +13 -0
  552. data/remind-v06.02.10/include/holidays/us/tn.rem +13 -0
  553. data/remind-v06.02.10/include/holidays/us/tx.rem +25 -0
  554. data/remind-v06.02.10/include/holidays/us/ut.rem +16 -0
  555. data/remind-v06.02.10/include/holidays/us/va.rem +13 -0
  556. data/remind-v06.02.10/include/holidays/us/vi.rem +22 -0
  557. data/remind-v06.02.10/include/holidays/us/vt.rem +16 -0
  558. data/remind-v06.02.10/include/holidays/us/wi.rem +20 -0
  559. data/remind-v06.02.10/include/holidays/us/wv.rem +17 -0
  560. data/remind-v06.02.10/include/holidays/us.rem +41 -0
  561. data/remind-v06.02.10/include/holidays/uy.rem +39 -0
  562. data/remind-v06.02.10/include/holidays/uz.rem +21 -0
  563. data/remind-v06.02.10/include/holidays/va.rem +23 -0
  564. data/remind-v06.02.10/include/holidays/ve.rem +21 -0
  565. data/remind-v06.02.10/include/holidays/vi.rem +41 -0
  566. data/remind-v06.02.10/include/holidays/vn.rem +17 -0
  567. data/remind-v06.02.10/include/holidays/vu.rem +32 -0
  568. data/remind-v06.02.10/include/holidays/ws.rem +18 -0
  569. data/remind-v06.02.10/include/holidays/za.rem +28 -0
  570. data/remind-v06.02.10/include/holidays/zm.rem +31 -0
  571. data/remind-v06.02.10/include/lang/auto.rem +32 -0
  572. data/remind-v06.02.10/include/lang/ca.rem +60 -0
  573. data/remind-v06.02.10/include/lang/da.rem +77 -0
  574. data/remind-v06.02.10/include/lang/de.rem +80 -0
  575. data/remind-v06.02.10/include/lang/en.rem +4 -0
  576. data/remind-v06.02.10/include/lang/es.rem +55 -0
  577. data/remind-v06.02.10/include/lang/fi.rem +202 -0
  578. data/remind-v06.02.10/include/lang/fr.rem +172 -0
  579. data/remind-v06.02.10/include/lang/gr.rem +74 -0
  580. data/remind-v06.02.10/include/lang/is.rem +58 -0
  581. data/remind-v06.02.10/include/lang/it.rem +76 -0
  582. data/remind-v06.02.10/include/lang/nl.rem +71 -0
  583. data/remind-v06.02.10/include/lang/no.rem +66 -0
  584. data/remind-v06.02.10/include/lang/pl.rem +177 -0
  585. data/remind-v06.02.10/include/lang/pt.rem +176 -0
  586. data/remind-v06.02.10/include/lang/ro.rem +74 -0
  587. data/remind-v06.02.10/include/lunar-eclipses.rem +149 -0
  588. data/remind-v06.02.10/include/moonphases.rem +19 -0
  589. data/remind-v06.02.10/include/seasons.rem +21 -0
  590. data/remind-v06.02.10/include/solar-eclipses.rem +238 -0
  591. data/remind-v06.02.10/include/sun.rem +12 -0
  592. data/remind-v06.02.10/include/translations/de/holidays/chinese-new-year.rem +13 -0
  593. data/remind-v06.02.10/include/translations/de/moonphases.rem +4 -0
  594. data/remind-v06.02.10/include/translations/de/seasons.rem +4 -0
  595. data/remind-v06.02.10/include/translations/de/sun.rem +2 -0
  596. data/remind-v06.02.10/include/translations/nl/holidays/chinese-new-year.rem +13 -0
  597. data/remind-v06.02.10/include/translations/nl/moonphases.rem +4 -0
  598. data/remind-v06.02.10/include/translations/nl/seasons.rem +4 -0
  599. data/remind-v06.02.10/include/translations/nl/sun.rem +2 -0
  600. data/remind-v06.02.10/include/utils/add-html-anchors.rem +5 -0
  601. data/remind-v06.02.10/install-sh +238 -0
  602. data/remind-v06.02.10/man/rem.1.in +21 -0
  603. data/remind-v06.02.10/man/rem2ps.1.in +816 -0
  604. data/remind-v06.02.10/man/remind.1.in +7658 -0
  605. data/remind-v06.02.10/man/tkremind.1.in +612 -0
  606. data/remind-v06.02.10/rem2html/Makefile.in +30 -0
  607. data/remind-v06.02.10/rem2html/rem2html.in +1299 -0
  608. data/remind-v06.02.10/rem2pdf/Makefile.PL.in +25 -0
  609. data/remind-v06.02.10/rem2pdf/Makefile.top.in +50 -0
  610. data/remind-v06.02.10/rem2pdf/bin/rem2pdf.in +761 -0
  611. data/remind-v06.02.10/scripts/tkremind.in +5794 -0
  612. data/remind-v06.02.10/src/Makefile.in +133 -0
  613. data/remind-v06.02.10/src/calendar.c +3069 -0
  614. data/remind-v06.02.10/src/config.h +117 -0
  615. data/remind-v06.02.10/src/config.h.in +116 -0
  616. data/remind-v06.02.10/src/custom.h +167 -0
  617. data/remind-v06.02.10/src/custom.h.in +167 -0
  618. data/remind-v06.02.10/src/dedupe.c +179 -0
  619. data/remind-v06.02.10/src/dorem.c +2389 -0
  620. data/remind-v06.02.10/src/dosubst.c +910 -0
  621. data/remind-v06.02.10/src/dynbuf.c +198 -0
  622. data/remind-v06.02.10/src/dynbuf.h +41 -0
  623. data/remind-v06.02.10/src/err.h +294 -0
  624. data/remind-v06.02.10/src/expr.c +3408 -0
  625. data/remind-v06.02.10/src/files.c +1437 -0
  626. data/remind-v06.02.10/src/funcs.c +5230 -0
  627. data/remind-v06.02.10/src/globals.c +23 -0
  628. data/remind-v06.02.10/src/globals.h +277 -0
  629. data/remind-v06.02.10/src/hashtab.c +428 -0
  630. data/remind-v06.02.10/src/hashtab.h +88 -0
  631. data/remind-v06.02.10/src/hashtab_stats.c +101 -0
  632. data/remind-v06.02.10/src/hbcal.c +579 -0
  633. data/remind-v06.02.10/src/ifelse.c +236 -0
  634. data/remind-v06.02.10/src/init.c +1494 -0
  635. data/remind-v06.02.10/src/json.c +1048 -0
  636. data/remind-v06.02.10/src/json.h +276 -0
  637. data/remind-v06.02.10/src/main.c +2310 -0
  638. data/remind-v06.02.10/src/md5.c +250 -0
  639. data/remind-v06.02.10/src/md5.h +33 -0
  640. data/remind-v06.02.10/src/moon.c +957 -0
  641. data/remind-v06.02.10/src/omit.c +560 -0
  642. data/remind-v06.02.10/src/protos.h +284 -0
  643. data/remind-v06.02.10/src/queue.c +1118 -0
  644. data/remind-v06.02.10/src/rem2ps.c +1383 -0
  645. data/remind-v06.02.10/src/rem2ps.h +229 -0
  646. data/remind-v06.02.10/src/sort.c +257 -0
  647. data/remind-v06.02.10/src/token.c +494 -0
  648. data/remind-v06.02.10/src/trans.c +544 -0
  649. data/remind-v06.02.10/src/trigger.c +871 -0
  650. data/remind-v06.02.10/src/types.h +341 -0
  651. data/remind-v06.02.10/src/userfns.c +810 -0
  652. data/remind-v06.02.10/src/utils.c +374 -0
  653. data/remind-v06.02.10/src/var.c +1762 -0
  654. data/remind-v06.02.10/src/version.h +1 -0
  655. data/remind-v06.02.10/src/version.h.in +1 -0
  656. data/remind-v06.02.10/src/xlat.c +100 -0
  657. data/remind-v06.02.10/www/Makefile.in +91 -0
  658. metadata +764 -0
@@ -0,0 +1,1048 @@
1
+ /* vim: set et ts=3 sw=3 sts=3 ft=c:
2
+ *
3
+ * Copyright (C) 2012-2021 the json-parser authors All rights reserved.
4
+ * https://github.com/json-parser/json-parser
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ *
10
+ * 1. Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ *
13
+ * 2. Redistributions in binary form must reproduce the above copyright
14
+ * notice, this list of conditions and the following disclaimer in the
15
+ * documentation and/or other materials provided with the distribution.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
+ * SUCH DAMAGE.
28
+ */
29
+
30
+ #include "json.h"
31
+
32
+ #ifdef _MSC_VER
33
+ #ifndef _CRT_SECURE_NO_WARNINGS
34
+ #define _CRT_SECURE_NO_WARNINGS
35
+ #endif
36
+ #endif
37
+
38
+ #include <stdio.h>
39
+ #include <stdlib.h>
40
+ #include <string.h>
41
+ #include <ctype.h>
42
+ #include <limits.h>
43
+ #include <math.h>
44
+
45
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
46
+ /* C99 might give us uintptr_t and UINTPTR_MAX but they also might not be provided */
47
+ #include <stdint.h>
48
+ #endif
49
+
50
+ #include <limits.h>
51
+ #define JSON_INT_MAX LONG_MAX
52
+
53
+ #ifndef JSON_INT_MAX
54
+ #define JSON_INT_MAX (json_int_t)(((unsigned json_int_t)(-1)) / (unsigned json_int_t)2);
55
+ #endif
56
+
57
+ typedef unsigned int json_uchar;
58
+
59
+ const struct _json_value json_value_none;
60
+
61
+ static void json_value_free_ex (json_settings * settings, json_value * value);
62
+
63
+ static unsigned char hex_value (json_char c)
64
+ {
65
+ if (isdigit((unsigned char)c))
66
+ return c - '0';
67
+
68
+ switch (c) {
69
+ case 'a': case 'A': return 0x0A;
70
+ case 'b': case 'B': return 0x0B;
71
+ case 'c': case 'C': return 0x0C;
72
+ case 'd': case 'D': return 0x0D;
73
+ case 'e': case 'E': return 0x0E;
74
+ case 'f': case 'F': return 0x0F;
75
+ default: return 0xFF;
76
+ }
77
+ }
78
+
79
+ static int would_overflow (json_int_t value, json_char b)
80
+ {
81
+ return ((JSON_INT_MAX - (b - '0')) / 10 ) < value;
82
+ }
83
+
84
+ typedef struct
85
+ {
86
+ size_t used_memory;
87
+
88
+ json_settings settings;
89
+ int first_pass;
90
+
91
+ const json_char * ptr;
92
+ unsigned int cur_line, cur_col;
93
+
94
+ } json_state;
95
+
96
+ static void * default_alloc (size_t size, int zero, void * user_data)
97
+ {
98
+ (void)user_data; /* ignore unused-parameter warn */
99
+ return zero ? calloc (1, size) : malloc (size);
100
+ }
101
+
102
+ static void default_free (void * ptr, void * user_data)
103
+ {
104
+ (void)user_data; /* ignore unused-parameter warn */
105
+ free (ptr);
106
+ }
107
+
108
+ static void * json_alloc (json_state * state, size_t size, int zero)
109
+ {
110
+ if ((ULONG_MAX - 8 - state->used_memory) < size)
111
+ return 0;
112
+
113
+ if (state->settings.max_memory
114
+ && (state->used_memory += size) > state->settings.max_memory)
115
+ {
116
+ return 0;
117
+ }
118
+
119
+ return state->settings.mem_alloc (size, zero, state->settings.user_data);
120
+ }
121
+
122
+ static int new_value (json_state * state,
123
+ json_value ** top, json_value ** root, json_value ** alloc,
124
+ json_type type)
125
+ {
126
+ json_value * value;
127
+ size_t values_size;
128
+
129
+ if (!state->first_pass)
130
+ {
131
+ value = *top = *alloc;
132
+ *alloc = (*alloc)->_reserved.next_alloc;
133
+
134
+ if (!*root)
135
+ *root = value;
136
+
137
+ switch (value->type)
138
+ {
139
+ case json_array:
140
+
141
+ if (value->u.array.length == 0)
142
+ break;
143
+
144
+ if (! (value->u.array.values = (json_value **) json_alloc
145
+ (state, value->u.array.length * sizeof (json_value *), 0)) )
146
+ {
147
+ return 0;
148
+ }
149
+
150
+ value->u.array.length = 0;
151
+ break;
152
+
153
+ case json_object:
154
+
155
+ if (value->u.object.length == 0)
156
+ break;
157
+
158
+ values_size = sizeof (*value->u.object.values) * value->u.object.length;
159
+
160
+ if (! (value->u.object.values = (json_object_entry *) json_alloc
161
+ #ifdef UINTPTR_MAX
162
+ (state, values_size + ((uintptr_t) value->u.object.values), 0)) )
163
+ #else
164
+ (state, values_size + ((size_t) value->u.object.values), 0)) )
165
+ #endif
166
+ {
167
+ return 0;
168
+ }
169
+
170
+ value->_reserved.object_mem = (void *) (((char *) value->u.object.values) + values_size);
171
+
172
+ value->u.object.length = 0;
173
+ break;
174
+
175
+ case json_string:
176
+
177
+ if (! (value->u.string.ptr = (json_char *) json_alloc
178
+ (state, (value->u.string.length + 1) * sizeof (json_char), 0)) )
179
+ {
180
+ return 0;
181
+ }
182
+
183
+ value->u.string.length = 0;
184
+ break;
185
+
186
+ default:
187
+ break;
188
+ };
189
+
190
+ return 1;
191
+ }
192
+
193
+ if (! (value = (json_value *) json_alloc
194
+ (state, sizeof (json_value) + state->settings.value_extra, 1)))
195
+ {
196
+ return 0;
197
+ }
198
+
199
+ if (!*root)
200
+ *root = value;
201
+
202
+ value->type = type;
203
+ value->parent = *top;
204
+
205
+ #ifdef JSON_TRACK_SOURCE
206
+ value->line = state->cur_line;
207
+ value->col = state->cur_col;
208
+ #endif
209
+
210
+ if (*alloc)
211
+ (*alloc)->_reserved.next_alloc = value;
212
+
213
+ *alloc = *top = value;
214
+
215
+ return 1;
216
+ }
217
+
218
+ #define whitespace \
219
+ case '\n': ++ state.cur_line; state.cur_col = 0; /* FALLTHRU */ \
220
+ case ' ': /* FALLTHRU */ case '\t': /* FALLTHRU */ case '\r'
221
+
222
+ #define string_add(b) \
223
+ do { if (!state.first_pass) string [string_length] = b; ++ string_length; } while (0);
224
+
225
+ #define line_and_col \
226
+ state.cur_line, state.cur_col
227
+
228
+ static const long
229
+ flag_next = 1 << 0,
230
+ flag_reproc = 1 << 1,
231
+ flag_need_comma = 1 << 2,
232
+ flag_seek_value = 1 << 3,
233
+ flag_escaped = 1 << 4,
234
+ flag_string = 1 << 5,
235
+ flag_need_colon = 1 << 6,
236
+ flag_done = 1 << 7,
237
+ flag_num_negative = 1 << 8,
238
+ flag_num_zero = 1 << 9,
239
+ flag_num_e = 1 << 10,
240
+ flag_num_e_got_sign = 1 << 11,
241
+ flag_num_e_negative = 1 << 12,
242
+ flag_line_comment = 1 << 13,
243
+ flag_block_comment = 1 << 14,
244
+ flag_num_got_decimal = 1 << 15;
245
+
246
+ static json_value * json_parse_ex (json_settings const * settings,
247
+ const json_char * json,
248
+ size_t length,
249
+ char * error_buf)
250
+ {
251
+ char error [json_error_max];
252
+ const json_char * end;
253
+ json_value * top, * root, * alloc = 0;
254
+ json_state state = { 0 };
255
+ long flags;
256
+ int num_digits = 0;
257
+ double num_e = 0, num_fraction = 0;
258
+
259
+ /* Skip UTF-8 BOM
260
+ */
261
+ if (length >= 3 && ((unsigned char) json [0]) == 0xEF
262
+ && ((unsigned char) json [1]) == 0xBB
263
+ && ((unsigned char) json [2]) == 0xBF)
264
+ {
265
+ json += 3;
266
+ length -= 3;
267
+ }
268
+
269
+ error[0] = '\0';
270
+ end = (json + length);
271
+
272
+ memcpy (&state.settings, settings, sizeof (json_settings));
273
+
274
+ if (!state.settings.mem_alloc)
275
+ state.settings.mem_alloc = default_alloc;
276
+
277
+ if (!state.settings.mem_free)
278
+ state.settings.mem_free = default_free;
279
+
280
+ for (state.first_pass = 1; state.first_pass >= 0; -- state.first_pass)
281
+ {
282
+ json_uchar uchar;
283
+ unsigned char uc_b1, uc_b2, uc_b3, uc_b4;
284
+ json_char * string = 0;
285
+ unsigned int string_length = 0;
286
+
287
+ top = root = 0;
288
+ flags = flag_seek_value;
289
+
290
+ state.cur_line = 1;
291
+
292
+ for (state.ptr = json ;; ++ state.ptr)
293
+ {
294
+ json_char b = (state.ptr == end ? 0 : *state.ptr);
295
+
296
+ if (flags & flag_string)
297
+ {
298
+ if (!b)
299
+ { sprintf (error, "%u:%u: Unexpected EOF in string", line_and_col);
300
+ goto e_failed;
301
+ }
302
+
303
+ if (string_length > UINT_MAX - 8)
304
+ goto e_overflow;
305
+
306
+ if (flags & flag_escaped)
307
+ {
308
+ flags &= ~ flag_escaped;
309
+
310
+ switch (b)
311
+ {
312
+ case 'b': string_add ('\b'); break;
313
+ case 'f': string_add ('\f'); break;
314
+ case 'n': string_add ('\n'); break;
315
+ case 'r': string_add ('\r'); break;
316
+ case 't': string_add ('\t'); break;
317
+ case 'u':
318
+
319
+ if (end - state.ptr <= 4 ||
320
+ (uc_b1 = hex_value (*++ state.ptr)) == 0xFF ||
321
+ (uc_b2 = hex_value (*++ state.ptr)) == 0xFF ||
322
+ (uc_b3 = hex_value (*++ state.ptr)) == 0xFF ||
323
+ (uc_b4 = hex_value (*++ state.ptr)) == 0xFF)
324
+ {
325
+ sprintf (error, "%u:%u: Invalid character value `%c`", line_and_col, b);
326
+ goto e_failed;
327
+ }
328
+
329
+ uc_b1 = (uc_b1 << 4) | uc_b2;
330
+ uc_b2 = (uc_b3 << 4) | uc_b4;
331
+ uchar = (uc_b1 << 8) | uc_b2;
332
+
333
+ if ((uchar & 0xF800) == 0xD800) {
334
+ json_uchar uchar2;
335
+
336
+ if (end - state.ptr <= 6 || (*++ state.ptr) != '\\' || (*++ state.ptr) != 'u' ||
337
+ (uc_b1 = hex_value (*++ state.ptr)) == 0xFF ||
338
+ (uc_b2 = hex_value (*++ state.ptr)) == 0xFF ||
339
+ (uc_b3 = hex_value (*++ state.ptr)) == 0xFF ||
340
+ (uc_b4 = hex_value (*++ state.ptr)) == 0xFF)
341
+ {
342
+ sprintf (error, "%u:%u: Invalid character value `%c`", line_and_col, b);
343
+ goto e_failed;
344
+ }
345
+
346
+ uc_b1 = (uc_b1 << 4) | uc_b2;
347
+ uc_b2 = (uc_b3 << 4) | uc_b4;
348
+ uchar2 = (uc_b1 << 8) | uc_b2;
349
+
350
+ uchar = 0x010000 | ((uchar & 0x3FF) << 10) | (uchar2 & 0x3FF);
351
+ }
352
+
353
+ if (sizeof (json_char) >= sizeof (json_uchar) || (uchar <= 0x7F))
354
+ {
355
+ string_add ((json_char) uchar);
356
+ break;
357
+ }
358
+
359
+ if (uchar <= 0x7FF)
360
+ {
361
+ if (state.first_pass)
362
+ string_length += 2;
363
+ else
364
+ { string [string_length ++] = 0xC0 | (uchar >> 6);
365
+ string [string_length ++] = 0x80 | (uchar & 0x3F);
366
+ }
367
+
368
+ break;
369
+ }
370
+
371
+ if (uchar <= 0xFFFF) {
372
+ if (state.first_pass)
373
+ string_length += 3;
374
+ else
375
+ { string [string_length ++] = 0xE0 | (uchar >> 12);
376
+ string [string_length ++] = 0x80 | ((uchar >> 6) & 0x3F);
377
+ string [string_length ++] = 0x80 | (uchar & 0x3F);
378
+ }
379
+
380
+ break;
381
+ }
382
+
383
+ if (state.first_pass)
384
+ string_length += 4;
385
+ else
386
+ { string [string_length ++] = 0xF0 | (uchar >> 18);
387
+ string [string_length ++] = 0x80 | ((uchar >> 12) & 0x3F);
388
+ string [string_length ++] = 0x80 | ((uchar >> 6) & 0x3F);
389
+ string [string_length ++] = 0x80 | (uchar & 0x3F);
390
+ }
391
+
392
+ break;
393
+
394
+ default:
395
+ string_add (b);
396
+ };
397
+
398
+ continue;
399
+ }
400
+
401
+ if (b == '\\')
402
+ {
403
+ flags |= flag_escaped;
404
+ continue;
405
+ }
406
+
407
+ if (b == '"')
408
+ {
409
+ if (!state.first_pass)
410
+ string [string_length] = 0;
411
+
412
+ flags &= ~ flag_string;
413
+ string = 0;
414
+
415
+ switch (top->type)
416
+ {
417
+ case json_string:
418
+
419
+ top->u.string.length = string_length;
420
+ flags |= flag_next;
421
+
422
+ break;
423
+
424
+ case json_object:
425
+
426
+ if (state.first_pass) {
427
+ json_char **chars = (json_char **) &top->u.object.values;
428
+ chars[0] += string_length + 1;
429
+ }
430
+ else
431
+ {
432
+ top->u.object.values [top->u.object.length].name
433
+ = (json_char *) top->_reserved.object_mem;
434
+
435
+ top->u.object.values [top->u.object.length].name_length
436
+ = string_length;
437
+
438
+ (*(json_char **) &top->_reserved.object_mem) += string_length + 1;
439
+ }
440
+
441
+ flags |= flag_seek_value | flag_need_colon;
442
+ continue;
443
+
444
+ default:
445
+ break;
446
+ };
447
+ }
448
+ else
449
+ {
450
+ string_add (b);
451
+ continue;
452
+ }
453
+ }
454
+
455
+ if (state.settings.settings & json_enable_comments)
456
+ {
457
+ if (flags & (flag_line_comment | flag_block_comment))
458
+ {
459
+ if (flags & flag_line_comment)
460
+ {
461
+ if (b == '\r' || b == '\n' || !b)
462
+ {
463
+ flags &= ~ flag_line_comment;
464
+ -- state.ptr; /* so null can be reproc'd */
465
+ }
466
+
467
+ continue;
468
+ }
469
+
470
+ if (flags & flag_block_comment)
471
+ {
472
+ if (!b)
473
+ { sprintf (error, "%u:%u: Unexpected EOF in block comment", line_and_col);
474
+ goto e_failed;
475
+ }
476
+
477
+ if (b == '*' && state.ptr < (end - 1) && state.ptr [1] == '/')
478
+ {
479
+ flags &= ~ flag_block_comment;
480
+ ++ state.ptr; /* skip closing sequence */
481
+ }
482
+
483
+ continue;
484
+ }
485
+ }
486
+ else if (b == '/')
487
+ {
488
+ if (! (flags & (flag_seek_value | flag_done)) && top->type != json_object)
489
+ { sprintf (error, "%u:%u: Comment not allowed here", line_and_col);
490
+ goto e_failed;
491
+ }
492
+
493
+ if (++ state.ptr == end)
494
+ { sprintf (error, "%u:%u: EOF unexpected", line_and_col);
495
+ goto e_failed;
496
+ }
497
+
498
+ switch (b = *state.ptr)
499
+ {
500
+ case '/':
501
+ flags |= flag_line_comment;
502
+ continue;
503
+
504
+ case '*':
505
+ flags |= flag_block_comment;
506
+ continue;
507
+
508
+ default:
509
+ sprintf (error, "%u:%u: Unexpected `%c` in comment opening sequence", line_and_col, b);
510
+ goto e_failed;
511
+ };
512
+ }
513
+ }
514
+
515
+ if (flags & flag_done)
516
+ {
517
+ if (!b)
518
+ break;
519
+
520
+ switch (b)
521
+ {
522
+ whitespace:
523
+ continue;
524
+
525
+ default:
526
+
527
+ sprintf (error, "%u:%u: Trailing garbage: `%c`",
528
+ line_and_col, b);
529
+
530
+ goto e_failed;
531
+ };
532
+ }
533
+
534
+ if (flags & flag_seek_value)
535
+ {
536
+ switch (b)
537
+ {
538
+ whitespace:
539
+ continue;
540
+
541
+ case ']':
542
+
543
+ if (top && top->type == json_array)
544
+ flags = (flags & ~ (flag_need_comma | flag_seek_value)) | flag_next;
545
+ else
546
+ { sprintf (error, "%u:%u: Unexpected `]`", line_and_col);
547
+ goto e_failed;
548
+ }
549
+
550
+ break;
551
+
552
+ default:
553
+
554
+ if (flags & flag_need_comma)
555
+ {
556
+ if (b == ',')
557
+ { flags &= ~ flag_need_comma;
558
+ continue;
559
+ }
560
+ else
561
+ {
562
+ sprintf (error, "%u:%u: Expected `,` before `%c`",
563
+ line_and_col, b);
564
+
565
+ goto e_failed;
566
+ }
567
+ }
568
+
569
+ if (flags & flag_need_colon)
570
+ {
571
+ if (b == ':')
572
+ { flags &= ~ flag_need_colon;
573
+ continue;
574
+ }
575
+ else
576
+ {
577
+ sprintf (error, "%u:%u: Expected `:` before `%c`",
578
+ line_and_col, b);
579
+
580
+ goto e_failed;
581
+ }
582
+ }
583
+
584
+ flags &= ~ flag_seek_value;
585
+
586
+ switch (b)
587
+ {
588
+ case '{':
589
+
590
+ if (!new_value (&state, &top, &root, &alloc, json_object))
591
+ goto e_alloc_failure;
592
+
593
+ continue;
594
+
595
+ case '[':
596
+
597
+ if (!new_value (&state, &top, &root, &alloc, json_array))
598
+ goto e_alloc_failure;
599
+
600
+ flags |= flag_seek_value;
601
+ continue;
602
+
603
+ case '"':
604
+
605
+ if (!new_value (&state, &top, &root, &alloc, json_string))
606
+ goto e_alloc_failure;
607
+
608
+ flags |= flag_string;
609
+
610
+ string = top->u.string.ptr;
611
+ string_length = 0;
612
+
613
+ continue;
614
+
615
+ case 't':
616
+
617
+ if ((end - state.ptr) <= 3 || *(++ state.ptr) != 'r' ||
618
+ *(++ state.ptr) != 'u' || *(++ state.ptr) != 'e')
619
+ {
620
+ goto e_unknown_value;
621
+ }
622
+
623
+ if (!new_value (&state, &top, &root, &alloc, json_boolean))
624
+ goto e_alloc_failure;
625
+
626
+ top->u.boolean = 1;
627
+
628
+ flags |= flag_next;
629
+ break;
630
+
631
+ case 'f':
632
+
633
+ if ((end - state.ptr) <= 4 || *(++ state.ptr) != 'a' ||
634
+ *(++ state.ptr) != 'l' || *(++ state.ptr) != 's' ||
635
+ *(++ state.ptr) != 'e')
636
+ {
637
+ goto e_unknown_value;
638
+ }
639
+
640
+ if (!new_value (&state, &top, &root, &alloc, json_boolean))
641
+ goto e_alloc_failure;
642
+
643
+ flags |= flag_next;
644
+ break;
645
+
646
+ case 'n':
647
+
648
+ if ((end - state.ptr) <= 3 || *(++ state.ptr) != 'u' ||
649
+ *(++ state.ptr) != 'l' || *(++ state.ptr) != 'l')
650
+ {
651
+ goto e_unknown_value;
652
+ }
653
+
654
+ if (!new_value (&state, &top, &root, &alloc, json_null))
655
+ goto e_alloc_failure;
656
+
657
+ flags |= flag_next;
658
+ break;
659
+
660
+ default:
661
+
662
+ if (isdigit ((unsigned char) b) || b == '-')
663
+ {
664
+ if (!new_value (&state, &top, &root, &alloc, json_integer))
665
+ goto e_alloc_failure;
666
+
667
+ if (!state.first_pass)
668
+ {
669
+ while (isdigit ((unsigned char) b) || b == '+' || b == '-'
670
+ || b == 'e' || b == 'E' || b == '.')
671
+ {
672
+ if ( (++ state.ptr) == end)
673
+ {
674
+ b = 0;
675
+ break;
676
+ }
677
+
678
+ b = *state.ptr;
679
+ }
680
+
681
+ flags |= flag_next | flag_reproc;
682
+ break;
683
+ }
684
+
685
+ flags &= ~ (flag_num_negative | flag_num_e |
686
+ flag_num_e_got_sign | flag_num_e_negative |
687
+ flag_num_zero);
688
+
689
+ num_digits = 0;
690
+ num_fraction = 0;
691
+ num_e = 0;
692
+
693
+ if (b != '-')
694
+ {
695
+ flags |= flag_reproc;
696
+ break;
697
+ }
698
+
699
+ flags |= flag_num_negative;
700
+ continue;
701
+ }
702
+ else
703
+ { sprintf (error, "%u:%u: Unexpected `%c` when seeking value", line_and_col, b);
704
+ goto e_failed;
705
+ }
706
+ };
707
+ };
708
+ }
709
+ else
710
+ {
711
+ switch (top->type)
712
+ {
713
+ case json_object:
714
+
715
+ switch (b)
716
+ {
717
+ whitespace:
718
+ continue;
719
+
720
+ case '"':
721
+
722
+ if (flags & flag_need_comma)
723
+ { sprintf (error, "%u:%u: Expected `,` before `\"`", line_and_col);
724
+ goto e_failed;
725
+ }
726
+
727
+ flags |= flag_string;
728
+
729
+ string = (json_char *) top->_reserved.object_mem;
730
+ string_length = 0;
731
+
732
+ break;
733
+
734
+ case '}':
735
+
736
+ flags = (flags & ~ flag_need_comma) | flag_next;
737
+ break;
738
+
739
+ case ',':
740
+
741
+ if (flags & flag_need_comma)
742
+ {
743
+ flags &= ~ flag_need_comma;
744
+ break;
745
+ } /* FALLTHRU */
746
+
747
+ default:
748
+ sprintf (error, "%u:%u: Unexpected `%c` in object", line_and_col, b);
749
+ goto e_failed;
750
+ };
751
+
752
+ break;
753
+
754
+ case json_integer:
755
+ case json_double:
756
+
757
+ if (isdigit ((unsigned char)b))
758
+ {
759
+ ++ num_digits;
760
+
761
+ if (top->type == json_integer || flags & flag_num_e)
762
+ {
763
+ if (! (flags & flag_num_e))
764
+ {
765
+ if (flags & flag_num_zero)
766
+ { sprintf (error, "%u:%u: Unexpected `0` before `%c`", line_and_col, b);
767
+ goto e_failed;
768
+ }
769
+
770
+ if (num_digits == 1 && b == '0')
771
+ flags |= flag_num_zero;
772
+ }
773
+ else
774
+ {
775
+ flags |= flag_num_e_got_sign;
776
+ num_e = (num_e * 10) + (b - '0');
777
+ continue;
778
+ }
779
+
780
+ if (would_overflow(top->u.integer, b))
781
+ {
782
+ json_int_t integer = top->u.integer;
783
+ -- num_digits;
784
+ -- state.ptr;
785
+ top->type = json_double;
786
+ top->u.dbl = (double)integer;
787
+ continue;
788
+ }
789
+
790
+ top->u.integer = (top->u.integer * 10) + (b - '0');
791
+ continue;
792
+ }
793
+
794
+ if (flags & flag_num_got_decimal)
795
+ num_fraction = (num_fraction * 10) + (b - '0');
796
+ else
797
+ top->u.dbl = (top->u.dbl * 10) + (b - '0');
798
+
799
+ continue;
800
+ }
801
+
802
+ if (b == '+' || b == '-')
803
+ {
804
+ if ( (flags & flag_num_e) && !(flags & flag_num_e_got_sign))
805
+ {
806
+ flags |= flag_num_e_got_sign;
807
+
808
+ if (b == '-')
809
+ flags |= flag_num_e_negative;
810
+
811
+ continue;
812
+ }
813
+ }
814
+ else if (b == '.' && top->type == json_integer)
815
+ {
816
+ json_int_t integer = top->u.integer;
817
+
818
+ if (!num_digits)
819
+ { sprintf (error, "%u:%u: Expected digit before `.`", line_and_col);
820
+ goto e_failed;
821
+ }
822
+
823
+ top->type = json_double;
824
+ top->u.dbl = (double) integer;
825
+
826
+ flags |= flag_num_got_decimal;
827
+ num_digits = 0;
828
+ continue;
829
+ }
830
+
831
+ if (! (flags & flag_num_e))
832
+ {
833
+ if (top->type == json_double)
834
+ {
835
+ if (!num_digits)
836
+ { sprintf (error, "%u:%u: Expected digit after `.`", line_and_col);
837
+ goto e_failed;
838
+ }
839
+
840
+ top->u.dbl += num_fraction / pow (10.0, num_digits);
841
+ }
842
+
843
+ if (b == 'e' || b == 'E')
844
+ {
845
+ flags |= flag_num_e;
846
+
847
+ if (top->type == json_integer)
848
+ {
849
+ json_int_t integer = top->u.integer;
850
+ top->type = json_double;
851
+ top->u.dbl = (double) integer;
852
+ }
853
+
854
+ num_digits = 0;
855
+ flags &= ~ flag_num_zero;
856
+
857
+ continue;
858
+ }
859
+ }
860
+ else
861
+ {
862
+ if (!num_digits)
863
+ { sprintf (error, "%u:%u: Expected digit after `e`", line_and_col);
864
+ goto e_failed;
865
+ }
866
+
867
+ top->u.dbl *= pow (10.0, ((flags & flag_num_e_negative) ? - num_e : num_e));
868
+ }
869
+
870
+ if (flags & flag_num_negative)
871
+ {
872
+ if (top->type == json_integer)
873
+ top->u.integer = - top->u.integer;
874
+ else
875
+ top->u.dbl = - top->u.dbl;
876
+ }
877
+
878
+ flags |= flag_next | flag_reproc;
879
+ break;
880
+
881
+ default:
882
+ break;
883
+ };
884
+ }
885
+
886
+ if (flags & flag_reproc)
887
+ {
888
+ flags &= ~ flag_reproc;
889
+ -- state.ptr;
890
+ }
891
+
892
+ if (flags & flag_next)
893
+ {
894
+ flags = (flags & ~ flag_next) | flag_need_comma;
895
+
896
+ if (!top->parent)
897
+ {
898
+ /* root value done */
899
+
900
+ flags |= flag_done;
901
+ continue;
902
+ }
903
+
904
+ if (top->parent->type == json_array)
905
+ flags |= flag_seek_value;
906
+
907
+ if (!state.first_pass)
908
+ {
909
+ json_value * parent = top->parent;
910
+
911
+ switch (parent->type)
912
+ {
913
+ case json_object:
914
+
915
+ parent->u.object.values
916
+ [parent->u.object.length].value = top;
917
+
918
+ break;
919
+
920
+ case json_array:
921
+
922
+ parent->u.array.values
923
+ [parent->u.array.length] = top;
924
+
925
+ break;
926
+
927
+ default:
928
+ break;
929
+ };
930
+ }
931
+
932
+ if ( (++ top->parent->u.array.length) > UINT_MAX - 8)
933
+ goto e_overflow;
934
+
935
+ top = top->parent;
936
+
937
+ continue;
938
+ }
939
+ }
940
+
941
+ alloc = root;
942
+ }
943
+
944
+ return root;
945
+
946
+ e_unknown_value:
947
+
948
+ sprintf (error, "%u:%u: Unknown value", line_and_col);
949
+ goto e_failed;
950
+
951
+ e_alloc_failure:
952
+
953
+ strcpy (error, "Memory allocation failure");
954
+ goto e_failed;
955
+
956
+ e_overflow:
957
+
958
+ sprintf (error, "%u:%u: Too long (caught overflow)", line_and_col);
959
+ goto e_failed;
960
+
961
+ e_failed:
962
+
963
+ if (error_buf)
964
+ {
965
+ if (*error)
966
+ strcpy (error_buf, error);
967
+ else
968
+ strcpy (error_buf, "Unknown error");
969
+ }
970
+
971
+ if (state.first_pass)
972
+ alloc = root;
973
+
974
+ while (alloc)
975
+ {
976
+ top = alloc->_reserved.next_alloc;
977
+ state.settings.mem_free (alloc, state.settings.user_data);
978
+ alloc = top;
979
+ }
980
+
981
+ if (!state.first_pass)
982
+ json_value_free_ex (&state.settings, root);
983
+
984
+ return 0;
985
+ }
986
+
987
+ json_value * json_parse (const json_char * json, size_t length)
988
+ {
989
+ json_settings settings = { 0 };
990
+ return json_parse_ex (&settings, json, length, 0);
991
+ }
992
+
993
+ static void json_value_free_ex (json_settings * settings, json_value * value)
994
+ {
995
+ json_value * cur_value;
996
+
997
+ if (!value)
998
+ return;
999
+
1000
+ value->parent = 0;
1001
+
1002
+ while (value)
1003
+ {
1004
+ switch (value->type)
1005
+ {
1006
+ case json_array:
1007
+
1008
+ if (!value->u.array.length)
1009
+ {
1010
+ settings->mem_free (value->u.array.values, settings->user_data);
1011
+ break;
1012
+ }
1013
+
1014
+ value = value->u.array.values [-- value->u.array.length];
1015
+ continue;
1016
+
1017
+ case json_object:
1018
+
1019
+ if (!value->u.object.length)
1020
+ {
1021
+ settings->mem_free (value->u.object.values, settings->user_data);
1022
+ break;
1023
+ }
1024
+
1025
+ value = value->u.object.values [-- value->u.object.length].value;
1026
+ continue;
1027
+
1028
+ case json_string:
1029
+
1030
+ settings->mem_free (value->u.string.ptr, settings->user_data);
1031
+ break;
1032
+
1033
+ default:
1034
+ break;
1035
+ };
1036
+
1037
+ cur_value = value;
1038
+ value = value->parent;
1039
+ settings->mem_free (cur_value, settings->user_data);
1040
+ }
1041
+ }
1042
+
1043
+ void json_value_free (json_value * value)
1044
+ {
1045
+ json_settings settings = { 0 };
1046
+ settings.mem_free = default_free;
1047
+ json_value_free_ex (&settings, value);
1048
+ }