zsv 1.3.0 → 1.4.3

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +41 -3
  4. data/ext/zsv/extconf.rb +66 -49
  5. data/ext/zsv/options.c +1 -2
  6. data/ext/zsv/parser.c +14 -0
  7. data/ext/zsv/zsv_ext.c +3 -0
  8. data/lib/zsv/version.rb +1 -1
  9. metadata +6 -226
  10. data/ext/zsv/vendor/zsv-1.3.0/app/2db.c +0 -756
  11. data/ext/zsv/vendor/zsv-1.3.0/app/2json.c +0 -381
  12. data/ext/zsv/vendor/zsv-1.3.0/app/2tsv.c +0 -228
  13. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/help.c +0 -123
  14. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/license.c +0 -39
  15. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/register.c +0 -104
  16. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/thirdparty.c +0 -41
  17. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/unregister.c +0 -1
  18. data/ext/zsv/vendor/zsv-1.3.0/app/builtin/version.c +0 -14
  19. data/ext/zsv/vendor/zsv-1.3.0/app/check/simdutf_wrapper.h +0 -19
  20. data/ext/zsv/vendor/zsv-1.3.0/app/check/utf8.c +0 -116
  21. data/ext/zsv/vendor/zsv-1.3.0/app/check.c +0 -194
  22. data/ext/zsv/vendor/zsv-1.3.0/app/cli.c +0 -796
  23. data/ext/zsv/vendor/zsv-1.3.0/app/cli_const.h +0 -41
  24. data/ext/zsv/vendor/zsv-1.3.0/app/cli_export.h +0 -16
  25. data/ext/zsv/vendor/zsv-1.3.0/app/cli_ini.c +0 -280
  26. data/ext/zsv/vendor/zsv-1.3.0/app/cli_internal.h +0 -36
  27. data/ext/zsv/vendor/zsv-1.3.0/app/compare.c +0 -913
  28. data/ext/zsv/vendor/zsv-1.3.0/app/compare.h +0 -23
  29. data/ext/zsv/vendor/zsv-1.3.0/app/compare_added_column.c +0 -20
  30. data/ext/zsv/vendor/zsv-1.3.0/app/compare_internal.h +0 -140
  31. data/ext/zsv/vendor/zsv-1.3.0/app/compare_sort.c +0 -91
  32. data/ext/zsv/vendor/zsv-1.3.0/app/compare_unique_colname.c +0 -81
  33. data/ext/zsv/vendor/zsv-1.3.0/app/count-pull.c +0 -82
  34. data/ext/zsv/vendor/zsv-1.3.0/app/count.c +0 -404
  35. data/ext/zsv/vendor/zsv-1.3.0/app/desc.c +0 -569
  36. data/ext/zsv/vendor/zsv-1.3.0/app/echo.c +0 -365
  37. data/ext/zsv/vendor/zsv-1.3.0/app/ext_example/my_extension.c +0 -366
  38. data/ext/zsv/vendor/zsv-1.3.0/app/ext_example/mysheet_extension.c +0 -341
  39. data/ext/zsv/vendor/zsv-1.3.0/app/ext_template/YOUR_EXTENSION_zsvext.c +0 -263
  40. data/ext/zsv/vendor/zsv-1.3.0/app/external/inih/ini.c +0 -298
  41. data/ext/zsv/vendor/zsv-1.3.0/app/external/inih/ini.h +0 -157
  42. data/ext/zsv/vendor/zsv-1.3.0/app/external/json_writer-1.01/json_numeric.c +0 -177
  43. data/ext/zsv/vendor/zsv-1.3.0/app/external/json_writer-1.01/jsonwriter.c +0 -444
  44. data/ext/zsv/vendor/zsv-1.3.0/app/external/json_writer-1.01/jsonwriter.h +0 -145
  45. data/ext/zsv/vendor/zsv-1.3.0/app/external/json_writer-1.01/utils.c +0 -110
  46. data/ext/zsv/vendor/zsv-1.3.0/app/external/memfile-1.0/include/memfile.h +0 -15
  47. data/ext/zsv/vendor/zsv-1.3.0/app/external/memfile-1.0/src/memfile.c +0 -64
  48. data/ext/zsv/vendor/zsv-1.3.0/app/external/sglib/sglib.h +0 -1955
  49. data/ext/zsv/vendor/zsv-1.3.0/app/external/simdutf/simdutf.h +0 -6802
  50. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3.c +0 -230517
  51. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3.h +0 -12174
  52. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3_and_csv_vtab.c +0 -2
  53. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3_csv_vtab-mem.c +0 -142
  54. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3_csv_vtab-mem.h +0 -49
  55. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3_csv_vtab-zsv.c +0 -485
  56. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3_csv_vtab.c +0 -1015
  57. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/sqlite3ext.h +0 -663
  58. data/ext/zsv/vendor/zsv-1.3.0/app/external/sqlite3/vtab_helper.c +0 -85
  59. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/build/yajl-2.1.1/include/yajl/yajl_common.h +0 -75
  60. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/build/yajl-2.1.1/include/yajl/yajl_gen.h +0 -167
  61. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/build/yajl-2.1.1/include/yajl/yajl_parse.h +0 -228
  62. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/build/yajl-2.1.1/include/yajl/yajl_tree.h +0 -186
  63. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/build/yajl-2.1.1/include/yajl/yajl_version.h +0 -23
  64. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/api/yajl_common.h +0 -76
  65. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/api/yajl_gen.h +0 -167
  66. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/api/yajl_parse.h +0 -238
  67. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/api/yajl_tree.h +0 -186
  68. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl.c +0 -184
  69. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_alloc.c +0 -52
  70. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_alloc.h +0 -34
  71. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_buf.c +0 -103
  72. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_buf.h +0 -57
  73. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_bytestack.h +0 -69
  74. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_encode.c +0 -220
  75. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_encode.h +0 -34
  76. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_gen.c +0 -362
  77. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_lex.c +0 -764
  78. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_lex.h +0 -117
  79. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_parser.c +0 -508
  80. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_parser.h +0 -78
  81. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_tree.c +0 -505
  82. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl/src/yajl_version.c +0 -7
  83. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl_helper/yajl_helper/json_value.h +0 -59
  84. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl_helper/yajl_helper/yajl_helper.h +0 -208
  85. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl_helper/yajl_helper.c +0 -795
  86. data/ext/zsv/vendor/zsv-1.3.0/app/external/yajl_helper/yajl_helper_internal.h +0 -28
  87. data/ext/zsv/vendor/zsv-1.3.0/app/flatten.c +0 -851
  88. data/ext/zsv/vendor/zsv-1.3.0/app/jq.c +0 -106
  89. data/ext/zsv/vendor/zsv-1.3.0/app/jq.h +0 -6
  90. data/ext/zsv/vendor/zsv-1.3.0/app/mv.c +0 -113
  91. data/ext/zsv/vendor/zsv-1.3.0/app/noop.c +0 -90
  92. data/ext/zsv/vendor/zsv-1.3.0/app/overwrite.c +0 -295
  93. data/ext/zsv/vendor/zsv-1.3.0/app/paste.c +0 -175
  94. data/ext/zsv/vendor/zsv-1.3.0/app/pretty.c +0 -693
  95. data/ext/zsv/vendor/zsv-1.3.0/app/prop.c +0 -980
  96. data/ext/zsv/vendor/zsv-1.3.0/app/rm.c +0 -131
  97. data/ext/zsv/vendor/zsv-1.3.0/app/select/fixed.c +0 -130
  98. data/ext/zsv/vendor/zsv-1.3.0/app/select/internal.h +0 -118
  99. data/ext/zsv/vendor/zsv-1.3.0/app/select/parallel.c +0 -45
  100. data/ext/zsv/vendor/zsv-1.3.0/app/select/parallel.h +0 -41
  101. data/ext/zsv/vendor/zsv-1.3.0/app/select/processing.c +0 -107
  102. data/ext/zsv/vendor/zsv-1.3.0/app/select/rand.c +0 -20
  103. data/ext/zsv/vendor/zsv-1.3.0/app/select/regex.c +0 -61
  104. data/ext/zsv/vendor/zsv-1.3.0/app/select/search.c +0 -14
  105. data/ext/zsv/vendor/zsv-1.3.0/app/select/selection.c +0 -192
  106. data/ext/zsv/vendor/zsv-1.3.0/app/select/usage.c +0 -72
  107. data/ext/zsv/vendor/zsv-1.3.0/app/select-pull.c +0 -812
  108. data/ext/zsv/vendor/zsv-1.3.0/app/select.c +0 -753
  109. data/ext/zsv/vendor/zsv-1.3.0/app/serialize.c +0 -372
  110. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/curses.h +0 -15
  111. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/cursor.c +0 -119
  112. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/errors.c +0 -45
  113. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/file.c +0 -63
  114. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/file.h +0 -12
  115. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/filter.c +0 -166
  116. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/handlers.c +0 -214
  117. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/handlers_internal.h +0 -128
  118. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/help.c +0 -43
  119. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/index.c +0 -81
  120. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/index.h +0 -25
  121. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/key-bindings.c +0 -325
  122. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/key-bindings.h +0 -73
  123. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/lexer.c +0 -203
  124. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/newline_handler.c +0 -7
  125. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/pivot.c +0 -318
  126. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/procedure.c +0 -134
  127. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/procedure.h +0 -119
  128. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/read-data.c +0 -322
  129. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/screen_buffer.c +0 -203
  130. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/screen_buffer.h +0 -36
  131. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/sheet-sql.c +0 -167
  132. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/sheet_internal.h +0 -36
  133. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/sqlfilter.c +0 -153
  134. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/terminfo.c +0 -32
  135. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/transformation.c +0 -312
  136. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/transformation.h +0 -29
  137. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/ui_buffer.c +0 -266
  138. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/usage.c +0 -9
  139. data/ext/zsv/vendor/zsv-1.3.0/app/sheet/utf8-width.c +0 -60
  140. data/ext/zsv/vendor/zsv-1.3.0/app/sheet.c +0 -1007
  141. data/ext/zsv/vendor/zsv-1.3.0/app/sql.c +0 -453
  142. data/ext/zsv/vendor/zsv-1.3.0/app/sql_internal.c +0 -101
  143. data/ext/zsv/vendor/zsv-1.3.0/app/sql_internal.h +0 -49
  144. data/ext/zsv/vendor/zsv-1.3.0/app/stack.c +0 -393
  145. data/ext/zsv/vendor/zsv-1.3.0/app/utils/arg.c +0 -322
  146. data/ext/zsv/vendor/zsv-1.3.0/app/utils/cache.c +0 -228
  147. data/ext/zsv/vendor/zsv-1.3.0/app/utils/cat.c +0 -91
  148. data/ext/zsv/vendor/zsv-1.3.0/app/utils/chunk.c +0 -240
  149. data/ext/zsv/vendor/zsv-1.3.0/app/utils/chunk.h +0 -63
  150. data/ext/zsv/vendor/zsv-1.3.0/app/utils/clock.c +0 -57
  151. data/ext/zsv/vendor/zsv-1.3.0/app/utils/db.c +0 -148
  152. data/ext/zsv/vendor/zsv-1.3.0/app/utils/dirs-no-jq.c +0 -2
  153. data/ext/zsv/vendor/zsv-1.3.0/app/utils/dirs.c +0 -427
  154. data/ext/zsv/vendor/zsv-1.3.0/app/utils/dirs_from_json.c +0 -253
  155. data/ext/zsv/vendor/zsv-1.3.0/app/utils/dirs_to_json.c +0 -121
  156. data/ext/zsv/vendor/zsv-1.3.0/app/utils/dl.c +0 -20
  157. data/ext/zsv/vendor/zsv-1.3.0/app/utils/emcc/fs_api.c +0 -159
  158. data/ext/zsv/vendor/zsv-1.3.0/app/utils/err.c +0 -24
  159. data/ext/zsv/vendor/zsv-1.3.0/app/utils/file-mem.c +0 -180
  160. data/ext/zsv/vendor/zsv-1.3.0/app/utils/file.c +0 -256
  161. data/ext/zsv/vendor/zsv-1.3.0/app/utils/index.c +0 -197
  162. data/ext/zsv/vendor/zsv-1.3.0/app/utils/index.h +0 -49
  163. data/ext/zsv/vendor/zsv-1.3.0/app/utils/jq.c +0 -400
  164. data/ext/zsv/vendor/zsv-1.3.0/app/utils/json.c +0 -120
  165. data/ext/zsv/vendor/zsv-1.3.0/app/utils/mem.c +0 -18
  166. data/ext/zsv/vendor/zsv-1.3.0/app/utils/memmem.c +0 -132
  167. data/ext/zsv/vendor/zsv-1.3.0/app/utils/os.c +0 -178
  168. data/ext/zsv/vendor/zsv-1.3.0/app/utils/overwrite.c +0 -258
  169. data/ext/zsv/vendor/zsv-1.3.0/app/utils/overwrite_writer.c +0 -246
  170. data/ext/zsv/vendor/zsv-1.3.0/app/utils/pcre2-8/pcre2-8-test.c +0 -123
  171. data/ext/zsv/vendor/zsv-1.3.0/app/utils/pcre2-8/pcre2-8.c +0 -153
  172. data/ext/zsv/vendor/zsv-1.3.0/app/utils/pcre2-8/pcre2-8.h +0 -54
  173. data/ext/zsv/vendor/zsv-1.3.0/app/utils/prop.c +0 -267
  174. data/ext/zsv/vendor/zsv-1.3.0/app/utils/signal.c +0 -53
  175. data/ext/zsv/vendor/zsv-1.3.0/app/utils/string.c +0 -357
  176. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/dir_exists_longpath.c +0 -83
  177. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/dl.c +0 -33
  178. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/fopen_longpath.c +0 -184
  179. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/foreach_dirent_longpath.c +0 -292
  180. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/io.c +0 -259
  181. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/io.h +0 -13
  182. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/mkdir_longpath.c +0 -255
  183. data/ext/zsv/vendor/zsv-1.3.0/app/utils/win/remove_longpath.c +0 -96
  184. data/ext/zsv/vendor/zsv-1.3.0/app/utils/writer.c +0 -361
  185. data/ext/zsv/vendor/zsv-1.3.0/app/zsv_command.h +0 -40
  186. data/ext/zsv/vendor/zsv-1.3.0/app/zsv_command_standalone.c +0 -16
  187. data/ext/zsv/vendor/zsv-1.3.0/app/zsv_main.h +0 -44
  188. data/ext/zsv/vendor/zsv-1.3.0/examples/js/zsv_parser_api_dummy.c +0 -3
  189. data/ext/zsv/vendor/zsv-1.3.0/examples/lib/parse_by_chunk.c +0 -100
  190. data/ext/zsv/vendor/zsv-1.3.0/examples/lib/print_my_column.c +0 -143
  191. data/ext/zsv/vendor/zsv-1.3.0/examples/lib/pull.c +0 -89
  192. data/ext/zsv/vendor/zsv-1.3.0/examples/lib/simple.c +0 -123
  193. data/ext/zsv/vendor/zsv-1.3.0/fuzz/fuzz.c +0 -16
  194. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/api.h +0 -336
  195. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/common.h +0 -361
  196. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/ext/implementation.h +0 -62
  197. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/ext/implementation_private.h +0 -113
  198. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/ext/sheet.h +0 -73
  199. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/ext.h +0 -329
  200. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/arg.h +0 -90
  201. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/cache.h +0 -49
  202. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/clock.h +0 -36
  203. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/compiler.h +0 -58
  204. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/db.h +0 -19
  205. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/dirs.h +0 -147
  206. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/dl.h +0 -22
  207. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/emcc/fs_api.h +0 -28
  208. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/err.h +0 -22
  209. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/file-mem.h +0 -17
  210. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/file.h +0 -99
  211. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/jq.h +0 -65
  212. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/json.h +0 -19
  213. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/mem.h +0 -19
  214. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/memmem.h +0 -13
  215. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/os.h +0 -54
  216. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/overwrite.h +0 -71
  217. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/overwrite_writer.h +0 -53
  218. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/prop.h +0 -107
  219. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/signal.h +0 -18
  220. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/sql.h +0 -11
  221. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/string.h +0 -148
  222. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/utf8.h +0 -41
  223. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/win/dl.h +0 -25
  224. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/utils/writer.h +0 -101
  225. data/ext/zsv/vendor/zsv-1.3.0/include/zsv/zsv_export.h +0 -33
  226. data/ext/zsv/vendor/zsv-1.3.0/include/zsv.h +0 -20
  227. data/ext/zsv/vendor/zsv-1.3.0/src/vector_delim.c +0 -60
  228. data/ext/zsv/vendor/zsv-1.3.0/src/zsv.c +0 -484
  229. data/ext/zsv/vendor/zsv-1.3.0/src/zsv_internal.c +0 -731
  230. data/ext/zsv/vendor/zsv-1.3.0/src/zsv_scan_delim.c +0 -285
  231. data/ext/zsv/vendor/zsv-1.3.0/src/zsv_scan_fixed.c +0 -88
  232. data/ext/zsv/vendor/zsv-1.3.0/src/zsv_strencode.c +0 -51
