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,40 +0,0 @@
1
- #ifndef ZSV_COMMAND_H
2
- #define ZSV_COMMAND_H
3
-
4
- /**
5
- * Include zsv headers and entry point declaration
6
- * If the command will *not* use common zsv parsing options, then prior to
7
- * including this file, define
8
- * ZSV_COMMAND_NO_OPTIONS
9
- */
10
-
11
- #include <zsv.h>
12
- #include <zsv/utils/arg.h>
13
- #include <zsv/utils/prop.h>
14
- #include <zsv/utils/compiler.h>
15
- #include <zsv/utils/signal.h>
16
- #include <zsv/utils/memmem.h>
17
-
18
- #include "zsv_main.h"
19
-
20
- #define APPNAME1(x) #x
21
- #define APPNAME2(x) APPNAME1(x)
22
- #define APPNAME APPNAME2(ZSV_COMMAND)
23
-
24
- #include <zsv/utils/err.h>
25
-
26
- #ifdef ZSV_COMMAND_NO_OPTIONS
27
- ZSV_MAIN_NO_OPTIONS_DECL(ZSV_COMMAND);
28
- #else
29
- ZSV_MAIN_DECL(ZSV_COMMAND);
30
- #endif
31
-
32
- /**
33
- * If we are currently compiling a standalone executable (e.g. zsv_select),
34
- * then include the main() code
35
- */
36
- #ifndef ZSV_CLI
37
- #include "zsv_command_standalone.c"
38
- #endif
39
-
40
- #endif
@@ -1,16 +0,0 @@
1
- /**
2
- * Stub for standalone zsv command compilation e.g. for building zsv_select, zsv_count etc each as separate executables
3
- */
4
- int main(int argc, const char *argv[]) {
5
- #ifdef ZSV_COMMAND_NO_OPTIONS
6
- // if ZSV_MAIN_NO_OPTIONS is defined, we just call the command entry point
7
- // with the original argc and argv arguments
8
- return ZSV_MAIN_NO_OPTIONS_FUNC(ZSV_COMMAND)(argc, argv);
9
- #else
10
- struct zsv_opts opts;
11
- enum zsv_status stat = zsv_args_to_opts(argc, argv, &argc, argv, &opts);
12
- if (stat != zsv_status_ok)
13
- return stat;
14
- return ZSV_MAIN_FUNC(ZSV_COMMAND)(argc, argv, &opts, NULL);
15
- #endif
16
- }
@@ -1,44 +0,0 @@
1
- #ifndef ZSV_MAIN_H
2
- #define ZSV_MAIN_H
3
-
4
- /**
5
- * ZSV commands can each be compiled as either a standalone executable or a
6
- * command bundled into the `zsv` CLI. To support these different options
7
- * without repeating common invocation code, we define two sets of macros: one
8
- * set each for commands that do, and that do not, use common zsv parsing
9
- * options. Each set has a macro each for the entry point name and declaration
10
- */
11
-
12
- #define ZSV_MAIN_FUNC1(x) zsv_##x##_main
13
- #define ZSV_MAINEXT_FUNC1(x) zsv_##x##_mainext
14
- #define ZSV_MAIN_NO_OPTIONS_FUNC1(x) zsv_##x##_main_no_options
15
-
16
- struct zsv_opts;
17
- struct zsv_prop_handler;
18
-
19
- /* macros for commands that use common zsv parsing */
20
- #define ZSV_MAIN_FUNC(x) ZSV_MAIN_FUNC1(x)
21
- #define ZSV_MAINEXT_FUNC(x) ZSV_MAINEXT_FUNC1(x)
22
- #define ZSV_MAIN_DECL(x) \
23
- int ZSV_MAIN_FUNC(x)(int argc, const char *argv[], struct zsv_opts *opts, \
24
- struct zsv_prop_handler *custom_prop_handler)
25
-
26
- /* macros for commands that do not use common zsv parsing */
27
- #define ZSV_MAIN_NO_OPTIONS_FUNC(x) ZSV_MAIN_NO_OPTIONS_FUNC1(x)
28
- #define ZSV_MAIN_NO_OPTIONS_DECL(x) int ZSV_MAIN_NO_OPTIONS_FUNC(x)(int argc, const char *argv[])
29
-
30
- /* macros for commands that require loading extensions before running */
31
- #define ZSV_MAINEXT_FUNC_DEFINE(x) \
32
- int ZSV_MAINEXT_FUNC(x)(int argc, const char *argv[], struct zsv_opts *optsp, \
33
- struct zsv_prop_handler *custom_prop_handler) { \
34
- int ZSV_MAIN_FUNC(x)(int argc, const char *argv[], struct zsv_opts *optsp, \
35
- struct zsv_prop_handler *custom_prop_handler); \
36
- /* initialize extensions */ \
37
- struct cli_config config; \
38
- config_init(&config, 1, 1, 0); \
39
- return ZSV_MAIN_FUNC(sheet)(argc, argv, optsp, custom_prop_handler); \
40
- } \
41
- /* extra declaration to allow trailing semicolon */ int ZSV_MAIN_FUNC(x)( \
42
- int argc, const char *argv[], struct zsv_opts *optsp, struct zsv_prop_handler *custom_prop_handler)
43
-
44
- #endif
@@ -1,3 +0,0 @@
1
- int main() {
2
- return 0;
3
- }
@@ -1,100 +0,0 @@
1
- #include <string.h>
2
- #include <stdio.h>
3
- #include <stdlib.h>
4
- #include <zsv.h>
5
-
6
- /** zsv example parsing in chunks
7
- *
8
- * This sample code shows how to use `zsv_parse_bytes()`
9
- * to parse a chunk of bytes, instead of using `zsv_parse_more()`
10
- * to pull data from a stream
11
- *
12
- * Note that, when given a choice, using `zsv_parse_more()`
13
- * may be slightly more efficient / performant as is requires
14
- * less memory copying
15
- *
16
- * In this example, we just count rows, but you could substitute in any
17
- * row handler you want
18
- **/
19
-
20
- /**
21
- * Create a structure to hold our data while we parse
22
- * In this case, we are just going to keep track of row count
23
- */
24
- struct chunk_parse_data {
25
- unsigned count;
26
- };
27
-
28
- /**
29
- * Our row handler function will take a pointer to our data
30
- * and increment its count by 1
31
- */
32
- static void chunk_parse_row(void *dat) {
33
- struct chunk_parse_data *data = dat;
34
- data->count++;
35
- }
36
-
37
- /**
38
- * Main routine will output a help message if called with -h or --help,
39
- * otherwise will read from stdin and run through the CSV parser
40
- */
41
- int main(int argc, const char *argv[]) {
42
- if (argc > 1 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) {
43
- printf("Usage: parse_by_chunk < file.csv\n\n");
44
- printf("Reads stdin in chunks, parses each chunk using `zsv_parse_bytes()`,\n");
45
- printf("and outputs the number of rows parsed.\n");
46
- return 0;
47
- }
48
-
49
- FILE *f = stdin; /* read from stdin */
50
-
51
- /**
52
- * create a vanilla parser
53
- */
54
- zsv_parser p = zsv_new(NULL);
55
- if (!p)
56
- fprintf(stderr, "Out of memory!");
57
- else {
58
- /**
59
- * Configure the parser to use our row handler, and to pass
60
- * it our data when it's called
61
- */
62
- struct chunk_parse_data d = {0};
63
- zsv_set_row_handler(p, chunk_parse_row);
64
- zsv_set_context(p, &d);
65
-
66
- /**
67
- * Allocate a buffer that we will fetch data from and pass to the parser.
68
- * In this example we use a heap buffer, but we could just as well
69
- * have allocated it on the stack
70
- */
71
- int chunk_size = 4096;
72
- unsigned char *buff = malloc(chunk_size);
73
-
74
- /**
75
- * Read and parse each chunk until the end of the stream is reached
76
- */
77
- while (1) {
78
- size_t bytes_read = fread(buff, 1, chunk_size, f);
79
- if (!bytes_read)
80
- break;
81
- zsv_parse_bytes(p, buff, bytes_read);
82
- }
83
-
84
- /**
85
- * Finish any remaining parsing
86
- */
87
- zsv_finish(p);
88
-
89
- /**
90
- * Clean up
91
- */
92
- zsv_delete(p);
93
- free(buff);
94
-
95
- /**
96
- * Print result
97
- */
98
- printf("Count: %u\n", d.count);
99
- }
100
- }
@@ -1,143 +0,0 @@
1
- /**
2
- * Simple example using libzsv to call a row handler after each row is parsed
3
- *
4
- * In this example, we will use libzsv to parse a CSV file, look for a specified
5
- * column of data, and for each row of data, output only that column
6
- *
7
- * Example:
8
- * `echo "hi,there,you\na,b,c\nd,e,f" | ./print_my_column there
9
- * Outputs:
10
- * there
11
- *
12
- * In our implementation, we will define two row handlers. The first handler
13
- * will be used to handle the first row, which we assume to be the header,
14
- * and will search for the target column to identify what position it is in
15
- * (or whether we can't find it). The second handler will be used to process
16
- * each data row, and will output the target column
17
- */
18
- static void print_my_column(void *ctx);
19
- static void find_my_column(void *ctx);
20
-
21
- #include <stdio.h>
22
- #include <zsv.h>
23
- #include <string.h>
24
-
25
- /**
26
- * First, we define a structure that will contain all the information that
27
- * our row handler will need
28
- */
29
- struct my_data {
30
- zsv_parser parser;
31
- const char *target_column_name; /* name of column to find and output */
32
- size_t target_column_position; /* will be set to the position of the column to output */
33
- char not_found; /* if we can't find the column, we'll set this flag */
34
- };
35
-
36
- /**
37
- * Our first callback will search each cell in the (header) row. If it finds a match
38
- * it sets the `target_column_position`, otherwise it halts further processing and
39
- * sets the `not_found` flag
40
- */
41
- static void find_my_column(void *ctx) {
42
- struct my_data *data = ctx;
43
- size_t target_column_name_len = strlen(data->target_column_name);
44
-
45
- /* iterate through each cell */
46
- size_t cell_count = zsv_cell_count(data->parser);
47
- char found = 0;
48
- for (size_t i = 0; i < cell_count; i++) {
49
- struct zsv_cell c = zsv_get_cell(data->parser, i);
50
- if (c.len == target_column_name_len && !memcmp(data->target_column_name, c.str, c.len)) {
51
- data->target_column_position = i;
52
- found = 1;
53
- break;
54
- }
55
- }
56
-
57
- if (!found) {
58
- /**
59
- * We couldn't find the target column name in our header row. Output a message and abort
60
- */
61
- fprintf(stderr, "Could not find column %.*s\n", (int)target_column_name_len, data->target_column_name);
62
-
63
- /**
64
- * Once `zsv_abort()` is called, the parser will no longer invoke any callbacks
65
- * and `zsv_parse_more()` will return `zsv_status_cancelled`
66
- */
67
- zsv_abort(data->parser);
68
-
69
- /**
70
- * set a flag that we will later use to determine our program's exit code
71
- */
72
- data->not_found = 1;
73
- } else {
74
- /**
75
- * we found the column we are looking for. print its name, and change our row handler
76
- * by calling `zsv_set_row_handler()`
77
- */
78
- printf("%s\n", data->target_column_name);
79
- zsv_set_row_handler(data->parser, print_my_column);
80
- }
81
- }
82
-
83
- /**
84
- * Output data from the selected column
85
- */
86
- static void print_my_column(void *ctx) {
87
- struct my_data *data = ctx;
88
-
89
- /* use zsv_get_cell() to get our cell data */
90
- struct zsv_cell c = zsv_get_cell(data->parser, data->target_column_position);
91
-
92
- /* print the data, followed by a newline */
93
- printf("%.*s\n", (int)c.len, c.str);
94
- }
95
-
96
- /**
97
- * Main routine. Our example will take a single argument specifying a column
98
- * name, read from stdin, and output, for each row, the specified column
99
- */
100
- int main(int argc, const char *argv[]) {
101
- if (argc < 2) {
102
- fprintf(stderr, "Usage: print_my_column column_name < input.csv\n");
103
- fprintf(stderr,
104
- "Example:\n"
105
- " echo \"A,B,C\\nA1,B1,C1\\nA2,B2,\\nA3,,C3\\n,,C3\" | %s B\n\n",
106
- argv[0]);
107
- return 0;
108
- }
109
-
110
- /**
111
- * Initialize context data
112
- */
113
- struct my_data data = {0};
114
- data.target_column_name = argv[1];
115
-
116
- /**
117
- * Initialize parser options
118
- */
119
- struct zsv_opts opts = {0};
120
- opts.row_handler = find_my_column;
121
- opts.ctx = &data;
122
-
123
- /**
124
- * Create a parser
125
- */
126
- data.parser = zsv_new(&opts);
127
-
128
- /**
129
- * Continuously parse our input until we have no more input
130
- * or an error has occurred (such as not finding the specified
131
- * column name in the first row)
132
- */
133
- while (zsv_parse_more(data.parser) == zsv_status_ok)
134
- ;
135
-
136
- /**
137
- * Clean up
138
- */
139
- zsv_finish(data.parser);
140
- zsv_delete(data.parser);
141
-
142
- return data.not_found;
143
- }
@@ -1,89 +0,0 @@
1
- #include <stdio.h>
2
- #include <string.h>
3
- #include <zsv.h>
4
-
5
- /**
6
- * Simple example using libzsv as a pull parser for CSV input
7
- *
8
- * This is the same as simple.c, but uses pull parsing instead of push parsing
9
- *
10
- * We will check each cell in the row to determine if it is blank, and output
11
- * the row number, the total number of cells and the number of blank cells
12
- *
13
- * Example:
14
- * `echo 'abc,def\nghi,,,' | build/simple -`
15
- * Outputs:
16
- * Row 1 has 2 columns of which 0 are non-blank
17
- * Row 2 has 4 columns of which 3 are non-blank
18
- *
19
- * With pull parsing, the parser just repeatedly calls zsv_next_row() so long
20
- * as it returns `zsv_status_row`
21
- */
22
-
23
- /**
24
- * Main routine. Our program will take a single argument (a file name, or -)
25
- * and output, for each row, the numbers of total and blank cells
26
- */
27
- int main(int argc, const char *argv[]) {
28
- if (argc != 2) {
29
- fprintf(stderr, "Reads a CSV file or stdin, and for each row,\n"
30
- " output counts of total and blank cells\n");
31
- fprintf(stderr, "Usage: simple <filename or dash(-) for stdin>\n");
32
- fprintf(stderr,
33
- "Example:\n"
34
- " echo \"A1,B1,C1\\nA2,B2,\\nA3,,C3\\n,,C3\" | %s -\n\n",
35
- argv[0]);
36
- return 0;
37
- }
38
-
39
- FILE *f = strcmp(argv[1], "-") ? fopen(argv[1], "rb") : stdin;
40
- if (!f) {
41
- perror(argv[1]);
42
- return 1;
43
- }
44
-
45
- /**
46
- * Create a parser
47
- */
48
- struct zsv_opts opts = {0};
49
- opts.stream = f;
50
- zsv_parser parser = zsv_new(&opts);
51
- if (!parser) {
52
- fprintf(stderr, "Could not allocate parser!\n");
53
- return -1;
54
- }
55
-
56
- /**
57
- * iterate through all rows
58
- */
59
- size_t row_num = 0;
60
- while (zsv_next_row(parser) == zsv_status_row) {
61
- row_num++;
62
-
63
- /* get a cell count */
64
- size_t cell_count = zsv_cell_count(parser);
65
-
66
- /* iterate through each cell in this row, to count blanks */
67
- size_t nonblank = 0;
68
- for (size_t i = 0; i < cell_count; i++) {
69
- struct zsv_cell c = zsv_get_cell(parser, i);
70
- /* use r.values[] and r.lengths[] to get cell data */
71
- /* Here, we only care about lengths */
72
- if (c.len > 0)
73
- nonblank++;
74
- }
75
-
76
- /* print our results for this row */
77
- printf("Row %zu has %zu columns of which %zu %s non-blank\n", row_num, cell_count, nonblank,
78
- nonblank == 1 ? "is" : "are");
79
- }
80
- /**
81
- * Clean up
82
- */
83
- zsv_delete(parser);
84
-
85
- if (f != stdin)
86
- fclose(f);
87
-
88
- return 0;
89
- }
@@ -1,123 +0,0 @@
1
- #include <stdio.h>
2
- #include <string.h>
3
- #include <zsv.h>
4
-
5
- /**
6
- * Simple example using libzsv to call a row handler after each row is parsed
7
- *
8
- * In this super simple example, we will use libzsv to parse a CSV file
9
- * and call our custom row handler after each row is parsed. Our row handler
10
- * will check each cell in the row to determine if it is blank, and output
11
- * the row number, the total number of cells and the number of blank cells
12
- *
13
- * Example:
14
- * `echo 'abc,def\nghi,,,' | build/simple -`
15
- * Outputs:
16
- * Row 1 has 2 columns of which 0 are non-blank
17
- * Row 2 has 4 columns of which 3 are non-blank
18
- */
19
-
20
- /**
21
- * First, we define a structure that will contain all the information that
22
- * our row handler will need
23
- */
24
- struct my_data {
25
- zsv_parser parser; /* used to access the parsed data */
26
- size_t row_num; /* used to track the current row number */
27
- };
28
-
29
- /**
30
- * Our row handler is passed a pointer to our structure
31
- */
32
- void my_row_handler(void *ctx) {
33
- struct my_data *data = ctx;
34
-
35
- /* get a cell count */
36
- size_t cell_count = zsv_cell_count(data->parser);
37
-
38
- /* iterate through each cell in this row, to count blanks */
39
- size_t nonblank = 0;
40
- for (size_t i = 0; i < cell_count; i++) {
41
- /* use zsv_get_cell() to get our cell data */
42
- struct zsv_cell c = zsv_get_cell(data->parser, i);
43
-
44
- /* check if the cell data length is zero */
45
- if (c.len > 0)
46
- nonblank++;
47
- }
48
-
49
- /* print our results for this row */
50
- printf("Row %zu has %zu columns of which %zu %s non-blank\n", ++data->row_num, cell_count, nonblank,
51
- nonblank == 1 ? "is" : "are");
52
- }
53
-
54
- /**
55
- * Main routine. Our program will take a single argument (a file name, or -)
56
- * and output, for each row, the numbers of total and blank cells
57
- */
58
- int main(int argc, const char *argv[]) {
59
-
60
- /**
61
- * Process our arguments; output usage and/or errors if appropriate
62
- */
63
- if (argc != 2) {
64
- fprintf(stderr, "Reads a CSV file or stdin, and for each row,\n"
65
- " output counts of total and blank cells\n");
66
- fprintf(stderr, "Usage: simple <filename or dash(-) for stdin>\n");
67
- fprintf(stderr,
68
- "Example:\n"
69
- " echo \"A1,B1,C1\\nA2,B2,\\nA3,,C3\\n,,C3\" | %s -\n\n",
70
- argv[0]);
71
- return 0;
72
- }
73
-
74
- FILE *f = strcmp(argv[1], "-") ? fopen(argv[1], "rb") : stdin;
75
- if (!f) {
76
- perror(argv[1]);
77
- return 1;
78
- }
79
-
80
- /**
81
- * Configure our parser options. Here, all we do is specify our row handler
82
- * and the pointer that will be passed to our row handler. There are many
83
- * other options to control the parser behavior (CSV vs TSV vs other
84
- * delimited; header row span etc)-- for details, see
85
- * ../../include/zsv/api.h
86
- */
87
- struct zsv_opts opts = {0};
88
- opts.row_handler = my_row_handler;
89
- struct my_data data = {0};
90
- opts.ctx = &data;
91
- opts.stream = f;
92
-
93
- /**
94
- * Create a parser
95
- */
96
- data.parser = zsv_new(&opts);
97
-
98
- /**
99
- * Continuously parse our input until we have no more input
100
- */
101
- enum zsv_status stat;
102
- while ((stat = zsv_parse_more(data.parser)) == zsv_status_ok)
103
- ;
104
-
105
- /**
106
- * Clean up
107
- */
108
- zsv_finish(data.parser);
109
- zsv_delete(data.parser);
110
-
111
- if (f != stdin)
112
- fclose(f);
113
-
114
- /**
115
- * If there was a parse error, print it
116
- */
117
- if (stat != zsv_status_no_more_input) {
118
- fprintf(stderr, "Parse error: %s\n", zsv_parse_status_desc(stat));
119
- return 1;
120
- }
121
-
122
- return 0;
123
- }
@@ -1,16 +0,0 @@
1
- #include <unistd.h>
2
- #include "../src/zsv.c"
3
-
4
- __AFL_FUZZ_INIT();
5
-
6
- int main() {
7
- __AFL_INIT();
8
- unsigned char *src = 0;
9
- unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;
10
- while (__AFL_LOOP(10000)) {
11
- int len = __AFL_FUZZ_TESTCASE_LEN;
12
- src = realloc(src, len);
13
- memcpy(src, buf, len);
14
- zsv_parse_bytes(zsv_new(0), src, len);
15
- }
16
- }