@@ -1,157 +0,0 @@
1
- /* inih -- simple .INI file parser
2
-
3
- SPDX-License-Identifier: BSD-3-Clause
4
-
5
- Copyright (C) 2009-2020, Ben Hoyt
6
-
7
- inih is released under the New BSD license (see LICENSE.txt). Go to the project
8
- home page for more info:
9
-
10
- https://github.com/benhoyt/inih
11
-
12
- */
13
-
14
- #ifndef INI_H
15
- #define INI_H
16
-
17
- /* Make this header file easier to include in C++ code */
18
- #ifdef __cplusplus
19
- extern "C" {
20
- #endif
21
-
22
- #include <stdio.h>
23
-
24
- /* Nonzero if ini_handler callback should accept lineno parameter. */
25
- #ifndef INI_HANDLER_LINENO
26
- #define INI_HANDLER_LINENO 0
27
- #endif
28
-
29
- /* Typedef for prototype of handler function. */
30
- #if INI_HANDLER_LINENO
31
- typedef int (*ini_handler)(void* user, const char* section,
32
- const char* name, const char* value,
33
- int lineno);
34
- #else
35
- typedef int (*ini_handler)(void* user, const char* section,
36
- const char* name, const char* value);
37
- #endif
38
-
39
- /* Typedef for prototype of fgets-style reader function. */
40
- typedef char* (*ini_reader)(char* str, int num, void* stream);
41
-
42
- /* Parse given INI-style file. May have [section]s, name=value pairs
43
- (whitespace stripped), and comments starting with ';' (semicolon). Section
44
- is "" if name=value pair parsed before any section heading. name:value
45
- pairs are also supported as a concession to Python's configparser.
46
-
47
- For each name=value pair parsed, call handler function with given user
48
- pointer as well as section, name, and value (data only valid for duration
49
- of handler call). Handler should return nonzero on success, zero on error.
50
-
51
- Returns 0 on success, line number of first error on parse error (doesn't
52
- stop on first error), -1 on file open error, or -2 on memory allocation
53
- error (only when INI_USE_STACK is zero).
54
- */
55
- int ini_parse(const char* filename, ini_handler handler, void* user);
56
-
57
- /* Same as ini_parse(), but takes a FILE* instead of filename. This doesn't
58
- close the file when it's finished -- the caller must do that. */
59
- int ini_parse_file(FILE* file, ini_handler handler, void* user);
60
-
61
- /* Same as ini_parse(), but takes an ini_reader function pointer instead of
62
- filename. Used for implementing custom or string-based I/O (see also
63
- ini_parse_string). */
64
- int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler,
65
- void* user);
66
-
67
- /* Same as ini_parse(), but takes a zero-terminated string with the INI data
68
- instead of a file. Useful for parsing INI data from a network socket or
69
- already in memory. */
70
- int ini_parse_string(const char* string, ini_handler handler, void* user);
71
-
72
- /* Nonzero to allow multi-line value parsing, in the style of Python's
73
- configparser. If allowed, ini_parse() will call the handler with the same
74
- name for each subsequent line parsed. */
75
- #ifndef INI_ALLOW_MULTILINE
76
- #define INI_ALLOW_MULTILINE 1
77
- #endif
78
-
79
- /* Nonzero to allow a UTF-8 BOM sequence (0xEF 0xBB 0xBF) at the start of
80
- the file. See https://github.com/benhoyt/inih/issues/21 */
81
- #ifndef INI_ALLOW_BOM
82
- #define INI_ALLOW_BOM 1
83
- #endif
84
-
85
- /* Chars that begin a start-of-line comment. Per Python configparser, allow
86
- both ; and # comments at the start of a line by default. */
87
- #ifndef INI_START_COMMENT_PREFIXES
88
- #define INI_START_COMMENT_PREFIXES ";#"
89
- #endif
90
-
91
- /* Nonzero to allow inline comments (with valid inline comment characters
92
- specified by INI_INLINE_COMMENT_PREFIXES). Set to 0 to turn off and match
93
- Python 3.2+ configparser behaviour. */
94
- #ifndef INI_ALLOW_INLINE_COMMENTS
95
- #define INI_ALLOW_INLINE_COMMENTS 1
96
- #endif
97
- #ifndef INI_INLINE_COMMENT_PREFIXES
98
- #define INI_INLINE_COMMENT_PREFIXES ";"
99
- #endif
100
-
101
- /* Nonzero to use stack for line buffer, zero to use heap (malloc/free). */
102
- #ifndef INI_USE_STACK
103
- #define INI_USE_STACK 1
104
- #endif
105
-
106
- /* Maximum line length for any line in INI file (stack or heap). Note that
107
- this must be 3 more than the longest line (due to '\r', '\n', and '\0'). */
108
- #ifndef INI_MAX_LINE
109
- #define INI_MAX_LINE 200
110
- #endif
111
-
112
- /* Nonzero to allow heap line buffer to grow via realloc(), zero for a
113
- fixed-size buffer of INI_MAX_LINE bytes. Only applies if INI_USE_STACK is
114
- zero. */
115
- #ifndef INI_ALLOW_REALLOC
116
- #define INI_ALLOW_REALLOC 0
117
- #endif
118
-
119
- /* Initial size in bytes for heap line buffer. Only applies if INI_USE_STACK
120
- is zero. */
121
- #ifndef INI_INITIAL_ALLOC
122
- #define INI_INITIAL_ALLOC 200
123
- #endif
124
-
125
- /* Stop parsing on first error (default is to keep parsing). */
126
- #ifndef INI_STOP_ON_FIRST_ERROR
127
- #define INI_STOP_ON_FIRST_ERROR 0
128
- #endif
129
-
130
- /* Nonzero to call the handler at the start of each new section (with
131
- name and value NULL). Default is to only call the handler on
132
- each name=value pair. */
133
- #ifndef INI_CALL_HANDLER_ON_NEW_SECTION
134
- #define INI_CALL_HANDLER_ON_NEW_SECTION 0
135
- #endif
136
-
137
- /* Nonzero to allow a name without a value (no '=' or ':' on the line) and
138
- call the handler with value NULL in this case. Default is to treat
139
- no-value lines as an error. */
140
- #ifndef INI_ALLOW_NO_VALUE
141
- #define INI_ALLOW_NO_VALUE 0
142
- #endif
143
-
144
- /* Nonzero to use custom ini_malloc, ini_free, and ini_realloc memory
145
- allocation functions (INI_USE_STACK must also be 0). These functions must
146
- have the same signatures as malloc/free/realloc and behave in a similar
147
- way. ini_realloc is only needed if INI_ALLOW_REALLOC is set. */
148
- #ifndef INI_CUSTOM_ALLOCATOR
149
- #define INI_CUSTOM_ALLOCATOR 0
150
- #endif
151
-
152
-
153
- #ifdef __cplusplus
154
- }
155
- #endif
156
-
157
- #endif /* INI_H */
@@ -1,177 +0,0 @@
1
- #include <stdbool.h> // For bool, true, false
2
- #include <stddef.h> // For size_t
3
- #include <ctype.h> // For isdigit
4
-
5
- /**
6
- * @brief Checks if a buffer segment represents a valid JSON number (RFC 8259 compliant).
7
- *
8
- * Follows RFC 8259 Section 6 rules strictly. Numbers MUST have an integer part.
9
- * Operates on a character buffer `str` of explicit `length`.
10
- * Assumes `str` is NOT null-terminated and reads exactly `length` bytes.
11
- * Accessing memory beyond `str + length - 1` is avoided.
12
- *
13
- * JSON Number Format (RFC 8259):
14
- * number = [ minus ] int [ frac ] [ exp ]
15
- * int = zero / ( digit1-9 *DIGIT )
16
- * frac = decimal-point 1*DIGIT
17
- * exp = e [ minus / plus ] 1*DIGIT
18
- *
19
- * @param str Pointer to the start of the character buffer.
20
- * @param length The exact number of characters in the buffer segment to validate.
21
- * @return true if the buffer segment [str, str + length) is a valid JSON number
22
- * per RFC 8259, false otherwise.
23
- */
24
- bool is_valid_json_number(const char *str, size_t length) {
25
- // 1. Handle NULL pointer or Zero Length
26
- if (str == NULL || length == 0) {
27
- return false;
28
- }
29
-
30
- const char *p = str;
31
- const char * const end = str + length; // Pointer to one position *after* the last valid char
32
-
33
- // 2. Optional Minus Sign
34
- // Check bounds before dereferencing
35
- if (p < end && *p == '-') {
36
- p++; // Advance pointer
37
- }
38
-
39
- // 3. Integer Part (Mandatory per RFC 8259)
40
- // Check if we are already at the end (e.g., input was "-" or empty after sign)
41
- if (p >= end) {
42
- return false;
43
- }
44
-
45
- if (*p == '0') {
46
- p++; // Consumed '0'
47
- // Check bounds *before* looking at the next character for leading zero violation
48
- if (p < end && isdigit((unsigned char)*p)) {
49
- return false; // Leading zero rule violation (e.g., "01")
50
- }
51
- // '0' must be followed by '.', 'e', 'E', or the end of the buffer.
52
- } else if (isdigit((unsigned char)*p)) { // Starts with 1-9
53
- p++; // Consume the first digit (1-9)
54
- // Consume subsequent digits, checking bounds in the loop
55
- while (p < end && isdigit((unsigned char)*p)) {
56
- p++;
57
- }
58
- } else {
59
- // Did not start with '0' or '1'-'9' after optional sign. Invalid.
60
- // Correctly rejects ".2", "-.2" etc. even with length check.
61
- return false;
62
- }
63
- // If we reached here, a valid integer part was parsed up to the current 'p'.
64
-
65
- // 4. Optional Fractional Part
66
- // Check bounds before checking for '.'
67
- if (p < end && *p == '.') {
68
- p++; // Consumed '.'
69
- // Check bounds *before* looking for the mandatory digit after '.'
70
- if (p >= end || !isdigit((unsigned char)*p)) {
71
- // Reached end immediately after '.', or next char not a digit (e.g., "1.", "0.")
72
- return false;
73
- }
74
- p++; // Consumed the first digit after '.'
75
- // Consume subsequent digits, checking bounds in the loop
76
- while (p < end && isdigit((unsigned char)*p)) {
77
- p++;
78
- }
79
- }
80
-
81
- // 5. Optional Exponent Part
82
- // Check bounds before checking for 'e'/'E'
83
- if (p < end && (*p == 'e' || *p == 'E')) {
84
- p++; // Consumed 'e' or 'E'
85
- // Check bounds before checking for optional sign
86
- if (p < end && (*p == '+' || *p == '-')) {
87
- p++; // Consumed optional sign
88
- }
89
- // Check bounds *before* looking for the mandatory digit after exponent part
90
- if (p >= end || !isdigit((unsigned char)*p)) {
91
- // Reached end immediately after 'e'/'E'/sign, or next char not a digit (e.g., "1e", "1E+")
92
- return false;
93
- }
94
- p++; // Consumed the first digit after exponent part
95
- // Consume subsequent digits, checking bounds in the loop
96
- while (p < end && isdigit((unsigned char)*p)) {
97
- p++;
98
- }
99
- }
100
-
101
- // 6. Final Check: Must have consumed exactly 'length' characters
102
- // If p == end, we successfully processed all characters from str to str + length - 1
103
- // according to the JSON number rules.
104
- return p == end;
105
- }
106
-
107
- #ifdef JSON_NUMERIC_TEST
108
-
109
- // --- Example Usage ---
110
- #include <stdio.h>
111
- #include <string.h> // For strlen in test driver ONLY
112
-
113
- // Updated test function to use length
114
- void test_json_number_len(const char* str, size_t len) {
115
- // Create a temporary non-null terminated buffer for printing if needed,
116
- // or just print the pointer and length. Be careful printing non-terminated strings.
117
- // Using printf("%.*s", (int)len, str) is safer for printing.
118
- printf("\"%.*s\" (len %zu) -> %s\n", (int)len, str ? str : "(null)", len,
119
- is_valid_json_number(str, len) ? "VALID" : "INVALID");
120
- }
121
-
122
- // Helper for testing null-terminated strings using the length-based function
123
- void test_json_number_nul(const char* str) {
124
- if (str == NULL) {
125
- printf("NULL (len 0) -> %s\n", is_valid_json_number(NULL, 0) ? "VALID" : "INVALID");
126
- return;
127
- }
128
- size_t len = strlen(str); // Use strlen JUST for the test case driver
129
- test_json_number_len(str, len);
130
- }
131
-
132
-
133
- int main() {
134
- printf("--- Testing with NUL-terminated strings ---\n");
135
- printf("--- Valid Examples (RFC 8259 Compliant) ---\n");
136
- test_json_number_nul("0");
137
- test_json_number_nul("1");
138
- test_json_number_nul("-1");
139
- test_json_number_nul("12345");
140
- test_json_number_nul("0.5");
141
- test_json_number_nul("1.234");
142
- test_json_number_nul("1e5");
143
- test_json_number_nul("1E-5");
144
- test_json_number_nul("1.2E+10");
145
- test_json_number_nul("-0.123e-4");
146
-
147
- printf("\n--- Invalid Examples (RFC 8259 Compliant) ---\n");
148
- test_json_number_nul(NULL);
149
- test_json_number_nul("");
150
- test_json_number_nul("-");
151
- test_json_number_nul(".");
152
- test_json_number_nul(".2");
153
- test_json_number_nul("1.");
154
- test_json_number_nul("01");
155
- test_json_number_nul("1e");
156
- test_json_number_nul("1e+");
157
- test_json_number_nul("1.2a");
158
- test_json_number_nul("1.2e5 "); // Trailing space
159
-
160
- printf("\n--- Testing with specific lengths ---\n");
161
- test_json_number_len("12345", 3); // "123" -> VALID (Consumes exactly 3)
162
- test_json_number_len("12a45", 2); // "12" -> VALID (Consumes exactly 2)
163
- test_json_number_len("12a45", 3); // "12a" -> INVALID (a is not part of num, doesn't consume exactly 3 as num)
164
- test_json_number_len("1.5x", 3); // "1.5" -> VALID (Consumes exactly 3)
165
- test_json_number_len("1.5x", 4); // "1.5x" -> INVALID (x is extra)
166
- test_json_number_len("1.", 1); // "1" -> VALID (Consumes exactly 1)
167
- test_json_number_len("1.", 2); // "1." -> INVALID (Needs digit after .)
168
- test_json_number_len("-", 1); // "-" -> INVALID (No digits)
169
- test_json_number_len("-1", 1); // "-" -> INVALID (Only consumes 1, needs the digit too)
170
- test_json_number_len("-1", 2); // "-1" -> VALID (Consumes exactly 2)
171
- test_json_number_len("0", 1); // "0" -> VALID
172
- test_json_number_len("0", 0); // "" -> INVALID (Zero length handled)
173
- test_json_number_len(NULL, 0); // NULL -> INVALID
174
-
175
- return 0;
176
- }
177
- #endif