--- /srv/reproducible-results/rbuild-debian/r-b-build.njp10iJq/b1/freetds_1.5.5+ds-1_amd64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.njp10iJq/b2/freetds_1.5.5+ds-1_amd64.changes ├── Files │ @@ -1,12 +1,12 @@ │ │ b66d037faf93d465a6f6b471036a9a66 896700 debug optional freetds-bin-dbgsym_1.5.5+ds-1_amd64.deb │ 33ce9daf607c13bdfaba35d4c4f8cdcc 226768 database optional freetds-bin_1.5.5+ds-1_amd64.deb │ de9c61e01aa040a8caa254ca82c05bd0 30008 libs optional freetds-common_1.5.5+ds-1_all.deb │ 9e2e8c4b84ab2858a9091e33cc8fd965 294772 devel optional freetds-dev_1.5.5+ds-1_amd64.deb │ - 36e182e5a1617297214742ebff7d234e 1118940 doc optional freetds-doc_1.5.5+ds-1_all.deb │ + bca3809037054ef7bd6f45d09dd39c8f 1117316 doc optional freetds-doc_1.5.5+ds-1_all.deb │ 42269708636ead0e10c2ec95c60d8709 476980 debug optional libct4-dbgsym_1.5.5+ds-1_amd64.deb │ 6e06a5b3dbce89b090c0c24e5e8daeab 171892 libs optional libct4_1.5.5+ds-1_amd64.deb │ 07db30d517b585cf0b2453240bde9db8 531736 debug optional libsybdb5-dbgsym_1.5.5+ds-1_amd64.deb │ 3cd61cf7a9eca88eb21866047e71045f 196796 libs optional libsybdb5_1.5.5+ds-1_amd64.deb │ 35b22a069bbc20c8e7d6aa0498d3bfb3 590752 debug optional tdsodbc-dbgsym_1.5.5+ds-1_amd64.deb │ 12efccf584d8e20e0c344d143c795f33 208568 libs optional tdsodbc_1.5.5+ds-1_amd64.deb ├── freetds-doc_1.5.5+ds-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2025-08-31 02:40:49.000000 debian-binary │ │ --rw-r--r-- 0 0 0 35620 2025-08-31 02:40:49.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 1083128 2025-08-31 02:40:49.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 35640 2025-08-31 02:40:49.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 1081484 2025-08-31 02:40:49.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ │ │ │ ├── line order │ │ │ │ │ @@ -12,101 +12,101 @@ │ │ │ │ │ usr/share/doc/freetds-doc/images/callouts/8.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/callouts/9.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/caution.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/important.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/note.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/tip.gif │ │ │ │ │ usr/share/doc/freetds-doc/images/warning.gif │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00023_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00014_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00017_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00026_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00056_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00062_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00074_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00077_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00086_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00095_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00101_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00128_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00131_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00149.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00149_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00149_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00149_aea6a865806d454280126de940478c214_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00149_aea6a865806d454280126de940478c214_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00150.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00188_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00032_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00041_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00113_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00164_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00179_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00191.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00192.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00194_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00206_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00207.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00209_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_a91cf6a009e823417d6c8849256cb211c_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00287_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00288.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00293_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00296.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00297.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00311_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00312.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00326_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00332_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00341.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00342.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00344_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_aabd0e5f15615b5c141c525b76e746520_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00347_abac4d689e0e31e80587f89247c6395a4_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00348.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00359_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00365.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00365_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00365_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00365_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00224.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00225.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00227_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_aabd0e5f15615b5c141c525b76e746520_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00233_abac4d689e0e31e80587f89247c6395a4_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00234.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_a91cf6a009e823417d6c8849256cb211c_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00236_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00237.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00254.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00254_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00254_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00254_aea6a865806d454280126de940478c214_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00254_aea6a865806d454280126de940478c214_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00255.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00260_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00278_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00305_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00314_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00338_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00341_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00347_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00365_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00366.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00367.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00368_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00371_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00374.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00374_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00374_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00374_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00374_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00375.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00376.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00377_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00380_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00383_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00386_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00389_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00392_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00395_source.html │ │ │ │ │ @@ -118,49 +118,23 @@ │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00413_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00416_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00419_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00422_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00425_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00428_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00431_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00434.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00434_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00435.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00436.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00437_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00440_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00443_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00446_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00449_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00452.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a3ab8874994a0776acdaff797afdb710a_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00452_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00452_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00453.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00453.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00454.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00455_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00458_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00461_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00464_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00467_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00470_source.html │ │ │ │ │ @@ -175,21 +149,47 @@ │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00497_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00500_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00503_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00506_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00509_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00512_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00515_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a3ab8874994a0776acdaff797afdb710a_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00518_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00518_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00519.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00520.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00521_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00524_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00527_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00530_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00533_source.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a00542_source.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a00539_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00554_source.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00557.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00558.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00559.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00559.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00560.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a00560.html │ │ │ │ │ @@ -1127,18 +1127,18 @@ │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01424.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01427.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01428.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01435.html │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01435_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01435_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot │ │ │ │ │ usr/share/doc/freetds-doc/reference/a01436.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a01462.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a01463.dot.gz │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a01465.html │ │ │ │ │ -usr/share/doc/freetds-doc/reference/a01466.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a01450.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a01451.dot.gz │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a01453.html │ │ │ │ │ +usr/share/doc/freetds-doc/reference/a01454.dot.gz │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_0.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_1.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_10.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_11.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_12.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_13.js │ │ │ │ │ usr/share/doc/freetds-doc/reference/all_14.js │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -20,184 +20,184 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 927 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/callouts/9.gif │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1039 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/caution.gif │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1081 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/important.gif │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1070 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/note.gif │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1029 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/tip.gif │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1052 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/images/warning.gif │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 181483 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00023_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7711 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00026_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6939 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00056_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29275 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00062_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6983 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00074_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7239 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00077_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8148 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00086_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8278 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00095_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13132 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00101_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 34684 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00128_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 78937 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00131_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 136753 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00149.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1303 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00149_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3367 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00149_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1344 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00149_aea6a865806d454280126de940478c214_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1980 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00149_aea6a865806d454280126de940478c214_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1480 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00150.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12254 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00188_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9087 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00209_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 55904 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1407 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1787 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2518 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2476 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1457 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1380 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 767 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4470 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2131 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1355 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 790 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_a91cf6a009e823417d6c8849256cb211c_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3146 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1755 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1150 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 740 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1099 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4836 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2943 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1712 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00287_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1360 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00288.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16065 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00293_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12020 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00296.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1320 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00297.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26262 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1112 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1385 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1376 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2860 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 824 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3229 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 781 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2118 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 817 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2138 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1869 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3294 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00311_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1230 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00312.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 41631 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00326_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 58866 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00332_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 41237 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00341.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1475 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00342.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 53295 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00344_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 48302 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 797 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2148 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_aabd0e5f15615b5c141c525b76e746520_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3894 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_abac4d689e0e31e80587f89247c6395a4_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1464 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00348.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 172107 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00359_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 445409 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1303 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1550 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1294 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 346591 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 914 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00366.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2062 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00367.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15325 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00368_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 119911 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00371_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 39945 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24172 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00377_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 40573 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00380_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11431 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00383_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13881 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00386_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4168 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00389_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 326066 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00392_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6280 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00395_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8409 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00398_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23171 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00401_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4004 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00404_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18585 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00407_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3993 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00410_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 47038 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00413_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 101579 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00416_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12482 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00419_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8075 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00422_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3688 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00425_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 138022 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00428_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14308 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00431_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12262 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00434.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13052 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00434_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 974 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00435.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 973 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00436.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22870 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00437_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 27992 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00440_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 91634 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00443_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9799 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00446_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 17361 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00449_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 331719 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 776 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 797 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1074 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a3ab8874994a0776acdaff797afdb710a_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 762 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1457 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1380 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 767 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1355 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4470 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2131 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 755 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1150 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1156 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 740 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1099 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4836 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2943 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1712 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 379983 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1052 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00453.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 863 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00454.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8714 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00455_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36019 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00458_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6983 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00014_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7239 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00017_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8148 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00026_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8278 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00032_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13132 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00041_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12254 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00113_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 16065 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00164_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 58866 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00179_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 41237 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00191.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1476 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00192.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 53295 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00194_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26262 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1112 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1385 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1376 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2860 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 824 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3229 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 781 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2118 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 817 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2138 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1869 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3294 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00206_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1232 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00207.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 41631 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00209_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12020 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00224.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1320 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00225.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 172107 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00227_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 48302 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 797 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2147 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_aabd0e5f15615b5c141c525b76e746520_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3894 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00233_abac4d689e0e31e80587f89247c6395a4_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1460 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00234.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 55904 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1407 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1787 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2518 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2476 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1457 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1380 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 767 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4470 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2131 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1355 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 790 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_a91cf6a009e823417d6c8849256cb211c_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3146 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1755 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1150 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 740 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1099 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4836 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2943 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1712 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00236_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1361 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00237.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 136753 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00254.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1303 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00254_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3367 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00254_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1344 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00254_aea6a865806d454280126de940478c214_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1980 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00254_aea6a865806d454280126de940478c214_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1483 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00255.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 78937 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00260_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 34684 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00278_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9087 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00305_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 181483 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00314_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6939 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00338_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7711 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00341_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29275 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00347_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 128658 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00365_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24172 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00368_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 40573 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00371_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 445409 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1303 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1550 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1293 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 346591 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00374_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 914 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00375.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2062 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00376.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 62596 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00377_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 119911 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00380_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10265 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00383_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 30966 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00386_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 39945 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00389_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29730 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00392_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15325 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00395_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 66547 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00398_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 16393 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00401_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4168 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00404_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22870 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00407_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 47038 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00410_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 138022 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00413_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11352 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00416_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21569 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00419_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9513 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00422_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8400 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00425_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13022 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00428_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24907 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00431_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10851 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00434_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10604 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00437_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12479 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00440_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10495 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00443_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8703 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00446_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14308 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00449_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12262 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13052 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00452_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 974 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00453.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 974 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00454.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23171 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00455_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 91634 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00458_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 11481 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00461_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16393 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00464_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 66547 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00467_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8703 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00470_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9513 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00473_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21569 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00476_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8400 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00479_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13022 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00482_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10851 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00485_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10495 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00488_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24907 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00491_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12479 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00494_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11352 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00497_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10604 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00500_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 17322 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00503_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 27869 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00506_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24558 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00509_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 54063 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00512_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10265 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00515_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 62596 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 30966 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00521_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8075 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00464_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6280 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00467_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 54063 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00470_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8409 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00473_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4004 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00476_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 326066 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00479_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 27869 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00482_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 27992 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00485_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18585 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00488_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12482 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00491_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 36019 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00494_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8714 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00497_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 17361 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00500_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9799 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00503_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 101579 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00506_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 17322 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00509_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24558 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00512_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3993 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00515_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 331719 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 776 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 797 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a31604382d8b77257aad203f409155a29_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1074 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a3ab8874994a0776acdaff797afdb710a_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 762 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1457 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1380 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a5eec23828b0610c58de248c4edb53879_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 767 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3542 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1355 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4470 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2131 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 755 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1150 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1156 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 740 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ac1e460551f1188620ea478238864ac4b_cgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1099 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ac1e460551f1188620ea478238864ac4b_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4836 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 750 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2943 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1712 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_ade7df2db455b61edc83819ad60edb339_icgraph.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 379983 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00518_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1055 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00519.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 865 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00520.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3688 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00521_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 74234 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00524_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 128658 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00527_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29730 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00530_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11431 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00527_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13881 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00530_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10102 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00533_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3541 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00542_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3541 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00539_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 13939 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00554_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8351 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00557.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3386 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00558.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2292 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00559.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6893 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00559.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 702 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 284709 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560.html │ │ │ │ @@ -214,15 +214,15 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2017 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga32eb72f6fb3edb130e59fb3dd0766e7e_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1364 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga32eb72f6fb3edb130e59fb3dd0766e7e_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1406 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga399512ec78c15ce3db79ea88ef3b1293_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2022 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga3bcdc8f584537b8278483f2cee59f130_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1127 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga3bcdc8f584537b8278483f2cee59f130_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2143 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga43727b10d4cbb7708b374811abe6eadb_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1046 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga4e26d949be2c3bf71b1a33c75b11d931_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3843 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3842 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4957 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga559e24ba70d0d96c3469eb6ab8f74e05_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 769 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga559e24ba70d0d96c3469eb6ab8f74e05_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 753 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga564dd3a1bb0425a8957f1714d8b2a7c0_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1709 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga57c856964a9a0b4cc43f5192647c51e7_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 804 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga57c856964a9a0b4cc43f5192647c51e7_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2969 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga5ea23272124fff03b8d87538c1ec3ee5_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1713 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00560_ga636e6f1b64743f3cf22158a56eef371f_cgraph.dot │ │ │ │ @@ -298,25 +298,25 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1406 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga0ed03c69e698336d015bb315ad755fd5_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 770 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga0ed03c69e698336d015bb315ad755fd5_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1388 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga244547855b41788fa3a67756956fbc81_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1693 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga330b9f1028f856a9eec5115550bcb4f7_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 769 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga330b9f1028f856a9eec5115550bcb4f7_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1406 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga6498235e4ef8e41ea43b01494b28998d_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2036 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga6cf03708baaf02eb016b9ee77160d879_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2181 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2180 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2356 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga8b85f79f53a62ac7a728fe626d609b65_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3312 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_ga963c5e38bca7668afc57f5cc123d10fb_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1204 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1203 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3698 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1585 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1060 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00562_gafec3feb5bac1cb33545ba01efb0a67b8_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 732 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 38934 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1210 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga4f936fa1cb8e4373bf7b7f8a6ab96bc7_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2243 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2242 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 709 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga7370f1223f13510d6b33e98f2de09fb5_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1504 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga852ce2e787d27f9f497c5333201dae4b_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 808 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_ga852ce2e787d27f9f497c5333201dae4b_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 690 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_gaa134c1c3ccc4326e693adb8357272f1d_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1393 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_gaa134c1c3ccc4326e693adb8357272f1d_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 710 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_gab672799007e720bf918caa1b33c989ea_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2473 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00563_gacf69ac4cbe8e3c3e6ea665e31e5e85b8_icgraph.dot │ │ │ │ @@ -334,18 +334,18 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 704 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00565.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10155 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00565.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 685 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 63064 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1389 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga03e850369aca6fba074da5e9da4effd7_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1392 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga2198a3f7b4eb768ce790dce09b6eff24_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1063 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga302a4ce6559b81808e3be51615cd1b67_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3684 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3685 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1745 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga3c6f474c0662158f3100fe464bf077d9_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1385 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga45d1c0fba44eafde5e156a70af5d6126_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1674 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1675 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1390 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_gabdcccf4e0d093ff48c0e7048a4bfaf84_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1116 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_gaccbc6d98d9528c48cf0254d809ca73ff_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2031 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_gae1fc46447c4f8a9ff7f66607b8cd23b6_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1915 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_gae6da75d7b9e7b567890fc83c9459d824_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 723 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00566_gae6da75d7b9e7b567890fc83c9459d824_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 720 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00567.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4195 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00567.html │ │ │ │ @@ -391,20 +391,20 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1712 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00572_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1064 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00572_gae8e173a9f8d2e3f152ada9f48d3d5f28_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 673 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 44880 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 795 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga22c61ca41f64c7fe368659ed1eebdb56_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1569 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga22c61ca41f64c7fe368659ed1eebdb56_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 805 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga3380140fc6eb9f2090c430f40e846876_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1475 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1476 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1227 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga3a7a7b4d6ed344127e164dd0b443d790_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3739 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga3a7a7b4d6ed344127e164dd0b443d790_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1192 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga87db49044919f1bc84c0ff5e9ab00304_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2680 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1336 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2681 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1337 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1582 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00573_gac01180352db7052e786463e3b07a8a9e_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 663 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 58143 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2099 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574_ga314c65c067570dc1ef3e58bbfc4eb763_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2085 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574_ga4bbf9a6b6d514fc62ae67f548d54d78a_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2094 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574_ga4f7b22f681e7160ac03dfe8d2ae8bd39_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1510 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00574_ga4f7b22f681e7160ac03dfe8d2ae8bd39_icgraph.dot │ │ │ │ @@ -429,39 +429,39 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 810 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga11338742dc30fd0c2711f58eb830316f_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1186 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga11338742dc30fd0c2711f58eb830316f_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1590 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga24345856c16b15aa3e84459c2f551320_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1237 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga24345856c16b15aa3e84459c2f551320_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2797 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga26b26296d060dca75f6a43e9ac41e58d_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2483 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga26b26296d060dca75f6a43e9ac41e58d_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1881 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga2a64baaf4aa50ef601a49b801dfdaaf6_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1383 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1382 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1094 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga2d0a06c1a30dd2470dc7a788de21b080_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1499 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga34fb1084682cc31fe02a4a7946955a5a_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1996 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga3e7b4793c6f799fbc6c174f673bb5b32_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 717 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga4ae2c7b503de8492cb82230cd19f1853_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1228 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1280 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1227 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1279 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 786 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga50d62edeb2a432e2dc668263f3f958ff_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1471 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 792 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga57bd0fabe5bcdeb3ef091259b3a7c1fc_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2486 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1671 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1670 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1837 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga5f071b94ad7889690762dc85646c74ab_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 758 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga5f071b94ad7889690762dc85646c74ab_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1719 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1720 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1092 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 729 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga691e8752f4f84ed51b7f4d1447cb3d25_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1226 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1233 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1225 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1232 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2431 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2117 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga7bf3670d3d6dabed469b9eb117298079_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2110 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga7d68588fdd0beeae52197a6d6cef8754_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2111 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga7f20f58e43ba5eb916c97c7396395563_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2072 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8853354723094c8efcd87fabf675c64f_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1091 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8853354723094c8efcd87fabf675c64f_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1090 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8853354723094c8efcd87fabf675c64f_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 706 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8d8f2f1c91635ee95f30722208ae3043_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3274 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8d8f2f1c91635ee95f30722208ae3043_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1093 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8f3b00c34af2484eccb169e60a37dc36_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3278 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga8f3b00c34af2484eccb169e60a37dc36_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2715 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga95e0fccedc459a4404f496eec74a369a_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1478 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3475 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_ga9ad2e6defce530a8778791cce0166ccd_cgraph.dot │ │ │ │ @@ -475,21 +475,21 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1525 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaaa7b4d37bf796019e72f25c6e7fe7bea_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1128 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaaa97f8535a2babe642024a0744d271d5_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1126 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaaa97f8535a2babe642024a0744d271d5_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1142 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gab42efeaf6c795435a03de1835b3de1c6_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1131 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gac3124fe439d9c96236fc33af7793ffcf_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2419 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gacf0a4f2a1c2166588f4d232eda737cf5_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1529 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gad5b76c688898b86984d09628f030d01c_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1554 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1553 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1800 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gad695defcbf663b0023851a198206a772_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2351 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gad695defcbf663b0023851a198206a772_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 739 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gada27f4cfce925240ad33b71b63ca692d_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1863 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3432 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gae603aed795a4c5bb26ab159a11256996_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2342 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2343 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4438 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaf0da49585d39e99780a004ee2ca23479_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1363 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2033 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gaf573d8d4d2660c8c27770573fca05ff5_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3449 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1056 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00575_gafd74652c4722ddce4d642cc4209449d4_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 682 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 85843 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576.html │ │ │ │ @@ -501,24 +501,24 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3248 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga1fcaf8d488cc1390f106ce3ad0bf37b4_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2353 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga1fcaf8d488cc1390f106ce3ad0bf37b4_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1390 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga221e98a9c8be96ec6c8547891e1b53af_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2284 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga221e98a9c8be96ec6c8547891e1b53af_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1729 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga2660b893ae2bf36fe1b63b354e748bad_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1352 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga2734407109c834c5dda7ff8a45c71230_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1445 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga2a7429ff031f77023d1bf31339a266db_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4516 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4515 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 741 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga410619783bdf2bb60b0f27a5578e0e07_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4103 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4102 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1854 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga528cc96da09c11bc2930daae64e33e83_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2507 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1115 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga633f62fb8e5310abfa42c02fba9c6500_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3904 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga633f62fb8e5310abfa42c02fba9c6500_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3657 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga676c4dee6522815b16fdc8e448e43590_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1553 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1303 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga7274d9c5dc75c58bb7d1f1c29e03a73e_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1554 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1302 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga7274d9c5dc75c58bb7d1f1c29e03a73e_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 847 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga8560e2536fdcf8f1514d4fa14f90876c_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1518 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga8ab6c87318eaf15ea17a9575763f7809_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3288 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga8d214089b6e97fc0da5e0be09f216d73_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 748 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga8d214089b6e97fc0da5e0be09f216d73_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3281 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga90f080e6e9448feac15dee1370d66802_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2133 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga90f080e6e9448feac15dee1370d66802_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 762 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga954dcc3b0332fa9448d9edf59c0fe439_cgraph.dot │ │ │ │ @@ -526,19 +526,19 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3340 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_ga9ac121c269e203337a48c5bf8afc48c3_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 764 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gab604dd1d75afa8f852d1a6ee0b681974_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 761 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gac23c12ccb3e8599f10f305e993e216f6_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 716 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gad6f81b48fbcfc18ce0b213dbbea47e30_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3550 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gad70d59fb317d098b0c9fd29dd77131a8_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1104 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gad7aae89e32444ab30852fee056231403_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1201 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gae777dd57e8d1bb40349d7d7d8434fddf_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3563 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3562 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00576_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 663 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 111732 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1696 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga07cee55fd522cca16fb59b7a8f0b1376_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1564 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1568 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3821 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga21e9de33de9c8c492aa2f96c823596bb_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1356 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga22c7f413d43fc0d511e122a3de389166_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2726 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga22c7f413d43fc0d511e122a3de389166_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1551 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2381 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga315d875d90c64d12d61fc9e33b4dee96_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2296 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga315d875d90c64d12d61fc9e33b4dee96_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4690 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga39453d084f3f780ac4602d4abf2839f7_cgraph.dot.gz │ │ │ │ @@ -550,22 +550,22 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1627 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1840 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga4e1e52e09b0c27a9b9f53eb6b539afce_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2167 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga4e1e52e09b0c27a9b9f53eb6b539afce_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4037 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga4e3dd9d3614f5f0433b78b761dd68741_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2332 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga4e3dd9d3614f5f0433b78b761dd68741_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1669 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga547b2f48659f77a69aa802d861ac827d_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2320 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga547b2f48659f77a69aa802d861ac827d_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1268 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1266 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2080 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1444 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4104 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga65a2316369529731732f200c190d05d6_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1520 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga65a2316369529731732f200c190d05d6_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1828 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6728e344caa20aea1def85f58dea138b_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2091 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6728e344caa20aea1def85f58dea138b_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3961 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2092 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6728e344caa20aea1def85f58dea138b_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3960 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2701 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga69902dffb299d62a799888e0fa3ccd68_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1774 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6ee2e7af38af768611b8bf4b79c36f46_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2321 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6ee2e7af38af768611b8bf4b79c36f46_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2090 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3938 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga7482b5730d880fcedbe9fcd609a550ce_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2625 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga7482b5730d880fcedbe9fcd609a550ce_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2338 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_ga7b18c0911a9dc69939577b39eb64725d_icgraph.dot │ │ │ │ @@ -590,15 +590,15 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1747 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gacb3354443bcefe7a500a500a4904cc05_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2767 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gacb3354443bcefe7a500a500a4904cc05_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1624 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gad9b6b86f48be077fb44ac603845a0c27_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gad9b6b86f48be077fb44ac603845a0c27_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1371 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae3368ea80d0d8b13791ceb13ee5f19c9_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2077 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1180 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae5b3e01f3d665f9e377de091f46f1ab9_cgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2079 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2080 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1868 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae688b515631141acfbc41bbb91c8b921_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2322 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gae688b515631141acfbc41bbb91c8b921_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3334 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gaeaaed2ea1d8c827da1a0f5b419524ae1_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3733 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gaeaaed2ea1d8c827da1a0f5b419524ae1_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4980 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gaeeb1562044786ea17bea361ed83e6946_cgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1580 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1809 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gaeec59bca9bd0c5388e245f0d19d9c81a_cgraph.dot.gz │ │ │ │ @@ -608,19 +608,19 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2554 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gafb26aba5d935e40b87b95e21a5185848_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4029 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00577_gafb26aba5d935e40b87b95e21a5185848_icgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 672 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 30525 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1495 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga0cd7863ba7c2d2da4a193234472a3d14_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 765 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga4e6d9fa6f9b9551a5a3390e10a5322e6_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1167 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2599 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2600 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1480 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_ga6aa14b8b717b51afcfb65bd55143689d_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1060 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_gab78cc59b110df2817b00f9bed74c6ff1_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 746 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_gad96366d9fa93bfc283cef1299fbe97ab_cgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3160 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3161 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1865 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00578_gae092e53680d954bcf4f19334987d43c7_icgraph.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2614 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00579.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7601 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00579.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5422 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00580.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7724 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00583.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3793 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00584.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4725 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a00587.html │ │ │ │ @@ -1134,19 +1134,19 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8589 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01423.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6254 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01424.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8617 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01427.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 13795 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01428.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 35232 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01435.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1516 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01435_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1104 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01435_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1499 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01436.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18244 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01462.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1329 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01463.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24419 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01465.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1308 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01466.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1501 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01436.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18244 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01450.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1331 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01451.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24419 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01453.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1310 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/a01454.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4437 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_0.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 898 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_1.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1785 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_10.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3071 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_11.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 60673 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_12.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 689 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_13.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 422 2025-08-31 02:40:49.000000 ./usr/share/doc/freetds-doc/reference/all_14.js │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00026_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: src/odbc/resource.h Source File │ │ │ │ +FreeTDS API: src/apps/fisql/interrupt.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,48 +70,48 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
resource.h
│ │ │ │ +
interrupt.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1//{{NO_DEPENDENCIES}}
│ │ │ │ -
2// Microsoft Developer Studio generated include file.
│ │ │ │ -
3// Used by setup.rc
│ │ │ │ -
4//
│ │ │ │ -
5#define IDD_LOGIN 102
│ │ │ │ -
6#define IDD_DSN 106
│ │ │ │ -
7#define IDC_PROTOCOL 1003
│ │ │ │ -
8#define IDC_ADDRESS 1004
│ │ │ │ -
9#define IDC_PORT 1005
│ │ │ │ -
10#define IDC_DATABASE 1011
│ │ │ │ -
11#define IDC_DSNNAME 1015
│ │ │ │ -
12#define IDC_HINT 1017
│ │ │ │ -
13#define IDC_LOGINSERVER 1020
│ │ │ │ -
14#define IDC_LOGINUID 1021
│ │ │ │ -
15#define IDC_LOGINPWD 1022
│ │ │ │ -
16#define IDC_LOGINDUMP 1023
│ │ │ │ -
17
│ │ │ │ -
18// Next default values for new objects
│ │ │ │ -
19//
│ │ │ │ -
20#ifdef APSTUDIO_INVOKED
│ │ │ │ -
21#ifndef APSTUDIO_READONLY_SYMBOLS
│ │ │ │ -
22#define _APS_NEXT_RESOURCE_VALUE 103
│ │ │ │ -
23#define _APS_NEXT_COMMAND_VALUE 40001
│ │ │ │ -
24#define _APS_NEXT_CONTROL_VALUE 1024
│ │ │ │ -
25#define _APS_NEXT_SYMED_VALUE 101
│ │ │ │ -
26#endif
│ │ │ │ -
27#endif
│ │ │ │ +
1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano
│ │ │ │ +
2 *
│ │ │ │ +
3 * This program is free software; you can redistribute it and/or
│ │ │ │ +
4 * modify it under the terms of the GNU General Public
│ │ │ │ +
5 * License as published by the Free Software Foundation; either
│ │ │ │ +
6 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
7 *
│ │ │ │ +
8 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
11 * Library General Public License for more details.
│ │ │ │ +
12 *
│ │ │ │ +
13 * You should have received a copy of the GNU General Public
│ │ │ │ +
14 * License along with this library; if not, write to the
│ │ │ │ +
15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
16 * Boston, MA 02111-1307, USA.
│ │ │ │ +
17 */
│ │ │ │ +
18
│ │ │ │ +
19/* $Id: interrupt.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */
│ │ │ │ +
20extern sigjmp_buf restart;
│ │ │ │ +
21
│ │ │ │ +
22void inactive_interrupt_handler(int sig);
│ │ │ │ +
23void active_interrupt_handler(int sig);
│ │ │ │ +
24void maybe_handle_active_interrupt(void);
│ │ │ │ +
25int active_interrupt_pending(DBPROCESS * dbproc);
│ │ │ │ +
26int active_interrupt_servhandler(DBPROCESS * dbproc);
│ │ │ │ +
Definition dblib.h:123
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,36 +1,38 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * src │ │ │ │ │ - * odbc │ │ │ │ │ -resource.h │ │ │ │ │ -1//{{NO_DEPENDENCIES}} │ │ │ │ │ -2// Microsoft Developer Studio generated include file. │ │ │ │ │ -3// Used by setup.rc │ │ │ │ │ -4// │ │ │ │ │ -5#define IDD_LOGIN 102 │ │ │ │ │ -6#define IDD_DSN 106 │ │ │ │ │ -7#define IDC_PROTOCOL 1003 │ │ │ │ │ -8#define IDC_ADDRESS 1004 │ │ │ │ │ -9#define IDC_PORT 1005 │ │ │ │ │ -10#define IDC_DATABASE 1011 │ │ │ │ │ -11#define IDC_DSNNAME 1015 │ │ │ │ │ -12#define IDC_HINT 1017 │ │ │ │ │ -13#define IDC_LOGINSERVER 1020 │ │ │ │ │ -14#define IDC_LOGINUID 1021 │ │ │ │ │ -15#define IDC_LOGINPWD 1022 │ │ │ │ │ -16#define IDC_LOGINDUMP 1023 │ │ │ │ │ -17 │ │ │ │ │ -18// Next default values for new objects │ │ │ │ │ -19// │ │ │ │ │ -20#ifdef APSTUDIO_INVOKED │ │ │ │ │ -21#ifndef APSTUDIO_READONLY_SYMBOLS │ │ │ │ │ -22#define _APS_NEXT_RESOURCE_VALUE 103 │ │ │ │ │ -23#define _APS_NEXT_COMMAND_VALUE 40001 │ │ │ │ │ -24#define _APS_NEXT_CONTROL_VALUE 1024 │ │ │ │ │ -25#define _APS_NEXT_SYMED_VALUE 101 │ │ │ │ │ -26#endif │ │ │ │ │ -27#endif │ │ │ │ │ + * apps │ │ │ │ │ + * fisql │ │ │ │ │ +interrupt.h │ │ │ │ │ +1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano │ │ │ │ │ +2 * │ │ │ │ │ +3 * This program is free software; you can redistribute it and/or │ │ │ │ │ +4 * modify it under the terms of the GNU General Public │ │ │ │ │ +5 * License as published by the Free Software Foundation; either │ │ │ │ │ +6 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +7 * │ │ │ │ │ +8 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +9 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +11 * Library General Public License for more details. │ │ │ │ │ +12 * │ │ │ │ │ +13 * You should have received a copy of the GNU General Public │ │ │ │ │ +14 * License along with this library; if not, write to the │ │ │ │ │ +15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +16 * Boston, MA 02111-1307, USA. │ │ │ │ │ +17 */ │ │ │ │ │ +18 │ │ │ │ │ +19/* $Id: interrupt.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */ │ │ │ │ │ +20extern sigjmp_buf restart; │ │ │ │ │ +21 │ │ │ │ │ +22void inactive_interrupt_handler(int sig); │ │ │ │ │ +23void active_interrupt_handler(int sig); │ │ │ │ │ +24void maybe_handle_active_interrupt(void); │ │ │ │ │ +25int active_interrupt_pending(DBPROCESS * dbproc); │ │ │ │ │ +26int active_interrupt_servhandler(DBPROCESS * dbproc); │ │ │ │ │ +tds_dblib_dbprocess │ │ │ │ │ +Definition dblib.h:123 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00209_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: src/ctlib/ct_checks.h Source File │ │ │ │ +FreeTDS API: src/tds/tds_willconvert.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,57 +70,297 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
ct_checks.h
│ │ │ │ +
tds_willconvert.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#include <config.h>
│ │ │ │ -
2
│ │ │ │ -
3#include "ctpublic.h"
│ │ │ │ -
4#include "ctlib.h"
│ │ │ │ -
5
│ │ │ │ -
6#define TDS_ATTR(field_name) \
│ │ │ │ -
7 (sizeof(((STRUCTUREA*)0)->field_name) == sizeof(((STRUCTUREB*)0)->FIELDB field_name) && \
│ │ │ │ -
8 TDS_OFFSET(STRUCTUREA,field_name) == TDS_OFFSET(STRUCTUREB,FIELDB field_name))
│ │ │ │ -
9
│ │ │ │ -
10#define TDS_DATAFMT_TEST(test_name) TDS_COMPILE_CHECK(check_ ## test_name,\
│ │ │ │ -
11 TDS_ATTR(name) &&\
│ │ │ │ -
12 TDS_ATTR(namelen) &&\
│ │ │ │ -
13 TDS_ATTR(datatype) &&\
│ │ │ │ -
14 TDS_ATTR(format) &&\
│ │ │ │ -
15 TDS_ATTR(maxlength) &&\
│ │ │ │ -
16 TDS_ATTR(scale) &&\
│ │ │ │ -
17 TDS_ATTR(precision) &&\
│ │ │ │ -
18 TDS_ATTR(status) &&\
│ │ │ │ -
19 TDS_ATTR(count) &&\
│ │ │ │ -
20 TDS_ATTR(usertype) &&\
│ │ │ │ -
21 TDS_ATTR(locale))
│ │ │ │ -
22
│ │ │ │ -
23#define TDS_SERVERMSG_TEST(test_name) TDS_COMPILE_CHECK(check_ ## test_name,\
│ │ │ │ -
24 TDS_ATTR(msgnumber) &&\
│ │ │ │ -
25 TDS_ATTR(state) &&\
│ │ │ │ -
26 TDS_ATTR(severity) &&\
│ │ │ │ -
27 TDS_ATTR(text) &&\
│ │ │ │ -
28 TDS_ATTR(textlen) &&\
│ │ │ │ -
29 TDS_ATTR(svrname) &&\
│ │ │ │ -
30 TDS_ATTR(svrnlen) &&\
│ │ │ │ -
31 TDS_ATTR(proc) &&\
│ │ │ │ -
32 TDS_ATTR(proclen) &&\
│ │ │ │ -
33 TDS_ATTR(line) &&\
│ │ │ │ -
34 TDS_ATTR(status) &&\
│ │ │ │ -
35 TDS_ATTR(sqlstate) &&\
│ │ │ │ -
36 TDS_ATTR(sqlstatelen))
│ │ │ │ +
1/*** Please do not edit this file! ***/
│ │ │ │ +
2/*** It was generated with 'perl tds_willconvert.pl > tds_willconvert.h' ***/
│ │ │ │ +
3/*** It is much easier to edit the __DATA__ table than this file. ***/
│ │ │ │ +
4/*** ***/
│ │ │ │ +
5/*** Thank you. ***/
│ │ │ │ +
6
│ │ │ │ +
7static const uint8_t type2category[256] = {
│ │ │ │ +
8 0, /* 0 */
│ │ │ │ +
9 0, /* 1 */
│ │ │ │ +
10 0, /* 2 */
│ │ │ │ +
11 0, /* 3 */
│ │ │ │ +
12 0, /* 4 */
│ │ │ │ +
13 0, /* 5 */
│ │ │ │ +
14 0, /* 6 */
│ │ │ │ +
15 0, /* 7 */
│ │ │ │ +
16 0, /* 8 */
│ │ │ │ +
17 0, /* 9 */
│ │ │ │ +
18 0, /* 10 */
│ │ │ │ +
19 0, /* 11 */
│ │ │ │ +
20 0, /* 12 */
│ │ │ │ +
21 0, /* 13 */
│ │ │ │ +
22 0, /* 14 */
│ │ │ │ +
23 0, /* 15 */
│ │ │ │ +
24 0, /* 16 */
│ │ │ │ +
25 0, /* 17 */
│ │ │ │ +
26 0, /* 18 */
│ │ │ │ +
27 0, /* 19 */
│ │ │ │ +
28 0, /* 20 */
│ │ │ │ +
29 0, /* 21 */
│ │ │ │ +
30 0, /* 22 */
│ │ │ │ +
31 0, /* 23 */
│ │ │ │ +
32 0, /* 24 */
│ │ │ │ +
33 0, /* 25 */
│ │ │ │ +
34 0, /* 26 */
│ │ │ │ +
35 0, /* 27 */
│ │ │ │ +
36 0, /* 28 */
│ │ │ │ +
37 0, /* 29 */
│ │ │ │ +
38 0, /* 30 */
│ │ │ │ +
39 0, /* SYBVOID */
│ │ │ │ +
40 0, /* 32 */
│ │ │ │ +
41 0, /* 33 */
│ │ │ │ +
42 2, /* SYBIMAGE */
│ │ │ │ +
43 7, /* SYBTEXT */
│ │ │ │ +
44 8, /* SYBBLOB */
│ │ │ │ +
45 2, /* SYBVARBINARY */
│ │ │ │ +
46 0, /* SYBINTN */
│ │ │ │ +
47 7, /* SYBVARCHAR */
│ │ │ │ +
48 4, /* SYBMSDATE */
│ │ │ │ +
49 4, /* SYBMSTIME */
│ │ │ │ +
50 4, /* SYBMSDATETIME2 */
│ │ │ │ +
51 4, /* SYBMSDATETIMEOFFSET */
│ │ │ │ +
52 0, /* 44 */
│ │ │ │ +
53 2, /* SYBBINARY */
│ │ │ │ +
54 0, /* SYBINTERVAL */
│ │ │ │ +
55 7, /* SYBCHAR */
│ │ │ │ +
56 3, /* SYBINT1 */
│ │ │ │ +
57 4, /* SYBDATE */
│ │ │ │ +
58 1, /* SYBBIT */
│ │ │ │ +
59 4, /* SYBTIME */
│ │ │ │ +
60 3, /* SYBINT2 */
│ │ │ │ +
61 0, /* 53 */
│ │ │ │ +
62 0, /* 54 */
│ │ │ │ +
63 0, /* 55 */
│ │ │ │ +
64 3, /* SYBINT4 */
│ │ │ │ +
65 0, /* 57 */
│ │ │ │ +
66 4, /* SYBDATETIME4 */
│ │ │ │ +
67 3, /* SYBREAL */
│ │ │ │ +
68 3, /* SYBMONEY */
│ │ │ │ +
69 4, /* SYBDATETIME */
│ │ │ │ +
70 3, /* SYBFLT8 */
│ │ │ │ +
71 0, /* 63 */
│ │ │ │ +
72 3, /* SYBUINT1 */
│ │ │ │ +
73 3, /* SYBUINT2 */
│ │ │ │ +
74 3, /* SYBUINT4 */
│ │ │ │ +
75 3, /* SYBUINT8 */
│ │ │ │ +
76 0, /* SYBUINTN */
│ │ │ │ +
77 0, /* 69 */
│ │ │ │ +
78 0, /* 70 */
│ │ │ │ +
79 0, /* 71 */
│ │ │ │ +
80 0, /* 72 */
│ │ │ │ +
81 0, /* 73 */
│ │ │ │ +
82 0, /* 74 */
│ │ │ │ +
83 0, /* 75 */
│ │ │ │ +
84 0, /* 76 */
│ │ │ │ +
85 0, /* 77 */
│ │ │ │ +
86 0, /* 78 */
│ │ │ │ +
87 0, /* 79 */
│ │ │ │ +
88 0, /* 80 */
│ │ │ │ +
89 0, /* 81 */
│ │ │ │ +
90 0, /* 82 */
│ │ │ │ +
91 0, /* 83 */
│ │ │ │ +
92 0, /* 84 */
│ │ │ │ +
93 0, /* 85 */
│ │ │ │ +
94 0, /* 86 */
│ │ │ │ +
95 0, /* 87 */
│ │ │ │ +
96 0, /* 88 */
│ │ │ │ +
97 0, /* 89 */
│ │ │ │ +
98 0, /* 90 */
│ │ │ │ +
99 0, /* 91 */
│ │ │ │ +
100 0, /* 92 */
│ │ │ │ +
101 0, /* 93 */
│ │ │ │ +
102 0, /* 94 */
│ │ │ │ +
103 0, /* 95 */
│ │ │ │ +
104 0, /* 96 */
│ │ │ │ +
105 0, /* 97 */
│ │ │ │ +
106 0, /* SYBVARIANT */
│ │ │ │ +
107 0, /* SYBNTEXT */
│ │ │ │ +
108 0, /* 100 */
│ │ │ │ +
109 0, /* 101 */
│ │ │ │ +
110 0, /* 102 */
│ │ │ │ +
111 6, /* SYBSENSITIVITY */
│ │ │ │ +
112 1, /* SYBBOUNDARY */
│ │ │ │ +
113 0, /* 105 */
│ │ │ │ +
114 1, /* SYBDECIMAL */
│ │ │ │ +
115 0, /* 107 */
│ │ │ │ +
116 1, /* SYBNUMERIC */
│ │ │ │ +
117 0, /* SYBFLTN */
│ │ │ │ +
118 0, /* SYBMONEYN */
│ │ │ │ +
119 0, /* SYBDATETIMN */
│ │ │ │ +
120 0, /* 112 */
│ │ │ │ +
121 0, /* 113 */
│ │ │ │ +
122 0, /* 114 */
│ │ │ │ +
123 0, /* 115 */
│ │ │ │ +
124 0, /* 116 */
│ │ │ │ +
125 0, /* 117 */
│ │ │ │ +
126 0, /* 118 */
│ │ │ │ +
127 0, /* 119 */
│ │ │ │ +
128 0, /* 120 */
│ │ │ │ +
129 0, /* 121 */
│ │ │ │ +
130 3, /* SYBMONEY4 */
│ │ │ │ +
131 0, /* SYBDATEN */
│ │ │ │ +
132 0, /* 124 */
│ │ │ │ +
133 0, /* 125 */
│ │ │ │ +
134 0, /* 126 */
│ │ │ │ +
135 3, /* SYBINT8 */
│ │ │ │ +
136 0, /* 128 */
│ │ │ │ +
137 0, /* 129 */
│ │ │ │ +
138 0, /* 130 */
│ │ │ │ +
139 0, /* 131 */
│ │ │ │ +
140 0, /* 132 */
│ │ │ │ +
141 0, /* 133 */
│ │ │ │ +
142 0, /* 134 */
│ │ │ │ +
143 0, /* 135 */
│ │ │ │ +
144 0, /* 136 */
│ │ │ │ +
145 0, /* 137 */
│ │ │ │ +
146 0, /* 138 */
│ │ │ │ +
147 0, /* 139 */
│ │ │ │ +
148 0, /* 140 */
│ │ │ │ +
149 0, /* 141 */
│ │ │ │ +
150 0, /* 142 */
│ │ │ │ +
151 0, /* 143 */
│ │ │ │ +
152 0, /* 144 */
│ │ │ │ +
153 0, /* 145 */
│ │ │ │ +
154 0, /* 146 */
│ │ │ │ +
155 0, /* SYBTIMEN */
│ │ │ │ +
156 0, /* 148 */
│ │ │ │ +
157 0, /* 149 */
│ │ │ │ +
158 0, /* 150 */
│ │ │ │ +
159 0, /* 151 */
│ │ │ │ +
160 0, /* 152 */
│ │ │ │ +
161 0, /* 153 */
│ │ │ │ +
162 0, /* 154 */
│ │ │ │ +
163 0, /* 155 */
│ │ │ │ +
164 0, /* 156 */
│ │ │ │ +
165 0, /* 157 */
│ │ │ │ +
166 0, /* 158 */
│ │ │ │ +
167 0, /* 159 */
│ │ │ │ +
168 0, /* 160 */
│ │ │ │ +
169 0, /* 161 */
│ │ │ │ +
170 0, /* 162 */
│ │ │ │ +
171 0, /* SYBXML */
│ │ │ │ +
172 0, /* 164 */
│ │ │ │ +
173 2, /* XSYBVARBINARY */
│ │ │ │ +
174 0, /* 166 */
│ │ │ │ +
175 7, /* XSYBVARCHAR */
│ │ │ │ +
176 0, /* 168 */
│ │ │ │ +
177 0, /* 169 */
│ │ │ │ +
178 0, /* 170 */
│ │ │ │ +
179 0, /* 171 */
│ │ │ │ +
180 0, /* 172 */
│ │ │ │ +
181 2, /* XSYBBINARY */
│ │ │ │ +
182 0, /* SYBUNITEXT */
│ │ │ │ +
183 7, /* SYBLONGCHAR */
│ │ │ │ +
184 3, /* SYBSINT1 */
│ │ │ │ +
185 0, /* 177 */
│ │ │ │ +
186 0, /* 178 */
│ │ │ │ +
187 0, /* 179 */
│ │ │ │ +
188 0, /* 180 */
│ │ │ │ +
189 0, /* 181 */
│ │ │ │ +
190 0, /* 182 */
│ │ │ │ +
191 0, /* 183 */
│ │ │ │ +
192 0, /* 184 */
│ │ │ │ +
193 0, /* 185 */
│ │ │ │ +
194 0, /* 186 */
│ │ │ │ +
195 4, /* SYB5BIGDATETIME */
│ │ │ │ +
196 4, /* SYB5BIGTIME */
│ │ │ │ +
197 0, /* 189 */
│ │ │ │ +
198 0, /* 190 */
│ │ │ │ +
199 0, /* SYB5INT8 */
│ │ │ │ +
200 0, /* 192 */
│ │ │ │ +
201 0, /* 193 */
│ │ │ │ +
202 0, /* 194 */
│ │ │ │ +
203 0, /* 195 */
│ │ │ │ +
204 0, /* 196 */
│ │ │ │ +
205 0, /* 197 */
│ │ │ │ +
206 0, /* 198 */
│ │ │ │ +
207 0, /* 199 */
│ │ │ │ +
208 0, /* 200 */
│ │ │ │ +
209 0, /* 201 */
│ │ │ │ +
210 0, /* 202 */
│ │ │ │ +
211 0, /* 203 */
│ │ │ │ +
212 0, /* 204 */
│ │ │ │ +
213 0, /* 205 */
│ │ │ │ +
214 0, /* 206 */
│ │ │ │ +
215 0, /* 207 */
│ │ │ │ +
216 0, /* 208 */
│ │ │ │ +
217 0, /* 209 */
│ │ │ │ +
218 0, /* 210 */
│ │ │ │ +
219 0, /* 211 */
│ │ │ │ +
220 0, /* 212 */
│ │ │ │ +
221 0, /* 213 */
│ │ │ │ +
222 0, /* 214 */
│ │ │ │ +
223 0, /* 215 */
│ │ │ │ +
224 0, /* 216 */
│ │ │ │ +
225 0, /* 217 */
│ │ │ │ +
226 0, /* 218 */
│ │ │ │ +
227 0, /* 219 */
│ │ │ │ +
228 0, /* 220 */
│ │ │ │ +
229 0, /* 221 */
│ │ │ │ +
230 0, /* 222 */
│ │ │ │ +
231 0, /* 223 */
│ │ │ │ +
232 0, /* 224 */
│ │ │ │ +
233 2, /* SYBLONGBINARY */
│ │ │ │ +
234 0, /* 226 */
│ │ │ │ +
235 0, /* 227 */
│ │ │ │ +
236 0, /* 228 */
│ │ │ │ +
237 0, /* 229 */
│ │ │ │ +
238 0, /* 230 */
│ │ │ │ +
239 0, /* XSYBNVARCHAR */
│ │ │ │ +
240 0, /* 232 */
│ │ │ │ +
241 0, /* 233 */
│ │ │ │ +
242 0, /* 234 */
│ │ │ │ +
243 0, /* 235 */
│ │ │ │ +
244 0, /* 236 */
│ │ │ │ +
245 0, /* 237 */
│ │ │ │ +
246 0, /* 238 */
│ │ │ │ +
247 0, /* XSYBNCHAR */
│ │ │ │ +
248 0, /* SYBMSUDT */
│ │ │ │ +
249 0, /* SYBMSXML */
│ │ │ │ +
250 0, /* 242 */
│ │ │ │ +
251 5, /* SYBMSTABLE */
│ │ │ │ +
252 0, /* 244 */
│ │ │ │ +
253 0, /* 245 */
│ │ │ │ +
254 0, /* 246 */
│ │ │ │ +
255 0, /* 247 */
│ │ │ │ +
256 0, /* 248 */
│ │ │ │ +
257 0, /* 249 */
│ │ │ │ +
258 0, /* 250 */
│ │ │ │ +
259 0, /* 251 */
│ │ │ │ +
260 0, /* 252 */
│ │ │ │ +
261 0, /* 253 */
│ │ │ │ +
262 0, /* 254 */
│ │ │ │ +
263 0, /* 255 */
│ │ │ │ +
264};
│ │ │ │ +
265
│ │ │ │ +
266static const uint32_t category_conversion[] = {
│ │ │ │ +
267 0,
│ │ │ │ +
268 142, /* SYBBIT */
│ │ │ │ +
269 140, /* SYBIMAGE */
│ │ │ │ +
270 142, /* SYBINT1 */
│ │ │ │ +
271 148, /* SYBMSDATE */
│ │ │ │ +
272 32, /* SYBMSTABLE */
│ │ │ │ +
273 0, /* SYBSENSITIVITY */
│ │ │ │ +
274 414, /* SYBTEXT */
│ │ │ │ +
275 388, /* SYBUNIQUE */
│ │ │ │ +
276};
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,47 +1,285 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * src │ │ │ │ │ - * ctlib │ │ │ │ │ -ct_checks.h │ │ │ │ │ -1#include │ │ │ │ │ -2 │ │ │ │ │ -3#include "ctpublic.h" │ │ │ │ │ -4#include "ctlib.h" │ │ │ │ │ -5 │ │ │ │ │ -6#define TDS_ATTR(field_name) \ │ │ │ │ │ -7 (sizeof(((STRUCTUREA*)0)->field_name) == sizeof(((STRUCTUREB*)0)->FIELDB │ │ │ │ │ -field_name) && \ │ │ │ │ │ -8 TDS_OFFSET(STRUCTUREA,field_name) == TDS_OFFSET(STRUCTUREB,FIELDB field_ │ │ │ │ │ -name)) │ │ │ │ │ -9 │ │ │ │ │ -10#define TDS_DATAFMT_TEST(test_name) TDS_COMPILE_CHECK(check_ ## test_name,\ │ │ │ │ │ -11 TDS_ATTR(name) &&\ │ │ │ │ │ -12 TDS_ATTR(namelen) &&\ │ │ │ │ │ -13 TDS_ATTR(datatype) &&\ │ │ │ │ │ -14 TDS_ATTR(format) &&\ │ │ │ │ │ -15 TDS_ATTR(maxlength) &&\ │ │ │ │ │ -16 TDS_ATTR(scale) &&\ │ │ │ │ │ -17 TDS_ATTR(precision) &&\ │ │ │ │ │ -18 TDS_ATTR(status) &&\ │ │ │ │ │ -19 TDS_ATTR(count) &&\ │ │ │ │ │ -20 TDS_ATTR(usertype) &&\ │ │ │ │ │ -21 TDS_ATTR(locale)) │ │ │ │ │ -22 │ │ │ │ │ -23#define TDS_SERVERMSG_TEST(test_name) TDS_COMPILE_CHECK(check_ ## test_name,\ │ │ │ │ │ -24 TDS_ATTR(msgnumber) &&\ │ │ │ │ │ -25 TDS_ATTR(state) &&\ │ │ │ │ │ -26 TDS_ATTR(severity) &&\ │ │ │ │ │ -27 TDS_ATTR(text) &&\ │ │ │ │ │ -28 TDS_ATTR(textlen) &&\ │ │ │ │ │ -29 TDS_ATTR(svrname) &&\ │ │ │ │ │ -30 TDS_ATTR(svrnlen) &&\ │ │ │ │ │ -31 TDS_ATTR(proc) &&\ │ │ │ │ │ -32 TDS_ATTR(proclen) &&\ │ │ │ │ │ -33 TDS_ATTR(line) &&\ │ │ │ │ │ -34 TDS_ATTR(status) &&\ │ │ │ │ │ -35 TDS_ATTR(sqlstate) &&\ │ │ │ │ │ -36 TDS_ATTR(sqlstatelen)) │ │ │ │ │ + * tds │ │ │ │ │ +tds_willconvert.h │ │ │ │ │ +1/*** Please do not edit this file! ***/ │ │ │ │ │ +2/*** It was generated with 'perl tds_willconvert.pl > tds_willconvert.h' ***/ │ │ │ │ │ +3/*** It is much easier to edit the __DATA__ table than this file. ***/ │ │ │ │ │ +4/*** ***/ │ │ │ │ │ +5/*** Thank you. ***/ │ │ │ │ │ +6 │ │ │ │ │ +7static const uint8_t type2category[256] = { │ │ │ │ │ +8 0, /* 0 */ │ │ │ │ │ +9 0, /* 1 */ │ │ │ │ │ +10 0, /* 2 */ │ │ │ │ │ +11 0, /* 3 */ │ │ │ │ │ +12 0, /* 4 */ │ │ │ │ │ +13 0, /* 5 */ │ │ │ │ │ +14 0, /* 6 */ │ │ │ │ │ +15 0, /* 7 */ │ │ │ │ │ +16 0, /* 8 */ │ │ │ │ │ +17 0, /* 9 */ │ │ │ │ │ +18 0, /* 10 */ │ │ │ │ │ +19 0, /* 11 */ │ │ │ │ │ +20 0, /* 12 */ │ │ │ │ │ +21 0, /* 13 */ │ │ │ │ │ +22 0, /* 14 */ │ │ │ │ │ +23 0, /* 15 */ │ │ │ │ │ +24 0, /* 16 */ │ │ │ │ │ +25 0, /* 17 */ │ │ │ │ │ +26 0, /* 18 */ │ │ │ │ │ +27 0, /* 19 */ │ │ │ │ │ +28 0, /* 20 */ │ │ │ │ │ +29 0, /* 21 */ │ │ │ │ │ +30 0, /* 22 */ │ │ │ │ │ +31 0, /* 23 */ │ │ │ │ │ +32 0, /* 24 */ │ │ │ │ │ +33 0, /* 25 */ │ │ │ │ │ +34 0, /* 26 */ │ │ │ │ │ +35 0, /* 27 */ │ │ │ │ │ +36 0, /* 28 */ │ │ │ │ │ +37 0, /* 29 */ │ │ │ │ │ +38 0, /* 30 */ │ │ │ │ │ +39 0, /* SYBVOID */ │ │ │ │ │ +40 0, /* 32 */ │ │ │ │ │ +41 0, /* 33 */ │ │ │ │ │ +42 2, /* SYBIMAGE */ │ │ │ │ │ +43 7, /* SYBTEXT */ │ │ │ │ │ +44 8, /* SYBBLOB */ │ │ │ │ │ +45 2, /* SYBVARBINARY */ │ │ │ │ │ +46 0, /* SYBINTN */ │ │ │ │ │ +47 7, /* SYBVARCHAR */ │ │ │ │ │ +48 4, /* SYBMSDATE */ │ │ │ │ │ +49 4, /* SYBMSTIME */ │ │ │ │ │ +50 4, /* SYBMSDATETIME2 */ │ │ │ │ │ +51 4, /* SYBMSDATETIMEOFFSET */ │ │ │ │ │ +52 0, /* 44 */ │ │ │ │ │ +53 2, /* SYBBINARY */ │ │ │ │ │ +54 0, /* SYBINTERVAL */ │ │ │ │ │ +55 7, /* SYBCHAR */ │ │ │ │ │ +56 3, /* SYBINT1 */ │ │ │ │ │ +57 4, /* SYBDATE */ │ │ │ │ │ +58 1, /* SYBBIT */ │ │ │ │ │ +59 4, /* SYBTIME */ │ │ │ │ │ +60 3, /* SYBINT2 */ │ │ │ │ │ +61 0, /* 53 */ │ │ │ │ │ +62 0, /* 54 */ │ │ │ │ │ +63 0, /* 55 */ │ │ │ │ │ +64 3, /* SYBINT4 */ │ │ │ │ │ +65 0, /* 57 */ │ │ │ │ │ +66 4, /* SYBDATETIME4 */ │ │ │ │ │ +67 3, /* SYBREAL */ │ │ │ │ │ +68 3, /* SYBMONEY */ │ │ │ │ │ +69 4, /* SYBDATETIME */ │ │ │ │ │ +70 3, /* SYBFLT8 */ │ │ │ │ │ +71 0, /* 63 */ │ │ │ │ │ +72 3, /* SYBUINT1 */ │ │ │ │ │ +73 3, /* SYBUINT2 */ │ │ │ │ │ +74 3, /* SYBUINT4 */ │ │ │ │ │ +75 3, /* SYBUINT8 */ │ │ │ │ │ +76 0, /* SYBUINTN */ │ │ │ │ │ +77 0, /* 69 */ │ │ │ │ │ +78 0, /* 70 */ │ │ │ │ │ +79 0, /* 71 */ │ │ │ │ │ +80 0, /* 72 */ │ │ │ │ │ +81 0, /* 73 */ │ │ │ │ │ +82 0, /* 74 */ │ │ │ │ │ +83 0, /* 75 */ │ │ │ │ │ +84 0, /* 76 */ │ │ │ │ │ +85 0, /* 77 */ │ │ │ │ │ +86 0, /* 78 */ │ │ │ │ │ +87 0, /* 79 */ │ │ │ │ │ +88 0, /* 80 */ │ │ │ │ │ +89 0, /* 81 */ │ │ │ │ │ +90 0, /* 82 */ │ │ │ │ │ +91 0, /* 83 */ │ │ │ │ │ +92 0, /* 84 */ │ │ │ │ │ +93 0, /* 85 */ │ │ │ │ │ +94 0, /* 86 */ │ │ │ │ │ +95 0, /* 87 */ │ │ │ │ │ +96 0, /* 88 */ │ │ │ │ │ +97 0, /* 89 */ │ │ │ │ │ +98 0, /* 90 */ │ │ │ │ │ +99 0, /* 91 */ │ │ │ │ │ +100 0, /* 92 */ │ │ │ │ │ +101 0, /* 93 */ │ │ │ │ │ +102 0, /* 94 */ │ │ │ │ │ +103 0, /* 95 */ │ │ │ │ │ +104 0, /* 96 */ │ │ │ │ │ +105 0, /* 97 */ │ │ │ │ │ +106 0, /* SYBVARIANT */ │ │ │ │ │ +107 0, /* SYBNTEXT */ │ │ │ │ │ +108 0, /* 100 */ │ │ │ │ │ +109 0, /* 101 */ │ │ │ │ │ +110 0, /* 102 */ │ │ │ │ │ +111 6, /* SYBSENSITIVITY */ │ │ │ │ │ +112 1, /* SYBBOUNDARY */ │ │ │ │ │ +113 0, /* 105 */ │ │ │ │ │ +114 1, /* SYBDECIMAL */ │ │ │ │ │ +115 0, /* 107 */ │ │ │ │ │ +116 1, /* SYBNUMERIC */ │ │ │ │ │ +117 0, /* SYBFLTN */ │ │ │ │ │ +118 0, /* SYBMONEYN */ │ │ │ │ │ +119 0, /* SYBDATETIMN */ │ │ │ │ │ +120 0, /* 112 */ │ │ │ │ │ +121 0, /* 113 */ │ │ │ │ │ +122 0, /* 114 */ │ │ │ │ │ +123 0, /* 115 */ │ │ │ │ │ +124 0, /* 116 */ │ │ │ │ │ +125 0, /* 117 */ │ │ │ │ │ +126 0, /* 118 */ │ │ │ │ │ +127 0, /* 119 */ │ │ │ │ │ +128 0, /* 120 */ │ │ │ │ │ +129 0, /* 121 */ │ │ │ │ │ +130 3, /* SYBMONEY4 */ │ │ │ │ │ +131 0, /* SYBDATEN */ │ │ │ │ │ +132 0, /* 124 */ │ │ │ │ │ +133 0, /* 125 */ │ │ │ │ │ +134 0, /* 126 */ │ │ │ │ │ +135 3, /* SYBINT8 */ │ │ │ │ │ +136 0, /* 128 */ │ │ │ │ │ +137 0, /* 129 */ │ │ │ │ │ +138 0, /* 130 */ │ │ │ │ │ +139 0, /* 131 */ │ │ │ │ │ +140 0, /* 132 */ │ │ │ │ │ +141 0, /* 133 */ │ │ │ │ │ +142 0, /* 134 */ │ │ │ │ │ +143 0, /* 135 */ │ │ │ │ │ +144 0, /* 136 */ │ │ │ │ │ +145 0, /* 137 */ │ │ │ │ │ +146 0, /* 138 */ │ │ │ │ │ +147 0, /* 139 */ │ │ │ │ │ +148 0, /* 140 */ │ │ │ │ │ +149 0, /* 141 */ │ │ │ │ │ +150 0, /* 142 */ │ │ │ │ │ +151 0, /* 143 */ │ │ │ │ │ +152 0, /* 144 */ │ │ │ │ │ +153 0, /* 145 */ │ │ │ │ │ +154 0, /* 146 */ │ │ │ │ │ +155 0, /* SYBTIMEN */ │ │ │ │ │ +156 0, /* 148 */ │ │ │ │ │ +157 0, /* 149 */ │ │ │ │ │ +158 0, /* 150 */ │ │ │ │ │ +159 0, /* 151 */ │ │ │ │ │ +160 0, /* 152 */ │ │ │ │ │ +161 0, /* 153 */ │ │ │ │ │ +162 0, /* 154 */ │ │ │ │ │ +163 0, /* 155 */ │ │ │ │ │ +164 0, /* 156 */ │ │ │ │ │ +165 0, /* 157 */ │ │ │ │ │ +166 0, /* 158 */ │ │ │ │ │ +167 0, /* 159 */ │ │ │ │ │ +168 0, /* 160 */ │ │ │ │ │ +169 0, /* 161 */ │ │ │ │ │ +170 0, /* 162 */ │ │ │ │ │ +171 0, /* SYBXML */ │ │ │ │ │ +172 0, /* 164 */ │ │ │ │ │ +173 2, /* XSYBVARBINARY */ │ │ │ │ │ +174 0, /* 166 */ │ │ │ │ │ +175 7, /* XSYBVARCHAR */ │ │ │ │ │ +176 0, /* 168 */ │ │ │ │ │ +177 0, /* 169 */ │ │ │ │ │ +178 0, /* 170 */ │ │ │ │ │ +179 0, /* 171 */ │ │ │ │ │ +180 0, /* 172 */ │ │ │ │ │ +181 2, /* XSYBBINARY */ │ │ │ │ │ +182 0, /* SYBUNITEXT */ │ │ │ │ │ +183 7, /* SYBLONGCHAR */ │ │ │ │ │ +184 3, /* SYBSINT1 */ │ │ │ │ │ +185 0, /* 177 */ │ │ │ │ │ +186 0, /* 178 */ │ │ │ │ │ +187 0, /* 179 */ │ │ │ │ │ +188 0, /* 180 */ │ │ │ │ │ +189 0, /* 181 */ │ │ │ │ │ +190 0, /* 182 */ │ │ │ │ │ +191 0, /* 183 */ │ │ │ │ │ +192 0, /* 184 */ │ │ │ │ │ +193 0, /* 185 */ │ │ │ │ │ +194 0, /* 186 */ │ │ │ │ │ +195 4, /* SYB5BIGDATETIME */ │ │ │ │ │ +196 4, /* SYB5BIGTIME */ │ │ │ │ │ +197 0, /* 189 */ │ │ │ │ │ +198 0, /* 190 */ │ │ │ │ │ +199 0, /* SYB5INT8 */ │ │ │ │ │ +200 0, /* 192 */ │ │ │ │ │ +201 0, /* 193 */ │ │ │ │ │ +202 0, /* 194 */ │ │ │ │ │ +203 0, /* 195 */ │ │ │ │ │ +204 0, /* 196 */ │ │ │ │ │ +205 0, /* 197 */ │ │ │ │ │ +206 0, /* 198 */ │ │ │ │ │ +207 0, /* 199 */ │ │ │ │ │ +208 0, /* 200 */ │ │ │ │ │ +209 0, /* 201 */ │ │ │ │ │ +210 0, /* 202 */ │ │ │ │ │ +211 0, /* 203 */ │ │ │ │ │ +212 0, /* 204 */ │ │ │ │ │ +213 0, /* 205 */ │ │ │ │ │ +214 0, /* 206 */ │ │ │ │ │ +215 0, /* 207 */ │ │ │ │ │ +216 0, /* 208 */ │ │ │ │ │ +217 0, /* 209 */ │ │ │ │ │ +218 0, /* 210 */ │ │ │ │ │ +219 0, /* 211 */ │ │ │ │ │ +220 0, /* 212 */ │ │ │ │ │ +221 0, /* 213 */ │ │ │ │ │ +222 0, /* 214 */ │ │ │ │ │ +223 0, /* 215 */ │ │ │ │ │ +224 0, /* 216 */ │ │ │ │ │ +225 0, /* 217 */ │ │ │ │ │ +226 0, /* 218 */ │ │ │ │ │ +227 0, /* 219 */ │ │ │ │ │ +228 0, /* 220 */ │ │ │ │ │ +229 0, /* 221 */ │ │ │ │ │ +230 0, /* 222 */ │ │ │ │ │ +231 0, /* 223 */ │ │ │ │ │ +232 0, /* 224 */ │ │ │ │ │ +233 2, /* SYBLONGBINARY */ │ │ │ │ │ +234 0, /* 226 */ │ │ │ │ │ +235 0, /* 227 */ │ │ │ │ │ +236 0, /* 228 */ │ │ │ │ │ +237 0, /* 229 */ │ │ │ │ │ +238 0, /* 230 */ │ │ │ │ │ +239 0, /* XSYBNVARCHAR */ │ │ │ │ │ +240 0, /* 232 */ │ │ │ │ │ +241 0, /* 233 */ │ │ │ │ │ +242 0, /* 234 */ │ │ │ │ │ +243 0, /* 235 */ │ │ │ │ │ +244 0, /* 236 */ │ │ │ │ │ +245 0, /* 237 */ │ │ │ │ │ +246 0, /* 238 */ │ │ │ │ │ +247 0, /* XSYBNCHAR */ │ │ │ │ │ +248 0, /* SYBMSUDT */ │ │ │ │ │ +249 0, /* SYBMSXML */ │ │ │ │ │ +250 0, /* 242 */ │ │ │ │ │ +251 5, /* SYBMSTABLE */ │ │ │ │ │ +252 0, /* 244 */ │ │ │ │ │ +253 0, /* 245 */ │ │ │ │ │ +254 0, /* 246 */ │ │ │ │ │ +255 0, /* 247 */ │ │ │ │ │ +256 0, /* 248 */ │ │ │ │ │ +257 0, /* 249 */ │ │ │ │ │ +258 0, /* 250 */ │ │ │ │ │ +259 0, /* 251 */ │ │ │ │ │ +260 0, /* 252 */ │ │ │ │ │ +261 0, /* 253 */ │ │ │ │ │ +262 0, /* 254 */ │ │ │ │ │ +263 0, /* 255 */ │ │ │ │ │ +264}; │ │ │ │ │ +265 │ │ │ │ │ +266static const uint32_t category_conversion[] = { │ │ │ │ │ +267 0, │ │ │ │ │ +268 142, /* SYBBIT */ │ │ │ │ │ +269 140, /* SYBIMAGE */ │ │ │ │ │ +270 142, /* SYBINT1 */ │ │ │ │ │ +271 148, /* SYBMSDATE */ │ │ │ │ │ +272 32, /* SYBMSTABLE */ │ │ │ │ │ +273 0, /* SYBSENSITIVITY */ │ │ │ │ │ +274 414, /* SYBTEXT */ │ │ │ │ │ +275 388, /* SYBUNIQUE */ │ │ │ │ │ +276}; │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00365_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/sybdb.h Source File │ │ │ │ +FreeTDS API: include/cspublic.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,1550 +74,873 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
sybdb.h
│ │ │ │ +
cspublic.h
│ │ │ │
│ │ │ │
│ │ │ │ -Go to the documentation of this file.
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
28#ifndef _sybdb_h_
│ │ │ │ -
29#define _sybdb_h_
│ │ │ │ -
30
│ │ │ │ -
31#include "tds_sysdep_public.h"
│ │ │ │ -
32
│ │ │ │ -
33#undef TDS_STATIC_CAST
│ │ │ │ -
34#ifdef __cplusplus
│ │ │ │ -
35#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ -
36extern "C"
│ │ │ │ -
37{
│ │ │ │ -
38#if 0
│ │ │ │ -
39}
│ │ │ │ -
40#endif
│ │ │ │ -
41#else
│ │ │ │ -
42#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ -
43#endif
│ │ │ │ -
44
│ │ │ │ -
45#ifdef FALSE
│ │ │ │ -
46#undef FALSE
│ │ │ │ -
47#endif
│ │ │ │ -
48#ifdef TRUE
│ │ │ │ -
49#undef TRUE
│ │ │ │ -
50#endif
│ │ │ │ -
51#define FALSE 0
│ │ │ │ -
52#define TRUE 1
│ │ │ │ -
53
│ │ │ │ -
54#define DBSAVE 1
│ │ │ │ -
55#define DBNOSAVE 0
│ │ │ │ -
56#define DBNOERR -1
│ │ │ │ -
57
│ │ │ │ -
58#define INT_EXIT 0
│ │ │ │ -
59#define INT_CONTINUE 1
│ │ │ │ -
60#define INT_CANCEL 2
│ │ │ │ -
61#define INT_TIMEOUT 3
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _cspublic_h_
│ │ │ │ +
21#define _cspublic_h_
│ │ │ │ +
22
│ │ │ │ +
23#include <cstypes.h>
│ │ │ │ +
24
│ │ │ │ +
25#undef TDS_STATIC_CAST
│ │ │ │ +
26#ifdef __cplusplus
│ │ │ │ +
27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ +
28extern "C"
│ │ │ │ +
29{
│ │ │ │ +
30#if 0
│ │ │ │ +
31}
│ │ │ │ +
32#endif
│ │ │ │ +
33#else
│ │ │ │ +
34#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ +
35#endif
│ │ │ │ +
36
│ │ │ │ +
37#define CS_PUBLIC
│ │ │ │ +
38#define CS_STATIC static
│ │ │ │ +
39
│ │ │ │ +
40#define CS_SUCCEED 1
│ │ │ │ +
41#define CS_FAIL 0
│ │ │ │ +
42#define CS_MEM_ERROR -1
│ │ │ │ +
43#define CS_PENDING -2
│ │ │ │ +
44#define CS_QUIET -3
│ │ │ │ +
45#define CS_BUSY -4
│ │ │ │ +
46#define CS_INTERRUPT -5
│ │ │ │ +
47#define CS_BLK_HAS_TEXT -6
│ │ │ │ +
48#define CS_CONTINUE -7
│ │ │ │ +
49#define CS_FATAL -8
│ │ │ │ +
50#define CS_RET_HAFAILOVER -9
│ │ │ │ +
51#define CS_UNSUPPORTED -10
│ │ │ │ +
52
│ │ │ │ +
53#define CS_CANCELED -202
│ │ │ │ +
54#define CS_ROW_FAIL -203
│ │ │ │ +
55#define CS_END_DATA -204
│ │ │ │ +
56#define CS_END_RESULTS -205
│ │ │ │ +
57#define CS_END_ITEM -206
│ │ │ │ +
58#define CS_NOMSG -207
│ │ │ │ +
59#define CS_TIMED_OUT -208
│ │ │ │ +
60
│ │ │ │ +
61#define CS_SIZEOF(x) sizeof(x)
│ │ │ │
62
│ │ │ │ -
63#define DBMAXNUMLEN 33
│ │ │ │ -
64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */
│ │ │ │ -
65#define DBMAXNAME 128
│ │ │ │ -
66
│ │ │ │ -
70#define DBVERSION_UNKNOWN 0
│ │ │ │ -
71#define DBVERSION_46 1
│ │ │ │ -
72#define DBVERSION_100 2
│ │ │ │ -
73#define DBVERSION_42 3
│ │ │ │ -
74#define DBVERSION_70 4
│ │ │ │ -
75#define DBVERSION_71 5
│ │ │ │ -
76#define DBVERSION_72 6
│ │ │ │ -
77#define DBVERSION_73 7
│ │ │ │ -
78#define DBVERSION_74 8
│ │ │ │ +
63#define CS_LAYER(x) (((x) >> 24) & 0xFF)
│ │ │ │ +
64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)
│ │ │ │ +
65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)
│ │ │ │ +
66#define CS_NUMBER(x) ((x) & 0xFF)
│ │ │ │ +
67
│ │ │ │ +
68/* forward declarations */
│ │ │ │ +
69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
│ │ │ │ +
70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
│ │ │ │ +
71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
│ │ │ │ +
72typedef CS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION *);
│ │ │ │ +
73
│ │ │ │ +
74
│ │ │ │ +
75#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
│ │ │ │ +
76#define CS_SRC_VALUE -2562
│ │ │ │ +
77
│ │ │ │ +
78
│ │ │ │
79
│ │ │ │ -
80/* these two are defined by Microsoft for dbsetlversion() */
│ │ │ │ -
81#define DBVER42 DBVERSION_42
│ │ │ │ -
82#define DBVER60 DBVERSION_70 /* our best approximation */
│ │ │ │ -
83
│ │ │ │ -
88#define DBTDS_UNKNOWN 0
│ │ │ │ -
89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */
│ │ │ │ -
90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */
│ │ │ │ -
91#define DBTDS_4_0 3 /* 4.0 SQL Server */
│ │ │ │ -
92#define DBTDS_4_2 4 /* 4.2 SQL Server */
│ │ │ │ -
93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */
│ │ │ │ -
94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */
│ │ │ │ -
95#define DBTDS_5_0 7 /* 5.0 SQL Server */
│ │ │ │ -
96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */
│ │ │ │ -
97#define DBTDS_8_0 ("Use DBTDS_7_1 instead"*x) /* Microsoft SQL Server 2000 */
│ │ │ │ -
98#define DBTDS_9_0 ("Use DBTDS_7_2 instead"*x) /* Microsoft SQL Server 2005 */
│ │ │ │ -
99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */
│ │ │ │ -
100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */
│ │ │ │ -
101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */
│ │ │ │ -
102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */
│ │ │ │ -
103#define DBTDS_8_0_ 13 /* Microsoft SQL Server 2022 */
│ │ │ │ -
104
│ │ │ │ -
105#define DBTXPLEN 16
│ │ │ │ -
106
│ │ │ │ -
107#define BCPMAXERRS 1
│ │ │ │ -
108#define BCPFIRST 2
│ │ │ │ -
109#define BCPLAST 3
│ │ │ │ -
110#define BCPBATCH 4
│ │ │ │ -
111#define BCPKEEPIDENTITY 8
│ │ │ │ -
112
│ │ │ │ -
113#define BCPLABELED 5
│ │ │ │ -
114#define BCPHINTS 6
│ │ │ │ -
115
│ │ │ │ -
116#define DBCMDNONE 0
│ │ │ │ -
117#define DBCMDPEND 1
│ │ │ │ -
118#define DBCMDSENT 2
│ │ │ │ -
119
│ │ │ │ -
120typedef int RETCODE;
│ │ │ │ -
121
│ │ │ │ -
122typedef void DBCURSOR;
│ │ │ │ -
123typedef void DBXLATE;
│ │ │ │ -
124typedef void DBSORTORDER;
│ │ │ │ -
125typedef void DBLOGINFO;
│ │ │ │ -
126typedef void *DBVOIDPTR;
│ │ │ │ -
127typedef short SHORT;
│ │ │ │ -
128typedef unsigned short USHORT;
│ │ │ │ -
129typedef int (*INTFUNCPTR) (void *, ...);
│ │ │ │ -
130typedef int (*DBWAITFUNC) (void);
│ │ │ │ -
131typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);
│ │ │ │ -
132typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);
│ │ │ │ -
133typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);
│ │ │ │ -
134typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);
│ │ │ │ -
135
│ │ │ │ -
136#ifndef __INCvxWorksh
│ │ │ │ -
137/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you
│ │ │ │ -
138** redefine them. */
│ │ │ │ -
139/* __INCvxWorksh will get #defined by std. include files included from tds.h
│ │ │ │ -
140*/
│ │ │ │ -
141#ifdef STATUS
│ │ │ │ -
142/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h
│ │ │ │ -
143 when _REENTRANT is defined.
│ │ │ │ -
144*/
│ │ │ │ -
145#undef STATUS
│ │ │ │ -
146#endif
│ │ │ │ -
147typedef int STATUS;
│ │ │ │ -
148#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)
│ │ │ │ -
149typedef int BOOL;
│ │ │ │ -
150#endif
│ │ │ │ -
151#endif
│ │ │ │ -
152
│ │ │ │ -
153#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ -
154/* copied from tds.h */
│ │ │ │ -
155/* TODO find a best way... */
│ │ │ │ -
156enum
│ │ │ │ -
157{
│ │ │ │ -
158 SYBCHAR = 47, /* 0x2F */
│ │ │ │ -
159#define SYBCHAR SYBCHAR
│ │ │ │ -
160 SYBVARCHAR = 39, /* 0x27 */
│ │ │ │ -
161#define SYBVARCHAR SYBVARCHAR
│ │ │ │ -
162 SYBINTN = 38, /* 0x26 */
│ │ │ │ -
163#define SYBINTN SYBINTN
│ │ │ │ -
164 SYBINT1 = 48, /* 0x30 */
│ │ │ │ -
165#define SYBINT1 SYBINT1
│ │ │ │ -
166 SYBINT2 = 52, /* 0x34 */
│ │ │ │ -
167#define SYBINT2 SYBINT2
│ │ │ │ -
168 SYBINT4 = 56, /* 0x38 */
│ │ │ │ -
169#define SYBINT4 SYBINT4
│ │ │ │ -
170 SYBINT8 = 127, /* 0x7F */
│ │ │ │ -
171#define SYBINT8 SYBINT8
│ │ │ │ -
172 SYBFLT8 = 62, /* 0x3E */
│ │ │ │ -
173#define SYBFLT8 SYBFLT8
│ │ │ │ -
174 SYBDATETIME = 61, /* 0x3D */
│ │ │ │ -
175#define SYBDATETIME SYBDATETIME
│ │ │ │ -
176 SYBBIT = 50, /* 0x32 */
│ │ │ │ -
177#define SYBBIT SYBBIT
│ │ │ │ -
178 SYBBITN = 104, /* 0x68 */
│ │ │ │ -
179#define SYBBITN SYBBITN
│ │ │ │ -
180 SYBTEXT = 35, /* 0x23 */
│ │ │ │ -
181#define SYBTEXT SYBTEXT
│ │ │ │ -
182 SYBNTEXT = 99, /* 0x63 */
│ │ │ │ -
183#define SYBNTEXT SYBNTEXT
│ │ │ │ -
184 SYBIMAGE = 34, /* 0x22 */
│ │ │ │ -
185#define SYBIMAGE SYBIMAGE
│ │ │ │ -
186 SYBMONEY4 = 122, /* 0x7A */
│ │ │ │ -
187#define SYBMONEY4 SYBMONEY4
│ │ │ │ -
188 SYBMONEY = 60, /* 0x3C */
│ │ │ │ -
189#define SYBMONEY SYBMONEY
│ │ │ │ -
190 SYBDATETIME4 = 58, /* 0x3A */
│ │ │ │ -
191#define SYBDATETIME4 SYBDATETIME4
│ │ │ │ -
192 SYBREAL = 59, /* 0x3B */
│ │ │ │ -
193#define SYBREAL SYBREAL
│ │ │ │ -
194 SYBBINARY = 45, /* 0x2D */
│ │ │ │ -
195#define SYBBINARY SYBBINARY
│ │ │ │ -
196 SYBVOID = 31, /* 0x1F */
│ │ │ │ -
197#define SYBVOID SYBVOID
│ │ │ │ -
198 SYBVARBINARY = 37, /* 0x25 */
│ │ │ │ -
199#define SYBVARBINARY SYBVARBINARY
│ │ │ │ -
200 SYBNUMERIC = 108, /* 0x6C */
│ │ │ │ -
201#define SYBNUMERIC SYBNUMERIC
│ │ │ │ -
202 SYBDECIMAL = 106, /* 0x6A */
│ │ │ │ -
203#define SYBDECIMAL SYBDECIMAL
│ │ │ │ -
204 SYBFLTN = 109, /* 0x6D */
│ │ │ │ -
205#define SYBFLTN SYBFLTN
│ │ │ │ -
206 SYBMONEYN = 110, /* 0x6E */
│ │ │ │ -
207#define SYBMONEYN SYBMONEYN
│ │ │ │ -
208 SYBDATETIMN = 111, /* 0x6F */
│ │ │ │ -
209#define SYBDATETIMN SYBDATETIMN
│ │ │ │ -
210 SYBNVARCHAR = 103, /* 0x67 */
│ │ │ │ -
211#define SYBNVARCHAR SYBNVARCHAR
│ │ │ │ -
212 SYBDATE = 49, /* 0x31 */
│ │ │ │ -
213#define SYBDATE SYBDATE
│ │ │ │ -
214 SYBTIME = 51, /* 0x33 */
│ │ │ │ -
215#define SYBTIME SYBTIME
│ │ │ │ -
216 SYBBIGDATETIME = 187, /* 0xBB */
│ │ │ │ -
217#define SYBBIGDATETIME SYBBIGDATETIME
│ │ │ │ -
218 SYBBIGTIME = 188, /* 0xBC */
│ │ │ │ -
219#define SYBBIGTIME SYBBIGTIME
│ │ │ │ -
220 SYBMSDATE = 40, /* 0x28 */
│ │ │ │ -
221#define SYBMSDATE SYBMSDATE
│ │ │ │ -
222 SYBMSTIME = 41, /* 0x29 */
│ │ │ │ -
223#define SYBMSTIME SYBMSTIME
│ │ │ │ -
224 SYBMSDATETIME2 = 42, /* 0x2A */
│ │ │ │ -
225#define SYBMSDATETIME2 SYBMSDATETIME2
│ │ │ │ -
226 SYBMSDATETIMEOFFSET = 43, /* 0x2B */
│ │ │ │ -
227#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET
│ │ │ │ -
228};
│ │ │ │ -
229
│ │ │ │ -
230#define SYBAOPCNT 0x4b
│ │ │ │ -
231#define SYBAOPCNTU 0x4c
│ │ │ │ -
232#define SYBAOPSUM 0x4d
│ │ │ │ -
233#define SYBAOPSUMU 0x4e
│ │ │ │ -
234#define SYBAOPAVG 0x4f
│ │ │ │ -
235#define SYBAOPAVGU 0x50
│ │ │ │ -
236#define SYBAOPMIN 0x51
│ │ │ │ -
237#define SYBAOPMAX 0x52
│ │ │ │ -
238
│ │ │ │ -
239/* mssql2k compute operator */
│ │ │ │ -
240#define SYBAOPCNT_BIG 0x09
│ │ │ │ -
241#define SYBAOPSTDEV 0x30
│ │ │ │ -
242#define SYBAOPSTDEVP 0x31
│ │ │ │ -
243#define SYBAOPVAR 0x32
│ │ │ │ -
244#define SYBAOPVARP 0x33
│ │ │ │ -
245#define SYBAOPCHECKSUM_AGG 0x72
│ │ │ │ -
246
│ │ │ │ -
247#endif
│ │ │ │ -
248
│ │ │ │ -
249typedef unsigned char DBBOOL;
│ │ │ │ -
250typedef char DBCHAR;
│ │ │ │ -
251typedef unsigned char DBBIT;
│ │ │ │ -
252typedef unsigned char DBTINYINT;
│ │ │ │ -
253typedef int16_t DBSMALLINT;
│ │ │ │ -
254typedef int32_t DBINT;
│ │ │ │ -
255typedef int64_t DBBIGINT;
│ │ │ │ -
256typedef unsigned char DBBINARY;
│ │ │ │ -
257typedef tds_sysdep_real32_type DBREAL;
│ │ │ │ -
258typedef tds_sysdep_real64_type DBFLT8;
│ │ │ │ -
259typedef uint16_t DBUSMALLINT;
│ │ │ │ -
260typedef uint32_t DBUINT;
│ │ │ │ -
261typedef uint64_t DBUBIGINT;
│ │ │ │ -
262
│ │ │ │ -
│ │ │ │ -
263typedef struct
│ │ │ │ -
264{
│ │ │ │ -
265 DBSMALLINT len;
│ │ │ │ -
266 char str[256];
│ │ │ │ -
267} DBVARYCHAR;
│ │ │ │ -
│ │ │ │ -
268
│ │ │ │ -
│ │ │ │ -
269typedef struct
│ │ │ │ -
270{
│ │ │ │ -
271 DBSMALLINT len;
│ │ │ │ -
272 unsigned char array[256];
│ │ │ │ -
273} DBVARYBIN;
│ │ │ │ -
│ │ │ │ -
274
│ │ │ │ -
│ │ │ │ -
275typedef struct
│ │ │ │ -
276{
│ │ │ │ -
277 unsigned char precision;
│ │ │ │ -
278 unsigned char scale;
│ │ │ │ -
279 unsigned char array[33];
│ │ │ │ -
280} DBNUMERIC;
│ │ │ │ -
│ │ │ │ -
281
│ │ │ │ -
282typedef DBNUMERIC DBDECIMAL;
│ │ │ │ -
283
│ │ │ │ -
│ │ │ │ -
284typedef struct
│ │ │ │ -
285{
│ │ │ │ -
286 DBINT mnyhigh;
│ │ │ │ -
287 DBUINT mnylow;
│ │ │ │ -
288} DBMONEY;
│ │ │ │ -
│ │ │ │ -
289
│ │ │ │ -
│ │ │ │ -
290typedef struct
│ │ │ │ -
291{
│ │ │ │ -
292 DBINT mny4;
│ │ │ │ -
293} DBMONEY4;
│ │ │ │ -
│ │ │ │ -
294
│ │ │ │ -
│ │ │ │ -
295typedef struct
│ │ │ │ -
296{
│ │ │ │ -
297 DBINT dtdays;
│ │ │ │ -
298 DBINT dttime;
│ │ │ │ -
299} DBDATETIME;
│ │ │ │ -
│ │ │ │ -
300
│ │ │ │ -
│ │ │ │ -
301typedef struct
│ │ │ │ -
302{
│ │ │ │ -
303 DBUSMALLINT days; /* days since Jan-1-1900 */
│ │ │ │ -
304 DBUSMALLINT minutes; /* minutes since midnight */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
306
│ │ │ │ -
│ │ │ │ -
307typedef struct
│ │ │ │ -
308{
│ │ │ │ -
309 DBUBIGINT time;
│ │ │ │ -
310 DBINT date;
│ │ │ │ -
311 DBSMALLINT offset;
│ │ │ │ -
312 DBUSMALLINT time_prec:3;
│ │ │ │ -
313/* fix a problem with some public headers defining _res */
│ │ │ │ -
314#undef _res
│ │ │ │ -
315 DBUSMALLINT _res:10;
│ │ │ │ -
316 DBUSMALLINT has_time:1;
│ │ │ │ -
317 DBUSMALLINT has_date:1;
│ │ │ │ -
318 DBUSMALLINT has_offset:1;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
320
│ │ │ │ -
321#ifdef MSDBLIB
│ │ │ │ -
322# define SQLCHAR SYBCHAR
│ │ │ │ -
323 typedef struct
│ │ │ │ -
324 {
│ │ │ │ -
325 DBUSMALLINT numdays;
│ │ │ │ -
326 DBUSMALLINT nummins;
│ │ │ │ -
327 } DBDATETIM4;
│ │ │ │ -
328#endif
│ │ │ │ -
329
│ │ │ │ -
330typedef struct tds_dblib_loginrec LOGINREC;
│ │ │ │ -
331
│ │ │ │ -
332#ifndef DOS32X
│ │ │ │ -
333typedef unsigned char BYTE;
│ │ │ │ -
334#endif
│ │ │ │ +
80/* status bits for CS_SERVERMSG */
│ │ │ │ +
81#define CS_HASEED 0x01
│ │ │ │ +
82
│ │ │ │ +
83typedef struct _cs_blkdesc CS_BLKDESC;
│ │ │ │ +
84
│ │ │ │ +
85/* CS_CAP_REQUEST values */
│ │ │ │ +
86#define CS_REQ_LANG 1
│ │ │ │ +
87#define CS_REQ_RPC 2
│ │ │ │ +
88#define CS_REQ_NOTIF 3
│ │ │ │ +
89#define CS_REQ_MSTMT 4
│ │ │ │ +
90#define CS_REQ_BCP 5
│ │ │ │ +
91#define CS_REQ_CURSOR 6
│ │ │ │ +
92#define CS_REQ_DYN 7
│ │ │ │ +
93#define CS_REQ_MSG 8
│ │ │ │ +
94#define CS_REQ_PARAM 9
│ │ │ │ +
95#define CS_DATA_INT1 10
│ │ │ │ +
96#define CS_DATA_INT2 11
│ │ │ │ +
97#define CS_DATA_INT4 12
│ │ │ │ +
98#define CS_DATA_BIT 13
│ │ │ │ +
99#define CS_DATA_CHAR 14
│ │ │ │ +
100#define CS_DATA_VCHAR 15
│ │ │ │ +
101#define CS_DATA_BIN 16
│ │ │ │ +
102#define CS_DATA_VBIN 17
│ │ │ │ +
103#define CS_DATA_MNY8 18
│ │ │ │ +
104#define CS_DATA_MNY4 19
│ │ │ │ +
105#define CS_DATA_DATE8 20
│ │ │ │ +
106#define CS_DATA_DATE4 21
│ │ │ │ +
107#define CS_DATA_FLT4 22
│ │ │ │ +
108#define CS_DATA_FLT8 23
│ │ │ │ +
109#define CS_DATA_NUM 24
│ │ │ │ +
110#define CS_DATA_TEXT 25
│ │ │ │ +
111#define CS_DATA_IMAGE 26
│ │ │ │ +
112#define CS_DATA_DEC 27
│ │ │ │ +
113#define CS_DATA_LCHAR 28
│ │ │ │ +
114#define CS_DATA_LBIN 29
│ │ │ │ +
115#define CS_DATA_INTN 30
│ │ │ │ +
116#define CS_DATA_DATETIMEN 31
│ │ │ │ +
117#define CS_DATA_MONEYN 32
│ │ │ │ +
118#define CS_CSR_PREV 33
│ │ │ │ +
119#define CS_CSR_FIRST 34
│ │ │ │ +
120#define CS_CSR_LAST 35
│ │ │ │ +
121#define CS_CSR_ABS 36
│ │ │ │ +
122#define CS_CSR_REL 37
│ │ │ │ +
123#define CS_CSR_MULTI 38
│ │ │ │ +
124#define CS_CON_OOB 39
│ │ │ │ +
125#define CS_CON_INBAND 40
│ │ │ │ +
126#define CS_CON_LOGICAL 41
│ │ │ │ +
127#define CS_PROTO_TEXT 42
│ │ │ │ +
128#define CS_PROTO_BULK 43
│ │ │ │ +
129#define CS_REQ_URGNOTIF 44
│ │ │ │ +
130#define CS_DATA_SENSITIVITY 45
│ │ │ │ +
131#define CS_DATA_BOUNDARY 46
│ │ │ │ +
132#define CS_PROTO_DYNAMIC 47
│ │ │ │ +
133#define CS_PROTO_DYNPROC 48
│ │ │ │ +
134#define CS_DATA_FLTN 49
│ │ │ │ +
135#define CS_DATA_BITN 50
│ │ │ │ +
136#define CS_OPTION_GET 51
│ │ │ │ +
137#define CS_DATA_INT8 52
│ │ │ │ +
138#define CS_DATA_VOID 53
│ │ │ │ +
139
│ │ │ │ +
140/* CS_CAP_RESPONSE values */
│ │ │ │ +
141#define CS_RES_NOMSG 1
│ │ │ │ +
142#define CS_RES_NOEED 2
│ │ │ │ +
143#define CS_RES_NOPARAM 3
│ │ │ │ +
144#define CS_DATA_NOINT1 4
│ │ │ │ +
145#define CS_DATA_NOINT2 5
│ │ │ │ +
146#define CS_DATA_NOINT4 6
│ │ │ │ +
147#define CS_DATA_NOBIT 7
│ │ │ │ +
148#define CS_DATA_NOCHAR 8
│ │ │ │ +
149#define CS_DATA_NOVCHAR 9
│ │ │ │ +
150#define CS_DATA_NOBIN 10
│ │ │ │ +
151#define CS_DATA_NOVBIN 11
│ │ │ │ +
152#define CS_DATA_NOMNY8 12
│ │ │ │ +
153#define CS_DATA_NOMNY4 13
│ │ │ │ +
154#define CS_DATA_NODATE8 14
│ │ │ │ +
155#define CS_DATA_NODATE4 15
│ │ │ │ +
156#define CS_DATA_NOFLT4 16
│ │ │ │ +
157#define CS_DATA_NOFLT8 17
│ │ │ │ +
158#define CS_DATA_NONUM 18
│ │ │ │ +
159#define CS_DATA_NOTEXT 19
│ │ │ │ +
160#define CS_DATA_NOIMAGE 20
│ │ │ │ +
161#define CS_DATA_NODEC 21
│ │ │ │ +
162#define CS_DATA_NOLCHAR 22
│ │ │ │ +
163#define CS_DATA_NOLBIN 23
│ │ │ │ +
164#define CS_DATA_NOINTN 24
│ │ │ │ +
165#define CS_DATA_NODATETIMEN 25
│ │ │ │ +
166#define CS_DATA_NOMONEYN 26
│ │ │ │ +
167#define CS_CON_NOOOB 27
│ │ │ │ +
168#define CS_CON_NOINBAND 28
│ │ │ │ +
169#define CS_PROTO_NOTEXT 29
│ │ │ │ +
170#define CS_PROTO_NOBULK 30
│ │ │ │ +
171#define CS_DATA_NOSENSITIVITY 31
│ │ │ │ +
172#define CS_DATA_NOBOUNDARY 32
│ │ │ │ +
173#define CS_RES_NOTDSDEBUG 33
│ │ │ │ +
174#define CS_RES_NOSTRIPBLANKS 34
│ │ │ │ +
175#define CS_DATA_NOINT8 35
│ │ │ │ +
176
│ │ │ │ +
177/* Properties */
│ │ │ │ +
178enum
│ │ │ │ +
179{
│ │ │ │ +
180/*
│ │ │ │ +
181 * These defines looks weird but programs can test support for defines,
│ │ │ │ +
182 * compiler can check enum and there are no define side effecs
│ │ │ │ +
183 */
│ │ │ │ +
184 CS_USERNAME = 9100,
│ │ │ │ +
185#define CS_USERNAME CS_USERNAME
│ │ │ │ +
186 CS_PASSWORD = 9101,
│ │ │ │ +
187#define CS_PASSWORD CS_PASSWORD
│ │ │ │ +
188 CS_APPNAME = 9102,
│ │ │ │ +
189#define CS_APPNAME CS_APPNAME
│ │ │ │ +
190 CS_HOSTNAME = 9103,
│ │ │ │ +
191#define CS_HOSTNAME CS_HOSTNAME
│ │ │ │ +
192 CS_LOGIN_STATUS = 9104,
│ │ │ │ +
193#define CS_LOGIN_STATUS CS_LOGIN_STATUS
│ │ │ │ +
194 CS_TDS_VERSION = 9105,
│ │ │ │ +
195#define CS_TDS_VERSION CS_TDS_VERSION
│ │ │ │ +
196 CS_CHARSETCNV = 9106,
│ │ │ │ +
197#define CS_CHARSETCNV CS_CHARSETCNV
│ │ │ │ +
198 CS_PACKETSIZE = 9107,
│ │ │ │ +
199#define CS_PACKETSIZE CS_PACKETSIZE
│ │ │ │ +
200 CS_USERDATA = 9108,
│ │ │ │ +
201#define CS_USERDATA CS_USERDATA
│ │ │ │ +
202 CS_NETIO = 9110,
│ │ │ │ +
203#define CS_NETIO CS_NETIO
│ │ │ │ +
204 CS_TEXTLIMIT = 9112,
│ │ │ │ +
205#define CS_TEXTLIMIT CS_TEXTLIMIT
│ │ │ │ +
206 CS_HIDDEN_KEYS = 9113,
│ │ │ │ +
207#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
│ │ │ │ +
208 CS_VERSION = 9114,
│ │ │ │ +
209#define CS_VERSION CS_VERSION
│ │ │ │ +
210 CS_IFILE = 9115,
│ │ │ │ +
211#define CS_IFILE CS_IFILE
│ │ │ │ +
212 CS_LOGIN_TIMEOUT = 9116,
│ │ │ │ +
213#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
│ │ │ │ +
214 CS_TIMEOUT = 9117,
│ │ │ │ +
215#define CS_TIMEOUT CS_TIMEOUT
│ │ │ │ +
216 CS_MAX_CONNECT = 9118,
│ │ │ │ +
217#define CS_MAX_CONNECT CS_MAX_CONNECT
│ │ │ │ +
218 CS_EXPOSE_FMTS = 9120,
│ │ │ │ +
219#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
│ │ │ │ +
220 CS_EXTRA_INF = 9121,
│ │ │ │ +
221#define CS_EXTRA_INF CS_EXTRA_INF
│ │ │ │ +
222 CS_ANSI_BINDS = 9123,
│ │ │ │ +
223#define CS_ANSI_BINDS CS_ANSI_BINDS
│ │ │ │ +
224 CS_BULK_LOGIN = 9124,
│ │ │ │ +
225#define CS_BULK_LOGIN CS_BULK_LOGIN
│ │ │ │ +
226 CS_LOC_PROP = 9125,
│ │ │ │ +
227#define CS_LOC_PROP CS_LOC_PROP
│ │ │ │ +
228 CS_PARENT_HANDLE = 9130,
│ │ │ │ +
229#define CS_PARENT_HANDLE CS_PARENT_HANDLE
│ │ │ │ +
230 CS_EED_CMD = 9131,
│ │ │ │ +
231#define CS_EED_CMD CS_EED_CMD
│ │ │ │ +
232 CS_DIAG_TIMEOUT = 9132,
│ │ │ │ +
233#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
│ │ │ │ +
234 CS_DISABLE_POLL = 9133,
│ │ │ │ +
235#define CS_DISABLE_POLL CS_DISABLE_POLL
│ │ │ │ +
236 CS_SEC_ENCRYPTION = 9135,
│ │ │ │ +
237#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
│ │ │ │ +
238 CS_SEC_CHALLENGE = 9136,
│ │ │ │ +
239#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
│ │ │ │ +
240 CS_SEC_NEGOTIATE = 9137,
│ │ │ │ +
241#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
│ │ │ │ +
242 CS_ENDPOINT = 9141,
│ │ │ │ +
243#define CS_ENDPOINT CS_ENDPOINT
│ │ │ │ +
244 CS_CON_STATUS = 9143,
│ │ │ │ +
245#define CS_CON_STATUS CS_CON_STATUS
│ │ │ │ +
246 CS_VER_STRING = 9144,
│ │ │ │ +
247#define CS_VER_STRING CS_VER_STRING
│ │ │ │ +
248 CS_SERVERNAME = 9146,
│ │ │ │ +
249#define CS_SERVERNAME CS_SERVERNAME
│ │ │ │ +
250 CS_SEC_APPDEFINED = 9149,
│ │ │ │ +
251#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
│ │ │ │ +
252 CS_STICKY_BINDS = 9151,
│ │ │ │ +
253#define CS_STICKY_BINDS CS_STICKY_BINDS
│ │ │ │ +
254 CS_SEC_NETWORKAUTH = 9175,
│ │ │ │ +
255#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
│ │ │ │ +
256 CS_SEC_DELEGATION = 9176,
│ │ │ │ +
257#define CS_SEC_DELEGATION CS_SEC_DELEGATION
│ │ │ │ +
258 CS_SEC_MUTUALAUTH = 9177,
│ │ │ │ +
259#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
│ │ │ │ +
260 CS_SEC_SERVERPRINCIPAL = 9188,
│ │ │ │ +
261#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
│ │ │ │ +
262 CS_SERVERADDR = 9206,
│ │ │ │ +
263#define CS_SERVERADDR CS_SERVERADDR
│ │ │ │ +
264/* settings from here are FreeTDS extensions */
│ │ │ │ +
265 CS_PORT = 9300,
│ │ │ │ +
266#define CS_PORT CS_PORT
│ │ │ │ +
267 CS_CLIENTCHARSET = 9301,
│ │ │ │ +
268#define CS_CLIENTCHARSET CS_CLIENTCHARSET
│ │ │ │ +
269 CS_DATABASE = 9302,
│ │ │ │ +
270#define CS_DATABASE CS_DATABASE
│ │ │ │ +
271 CS_NOTE_EMPTY_DATA = 9303,
│ │ │ │ +
272#define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA
│ │ │ │ +
273 CS_PRODUCT_NAME = 9304
│ │ │ │ +
274#define CS_PRODUCT_NAME CS_PRODUCT_NAME
│ │ │ │ +
275};
│ │ │ │ +
276
│ │ │ │ +
277/* Arbitrary precision math operators */
│ │ │ │ +
278enum
│ │ │ │ +
279{
│ │ │ │ +
280 CS_ADD = 1,
│ │ │ │ +
281 CS_SUB,
│ │ │ │ +
282 CS_MULT,
│ │ │ │ +
283 CS_DIV
│ │ │ │ +
284};
│ │ │ │ +
285
│ │ │ │ +
286enum
│ │ │ │ +
287{
│ │ │ │ +
288 CS_TDS_AUTO = 0,
│ │ │ │ +
289#define CS_TDS_AUTO CS_TDS_AUTO
│ │ │ │ +
290 CS_TDS_40 = 7360,
│ │ │ │ +
291#define CS_TDS_40 CS_TDS_40
│ │ │ │ +
292 CS_TDS_42,
│ │ │ │ +
293#define CS_TDS_42 CS_TDS_42
│ │ │ │ +
294 CS_TDS_46,
│ │ │ │ +
295#define CS_TDS_46 CS_TDS_46
│ │ │ │ +
296 CS_TDS_495,
│ │ │ │ +
297#define CS_TDS_495 CS_TDS_495
│ │ │ │ +
298 CS_TDS_50,
│ │ │ │ +
299#define CS_TDS_50 CS_TDS_50
│ │ │ │ +
300 CS_TDS_70,
│ │ │ │ +
301 CS_TDS_71,
│ │ │ │ +
302#define CS_TDS_71 CS_TDS_71
│ │ │ │ +
303 CS_TDS_72,
│ │ │ │ +
304#define CS_TDS_72 CS_TDS_72
│ │ │ │ +
305 CS_TDS_73,
│ │ │ │ +
306#define CS_TDS_73 CS_TDS_73
│ │ │ │ +
307 CS_TDS_74,
│ │ │ │ +
308#define CS_TDS_74 CS_TDS_74
│ │ │ │ +
309 CS_TDS_80,
│ │ │ │ +
310#define CS_TDS_80 CS_TDS_80
│ │ │ │ +
311};
│ │ │ │ +
312
│ │ │ │ +
313/* bit mask values used by CS_DATAFMT.status */
│ │ │ │ +
314#define CS_HIDDEN (1 << 0)
│ │ │ │ +
315#define CS_KEY (1 << 1)
│ │ │ │ +
316#define CS_VERSION_KEY (1 << 2)
│ │ │ │ +
317#define CS_NODATA (1 << 3)
│ │ │ │ +
318#define CS_UPDATABLE (1 << 4)
│ │ │ │ +
319#define CS_CANBENULL (1 << 5)
│ │ │ │ +
320#define CS_DESCIN (1 << 6)
│ │ │ │ +
321#define CS_DESCOUT (1 << 7)
│ │ │ │ +
322#define CS_INPUTVALUE (1 << 8)
│ │ │ │ +
323#define CS_UPDATECOL (1 << 9)
│ │ │ │ +
324#define CS_RETURN (1 << 10)
│ │ │ │ +
325#define CS_TIMESTAMP (1 << 13)
│ │ │ │ +
326#define CS_NODEFAULT (1 << 14)
│ │ │ │ +
327#define CS_IDENTITY (1 << 15)
│ │ │ │ +
328
│ │ │ │ +
329/*
│ │ │ │ +
330 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
│ │ │ │ +
331 * (the documentation states -1)
│ │ │ │ +
332 */
│ │ │ │ +
333#define CS_GOODDATA 0
│ │ │ │ +
334#define CS_NULLDATA (-1)
│ │ │ │
335
│ │ │ │ -
│ │ │ │ -
336typedef struct dbtypeinfo
│ │ │ │ -
337{
│ │ │ │ -
338 DBINT precision;
│ │ │ │ -
339 DBINT scale;
│ │ │ │ -
340} DBTYPEINFO;
│ │ │ │ -
│ │ │ │ -
341
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
343{
│ │ │ │ -
344 BYTE *strtext;
│ │ │ │ -
345 DBINT strtotlen;
│ │ │ │ -
346 struct dbstring *strnext;
│ │ │ │ -
347};
│ │ │ │ -
│ │ │ │ -
348typedef struct dbstring DBSTRING;
│ │ │ │ -
349
│ │ │ │ -
350/* Used by dbcolinfo */
│ │ │ │ -
351enum
│ │ │ │ -
352{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */
│ │ │ │ -
353typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;
│ │ │ │ -
354
│ │ │ │ -
│ │ │ │ -
355typedef struct
│ │ │ │ -
356{
│ │ │ │ -
357 DBINT SizeOfStruct;
│ │ │ │ -
358 DBCHAR Name[MAXCOLNAMELEN+2];
│ │ │ │ -
359 DBCHAR ActualName[MAXCOLNAMELEN+2];
│ │ │ │ -
360 DBCHAR TableName[MAXCOLNAMELEN+2];
│ │ │ │ -
361 SHORT Type;
│ │ │ │ -
362 DBINT UserType;
│ │ │ │ -
363 DBINT MaxLength;
│ │ │ │ -
364 BYTE Precision;
│ │ │ │ -
365 BYTE Scale;
│ │ │ │ -
366 BOOL VarLength;
│ │ │ │ -
367 BYTE Null;
│ │ │ │ -
368 BYTE CaseSensitive;
│ │ │ │ -
369 BYTE Updatable;
│ │ │ │ -
370 BOOL Identity;
│ │ │ │ -
371
│ │ │ │ -
372} DBCOL;
│ │ │ │ -
│ │ │ │ -
373
│ │ │ │ -
│ │ │ │ -
374typedef struct
│ │ │ │ -
375{
│ │ │ │ -
376 DBINT SizeOfStruct;
│ │ │ │ -
377 DBCHAR Name[MAXCOLNAMELEN+2];
│ │ │ │ -
378 DBCHAR ActualName[MAXCOLNAMELEN+2];
│ │ │ │ -
379 DBCHAR TableName[MAXCOLNAMELEN+2];
│ │ │ │ -
380 SHORT Type;
│ │ │ │ -
381 DBINT UserType;
│ │ │ │ -
382 DBINT MaxLength;
│ │ │ │ -
383 BYTE Precision;
│ │ │ │ -
384 BYTE Scale;
│ │ │ │ -
385 BOOL VarLength;
│ │ │ │ -
386 BYTE Null;
│ │ │ │ -
387 BYTE CaseSensitive;
│ │ │ │ -
388 BYTE Updatable;
│ │ │ │ -
389 BOOL Identity;
│ │ │ │ -
390 SHORT ServerType;
│ │ │ │ -
391 DBINT ServerMaxLength;
│ │ │ │ -
392 DBCHAR ServerTypeDeclaration[256];
│ │ │ │ -
393} DBCOL2;
│ │ │ │ -
│ │ │ │ -
394/* end dbcolinfo stuff */
│ │ │ │ -
395
│ │ │ │ -
396
│ │ │ │ -
397
│ │ │ │ -
398/* a large list of options, DBTEXTSIZE is needed by sybtcl */
│ │ │ │ -
399#define DBPARSEONLY 0
│ │ │ │ -
400#define DBESTIMATE 1
│ │ │ │ -
401#define DBSHOWPLAN 2
│ │ │ │ -
402#define DBNOEXEC 3
│ │ │ │ -
403#define DBARITHIGNORE 4
│ │ │ │ -
404#define DBNOCOUNT 5
│ │ │ │ -
405#define DBARITHABORT 6
│ │ │ │ -
406#define DBTEXTLIMIT 7
│ │ │ │ -
407#define DBBROWSE 8
│ │ │ │ -
408#define DBOFFSET 9
│ │ │ │ -
409#define DBSTAT 10
│ │ │ │ -
410#define DBERRLVL 11
│ │ │ │ -
411#define DBCONFIRM 12
│ │ │ │ -
412#define DBSTORPROCID 13
│ │ │ │ -
413#define DBBUFFER 14
│ │ │ │ -
414#define DBNOAUTOFREE 15
│ │ │ │ -
415#define DBROWCOUNT 16
│ │ │ │ -
416#define DBTEXTSIZE 17
│ │ │ │ -
417#define DBNATLANG 18
│ │ │ │ -
418#define DBDATEFORMAT 19
│ │ │ │ -
419#define DBPRPAD 20
│ │ │ │ -
420#define DBPRCOLSEP 21
│ │ │ │ -
421#define DBPRLINELEN 22
│ │ │ │ -
422#define DBPRLINESEP 23
│ │ │ │ -
423#define DBLFCONVERT 24
│ │ │ │ -
424#define DBDATEFIRST 25
│ │ │ │ -
425#define DBCHAINXACTS 26
│ │ │ │ -
426#define DBFIPSFLAG 27
│ │ │ │ -
427#define DBISOLATION 28
│ │ │ │ -
428#define DBAUTH 29
│ │ │ │ -
429#define DBIDENTITY 30
│ │ │ │ -
430#define DBNOIDCOL 31
│ │ │ │ -
431#define DBDATESHORT 32
│ │ │ │ -
432#define DBCLIENTCURSORS 33
│ │ │ │ -
433#define DBSETTIME 34
│ │ │ │ -
434#define DBQUOTEDIDENT 35
│ │ │ │ -
435
│ │ │ │ -
436#define DBNUMOPTIONS 36
│ │ │ │ -
437
│ │ │ │ -
438#define DBPADOFF 0
│ │ │ │ -
439#define DBPADON 1
│ │ │ │ -
440
│ │ │ │ -
441#define OFF 0
│ │ │ │ -
442#define ON 1
│ │ │ │ -
443
│ │ │ │ -
444#define NOSUCHOPTION 2
│ │ │ │ +
336/* CS_CON_STATUS read-only property bit mask values */
│ │ │ │ +
337#define CS_CONSTAT_CONNECTED 0x01
│ │ │ │ +
338#define CS_CONSTAT_DEAD 0x02
│ │ │ │ +
339
│ │ │ │ +
340/*
│ │ │ │ +
341 * Code added for CURSOR support
│ │ │ │ +
342 * types accepted by ct_cursor
│ │ │ │ +
343 */
│ │ │ │ +
344#define CS_CURSOR_DECLARE 700
│ │ │ │ +
345#define CS_CURSOR_OPEN 701
│ │ │ │ +
346#define CS_CURSOR_ROWS 703
│ │ │ │ +
347#define CS_CURSOR_UPDATE 704
│ │ │ │ +
348#define CS_CURSOR_DELETE 705
│ │ │ │ +
349#define CS_CURSOR_CLOSE 706
│ │ │ │ +
350#define CS_CURSOR_DEALLOC 707
│ │ │ │ +
351#define CS_CURSOR_OPTION 725
│ │ │ │ +
352
│ │ │ │ +
353#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
│ │ │ │ +
354#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
│ │ │ │ +
355#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
│ │ │ │ +
356#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
│ │ │ │ +
357
│ │ │ │ +
358
│ │ │ │ +
359#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
│ │ │ │ +
360#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
│ │ │ │ +
361#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
│ │ │ │ +
362#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
│ │ │ │ +
363#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
│ │ │ │ +
364#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
│ │ │ │ +
365#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
│ │ │ │ +
366#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
│ │ │ │ +
367
│ │ │ │ +
368#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
│ │ │ │ +
369#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
│ │ │ │ +
370#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
│ │ │ │ +
371#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
│ │ │ │ +
372
│ │ │ │ +
373/* options accepted by ct_options() */
│ │ │ │ +
374#define CS_OPT_DATEFIRST 5001
│ │ │ │ +
375#define CS_OPT_TEXTSIZE 5002
│ │ │ │ +
376#define CS_OPT_STATS_TIME 5003
│ │ │ │ +
377#define CS_OPT_STATS_IO 5004
│ │ │ │ +
378#define CS_OPT_ROWCOUNT 5005
│ │ │ │ +
379#define CS_OPT_DATEFORMAT 5007
│ │ │ │ +
380#define CS_OPT_ISOLATION 5008
│ │ │ │ +
381#define CS_OPT_AUTHON 5009
│ │ │ │ +
382#define CS_OPT_SHOWPLAN 5013
│ │ │ │ +
383#define CS_OPT_NOEXEC 5014
│ │ │ │ +
384#define CS_OPT_ARITHIGNORE 5015
│ │ │ │ +
385#define CS_OPT_TRUNCIGNORE 5016
│ │ │ │ +
386#define CS_OPT_ARITHABORT 5017
│ │ │ │ +
387#define CS_OPT_PARSEONLY 5018
│ │ │ │ +
388#define CS_OPT_GETDATA 5020
│ │ │ │ +
389#define CS_OPT_NOCOUNT 5021
│ │ │ │ +
390#define CS_OPT_FORCEPLAN 5023
│ │ │ │ +
391#define CS_OPT_FORMATONLY 5024
│ │ │ │ +
392#define CS_OPT_CHAINXACTS 5025
│ │ │ │ +
393#define CS_OPT_CURCLOSEONXACT 5026
│ │ │ │ +
394#define CS_OPT_FIPSFLAG 5027
│ │ │ │ +
395#define CS_OPT_RESTREES 5028
│ │ │ │ +
396#define CS_OPT_IDENTITYON 5029
│ │ │ │ +
397#define CS_OPT_CURREAD 5030
│ │ │ │ +
398#define CS_OPT_CURWRITE 5031
│ │ │ │ +
399#define CS_OPT_IDENTITYOFF 5032
│ │ │ │ +
400#define CS_OPT_AUTHOFF 5033
│ │ │ │ +
401#define CS_OPT_ANSINULL 5034
│ │ │ │ +
402#define CS_OPT_QUOTED_IDENT 5035
│ │ │ │ +
403#define CS_OPT_ANSIPERM 5036
│ │ │ │ +
404#define CS_OPT_STR_RTRUNC 5037
│ │ │ │ +
405
│ │ │ │ +
406/* options accepted by ct_command() */
│ │ │ │ +
407enum ct_command_options
│ │ │ │ +
408{
│ │ │ │ +
409 CS_MORE = 16,
│ │ │ │ +
410#define CS_MORE CS_MORE
│ │ │ │ +
411 CS_END = 32,
│ │ │ │ +
412#define CS_END CS_END
│ │ │ │ +
413 CS_RECOMPILE = 188,
│ │ │ │ +
414#define CS_RECOMPILE CS_RECOMPILE
│ │ │ │ +
415 CS_NO_RECOMPILE,
│ │ │ │ +
416#define CS_NO_RECOMPILE CS_NO_RECOMPILE
│ │ │ │ +
417 CS_BULK_INIT,
│ │ │ │ +
418#define CS_BULK_INIT CS_BULK_INIT
│ │ │ │ +
419 CS_BULK_CONT,
│ │ │ │ +
420#define CS_BULK_CONT CS_BULK_CONT
│ │ │ │ +
421 CS_BULK_DATA,
│ │ │ │ +
422#define CS_BULK_DATA CS_BULK_DATA
│ │ │ │ +
423 CS_COLUMN_DATA
│ │ │ │ +
424#define CS_COLUMN_DATA CS_COLUMN_DATA
│ │ │ │ +
425};
│ │ │ │ +
426
│ │ │ │ +
427
│ │ │ │ +
428/*
│ │ │ │ +
429 * bind formats, should be mapped to TDS types
│ │ │ │ +
430 * can be a combination of bit
│ │ │ │ +
431 */
│ │ │ │ +
432enum
│ │ │ │ +
433{
│ │ │ │ +
434 CS_FMT_UNUSED = 0,
│ │ │ │ +
435#define CS_FMT_UNUSED CS_FMT_UNUSED
│ │ │ │ +
436 CS_FMT_NULLTERM = 1,
│ │ │ │ +
437#define CS_FMT_NULLTERM CS_FMT_NULLTERM
│ │ │ │ +
438 CS_FMT_PADNULL = 2,
│ │ │ │ +
439#define CS_FMT_PADBLANK CS_FMT_PADBLANK
│ │ │ │ +
440 CS_FMT_PADBLANK = 4,
│ │ │ │ +
441#define CS_FMT_PADNULL CS_FMT_PADNULL
│ │ │ │ +
442 CS_FMT_JUSTIFY_RT = 8
│ │ │ │ +
443#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
│ │ │ │ +
444};
│ │ │ │
445
│ │ │ │ -
446#define MAXOPTTEXT 32
│ │ │ │ -
447
│ │ │ │ -
448typedef struct tds_dblib_dbprocess DBPROCESS;
│ │ │ │ -
449
│ │ │ │ -
450/*
│ │ │ │ -
451 * Sybase & Microsoft use different names for the dbdaterec members.
│ │ │ │ -
452 * Keep these two structures physically identical in memory.
│ │ │ │ -
453 * dbdatecrack() casts one to the other for ease of implementation.
│ │ │ │ -
454 *
│ │ │ │ -
455 * Giving credit where credit is due, we can acknowledge that
│ │ │ │ -
456 * Microsoft chose the better names here, hands down. ("datedmonth"?!)
│ │ │ │ -
457 */
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
459{
│ │ │ │ -
460 DBINT year; /* 1753 - 9999 */
│ │ │ │ -
461 DBINT quarter; /* 1 - 4 */
│ │ │ │ -
462 DBINT month; /* 1 - 12 */
│ │ │ │ -
463 DBINT day; /* 1 - 31 */
│ │ │ │ -
464 DBINT dayofyear; /* 1 - 366 */
│ │ │ │ -
465 DBINT week; /* 1 - 54 (for leap years) */
│ │ │ │ -
466 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
│ │ │ │ -
467 DBINT hour; /* 0 - 23 */
│ │ │ │ -
468 DBINT minute; /* 0 - 59 */
│ │ │ │ -
469 DBINT second; /* 0 - 59 */
│ │ │ │ -
470 DBINT millisecond; /* 0 - 999 */
│ │ │ │ -
471 DBINT tzone; /* -840 - 840 */
│ │ │ │ -
472};
│ │ │ │ -
│ │ │ │ +
446/* callbacks */
│ │ │ │ +
447#define CS_COMPLETION_CB 1
│ │ │ │ +
448#define CS_SERVERMSG_CB 2
│ │ │ │ +
449#define CS_CLIENTMSG_CB 3
│ │ │ │ +
450#define CS_NOTIF_CB 4
│ │ │ │ +
451#define CS_ENCRYPT_CB 5
│ │ │ │ +
452#define CS_CHALLENGE_CB 6
│ │ │ │ +
453#define CS_DS_LOOKUP_CB 7
│ │ │ │ +
454#define CS_SECSESSION_CB 8
│ │ │ │ +
455#define CS_SIGNAL_CB 100
│ │ │ │ +
456#define CS_MESSAGE_CB 9119
│ │ │ │ +
457#define CS_INTERRUPT_CB 9400
│ │ │ │ +
458
│ │ │ │ +
459/* string types */
│ │ │ │ +
460#define CS_NULLTERM -9
│ │ │ │ +
461#define CS_WILDCARD -99
│ │ │ │ +
462#define CS_NO_LIMIT -9999
│ │ │ │ +
463#define CS_UNUSED -99999
│ │ │ │ +
464
│ │ │ │ +
465/* other */
│ │ │ │ +
466#define CS_GET 33
│ │ │ │ +
467#define CS_SET 34
│ │ │ │ +
468#define CS_CLEAR 35
│ │ │ │ +
469#define CS_INIT 36
│ │ │ │ +
470#define CS_STATUS 37
│ │ │ │ +
471#define CS_MSGLIMIT 38
│ │ │ │ +
472#define CS_SUPPORTED 40
│ │ │ │
473
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
475{
│ │ │ │ -
476 DBINT dateyear; /* 1900 and counting */
│ │ │ │ -
477 DBINT quarter; /* 0 - 3 (Microsoft only) */
│ │ │ │ -
478 DBINT datemonth; /* 0 - 11 */
│ │ │ │ -
479 DBINT datedmonth; /* 1 - 31 */
│ │ │ │ -
480 DBINT datedyear; /* 1 - 366 */
│ │ │ │ -
481 DBINT week; /* 1 - 54 (Microsoft only) */
│ │ │ │ -
482 DBINT datedweek; /* 0 - 6 */
│ │ │ │ -
483 DBINT datehour; /* 0 - 23 */
│ │ │ │ -
484 DBINT dateminute; /* 0 - 59 */
│ │ │ │ -
485 DBINT datesecond; /* 0 - 59 */
│ │ │ │ -
486 DBINT datemsecond; /* 0 - 999 */
│ │ │ │ -
487 DBINT datetzone; /* -840 - 840 */
│ │ │ │ -
488};
│ │ │ │ -
│ │ │ │ -
489
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
491{
│ │ │ │ -
492 DBINT year; /* 1753 - 9999 */
│ │ │ │ -
493 DBINT quarter; /* 1 - 4 */
│ │ │ │ -
494 DBINT month; /* 1 - 12 */
│ │ │ │ -
495 DBINT day; /* 1 - 31 */
│ │ │ │ -
496 DBINT dayofyear; /* 1 - 366 */
│ │ │ │ -
497 DBINT week; /* 1 - 54 (for leap years) */
│ │ │ │ -
498 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
│ │ │ │ -
499 DBINT hour; /* 0 - 23 */
│ │ │ │ -
500 DBINT minute; /* 0 - 59 */
│ │ │ │ -
501 DBINT second; /* 0 - 59 */
│ │ │ │ -
502 DBINT nanosecond; /* 0 - 999999999 */
│ │ │ │ -
503 DBINT tzone; /* 0 - 127 (Sybase only) */
│ │ │ │ -
504};
│ │ │ │ -
│ │ │ │ -
505
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
507{
│ │ │ │ -
508 DBINT dateyear; /* 1900 and counting */
│ │ │ │ -
509 DBINT quarter; /* 0 - 3 (Microsoft only) */
│ │ │ │ -
510 DBINT datemonth; /* 0 - 11 */
│ │ │ │ -
511 DBINT datedmonth; /* 1 - 31 */
│ │ │ │ -
512 DBINT datedyear; /* 1 - 366 */
│ │ │ │ -
513 DBINT week; /* 1 - 54 (Microsoft only) */
│ │ │ │ -
514 DBINT datedweek; /* 0 - 6 */
│ │ │ │ -
515 DBINT datehour; /* 0 - 23 */
│ │ │ │ -
516 DBINT dateminute; /* 0 - 59 */
│ │ │ │ -
517 DBINT datesecond; /* 0 - 59 */
│ │ │ │ -
518 DBINT datensecond; /* 0 - 999999999 */
│ │ │ │ -
519 DBINT datetzone; /* 0 - 127 */
│ │ │ │ -
520};
│ │ │ │ -
│ │ │ │ -
521
│ │ │ │ +
474#define CS_CMD_DONE 4046
│ │ │ │ +
475#define CS_CMD_SUCCEED 4047
│ │ │ │ +
476#define CS_CMD_FAIL 4048
│ │ │ │ +
477
│ │ │ │ +
478/* commands */
│ │ │ │ +
479#define CS_LANG_CMD 148
│ │ │ │ +
480#define CS_RPC_CMD 149
│ │ │ │ +
481#define CS_SEND_DATA_CMD 151
│ │ │ │ +
482#define CS_SEND_BULK_CMD 153
│ │ │ │ +
483
│ │ │ │ +
484#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
485#define CS_VERSION_100 112
│ │ │ │ +
486#define CS_VERSION_110 1100
│ │ │ │ +
487#define CS_VERSION_120 1100
│ │ │ │ +
488#define CS_VERSION_125 12500
│ │ │ │ +
489#define CS_VERSION_150 15000
│ │ │ │ +
490#else
│ │ │ │ +
491#define CS_VERSION_100 113
│ │ │ │ +
492#define CS_VERSION_110 1101
│ │ │ │ +
493#define CS_VERSION_120 CS_VERSION_110
│ │ │ │ +
494#define CS_VERSION_125 12501
│ │ │ │ +
495#define CS_VERSION_150 15001
│ │ │ │ +
496#define CS_VERSION_155 15501
│ │ │ │ +
497#define CS_VERSION_157 15701
│ │ │ │ +
498#define CS_VERSION_160 16001
│ │ │ │ +
499#endif
│ │ │ │ +
500
│ │ │ │ +
501#define BLK_VERSION_100 CS_VERSION_100
│ │ │ │ +
502#define BLK_VERSION_110 CS_VERSION_110
│ │ │ │ +
503#define BLK_VERSION_120 CS_VERSION_120
│ │ │ │ +
504#define BLK_VERSION_125 CS_VERSION_125
│ │ │ │ +
505#define BLK_VERSION_150 CS_VERSION_150
│ │ │ │ +
506#ifndef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
507#define BLK_VERSION_155 CS_VERSION_155
│ │ │ │ +
508#define BLK_VERSION_157 CS_VERSION_157
│ │ │ │ +
509#define BLK_VERSION_160 CS_VERSION_160
│ │ │ │ +
510#endif
│ │ │ │ +
511
│ │ │ │ +
512#define CS_FORCE_EXIT 300
│ │ │ │ +
513#define CS_FORCE_CLOSE 301
│ │ │ │ +
514
│ │ │ │ +
515#define CS_SYNC_IO 8111
│ │ │ │ +
516#define CS_ASYNC_IO 8112
│ │ │ │ +
517#define CS_DEFER_IO 8113
│ │ │ │ +
518
│ │ │ │ +
519#define CS_CANCEL_CURRENT 6000
│ │ │ │ +
520#define CS_CANCEL_ALL 6001
│ │ │ │ +
521#define CS_CANCEL_ATTN 6002
│ │ │ │
522
│ │ │ │ -
523#ifdef MSDBLIB
│ │ │ │ - │ │ │ │ - │ │ │ │ -
526#else
│ │ │ │ -
527typedef struct tds_sybase_dbdaterec DBDATEREC;
│ │ │ │ -
528typedef struct tds_sybase_dbdaterec2 DBDATEREC2;
│ │ │ │ -
529#endif
│ │ │ │ -
530
│ │ │ │ -
531typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
│ │ │ │ -
532
│ │ │ │ -
533typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname,
│ │ │ │ -
534 char *proc, int line);
│ │ │ │ -
535
│ │ │ │ -
536/* dbpoll() result codes, sybtcl needs DBRESULT */
│ │ │ │ -
537#define DBRESULT 1
│ │ │ │ -
538#define DBNOTIFICATION 2
│ │ │ │ -
539#define DBTIMEOUT 3
│ │ │ │ -
540#define DBINTERRUPT 4
│ │ │ │ -
541
│ │ │ │ -
542/* more sybtcl needs: */
│ │ │ │ -
543#define DBTXTSLEN 8
│ │ │ │ -
544
│ │ │ │ -
545/* bind types */
│ │ │ │ -
546#define CHARBIND 0
│ │ │ │ -
547#define STRINGBIND 1
│ │ │ │ -
548#define NTBSTRINGBIND 2
│ │ │ │ -
549#define VARYCHARBIND 3
│ │ │ │ -
550#define VARYBINBIND 4
│ │ │ │ -
551#define TINYBIND 6
│ │ │ │ -
552#define SMALLBIND 7
│ │ │ │ -
553#define INTBIND 8
│ │ │ │ -
554#define FLT8BIND 9
│ │ │ │ -
555#define REALBIND 10
│ │ │ │ -
556#define DATETIMEBIND 11
│ │ │ │ -
557#define SMALLDATETIMEBIND 12
│ │ │ │ -
558#define MONEYBIND 13
│ │ │ │ -
559#define SMALLMONEYBIND 14
│ │ │ │ -
560#define BINARYBIND 15
│ │ │ │ -
561#define BITBIND 16
│ │ │ │ -
562#define NUMERICBIND 17
│ │ │ │ -
563#define DECIMALBIND 18
│ │ │ │ -
564#define SRCNUMERICBIND 19
│ │ │ │ -
565#define SRCDECIMALBIND 20
│ │ │ │ -
566#define DATEBIND 21
│ │ │ │ -
567#define TIMEBIND 22
│ │ │ │ -
568#define BIGDATETIMEBIND 23
│ │ │ │ -
569#define BIGTIMEBIND 24
│ │ │ │ -
570#define BIGINTBIND 30
│ │ │ │ -
571#define DATETIME2BIND 31
│ │ │ │ -
572#define MAXBINDTYPES 32 /* keep last */
│ │ │ │ -
573
│ │ │ │ -
574#define DBPRCOLSEP 21
│ │ │ │ -
575#define DBPRLINELEN 22
│ │ │ │ -
576#define DBRPCNORETURN 0
│ │ │ │ -
577#define DBRPCRETURN 1
│ │ │ │ -
578#define DBRPCDEFAULT 2
│ │ │ │ -
579
│ │ │ │ -
580#define REG_ROW -1
│ │ │ │ -
581#define MORE_ROWS -1
│ │ │ │ -
582#define NO_MORE_ROWS -2
│ │ │ │ -
583#define BUF_FULL -3
│ │ │ │ -
584#define NO_MORE_RESULTS 2
│ │ │ │ -
585#define SUCCEED 1
│ │ │ │ -
586#define FAIL 0
│ │ │ │ -
587
│ │ │ │ -
588#define DB_IN 1
│ │ │ │ -
589#define DB_OUT 2
│ │ │ │ -
590#define DB_QUERYOUT 3
│ │ │ │ -
591
│ │ │ │ -
592#define DBSINGLE 0
│ │ │ │ -
593#define DBDOUBLE 1
│ │ │ │ -
594#define DBBOTH 2
│ │ │ │ -
595
│ │ │ │ -
596/* remote procedure call (rpc) options */
│ │ │ │ -
597#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)
│ │ │ │ -
598#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)
│ │ │ │ -
599#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)
│ │ │ │ -
600
│ │ │ │ -
601#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ -
602DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);
│ │ │ │ -
603
│ │ │ │ -
604DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);
│ │ │ │ -
605
│ │ │ │ -
606RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, BYTE * values);
│ │ │ │ -
607RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);
│ │ │ │ -
608void dbcursorclose(DBCURSOR * hc);
│ │ │ │ -
609RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT * coltype, DBINT * collen, DBINT * usertype);
│ │ │ │ -
610RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);
│ │ │ │ -
611RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);
│ │ │ │ -
612DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, SHORT concuropt, USHORT nrows, DBINT * pstatus);
│ │ │ │ -
613
│ │ │ │ -
614int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);
│ │ │ │ -
615RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);
│ │ │ │ -
616RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int value);
│ │ │ │ -
617int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * datetime);
│ │ │ │ -
618char *dateorder(DBPROCESS * dbprocess, char *language);
│ │ │ │ -
619DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * datetime);
│ │ │ │ -
620RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);
│ │ │ │ -
621char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);
│ │ │ │ -
622
│ │ │ │ -
623int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);
│ │ │ │ -
624
│ │ │ │ -
625char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);
│ │ │ │ -
626void dbfreequal(char *qualptr);
│ │ │ │ -
627
│ │ │ │ -
628DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);
│ │ │ │ -
629RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);
│ │ │ │ -
630
│ │ │ │ -
631RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);
│ │ │ │ -
632
│ │ │ │ -
633RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * quotient);
│ │ │ │ -
634RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * prod);
│ │ │ │ -
635RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * sum);
│ │ │ │ -
636RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * quotient);
│ │ │ │ -
637RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int *remainder);
│ │ │ │ -
638RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * negative);
│ │ │ │ -
639RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, DBBOOL * zero);
│ │ │ │ -
640RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * prod);
│ │ │ │ -
641RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, DBBOOL * zero);
│ │ │ │ -
642RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int addend);
│ │ │ │ -
643
│ │ │ │ -
644
│ │ │ │ -
645RETCODE dbnpcreate(DBPROCESS * dbprocess);
│ │ │ │ -
646RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, DBSMALLINT namelen);
│ │ │ │ -
647
│ │ │ │ -
648int DBNUMORDERS(DBPROCESS * dbprocess);
│ │ │ │ -
649
│ │ │ │ -
650RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_dbproc, int *return_reason);
│ │ │ │ -
651int dbordercol(DBPROCESS * dbprocess, int order);
│ │ │ │ -
652
│ │ │ │ -
653RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
│ │ │ │ -
654RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);
│ │ │ │ -
655RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, INTFUNCPTR handler);
│ │ │ │ -
656RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT namelen);
│ │ │ │ -
657RETCODE dbreglist(DBPROCESS * dbproc);
│ │ │ │ -
658RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
│ │ │ │ -
659RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT datalen, BYTE * data);
│ │ │ │ -
660RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, DBUSMALLINT options);
│ │ │ │ -
661RETCODE dbregwatchlist(DBPROCESS * dbprocess);
│ │ │ │ -
662
│ │ │ │ -
663void dbrpwclr(LOGINREC * login);
│ │ │ │ -
664RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int pwlen);
│ │ │ │ -
665
│ │ │ │ -
666DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * buf);
│ │ │ │ -
667RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, DBINT size, BYTE * buf);
│ │ │ │ -
668
│ │ │ │ -
669RETCODE dbsetdeflang(char *language);
│ │ │ │ -
670
│ │ │ │ -
671int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
│ │ │ │ -
672int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
│ │ │ │ -
673
│ │ │ │ -
674DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);
│ │ │ │ -
675int dbtabcount(DBPROCESS * dbprocess);
│ │ │ │ -
676char *dbtabname(DBPROCESS * dbprocess, int tabnum);
│ │ │ │ -
677char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);
│ │ │ │ -
678
│ │ │ │ -
679RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);
│ │ │ │ -
680RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);
│ │ │ │ -
681
│ │ │ │ -
682RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);
│ │ │ │ -
683RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);
│ │ │ │ -
684
│ │ │ │ -
685int dbtsnewlen(DBPROCESS * dbprocess);
│ │ │ │ -
686DBBINARY *dbtsnewval(DBPROCESS * dbprocess);
│ │ │ │ -
687RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int tabnum, char *tabname);
│ │ │ │ -
688
│ │ │ │ -
689RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * clt_todisp);
│ │ │ │ -
690int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int destlen, DBXLATE * xlt, int *srcbytes_used,
│ │ │ │ -
691 DBBOOL srcend, int status);
│ │ │ │ -
692
│ │ │ │ -
693RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);
│ │ │ │ -
694RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);
│ │ │ │ -
695
│ │ │ │ -
696void build_xact_string(char *xact_name, char *service_name, DBINT commid, char *result);
│ │ │ │ -
697RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);
│ │ │ │ -
698RETCODE abort_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ -
699void close_commit(DBPROCESS * connect);
│ │ │ │ -
700RETCODE commit_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ -
701DBPROCESS *open_commit(LOGINREC * login, char *servername);
│ │ │ │ -
702RETCODE scan_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ -
703DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_name, int site_count);
│ │ │ │ -
704DBINT stat_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ -
705
│ │ │ │ -
706#endif /* define unimplemented */
│ │ │ │ -
707
│ │ │ │ -
708BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
709DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
710RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr);
│ │ │ │ -
711RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr,
│ │ │ │ -
712 DBTYPEINFO * typeinfo);
│ │ │ │ -
713int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
714DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
715int dbaltop(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
716int dbalttype(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
717DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
718RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT * indicator);
│ │ │ │ -
719RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, BYTE * varaddr);
│ │ │ │ -
720RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);
│ │ │ │ -
721int dbbufsize(DBPROCESS * dbprocess);
│ │ │ │ -
722BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);
│ │ │ │ -
723RETCODE dbcancel(DBPROCESS * dbproc);
│ │ │ │ -
724RETCODE dbcanquery(DBPROCESS * dbproc);
│ │ │ │ -
725char *dbchange(DBPROCESS * dbprocess);
│ │ │ │ -
726DBBOOL dbcharsetconv(DBPROCESS * dbprocess);
│ │ │ │ -
727void dbclose(DBPROCESS * dbproc);
│ │ │ │ -
728void dbclrbuf(DBPROCESS * dbproc, DBINT n);
│ │ │ │ -
729RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);
│ │ │ │ -
730RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);
│ │ │ │ -
731RETCODE dbcmdrow(DBPROCESS * dbproc);
│ │ │ │ -
732
│ │ │ │ -
733#define DBCMDROW(x) dbcmdrow((x))
│ │ │ │ -
734RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );
│ │ │ │ -
735RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol);
│ │ │ │ -
736DBINT dbcollen(DBPROCESS * dbproc, int column);
│ │ │ │ -
737char *dbcolname(DBPROCESS * dbproc, int column);
│ │ │ │ -
738const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ -
739char *dbcolsource(DBPROCESS * dbproc, int colnum);
│ │ │ │ -
740int dbcoltype(DBPROCESS * dbproc, int column);
│ │ │ │ -
741DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);
│ │ │ │ -
742DBINT dbcolutype(DBPROCESS * dbprocess, int column);
│ │ │ │ -
743DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen);
│ │ │ │ -
744DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen,
│ │ │ │ -
745 DBTYPEINFO * typeinfo);
│ │ │ │ -
746BOOL dbiscount(DBPROCESS * dbproc);
│ │ │ │ -
747DBINT dbcount(DBPROCESS * dbproc);
│ │ │ │ -
748
│ │ │ │ -
749#define DBCOUNT(x) dbcount((x))
│ │ │ │ -
750int dbcurcmd(DBPROCESS * dbproc);
│ │ │ │ -
751
│ │ │ │ -
752#define DBCURCMD(x) dbcurcmd((x))
│ │ │ │ -
753DBINT dbcurrow(DBPROCESS * dbproc);
│ │ │ │ -
754
│ │ │ │ -
755#define DBCURROW(x) dbcurrow((x))
│ │ │ │ -
756BYTE *dbdata(DBPROCESS * dbproc, int column);
│ │ │ │ -
757int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);
│ │ │ │ -
758RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);
│ │ │ │ -
759RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const void *data);
│ │ │ │ -
760DBINT dbdatlen(DBPROCESS * dbproc, int column);
│ │ │ │ -
761DBBOOL dbdead(DBPROCESS * dbproc);
│ │ │ │ -
762
│ │ │ │ -
763#define DBDEAD(x) dbdead((x))
│ │ │ │ -
764EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);
│ │ │ │ -
765void dbexit(void);
│ │ │ │ -
766RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);
│ │ │ │ -
767DBINT dbfirstrow(DBPROCESS * dbproc);
│ │ │ │ -
768
│ │ │ │ -
769#define DBFIRSTROW(x) dbfirstrow((x))
│ │ │ │ -
770void dbfreebuf(DBPROCESS * dbproc);
│ │ │ │ -
771char *dbgetchar(DBPROCESS * dbprocess, int n);
│ │ │ │ -
772char *dbgetcharset(DBPROCESS * dbprocess);
│ │ │ │ -
773int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);
│ │ │ │ -
774int dbgetmaxprocs(void);
│ │ │ │ -
775char *dbgetnatlanf(DBPROCESS * dbprocess);
│ │ │ │ -
776int dbgetpacket(DBPROCESS * dbproc);
│ │ │ │ -
777RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);
│ │ │ │ -
778int dbgettime(void);
│ │ │ │ -
779#define DBGETTIME dbgettime
│ │ │ │ -
780BYTE *dbgetuserdata(DBPROCESS * dbproc);
│ │ │ │ -
781DBBOOL dbhasretstat(DBPROCESS * dbproc);
│ │ │ │ -
782RETCODE dbinit(void);
│ │ │ │ -
783int dbiordesc(DBPROCESS * dbproc);
│ │ │ │ -
784
│ │ │ │ -
785#define DBIORDESC(x) dbiordesc((x))
│ │ │ │ -
786int dbiowdesc(DBPROCESS * dbproc);
│ │ │ │ -
787
│ │ │ │ -
788#define DBIOWDESC(x) dbiowdesc((x))
│ │ │ │ -
789DBBOOL dbisavail(DBPROCESS * dbprocess);
│ │ │ │ -
790
│ │ │ │ -
791#define DBISAVAIL(x) dbisavail((x))
│ │ │ │ -
792DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);
│ │ │ │ -
793DBINT dblastrow(DBPROCESS * dbproc);
│ │ │ │ -
794
│ │ │ │ -
795#define DBLASTROW(x) dblastrow((x))
│ │ │ │ -
796LOGINREC *dblogin(void);
│ │ │ │ -
797void dbloginfree(LOGINREC * login);
│ │ │ │ +
523#define CS_ROW_COUNT 800
│ │ │ │ +
524#define CS_CMD_NUMBER 801
│ │ │ │ +
525#define CS_NUM_COMPUTES 802
│ │ │ │ +
526#define CS_NUMDATA 803
│ │ │ │ +
527#define CS_NUMORDERCOLS 805
│ │ │ │ +
528#define CS_MSGTYPE 806
│ │ │ │ +
529#define CS_BROWSE_INFO 807
│ │ │ │ +
530#define CS_TRANS_STATE 808
│ │ │ │ +
531
│ │ │ │ +
532#define CS_TRAN_UNDEFINED 0
│ │ │ │ +
533#define CS_TRAN_IN_PROGRESS 1
│ │ │ │ +
534#define CS_TRAN_COMPLETED 2
│ │ │ │ +
535#define CS_TRAN_FAIL 3
│ │ │ │ +
536#define CS_TRAN_STMT_FAIL 4
│ │ │ │ +
537
│ │ │ │ +
538#define CS_COMP_OP 5350
│ │ │ │ +
539#define CS_COMP_ID 5351
│ │ │ │ +
540#define CS_COMP_COLID 5352
│ │ │ │ +
541#define CS_COMP_BYLIST 5353
│ │ │ │ +
542#define CS_BYLIST_LEN 5354
│ │ │ │ +
543
│ │ │ │ +
544#define CS_NO_COUNT -1
│ │ │ │ +
545
│ │ │ │ +
546#define CS_OP_SUM 5370
│ │ │ │ +
547#define CS_OP_AVG 5371
│ │ │ │ +
548#define CS_OP_COUNT 5372
│ │ │ │ +
549#define CS_OP_MIN 5373
│ │ │ │ +
550#define CS_OP_MAX 5374
│ │ │ │ +
551
│ │ │ │ +
552#define CS_CAP_REQUEST 1
│ │ │ │ +
553#define CS_CAP_RESPONSE 2
│ │ │ │ +
554
│ │ │ │ +
555#define CS_PREPARE 717
│ │ │ │ +
556#define CS_EXECUTE 718
│ │ │ │ +
557#define CS_DESCRIBE_INPUT 720
│ │ │ │ +
558#define CS_DESCRIBE_OUTPUT 721
│ │ │ │ +
559
│ │ │ │ +
560#define CS_DEALLOC 711
│ │ │ │ +
561
│ │ │ │ +
562#define CS_LC_ALL 7
│ │ │ │ +
563#define CS_SYB_LANG 8
│ │ │ │ +
564#define CS_SYB_CHARSET 9
│ │ │ │ +
565#define CS_SYB_SORTORDER 10
│ │ │ │ +
566#define CS_SYB_COLLATE CS_SYB_SORTORDER
│ │ │ │ +
567#define CS_SYB_LANG_CHARSET 11
│ │ │ │ +
568
│ │ │ │ +
569#define CS_BLK_IN 1
│ │ │ │ +
570#define CS_BLK_OUT 2
│ │ │ │ +
571
│ │ │ │ +
572#define CS_BLK_BATCH 1
│ │ │ │ +
573#define CS_BLK_ALL 2
│ │ │ │ +
574#define CS_BLK_CANCEL 3
│ │ │ │ +
575
│ │ │ │ +
576/* to do support these */
│ │ │ │ +
577
│ │ │ │ +
578#define CS_BLK_ARRAY_MAXLEN 0x1000
│ │ │ │ +
579#define CS_DEF_PREC 18
│ │ │ │ +
580
│ │ │ │ +
581/* Error Severities */
│ │ │ │ +
582#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ +
583#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ +
584#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ +
585#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ +
586#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ +
587#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ +
588#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ +
589#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ +
590
│ │ │ │ +
591/* result_types */
│ │ │ │ +
592#define CS_ROW_RESULT 4040
│ │ │ │ +
593#define CS_CURSOR_RESULT 4041
│ │ │ │ +
594#define CS_PARAM_RESULT 4042
│ │ │ │ +
595#define CS_STATUS_RESULT 4043
│ │ │ │ +
596#define CS_MSG_RESULT 4044
│ │ │ │ +
597#define CS_COMPUTE_RESULT 4045
│ │ │ │ +
598#define CS_ROWFMT_RESULT 4049
│ │ │ │ +
599#define CS_COMPUTEFMT_RESULT 4050
│ │ │ │ +
600#define CS_DESCRIBE_RESULT 4051
│ │ │ │ +
601
│ │ │ │ +
602/* bind types */
│ │ │ │ +
603#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
│ │ │ │ +
604#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ +
605#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ +
606#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ +
607#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ +
608#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ +
609#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ +
610#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ +
611#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ +
612#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
│ │ │ │ +
613#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
│ │ │ │ +
614#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
│ │ │ │ +
615#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
│ │ │ │ +
616#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
│ │ │ │ +
617#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
│ │ │ │ +
618#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
│ │ │ │ +
619#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
│ │ │ │ +
620#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
│ │ │ │ +
621#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
│ │ │ │ +
622#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
│ │ │ │ +
623#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
│ │ │ │ +
624#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
│ │ │ │ +
625#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
│ │ │ │ +
626#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
│ │ │ │ +
627#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
│ │ │ │ +
628#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
│ │ │ │ +
629#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
│ │ │ │ +
630#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
│ │ │ │ +
631#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
│ │ │ │ +
632#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
│ │ │ │ +
633#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
│ │ │ │ +
634#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
│ │ │ │ +
635#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
│ │ │ │ +
636#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
│ │ │ │ +
637#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
│ │ │ │ +
638#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
│ │ │ │ +
639#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
│ │ │ │ +
640#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
│ │ │ │ +
641#define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37)
│ │ │ │ +
642#define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38)
│ │ │ │ +
643#define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39)
│ │ │ │ +
644#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
│ │ │ │ +
645
│ │ │ │ +
646#define CS_MIN_SYBTYPE CS_CHAR_TYPE
│ │ │ │ +
647#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
│ │ │ │ +
648
│ │ │ │ +
649#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
│ │ │ │ +
650/* cs_dt_info type values */
│ │ │ │ +
651enum
│ │ │ │ +
652{
│ │ │ │ +
653 CS_MONTH = 7340,
│ │ │ │ +
654#define CS_MONTH CS_MONTH
│ │ │ │ +
655 CS_SHORTMONTH,
│ │ │ │ +
656#define CS_SHORTMONTH CS_SHORTMONTH
│ │ │ │ +
657 CS_DAYNAME,
│ │ │ │ +
658#define CS_DAYNAME CS_DAYNAME
│ │ │ │ +
659 CS_DATEORDER,
│ │ │ │ +
660#define CS_DATEORDER CS_DATEORDER
│ │ │ │ +
661 CS_12HOUR,
│ │ │ │ +
662#define CS_12HOUR CS_12HOUR
│ │ │ │ +
663 CS_DT_CONVFMT
│ │ │ │ +
664#define CS_DT_CONVFMT CS_DT_CONVFMT
│ │ │ │ +
665};
│ │ │ │ +
666
│ │ │ │ +
667/* DT_CONVFMT types */
│ │ │ │ +
668enum
│ │ │ │ +
669{
│ │ │ │ +
670 CS_DATES_SHORT = 0,
│ │ │ │ +
671#define CS_DATES_SHORT CS_DATES_SHORT
│ │ │ │ +
672 CS_DATES_MDY1,
│ │ │ │ +
673#define CS_DATES_MDY1 CS_DATES_MDY1
│ │ │ │ +
674 CS_DATES_YMD1,
│ │ │ │ +
675#define CS_DATES_YMD1 CS_DATES_YMD1
│ │ │ │ +
676 CS_DATES_DMY1,
│ │ │ │ +
677#define CS_DATES_DMY1 CS_DATES_DMY1
│ │ │ │ +
678 CS_DATES_DMY2,
│ │ │ │ +
679#define CS_DATES_DMY2 CS_DATES_DMY2
│ │ │ │ +
680 CS_DATES_DMY3,
│ │ │ │ +
681#define CS_DATES_DMY3 CS_DATES_DMY3
│ │ │ │ +
682 CS_DATES_DMY4,
│ │ │ │ +
683#define CS_DATES_DMY4 CS_DATES_DMY4
│ │ │ │ +
684 CS_DATES_MDY2,
│ │ │ │ +
685#define CS_DATES_MDY2 CS_DATES_MDY2
│ │ │ │ +
686 CS_DATES_HMS,
│ │ │ │ +
687#define CS_DATES_HMS CS_DATES_HMS
│ │ │ │ +
688 CS_DATES_LONG,
│ │ │ │ +
689#define CS_DATES_LONG CS_DATES_LONG
│ │ │ │ +
690 CS_DATES_MDY3,
│ │ │ │ +
691#define CS_DATES_MDY3 CS_DATES_MDY3
│ │ │ │ +
692 CS_DATES_YMD2,
│ │ │ │ +
693#define CS_DATES_YMD2 CS_DATES_YMD2
│ │ │ │ +
694 CS_DATES_YMD3,
│ │ │ │ +
695#define CS_DATES_YMD3 CS_DATES_YMD3
│ │ │ │ +
696 CS_DATES_YDM1,
│ │ │ │ +
697#define CS_DATES_YDM1 CS_DATES_YDM1
│ │ │ │ +
698 CS_DATES_MYD1,
│ │ │ │ +
699#define CS_DATES_MYD1 CS_DATES_MYD1
│ │ │ │ +
700 CS_DATES_DYM1,
│ │ │ │ +
701#define CS_DATES_DYM1 CS_DATES_DYM1
│ │ │ │ +
702 CS_DATES_MDY1_YYYY = 101,
│ │ │ │ +
703#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
│ │ │ │ +
704 CS_DATES_YMD1_YYYY,
│ │ │ │ +
705#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
│ │ │ │ +
706 CS_DATES_DMY1_YYYY,
│ │ │ │ +
707#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
│ │ │ │ +
708 CS_DATES_DMY2_YYYY,
│ │ │ │ +
709#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
│ │ │ │ +
710 CS_DATES_DMY3_YYYY,
│ │ │ │ +
711#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
│ │ │ │ +
712 CS_DATES_DMY4_YYYY,
│ │ │ │ +
713#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
│ │ │ │ +
714 CS_DATES_MDY2_YYYY,
│ │ │ │ +
715#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
│ │ │ │ +
716 CS_DATES_MDY3_YYYY = 110,
│ │ │ │ +
717#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
│ │ │ │ +
718 CS_DATES_YMD2_YYYY,
│ │ │ │ +
719#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
│ │ │ │ +
720 CS_DATES_YMD3_YYYY
│ │ │ │ +
721#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
│ │ │ │ +
722};
│ │ │ │ +
723
│ │ │ │ +
724typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
│ │ │ │ +
725 CS_INT * destlen);
│ │ │ │ +
726
│ │ │ │ +
│ │ │ │ +
727typedef struct _cs_objname
│ │ │ │ +
728{
│ │ │ │ +
729 CS_BOOL thinkexists;
│ │ │ │ +
730 CS_INT object_type;
│ │ │ │ +
731#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
732 CS_CHAR last_name[CS_MAX_NAME];
│ │ │ │ +
733 CS_INT lnlen;
│ │ │ │ +
734 CS_CHAR first_name[CS_MAX_NAME];
│ │ │ │ +
735#else
│ │ │ │ +
736 CS_CHAR last_name[CS_MAX_CHAR];
│ │ │ │ +
737 CS_INT lnlen;
│ │ │ │ +
738 CS_CHAR first_name[CS_MAX_CHAR];
│ │ │ │ +
739#endif
│ │ │ │ +
740 CS_INT fnlen;
│ │ │ │ +
741 CS_VOID *scope;
│ │ │ │ +
742 CS_INT scopelen;
│ │ │ │ +
743 CS_VOID *thread;
│ │ │ │ +
744 CS_INT threadlen;
│ │ │ │ +
745} CS_OBJNAME;
│ │ │ │ +
│ │ │ │ +
746
│ │ │ │ +
│ │ │ │ +
747typedef struct _cs_objdata
│ │ │ │ +
748{
│ │ │ │ +
749 CS_BOOL actuallyexists;
│ │ │ │ +
750 CS_CONNECTION *connection;
│ │ │ │ +
751 CS_COMMAND *command;
│ │ │ │ +
752 CS_VOID *buffer;
│ │ │ │ +
753 CS_INT buflen;
│ │ │ │ +
754} CS_OBJDATA;
│ │ │ │ +
│ │ │ │ +
755
│ │ │ │ +
756/* Eventually, these should be in terms of TDS values */
│ │ │ │ +
757enum
│ │ │ │ +
758{
│ │ │ │ +
759 CS_OPT_MONDAY = 1,
│ │ │ │ +
760 CS_OPT_TUESDAY,
│ │ │ │ +
761 CS_OPT_WEDNESDAY,
│ │ │ │ +
762 CS_OPT_THURSDAY,
│ │ │ │ +
763 CS_OPT_FRIDAY,
│ │ │ │ +
764 CS_OPT_SATURDAY,
│ │ │ │ +
765 CS_OPT_SUNDAY
│ │ │ │ +
766};
│ │ │ │ +
767enum
│ │ │ │ +
768{
│ │ │ │ +
769 CS_OPT_FMTMDY = 1,
│ │ │ │ +
770 CS_OPT_FMTDMY,
│ │ │ │ +
771 CS_OPT_FMTYMD,
│ │ │ │ +
772 CS_OPT_FMTYDM,
│ │ │ │ +
773 CS_OPT_FMTMYD,
│ │ │ │ +
774 CS_OPT_FMTDYM
│ │ │ │ +
775};
│ │ │ │ +
776enum
│ │ │ │ +
777{
│ │ │ │ +
778 CS_OPT_LEVEL0 = 0,
│ │ │ │ +
779 CS_OPT_LEVEL1,
│ │ │ │ +
780 CS_OPT_LEVEL2,
│ │ │ │ +
781 CS_OPT_LEVEL3
│ │ │ │ +
782};
│ │ │ │ +
783
│ │ │ │ +
784#define CS_FALSE 0
│ │ │ │ +
785#define CS_TRUE 1
│ │ │ │ +
786
│ │ │ │ +
787#define SRV_PROC CS_VOID
│ │ │ │ +
788
│ │ │ │ +
789/* constants required for ct_diag (not jet implemented) */
│ │ │ │ +
790#define CS_CLIENTMSG_TYPE 4700
│ │ │ │ +
791#define CS_SERVERMSG_TYPE 4701
│ │ │ │ +
792#define CS_ALLMSG_TYPE 4702
│ │ │ │ +
793
│ │ │ │ +
794/* CS_INTERRUPT_CB return values */
│ │ │ │ +
795#define CS_INT_CONTINUE 1
│ │ │ │ +
796#define CS_INT_CANCEL 2
│ │ │ │ +
797#define CS_INT_TIMEOUT 3
│ │ │ │
798
│ │ │ │ -
799int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);
│ │ │ │ -
800int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);
│ │ │ │ -
801
│ │ │ │ -
802RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * sum);
│ │ │ │ -
803RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);
│ │ │ │ -
804RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);
│ │ │ │ -
805RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ -
806RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ -
807RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);
│ │ │ │ -
808RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
│ │ │ │ -
809RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * diff);
│ │ │ │ -
810RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * diff);
│ │ │ │ -
811
│ │ │ │ -
812RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);
│ │ │ │ -
813RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
│ │ │ │ -
814
│ │ │ │ -
815RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);
│ │ │ │ -
816RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ +
799CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
│ │ │ │ +
800 CS_INT * resultlen);
│ │ │ │ +
801CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
│ │ │ │ +
802CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
│ │ │ │ +
803CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
│ │ │ │ +
804CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
805CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
│ │ │ │ +
806 CS_CHAR * formats, CS_INT formatlen, ...);
│ │ │ │ +
807#undef cs_dt_crack
│ │ │ │ +
808CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
│ │ │ │ +
809CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
│ │ │ │ +
810#define cs_dt_crack cs_dt_crack_v2
│ │ │ │ +
811CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
│ │ │ │ +
812CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
│ │ │ │ +
813CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
│ │ │ │ +
814 CS_INT * outlen);
│ │ │ │ +
815CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
│ │ │ │ +
816 CS_INT buflen, CS_INT * outlen);
│ │ │ │
817
│ │ │ │ -
818const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, DBBOOL shortform);
│ │ │ │ -
819RETCODE dbmorecmds(DBPROCESS * dbproc);
│ │ │ │ -
820
│ │ │ │ -
821#define DBMORECMDS(x) dbmorecmds((x))
│ │ │ │ -
822RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);
│ │ │ │ -
823MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);
│ │ │ │ -
824char *dbname(DBPROCESS * dbproc);
│ │ │ │ -
825STATUS dbnextrow(DBPROCESS * dbproc);
│ │ │ │ -
826RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);
│ │ │ │ -
827int dbnumalts(DBPROCESS * dbproc, int computeid);
│ │ │ │ -
828int dbnumcols(DBPROCESS * dbproc);
│ │ │ │ -
829int dbnumcompute(DBPROCESS * dbprocess);
│ │ │ │ -
830int dbnumrets(DBPROCESS * dbproc);
│ │ │ │ -
831DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);
│ │ │ │ -
832DBPROCESS *dbopen(LOGINREC * login, const char *server);
│ │ │ │ +
818CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
│ │ │ │ +
819CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
│ │ │ │ +
820CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
│ │ │ │ +
821CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
│ │ │ │ +
822CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
│ │ │ │ +
823 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
│ │ │ │ +
824CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
│ │ │ │ +
825CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
│ │ │ │ +
826CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
│ │ │ │ +
827CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
│ │ │ │ +
828 CS_INT * result);
│ │ │ │ +
829CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
│ │ │ │ +
830CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
│ │ │ │ +
831
│ │ │ │ +
832const char * cs_prretcode(int retcode);
│ │ │ │
833
│ │ │ │ -
834/* pivot functions */
│ │ │ │ -
835struct col_t;
│ │ │ │ -
836void dbpivot_count (struct col_t *output, const struct col_t *input);
│ │ │ │ -
837void dbpivot_sum (struct col_t *output, const struct col_t *input);
│ │ │ │ -
838void dbpivot_min (struct col_t *output, const struct col_t *input);
│ │ │ │ -
839void dbpivot_max (struct col_t *output, const struct col_t *input);
│ │ │ │ +
834#ifdef __cplusplus
│ │ │ │ +
835#if 0
│ │ │ │ +
836{
│ │ │ │ +
837#endif
│ │ │ │ +
838}
│ │ │ │ +
839#endif
│ │ │ │
840
│ │ │ │ -
841struct pivot_t;
│ │ │ │ -
842typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t *input);
│ │ │ │ -
843struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);
│ │ │ │ -
844STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);
│ │ │ │ -
845RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val);
│ │ │ │ -
846
│ │ │ │ -
847DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );
│ │ │ │ -
848
│ │ │ │ -
849#ifdef MSDBLIB
│ │ │ │ -
850#define dbopen(x,y) tdsdbopen((x),(y), 1)
│ │ │ │ -
851#else
│ │ │ │ -
852#define dbopen(x,y) tdsdbopen((x),(y), 0)
│ │ │ │ -
853#endif
│ │ │ │ -
854
│ │ │ │ -
855/* fix PHP problem */
│ │ │ │ -
856#ifdef PHP_SYBASE_DBOPEN
│ │ │ │ -
857#undef PHP_SYBASE_DBOPEN
│ │ │ │ -
858#define PHP_SYBASE_DBOPEN dbopen
│ │ │ │ -
859#endif
│ │ │ │ -
860
│ │ │ │ -
861void dbprhead(DBPROCESS * dbproc);
│ │ │ │ -
862DBINT dbprcollen(DBPROCESS * dbproc, int column);
│ │ │ │ -
863RETCODE dbprrow(DBPROCESS * dbproc);
│ │ │ │ -
864const char *dbprtype(int token);
│ │ │ │ -
865DBBOOL DRBUF(DBPROCESS * dbprocess);
│ │ │ │ -
866STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);
│ │ │ │ -
867void dbrecftos(const char filename[]);
│ │ │ │ -
868RETCODE dbresults(DBPROCESS * dbproc);
│ │ │ │ -
869RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);
│ │ │ │ -
870BYTE *dbretdata(DBPROCESS * dbproc, int retnum);
│ │ │ │ -
871int dbretlen(DBPROCESS * dbproc, int retnum);
│ │ │ │ -
872char *dbretname(DBPROCESS * dbproc, int retnum);
│ │ │ │ -
873DBINT dbretstatus(DBPROCESS * dbproc);
│ │ │ │ -
874int dbrettype(DBPROCESS * dbproc, int retnum);
│ │ │ │ -
875RETCODE dbrows(DBPROCESS * dbproc);
│ │ │ │ -
876
│ │ │ │ -
877#define DBROWS(x) dbrows((x))
│ │ │ │ -
878STATUS dbrowtype(DBPROCESS * dbprocess);
│ │ │ │ -
879
│ │ │ │ -
880#define DBROWTYPE(x) dbrowtype((x))
│ │ │ │ -
881RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT options);
│ │ │ │ -
882RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE * value);
│ │ │ │ -
883RETCODE dbrpcsend(DBPROCESS * dbproc);
│ │ │ │ -
884RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype);
│ │ │ │ -
885RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);
│ │ │ │ -
886char *dbservcharset(DBPROCESS * dbprocess);
│ │ │ │ -
887void dbsetavail(DBPROCESS * dbprocess);
│ │ │ │ -
888void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);
│ │ │ │ -
889RETCODE dbsetdefcharset(char *charset);
│ │ │ │ -
890void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);
│ │ │ │ -
891void dbsetifile(char *filename);
│ │ │ │ -
892void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr);
│ │ │ │ -
893RETCODE dbsetlogintime(int seconds);
│ │ │ │ -
894RETCODE dbsetmaxprocs(int maxprocs);
│ │ │ │ -
895RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * bindval);
│ │ │ │ -
896RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int int_param);
│ │ │ │ -
897STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);
│ │ │ │ -
898RETCODE dbsettime(int seconds);
│ │ │ │ -
899void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);
│ │ │ │ -
900RETCODE dbsetversion(DBINT version);
│ │ │ │ -
901
│ │ │ │ -
902int dbspid(DBPROCESS * dbproc);
│ │ │ │ -
903RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
│ │ │ │ -
904DBINT dbspr1rowlen(DBPROCESS * dbproc);
│ │ │ │ -
905RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
│ │ │ │ -
906RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR line_char);
│ │ │ │ -
907RETCODE dbsqlexec(DBPROCESS * dbproc);
│ │ │ │ -
908RETCODE dbsqlok(DBPROCESS * dbproc);
│ │ │ │ -
909RETCODE dbsqlsend(DBPROCESS * dbproc);
│ │ │ │ -
910int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, char *formats, ...);
│ │ │ │ -
911RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);
│ │ │ │ -
912int dbstrlen(DBPROCESS * dbproc);
│ │ │ │ -
913DBINT dbvarylen(DBPROCESS * dbproc, int column);
│ │ │ │ -
914
│ │ │ │ -
915#define SYBEVERDOWN 100 /* TDS version downgraded . */
│ │ │ │ -
916#define SYBEICONVIU 2400 /* Some character(s) could not be converted into client's character set. */
│ │ │ │ -
917#define SYBEICONVAVAIL 2401 /* Character set conversion is not available between client character set '%.*s' and server character set '%.*s'.*/
│ │ │ │ -
918#define SYBEICONVO 2402 /* Error converting characters into server's character set. Some character(s) could not be converted.*/
│ │ │ │ -
919#define SYBEICONVI 2403 /* Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').*/
│ │ │ │ -
920#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from client into server's character set.*/
│ │ │ │ -
921 /* cf. doc/dblib_errors.txt for more iconv error values. */
│ │ │ │ -
922 /* Reserve a few slots for other iconv-related issues. */
│ │ │ │ -
923#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */
│ │ │ │ -
924#define SYBEPORT 2500 /* Both port and instance specified */
│ │ │ │ -
925#define SYBESYNC 20001 /* Read attempted while out of synchronization with SQL Server. */
│ │ │ │ -
926#define SYBEFCON 20002 /* SQL Server connection failed. */
│ │ │ │ -
927#define SYBETIME 20003 /* SQL Server connection timed out. */
│ │ │ │ -
928#define SYBEREAD 20004 /* Read from SQL Server failed. */
│ │ │ │ -
929#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length corrupted. */
│ │ │ │ -
930#define SYBEWRIT 20006 /* Write to SQL Server failed. */
│ │ │ │ -
931#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */
│ │ │ │ -
932#define SYBESOCK 20008 /* Unable to open socket */
│ │ │ │ -
933#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is unavailable or does not exist. */
│ │ │ │ -
934#define SYBEMEM 20010 /* Unable to allocate sufficient memory */
│ │ │ │ -
935#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. */
│ │ │ │ -
936#define SYBEINTF 20012 /* Server name not found in interface file */
│ │ │ │ -
937#define SYBEUHST 20013 /* Unknown host machine name */
│ │ │ │ -
938#define SYBEPWD 20014 /* Incorrect password. */
│ │ │ │ -
939#define SYBEOPIN 20015 /* Could not open interface file. */
│ │ │ │ -
940#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */
│ │ │ │ -
941#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */
│ │ │ │ -
942#define SYBESMSG 20018 /* General SQL Server error: Check messages from the SQL Server. */
│ │ │ │ -
943#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation with results pending. */
│ │ │ │ -
944#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing out of sync. */
│ │ │ │ -
945#define SYBEITIM 20021 /* Illegal timeout value specified. */
│ │ │ │ -
946#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */
│ │ │ │ -
947#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. */
│ │ │ │ -
948#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent compute row. */
│ │ │ │ -
949#define SYBEIICL 20025 /* Illegal integer column length returned by SQL Server. Legal integer lengths are 1, 2, and 4 bytes. */
│ │ │ │ -
950#define SYBECNOR 20026 /* Column number out of range. */
│ │ │ │ -
951#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */
│ │ │ │ -
952#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */
│ │ │ │ -
953#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */
│ │ │ │ -
954#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following ALTNAME has wrong id. */
│ │ │ │ -
955#define SYBECDNS 20031 /* Datastream indicates that a compute column is derived from a non-existent select-list member. */
│ │ │ │ -
956#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */
│ │ │ │ -
957#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column and variable types. */
│ │ │ │ -
958#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */
│ │ │ │ -
959#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched column and variable types. */
│ │ │ │ -
960#define SYBENXID 20036 /* The Server did not grant us a distributed-transaction ID. */
│ │ │ │ -
961#define SYBERXID 20037 /* The Server did not recognize our distributed-transaction ID. */
│ │ │ │ -
962#define SYBEICN 20038 /* Invalid computeid or compute column number. */
│ │ │ │ -
963#define SYBENMOB 20039 /* No such member of 'order by' clause. */
│ │ │ │ -
964#define SYBEAPUT 20040 /* Attempt to print unknown token. */
│ │ │ │ -
965#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */
│ │ │ │ -
966#define SYBENTLL 20042 /* Name too long for loginrec field. */
│ │ │ │ -
967#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */
│ │ │ │ -
968#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. */
│ │ │ │ -
969#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */
│ │ │ │ -
970#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */
│ │ │ │ -
971#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */
│ │ │ │ -
972#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */
│ │ │ │ -
973#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */
│ │ │ │ -
974#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in source field. */
│ │ │ │ -
975#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */
│ │ │ │ -
976#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in overflow. */
│ │ │ │ -
977#define SYBERDCN 20053 /* Requested data-conversion does not exist. */
│ │ │ │ -
978#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */
│ │ │ │ -
979#define SYBEUNT 20055 /* Unknown network type found in interface file. */
│ │ │ │ -
980#define SYBECLOS 20056 /* Error in closing network connection. */
│ │ │ │ -
981#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */
│ │ │ │ -
982#define SYBEUSCT 20058 /* Unable to set communications timer. */
│ │ │ │ -
983#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */
│ │ │ │ -
984#define SYBEUDTY 20060 /* Unknown datatype encountered. */
│ │ │ │ -
985#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid timestamp. */
│ │ │ │ -
986#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which has no timestamp column. */
│ │ │ │ -
987#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. */
│ │ │ │ -
988#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent Server table. */
│ │ │ │ -
989#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */
│ │ │ │ -
990#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to a host-file is shorter than the number of rows which bulk-copy was instructed to skip. */
│ │ │ │ -
991#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. */
│ │ │ │ -
992#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */
│ │ │ │ -
993#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */
│ │ │ │ -
994#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */
│ │ │ │ -
995#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in table names. */
│ │ │ │ -
996#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */
│ │ │ │ -
997#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server column %d, which does not accept NULL values. */
│ │ │ │ -
998#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL Server. */
│ │ │ │ -
999#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column value to the SQL Server. */
│ │ │ │ -
1000#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp routines. */
│ │ │ │ -
1001#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(), bcp_moretext() and bcp_sendrow() may be used only after bcp_init() has been called with the copy direction set to DB_IN. */
│ │ │ │ -
1002#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may NOT be used after bcp_init() has been passed a non-NULL input file name. */
│ │ │ │ -
1003#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have either a length-prefix or a terminator specified. */
│ │ │ │ -
1004#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps() may be used only after bcp_init() has been passed a valid input file. */
│ │ │ │ -
1005#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() and bcp_colfmt_ps(). */
│ │ │ │ -
1006#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. */
│ │ │ │ -
1007#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() has been passed a valid host file. */
│ │ │ │ -
1008#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */
│ │ │ │ -
1009#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */
│ │ │ │ -
1010#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */
│ │ │ │ -
1011#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */
│ │ │ │ -
1012#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */
│ │ │ │ -
1013#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */
│ │ │ │ -
1014#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */
│ │ │ │ -
1015#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the SQL Server. */
│ │ │ │ -
1016#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the dbmoretext() call. */
│ │ │ │ -
1017#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-timestamp into a non-existent data row. */
│ │ │ │ -
1018#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */
│ │ │ │ -
1019#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_moretext() call. */
│ │ │ │ -
1020#define SYBEORPF 20096 /* Attempt to set remote password would overflow the login-record's remote-password field. */
│ │ │ │ -
1021#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format-file. */
│ │ │ │ -
1022#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */
│ │ │ │ -
1023#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */
│ │ │ │ -
1024#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */
│ │ │ │ -
1025#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */
│ │ │ │ -
1026#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. */
│ │ │ │ -
1027#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format-file. */
│ │ │ │ -
1028#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */
│ │ │ │ -
1029#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */
│ │ │ │ -
1030#define SYBEBCSI 20106 /* Host-file columns may be skipped only when copying INto the Server. */
│ │ │ │ -
1031#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */
│ │ │ │ -
1032#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. Skipping all of these rows is not allowed. */
│ │ │ │ -
1033#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */
│ │ │ │ -
1034#define SYBEUNAM 20110 /* Unable to get current username from operating system. */
│ │ │ │ -
1035#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It was impossible to read the requested %ld rows. */
│ │ │ │ -
1036#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes lower than 1. */
│ │ │ │ -
1037#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or SYBVARBINARY. */
│ │ │ │ -
1038#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN, or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the parameter's maximum or actual length, so that DB-Library can recognize it as a SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */
│ │ │ │ -
1039#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */
│ │ │ │ -
1040#define SYBECRNC 20116 /* The current row is not a result of compute clause %d, so it is illegal to attempt to extract that data from this row. */
│ │ │ │ -
1041#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the results of a query which contains a COMPUTE clause. */
│ │ │ │ -
1042#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the results of a query which contains a single result column. */
│ │ │ │ -
1043#define SYBEUCRR 20119 /* Internal software error: Unknown connection result reported by * dbpasswd(). */
│ │ │ │ -
1044#define SYBERPNA 20120 /* The RPC facility is available only when using a SQL Server whose version number is 4.0 or greater. */
│ │ │ │ -
1045#define SYBEOPNA 20121 /* The text/image facility is available only when using a SQL Server whose version number is 4.0 or greater. */
│ │ │ │ -
1046#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied cannot be greater than the row number for the last row to be copied. */
│ │ │ │ -
1047#define SYBECWLL 20123 /* Attempt to set column width less than 1. */
│ │ │ │ -
1048#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). */
│ │ │ │ -
1049#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type encountered in dbstrbuild(). */
│ │ │ │ -
1050#define SYBETMCF 20126 /* Attempt to install too many custom formats via dbfmtinstall(). */
│ │ │ │ -
1051#define SYBEAICF 20127 /* Error in attempting to install custom format. */
│ │ │ │ -
1052#define SYBEADST 20128 /* Error in attempting to determine the size of a pair of translation tables. */
│ │ │ │ -
1053#define SYBEALTT 20129 /* Error in attempting to load a pair of translation tables. */
│ │ │ │ -
1054#define SYBEAPCT 20130 /* Error in attempting to perform a character-set translation. */
│ │ │ │ -
1055#define SYBEXOCI 20131 /* A character-set translation overflowed its destination buffer while using bcp to copy data from a host-file to the SQL Server. */
│ │ │ │ -
1056#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home directory. */
│ │ │ │ -
1057#define SYBEAOLF 20133 /* Error in attempting to open a localization file. */
│ │ │ │ -
1058#define SYBEARDI 20134 /* Error in attempting to read datetime information from a localization file. */
│ │ │ │ -
1059#define SYBEURCI 20135 /* Unable to read copyright information from the dblib localization file. */
│ │ │ │ -
1060#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc localization file. */
│ │ │ │ -
1061#define SYBEURMI 20137 /* Unable to read money-format information from the dblib localization file. */
│ │ │ │ -
1062#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib localization file. */
│ │ │ │ -
1063#define SYBEURES 20139 /* Unable to read error string from the dblib localization file. */
│ │ │ │ -
1064#define SYBEUREI 20140 /* Unable to read error information from the dblib localization file. */
│ │ │ │ -
1065#define SYBEOREN 20141 /* Warning: an out-of-range error-number was encountered in dblib.loc. The maximum permissible error-number is defined as DBERRCOUNT in sybdb.h. */
│ │ │ │ -
1066#define SYBEISOI 20142 /* Invalid sort-order information found. */
│ │ │ │ -
1067#define SYBEIDCL 20143 /* Illegal datetime column length returned by DataServer. Legal datetime lengths are 4 and 8 bytes. */
│ │ │ │ -
1068#define SYBEIMCL 20144 /* Illegal money column length returned by DataServer. Legal money lengths are 4 and 8 bytes. */
│ │ │ │ -
1069#define SYBEIFCL 20145 /* Illegal floating-point column length returned by DataServer. Legal floating-point lengths are 4 and 8 bytes. */
│ │ │ │ -
1070#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL Server. */
│ │ │ │ -
1071#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */
│ │ │ │ -
1072#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination variable. */
│ │ │ │ -
1073#define SYBEDPOR 20149 /* Out-of-range datepart constant. */
│ │ │ │ -
1074#define SYBENDC 20150 /* Cannot have negative component in date in numeric form. */
│ │ │ │ -
1075#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */
│ │ │ │ -
1076#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */
│ │ │ │ -
1077#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. */
│ │ │ │ -
1078#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */
│ │ │ │ -
1079#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime parameter. */
│ │ │ │ -
1080#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_xlate() were NULL. */
│ │ │ │ -
1081#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has been freed. */
│ │ │ │ -
1082#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate() was NULL. The space associated with the xlt_todisp parameter has been freed. */
│ │ │ │ -
1083#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. */
│ │ │ │ -
1084#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */
│ │ │ │ -
1085#define SYBEGENOS 20161 /* General Operating System Error. */
│ │ │ │ -
1086#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() operation. */
│ │ │ │ -
1087#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */
│ │ │ │ -
1088#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or IMAGE data via dbmoretext(). */
│ │ │ │ -
1089#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */
│ │ │ │ -
1090#define SYBERFILE 20166 /* "Can not open resource file." */
│ │ │ │ -
1091#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */
│ │ │ │ -
1092#define SYBESLCT 20168 /* Could not select or copy field specified */
│ │ │ │ -
1093#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to dataserver via dbwritetext(). */
│ │ │ │ -
1094#define SYBENTST 20170 /* The file being opened must be a stream_lf. */
│ │ │ │ -
1095#define SYBEOSSL 20171 /* Operating system login level not in range of Secure SQL Server */
│ │ │ │ -
1096#define SYBEESSL 20172 /* Login security level entered does not agree with operating system level */
│ │ │ │ -
1097#define SYBENLNL 20173 /* Program not linked with specified network library. */
│ │ │ │ -
1098#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler parameter. */
│ │ │ │ -
1099#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. */
│ │ │ │ -
1100#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */
│ │ │ │ -
1101#define SYBENOTI 20177 /* No event handler installed. */
│ │ │ │ -
1102#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. */
│ │ │ │ -
1103#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler parameter. */
│ │ │ │ -
1104#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. */
│ │ │ │ -
1105#define SYBEEVST 20181 /* Must initiate a transaction before calling dbregparam(). */
│ │ │ │ -
1106#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */
│ │ │ │ -
1107#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */
│ │ │ │ -
1108#define SYBEECAN 20184 /* Attempted to cancel unrequested event notification. */
│ │ │ │ -
1109#define SYBEEUNR 20185 /* Unsolicited event notification received. */
│ │ │ │ -
1110#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */
│ │ │ │ -
1111#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. */
│ │ │ │ -
1112#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */
│ │ │ │ -
1113#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not on. */
│ │ │ │ -
1114#define SYBETRAS 20190 /* DB-Library internal error - trace structure not found. */
│ │ │ │ -
1115#define SYBEPRTF 20191 /* dbtracestring() may only be called from a printfunc(). */
│ │ │ │ -
1116#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). */
│ │ │ │ -
1117#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must be between 0 and 999999. */
│ │ │ │ -
1118#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of %3!. */
│ │ │ │ -
1119#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function %1!. */
│ │ │ │ -
1120#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */
│ │ │ │ -
1121#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */
│ │ │ │ -
1122#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are present. */
│ │ │ │ -
1123#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */
│ │ │ │ -
1124#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure notifications have been disabled. */
│ │ │ │ -
1125#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! used instead. */
│ │ │ │ -
1126#define SYBESECURE 20202 /* Secure Server function not supported in this version. */
│ │ │ │ -
1127#define SYBECAP 20203 /* DB-Library capabilities not accepted by the Server. */
│ │ │ │ -
1128#define SYBEFUNC 20204 /* Functionality not supported at the specified version level. */
│ │ │ │ -
1129#define SYBERESP 20205 /* Response function address passed to dbresponse() must be non-NULL. */
│ │ │ │ -
1130#define SYBEIVERS 20206 /* Illegal version level specified. */
│ │ │ │ -
1131#define SYBEONCE 20207 /* Function can be called only once. */
│ │ │ │ -
1132#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, only if the datalen parameter is 0 */
│ │ │ │ -
1133#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. */
│ │ │ │ -
1134#define SYBENEG 20210 /* Negotiated login attempt failed. */
│ │ │ │ -
1135#define SYBELBLEN 20211 /* Security labels should be less than 256 characters long. */
│ │ │ │ -
1136#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */
│ │ │ │ -
1137#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY datastream. */
│ │ │ │ -
1138#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */
│ │ │ │ -
1139#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */
│ │ │ │ -
1140#define SYBEBPREC 20216 /* Illegal precision specified */
│ │ │ │ -
1141#define SYBEBSCALE 20217 /* Illegal scale specified */
│ │ │ │ -
1142#define SYBECDOMAIN 20218 /* Source field value is not within the domain of legal values. */
│ │ │ │ -
1143#define SYBECINTERNAL 20219 /* Internal Conversion error. */
│ │ │ │ -
1144#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */
│ │ │ │ -
1145#define SYBEBCSET 20221 /* Unknown character-set encountered." */
│ │ │ │ -
1146#define SYBEFENC 20222 /* Password Encryption failed." */
│ │ │ │ -
1147#define SYBEFRES 20223 /* Challenge-Response function failed.", */
│ │ │ │ -
1148#define SYBEISRVPREC 20224 /* Illegal precision value returned by the server. */
│ │ │ │ -
1149#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */
│ │ │ │ -
1150#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the server. */
│ │ │ │ -
1151#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the server. */
│ │ │ │ -
1152#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is at least one text or image column in the server table. */
│ │ │ │ -
1153#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value encountered. */
│ │ │ │ -
1154#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must be 0 and no terminator should be specified. */
│ │ │ │ -
1155#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */
│ │ │ │ -
1156#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */
│ │ │ │ -
1157#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type cannot be 0. */
│ │ │ │ -
1158#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. */
│ │ │ │ -
1159#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to -1. */
│ │ │ │ -
1160#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, 2 or 4. */
│ │ │ │ -
1161#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, 1, 2 or 4. */
│ │ │ │ -
1162#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. */
│ │ │ │ -
1163#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */
│ │ │ │ -
1164#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all text data for the previous row has been sent using bcp_moretext(). */
│ │ │ │ -
1165#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count differs from the actual number of columns received. */
│ │ │ │ -
1166#define SYBEBPRODEF 20242 /* bcp protocol error: expected default information and got none. */
│ │ │ │ -
1167#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of defaults differs from the actual number of defaults received. */
│ │ │ │ -
1168#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and actual column id are not same */
│ │ │ │ -
1169#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received for column that does not have default. */
│ │ │ │ -
1170#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype differs from column datatype. */
│ │ │ │ -
1171#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of default information received. */
│ │ │ │ -
1172#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of results received. */
│ │ │ │ -
1173#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column id received. */
│ │ │ │ -
1174#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column datatype. */
│ │ │ │ -
1175#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length received. */
│ │ │ │ -
1176#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision value received. */
│ │ │ │ -
1177#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value received. */
│ │ │ │ -
1178#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. */
│ │ │ │ -
1179#define SYBECRSNORES 20255 /* Cursor statement generated no results. */
│ │ │ │ -
1180#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor statement does not have a unique index. */
│ │ │ │ -
1181#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or a view in a cursor statement. */
│ │ │ │ -
1182#define SYBECRSVIIND 20258 /* The view used in the cursor statement does not include all the unique index columns of the underlying tables. */
│ │ │ │ -
1183#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have 'order by', ' group by', or 'having' phrases. */
│ │ │ │ -
1184#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when using cursor APIs. */
│ │ │ │ -
1185#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned on when using cursor APIs. */
│ │ │ │ -
1186#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */
│ │ │ │ -
1187#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor statement. */
│ │ │ │ -
1188#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be used within the keyset of keyset driven cursors. */
│ │ │ │ -
1189#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven cursors. */
│ │ │ │ -
1190#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward scrolling cursor. */
│ │ │ │ -
1191#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid range. */
│ │ │ │ -
1192#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed cursors with a previous fetch type. */
│ │ │ │ -
1193#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in a READONLY cursor. */
│ │ │ │ -
1194#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned on when doing updates or deletes with dbcursor(). */
│ │ │ │ -
1195#define SYBECRSTAB 20271 /* Table name must be determined in operations involving data locking or modifications. */
│ │ │ │ -
1196#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind variables when binding type is NOBIND. */
│ │ │ │ -
1197#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor update or insert. */
│ │ │ │ -
1198#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or insert. */
│ │ │ │ -
1199#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind variables require single table cursors. */
│ │ │ │ -
1200#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any rows. */
│ │ │ │ -
1201#define SYBECRSINV 20277 /* Invalid cursor statement. */
│ │ │ │ -
1202#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET cursors. */
│ │ │ │ -
1203#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating cursor */
│ │ │ │ -
1204#define SYBECRSFTYPE 20280 /* Unknown fetch type. */
│ │ │ │ -
1205#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */
│ │ │ │ -
1206#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is expected. */
│ │ │ │ -
1207#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. */
│ │ │ │ -
1208#define SYBECRSNOLEN 20284 /* No unique index found. */
│ │ │ │ -
1209#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */
│ │ │ │ -
1210#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, and order by. */
│ │ │ │ -
1211#define SYBECRSNOTABLE 20287 /* Table name is NULL. */
│ │ │ │ -
1212#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. */
│ │ │ │ -
1213#define SYBECRSVAR 20289 /* There is no valid address associated with this bind. */
│ │ │ │ -
1214#define SYBENOVALUE 20290 /* Security labels require both a name and a value */
│ │ │ │ -
1215#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return parameter. */
│ │ │ │ -
1216#define SYBECLOSEIN 20292 /* Unable to close interface file. */
│ │ │ │ -
1217#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */
│ │ │ │ -
1218#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy operation is progress. */
│ │ │ │ -
1219#define SYBEERRLABEL 20295 /* An illegal value was returned from the security label handler. */
│ │ │ │ -
1220#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge attention." */
│ │ │ │ -
1221#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */
│ │ │ │ -
1222#define SYBEDCL 20298 /* -004- DCL Error */
│ │ │ │ -
1223#define SYBECS 20299 /* -004- cs context Error */
│ │ │ │ -
1224#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */
│ │ │ │ -
1225#define SYBECOLSIZE 22000 /* Invalid column information structure size */
│ │ │ │ -
1226
│ │ │ │ -
1227int dbtds(DBPROCESS * dbprocess);
│ │ │ │ -
1228
│ │ │ │ -
1229#define DBTDS(a) dbtds(a)
│ │ │ │ -
1230DBINT dbtextsize(DBPROCESS * dbprocess);
│ │ │ │ -
1231DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);
│ │ │ │ -
1232DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);
│ │ │ │ -
1233DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);
│ │ │ │ -
1234RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);
│ │ │ │ -
1235RETCODE dbuse(DBPROCESS * dbproc, const char *name);
│ │ │ │ -
1236const char *dbversion(void);
│ │ │ │ -
1237DBBOOL dbwillconvert(int srctype, int desttype);
│ │ │ │ -
1238RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, DBTINYINT textptrlen, DBBINARY * timestamp,
│ │ │ │ -
1239 DBBOOL log, DBINT size, BYTE * text);
│ │ │ │ -
1240
│ │ │ │ -
1241/* LOGINREC manipulation */
│ │ │ │ -
1242RETCODE dbsetlname(LOGINREC * login, const char *value, int which);
│ │ │ │ -
1243RETCODE dbsetlbool(LOGINREC * login, int value, int which);
│ │ │ │ -
1244RETCODE dbsetlshort(LOGINREC * login, int value, int which);
│ │ │ │ -
1245RETCODE dbsetllong(LOGINREC * login, long value, int which);
│ │ │ │ -
1246RETCODE dbsetlversion (LOGINREC * login, BYTE version);
│ │ │ │ -
1247
│ │ │ │ -
1248#define DBSETHOST 1
│ │ │ │ -
1249#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)
│ │ │ │ -
1250#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)
│ │ │ │ -
1251#define DBSETUSER 2
│ │ │ │ -
1252#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)
│ │ │ │ -
1253#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)
│ │ │ │ -
1254#define DBSETPWD 3
│ │ │ │ -
1255#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)
│ │ │ │ -
1256#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)
│ │ │ │ -
1257#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ -
1258# define DBSETHID 4 /* not implemented */
│ │ │ │ -
1259# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)
│ │ │ │ -
1260#endif
│ │ │ │ -
1261#define DBSETAPP 5
│ │ │ │ -
1262#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)
│ │ │ │ -
1263#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)
│ │ │ │ -
1264#define DBSETBCP 6
│ │ │ │ -
1265#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)
│ │ │ │ -
1266#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)
│ │ │ │ -
1267#define DBSETNATLANG 7
│ │ │ │ -
1268#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)
│ │ │ │ -
1269#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)
│ │ │ │ -
1270#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ -
1271# define DBSETNOSHORT 8 /* not implemented */
│ │ │ │ -
1272# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)
│ │ │ │ -
1273# define DBSETHIER 9 /* not implemented */
│ │ │ │ -
1274# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)
│ │ │ │ -
1275#endif
│ │ │ │ -
1276#define DBSETCHARSET 10
│ │ │ │ -
1277#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)
│ │ │ │ -
1278#define DBSETPACKET 11
│ │ │ │ -
1279#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)
│ │ │ │ -
1280#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)
│ │ │ │ -
1281#define DBSETENCRYPT 12
│ │ │ │ -
1282#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)
│ │ │ │ -
1283#define DBSETLABELED 13
│ │ │ │ -
1284#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
│ │ │ │ -
1285#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
│ │ │ │ -
1286#define DBSETDBNAME 14
│ │ │ │ -
1287#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)
│ │ │ │ -
1288#define DBSETLVERSION(login, version) dbsetlversion((login), (version))
│ │ │ │ -
1289#define DBSETNETWORKAUTH 101
│ │ │ │ -
1290#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)
│ │ │ │ -
1291#define DBSETMUTUALAUTH 102
│ │ │ │ -
1292#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)
│ │ │ │ -
1293#define DBSETSERVERPRINCIPAL 103
│ │ │ │ -
1294#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), DBSETSERVERPRINCIPAL)
│ │ │ │ -
1295/* settings from here are purely FreeTDS extensions */
│ │ │ │ -
1296#define DBSETUTF16 1001
│ │ │ │ -
1297#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)
│ │ │ │ -
1298#define DBSETNTLMV2 1002
│ │ │ │ -
1299#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)
│ │ │ │ -
1300#define DBSETREADONLY 1003
│ │ │ │ -
1301#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)
│ │ │ │ -
1302#define DBSETDELEGATION 1004
│ │ │ │ -
1303#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)
│ │ │ │ -
1304#define DBSETENCRYPTION 1005
│ │ │ │ -
1305#define DBSETLENCRYPTION(x, y) dbsetlname((x), (y), DBSETENCRYPTION)
│ │ │ │ -
1306#define DBSETPORT 1006
│ │ │ │ -
1307#define DBSETLPORT(x,y) dbsetlshort((x), (y), DBSETPORT)
│ │ │ │ -
1308
│ │ │ │ -
1309RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char *hfile, const char *errfile, int direction);
│ │ │ │ -
1310DBINT bcp_done(DBPROCESS * dbproc);
│ │ │ │ -
1311
│ │ │ │ -
1312DBINT bcp_batch(DBPROCESS * dbproc);
│ │ │ │ -
1313RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT varlen, BYTE * terminator, int termlen, int type,
│ │ │ │ -
1314 int table_column);
│ │ │ │ -
1315RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);
│ │ │ │ -
1316RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);
│ │ │ │ -
1317RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
│ │ │ │ -
1318 const BYTE * host_term, int host_termlen, int colnum);
│ │ │ │ -
1319RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
│ │ │ │ -
1320 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);
│ │ │ │ -
1321RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);
│ │ │ │ -
1322RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);
│ │ │ │ -
1323int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */
│ │ │ │ -
1324RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);
│ │ │ │ -
1325DBBOOL bcp_getl(LOGINREC * login);
│ │ │ │ -
1326RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int valuelen);
│ │ │ │ -
1327RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);
│ │ │ │ -
1328RETCODE bcp_sendrow(DBPROCESS * dbproc);
│ │ │ │ -
1329
│ │ │ │ -
1330#ifdef __cplusplus
│ │ │ │ -
1331#if 0
│ │ │ │ -
1332{
│ │ │ │ -
1333#endif
│ │ │ │ -
1334}
│ │ │ │ -
1335#endif
│ │ │ │ -
1336
│ │ │ │ -
1337#endif
│ │ │ │ -
RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
Get a bunch of column attributes with a single call (Microsoft-compatibility feature).
Definition dblib.c:3062
│ │ │ │ -
RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val)
Pivot the rows, creating a new resultset.
Definition dbpivot.c:974
│ │ │ │ -
void dbclrbuf(DBPROCESS *dbproc, DBINT n)
Clear n rows from the row buffer.
Definition dblib.c:2860
│ │ │ │ -
DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)
Get precision and scale information for a regular result column.
Definition dblib.c:3033
│ │ │ │ -
LOGINREC * dblogin(void)
Allocate a LOGINREC structure.
Definition dblib.c:713
│ │ │ │ -
void dbfreebuf(DBPROCESS *dbproc)
Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
Definition dblib.c:6102
│ │ │ │ -
BYTE * dbdata(DBPROCESS *dbproc, int column)
Get address of data in a regular result column.
Definition dblib.c:3371
│ │ │ │ -
int dbstrlen(DBPROCESS *dbproc)
Get size of the command buffer, in bytes.
Definition dblib.c:6333
│ │ │ │ -
BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)
Get address of compute column data.
Definition dblib.c:4457
│ │ │ │ -
int dbspid(DBPROCESS *dbproc)
Get server process ID for a DBPROCESS.
Definition dblib.c:5962
│ │ │ │ -
DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)
Get text timestamp for a column in the current row.
Definition dblib.c:6569
│ │ │ │ -
BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)
Get bylist for a compute row.
Definition dblib.c:5041
│ │ │ │ -
char * dbservcharset(DBPROCESS *dbprocess)
Get syscharset name of the server character set.
Definition dblib.c:7067
│ │ │ │ -
DBINT dbspr1rowlen(DBPROCESS *dbproc)
Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(),...
Definition dblib.c:3438
│ │ │ │ -
DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
cf.
Definition dblib.c:2612
│ │ │ │ -
DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)
Get size of data in a compute column.
Definition dblib.c:4352
│ │ │ │ -
void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr)
Set interrupt handler for db-lib to use while blocked against a read from the server.
Definition dblib.c:4673
│ │ │ │ -
RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE *bindval)
Define substitution values to be used when binding null values.
Definition dblib.c:1981
│ │ │ │ -
char * dbcolname(DBPROCESS *dbproc, int column)
Return name of a regular result column.
Definition dblib.c:1891
│ │ │ │ -
RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)
printf-like way to form SQL to send to the server.
Definition dblib.c:1353
│ │ │ │ -
RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)
Break a DBDATETIME value into useful pieces.
Definition dblib.c:5889
│ │ │ │ -
RETCODE dbresults(DBPROCESS *dbproc)
Set up query results.
Definition dblib.c:1713
│ │ │ │ -
RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)
Send text or image data to the server.
Definition dblib.c:6636
│ │ │ │ -
RETCODE dbcanquery(DBPROCESS *dbproc)
Cancel the query currently being retrieved, discarding all pending rows.
Definition dblib.c:6073
│ │ │ │ -
RETCODE dbinit(void)
Initialize db-lib.
Definition dblib.c:668
│ │ │ │ -
DBINT dbvarylen(DBPROCESS *dbproc, int column)
Determine whether a column can vary in size.
Definition dblib.c:3235
│ │ │ │ -
RETCODE dbcancel(DBPROCESS *dbproc)
Cancel the current command batch.
Definition dblib.c:3413
│ │ │ │ -
RETCODE dbsetlogintime(int seconds)
Set maximum seconds db-lib waits for a server response to a login attempt.
Definition dblib.c:4281
│ │ │ │ -
RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)
Read a row from the row buffer.
Definition dblib.c:1949
│ │ │ │ -
int dbcoltype(DBPROCESS *dbproc, int column)
Get the datatype of a regular result set column.
Definition dblib.c:2987
│ │ │ │ -
void dbsetifile(char *filename)
set name and location of the interfaces file FreeTDS should use to look up a servername.
Definition dblib.c:2730
│ │ │ │ -
RETCODE dbuse(DBPROCESS *dbproc, const char *name)
Change current database.
Definition dblib.c:1464
│ │ │ │ -
int dbnumalts(DBPROCESS *dbproc, int computeid)
Get count of columns in a compute row.
Definition dblib.c:4982
│ │ │ │ -
BOOL dbiscount(DBPROCESS *dbproc)
Indicates whether or not the count returned by dbcount is real (Microsoft-compatibility feature).
Definition dblib.c:2820
│ │ │ │ -
int dbgettime(void)
Get maximum seconds db-lib waits for a server response to query.
Definition dblib.c:4265
│ │ │ │ -
RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])
Send chunk of a text/image value to the server.
Definition dblib.c:6774
│ │ │ │ -
const char * dbprtype(int token)
Print a token value's name to a buffer.
Definition dblib.c:6489
│ │ │ │ -
char * dbcolsource(DBPROCESS *dbproc, int colnum)
Get base database column name for a result set column.
Definition dblib.c:3161
│ │ │ │ -
char * dbchange(DBPROCESS *dbprocess)
See if a command caused the current database to change.
Definition dblib.c:7031
│ │ │ │ -
const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)
Return name of a computed result column.
Definition dblib.c:1917
│ │ │ │ -
RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)
Tie a null-indicator to a regular result column.
Definition dblib.c:2756
│ │ │ │ -
RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
Tie a host variable to a resultset column.
Definition dblib.c:2653
│ │ │ │ -
RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])
Append SQL to the command buffer.
Definition dblib.c:1392
│ │ │ │ -
DBINT dbcollen(DBPROCESS *dbproc, int column)
Get size of a regular result column.
Definition dblib.c:3186
│ │ │ │ -
DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
Convert one datatype to another.
Definition dblib.c:2319
│ │ │ │ -
char * dbgetchar(DBPROCESS *dbprocess, int n)
Get address of a position in the command buffer.
Definition dblib.c:6352
│ │ │ │ -
RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT *indicator)
Tie a null-indicator to a compute result column.
Definition dblib.c:2792
│ │ │ │ -
RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])
Reset an option.
Definition dblib.c:6137
│ │ │ │ -
DBINT dbcount(DBPROCESS *dbproc)
Get count of rows processed.
Definition dblib.c:2840
│ │ │ │ -
int dbaltop(DBPROCESS *dbproc, int computeid, int column)
Get aggregation operator for a compute column.
Definition dblib.c:4486
│ │ │ │ -
RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)
describe table column attributes with a single call (Freetds-only API function modelled on dbcolinfo)
Definition dblib.c:6506
│ │ │ │ -
DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)
Get size of data in compute column.
Definition dblib.c:7181
│ │ │ │ -
RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int int_param)
Set db-lib or server option.
Definition dblib.c:4513
│ │ │ │ -
void dbprhead(DBPROCESS *dbproc)
Print result set headings to stdout.
Definition dblib.c:4001
│ │ │ │ -
RETCODE dbsetlversion(LOGINREC *login, BYTE version)
Set TDS version for future connections.
Definition dblib.c:960
│ │ │ │ -
RETCODE dbprrow(DBPROCESS *dbproc)
Print a result set to stdout.
Definition dblib.c:3559
│ │ │ │ -
char * dbname(DBPROCESS *dbproc)
Get name of current database.
Definition dblib.c:7051
│ │ │ │ -
int dbalttype(DBPROCESS *dbproc, int computeid, int column)
Get datatype for a compute column.
Definition dblib.c:4382
│ │ │ │ -
RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
Print result set headings to a buffer.
Definition dblib.c:3937
│ │ │ │ -
RETCODE dbsqlexec(DBPROCESS *dbproc)
send the SQL command to the server and wait for an answer.
Definition dblib.c:1438
│ │ │ │ -
DBBOOL dbwillconvert(int srctype, int desttype)
Test whether or not a datatype can be converted to another datatype.
Definition dblib.c:2890
│ │ │ │ -
DBINT dbcolutype(DBPROCESS *dbprocess, int column)
Get user-defined datatype of a regular result column.
Definition dblib.c:3010
│ │ │ │ -
int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char *formats,...)
Build a printable string from text containing placeholders for variables.
Definition dblib.c:7344
│ │ │ │ -
EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)
Set an error handler, for messages from db-lib.
Definition dblib.c:5163
│ │ │ │ -
RETCODE dbsetversion(DBINT version)
Specify a db-lib version level.
Definition dblib.c:6018
│ │ │ │ -
int dbgetpacket(DBPROCESS *dbproc)
Get TDS packet size for the connection.
Definition dblib.c:4117
│ │ │ │ -
void dbrecftos(const char filename[])
Record to a file all SQL commands sent to the server.
Definition dblib.c:6809
│ │ │ │ -
BYTE * dbgetuserdata(DBPROCESS *dbproc)
Get address of user-allocated data from a DBPROCESS.
Definition dblib.c:6000
│ │ │ │ -
void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)
Associate client-allocated (and defined) data with a DBPROCESS.
Definition dblib.c:5982
│ │ │ │ -
DBINT dbprcollen(DBPROCESS *dbproc, int column)
Get size of a result column needed to print column.
Definition dblib.c:3209
│ │ │ │ -
void dbexit(void)
Close server connections and free all related structures.
Definition dblib.c:1571
│ │ │ │ -
void dbloginfree(LOGINREC *login)
free the LOGINREC
Definition dblib.c:746
│ │ │ │ -
RETCODE dbmorecmds(DBPROCESS *dbproc)
See if more commands are to be processed.
Definition dblib.c:6279
│ │ │ │ -
DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])
Get value of an option.
Definition dblib.c:6205
│ │ │ │ -
int dbnumcompute(DBPROCESS *dbprocess)
Get count of COMPUTE clauses for a result set.
Definition dblib.c:5015
│ │ │ │ -
RETCODE dbsqlsend(DBPROCESS *dbproc)
Transmit the command buffer to the server.
Definition dblib.c:7087
│ │ │ │ -
RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
Get formatted string for underlining dbsprhead() column names.
Definition dblib.c:3879
│ │ │ │ -
const char * dbversion(void)
See which version of db-lib is in use.
Definition dblib.c:6884
│ │ │ │ -
RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype)
safely quotes character values in SQL text.
Definition dblib.c:6428
│ │ │ │ -
int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)
Get column ID of a compute column.
Definition dblib.c:4326
│ │ │ │ -
RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void *data)
Break any kind of date or time value into useful pieces.
Definition dblib.c:5910
│ │ │ │ -
RETCODE dbsettime(int seconds)
Set maximum seconds db-lib waits for a server response to query.
Definition dblib.c:4234
│ │ │ │ -
int dbnumcols(DBPROCESS *dbproc)
Return number of regular columns in a result set.
Definition dblib.c:1867
│ │ │ │ -
int dbgetmaxprocs(void)
get maximum simultaneous connections db-lib will open to the server.
Definition dblib.c:4213
│ │ │ │ -
DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)
Get text pointer for a column in the current row.
Definition dblib.c:6599
│ │ │ │ -
MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)
Set a message handler, for messages from the server.
Definition dblib.c:5182
│ │ │ │ -
STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)
Fetch part of a text or image value from the server.
Definition dblib.c:6705
│ │ │ │ -
RETCODE dbsqlok(DBPROCESS *dbproc)
Wait for results of a query from the server.
Definition dblib.c:4856
│ │ │ │ -
DBINT dbdatlen(DBPROCESS *dbproc, int column)
Get size of current row's data in a regular result column.
Definition dblib.c:3343
│ │ │ │ -
STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)
Make a buffered row "current" without fetching it into bound variables.
Definition dblib.c:2064
│ │ │ │ -
void dbclose(DBPROCESS *dbproc)
Close a connection to the server and free associated resources.
Definition dblib.c:1504
│ │ │ │ -
RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)
Get a copy of a chunk of the command buffer.
Definition dblib.c:6384
│ │ │ │ -
DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)
Get user-defined datatype of a compute column.
Definition dblib.c:7158
│ │ │ │ -
RETCODE dbsetmaxprocs(int maxprocs)
Set maximum simultaneous connections db-lib will open to the server.
Definition dblib.c:4141
│ │ │ │ -
RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
Print a regular result row to a buffer.
Definition dblib.c:3476
│ │ │ │ -
RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE *varaddr)
Bind a compute column to a program variable.
Definition dblib.c:4411
│ │ │ │ -
DBINT dbretstatus(DBPROCESS *dbproc)
Fetch status value returned by query or remote procedure call.
Definition dblib.c:4716
│ │ │ │ -
RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)
Initialize a remote procedure call.
Definition rpc.c:72
│ │ │ │ -
BYTE * dbretdata(DBPROCESS *dbproc, int retnum)
Get value of an output parameter filled by a stored procedure.
Definition dblib.c:4795
│ │ │ │ -
char * dbretname(DBPROCESS *dbproc, int retnum)
Get name of an output parameter filled by a stored procedure.
Definition dblib.c:4766
│ │ │ │ -
DBBOOL dbhasretstat(DBPROCESS *dbproc)
Determine if query generated a return status number.
Definition dblib.c:4692
│ │ │ │ -
int dbrettype(DBPROCESS *dbproc, int retnum)
Get datatype of a stored procedure's return parameter.
Definition dblib.c:6308
│ │ │ │ -
int dbretlen(DBPROCESS *dbproc, int retnum)
Get size of an output parameter filled by a stored procedure.
Definition dblib.c:4821
│ │ │ │ -
RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE *value)
Add a parameter to a remote procedure call.
Definition rpc.c:155
│ │ │ │ -
RETCODE dbrpcsend(DBPROCESS *dbproc)
Execute the procedure and free associated memory.
Definition rpc.c:281
│ │ │ │ -
int dbnumrets(DBPROCESS *dbproc)
Get count of output parameters filled by a stored procedure.
Definition dblib.c:4734
│ │ │ │ -
RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int colnum)
Specify the format of a datafile prior to writing to a table.
Definition bcp.c:377
│ │ │ │ -
DBBOOL bcp_getl(LOGINREC *login)
See if BCP_SETL() was used to set the LOGINREC for BCP work.
Definition bcp.c:710
│ │ │ │ -
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:546
│ │ │ │ -
RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)
Indicate how many columns are to be found in the datafile.
Definition bcp.c:301
│ │ │ │ -
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:674
│ │ │ │ -
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int type, int table_column)
Bind a program host variable to a database column.
Definition bcp.c:2083
│ │ │ │ -
RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)
Write a datafile to a table.
Definition bcp.c:1621
│ │ │ │ -
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition bcp.c:2041
│ │ │ │ -
RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])
Read a format definition file.
Definition bcp.c:1682
│ │ │ │ -
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition bcp.c:2014
│ │ │ │ -
RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile, const char *errfile, int direction)
Prepare for bulk copy operation on a table.
Definition bcp.c:167
│ │ │ │ -
RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column)
Set the length of a host variable to be written to a table.
Definition bcp.c:267
│ │ │ │ -
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition bcp.c:1384
│ │ │ │ -
RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int colnum, DBTYPEINFO *typeinfo)
Specify the format of a host file for bulk copy purposes, with precision and scale support for numeri...
Definition bcp.c:509
│ │ │ │ -
RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
Set "hints" for uploading a file.
Definition bcp.c:624
│ │ │ │ -
RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)
Zero a DBMONEY4 value.
Definition dblib.c:5612
│ │ │ │ -
RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
Add two DBMONEY4 values.
Definition dblib.c:5635
│ │ │ │ -
int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
Compare two DBMONEY4 values.
Definition dblib.c:5754
│ │ │ │ -
RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)
Get maximum positive DBMONEY value supported.
Definition dblib.c:5387
│ │ │ │ -
RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
Negate a DBMONEY4 value.
Definition dblib.c:5588
│ │ │ │ -
RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
Negate a DBMONEY value.
Definition dblib.c:5561
│ │ │ │ -
RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
Subtract two DBMONEY4 values.
Definition dblib.c:5666
│ │ │ │ -
RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)
Set a DBMONEY value to zero.
Definition dblib.c:5366
│ │ │ │ -
RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
Copy a DBMONEY value.
Definition dblib.c:6052
│ │ │ │ -
RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)
Copy a DBMONEY4 value.
Definition dblib.c:5782
│ │ │ │ -
RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)
Get maximum negative DBMONEY value supported.
Definition dblib.c:5408
│ │ │ │ -
RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)
Subtract $0.0001 from a DBMONEY value.
Definition dblib.c:5533
│ │ │ │ -
RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)
Add $0.0001 to a DBMONEY value.
Definition dblib.c:5505
│ │ │ │ -
int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
Compare two DBMONEY values.
Definition dblib.c:5308
│ │ │ │ -
int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
Compare DBDATETIME values, similar to strcmp(3).
Definition dblib.c:5807
│ │ │ │ -
const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
Get name of a month, in some human language.
Definition dblib.c:7002
│ │ │ │ -
int dbcurcmd(DBPROCESS *dbproc)
Get number of the row just returned.
Definition dblib.c:6262
│ │ │ │ -
RETCODE dbsetlbool(LOGINREC *login, int value, int which)
Set a boolean value in a LOGINREC structure.
Definition dblib.c:909
│ │ │ │ -
DBINT dblastrow(DBPROCESS *dbproc)
Get number of the last row in the row buffer.
Definition dblib.c:7251
│ │ │ │ -
RETCODE dbcmdrow(DBPROCESS *dbproc)
See if the current command can return rows.
Definition dblib.c:4302
│ │ │ │ -
RETCODE dbsetlshort(LOGINREC *login, int value, int which)
Set an integer value in a LOGINREC structure.
Definition dblib.c:874
│ │ │ │ -
RETCODE dbrows(DBPROCESS *dbproc)
Indicate whether a query returned rows.
Definition dblib.c:4076
│ │ │ │ -
void dbsetavail(DBPROCESS *dbprocess)
Mark a DBPROCESS as "available".
Definition dblib.c:7319
│ │ │ │ -
int dbiowdesc(DBPROCESS *dbproc)
Get file descriptor of the socket used by a DBPROCESS to write data coming to the server....
Definition dblib.c:7291
│ │ │ │ -
int dbtds(DBPROCESS *dbprocess)
Get the TDS version in use for dbproc.
Definition dblib.c:6843
│ │ │ │ -
DBINT dbcurrow(DBPROCESS *dbproc)
Get number of the row currently being read.
Definition dblib.c:6228
│ │ │ │ -
STATUS dbrowtype(DBPROCESS *dbprocess)
Get returned row's type.
Definition dblib.c:6245
│ │ │ │ -
int dbiordesc(DBPROCESS *dbproc)
Get file descriptor of the socket used by a DBPROCESS to read data coming from the server....
Definition dblib.c:7275
│ │ │ │ -
RETCODE dbsetllong(LOGINREC *login, long value, int which)
Set an integer value in a LOGINREC structure.
Definition dblib.c:837
│ │ │ │ -
RETCODE dbsetlname(LOGINREC *login, const char *value, int which)
Set the value of a string in a LOGINREC structure.
Definition dblib.c:768
│ │ │ │ -
DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)
Form a connection with the server.
Definition dblib.c:1192
│ │ │ │ -
DBBOOL dbdead(DBPROCESS *dbproc)
Check if dbproc is an ex-parrot.
Definition dblib.c:5100
│ │ │ │ -
DBINT dbfirstrow(DBPROCESS *dbproc)
See if a server response has arrived.
Definition dblib.c:7236
│ │ │ │ -
Definition bsqlodbc.c:100
│ │ │ │ -
Definition dbpivot.c:77
│ │ │ │ -
Definition dbpivot.c:842
│ │ │ │ -
Definition dblib.h:44
│ │ │ │ -
Definition dblib.h:123
│ │ │ │ -
Definition sybdb.h:264
│ │ │ │ -
Definition sybdb.h:270
│ │ │ │ -
Definition sybdb.h:276
│ │ │ │ -
Definition sybdb.h:285
│ │ │ │ -
Definition sybdb.h:291
│ │ │ │ -
Definition sybdb.h:296
│ │ │ │ -
Definition sybdb.h:302
│ │ │ │ -
Definition sybdb.h:308
│ │ │ │ -
DBSMALLINT offset
time offset
Definition sybdb.h:311
│ │ │ │ -
DBUBIGINT time
time, 7 digit precision
Definition sybdb.h:309
│ │ │ │ -
DBINT date
date, 0 = 1900-01-01
Definition sybdb.h:310
│ │ │ │ -
Definition sybdb.h:337
│ │ │ │ -
Definition sybdb.h:343
│ │ │ │ -
Definition sybdb.h:356
│ │ │ │ -
Definition sybdb.h:375
│ │ │ │ -
Definition sybdb.h:459
│ │ │ │ -
Definition sybdb.h:475
│ │ │ │ -
Definition sybdb.h:491
│ │ │ │ -
Definition sybdb.h:507
│ │ │ │ +
841#endif
│ │ │ │ +
Definition cspublic.h:728
│ │ │ │ +
Definition cspublic.h:748
│ │ │ │ +
Definition cstypes.h:119
│ │ │ │ +
Definition cstypes.h:168
│ │ │ │ +
Definition cstypes.h:186
│ │ │ │ +
Definition cstypes.h:200
│ │ │ │ +
Definition ctlib.h:135
│ │ │ │ +
Definition ctlib.h:188
│ │ │ │ +
Definition ctlib.h:284
│ │ │ │ +
Definition ctlib.h:311
│ │ │ │ +
Definition ctlib.h:320
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,2305 +1,893 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -sybdb.h │ │ │ │ │ -Go_to_the_documentation_of_this_file. │ │ │ │ │ +cspublic.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -28#ifndef _sybdb_h_ │ │ │ │ │ -29#define _sybdb_h_ │ │ │ │ │ -30 │ │ │ │ │ -31#include "tds_sysdep_public.h" │ │ │ │ │ -32 │ │ │ │ │ -33#undef TDS_STATIC_CAST │ │ │ │ │ -34#ifdef __cplusplus │ │ │ │ │ -35#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ -36extern "C" │ │ │ │ │ -37{ │ │ │ │ │ -38#if 0 │ │ │ │ │ -39} │ │ │ │ │ -40#endif │ │ │ │ │ -41#else │ │ │ │ │ -42#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ -43#endif │ │ │ │ │ -44 │ │ │ │ │ -45#ifdef FALSE │ │ │ │ │ -46#undef FALSE │ │ │ │ │ -47#endif │ │ │ │ │ -48#ifdef TRUE │ │ │ │ │ -49#undef TRUE │ │ │ │ │ -50#endif │ │ │ │ │ -51#define FALSE 0 │ │ │ │ │ -52#define TRUE 1 │ │ │ │ │ -53 │ │ │ │ │ -54#define DBSAVE 1 │ │ │ │ │ -55#define DBNOSAVE 0 │ │ │ │ │ -56#define DBNOERR -1 │ │ │ │ │ -57 │ │ │ │ │ -58#define INT_EXIT 0 │ │ │ │ │ -59#define INT_CONTINUE 1 │ │ │ │ │ -60#define INT_CANCEL 2 │ │ │ │ │ -61#define INT_TIMEOUT 3 │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _cspublic_h_ │ │ │ │ │ +21#define _cspublic_h_ │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#undef TDS_STATIC_CAST │ │ │ │ │ +26#ifdef __cplusplus │ │ │ │ │ +27#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ +28extern "C" │ │ │ │ │ +29{ │ │ │ │ │ +30#if 0 │ │ │ │ │ +31} │ │ │ │ │ +32#endif │ │ │ │ │ +33#else │ │ │ │ │ +34#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ +35#endif │ │ │ │ │ +36 │ │ │ │ │ +37#define CS_PUBLIC │ │ │ │ │ +38#define CS_STATIC static │ │ │ │ │ +39 │ │ │ │ │ +40#define CS_SUCCEED 1 │ │ │ │ │ +41#define CS_FAIL 0 │ │ │ │ │ +42#define CS_MEM_ERROR -1 │ │ │ │ │ +43#define CS_PENDING -2 │ │ │ │ │ +44#define CS_QUIET -3 │ │ │ │ │ +45#define CS_BUSY -4 │ │ │ │ │ +46#define CS_INTERRUPT -5 │ │ │ │ │ +47#define CS_BLK_HAS_TEXT -6 │ │ │ │ │ +48#define CS_CONTINUE -7 │ │ │ │ │ +49#define CS_FATAL -8 │ │ │ │ │ +50#define CS_RET_HAFAILOVER -9 │ │ │ │ │ +51#define CS_UNSUPPORTED -10 │ │ │ │ │ +52 │ │ │ │ │ +53#define CS_CANCELED -202 │ │ │ │ │ +54#define CS_ROW_FAIL -203 │ │ │ │ │ +55#define CS_END_DATA -204 │ │ │ │ │ +56#define CS_END_RESULTS -205 │ │ │ │ │ +57#define CS_END_ITEM -206 │ │ │ │ │ +58#define CS_NOMSG -207 │ │ │ │ │ +59#define CS_TIMED_OUT -208 │ │ │ │ │ +60 │ │ │ │ │ +61#define CS_SIZEOF(x) sizeof(x) │ │ │ │ │ 62 │ │ │ │ │ -63#define DBMAXNUMLEN 33 │ │ │ │ │ -64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */ │ │ │ │ │ -65#define DBMAXNAME 128 │ │ │ │ │ -66 │ │ │ │ │ -70#define DBVERSION_UNKNOWN 0 │ │ │ │ │ -71#define DBVERSION_46 1 │ │ │ │ │ -72#define DBVERSION_100 2 │ │ │ │ │ -73#define DBVERSION_42 3 │ │ │ │ │ -74#define DBVERSION_70 4 │ │ │ │ │ -75#define DBVERSION_71 5 │ │ │ │ │ -76#define DBVERSION_72 6 │ │ │ │ │ -77#define DBVERSION_73 7 │ │ │ │ │ -78#define DBVERSION_74 8 │ │ │ │ │ +63#define CS_LAYER(x) (((x) >> 24) & 0xFF) │ │ │ │ │ +64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF) │ │ │ │ │ +65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF) │ │ │ │ │ +66#define CS_NUMBER(x) ((x) & 0xFF) │ │ │ │ │ +67 │ │ │ │ │ +68/* forward declarations */ │ │ │ │ │ +69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *); │ │ │ │ │ +70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_ │ │ │ │ │ +CLIENTMSG *); │ │ │ │ │ +71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_ │ │ │ │ │ +SERVERMSG *); │ │ │ │ │ +72typedef CS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION *); │ │ │ │ │ +73 │ │ │ │ │ +74 │ │ │ │ │ +75#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600) │ │ │ │ │ +76#define CS_SRC_VALUE -2562 │ │ │ │ │ +77 │ │ │ │ │ +78 │ │ │ │ │ 79 │ │ │ │ │ -80/* these two are defined by Microsoft for dbsetlversion() */ │ │ │ │ │ -81#define DBVER42 DBVERSION_42 │ │ │ │ │ -82#define DBVER60 DBVERSION_70 /* our best approximation */ │ │ │ │ │ -83 │ │ │ │ │ -88#define DBTDS_UNKNOWN 0 │ │ │ │ │ -89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */ │ │ │ │ │ -90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */ │ │ │ │ │ -91#define DBTDS_4_0 3 /* 4.0 SQL Server */ │ │ │ │ │ -92#define DBTDS_4_2 4 /* 4.2 SQL Server */ │ │ │ │ │ -93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */ │ │ │ │ │ -94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */ │ │ │ │ │ -95#define DBTDS_5_0 7 /* 5.0 SQL Server */ │ │ │ │ │ -96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */ │ │ │ │ │ -97#define DBTDS_8_0 ("Use DBTDS_7_1 instead"*x) /* Microsoft SQL Server 2000 */ │ │ │ │ │ -98#define DBTDS_9_0 ("Use DBTDS_7_2 instead"*x) /* Microsoft SQL Server 2005 */ │ │ │ │ │ -99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */ │ │ │ │ │ -100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */ │ │ │ │ │ -101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */ │ │ │ │ │ -102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */ │ │ │ │ │ -103#define DBTDS_8_0_ 13 /* Microsoft SQL Server 2022 */ │ │ │ │ │ -104 │ │ │ │ │ -105#define DBTXPLEN 16 │ │ │ │ │ -106 │ │ │ │ │ -107#define BCPMAXERRS 1 │ │ │ │ │ -108#define BCPFIRST 2 │ │ │ │ │ -109#define BCPLAST 3 │ │ │ │ │ -110#define BCPBATCH 4 │ │ │ │ │ -111#define BCPKEEPIDENTITY 8 │ │ │ │ │ -112 │ │ │ │ │ -113#define BCPLABELED 5 │ │ │ │ │ -114#define BCPHINTS 6 │ │ │ │ │ -115 │ │ │ │ │ -116#define DBCMDNONE 0 │ │ │ │ │ -117#define DBCMDPEND 1 │ │ │ │ │ -118#define DBCMDSENT 2 │ │ │ │ │ -119 │ │ │ │ │ -120typedef int RETCODE; │ │ │ │ │ -121 │ │ │ │ │ -122typedef void DBCURSOR; │ │ │ │ │ -123typedef void DBXLATE; │ │ │ │ │ -124typedef void DBSORTORDER; │ │ │ │ │ -125typedef void DBLOGINFO; │ │ │ │ │ -126typedef void *DBVOIDPTR; │ │ │ │ │ -127typedef short SHORT; │ │ │ │ │ -128typedef unsigned short USHORT; │ │ │ │ │ -129typedef int (*INTFUNCPTR) (void *, ...); │ │ │ │ │ -130typedef int (*DBWAITFUNC) (void); │ │ │ │ │ -131typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc); │ │ │ │ │ -132typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc); │ │ │ │ │ -133typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc); │ │ │ │ │ -134typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc); │ │ │ │ │ -135 │ │ │ │ │ -136#ifndef __INCvxWorksh │ │ │ │ │ -137/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you │ │ │ │ │ -138** redefine them. */ │ │ │ │ │ -139/* __INCvxWorksh will get #defined by std. include files included from tds.h │ │ │ │ │ -140*/ │ │ │ │ │ -141#ifdef STATUS │ │ │ │ │ -142/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h │ │ │ │ │ -143 when _REENTRANT is defined. │ │ │ │ │ -144*/ │ │ │ │ │ -145#undef STATUS │ │ │ │ │ -146#endif │ │ │ │ │ -147typedef int STATUS; │ │ │ │ │ -148#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X) │ │ │ │ │ -149typedef int BOOL; │ │ │ │ │ -150#endif │ │ │ │ │ -151#endif │ │ │ │ │ -152 │ │ │ │ │ -153#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ -154/* copied from tds.h */ │ │ │ │ │ -155/* TODO find a best way... */ │ │ │ │ │ -156enum │ │ │ │ │ -157{ │ │ │ │ │ -158 SYBCHAR = 47, /* 0x2F */ │ │ │ │ │ -159#define SYBCHAR SYBCHAR │ │ │ │ │ -160 SYBVARCHAR = 39, /* 0x27 */ │ │ │ │ │ -161#define SYBVARCHAR SYBVARCHAR │ │ │ │ │ -162 SYBINTN = 38, /* 0x26 */ │ │ │ │ │ -163#define SYBINTN SYBINTN │ │ │ │ │ -164 SYBINT1 = 48, /* 0x30 */ │ │ │ │ │ -165#define SYBINT1 SYBINT1 │ │ │ │ │ -166 SYBINT2 = 52, /* 0x34 */ │ │ │ │ │ -167#define SYBINT2 SYBINT2 │ │ │ │ │ -168 SYBINT4 = 56, /* 0x38 */ │ │ │ │ │ -169#define SYBINT4 SYBINT4 │ │ │ │ │ -170 SYBINT8 = 127, /* 0x7F */ │ │ │ │ │ -171#define SYBINT8 SYBINT8 │ │ │ │ │ -172 SYBFLT8 = 62, /* 0x3E */ │ │ │ │ │ -173#define SYBFLT8 SYBFLT8 │ │ │ │ │ -174 SYBDATETIME = 61, /* 0x3D */ │ │ │ │ │ -175#define SYBDATETIME SYBDATETIME │ │ │ │ │ -176 SYBBIT = 50, /* 0x32 */ │ │ │ │ │ -177#define SYBBIT SYBBIT │ │ │ │ │ -178 SYBBITN = 104, /* 0x68 */ │ │ │ │ │ -179#define SYBBITN SYBBITN │ │ │ │ │ -180 SYBTEXT = 35, /* 0x23 */ │ │ │ │ │ -181#define SYBTEXT SYBTEXT │ │ │ │ │ -182 SYBNTEXT = 99, /* 0x63 */ │ │ │ │ │ -183#define SYBNTEXT SYBNTEXT │ │ │ │ │ -184 SYBIMAGE = 34, /* 0x22 */ │ │ │ │ │ -185#define SYBIMAGE SYBIMAGE │ │ │ │ │ -186 SYBMONEY4 = 122, /* 0x7A */ │ │ │ │ │ -187#define SYBMONEY4 SYBMONEY4 │ │ │ │ │ -188 SYBMONEY = 60, /* 0x3C */ │ │ │ │ │ -189#define SYBMONEY SYBMONEY │ │ │ │ │ -190 SYBDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ -191#define SYBDATETIME4 SYBDATETIME4 │ │ │ │ │ -192 SYBREAL = 59, /* 0x3B */ │ │ │ │ │ -193#define SYBREAL SYBREAL │ │ │ │ │ -194 SYBBINARY = 45, /* 0x2D */ │ │ │ │ │ -195#define SYBBINARY SYBBINARY │ │ │ │ │ -196 SYBVOID = 31, /* 0x1F */ │ │ │ │ │ -197#define SYBVOID SYBVOID │ │ │ │ │ -198 SYBVARBINARY = 37, /* 0x25 */ │ │ │ │ │ -199#define SYBVARBINARY SYBVARBINARY │ │ │ │ │ -200 SYBNUMERIC = 108, /* 0x6C */ │ │ │ │ │ -201#define SYBNUMERIC SYBNUMERIC │ │ │ │ │ -202 SYBDECIMAL = 106, /* 0x6A */ │ │ │ │ │ -203#define SYBDECIMAL SYBDECIMAL │ │ │ │ │ -204 SYBFLTN = 109, /* 0x6D */ │ │ │ │ │ -205#define SYBFLTN SYBFLTN │ │ │ │ │ -206 SYBMONEYN = 110, /* 0x6E */ │ │ │ │ │ -207#define SYBMONEYN SYBMONEYN │ │ │ │ │ -208 SYBDATETIMN = 111, /* 0x6F */ │ │ │ │ │ -209#define SYBDATETIMN SYBDATETIMN │ │ │ │ │ -210 SYBNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ -211#define SYBNVARCHAR SYBNVARCHAR │ │ │ │ │ -212 SYBDATE = 49, /* 0x31 */ │ │ │ │ │ -213#define SYBDATE SYBDATE │ │ │ │ │ -214 SYBTIME = 51, /* 0x33 */ │ │ │ │ │ -215#define SYBTIME SYBTIME │ │ │ │ │ -216 SYBBIGDATETIME = 187, /* 0xBB */ │ │ │ │ │ -217#define SYBBIGDATETIME SYBBIGDATETIME │ │ │ │ │ -218 SYBBIGTIME = 188, /* 0xBC */ │ │ │ │ │ -219#define SYBBIGTIME SYBBIGTIME │ │ │ │ │ -220 SYBMSDATE = 40, /* 0x28 */ │ │ │ │ │ -221#define SYBMSDATE SYBMSDATE │ │ │ │ │ -222 SYBMSTIME = 41, /* 0x29 */ │ │ │ │ │ -223#define SYBMSTIME SYBMSTIME │ │ │ │ │ -224 SYBMSDATETIME2 = 42, /* 0x2A */ │ │ │ │ │ -225#define SYBMSDATETIME2 SYBMSDATETIME2 │ │ │ │ │ -226 SYBMSDATETIMEOFFSET = 43, /* 0x2B */ │ │ │ │ │ -227#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET │ │ │ │ │ -228}; │ │ │ │ │ -229 │ │ │ │ │ -230#define SYBAOPCNT 0x4b │ │ │ │ │ -231#define SYBAOPCNTU 0x4c │ │ │ │ │ -232#define SYBAOPSUM 0x4d │ │ │ │ │ -233#define SYBAOPSUMU 0x4e │ │ │ │ │ -234#define SYBAOPAVG 0x4f │ │ │ │ │ -235#define SYBAOPAVGU 0x50 │ │ │ │ │ -236#define SYBAOPMIN 0x51 │ │ │ │ │ -237#define SYBAOPMAX 0x52 │ │ │ │ │ -238 │ │ │ │ │ -239/* mssql2k compute operator */ │ │ │ │ │ -240#define SYBAOPCNT_BIG 0x09 │ │ │ │ │ -241#define SYBAOPSTDEV 0x30 │ │ │ │ │ -242#define SYBAOPSTDEVP 0x31 │ │ │ │ │ -243#define SYBAOPVAR 0x32 │ │ │ │ │ -244#define SYBAOPVARP 0x33 │ │ │ │ │ -245#define SYBAOPCHECKSUM_AGG 0x72 │ │ │ │ │ -246 │ │ │ │ │ -247#endif │ │ │ │ │ -248 │ │ │ │ │ -249typedef unsigned char DBBOOL; │ │ │ │ │ -250typedef char DBCHAR; │ │ │ │ │ -251typedef unsigned char DBBIT; │ │ │ │ │ -252typedef unsigned char DBTINYINT; │ │ │ │ │ -253typedef int16_t DBSMALLINT; │ │ │ │ │ -254typedef int32_t DBINT; │ │ │ │ │ -255typedef int64_t DBBIGINT; │ │ │ │ │ -256typedef unsigned char DBBINARY; │ │ │ │ │ -257typedef tds_sysdep_real32_type DBREAL; │ │ │ │ │ -258typedef tds_sysdep_real64_type DBFLT8; │ │ │ │ │ -259typedef uint16_t DBUSMALLINT; │ │ │ │ │ -260typedef uint32_t DBUINT; │ │ │ │ │ -261typedef uint64_t DBUBIGINT; │ │ │ │ │ -262 │ │ │ │ │ -263typedef struct │ │ │ │ │ -264{ │ │ │ │ │ -265 DBSMALLINT len; │ │ │ │ │ -266 char str[256]; │ │ │ │ │ -267} DBVARYCHAR; │ │ │ │ │ -268 │ │ │ │ │ -269typedef struct │ │ │ │ │ -270{ │ │ │ │ │ -271 DBSMALLINT len; │ │ │ │ │ -272 unsigned char array[256]; │ │ │ │ │ -273} DBVARYBIN; │ │ │ │ │ -274 │ │ │ │ │ -275typedef struct │ │ │ │ │ -276{ │ │ │ │ │ -277 unsigned char precision; │ │ │ │ │ -278 unsigned char scale; │ │ │ │ │ -279 unsigned char array[33]; │ │ │ │ │ -280} DBNUMERIC; │ │ │ │ │ -281 │ │ │ │ │ -282typedef DBNUMERIC DBDECIMAL; │ │ │ │ │ -283 │ │ │ │ │ -284typedef struct │ │ │ │ │ -285{ │ │ │ │ │ -286 DBINT mnyhigh; │ │ │ │ │ -287 DBUINT mnylow; │ │ │ │ │ -288} DBMONEY; │ │ │ │ │ -289 │ │ │ │ │ -290typedef struct │ │ │ │ │ -291{ │ │ │ │ │ -292 DBINT mny4; │ │ │ │ │ -293} DBMONEY4; │ │ │ │ │ -294 │ │ │ │ │ -295typedef struct │ │ │ │ │ -296{ │ │ │ │ │ -297 DBINT dtdays; │ │ │ │ │ -298 DBINT dttime; │ │ │ │ │ -299} DBDATETIME; │ │ │ │ │ -300 │ │ │ │ │ -301typedef struct │ │ │ │ │ -302{ │ │ │ │ │ -303 DBUSMALLINT days; /* days since Jan-1-1900 */ │ │ │ │ │ -304 DBUSMALLINT minutes; /* minutes since midnight */ │ │ │ │ │ -305} DBDATETIME4; │ │ │ │ │ -306 │ │ │ │ │ -307typedef struct │ │ │ │ │ -308{ │ │ │ │ │ -309 DBUBIGINT time; │ │ │ │ │ -310 DBINT date; │ │ │ │ │ -311 DBSMALLINT offset; │ │ │ │ │ -312 DBUSMALLINT time_prec:3; │ │ │ │ │ -313/* fix a problem with some public headers defining _res */ │ │ │ │ │ -314#undef _res │ │ │ │ │ -315 DBUSMALLINT _res:10; │ │ │ │ │ -316 DBUSMALLINT has_time:1; │ │ │ │ │ -317 DBUSMALLINT has_date:1; │ │ │ │ │ -318 DBUSMALLINT has_offset:1; │ │ │ │ │ -319} DBDATETIMEALL; │ │ │ │ │ -320 │ │ │ │ │ -321#ifdef MSDBLIB │ │ │ │ │ -322# define SQLCHAR SYBCHAR │ │ │ │ │ -323 typedef struct │ │ │ │ │ -324 { │ │ │ │ │ -325 DBUSMALLINT numdays; │ │ │ │ │ -326 DBUSMALLINT nummins; │ │ │ │ │ -327 } DBDATETIM4; │ │ │ │ │ -328#endif │ │ │ │ │ -329 │ │ │ │ │ -330typedef struct tds_dblib_loginrec LOGINREC; │ │ │ │ │ -331 │ │ │ │ │ -332#ifndef DOS32X │ │ │ │ │ -333typedef unsigned char BYTE; │ │ │ │ │ -334#endif │ │ │ │ │ +80/* status bits for CS_SERVERMSG */ │ │ │ │ │ +81#define CS_HASEED 0x01 │ │ │ │ │ +82 │ │ │ │ │ +83typedef struct _cs_blkdesc CS_BLKDESC; │ │ │ │ │ +84 │ │ │ │ │ +85/* CS_CAP_REQUEST values */ │ │ │ │ │ +86#define CS_REQ_LANG 1 │ │ │ │ │ +87#define CS_REQ_RPC 2 │ │ │ │ │ +88#define CS_REQ_NOTIF 3 │ │ │ │ │ +89#define CS_REQ_MSTMT 4 │ │ │ │ │ +90#define CS_REQ_BCP 5 │ │ │ │ │ +91#define CS_REQ_CURSOR 6 │ │ │ │ │ +92#define CS_REQ_DYN 7 │ │ │ │ │ +93#define CS_REQ_MSG 8 │ │ │ │ │ +94#define CS_REQ_PARAM 9 │ │ │ │ │ +95#define CS_DATA_INT1 10 │ │ │ │ │ +96#define CS_DATA_INT2 11 │ │ │ │ │ +97#define CS_DATA_INT4 12 │ │ │ │ │ +98#define CS_DATA_BIT 13 │ │ │ │ │ +99#define CS_DATA_CHAR 14 │ │ │ │ │ +100#define CS_DATA_VCHAR 15 │ │ │ │ │ +101#define CS_DATA_BIN 16 │ │ │ │ │ +102#define CS_DATA_VBIN 17 │ │ │ │ │ +103#define CS_DATA_MNY8 18 │ │ │ │ │ +104#define CS_DATA_MNY4 19 │ │ │ │ │ +105#define CS_DATA_DATE8 20 │ │ │ │ │ +106#define CS_DATA_DATE4 21 │ │ │ │ │ +107#define CS_DATA_FLT4 22 │ │ │ │ │ +108#define CS_DATA_FLT8 23 │ │ │ │ │ +109#define CS_DATA_NUM 24 │ │ │ │ │ +110#define CS_DATA_TEXT 25 │ │ │ │ │ +111#define CS_DATA_IMAGE 26 │ │ │ │ │ +112#define CS_DATA_DEC 27 │ │ │ │ │ +113#define CS_DATA_LCHAR 28 │ │ │ │ │ +114#define CS_DATA_LBIN 29 │ │ │ │ │ +115#define CS_DATA_INTN 30 │ │ │ │ │ +116#define CS_DATA_DATETIMEN 31 │ │ │ │ │ +117#define CS_DATA_MONEYN 32 │ │ │ │ │ +118#define CS_CSR_PREV 33 │ │ │ │ │ +119#define CS_CSR_FIRST 34 │ │ │ │ │ +120#define CS_CSR_LAST 35 │ │ │ │ │ +121#define CS_CSR_ABS 36 │ │ │ │ │ +122#define CS_CSR_REL 37 │ │ │ │ │ +123#define CS_CSR_MULTI 38 │ │ │ │ │ +124#define CS_CON_OOB 39 │ │ │ │ │ +125#define CS_CON_INBAND 40 │ │ │ │ │ +126#define CS_CON_LOGICAL 41 │ │ │ │ │ +127#define CS_PROTO_TEXT 42 │ │ │ │ │ +128#define CS_PROTO_BULK 43 │ │ │ │ │ +129#define CS_REQ_URGNOTIF 44 │ │ │ │ │ +130#define CS_DATA_SENSITIVITY 45 │ │ │ │ │ +131#define CS_DATA_BOUNDARY 46 │ │ │ │ │ +132#define CS_PROTO_DYNAMIC 47 │ │ │ │ │ +133#define CS_PROTO_DYNPROC 48 │ │ │ │ │ +134#define CS_DATA_FLTN 49 │ │ │ │ │ +135#define CS_DATA_BITN 50 │ │ │ │ │ +136#define CS_OPTION_GET 51 │ │ │ │ │ +137#define CS_DATA_INT8 52 │ │ │ │ │ +138#define CS_DATA_VOID 53 │ │ │ │ │ +139 │ │ │ │ │ +140/* CS_CAP_RESPONSE values */ │ │ │ │ │ +141#define CS_RES_NOMSG 1 │ │ │ │ │ +142#define CS_RES_NOEED 2 │ │ │ │ │ +143#define CS_RES_NOPARAM 3 │ │ │ │ │ +144#define CS_DATA_NOINT1 4 │ │ │ │ │ +145#define CS_DATA_NOINT2 5 │ │ │ │ │ +146#define CS_DATA_NOINT4 6 │ │ │ │ │ +147#define CS_DATA_NOBIT 7 │ │ │ │ │ +148#define CS_DATA_NOCHAR 8 │ │ │ │ │ +149#define CS_DATA_NOVCHAR 9 │ │ │ │ │ +150#define CS_DATA_NOBIN 10 │ │ │ │ │ +151#define CS_DATA_NOVBIN 11 │ │ │ │ │ +152#define CS_DATA_NOMNY8 12 │ │ │ │ │ +153#define CS_DATA_NOMNY4 13 │ │ │ │ │ +154#define CS_DATA_NODATE8 14 │ │ │ │ │ +155#define CS_DATA_NODATE4 15 │ │ │ │ │ +156#define CS_DATA_NOFLT4 16 │ │ │ │ │ +157#define CS_DATA_NOFLT8 17 │ │ │ │ │ +158#define CS_DATA_NONUM 18 │ │ │ │ │ +159#define CS_DATA_NOTEXT 19 │ │ │ │ │ +160#define CS_DATA_NOIMAGE 20 │ │ │ │ │ +161#define CS_DATA_NODEC 21 │ │ │ │ │ +162#define CS_DATA_NOLCHAR 22 │ │ │ │ │ +163#define CS_DATA_NOLBIN 23 │ │ │ │ │ +164#define CS_DATA_NOINTN 24 │ │ │ │ │ +165#define CS_DATA_NODATETIMEN 25 │ │ │ │ │ +166#define CS_DATA_NOMONEYN 26 │ │ │ │ │ +167#define CS_CON_NOOOB 27 │ │ │ │ │ +168#define CS_CON_NOINBAND 28 │ │ │ │ │ +169#define CS_PROTO_NOTEXT 29 │ │ │ │ │ +170#define CS_PROTO_NOBULK 30 │ │ │ │ │ +171#define CS_DATA_NOSENSITIVITY 31 │ │ │ │ │ +172#define CS_DATA_NOBOUNDARY 32 │ │ │ │ │ +173#define CS_RES_NOTDSDEBUG 33 │ │ │ │ │ +174#define CS_RES_NOSTRIPBLANKS 34 │ │ │ │ │ +175#define CS_DATA_NOINT8 35 │ │ │ │ │ +176 │ │ │ │ │ +177/* Properties */ │ │ │ │ │ +178enum │ │ │ │ │ +179{ │ │ │ │ │ +180/* │ │ │ │ │ +181 * These defines looks weird but programs can test support for defines, │ │ │ │ │ +182 * compiler can check enum and there are no define side effecs │ │ │ │ │ +183 */ │ │ │ │ │ +184 CS_USERNAME = 9100, │ │ │ │ │ +185#define CS_USERNAME CS_USERNAME │ │ │ │ │ +186 CS_PASSWORD = 9101, │ │ │ │ │ +187#define CS_PASSWORD CS_PASSWORD │ │ │ │ │ +188 CS_APPNAME = 9102, │ │ │ │ │ +189#define CS_APPNAME CS_APPNAME │ │ │ │ │ +190 CS_HOSTNAME = 9103, │ │ │ │ │ +191#define CS_HOSTNAME CS_HOSTNAME │ │ │ │ │ +192 CS_LOGIN_STATUS = 9104, │ │ │ │ │ +193#define CS_LOGIN_STATUS CS_LOGIN_STATUS │ │ │ │ │ +194 CS_TDS_VERSION = 9105, │ │ │ │ │ +195#define CS_TDS_VERSION CS_TDS_VERSION │ │ │ │ │ +196 CS_CHARSETCNV = 9106, │ │ │ │ │ +197#define CS_CHARSETCNV CS_CHARSETCNV │ │ │ │ │ +198 CS_PACKETSIZE = 9107, │ │ │ │ │ +199#define CS_PACKETSIZE CS_PACKETSIZE │ │ │ │ │ +200 CS_USERDATA = 9108, │ │ │ │ │ +201#define CS_USERDATA CS_USERDATA │ │ │ │ │ +202 CS_NETIO = 9110, │ │ │ │ │ +203#define CS_NETIO CS_NETIO │ │ │ │ │ +204 CS_TEXTLIMIT = 9112, │ │ │ │ │ +205#define CS_TEXTLIMIT CS_TEXTLIMIT │ │ │ │ │ +206 CS_HIDDEN_KEYS = 9113, │ │ │ │ │ +207#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS │ │ │ │ │ +208 CS_VERSION = 9114, │ │ │ │ │ +209#define CS_VERSION CS_VERSION │ │ │ │ │ +210 CS_IFILE = 9115, │ │ │ │ │ +211#define CS_IFILE CS_IFILE │ │ │ │ │ +212 CS_LOGIN_TIMEOUT = 9116, │ │ │ │ │ +213#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT │ │ │ │ │ +214 CS_TIMEOUT = 9117, │ │ │ │ │ +215#define CS_TIMEOUT CS_TIMEOUT │ │ │ │ │ +216 CS_MAX_CONNECT = 9118, │ │ │ │ │ +217#define CS_MAX_CONNECT CS_MAX_CONNECT │ │ │ │ │ +218 CS_EXPOSE_FMTS = 9120, │ │ │ │ │ +219#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS │ │ │ │ │ +220 CS_EXTRA_INF = 9121, │ │ │ │ │ +221#define CS_EXTRA_INF CS_EXTRA_INF │ │ │ │ │ +222 CS_ANSI_BINDS = 9123, │ │ │ │ │ +223#define CS_ANSI_BINDS CS_ANSI_BINDS │ │ │ │ │ +224 CS_BULK_LOGIN = 9124, │ │ │ │ │ +225#define CS_BULK_LOGIN CS_BULK_LOGIN │ │ │ │ │ +226 CS_LOC_PROP = 9125, │ │ │ │ │ +227#define CS_LOC_PROP CS_LOC_PROP │ │ │ │ │ +228 CS_PARENT_HANDLE = 9130, │ │ │ │ │ +229#define CS_PARENT_HANDLE CS_PARENT_HANDLE │ │ │ │ │ +230 CS_EED_CMD = 9131, │ │ │ │ │ +231#define CS_EED_CMD CS_EED_CMD │ │ │ │ │ +232 CS_DIAG_TIMEOUT = 9132, │ │ │ │ │ +233#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT │ │ │ │ │ +234 CS_DISABLE_POLL = 9133, │ │ │ │ │ +235#define CS_DISABLE_POLL CS_DISABLE_POLL │ │ │ │ │ +236 CS_SEC_ENCRYPTION = 9135, │ │ │ │ │ +237#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION │ │ │ │ │ +238 CS_SEC_CHALLENGE = 9136, │ │ │ │ │ +239#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE │ │ │ │ │ +240 CS_SEC_NEGOTIATE = 9137, │ │ │ │ │ +241#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE │ │ │ │ │ +242 CS_ENDPOINT = 9141, │ │ │ │ │ +243#define CS_ENDPOINT CS_ENDPOINT │ │ │ │ │ +244 CS_CON_STATUS = 9143, │ │ │ │ │ +245#define CS_CON_STATUS CS_CON_STATUS │ │ │ │ │ +246 CS_VER_STRING = 9144, │ │ │ │ │ +247#define CS_VER_STRING CS_VER_STRING │ │ │ │ │ +248 CS_SERVERNAME = 9146, │ │ │ │ │ +249#define CS_SERVERNAME CS_SERVERNAME │ │ │ │ │ +250 CS_SEC_APPDEFINED = 9149, │ │ │ │ │ +251#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED │ │ │ │ │ +252 CS_STICKY_BINDS = 9151, │ │ │ │ │ +253#define CS_STICKY_BINDS CS_STICKY_BINDS │ │ │ │ │ +254 CS_SEC_NETWORKAUTH = 9175, │ │ │ │ │ +255#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH │ │ │ │ │ +256 CS_SEC_DELEGATION = 9176, │ │ │ │ │ +257#define CS_SEC_DELEGATION CS_SEC_DELEGATION │ │ │ │ │ +258 CS_SEC_MUTUALAUTH = 9177, │ │ │ │ │ +259#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH │ │ │ │ │ +260 CS_SEC_SERVERPRINCIPAL = 9188, │ │ │ │ │ +261#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL │ │ │ │ │ +262 CS_SERVERADDR = 9206, │ │ │ │ │ +263#define CS_SERVERADDR CS_SERVERADDR │ │ │ │ │ +264/* settings from here are FreeTDS extensions */ │ │ │ │ │ +265 CS_PORT = 9300, │ │ │ │ │ +266#define CS_PORT CS_PORT │ │ │ │ │ +267 CS_CLIENTCHARSET = 9301, │ │ │ │ │ +268#define CS_CLIENTCHARSET CS_CLIENTCHARSET │ │ │ │ │ +269 CS_DATABASE = 9302, │ │ │ │ │ +270#define CS_DATABASE CS_DATABASE │ │ │ │ │ +271 CS_NOTE_EMPTY_DATA = 9303, │ │ │ │ │ +272#define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA │ │ │ │ │ +273 CS_PRODUCT_NAME = 9304 │ │ │ │ │ +274#define CS_PRODUCT_NAME CS_PRODUCT_NAME │ │ │ │ │ +275}; │ │ │ │ │ +276 │ │ │ │ │ +277/* Arbitrary precision math operators */ │ │ │ │ │ +278enum │ │ │ │ │ +279{ │ │ │ │ │ +280 CS_ADD = 1, │ │ │ │ │ +281 CS_SUB, │ │ │ │ │ +282 CS_MULT, │ │ │ │ │ +283 CS_DIV │ │ │ │ │ +284}; │ │ │ │ │ +285 │ │ │ │ │ +286enum │ │ │ │ │ +287{ │ │ │ │ │ +288 CS_TDS_AUTO = 0, │ │ │ │ │ +289#define CS_TDS_AUTO CS_TDS_AUTO │ │ │ │ │ +290 CS_TDS_40 = 7360, │ │ │ │ │ +291#define CS_TDS_40 CS_TDS_40 │ │ │ │ │ +292 CS_TDS_42, │ │ │ │ │ +293#define CS_TDS_42 CS_TDS_42 │ │ │ │ │ +294 CS_TDS_46, │ │ │ │ │ +295#define CS_TDS_46 CS_TDS_46 │ │ │ │ │ +296 CS_TDS_495, │ │ │ │ │ +297#define CS_TDS_495 CS_TDS_495 │ │ │ │ │ +298 CS_TDS_50, │ │ │ │ │ +299#define CS_TDS_50 CS_TDS_50 │ │ │ │ │ +300 CS_TDS_70, │ │ │ │ │ +301 CS_TDS_71, │ │ │ │ │ +302#define CS_TDS_71 CS_TDS_71 │ │ │ │ │ +303 CS_TDS_72, │ │ │ │ │ +304#define CS_TDS_72 CS_TDS_72 │ │ │ │ │ +305 CS_TDS_73, │ │ │ │ │ +306#define CS_TDS_73 CS_TDS_73 │ │ │ │ │ +307 CS_TDS_74, │ │ │ │ │ +308#define CS_TDS_74 CS_TDS_74 │ │ │ │ │ +309 CS_TDS_80, │ │ │ │ │ +310#define CS_TDS_80 CS_TDS_80 │ │ │ │ │ +311}; │ │ │ │ │ +312 │ │ │ │ │ +313/* bit mask values used by CS_DATAFMT.status */ │ │ │ │ │ +314#define CS_HIDDEN (1 << 0) │ │ │ │ │ +315#define CS_KEY (1 << 1) │ │ │ │ │ +316#define CS_VERSION_KEY (1 << 2) │ │ │ │ │ +317#define CS_NODATA (1 << 3) │ │ │ │ │ +318#define CS_UPDATABLE (1 << 4) │ │ │ │ │ +319#define CS_CANBENULL (1 << 5) │ │ │ │ │ +320#define CS_DESCIN (1 << 6) │ │ │ │ │ +321#define CS_DESCOUT (1 << 7) │ │ │ │ │ +322#define CS_INPUTVALUE (1 << 8) │ │ │ │ │ +323#define CS_UPDATECOL (1 << 9) │ │ │ │ │ +324#define CS_RETURN (1 << 10) │ │ │ │ │ +325#define CS_TIMESTAMP (1 << 13) │ │ │ │ │ +326#define CS_NODEFAULT (1 << 14) │ │ │ │ │ +327#define CS_IDENTITY (1 << 15) │ │ │ │ │ +328 │ │ │ │ │ +329/* │ │ │ │ │ +330 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1 │ │ │ │ │ +331 * (the documentation states -1) │ │ │ │ │ +332 */ │ │ │ │ │ +333#define CS_GOODDATA 0 │ │ │ │ │ +334#define CS_NULLDATA (-1) │ │ │ │ │ 335 │ │ │ │ │ -336typedef struct dbtypeinfo │ │ │ │ │ -337{ │ │ │ │ │ -338 DBINT precision; │ │ │ │ │ -339 DBINT scale; │ │ │ │ │ -340} DBTYPEINFO; │ │ │ │ │ -341 │ │ │ │ │ -342struct dbstring │ │ │ │ │ -343{ │ │ │ │ │ -344 BYTE *strtext; │ │ │ │ │ -345 DBINT strtotlen; │ │ │ │ │ -346 struct dbstring *strnext; │ │ │ │ │ -347}; │ │ │ │ │ -348typedef struct dbstring DBSTRING; │ │ │ │ │ -349 │ │ │ │ │ -350/* Used by dbcolinfo */ │ │ │ │ │ -351enum │ │ │ │ │ -352{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */ │ │ │ │ │ -353typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE; │ │ │ │ │ -354 │ │ │ │ │ -355typedef struct │ │ │ │ │ -356{ │ │ │ │ │ -357 DBINT SizeOfStruct; │ │ │ │ │ -358 DBCHAR Name[MAXCOLNAMELEN+2]; │ │ │ │ │ -359 DBCHAR ActualName[MAXCOLNAMELEN+2]; │ │ │ │ │ -360 DBCHAR TableName[MAXCOLNAMELEN+2]; │ │ │ │ │ -361 SHORT Type; │ │ │ │ │ -362 DBINT UserType; │ │ │ │ │ -363 DBINT MaxLength; │ │ │ │ │ -364 BYTE Precision; │ │ │ │ │ -365 BYTE Scale; │ │ │ │ │ -366 BOOL VarLength; │ │ │ │ │ -367 BYTE Null; │ │ │ │ │ -368 BYTE CaseSensitive; │ │ │ │ │ -369 BYTE Updatable; │ │ │ │ │ -370 BOOL Identity; │ │ │ │ │ -371 │ │ │ │ │ -372} DBCOL; │ │ │ │ │ -373 │ │ │ │ │ -374typedef struct │ │ │ │ │ -375{ │ │ │ │ │ -376 DBINT SizeOfStruct; │ │ │ │ │ -377 DBCHAR Name[MAXCOLNAMELEN+2]; │ │ │ │ │ -378 DBCHAR ActualName[MAXCOLNAMELEN+2]; │ │ │ │ │ -379 DBCHAR TableName[MAXCOLNAMELEN+2]; │ │ │ │ │ -380 SHORT Type; │ │ │ │ │ -381 DBINT UserType; │ │ │ │ │ -382 DBINT MaxLength; │ │ │ │ │ -383 BYTE Precision; │ │ │ │ │ -384 BYTE Scale; │ │ │ │ │ -385 BOOL VarLength; │ │ │ │ │ -386 BYTE Null; │ │ │ │ │ -387 BYTE CaseSensitive; │ │ │ │ │ -388 BYTE Updatable; │ │ │ │ │ -389 BOOL Identity; │ │ │ │ │ -390 SHORT ServerType; │ │ │ │ │ -391 DBINT ServerMaxLength; │ │ │ │ │ -392 DBCHAR ServerTypeDeclaration[256]; │ │ │ │ │ -393} DBCOL2; │ │ │ │ │ -394/* end dbcolinfo stuff */ │ │ │ │ │ -395 │ │ │ │ │ -396 │ │ │ │ │ -397 │ │ │ │ │ -398/* a large list of options, DBTEXTSIZE is needed by sybtcl */ │ │ │ │ │ -399#define DBPARSEONLY 0 │ │ │ │ │ -400#define DBESTIMATE 1 │ │ │ │ │ -401#define DBSHOWPLAN 2 │ │ │ │ │ -402#define DBNOEXEC 3 │ │ │ │ │ -403#define DBARITHIGNORE 4 │ │ │ │ │ -404#define DBNOCOUNT 5 │ │ │ │ │ -405#define DBARITHABORT 6 │ │ │ │ │ -406#define DBTEXTLIMIT 7 │ │ │ │ │ -407#define DBBROWSE 8 │ │ │ │ │ -408#define DBOFFSET 9 │ │ │ │ │ -409#define DBSTAT 10 │ │ │ │ │ -410#define DBERRLVL 11 │ │ │ │ │ -411#define DBCONFIRM 12 │ │ │ │ │ -412#define DBSTORPROCID 13 │ │ │ │ │ -413#define DBBUFFER 14 │ │ │ │ │ -414#define DBNOAUTOFREE 15 │ │ │ │ │ -415#define DBROWCOUNT 16 │ │ │ │ │ -416#define DBTEXTSIZE 17 │ │ │ │ │ -417#define DBNATLANG 18 │ │ │ │ │ -418#define DBDATEFORMAT 19 │ │ │ │ │ -419#define DBPRPAD 20 │ │ │ │ │ -420#define DBPRCOLSEP 21 │ │ │ │ │ -421#define DBPRLINELEN 22 │ │ │ │ │ -422#define DBPRLINESEP 23 │ │ │ │ │ -423#define DBLFCONVERT 24 │ │ │ │ │ -424#define DBDATEFIRST 25 │ │ │ │ │ -425#define DBCHAINXACTS 26 │ │ │ │ │ -426#define DBFIPSFLAG 27 │ │ │ │ │ -427#define DBISOLATION 28 │ │ │ │ │ -428#define DBAUTH 29 │ │ │ │ │ -429#define DBIDENTITY 30 │ │ │ │ │ -430#define DBNOIDCOL 31 │ │ │ │ │ -431#define DBDATESHORT 32 │ │ │ │ │ -432#define DBCLIENTCURSORS 33 │ │ │ │ │ -433#define DBSETTIME 34 │ │ │ │ │ -434#define DBQUOTEDIDENT 35 │ │ │ │ │ -435 │ │ │ │ │ -436#define DBNUMOPTIONS 36 │ │ │ │ │ -437 │ │ │ │ │ -438#define DBPADOFF 0 │ │ │ │ │ -439#define DBPADON 1 │ │ │ │ │ -440 │ │ │ │ │ -441#define OFF 0 │ │ │ │ │ -442#define ON 1 │ │ │ │ │ -443 │ │ │ │ │ -444#define NOSUCHOPTION 2 │ │ │ │ │ +336/* CS_CON_STATUS read-only property bit mask values */ │ │ │ │ │ +337#define CS_CONSTAT_CONNECTED 0x01 │ │ │ │ │ +338#define CS_CONSTAT_DEAD 0x02 │ │ │ │ │ +339 │ │ │ │ │ +340/* │ │ │ │ │ +341 * Code added for CURSOR support │ │ │ │ │ +342 * types accepted by ct_cursor │ │ │ │ │ +343 */ │ │ │ │ │ +344#define CS_CURSOR_DECLARE 700 │ │ │ │ │ +345#define CS_CURSOR_OPEN 701 │ │ │ │ │ +346#define CS_CURSOR_ROWS 703 │ │ │ │ │ +347#define CS_CURSOR_UPDATE 704 │ │ │ │ │ +348#define CS_CURSOR_DELETE 705 │ │ │ │ │ +349#define CS_CURSOR_CLOSE 706 │ │ │ │ │ +350#define CS_CURSOR_DEALLOC 707 │ │ │ │ │ +351#define CS_CURSOR_OPTION 725 │ │ │ │ │ +352 │ │ │ │ │ +353#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1) │ │ │ │ │ +354#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2) │ │ │ │ │ +355#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8) │ │ │ │ │ +356#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40) │ │ │ │ │ +357 │ │ │ │ │ +358 │ │ │ │ │ +359#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0) │ │ │ │ │ +360#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1) │ │ │ │ │ +361#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2) │ │ │ │ │ +362#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4) │ │ │ │ │ +363#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8) │ │ │ │ │ +364#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10) │ │ │ │ │ +365#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20) │ │ │ │ │ +366#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40) │ │ │ │ │ +367 │ │ │ │ │ +368#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126) │ │ │ │ │ +369#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127) │ │ │ │ │ +370#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128) │ │ │ │ │ +371#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129) │ │ │ │ │ +372 │ │ │ │ │ +373/* options accepted by ct_options() */ │ │ │ │ │ +374#define CS_OPT_DATEFIRST 5001 │ │ │ │ │ +375#define CS_OPT_TEXTSIZE 5002 │ │ │ │ │ +376#define CS_OPT_STATS_TIME 5003 │ │ │ │ │ +377#define CS_OPT_STATS_IO 5004 │ │ │ │ │ +378#define CS_OPT_ROWCOUNT 5005 │ │ │ │ │ +379#define CS_OPT_DATEFORMAT 5007 │ │ │ │ │ +380#define CS_OPT_ISOLATION 5008 │ │ │ │ │ +381#define CS_OPT_AUTHON 5009 │ │ │ │ │ +382#define CS_OPT_SHOWPLAN 5013 │ │ │ │ │ +383#define CS_OPT_NOEXEC 5014 │ │ │ │ │ +384#define CS_OPT_ARITHIGNORE 5015 │ │ │ │ │ +385#define CS_OPT_TRUNCIGNORE 5016 │ │ │ │ │ +386#define CS_OPT_ARITHABORT 5017 │ │ │ │ │ +387#define CS_OPT_PARSEONLY 5018 │ │ │ │ │ +388#define CS_OPT_GETDATA 5020 │ │ │ │ │ +389#define CS_OPT_NOCOUNT 5021 │ │ │ │ │ +390#define CS_OPT_FORCEPLAN 5023 │ │ │ │ │ +391#define CS_OPT_FORMATONLY 5024 │ │ │ │ │ +392#define CS_OPT_CHAINXACTS 5025 │ │ │ │ │ +393#define CS_OPT_CURCLOSEONXACT 5026 │ │ │ │ │ +394#define CS_OPT_FIPSFLAG 5027 │ │ │ │ │ +395#define CS_OPT_RESTREES 5028 │ │ │ │ │ +396#define CS_OPT_IDENTITYON 5029 │ │ │ │ │ +397#define CS_OPT_CURREAD 5030 │ │ │ │ │ +398#define CS_OPT_CURWRITE 5031 │ │ │ │ │ +399#define CS_OPT_IDENTITYOFF 5032 │ │ │ │ │ +400#define CS_OPT_AUTHOFF 5033 │ │ │ │ │ +401#define CS_OPT_ANSINULL 5034 │ │ │ │ │ +402#define CS_OPT_QUOTED_IDENT 5035 │ │ │ │ │ +403#define CS_OPT_ANSIPERM 5036 │ │ │ │ │ +404#define CS_OPT_STR_RTRUNC 5037 │ │ │ │ │ +405 │ │ │ │ │ +406/* options accepted by ct_command() */ │ │ │ │ │ +407enum ct_command_options │ │ │ │ │ +408{ │ │ │ │ │ +409 CS_MORE = 16, │ │ │ │ │ +410#define CS_MORE CS_MORE │ │ │ │ │ +411 CS_END = 32, │ │ │ │ │ +412#define CS_END CS_END │ │ │ │ │ +413 CS_RECOMPILE = 188, │ │ │ │ │ +414#define CS_RECOMPILE CS_RECOMPILE │ │ │ │ │ +415 CS_NO_RECOMPILE, │ │ │ │ │ +416#define CS_NO_RECOMPILE CS_NO_RECOMPILE │ │ │ │ │ +417 CS_BULK_INIT, │ │ │ │ │ +418#define CS_BULK_INIT CS_BULK_INIT │ │ │ │ │ +419 CS_BULK_CONT, │ │ │ │ │ +420#define CS_BULK_CONT CS_BULK_CONT │ │ │ │ │ +421 CS_BULK_DATA, │ │ │ │ │ +422#define CS_BULK_DATA CS_BULK_DATA │ │ │ │ │ +423 CS_COLUMN_DATA │ │ │ │ │ +424#define CS_COLUMN_DATA CS_COLUMN_DATA │ │ │ │ │ +425}; │ │ │ │ │ +426 │ │ │ │ │ +427 │ │ │ │ │ +428/* │ │ │ │ │ +429 * bind formats, should be mapped to TDS types │ │ │ │ │ +430 * can be a combination of bit │ │ │ │ │ +431 */ │ │ │ │ │ +432enum │ │ │ │ │ +433{ │ │ │ │ │ +434 CS_FMT_UNUSED = 0, │ │ │ │ │ +435#define CS_FMT_UNUSED CS_FMT_UNUSED │ │ │ │ │ +436 CS_FMT_NULLTERM = 1, │ │ │ │ │ +437#define CS_FMT_NULLTERM CS_FMT_NULLTERM │ │ │ │ │ +438 CS_FMT_PADNULL = 2, │ │ │ │ │ +439#define CS_FMT_PADBLANK CS_FMT_PADBLANK │ │ │ │ │ +440 CS_FMT_PADBLANK = 4, │ │ │ │ │ +441#define CS_FMT_PADNULL CS_FMT_PADNULL │ │ │ │ │ +442 CS_FMT_JUSTIFY_RT = 8 │ │ │ │ │ +443#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT │ │ │ │ │ +444}; │ │ │ │ │ 445 │ │ │ │ │ -446#define MAXOPTTEXT 32 │ │ │ │ │ -447 │ │ │ │ │ -448typedef struct tds_dblib_dbprocess DBPROCESS; │ │ │ │ │ -449 │ │ │ │ │ -450/* │ │ │ │ │ -451 * Sybase & Microsoft use different names for the dbdaterec members. │ │ │ │ │ -452 * Keep these two structures physically identical in memory. │ │ │ │ │ -453 * dbdatecrack() casts one to the other for ease of implementation. │ │ │ │ │ -454 * │ │ │ │ │ -455 * Giving credit where credit is due, we can acknowledge that │ │ │ │ │ -456 * Microsoft chose the better names here, hands down. ("datedmonth"?!) │ │ │ │ │ -457 */ │ │ │ │ │ -458struct tds_microsoft_dbdaterec │ │ │ │ │ -459{ │ │ │ │ │ -460 DBINT year; /* 1753 - 9999 */ │ │ │ │ │ -461 DBINT quarter; /* 1 - 4 */ │ │ │ │ │ -462 DBINT month; /* 1 - 12 */ │ │ │ │ │ -463 DBINT day; /* 1 - 31 */ │ │ │ │ │ -464 DBINT dayofyear; /* 1 - 366 */ │ │ │ │ │ -465 DBINT week; /* 1 - 54 (for leap years) */ │ │ │ │ │ -466 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */ │ │ │ │ │ -467 DBINT hour; /* 0 - 23 */ │ │ │ │ │ -468 DBINT minute; /* 0 - 59 */ │ │ │ │ │ -469 DBINT second; /* 0 - 59 */ │ │ │ │ │ -470 DBINT millisecond; /* 0 - 999 */ │ │ │ │ │ -471 DBINT tzone; /* -840 - 840 */ │ │ │ │ │ -472}; │ │ │ │ │ +446/* callbacks */ │ │ │ │ │ +447#define CS_COMPLETION_CB 1 │ │ │ │ │ +448#define CS_SERVERMSG_CB 2 │ │ │ │ │ +449#define CS_CLIENTMSG_CB 3 │ │ │ │ │ +450#define CS_NOTIF_CB 4 │ │ │ │ │ +451#define CS_ENCRYPT_CB 5 │ │ │ │ │ +452#define CS_CHALLENGE_CB 6 │ │ │ │ │ +453#define CS_DS_LOOKUP_CB 7 │ │ │ │ │ +454#define CS_SECSESSION_CB 8 │ │ │ │ │ +455#define CS_SIGNAL_CB 100 │ │ │ │ │ +456#define CS_MESSAGE_CB 9119 │ │ │ │ │ +457#define CS_INTERRUPT_CB 9400 │ │ │ │ │ +458 │ │ │ │ │ +459/* string types */ │ │ │ │ │ +460#define CS_NULLTERM -9 │ │ │ │ │ +461#define CS_WILDCARD -99 │ │ │ │ │ +462#define CS_NO_LIMIT -9999 │ │ │ │ │ +463#define CS_UNUSED -99999 │ │ │ │ │ +464 │ │ │ │ │ +465/* other */ │ │ │ │ │ +466#define CS_GET 33 │ │ │ │ │ +467#define CS_SET 34 │ │ │ │ │ +468#define CS_CLEAR 35 │ │ │ │ │ +469#define CS_INIT 36 │ │ │ │ │ +470#define CS_STATUS 37 │ │ │ │ │ +471#define CS_MSGLIMIT 38 │ │ │ │ │ +472#define CS_SUPPORTED 40 │ │ │ │ │ 473 │ │ │ │ │ -474struct tds_sybase_dbdaterec │ │ │ │ │ -475{ │ │ │ │ │ -476 DBINT dateyear; /* 1900 and counting */ │ │ │ │ │ -477 DBINT quarter; /* 0 - 3 (Microsoft only) */ │ │ │ │ │ -478 DBINT datemonth; /* 0 - 11 */ │ │ │ │ │ -479 DBINT datedmonth; /* 1 - 31 */ │ │ │ │ │ -480 DBINT datedyear; /* 1 - 366 */ │ │ │ │ │ -481 DBINT week; /* 1 - 54 (Microsoft only) */ │ │ │ │ │ -482 DBINT datedweek; /* 0 - 6 */ │ │ │ │ │ -483 DBINT datehour; /* 0 - 23 */ │ │ │ │ │ -484 DBINT dateminute; /* 0 - 59 */ │ │ │ │ │ -485 DBINT datesecond; /* 0 - 59 */ │ │ │ │ │ -486 DBINT datemsecond; /* 0 - 999 */ │ │ │ │ │ -487 DBINT datetzone; /* -840 - 840 */ │ │ │ │ │ -488}; │ │ │ │ │ -489 │ │ │ │ │ -490struct tds_microsoft_dbdaterec2 │ │ │ │ │ -491{ │ │ │ │ │ -492 DBINT year; /* 1753 - 9999 */ │ │ │ │ │ -493 DBINT quarter; /* 1 - 4 */ │ │ │ │ │ -494 DBINT month; /* 1 - 12 */ │ │ │ │ │ -495 DBINT day; /* 1 - 31 */ │ │ │ │ │ -496 DBINT dayofyear; /* 1 - 366 */ │ │ │ │ │ -497 DBINT week; /* 1 - 54 (for leap years) */ │ │ │ │ │ -498 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */ │ │ │ │ │ -499 DBINT hour; /* 0 - 23 */ │ │ │ │ │ -500 DBINT minute; /* 0 - 59 */ │ │ │ │ │ -501 DBINT second; /* 0 - 59 */ │ │ │ │ │ -502 DBINT nanosecond; /* 0 - 999999999 */ │ │ │ │ │ -503 DBINT tzone; /* 0 - 127 (Sybase only) */ │ │ │ │ │ -504}; │ │ │ │ │ -505 │ │ │ │ │ -506struct tds_sybase_dbdaterec2 │ │ │ │ │ -507{ │ │ │ │ │ -508 DBINT dateyear; /* 1900 and counting */ │ │ │ │ │ -509 DBINT quarter; /* 0 - 3 (Microsoft only) */ │ │ │ │ │ -510 DBINT datemonth; /* 0 - 11 */ │ │ │ │ │ -511 DBINT datedmonth; /* 1 - 31 */ │ │ │ │ │ -512 DBINT datedyear; /* 1 - 366 */ │ │ │ │ │ -513 DBINT week; /* 1 - 54 (Microsoft only) */ │ │ │ │ │ -514 DBINT datedweek; /* 0 - 6 */ │ │ │ │ │ -515 DBINT datehour; /* 0 - 23 */ │ │ │ │ │ -516 DBINT dateminute; /* 0 - 59 */ │ │ │ │ │ -517 DBINT datesecond; /* 0 - 59 */ │ │ │ │ │ -518 DBINT datensecond; /* 0 - 999999999 */ │ │ │ │ │ -519 DBINT datetzone; /* 0 - 127 */ │ │ │ │ │ -520}; │ │ │ │ │ -521 │ │ │ │ │ +474#define CS_CMD_DONE 4046 │ │ │ │ │ +475#define CS_CMD_SUCCEED 4047 │ │ │ │ │ +476#define CS_CMD_FAIL 4048 │ │ │ │ │ +477 │ │ │ │ │ +478/* commands */ │ │ │ │ │ +479#define CS_LANG_CMD 148 │ │ │ │ │ +480#define CS_RPC_CMD 149 │ │ │ │ │ +481#define CS_SEND_DATA_CMD 151 │ │ │ │ │ +482#define CS_SEND_BULK_CMD 153 │ │ │ │ │ +483 │ │ │ │ │ +484#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +485#define CS_VERSION_100 112 │ │ │ │ │ +486#define CS_VERSION_110 1100 │ │ │ │ │ +487#define CS_VERSION_120 1100 │ │ │ │ │ +488#define CS_VERSION_125 12500 │ │ │ │ │ +489#define CS_VERSION_150 15000 │ │ │ │ │ +490#else │ │ │ │ │ +491#define CS_VERSION_100 113 │ │ │ │ │ +492#define CS_VERSION_110 1101 │ │ │ │ │ +493#define CS_VERSION_120 CS_VERSION_110 │ │ │ │ │ +494#define CS_VERSION_125 12501 │ │ │ │ │ +495#define CS_VERSION_150 15001 │ │ │ │ │ +496#define CS_VERSION_155 15501 │ │ │ │ │ +497#define CS_VERSION_157 15701 │ │ │ │ │ +498#define CS_VERSION_160 16001 │ │ │ │ │ +499#endif │ │ │ │ │ +500 │ │ │ │ │ +501#define BLK_VERSION_100 CS_VERSION_100 │ │ │ │ │ +502#define BLK_VERSION_110 CS_VERSION_110 │ │ │ │ │ +503#define BLK_VERSION_120 CS_VERSION_120 │ │ │ │ │ +504#define BLK_VERSION_125 CS_VERSION_125 │ │ │ │ │ +505#define BLK_VERSION_150 CS_VERSION_150 │ │ │ │ │ +506#ifndef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +507#define BLK_VERSION_155 CS_VERSION_155 │ │ │ │ │ +508#define BLK_VERSION_157 CS_VERSION_157 │ │ │ │ │ +509#define BLK_VERSION_160 CS_VERSION_160 │ │ │ │ │ +510#endif │ │ │ │ │ +511 │ │ │ │ │ +512#define CS_FORCE_EXIT 300 │ │ │ │ │ +513#define CS_FORCE_CLOSE 301 │ │ │ │ │ +514 │ │ │ │ │ +515#define CS_SYNC_IO 8111 │ │ │ │ │ +516#define CS_ASYNC_IO 8112 │ │ │ │ │ +517#define CS_DEFER_IO 8113 │ │ │ │ │ +518 │ │ │ │ │ +519#define CS_CANCEL_CURRENT 6000 │ │ │ │ │ +520#define CS_CANCEL_ALL 6001 │ │ │ │ │ +521#define CS_CANCEL_ATTN 6002 │ │ │ │ │ 522 │ │ │ │ │ -523#ifdef MSDBLIB │ │ │ │ │ -524typedef struct tds_microsoft_dbdaterec DBDATEREC; │ │ │ │ │ -525typedef struct tds_microsoft_dbdaterec2 DBDATEREC2; │ │ │ │ │ -526#else │ │ │ │ │ -527typedef struct tds_sybase_dbdaterec DBDATEREC; │ │ │ │ │ -528typedef struct tds_sybase_dbdaterec2 DBDATEREC2; │ │ │ │ │ -529#endif │ │ │ │ │ -530 │ │ │ │ │ -531typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int │ │ │ │ │ -oserr, char *dberrstr, char *oserrstr); │ │ │ │ │ -532 │ │ │ │ │ -533typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, │ │ │ │ │ -int severity, char *msgtext, char *srvname, │ │ │ │ │ -534 char *proc, int line); │ │ │ │ │ -535 │ │ │ │ │ -536/* dbpoll() result codes, sybtcl needs DBRESULT */ │ │ │ │ │ -537#define DBRESULT 1 │ │ │ │ │ -538#define DBNOTIFICATION 2 │ │ │ │ │ -539#define DBTIMEOUT 3 │ │ │ │ │ -540#define DBINTERRUPT 4 │ │ │ │ │ -541 │ │ │ │ │ -542/* more sybtcl needs: */ │ │ │ │ │ -543#define DBTXTSLEN 8 │ │ │ │ │ -544 │ │ │ │ │ -545/* bind types */ │ │ │ │ │ -546#define CHARBIND 0 │ │ │ │ │ -547#define STRINGBIND 1 │ │ │ │ │ -548#define NTBSTRINGBIND 2 │ │ │ │ │ -549#define VARYCHARBIND 3 │ │ │ │ │ -550#define VARYBINBIND 4 │ │ │ │ │ -551#define TINYBIND 6 │ │ │ │ │ -552#define SMALLBIND 7 │ │ │ │ │ -553#define INTBIND 8 │ │ │ │ │ -554#define FLT8BIND 9 │ │ │ │ │ -555#define REALBIND 10 │ │ │ │ │ -556#define DATETIMEBIND 11 │ │ │ │ │ -557#define SMALLDATETIMEBIND 12 │ │ │ │ │ -558#define MONEYBIND 13 │ │ │ │ │ -559#define SMALLMONEYBIND 14 │ │ │ │ │ -560#define BINARYBIND 15 │ │ │ │ │ -561#define BITBIND 16 │ │ │ │ │ -562#define NUMERICBIND 17 │ │ │ │ │ -563#define DECIMALBIND 18 │ │ │ │ │ -564#define SRCNUMERICBIND 19 │ │ │ │ │ -565#define SRCDECIMALBIND 20 │ │ │ │ │ -566#define DATEBIND 21 │ │ │ │ │ -567#define TIMEBIND 22 │ │ │ │ │ -568#define BIGDATETIMEBIND 23 │ │ │ │ │ -569#define BIGTIMEBIND 24 │ │ │ │ │ -570#define BIGINTBIND 30 │ │ │ │ │ -571#define DATETIME2BIND 31 │ │ │ │ │ -572#define MAXBINDTYPES 32 /* keep last */ │ │ │ │ │ -573 │ │ │ │ │ -574#define DBPRCOLSEP 21 │ │ │ │ │ -575#define DBPRLINELEN 22 │ │ │ │ │ -576#define DBRPCNORETURN 0 │ │ │ │ │ -577#define DBRPCRETURN 1 │ │ │ │ │ -578#define DBRPCDEFAULT 2 │ │ │ │ │ -579 │ │ │ │ │ -580#define REG_ROW -1 │ │ │ │ │ -581#define MORE_ROWS -1 │ │ │ │ │ -582#define NO_MORE_ROWS -2 │ │ │ │ │ -583#define BUF_FULL -3 │ │ │ │ │ -584#define NO_MORE_RESULTS 2 │ │ │ │ │ -585#define SUCCEED 1 │ │ │ │ │ -586#define FAIL 0 │ │ │ │ │ -587 │ │ │ │ │ -588#define DB_IN 1 │ │ │ │ │ -589#define DB_OUT 2 │ │ │ │ │ -590#define DB_QUERYOUT 3 │ │ │ │ │ -591 │ │ │ │ │ -592#define DBSINGLE 0 │ │ │ │ │ -593#define DBDOUBLE 1 │ │ │ │ │ -594#define DBBOTH 2 │ │ │ │ │ -595 │ │ │ │ │ -596/* remote procedure call (rpc) options */ │ │ │ │ │ -597#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001) │ │ │ │ │ -598#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002) │ │ │ │ │ -599#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008) │ │ │ │ │ -600 │ │ │ │ │ -601#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ -602DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]); │ │ │ │ │ -603 │ │ │ │ │ -604DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum); │ │ │ │ │ -605 │ │ │ │ │ -606RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, │ │ │ │ │ -BYTE * values); │ │ │ │ │ -607RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, │ │ │ │ │ -DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo); │ │ │ │ │ -608void dbcursorclose(DBCURSOR * hc); │ │ │ │ │ -609RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT │ │ │ │ │ -* coltype, DBINT * collen, DBINT * usertype); │ │ │ │ │ -610RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum); │ │ │ │ │ -611RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows); │ │ │ │ │ -612DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, │ │ │ │ │ -SHORT concuropt, USHORT nrows, DBINT * pstatus); │ │ │ │ │ -613 │ │ │ │ │ -614int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2); │ │ │ │ │ -615RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1); │ │ │ │ │ -616RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int │ │ │ │ │ -value); │ │ │ │ │ -617int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * │ │ │ │ │ -datetime); │ │ │ │ │ -618char *dateorder(DBPROCESS * dbprocess, char *language); │ │ │ │ │ -619DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * │ │ │ │ │ -datetime); │ │ │ │ │ -620RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1); │ │ │ │ │ -621char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum); │ │ │ │ │ -622 │ │ │ │ │ -623int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom); │ │ │ │ │ -624 │ │ │ │ │ -625char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname); │ │ │ │ │ -626void dbfreequal(char *qualptr); │ │ │ │ │ -627 │ │ │ │ │ -628DBSORTORDER *dbloadsort(DBPROCESS * dbprocess); │ │ │ │ │ -629RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder); │ │ │ │ │ -630 │ │ │ │ │ -631RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_ │ │ │ │ │ -name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp); │ │ │ │ │ -632 │ │ │ │ │ -633RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, │ │ │ │ │ -DBMONEY4 * quotient); │ │ │ │ │ -634RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ -* prod); │ │ │ │ │ -635RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ -sum); │ │ │ │ │ -636RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY │ │ │ │ │ -* quotient); │ │ │ │ │ -637RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int │ │ │ │ │ -*remainder); │ │ │ │ │ -638RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * │ │ │ │ │ -negative); │ │ │ │ │ -639RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, │ │ │ │ │ -DBBOOL * zero); │ │ │ │ │ -640RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ -prod); │ │ │ │ │ -641RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, │ │ │ │ │ -DBBOOL * zero); │ │ │ │ │ -642RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int │ │ │ │ │ -addend); │ │ │ │ │ -643 │ │ │ │ │ -644 │ │ │ │ │ -645RETCODE dbnpcreate(DBPROCESS * dbprocess); │ │ │ │ │ -646RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, │ │ │ │ │ -DBSMALLINT namelen); │ │ │ │ │ -647 │ │ │ │ │ -648int DBNUMORDERS(DBPROCESS * dbprocess); │ │ │ │ │ -649 │ │ │ │ │ -650RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_ │ │ │ │ │ -dbproc, int *return_reason); │ │ │ │ │ -651int dbordercol(DBPROCESS * dbprocess, int order); │ │ │ │ │ -652 │ │ │ │ │ -653RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ -namelen); │ │ │ │ │ -654RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options); │ │ │ │ │ -655RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ -namelen, INTFUNCPTR handler); │ │ │ │ │ -656RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT │ │ │ │ │ -namelen); │ │ │ │ │ -657RETCODE dbreglist(DBPROCESS * dbproc); │ │ │ │ │ -658RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ -namelen); │ │ │ │ │ -659RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT │ │ │ │ │ -datalen, BYTE * data); │ │ │ │ │ -660RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ -namelen, DBUSMALLINT options); │ │ │ │ │ -661RETCODE dbregwatchlist(DBPROCESS * dbprocess); │ │ │ │ │ -662 │ │ │ │ │ -663void dbrpwclr(LOGINREC * login); │ │ │ │ │ -664RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int │ │ │ │ │ -pwlen); │ │ │ │ │ -665 │ │ │ │ │ -666DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * │ │ │ │ │ -buf); │ │ │ │ │ -667RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, │ │ │ │ │ -DBINT size, BYTE * buf); │ │ │ │ │ -668 │ │ │ │ │ -669RETCODE dbsetdeflang(char *language); │ │ │ │ │ -670 │ │ │ │ │ -671int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, │ │ │ │ │ -DBSORTORDER * sort); │ │ │ │ │ -672int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, │ │ │ │ │ -DBSORTORDER * sort); │ │ │ │ │ -673 │ │ │ │ │ -674DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum); │ │ │ │ │ -675int dbtabcount(DBPROCESS * dbprocess); │ │ │ │ │ -676char *dbtabname(DBPROCESS * dbprocess, int tabnum); │ │ │ │ │ -677char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum); │ │ │ │ │ -678 │ │ │ │ │ -679RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp); │ │ │ │ │ -680RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp); │ │ │ │ │ -681 │ │ │ │ │ -682RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo); │ │ │ │ │ -683RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo); │ │ │ │ │ -684 │ │ │ │ │ -685int dbtsnewlen(DBPROCESS * dbprocess); │ │ │ │ │ -686DBBINARY *dbtsnewval(DBPROCESS * dbprocess); │ │ │ │ │ -687RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int │ │ │ │ │ -tabnum, char *tabname); │ │ │ │ │ -688 │ │ │ │ │ -689RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * │ │ │ │ │ -clt_todisp); │ │ │ │ │ -690int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int │ │ │ │ │ -destlen, DBXLATE * xlt, int *srcbytes_used, │ │ │ │ │ -691 DBBOOL srcend, int status); │ │ │ │ │ -692 │ │ │ │ │ -693RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text); │ │ │ │ │ -694RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]); │ │ │ │ │ -695 │ │ │ │ │ -696void build_xact_string(char *xact_name, char *service_name, DBINT commid, │ │ │ │ │ -char *result); │ │ │ │ │ -697RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n); │ │ │ │ │ -698RETCODE abort_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ -699void close_commit(DBPROCESS * connect); │ │ │ │ │ -700RETCODE commit_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ -701DBPROCESS *open_commit(LOGINREC * login, char *servername); │ │ │ │ │ -702RETCODE scan_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ -703DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_ │ │ │ │ │ -name, int site_count); │ │ │ │ │ -704DBINT stat_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ -705 │ │ │ │ │ -706#endif /* define unimplemented */ │ │ │ │ │ -707 │ │ │ │ │ -708BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -709DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -710RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int │ │ │ │ │ -vartype, DBINT varlen, BYTE * varaddr); │ │ │ │ │ -711RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int │ │ │ │ │ -vartype, DBINT varlen, BYTE * varaddr, │ │ │ │ │ -712 DBTYPEINFO * typeinfo); │ │ │ │ │ -713int dbaltcolid(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -714DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -715int dbaltop(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -716int dbalttype(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -717DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -718RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT │ │ │ │ │ -* indicator); │ │ │ │ │ -719RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, │ │ │ │ │ -BYTE * varaddr); │ │ │ │ │ -720RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT │ │ │ │ │ -varlen, BYTE * varaddr, DBTYPEINFO * typeinfo); │ │ │ │ │ -721int dbbufsize(DBPROCESS * dbprocess); │ │ │ │ │ -722BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size); │ │ │ │ │ -723RETCODE dbcancel(DBPROCESS * dbproc); │ │ │ │ │ -724RETCODE dbcanquery(DBPROCESS * dbproc); │ │ │ │ │ -725char *dbchange(DBPROCESS * dbprocess); │ │ │ │ │ -726DBBOOL dbcharsetconv(DBPROCESS * dbprocess); │ │ │ │ │ -727void dbclose(DBPROCESS * dbproc); │ │ │ │ │ -728void dbclrbuf(DBPROCESS * dbproc, DBINT n); │ │ │ │ │ -729RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]); │ │ │ │ │ -730RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]); │ │ │ │ │ -731RETCODE dbcmdrow(DBPROCESS * dbproc); │ │ │ │ │ -732 │ │ │ │ │ -733#define DBCMDROW(x) dbcmdrow((x)) │ │ │ │ │ -734RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol ); │ │ │ │ │ -735RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT │ │ │ │ │ -computeid, DBCOL *pdbcol); │ │ │ │ │ -736DBINT dbcollen(DBPROCESS * dbproc, int column); │ │ │ │ │ -737char *dbcolname(DBPROCESS * dbproc, int column); │ │ │ │ │ -738const char *dbacolname(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ -739char *dbcolsource(DBPROCESS * dbproc, int colnum); │ │ │ │ │ -740int dbcoltype(DBPROCESS * dbproc, int column); │ │ │ │ │ -741DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column); │ │ │ │ │ -742DBINT dbcolutype(DBPROCESS * dbprocess, int column); │ │ │ │ │ -743DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT │ │ │ │ │ -srclen, int desttype, BYTE * dest, DBINT destlen); │ │ │ │ │ -744DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, │ │ │ │ │ -DBINT srclen, int desttype, BYTE * dest, DBINT destlen, │ │ │ │ │ -745 DBTYPEINFO * typeinfo); │ │ │ │ │ -746BOOL dbiscount(DBPROCESS * dbproc); │ │ │ │ │ -747DBINT dbcount(DBPROCESS * dbproc); │ │ │ │ │ -748 │ │ │ │ │ -749#define DBCOUNT(x) dbcount((x)) │ │ │ │ │ -750int dbcurcmd(DBPROCESS * dbproc); │ │ │ │ │ -751 │ │ │ │ │ -752#define DBCURCMD(x) dbcurcmd((x)) │ │ │ │ │ -753DBINT dbcurrow(DBPROCESS * dbproc); │ │ │ │ │ -754 │ │ │ │ │ -755#define DBCURROW(x) dbcurrow((x)) │ │ │ │ │ -756BYTE *dbdata(DBPROCESS * dbproc, int column); │ │ │ │ │ -757int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2); │ │ │ │ │ -758RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt); │ │ │ │ │ -759RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const │ │ │ │ │ -void *data); │ │ │ │ │ -760DBINT dbdatlen(DBPROCESS * dbproc, int column); │ │ │ │ │ -761DBBOOL dbdead(DBPROCESS * dbproc); │ │ │ │ │ -762 │ │ │ │ │ -763#define DBDEAD(x) dbdead((x)) │ │ │ │ │ -764EHANDLEFUNC dberrhandle(EHANDLEFUNC handler); │ │ │ │ │ -765void dbexit(void); │ │ │ │ │ -766RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...); │ │ │ │ │ -767DBINT dbfirstrow(DBPROCESS * dbproc); │ │ │ │ │ -768 │ │ │ │ │ -769#define DBFIRSTROW(x) dbfirstrow((x)) │ │ │ │ │ -770void dbfreebuf(DBPROCESS * dbproc); │ │ │ │ │ -771char *dbgetchar(DBPROCESS * dbprocess, int n); │ │ │ │ │ -772char *dbgetcharset(DBPROCESS * dbprocess); │ │ │ │ │ -773int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len); │ │ │ │ │ -774int dbgetmaxprocs(void); │ │ │ │ │ -775char *dbgetnatlanf(DBPROCESS * dbprocess); │ │ │ │ │ -776int dbgetpacket(DBPROCESS * dbproc); │ │ │ │ │ -777RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row); │ │ │ │ │ -778int dbgettime(void); │ │ │ │ │ -779#define DBGETTIME dbgettime │ │ │ │ │ -780BYTE *dbgetuserdata(DBPROCESS * dbproc); │ │ │ │ │ -781DBBOOL dbhasretstat(DBPROCESS * dbproc); │ │ │ │ │ -782RETCODE dbinit(void); │ │ │ │ │ -783int dbiordesc(DBPROCESS * dbproc); │ │ │ │ │ -784 │ │ │ │ │ -785#define DBIORDESC(x) dbiordesc((x)) │ │ │ │ │ -786int dbiowdesc(DBPROCESS * dbproc); │ │ │ │ │ -787 │ │ │ │ │ -788#define DBIOWDESC(x) dbiowdesc((x)) │ │ │ │ │ -789DBBOOL dbisavail(DBPROCESS * dbprocess); │ │ │ │ │ -790 │ │ │ │ │ -791#define DBISAVAIL(x) dbisavail((x)) │ │ │ │ │ -792DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]); │ │ │ │ │ -793DBINT dblastrow(DBPROCESS * dbproc); │ │ │ │ │ -794 │ │ │ │ │ -795#define DBLASTROW(x) dblastrow((x)) │ │ │ │ │ -796LOGINREC *dblogin(void); │ │ │ │ │ -797void dbloginfree(LOGINREC * login); │ │ │ │ │ +523#define CS_ROW_COUNT 800 │ │ │ │ │ +524#define CS_CMD_NUMBER 801 │ │ │ │ │ +525#define CS_NUM_COMPUTES 802 │ │ │ │ │ +526#define CS_NUMDATA 803 │ │ │ │ │ +527#define CS_NUMORDERCOLS 805 │ │ │ │ │ +528#define CS_MSGTYPE 806 │ │ │ │ │ +529#define CS_BROWSE_INFO 807 │ │ │ │ │ +530#define CS_TRANS_STATE 808 │ │ │ │ │ +531 │ │ │ │ │ +532#define CS_TRAN_UNDEFINED 0 │ │ │ │ │ +533#define CS_TRAN_IN_PROGRESS 1 │ │ │ │ │ +534#define CS_TRAN_COMPLETED 2 │ │ │ │ │ +535#define CS_TRAN_FAIL 3 │ │ │ │ │ +536#define CS_TRAN_STMT_FAIL 4 │ │ │ │ │ +537 │ │ │ │ │ +538#define CS_COMP_OP 5350 │ │ │ │ │ +539#define CS_COMP_ID 5351 │ │ │ │ │ +540#define CS_COMP_COLID 5352 │ │ │ │ │ +541#define CS_COMP_BYLIST 5353 │ │ │ │ │ +542#define CS_BYLIST_LEN 5354 │ │ │ │ │ +543 │ │ │ │ │ +544#define CS_NO_COUNT -1 │ │ │ │ │ +545 │ │ │ │ │ +546#define CS_OP_SUM 5370 │ │ │ │ │ +547#define CS_OP_AVG 5371 │ │ │ │ │ +548#define CS_OP_COUNT 5372 │ │ │ │ │ +549#define CS_OP_MIN 5373 │ │ │ │ │ +550#define CS_OP_MAX 5374 │ │ │ │ │ +551 │ │ │ │ │ +552#define CS_CAP_REQUEST 1 │ │ │ │ │ +553#define CS_CAP_RESPONSE 2 │ │ │ │ │ +554 │ │ │ │ │ +555#define CS_PREPARE 717 │ │ │ │ │ +556#define CS_EXECUTE 718 │ │ │ │ │ +557#define CS_DESCRIBE_INPUT 720 │ │ │ │ │ +558#define CS_DESCRIBE_OUTPUT 721 │ │ │ │ │ +559 │ │ │ │ │ +560#define CS_DEALLOC 711 │ │ │ │ │ +561 │ │ │ │ │ +562#define CS_LC_ALL 7 │ │ │ │ │ +563#define CS_SYB_LANG 8 │ │ │ │ │ +564#define CS_SYB_CHARSET 9 │ │ │ │ │ +565#define CS_SYB_SORTORDER 10 │ │ │ │ │ +566#define CS_SYB_COLLATE CS_SYB_SORTORDER │ │ │ │ │ +567#define CS_SYB_LANG_CHARSET 11 │ │ │ │ │ +568 │ │ │ │ │ +569#define CS_BLK_IN 1 │ │ │ │ │ +570#define CS_BLK_OUT 2 │ │ │ │ │ +571 │ │ │ │ │ +572#define CS_BLK_BATCH 1 │ │ │ │ │ +573#define CS_BLK_ALL 2 │ │ │ │ │ +574#define CS_BLK_CANCEL 3 │ │ │ │ │ +575 │ │ │ │ │ +576/* to do support these */ │ │ │ │ │ +577 │ │ │ │ │ +578#define CS_BLK_ARRAY_MAXLEN 0x1000 │ │ │ │ │ +579#define CS_DEF_PREC 18 │ │ │ │ │ +580 │ │ │ │ │ +581/* Error Severities */ │ │ │ │ │ +582#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ +583#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ +584#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ +585#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ +586#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ +587#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ +588#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ +589#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ +590 │ │ │ │ │ +591/* result_types */ │ │ │ │ │ +592#define CS_ROW_RESULT 4040 │ │ │ │ │ +593#define CS_CURSOR_RESULT 4041 │ │ │ │ │ +594#define CS_PARAM_RESULT 4042 │ │ │ │ │ +595#define CS_STATUS_RESULT 4043 │ │ │ │ │ +596#define CS_MSG_RESULT 4044 │ │ │ │ │ +597#define CS_COMPUTE_RESULT 4045 │ │ │ │ │ +598#define CS_ROWFMT_RESULT 4049 │ │ │ │ │ +599#define CS_COMPUTEFMT_RESULT 4050 │ │ │ │ │ +600#define CS_DESCRIBE_RESULT 4051 │ │ │ │ │ +601 │ │ │ │ │ +602/* bind types */ │ │ │ │ │ +603#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1) │ │ │ │ │ +604#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ +605#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ +606#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ +607#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ +608#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ +609#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ +610#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ +611#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ +612#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8) │ │ │ │ │ +613#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9) │ │ │ │ │ +614#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10) │ │ │ │ │ +615#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11) │ │ │ │ │ +616#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12) │ │ │ │ │ +617#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13) │ │ │ │ │ +618#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14) │ │ │ │ │ +619#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15) │ │ │ │ │ +620#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16) │ │ │ │ │ +621#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17) │ │ │ │ │ +622#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18) │ │ │ │ │ +623#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19) │ │ │ │ │ +624#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20) │ │ │ │ │ +625#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21) │ │ │ │ │ +626#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22) │ │ │ │ │ +627#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23) │ │ │ │ │ +628#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24) │ │ │ │ │ +629#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25) │ │ │ │ │ +630#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26) │ │ │ │ │ +631#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27) │ │ │ │ │ +632#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28) │ │ │ │ │ +633#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29) │ │ │ │ │ +634#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30) │ │ │ │ │ +635#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31) │ │ │ │ │ +636#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32) │ │ │ │ │ +637#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33) │ │ │ │ │ +638#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34) │ │ │ │ │ +639#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35) │ │ │ │ │ +640#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36) │ │ │ │ │ +641#define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37) │ │ │ │ │ +642#define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38) │ │ │ │ │ +643#define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39) │ │ │ │ │ +644#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40) │ │ │ │ │ +645 │ │ │ │ │ +646#define CS_MIN_SYBTYPE CS_CHAR_TYPE │ │ │ │ │ +647#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE │ │ │ │ │ +648 │ │ │ │ │ +649#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100) │ │ │ │ │ +650/* cs_dt_info type values */ │ │ │ │ │ +651enum │ │ │ │ │ +652{ │ │ │ │ │ +653 CS_MONTH = 7340, │ │ │ │ │ +654#define CS_MONTH CS_MONTH │ │ │ │ │ +655 CS_SHORTMONTH, │ │ │ │ │ +656#define CS_SHORTMONTH CS_SHORTMONTH │ │ │ │ │ +657 CS_DAYNAME, │ │ │ │ │ +658#define CS_DAYNAME CS_DAYNAME │ │ │ │ │ +659 CS_DATEORDER, │ │ │ │ │ +660#define CS_DATEORDER CS_DATEORDER │ │ │ │ │ +661 CS_12HOUR, │ │ │ │ │ +662#define CS_12HOUR CS_12HOUR │ │ │ │ │ +663 CS_DT_CONVFMT │ │ │ │ │ +664#define CS_DT_CONVFMT CS_DT_CONVFMT │ │ │ │ │ +665}; │ │ │ │ │ +666 │ │ │ │ │ +667/* DT_CONVFMT types */ │ │ │ │ │ +668enum │ │ │ │ │ +669{ │ │ │ │ │ +670 CS_DATES_SHORT = 0, │ │ │ │ │ +671#define CS_DATES_SHORT CS_DATES_SHORT │ │ │ │ │ +672 CS_DATES_MDY1, │ │ │ │ │ +673#define CS_DATES_MDY1 CS_DATES_MDY1 │ │ │ │ │ +674 CS_DATES_YMD1, │ │ │ │ │ +675#define CS_DATES_YMD1 CS_DATES_YMD1 │ │ │ │ │ +676 CS_DATES_DMY1, │ │ │ │ │ +677#define CS_DATES_DMY1 CS_DATES_DMY1 │ │ │ │ │ +678 CS_DATES_DMY2, │ │ │ │ │ +679#define CS_DATES_DMY2 CS_DATES_DMY2 │ │ │ │ │ +680 CS_DATES_DMY3, │ │ │ │ │ +681#define CS_DATES_DMY3 CS_DATES_DMY3 │ │ │ │ │ +682 CS_DATES_DMY4, │ │ │ │ │ +683#define CS_DATES_DMY4 CS_DATES_DMY4 │ │ │ │ │ +684 CS_DATES_MDY2, │ │ │ │ │ +685#define CS_DATES_MDY2 CS_DATES_MDY2 │ │ │ │ │ +686 CS_DATES_HMS, │ │ │ │ │ +687#define CS_DATES_HMS CS_DATES_HMS │ │ │ │ │ +688 CS_DATES_LONG, │ │ │ │ │ +689#define CS_DATES_LONG CS_DATES_LONG │ │ │ │ │ +690 CS_DATES_MDY3, │ │ │ │ │ +691#define CS_DATES_MDY3 CS_DATES_MDY3 │ │ │ │ │ +692 CS_DATES_YMD2, │ │ │ │ │ +693#define CS_DATES_YMD2 CS_DATES_YMD2 │ │ │ │ │ +694 CS_DATES_YMD3, │ │ │ │ │ +695#define CS_DATES_YMD3 CS_DATES_YMD3 │ │ │ │ │ +696 CS_DATES_YDM1, │ │ │ │ │ +697#define CS_DATES_YDM1 CS_DATES_YDM1 │ │ │ │ │ +698 CS_DATES_MYD1, │ │ │ │ │ +699#define CS_DATES_MYD1 CS_DATES_MYD1 │ │ │ │ │ +700 CS_DATES_DYM1, │ │ │ │ │ +701#define CS_DATES_DYM1 CS_DATES_DYM1 │ │ │ │ │ +702 CS_DATES_MDY1_YYYY = 101, │ │ │ │ │ +703#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY │ │ │ │ │ +704 CS_DATES_YMD1_YYYY, │ │ │ │ │ +705#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY │ │ │ │ │ +706 CS_DATES_DMY1_YYYY, │ │ │ │ │ +707#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY │ │ │ │ │ +708 CS_DATES_DMY2_YYYY, │ │ │ │ │ +709#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY │ │ │ │ │ +710 CS_DATES_DMY3_YYYY, │ │ │ │ │ +711#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY │ │ │ │ │ +712 CS_DATES_DMY4_YYYY, │ │ │ │ │ +713#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY │ │ │ │ │ +714 CS_DATES_MDY2_YYYY, │ │ │ │ │ +715#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY │ │ │ │ │ +716 CS_DATES_MDY3_YYYY = 110, │ │ │ │ │ +717#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY │ │ │ │ │ +718 CS_DATES_YMD2_YYYY, │ │ │ │ │ +719#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY │ │ │ │ │ +720 CS_DATES_YMD3_YYYY │ │ │ │ │ +721#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY │ │ │ │ │ +722}; │ │ │ │ │ +723 │ │ │ │ │ +724typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * │ │ │ │ │ +srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest, │ │ │ │ │ +725 CS_INT * destlen); │ │ │ │ │ +726 │ │ │ │ │ +727typedef struct _cs_objname │ │ │ │ │ +728{ │ │ │ │ │ +729 CS_BOOL thinkexists; │ │ │ │ │ +730 CS_INT object_type; │ │ │ │ │ +731#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +732 CS_CHAR last_name[CS_MAX_NAME]; │ │ │ │ │ +733 CS_INT lnlen; │ │ │ │ │ +734 CS_CHAR first_name[CS_MAX_NAME]; │ │ │ │ │ +735#else │ │ │ │ │ +736 CS_CHAR last_name[CS_MAX_CHAR]; │ │ │ │ │ +737 CS_INT lnlen; │ │ │ │ │ +738 CS_CHAR first_name[CS_MAX_CHAR]; │ │ │ │ │ +739#endif │ │ │ │ │ +740 CS_INT fnlen; │ │ │ │ │ +741 CS_VOID *scope; │ │ │ │ │ +742 CS_INT scopelen; │ │ │ │ │ +743 CS_VOID *thread; │ │ │ │ │ +744 CS_INT threadlen; │ │ │ │ │ +745} CS_OBJNAME; │ │ │ │ │ +746 │ │ │ │ │ +747typedef struct _cs_objdata │ │ │ │ │ +748{ │ │ │ │ │ +749 CS_BOOL actuallyexists; │ │ │ │ │ +750 CS_CONNECTION *connection; │ │ │ │ │ +751 CS_COMMAND *command; │ │ │ │ │ +752 CS_VOID *buffer; │ │ │ │ │ +753 CS_INT buflen; │ │ │ │ │ +754} CS_OBJDATA; │ │ │ │ │ +755 │ │ │ │ │ +756/* Eventually, these should be in terms of TDS values */ │ │ │ │ │ +757enum │ │ │ │ │ +758{ │ │ │ │ │ +759 CS_OPT_MONDAY = 1, │ │ │ │ │ +760 CS_OPT_TUESDAY, │ │ │ │ │ +761 CS_OPT_WEDNESDAY, │ │ │ │ │ +762 CS_OPT_THURSDAY, │ │ │ │ │ +763 CS_OPT_FRIDAY, │ │ │ │ │ +764 CS_OPT_SATURDAY, │ │ │ │ │ +765 CS_OPT_SUNDAY │ │ │ │ │ +766}; │ │ │ │ │ +767enum │ │ │ │ │ +768{ │ │ │ │ │ +769 CS_OPT_FMTMDY = 1, │ │ │ │ │ +770 CS_OPT_FMTDMY, │ │ │ │ │ +771 CS_OPT_FMTYMD, │ │ │ │ │ +772 CS_OPT_FMTYDM, │ │ │ │ │ +773 CS_OPT_FMTMYD, │ │ │ │ │ +774 CS_OPT_FMTDYM │ │ │ │ │ +775}; │ │ │ │ │ +776enum │ │ │ │ │ +777{ │ │ │ │ │ +778 CS_OPT_LEVEL0 = 0, │ │ │ │ │ +779 CS_OPT_LEVEL1, │ │ │ │ │ +780 CS_OPT_LEVEL2, │ │ │ │ │ +781 CS_OPT_LEVEL3 │ │ │ │ │ +782}; │ │ │ │ │ +783 │ │ │ │ │ +784#define CS_FALSE 0 │ │ │ │ │ +785#define CS_TRUE 1 │ │ │ │ │ +786 │ │ │ │ │ +787#define SRV_PROC CS_VOID │ │ │ │ │ +788 │ │ │ │ │ +789/* constants required for ct_diag (not jet implemented) */ │ │ │ │ │ +790#define CS_CLIENTMSG_TYPE 4700 │ │ │ │ │ +791#define CS_SERVERMSG_TYPE 4701 │ │ │ │ │ +792#define CS_ALLMSG_TYPE 4702 │ │ │ │ │ +793 │ │ │ │ │ +794/* CS_INTERRUPT_CB return values */ │ │ │ │ │ +795#define CS_INT_CONTINUE 1 │ │ │ │ │ +796#define CS_INT_CANCEL 2 │ │ │ │ │ +797#define CS_INT_TIMEOUT 3 │ │ │ │ │ 798 │ │ │ │ │ -799int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2); │ │ │ │ │ -800int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2); │ │ │ │ │ -801 │ │ │ │ │ -802RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ -* sum); │ │ │ │ │ -803RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr); │ │ │ │ │ -804RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr); │ │ │ │ │ -805RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ -806RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ -807RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest); │ │ │ │ │ -808RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest); │ │ │ │ │ -809RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ -* diff); │ │ │ │ │ -810RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ -diff); │ │ │ │ │ -811 │ │ │ │ │ -812RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2); │ │ │ │ │ -813RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest); │ │ │ │ │ -814 │ │ │ │ │ -815RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest); │ │ │ │ │ -816RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ +799CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * │ │ │ │ │ +srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata, │ │ │ │ │ +800 CS_INT * resultlen); │ │ │ │ │ +801CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx); │ │ │ │ │ +802CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx); │ │ │ │ │ +803CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx); │ │ │ │ │ +804CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_ │ │ │ │ │ +VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +805CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, │ │ │ │ │ +CS_INT * resultlen, CS_CHAR * text, CS_INT textlen, │ │ │ │ │ +806 CS_CHAR * formats, CS_INT formatlen, ...); │ │ │ │ │ +807#undef cs_dt_crack │ │ │ │ │ +808CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, │ │ │ │ │ +CS_DATEREC * daterec); │ │ │ │ │ +809CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * │ │ │ │ │ +dateval, CS_DATEREC * daterec); │ │ │ │ │ +810#define cs_dt_crack cs_dt_crack_v2 │ │ │ │ │ +811CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr); │ │ │ │ │ +812CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale); │ │ │ │ │ +813CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, │ │ │ │ │ +CS_INT type, CS_VOID * buffer, CS_INT buflen, │ │ │ │ │ +814 CS_INT * outlen); │ │ │ │ │ +815CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, │ │ │ │ │ +CS_INT type, CS_INT item, CS_VOID * buffer, │ │ │ │ │ +816 CS_INT buflen, CS_INT * outlen); │ │ │ │ │ 817 │ │ │ │ │ -818const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, │ │ │ │ │ -DBBOOL shortform); │ │ │ │ │ -819RETCODE dbmorecmds(DBPROCESS * dbproc); │ │ │ │ │ -820 │ │ │ │ │ -821#define DBMORECMDS(x) dbmorecmds((x)) │ │ │ │ │ -822RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]); │ │ │ │ │ -823MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler); │ │ │ │ │ -824char *dbname(DBPROCESS * dbproc); │ │ │ │ │ -825STATUS dbnextrow(DBPROCESS * dbproc); │ │ │ │ │ -826RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator); │ │ │ │ │ -827int dbnumalts(DBPROCESS * dbproc, int computeid); │ │ │ │ │ -828int dbnumcols(DBPROCESS * dbproc); │ │ │ │ │ -829int dbnumcompute(DBPROCESS * dbprocess); │ │ │ │ │ -830int dbnumrets(DBPROCESS * dbproc); │ │ │ │ │ -831DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib); │ │ │ │ │ -832DBPROCESS *dbopen(LOGINREC * login, const char *server); │ │ │ │ │ +818CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * │ │ │ │ │ +var1, CS_VOID * var2, CS_VOID * dest); │ │ │ │ │ +819CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID │ │ │ │ │ +* var2, CS_INT * result); │ │ │ │ │ +820CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * │ │ │ │ │ +destloc, CS_INT * conv_multiplier); │ │ │ │ │ +821CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT │ │ │ │ │ +idx, CS_VOID * buffer); │ │ │ │ │ +822CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT │ │ │ │ │ +srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype, │ │ │ │ │ +823 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_ │ │ │ │ │ +FUNC * func); │ │ │ │ │ +824CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, │ │ │ │ │ +CS_OBJDATA * objdata); │ │ │ │ │ +825CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, │ │ │ │ │ +CS_INT desttype, CS_CONV_FUNC * func); │ │ │ │ │ +826CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * │ │ │ │ │ +buffer, CS_INT buflen); │ │ │ │ │ +827CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_ │ │ │ │ │ +CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2, │ │ │ │ │ +828 CS_INT * result); │ │ │ │ │ +829CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, │ │ │ │ │ +CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec); │ │ │ │ │ +830CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT │ │ │ │ │ +desttype, CS_BOOL * result); │ │ │ │ │ +831 │ │ │ │ │ +832const char * cs_prretcode(int retcode); │ │ │ │ │ 833 │ │ │ │ │ -834/* pivot functions */ │ │ │ │ │ -835struct col_t; │ │ │ │ │ -836void dbpivot_count (struct col_t *output, const struct col_t *input); │ │ │ │ │ -837void dbpivot_sum (struct col_t *output, const struct col_t *input); │ │ │ │ │ -838void dbpivot_min (struct col_t *output, const struct col_t *input); │ │ │ │ │ -839void dbpivot_max (struct col_t *output, const struct col_t *input); │ │ │ │ │ +834#ifdef __cplusplus │ │ │ │ │ +835#if 0 │ │ │ │ │ +836{ │ │ │ │ │ +837#endif │ │ │ │ │ +838} │ │ │ │ │ +839#endif │ │ │ │ │ 840 │ │ │ │ │ -841struct pivot_t; │ │ │ │ │ -842typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_ │ │ │ │ │ -t *input); │ │ │ │ │ -843struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc); │ │ │ │ │ -844STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp); │ │ │ │ │ -845RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int │ │ │ │ │ -*cols, DBPIVOT_FUNC func, int val); │ │ │ │ │ -846 │ │ │ │ │ -847DBPIVOT_FUNC dbpivot_lookup_name( const char name[] ); │ │ │ │ │ -848 │ │ │ │ │ -849#ifdef MSDBLIB │ │ │ │ │ -850#define dbopen(x,y) tdsdbopen((x),(y), 1) │ │ │ │ │ -851#else │ │ │ │ │ -852#define dbopen(x,y) tdsdbopen((x),(y), 0) │ │ │ │ │ -853#endif │ │ │ │ │ -854 │ │ │ │ │ -855/* fix PHP problem */ │ │ │ │ │ -856#ifdef PHP_SYBASE_DBOPEN │ │ │ │ │ -857#undef PHP_SYBASE_DBOPEN │ │ │ │ │ -858#define PHP_SYBASE_DBOPEN dbopen │ │ │ │ │ -859#endif │ │ │ │ │ -860 │ │ │ │ │ -861void dbprhead(DBPROCESS * dbproc); │ │ │ │ │ -862DBINT dbprcollen(DBPROCESS * dbproc, int column); │ │ │ │ │ -863RETCODE dbprrow(DBPROCESS * dbproc); │ │ │ │ │ -864const char *dbprtype(int token); │ │ │ │ │ -865DBBOOL DRBUF(DBPROCESS * dbprocess); │ │ │ │ │ -866STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize); │ │ │ │ │ -867void dbrecftos(const char filename[]); │ │ │ │ │ -868RETCODE dbresults(DBPROCESS * dbproc); │ │ │ │ │ -869RETCODE dbresults_r(DBPROCESS * dbproc, int recursive); │ │ │ │ │ -870BYTE *dbretdata(DBPROCESS * dbproc, int retnum); │ │ │ │ │ -871int dbretlen(DBPROCESS * dbproc, int retnum); │ │ │ │ │ -872char *dbretname(DBPROCESS * dbproc, int retnum); │ │ │ │ │ -873DBINT dbretstatus(DBPROCESS * dbproc); │ │ │ │ │ -874int dbrettype(DBPROCESS * dbproc, int retnum); │ │ │ │ │ -875RETCODE dbrows(DBPROCESS * dbproc); │ │ │ │ │ -876 │ │ │ │ │ -877#define DBROWS(x) dbrows((x)) │ │ │ │ │ -878STATUS dbrowtype(DBPROCESS * dbprocess); │ │ │ │ │ -879 │ │ │ │ │ -880#define DBROWTYPE(x) dbrowtype((x)) │ │ │ │ │ -881RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT │ │ │ │ │ -options); │ │ │ │ │ -882RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, │ │ │ │ │ -int type, DBINT maxlen, DBINT datalen, BYTE * value); │ │ │ │ │ -883RETCODE dbrpcsend(DBPROCESS * dbproc); │ │ │ │ │ -884RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char │ │ │ │ │ -*dest, DBINT destlen, int quotetype); │ │ │ │ │ -885RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler); │ │ │ │ │ -886char *dbservcharset(DBPROCESS * dbprocess); │ │ │ │ │ -887void dbsetavail(DBPROCESS * dbprocess); │ │ │ │ │ -888void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc); │ │ │ │ │ -889RETCODE dbsetdefcharset(char *charset); │ │ │ │ │ -890void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc); │ │ │ │ │ -891void dbsetifile(char *filename); │ │ │ │ │ -892void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_ │ │ │ │ │ -DBHNDLINTR_FUNC hndlintr); │ │ │ │ │ -893RETCODE dbsetlogintime(int seconds); │ │ │ │ │ -894RETCODE dbsetmaxprocs(int maxprocs); │ │ │ │ │ -895RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * │ │ │ │ │ -bindval); │ │ │ │ │ -896RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int │ │ │ │ │ -int_param); │ │ │ │ │ -897STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row); │ │ │ │ │ -898RETCODE dbsettime(int seconds); │ │ │ │ │ -899void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr); │ │ │ │ │ -900RETCODE dbsetversion(DBINT version); │ │ │ │ │ -901 │ │ │ │ │ -902int dbspid(DBPROCESS * dbproc); │ │ │ │ │ -903RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len); │ │ │ │ │ -904DBINT dbspr1rowlen(DBPROCESS * dbproc); │ │ │ │ │ -905RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len); │ │ │ │ │ -906RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR │ │ │ │ │ -line_char); │ │ │ │ │ -907RETCODE dbsqlexec(DBPROCESS * dbproc); │ │ │ │ │ -908RETCODE dbsqlok(DBPROCESS * dbproc); │ │ │ │ │ -909RETCODE dbsqlsend(DBPROCESS * dbproc); │ │ │ │ │ -910int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, │ │ │ │ │ -char *formats, ...); │ │ │ │ │ -911RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest); │ │ │ │ │ -912int dbstrlen(DBPROCESS * dbproc); │ │ │ │ │ -913DBINT dbvarylen(DBPROCESS * dbproc, int column); │ │ │ │ │ -914 │ │ │ │ │ -915#define SYBEVERDOWN 100 /* TDS version downgraded . */ │ │ │ │ │ -916#define SYBEICONVIU 2400 /* Some character(s) could not be converted into │ │ │ │ │ -client's character set. */ │ │ │ │ │ -917#define SYBEICONVAVAIL 2401 /* Character set conversion is not available │ │ │ │ │ -between client character set '%.*s' and server character set '%.*s'.*/ │ │ │ │ │ -918#define SYBEICONVO 2402 /* Error converting characters into server's │ │ │ │ │ -character set. Some character(s) could not be converted.*/ │ │ │ │ │ -919#define SYBEICONVI 2403 /* Some character(s) could not be converted into │ │ │ │ │ -client's character set. Unconverted bytes were changed to question marks │ │ │ │ │ -('?').*/ │ │ │ │ │ -920#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from │ │ │ │ │ -client into server's character set.*/ │ │ │ │ │ -921 /* cf. doc/dblib_errors.txt for more iconv error values. */ │ │ │ │ │ -922 /* Reserve a few slots for other iconv-related issues. */ │ │ │ │ │ -923#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */ │ │ │ │ │ -924#define SYBEPORT 2500 /* Both port and instance specified */ │ │ │ │ │ -925#define SYBESYNC 20001 /* Read attempted while out of synchronization with │ │ │ │ │ -SQL Server. */ │ │ │ │ │ -926#define SYBEFCON 20002 /* SQL Server connection failed. */ │ │ │ │ │ -927#define SYBETIME 20003 /* SQL Server connection timed out. */ │ │ │ │ │ -928#define SYBEREAD 20004 /* Read from SQL Server failed. */ │ │ │ │ │ -929#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length │ │ │ │ │ -corrupted. */ │ │ │ │ │ -930#define SYBEWRIT 20006 /* Write to SQL Server failed. */ │ │ │ │ │ -931#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */ │ │ │ │ │ -932#define SYBESOCK 20008 /* Unable to open socket */ │ │ │ │ │ -933#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is │ │ │ │ │ -unavailable or does not exist. */ │ │ │ │ │ -934#define SYBEMEM 20010 /* Unable to allocate sufficient memory */ │ │ │ │ │ -935#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. │ │ │ │ │ -*/ │ │ │ │ │ -936#define SYBEINTF 20012 /* Server name not found in interface file */ │ │ │ │ │ -937#define SYBEUHST 20013 /* Unknown host machine name */ │ │ │ │ │ -938#define SYBEPWD 20014 /* Incorrect password. */ │ │ │ │ │ -939#define SYBEOPIN 20015 /* Could not open interface file. */ │ │ │ │ │ -940#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */ │ │ │ │ │ -941#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */ │ │ │ │ │ -942#define SYBESMSG 20018 /* General SQL Server error: Check messages from the │ │ │ │ │ -SQL Server. */ │ │ │ │ │ -943#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation │ │ │ │ │ -with results pending. */ │ │ │ │ │ -944#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing │ │ │ │ │ -out of sync. */ │ │ │ │ │ -945#define SYBEITIM 20021 /* Illegal timeout value specified. */ │ │ │ │ │ -946#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */ │ │ │ │ │ -947#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. │ │ │ │ │ -*/ │ │ │ │ │ -948#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent │ │ │ │ │ -compute row. */ │ │ │ │ │ -949#define SYBEIICL 20025 /* Illegal integer column length returned by SQL │ │ │ │ │ -Server. Legal integer lengths are 1, 2, and 4 bytes. */ │ │ │ │ │ -950#define SYBECNOR 20026 /* Column number out of range. */ │ │ │ │ │ -951#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */ │ │ │ │ │ -952#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */ │ │ │ │ │ -953#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */ │ │ │ │ │ -954#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following │ │ │ │ │ -ALTNAME has wrong id. */ │ │ │ │ │ -955#define SYBECDNS 20031 /* Datastream indicates that a compute column is │ │ │ │ │ -derived from a non-existent select-list member. */ │ │ │ │ │ -956#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */ │ │ │ │ │ -957#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column │ │ │ │ │ -and variable types. */ │ │ │ │ │ -958#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */ │ │ │ │ │ -959#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched │ │ │ │ │ -column and variable types. */ │ │ │ │ │ -960#define SYBENXID 20036 /* The Server did not grant us a distributed- │ │ │ │ │ -transaction ID. */ │ │ │ │ │ -961#define SYBERXID 20037 /* The Server did not recognize our distributed- │ │ │ │ │ -transaction ID. */ │ │ │ │ │ -962#define SYBEICN 20038 /* Invalid computeid or compute column number. */ │ │ │ │ │ -963#define SYBENMOB 20039 /* No such member of 'order by' clause. */ │ │ │ │ │ -964#define SYBEAPUT 20040 /* Attempt to print unknown token. */ │ │ │ │ │ -965#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */ │ │ │ │ │ -966#define SYBENTLL 20042 /* Name too long for loginrec field. */ │ │ │ │ │ -967#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */ │ │ │ │ │ -968#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. │ │ │ │ │ -*/ │ │ │ │ │ -969#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */ │ │ │ │ │ -970#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */ │ │ │ │ │ -971#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */ │ │ │ │ │ -972#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */ │ │ │ │ │ -973#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */ │ │ │ │ │ -974#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in │ │ │ │ │ -source field. */ │ │ │ │ │ -975#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */ │ │ │ │ │ -976#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in │ │ │ │ │ -overflow. */ │ │ │ │ │ -977#define SYBERDCN 20053 /* Requested data-conversion does not exist. */ │ │ │ │ │ -978#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */ │ │ │ │ │ -979#define SYBEUNT 20055 /* Unknown network type found in interface file. */ │ │ │ │ │ -980#define SYBECLOS 20056 /* Error in closing network connection. */ │ │ │ │ │ -981#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */ │ │ │ │ │ -982#define SYBEUSCT 20058 /* Unable to set communications timer. */ │ │ │ │ │ -983#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */ │ │ │ │ │ -984#define SYBEUDTY 20060 /* Unknown datatype encountered. */ │ │ │ │ │ -985#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid │ │ │ │ │ -timestamp. */ │ │ │ │ │ -986#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which │ │ │ │ │ -has no timestamp column. */ │ │ │ │ │ -987#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. │ │ │ │ │ -*/ │ │ │ │ │ -988#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent │ │ │ │ │ -Server table. */ │ │ │ │ │ -989#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */ │ │ │ │ │ -990#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to │ │ │ │ │ -a host-file is shorter than the number of rows which bulk-copy was instructed │ │ │ │ │ -to skip. */ │ │ │ │ │ -991#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. │ │ │ │ │ -*/ │ │ │ │ │ -992#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */ │ │ │ │ │ -993#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */ │ │ │ │ │ -994#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */ │ │ │ │ │ -995#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in │ │ │ │ │ -table names. */ │ │ │ │ │ -996#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */ │ │ │ │ │ -997#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server │ │ │ │ │ -column %d, which does not accept NULL values. */ │ │ │ │ │ -998#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL │ │ │ │ │ -Server. */ │ │ │ │ │ -999#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column │ │ │ │ │ -value to the SQL Server. */ │ │ │ │ │ -1000#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp │ │ │ │ │ -routines. */ │ │ │ │ │ -1001#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(), bcp_ │ │ │ │ │ -moretext() and bcp_sendrow() may be used only after bcp_init() has been called │ │ │ │ │ -with the copy direction set to DB_IN. */ │ │ │ │ │ -1002#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may │ │ │ │ │ -NOT be used after bcp_init() has been passed a non-NULL input file name. */ │ │ │ │ │ -1003#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have │ │ │ │ │ -either a length-prefix or a terminator specified. */ │ │ │ │ │ -1004#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps() │ │ │ │ │ -may be used only after bcp_init() has been passed a valid input file. */ │ │ │ │ │ -1005#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() │ │ │ │ │ -and bcp_colfmt_ps(). */ │ │ │ │ │ -1006#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. │ │ │ │ │ -*/ │ │ │ │ │ -1007#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() │ │ │ │ │ -has been passed a valid host file. */ │ │ │ │ │ -1008#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */ │ │ │ │ │ -1009#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */ │ │ │ │ │ -1010#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */ │ │ │ │ │ -1011#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */ │ │ │ │ │ -1012#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */ │ │ │ │ │ -1013#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */ │ │ │ │ │ -1014#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */ │ │ │ │ │ -1015#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the │ │ │ │ │ -SQL Server. */ │ │ │ │ │ -1016#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the │ │ │ │ │ -dbmoretext() call. */ │ │ │ │ │ -1017#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text- │ │ │ │ │ -timestamp into a non-existent data row. */ │ │ │ │ │ -1018#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text- │ │ │ │ │ -timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */ │ │ │ │ │ -1019#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_ │ │ │ │ │ -moretext() call. */ │ │ │ │ │ -1020#define SYBEORPF 20096 /* Attempt to set remote password would overflow the │ │ │ │ │ -login-record's remote-password field. */ │ │ │ │ │ -1021#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format- │ │ │ │ │ -file. */ │ │ │ │ │ -1022#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */ │ │ │ │ │ -1023#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */ │ │ │ │ │ -1024#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */ │ │ │ │ │ -1025#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */ │ │ │ │ │ -1026#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. │ │ │ │ │ -*/ │ │ │ │ │ -1027#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format- │ │ │ │ │ -file. */ │ │ │ │ │ -1028#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */ │ │ │ │ │ -1029#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */ │ │ │ │ │ -1030#define SYBEBCSI 20106 /* Host-file columns may be skipped only when │ │ │ │ │ -copying INto the Server. */ │ │ │ │ │ -1031#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program │ │ │ │ │ -variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */ │ │ │ │ │ -1032#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. │ │ │ │ │ -Skipping all of these rows is not allowed. */ │ │ │ │ │ -1033#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */ │ │ │ │ │ -1034#define SYBEUNAM 20110 /* Unable to get current username from operating │ │ │ │ │ -system. */ │ │ │ │ │ -1035#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It │ │ │ │ │ -was impossible to read the requested %ld rows. */ │ │ │ │ │ -1036#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes │ │ │ │ │ -lower than 1. */ │ │ │ │ │ -1037#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the │ │ │ │ │ -datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or │ │ │ │ │ -SYBVARBINARY. */ │ │ │ │ │ -1038#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN, │ │ │ │ │ -or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the │ │ │ │ │ -parameter's maximum or actual length, so that DB-Library can recognize it as a │ │ │ │ │ -SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */ │ │ │ │ │ -1039#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */ │ │ │ │ │ -1040#define SYBECRNC 20116 /* The current row is not a result of compute clause │ │ │ │ │ -%d, so it is illegal to attempt to extract that data from this row. */ │ │ │ │ │ -1041#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the │ │ │ │ │ -results of a query which contains a COMPUTE clause. */ │ │ │ │ │ -1042#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the │ │ │ │ │ -results of a query which contains a single result column. */ │ │ │ │ │ -1043#define SYBEUCRR 20119 /* Internal software error: Unknown connection │ │ │ │ │ -result reported by * dbpasswd(). */ │ │ │ │ │ -1044#define SYBERPNA 20120 /* The RPC facility is available only when using a │ │ │ │ │ -SQL Server whose version number is 4.0 or greater. */ │ │ │ │ │ -1045#define SYBEOPNA 20121 /* The text/image facility is available only when │ │ │ │ │ -using a SQL Server whose version number is 4.0 or greater. */ │ │ │ │ │ -1046#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied │ │ │ │ │ -cannot be greater than the row number for the last row to be copied. */ │ │ │ │ │ -1047#define SYBECWLL 20123 /* Attempt to set column width less than 1. */ │ │ │ │ │ -1048#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). │ │ │ │ │ -*/ │ │ │ │ │ -1049#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type │ │ │ │ │ -encountered in dbstrbuild(). */ │ │ │ │ │ -1050#define SYBETMCF 20126 /* Attempt to install too many custom formats via │ │ │ │ │ -dbfmtinstall(). */ │ │ │ │ │ -1051#define SYBEAICF 20127 /* Error in attempting to install custom format. */ │ │ │ │ │ -1052#define SYBEADST 20128 /* Error in attempting to determine the size of a │ │ │ │ │ -pair of translation tables. */ │ │ │ │ │ -1053#define SYBEALTT 20129 /* Error in attempting to load a pair of translation │ │ │ │ │ -tables. */ │ │ │ │ │ -1054#define SYBEAPCT 20130 /* Error in attempting to perform a character-set │ │ │ │ │ -translation. */ │ │ │ │ │ -1055#define SYBEXOCI 20131 /* A character-set translation overflowed its │ │ │ │ │ -destination buffer while using bcp to copy data from a host-file to the SQL │ │ │ │ │ -Server. */ │ │ │ │ │ -1056#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home │ │ │ │ │ -directory. */ │ │ │ │ │ -1057#define SYBEAOLF 20133 /* Error in attempting to open a localization file. │ │ │ │ │ -*/ │ │ │ │ │ -1058#define SYBEARDI 20134 /* Error in attempting to read datetime information │ │ │ │ │ -from a localization file. */ │ │ │ │ │ -1059#define SYBEURCI 20135 /* Unable to read copyright information from the │ │ │ │ │ -dblib localization file. */ │ │ │ │ │ -1060#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc │ │ │ │ │ -localization file. */ │ │ │ │ │ -1061#define SYBEURMI 20137 /* Unable to read money-format information from the │ │ │ │ │ -dblib localization file. */ │ │ │ │ │ -1062#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib │ │ │ │ │ -localization file. */ │ │ │ │ │ -1063#define SYBEURES 20139 /* Unable to read error string from the dblib │ │ │ │ │ -localization file. */ │ │ │ │ │ -1064#define SYBEUREI 20140 /* Unable to read error information from the dblib │ │ │ │ │ -localization file. */ │ │ │ │ │ -1065#define SYBEOREN 20141 /* Warning: an out-of-range error-number was │ │ │ │ │ -encountered in dblib.loc. The maximum permissible error-number is defined as │ │ │ │ │ -DBERRCOUNT in sybdb.h. */ │ │ │ │ │ -1066#define SYBEISOI 20142 /* Invalid sort-order information found. */ │ │ │ │ │ -1067#define SYBEIDCL 20143 /* Illegal datetime column length returned by │ │ │ │ │ -DataServer. Legal datetime lengths are 4 and 8 bytes. */ │ │ │ │ │ -1068#define SYBEIMCL 20144 /* Illegal money column length returned by │ │ │ │ │ -DataServer. Legal money lengths are 4 and 8 bytes. */ │ │ │ │ │ -1069#define SYBEIFCL 20145 /* Illegal floating-point column length returned by │ │ │ │ │ -DataServer. Legal floating-point lengths are 4 and 8 bytes. */ │ │ │ │ │ -1070#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL │ │ │ │ │ -Server. */ │ │ │ │ │ -1071#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */ │ │ │ │ │ -1072#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination │ │ │ │ │ -variable. */ │ │ │ │ │ -1073#define SYBEDPOR 20149 /* Out-of-range datepart constant. */ │ │ │ │ │ -1074#define SYBENDC 20150 /* Cannot have negative component in date in numeric │ │ │ │ │ -form. */ │ │ │ │ │ -1075#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */ │ │ │ │ │ -1076#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */ │ │ │ │ │ -1077#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. │ │ │ │ │ -*/ │ │ │ │ │ -1078#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */ │ │ │ │ │ -1079#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime │ │ │ │ │ -parameter. */ │ │ │ │ │ -1080#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_ │ │ │ │ │ -xlate() were NULL. */ │ │ │ │ │ -1081#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate │ │ │ │ │ -() was NULL. The space associated with the xlt_tosrv parameter has been freed. │ │ │ │ │ -*/ │ │ │ │ │ -1082#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate │ │ │ │ │ -() was NULL. The space associated with the xlt_todisp parameter has been freed. │ │ │ │ │ -*/ │ │ │ │ │ -1083#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. │ │ │ │ │ -*/ │ │ │ │ │ -1084#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */ │ │ │ │ │ -1085#define SYBEGENOS 20161 /* General Operating System Error. */ │ │ │ │ │ -1086#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() │ │ │ │ │ -operation. */ │ │ │ │ │ -1087#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */ │ │ │ │ │ -1088#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or │ │ │ │ │ -IMAGE data via dbmoretext(). */ │ │ │ │ │ -1089#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */ │ │ │ │ │ -1090#define SYBERFILE 20166 /* "Can not open resource file." */ │ │ │ │ │ -1091#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */ │ │ │ │ │ -1092#define SYBESLCT 20168 /* Could not select or copy field specified */ │ │ │ │ │ -1093#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to │ │ │ │ │ -dataserver via dbwritetext(). */ │ │ │ │ │ -1094#define SYBENTST 20170 /* The file being opened must be a stream_lf. */ │ │ │ │ │ -1095#define SYBEOSSL 20171 /* Operating system login level not in range of │ │ │ │ │ -Secure SQL Server */ │ │ │ │ │ -1096#define SYBEESSL 20172 /* Login security level entered does not agree with │ │ │ │ │ -operating system level */ │ │ │ │ │ -1097#define SYBENLNL 20173 /* Program not linked with specified network │ │ │ │ │ -library. */ │ │ │ │ │ -1098#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler │ │ │ │ │ -parameter. */ │ │ │ │ │ -1099#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. │ │ │ │ │ -*/ │ │ │ │ │ -1100#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */ │ │ │ │ │ -1101#define SYBENOTI 20177 /* No event handler installed. */ │ │ │ │ │ -1102#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. │ │ │ │ │ -*/ │ │ │ │ │ -1103#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler │ │ │ │ │ -parameter. */ │ │ │ │ │ -1104#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. │ │ │ │ │ -*/ │ │ │ │ │ -1105#define SYBEEVST 20181 /* Must initiate a transaction before calling │ │ │ │ │ -dbregparam(). */ │ │ │ │ │ -1106#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */ │ │ │ │ │ -1107#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */ │ │ │ │ │ -1108#define SYBEECAN 20184 /* Attempted to cancel unrequested event │ │ │ │ │ -notification. */ │ │ │ │ │ -1109#define SYBEEUNR 20185 /* Unsolicited event notification received. */ │ │ │ │ │ -1110#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */ │ │ │ │ │ -1111#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. │ │ │ │ │ -*/ │ │ │ │ │ -1112#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */ │ │ │ │ │ -1113#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not │ │ │ │ │ -on. */ │ │ │ │ │ -1114#define SYBETRAS 20190 /* DB-Library internal error - trace structure not │ │ │ │ │ -found. */ │ │ │ │ │ -1115#define SYBEPRTF 20191 /* dbtracestring() may only be called from a │ │ │ │ │ -printfunc(). */ │ │ │ │ │ -1116#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). │ │ │ │ │ -*/ │ │ │ │ │ -1117#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must │ │ │ │ │ -be between 0 and 999999. */ │ │ │ │ │ -1118#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of │ │ │ │ │ -%3!. */ │ │ │ │ │ -1119#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function │ │ │ │ │ -%1!. */ │ │ │ │ │ -1120#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */ │ │ │ │ │ -1121#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */ │ │ │ │ │ -1122#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are │ │ │ │ │ -present. */ │ │ │ │ │ -1123#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */ │ │ │ │ │ -1124#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure │ │ │ │ │ -notifications have been disabled. */ │ │ │ │ │ -1125#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! │ │ │ │ │ -used instead. */ │ │ │ │ │ -1126#define SYBESECURE 20202 /* Secure Server function not supported in this │ │ │ │ │ -version. */ │ │ │ │ │ -1127#define SYBECAP 20203 /* DB-Library capabilities not accepted by the │ │ │ │ │ -Server. */ │ │ │ │ │ -1128#define SYBEFUNC 20204 /* Functionality not supported at the specified │ │ │ │ │ -version level. */ │ │ │ │ │ -1129#define SYBERESP 20205 /* Response function address passed to dbresponse() │ │ │ │ │ -must be non-NULL. */ │ │ │ │ │ -1130#define SYBEIVERS 20206 /* Illegal version level specified. */ │ │ │ │ │ -1131#define SYBEONCE 20207 /* Function can be called only once. */ │ │ │ │ │ -1132#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, │ │ │ │ │ -only if the datalen parameter is 0 */ │ │ │ │ │ -1133#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. │ │ │ │ │ -*/ │ │ │ │ │ -1134#define SYBENEG 20210 /* Negotiated login attempt failed. */ │ │ │ │ │ -1135#define SYBELBLEN 20211 /* Security labels should be less than 256 │ │ │ │ │ -characters long. */ │ │ │ │ │ -1136#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */ │ │ │ │ │ -1137#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY │ │ │ │ │ -datastream. */ │ │ │ │ │ -1138#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */ │ │ │ │ │ -1139#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */ │ │ │ │ │ -1140#define SYBEBPREC 20216 /* Illegal precision specified */ │ │ │ │ │ -1141#define SYBEBSCALE 20217 /* Illegal scale specified */ │ │ │ │ │ -1142#define SYBECDOMAIN 20218 /* Source field value is not within the domain of │ │ │ │ │ -legal values. */ │ │ │ │ │ -1143#define SYBECINTERNAL 20219 /* Internal Conversion error. */ │ │ │ │ │ -1144#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */ │ │ │ │ │ -1145#define SYBEBCSET 20221 /* Unknown character-set encountered." */ │ │ │ │ │ -1146#define SYBEFENC 20222 /* Password Encryption failed." */ │ │ │ │ │ -1147#define SYBEFRES 20223 /* Challenge-Response function failed.", */ │ │ │ │ │ -1148#define SYBEISRVPREC 20224 /* Illegal precision value returned by the │ │ │ │ │ -server. */ │ │ │ │ │ -1149#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */ │ │ │ │ │ -1150#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the │ │ │ │ │ -server. */ │ │ │ │ │ -1151#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the │ │ │ │ │ -server. */ │ │ │ │ │ -1152#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is │ │ │ │ │ -at least one text or image column in the server table. */ │ │ │ │ │ -1153#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value │ │ │ │ │ -encountered. */ │ │ │ │ │ -1154#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must │ │ │ │ │ -be 0 and no terminator should be specified. */ │ │ │ │ │ -1155#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen │ │ │ │ │ -greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the │ │ │ │ │ -program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */ │ │ │ │ │ -1156#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and │ │ │ │ │ -varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and │ │ │ │ │ -the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */ │ │ │ │ │ -1157#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type │ │ │ │ │ -cannot be 0. */ │ │ │ │ │ -1158#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. │ │ │ │ │ -*/ │ │ │ │ │ -1159#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to │ │ │ │ │ --1. */ │ │ │ │ │ -1160#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, │ │ │ │ │ -2 or 4. */ │ │ │ │ │ -1161#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, │ │ │ │ │ -1, 2 or 4. */ │ │ │ │ │ -1162#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. │ │ │ │ │ -*/ │ │ │ │ │ -1163#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */ │ │ │ │ │ -1164#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all │ │ │ │ │ -text data for the previous row has been sent using bcp_moretext(). */ │ │ │ │ │ -1165#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count │ │ │ │ │ -differs from the actual number of columns received. */ │ │ │ │ │ -1166#define SYBEBPRODEF 20242 /* bcp protocol error: expected default │ │ │ │ │ -information and got none. */ │ │ │ │ │ -1167#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of │ │ │ │ │ -defaults differs from the actual number of defaults received. */ │ │ │ │ │ -1168#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and │ │ │ │ │ -actual column id are not same */ │ │ │ │ │ -1169#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received │ │ │ │ │ -for column that does not have default. */ │ │ │ │ │ -1170#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype │ │ │ │ │ -differs from column datatype. */ │ │ │ │ │ -1171#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of │ │ │ │ │ -default information received. */ │ │ │ │ │ -1172#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of │ │ │ │ │ -results received. */ │ │ │ │ │ -1173#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column │ │ │ │ │ -id received. */ │ │ │ │ │ -1174#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column │ │ │ │ │ -datatype. */ │ │ │ │ │ -1175#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length │ │ │ │ │ -received. */ │ │ │ │ │ -1176#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision │ │ │ │ │ -value received. */ │ │ │ │ │ -1177#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value │ │ │ │ │ -received. */ │ │ │ │ │ -1178#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. │ │ │ │ │ -*/ │ │ │ │ │ -1179#define SYBECRSNORES 20255 /* Cursor statement generated no results. */ │ │ │ │ │ -1180#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor │ │ │ │ │ -statement does not have a unique index. */ │ │ │ │ │ -1181#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or │ │ │ │ │ -a view in a cursor statement. */ │ │ │ │ │ -1182#define SYBECRSVIIND 20258 /* The view used in the cursor statement does │ │ │ │ │ -not include all the unique index columns of the underlying tables. */ │ │ │ │ │ -1183#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have │ │ │ │ │ -'order by', ' group by', or 'having' phrases. */ │ │ │ │ │ -1184#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when │ │ │ │ │ -using cursor APIs. */ │ │ │ │ │ -1185#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned │ │ │ │ │ -on when using cursor APIs. */ │ │ │ │ │ -1186#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed │ │ │ │ │ -phrases 'compute', 'union', 'for browse', or 'select into'. */ │ │ │ │ │ -1187#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor │ │ │ │ │ -statement. */ │ │ │ │ │ -1188#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be │ │ │ │ │ -used within the keyset of keyset driven cursors. */ │ │ │ │ │ -1189#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven │ │ │ │ │ -cursors. */ │ │ │ │ │ -1190#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward │ │ │ │ │ -scrolling cursor. */ │ │ │ │ │ -1191#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid │ │ │ │ │ -range. */ │ │ │ │ │ -1192#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed │ │ │ │ │ -cursors with a previous fetch type. */ │ │ │ │ │ -1193#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in │ │ │ │ │ -a READONLY cursor. */ │ │ │ │ │ -1194#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned │ │ │ │ │ -on when doing updates or deletes with dbcursor(). */ │ │ │ │ │ -1195#define SYBECRSTAB 20271 /* Table name must be determined in operations │ │ │ │ │ -involving data locking or modifications. */ │ │ │ │ │ -1196#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind │ │ │ │ │ -variables when binding type is NOBIND. */ │ │ │ │ │ -1197#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor │ │ │ │ │ -update or insert. */ │ │ │ │ │ -1198#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or │ │ │ │ │ -insert. */ │ │ │ │ │ -1199#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind │ │ │ │ │ -variables require single table cursors. */ │ │ │ │ │ -1200#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any │ │ │ │ │ -rows. */ │ │ │ │ │ -1201#define SYBECRSINV 20277 /* Invalid cursor statement. */ │ │ │ │ │ -1202#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET │ │ │ │ │ -cursors. */ │ │ │ │ │ -1203#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating │ │ │ │ │ -cursor */ │ │ │ │ │ -1204#define SYBECRSFTYPE 20280 /* Unknown fetch type. */ │ │ │ │ │ -1205#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */ │ │ │ │ │ -1206#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is │ │ │ │ │ -expected. */ │ │ │ │ │ -1207#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. │ │ │ │ │ -*/ │ │ │ │ │ -1208#define SYBECRSNOLEN 20284 /* No unique index found. */ │ │ │ │ │ -1209#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */ │ │ │ │ │ -1210#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, │ │ │ │ │ -and order by. */ │ │ │ │ │ -1211#define SYBECRSNOTABLE 20287 /* Table name is NULL. */ │ │ │ │ │ -1212#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. │ │ │ │ │ -*/ │ │ │ │ │ -1213#define SYBECRSVAR 20289 /* There is no valid address associated with this │ │ │ │ │ -bind. */ │ │ │ │ │ -1214#define SYBENOVALUE 20290 /* Security labels require both a name and a │ │ │ │ │ -value */ │ │ │ │ │ -1215#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return │ │ │ │ │ -parameter. */ │ │ │ │ │ -1216#define SYBECLOSEIN 20292 /* Unable to close interface file. */ │ │ │ │ │ -1217#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */ │ │ │ │ │ -1218#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy │ │ │ │ │ -operation is progress. */ │ │ │ │ │ -1219#define SYBEERRLABEL 20295 /* An illegal value was returned from the │ │ │ │ │ -security label handler. */ │ │ │ │ │ -1220#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge │ │ │ │ │ -attention." */ │ │ │ │ │ -1221#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */ │ │ │ │ │ -1222#define SYBEDCL 20298 /* -004- DCL Error */ │ │ │ │ │ -1223#define SYBECS 20299 /* -004- cs context Error */ │ │ │ │ │ -1224#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */ │ │ │ │ │ -1225#define SYBECOLSIZE 22000 /* Invalid column information structure size */ │ │ │ │ │ -1226 │ │ │ │ │ -1227int dbtds(DBPROCESS * dbprocess); │ │ │ │ │ -1228 │ │ │ │ │ -1229#define DBTDS(a) dbtds(a) │ │ │ │ │ -1230DBINT dbtextsize(DBPROCESS * dbprocess); │ │ │ │ │ -1231DBBINARY *dbtxptr(DBPROCESS * dbproc, int column); │ │ │ │ │ -1232DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column); │ │ │ │ │ -1233DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess); │ │ │ │ │ -1234RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum); │ │ │ │ │ -1235RETCODE dbuse(DBPROCESS * dbproc, const char *name); │ │ │ │ │ -1236const char *dbversion(void); │ │ │ │ │ -1237DBBOOL dbwillconvert(int srctype, int desttype); │ │ │ │ │ -1238RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, │ │ │ │ │ -DBTINYINT textptrlen, DBBINARY * timestamp, │ │ │ │ │ -1239 DBBOOL log, DBINT size, BYTE * text); │ │ │ │ │ -1240 │ │ │ │ │ -1241/* LOGINREC manipulation */ │ │ │ │ │ -1242RETCODE dbsetlname(LOGINREC * login, const char *value, int which); │ │ │ │ │ -1243RETCODE dbsetlbool(LOGINREC * login, int value, int which); │ │ │ │ │ -1244RETCODE dbsetlshort(LOGINREC * login, int value, int which); │ │ │ │ │ -1245RETCODE dbsetllong(LOGINREC * login, long value, int which); │ │ │ │ │ -1246RETCODE dbsetlversion (LOGINREC * login, BYTE version); │ │ │ │ │ -1247 │ │ │ │ │ -1248#define DBSETHOST 1 │ │ │ │ │ -1249#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST) │ │ │ │ │ -1250#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST) │ │ │ │ │ -1251#define DBSETUSER 2 │ │ │ │ │ -1252#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER) │ │ │ │ │ -1253#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER) │ │ │ │ │ -1254#define DBSETPWD 3 │ │ │ │ │ -1255#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD) │ │ │ │ │ -1256#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD) │ │ │ │ │ -1257#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ -1258# define DBSETHID 4 /* not implemented */ │ │ │ │ │ -1259# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID) │ │ │ │ │ -1260#endif │ │ │ │ │ -1261#define DBSETAPP 5 │ │ │ │ │ -1262#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP) │ │ │ │ │ -1263#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP) │ │ │ │ │ -1264#define DBSETBCP 6 │ │ │ │ │ -1265#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP) │ │ │ │ │ -1266#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP) │ │ │ │ │ -1267#define DBSETNATLANG 7 │ │ │ │ │ -1268#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG) │ │ │ │ │ -1269#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG) │ │ │ │ │ -1270#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ -1271# define DBSETNOSHORT 8 /* not implemented */ │ │ │ │ │ -1272# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT) │ │ │ │ │ -1273# define DBSETHIER 9 /* not implemented */ │ │ │ │ │ -1274# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER) │ │ │ │ │ -1275#endif │ │ │ │ │ -1276#define DBSETCHARSET 10 │ │ │ │ │ -1277#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET) │ │ │ │ │ -1278#define DBSETPACKET 11 │ │ │ │ │ -1279#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET) │ │ │ │ │ -1280#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET) │ │ │ │ │ -1281#define DBSETENCRYPT 12 │ │ │ │ │ -1282#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT) │ │ │ │ │ -1283#define DBSETLABELED 13 │ │ │ │ │ -1284#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED) │ │ │ │ │ -1285#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED) │ │ │ │ │ -1286#define DBSETDBNAME 14 │ │ │ │ │ -1287#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME) │ │ │ │ │ -1288#define DBSETLVERSION(login, version) dbsetlversion((login), (version)) │ │ │ │ │ -1289#define DBSETNETWORKAUTH 101 │ │ │ │ │ -1290#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH) │ │ │ │ │ -1291#define DBSETMUTUALAUTH 102 │ │ │ │ │ -1292#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH) │ │ │ │ │ -1293#define DBSETSERVERPRINCIPAL 103 │ │ │ │ │ -1294#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), │ │ │ │ │ -DBSETSERVERPRINCIPAL) │ │ │ │ │ -1295/* settings from here are purely FreeTDS extensions */ │ │ │ │ │ -1296#define DBSETUTF16 1001 │ │ │ │ │ -1297#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16) │ │ │ │ │ -1298#define DBSETNTLMV2 1002 │ │ │ │ │ -1299#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2) │ │ │ │ │ -1300#define DBSETREADONLY 1003 │ │ │ │ │ -1301#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY) │ │ │ │ │ -1302#define DBSETDELEGATION 1004 │ │ │ │ │ -1303#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION) │ │ │ │ │ -1304#define DBSETENCRYPTION 1005 │ │ │ │ │ -1305#define DBSETLENCRYPTION(x, y) dbsetlname((x), (y), DBSETENCRYPTION) │ │ │ │ │ -1306#define DBSETPORT 1006 │ │ │ │ │ -1307#define DBSETLPORT(x,y) dbsetlshort((x), (y), DBSETPORT) │ │ │ │ │ -1308 │ │ │ │ │ -1309RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char │ │ │ │ │ -*hfile, const char *errfile, int direction); │ │ │ │ │ -1310DBINT bcp_done(DBPROCESS * dbproc); │ │ │ │ │ -1311 │ │ │ │ │ -1312DBINT bcp_batch(DBPROCESS * dbproc); │ │ │ │ │ -1313RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT │ │ │ │ │ -varlen, BYTE * terminator, int termlen, int type, │ │ │ │ │ -1314 int table_column); │ │ │ │ │ -1315RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column); │ │ │ │ │ -1316RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount); │ │ │ │ │ -1317RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int │ │ │ │ │ -host_prefixlen, DBINT host_collen, │ │ │ │ │ -1318 const BYTE * host_term, int host_termlen, int colnum); │ │ │ │ │ -1319RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, │ │ │ │ │ -int host_prefixlen, DBINT host_collen, │ │ │ │ │ -1320 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo); │ │ │ │ │ -1321RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column); │ │ │ │ │ -1322RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value); │ │ │ │ │ -1323int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */ │ │ │ │ │ -1324RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied); │ │ │ │ │ -1325DBBOOL bcp_getl(LOGINREC * login); │ │ │ │ │ -1326RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int │ │ │ │ │ -valuelen); │ │ │ │ │ -1327RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]); │ │ │ │ │ -1328RETCODE bcp_sendrow(DBPROCESS * dbproc); │ │ │ │ │ -1329 │ │ │ │ │ -1330#ifdef __cplusplus │ │ │ │ │ -1331#if 0 │ │ │ │ │ -1332{ │ │ │ │ │ -1333#endif │ │ │ │ │ -1334} │ │ │ │ │ -1335#endif │ │ │ │ │ -1336 │ │ │ │ │ -1337#endif │ │ │ │ │ -dbcolinfo │ │ │ │ │ -RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT │ │ │ │ │ -computeid, DBCOL *pdbcol) │ │ │ │ │ -Get a bunch of column attributes with a single call (Microsoft-compatibility │ │ │ │ │ -feature). │ │ │ │ │ -Definition dblib.c:3062 │ │ │ │ │ -dbpivot │ │ │ │ │ -RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, │ │ │ │ │ -DBPIVOT_FUNC func, int val) │ │ │ │ │ -Pivot the rows, creating a new resultset. │ │ │ │ │ -Definition dbpivot.c:974 │ │ │ │ │ -dbclrbuf │ │ │ │ │ -void dbclrbuf(DBPROCESS *dbproc, DBINT n) │ │ │ │ │ -Clear n rows from the row buffer. │ │ │ │ │ -Definition dblib.c:2860 │ │ │ │ │ -dbcoltypeinfo │ │ │ │ │ -DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get precision and scale information for a regular result column. │ │ │ │ │ -Definition dblib.c:3033 │ │ │ │ │ -dblogin │ │ │ │ │ -LOGINREC * dblogin(void) │ │ │ │ │ -Allocate a LOGINREC structure. │ │ │ │ │ -Definition dblib.c:713 │ │ │ │ │ -dbfreebuf │ │ │ │ │ -void dbfreebuf(DBPROCESS *dbproc) │ │ │ │ │ -Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt(). │ │ │ │ │ -Definition dblib.c:6102 │ │ │ │ │ -dbdata │ │ │ │ │ -BYTE * dbdata(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get address of data in a regular result column. │ │ │ │ │ -Definition dblib.c:3371 │ │ │ │ │ -dbstrlen │ │ │ │ │ -int dbstrlen(DBPROCESS *dbproc) │ │ │ │ │ -Get size of the command buffer, in bytes. │ │ │ │ │ -Definition dblib.c:6333 │ │ │ │ │ -dbadata │ │ │ │ │ -BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get address of compute column data. │ │ │ │ │ -Definition dblib.c:4457 │ │ │ │ │ -dbspid │ │ │ │ │ -int dbspid(DBPROCESS *dbproc) │ │ │ │ │ -Get server process ID for a DBPROCESS. │ │ │ │ │ -Definition dblib.c:5962 │ │ │ │ │ -dbtxtimestamp │ │ │ │ │ -DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get text timestamp for a column in the current row. │ │ │ │ │ -Definition dblib.c:6569 │ │ │ │ │ -dbbylist │ │ │ │ │ -BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size) │ │ │ │ │ -Get bylist for a compute row. │ │ │ │ │ -Definition dblib.c:5041 │ │ │ │ │ -dbservcharset │ │ │ │ │ -char * dbservcharset(DBPROCESS *dbprocess) │ │ │ │ │ -Get syscharset name of the server character set. │ │ │ │ │ -Definition dblib.c:7067 │ │ │ │ │ -dbspr1rowlen │ │ │ │ │ -DBINT dbspr1rowlen(DBPROCESS *dbproc) │ │ │ │ │ -Determine size buffer required to hold the results returned by dbsprhead(), │ │ │ │ │ -dbsprline(),... │ │ │ │ │ -Definition dblib.c:3438 │ │ │ │ │ -dbconvert │ │ │ │ │ -DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, │ │ │ │ │ -int desttype, BYTE *dest, DBINT destlen) │ │ │ │ │ -cf. │ │ │ │ │ -Definition dblib.c:2612 │ │ │ │ │ -dbadlen │ │ │ │ │ -DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get size of data in a compute column. │ │ │ │ │ -Definition dblib.c:4352 │ │ │ │ │ -dbsetinterrupt │ │ │ │ │ -void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_ │ │ │ │ │ -DBHNDLINTR_FUNC hndlintr) │ │ │ │ │ -Set interrupt handler for db-lib to use while blocked against a read from the │ │ │ │ │ -server. │ │ │ │ │ -Definition dblib.c:4673 │ │ │ │ │ -dbsetnull │ │ │ │ │ -RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE │ │ │ │ │ -*bindval) │ │ │ │ │ -Define substitution values to be used when binding null values. │ │ │ │ │ -Definition dblib.c:1981 │ │ │ │ │ -dbcolname │ │ │ │ │ -char * dbcolname(DBPROCESS *dbproc, int column) │ │ │ │ │ -Return name of a regular result column. │ │ │ │ │ -Definition dblib.c:1891 │ │ │ │ │ -dbfcmd │ │ │ │ │ -RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...) │ │ │ │ │ -printf-like way to form SQL to send to the server. │ │ │ │ │ -Definition dblib.c:1353 │ │ │ │ │ -dbdatecrack │ │ │ │ │ -RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt) │ │ │ │ │ -Break a DBDATETIME value into useful pieces. │ │ │ │ │ -Definition dblib.c:5889 │ │ │ │ │ -dbresults │ │ │ │ │ -RETCODE dbresults(DBPROCESS *dbproc) │ │ │ │ │ -Set up query results. │ │ │ │ │ -Definition dblib.c:1713 │ │ │ │ │ -dbwritetext │ │ │ │ │ -RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, │ │ │ │ │ -DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text) │ │ │ │ │ -Send text or image data to the server. │ │ │ │ │ -Definition dblib.c:6636 │ │ │ │ │ -dbcanquery │ │ │ │ │ -RETCODE dbcanquery(DBPROCESS *dbproc) │ │ │ │ │ -Cancel the query currently being retrieved, discarding all pending rows. │ │ │ │ │ -Definition dblib.c:6073 │ │ │ │ │ -dbinit │ │ │ │ │ -RETCODE dbinit(void) │ │ │ │ │ -Initialize db-lib. │ │ │ │ │ -Definition dblib.c:668 │ │ │ │ │ -dbvarylen │ │ │ │ │ -DBINT dbvarylen(DBPROCESS *dbproc, int column) │ │ │ │ │ -Determine whether a column can vary in size. │ │ │ │ │ -Definition dblib.c:3235 │ │ │ │ │ -dbcancel │ │ │ │ │ -RETCODE dbcancel(DBPROCESS *dbproc) │ │ │ │ │ -Cancel the current command batch. │ │ │ │ │ -Definition dblib.c:3413 │ │ │ │ │ -dbsetlogintime │ │ │ │ │ -RETCODE dbsetlogintime(int seconds) │ │ │ │ │ -Set maximum seconds db-lib waits for a server response to a login attempt. │ │ │ │ │ -Definition dblib.c:4281 │ │ │ │ │ -dbgetrow │ │ │ │ │ -RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row) │ │ │ │ │ -Read a row from the row buffer. │ │ │ │ │ -Definition dblib.c:1949 │ │ │ │ │ -dbcoltype │ │ │ │ │ -int dbcoltype(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get the datatype of a regular result set column. │ │ │ │ │ -Definition dblib.c:2987 │ │ │ │ │ -dbsetifile │ │ │ │ │ -void dbsetifile(char *filename) │ │ │ │ │ -set name and location of the interfaces file FreeTDS should use to look up a │ │ │ │ │ -servername. │ │ │ │ │ -Definition dblib.c:2730 │ │ │ │ │ -dbuse │ │ │ │ │ -RETCODE dbuse(DBPROCESS *dbproc, const char *name) │ │ │ │ │ -Change current database. │ │ │ │ │ -Definition dblib.c:1464 │ │ │ │ │ -dbnumalts │ │ │ │ │ -int dbnumalts(DBPROCESS *dbproc, int computeid) │ │ │ │ │ -Get count of columns in a compute row. │ │ │ │ │ -Definition dblib.c:4982 │ │ │ │ │ -dbiscount │ │ │ │ │ -BOOL dbiscount(DBPROCESS *dbproc) │ │ │ │ │ -Indicates whether or not the count returned by dbcount is real (Microsoft- │ │ │ │ │ -compatibility feature). │ │ │ │ │ -Definition dblib.c:2820 │ │ │ │ │ -dbgettime │ │ │ │ │ -int dbgettime(void) │ │ │ │ │ -Get maximum seconds db-lib waits for a server response to query. │ │ │ │ │ -Definition dblib.c:4265 │ │ │ │ │ -dbmoretext │ │ │ │ │ -RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[]) │ │ │ │ │ -Send chunk of a text/image value to the server. │ │ │ │ │ -Definition dblib.c:6774 │ │ │ │ │ -dbprtype │ │ │ │ │ -const char * dbprtype(int token) │ │ │ │ │ -Print a token value's name to a buffer. │ │ │ │ │ -Definition dblib.c:6489 │ │ │ │ │ -dbcolsource │ │ │ │ │ -char * dbcolsource(DBPROCESS *dbproc, int colnum) │ │ │ │ │ -Get base database column name for a result set column. │ │ │ │ │ -Definition dblib.c:3161 │ │ │ │ │ -dbchange │ │ │ │ │ -char * dbchange(DBPROCESS *dbprocess) │ │ │ │ │ -See if a command caused the current database to change. │ │ │ │ │ -Definition dblib.c:7031 │ │ │ │ │ -dbacolname │ │ │ │ │ -const char * dbacolname(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Return name of a computed result column. │ │ │ │ │ -Definition dblib.c:1917 │ │ │ │ │ -dbnullbind │ │ │ │ │ -RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator) │ │ │ │ │ -Tie a null-indicator to a regular result column. │ │ │ │ │ -Definition dblib.c:2756 │ │ │ │ │ -dbbind │ │ │ │ │ -RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE │ │ │ │ │ -*varaddr) │ │ │ │ │ -Tie a host variable to a resultset column. │ │ │ │ │ -Definition dblib.c:2653 │ │ │ │ │ -dbcmd │ │ │ │ │ -RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[]) │ │ │ │ │ -Append SQL to the command buffer. │ │ │ │ │ -Definition dblib.c:1392 │ │ │ │ │ -dbcollen │ │ │ │ │ -DBINT dbcollen(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get size of a regular result column. │ │ │ │ │ -Definition dblib.c:3186 │ │ │ │ │ -dbconvert_ps │ │ │ │ │ -DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT │ │ │ │ │ -srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo) │ │ │ │ │ -Convert one datatype to another. │ │ │ │ │ -Definition dblib.c:2319 │ │ │ │ │ -dbgetchar │ │ │ │ │ -char * dbgetchar(DBPROCESS *dbprocess, int n) │ │ │ │ │ -Get address of a position in the command buffer. │ │ │ │ │ -Definition dblib.c:6352 │ │ │ │ │ -dbanullbind │ │ │ │ │ -RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT │ │ │ │ │ -*indicator) │ │ │ │ │ -Tie a null-indicator to a compute result column. │ │ │ │ │ -Definition dblib.c:2792 │ │ │ │ │ -dbclropt │ │ │ │ │ -RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[]) │ │ │ │ │ -Reset an option. │ │ │ │ │ -Definition dblib.c:6137 │ │ │ │ │ -dbcount │ │ │ │ │ -DBINT dbcount(DBPROCESS *dbproc) │ │ │ │ │ -Get count of rows processed. │ │ │ │ │ -Definition dblib.c:2840 │ │ │ │ │ -dbaltop │ │ │ │ │ -int dbaltop(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get aggregation operator for a compute column. │ │ │ │ │ -Definition dblib.c:4486 │ │ │ │ │ -dbtablecolinfo │ │ │ │ │ -RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol) │ │ │ │ │ -describe table column attributes with a single call (Freetds-only API function │ │ │ │ │ -modelled on dbcolinfo) │ │ │ │ │ -Definition dblib.c:6506 │ │ │ │ │ -dbaltlen │ │ │ │ │ -DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get size of data in compute column. │ │ │ │ │ -Definition dblib.c:7181 │ │ │ │ │ -dbsetopt │ │ │ │ │ -RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int │ │ │ │ │ -int_param) │ │ │ │ │ -Set db-lib or server option. │ │ │ │ │ -Definition dblib.c:4513 │ │ │ │ │ -dbprhead │ │ │ │ │ -void dbprhead(DBPROCESS *dbproc) │ │ │ │ │ -Print result set headings to stdout. │ │ │ │ │ -Definition dblib.c:4001 │ │ │ │ │ -dbsetlversion │ │ │ │ │ -RETCODE dbsetlversion(LOGINREC *login, BYTE version) │ │ │ │ │ -Set TDS version for future connections. │ │ │ │ │ -Definition dblib.c:960 │ │ │ │ │ -dbprrow │ │ │ │ │ -RETCODE dbprrow(DBPROCESS *dbproc) │ │ │ │ │ -Print a result set to stdout. │ │ │ │ │ -Definition dblib.c:3559 │ │ │ │ │ -dbname │ │ │ │ │ -char * dbname(DBPROCESS *dbproc) │ │ │ │ │ -Get name of current database. │ │ │ │ │ -Definition dblib.c:7051 │ │ │ │ │ -dbalttype │ │ │ │ │ -int dbalttype(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get datatype for a compute column. │ │ │ │ │ -Definition dblib.c:4382 │ │ │ │ │ -dbsprhead │ │ │ │ │ -RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len) │ │ │ │ │ -Print result set headings to a buffer. │ │ │ │ │ -Definition dblib.c:3937 │ │ │ │ │ -dbsqlexec │ │ │ │ │ -RETCODE dbsqlexec(DBPROCESS *dbproc) │ │ │ │ │ -send the SQL command to the server and wait for an answer. │ │ │ │ │ -Definition dblib.c:1438 │ │ │ │ │ -dbwillconvert │ │ │ │ │ -DBBOOL dbwillconvert(int srctype, int desttype) │ │ │ │ │ -Test whether or not a datatype can be converted to another datatype. │ │ │ │ │ -Definition dblib.c:2890 │ │ │ │ │ -dbcolutype │ │ │ │ │ -DBINT dbcolutype(DBPROCESS *dbprocess, int column) │ │ │ │ │ -Get user-defined datatype of a regular result column. │ │ │ │ │ -Definition dblib.c:3010 │ │ │ │ │ -dbstrbuild │ │ │ │ │ -int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char │ │ │ │ │ -*formats,...) │ │ │ │ │ -Build a printable string from text containing placeholders for variables. │ │ │ │ │ -Definition dblib.c:7344 │ │ │ │ │ -dberrhandle │ │ │ │ │ -EHANDLEFUNC dberrhandle(EHANDLEFUNC handler) │ │ │ │ │ -Set an error handler, for messages from db-lib. │ │ │ │ │ -Definition dblib.c:5163 │ │ │ │ │ -dbsetversion │ │ │ │ │ -RETCODE dbsetversion(DBINT version) │ │ │ │ │ -Specify a db-lib version level. │ │ │ │ │ -Definition dblib.c:6018 │ │ │ │ │ -dbgetpacket │ │ │ │ │ -int dbgetpacket(DBPROCESS *dbproc) │ │ │ │ │ -Get TDS packet size for the connection. │ │ │ │ │ -Definition dblib.c:4117 │ │ │ │ │ -dbrecftos │ │ │ │ │ -void dbrecftos(const char filename[]) │ │ │ │ │ -Record to a file all SQL commands sent to the server. │ │ │ │ │ -Definition dblib.c:6809 │ │ │ │ │ -dbgetuserdata │ │ │ │ │ -BYTE * dbgetuserdata(DBPROCESS *dbproc) │ │ │ │ │ -Get address of user-allocated data from a DBPROCESS. │ │ │ │ │ -Definition dblib.c:6000 │ │ │ │ │ -dbsetuserdata │ │ │ │ │ -void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr) │ │ │ │ │ -Associate client-allocated (and defined) data with a DBPROCESS. │ │ │ │ │ -Definition dblib.c:5982 │ │ │ │ │ -dbprcollen │ │ │ │ │ -DBINT dbprcollen(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get size of a result column needed to print column. │ │ │ │ │ -Definition dblib.c:3209 │ │ │ │ │ -dbexit │ │ │ │ │ -void dbexit(void) │ │ │ │ │ -Close server connections and free all related structures. │ │ │ │ │ -Definition dblib.c:1571 │ │ │ │ │ -dbloginfree │ │ │ │ │ -void dbloginfree(LOGINREC *login) │ │ │ │ │ -free the LOGINREC │ │ │ │ │ -Definition dblib.c:746 │ │ │ │ │ -dbmorecmds │ │ │ │ │ -RETCODE dbmorecmds(DBPROCESS *dbproc) │ │ │ │ │ -See if more commands are to be processed. │ │ │ │ │ -Definition dblib.c:6279 │ │ │ │ │ -dbisopt │ │ │ │ │ -DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[]) │ │ │ │ │ -Get value of an option. │ │ │ │ │ -Definition dblib.c:6205 │ │ │ │ │ -dbnumcompute │ │ │ │ │ -int dbnumcompute(DBPROCESS *dbprocess) │ │ │ │ │ -Get count of COMPUTE clauses for a result set. │ │ │ │ │ -Definition dblib.c:5015 │ │ │ │ │ -dbsqlsend │ │ │ │ │ -RETCODE dbsqlsend(DBPROCESS *dbproc) │ │ │ │ │ -Transmit the command buffer to the server. │ │ │ │ │ -Definition dblib.c:7087 │ │ │ │ │ -dbsprline │ │ │ │ │ -RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_ │ │ │ │ │ -char) │ │ │ │ │ -Get formatted string for underlining dbsprhead() column names. │ │ │ │ │ -Definition dblib.c:3879 │ │ │ │ │ -dbversion │ │ │ │ │ -const char * dbversion(void) │ │ │ │ │ -See which version of db-lib is in use. │ │ │ │ │ -Definition dblib.c:6884 │ │ │ │ │ -dbsafestr │ │ │ │ │ -RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, │ │ │ │ │ -DBINT destlen, int quotetype) │ │ │ │ │ -safely quotes character values in SQL text. │ │ │ │ │ -Definition dblib.c:6428 │ │ │ │ │ -dbaltcolid │ │ │ │ │ -int dbaltcolid(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get column ID of a compute column. │ │ │ │ │ -Definition dblib.c:4326 │ │ │ │ │ -dbanydatecrack │ │ │ │ │ -RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void │ │ │ │ │ -*data) │ │ │ │ │ -Break any kind of date or time value into useful pieces. │ │ │ │ │ -Definition dblib.c:5910 │ │ │ │ │ -dbsettime │ │ │ │ │ -RETCODE dbsettime(int seconds) │ │ │ │ │ -Set maximum seconds db-lib waits for a server response to query. │ │ │ │ │ -Definition dblib.c:4234 │ │ │ │ │ -dbnumcols │ │ │ │ │ -int dbnumcols(DBPROCESS *dbproc) │ │ │ │ │ -Return number of regular columns in a result set. │ │ │ │ │ -Definition dblib.c:1867 │ │ │ │ │ -dbgetmaxprocs │ │ │ │ │ -int dbgetmaxprocs(void) │ │ │ │ │ -get maximum simultaneous connections db-lib will open to the server. │ │ │ │ │ -Definition dblib.c:4213 │ │ │ │ │ -dbtxptr │ │ │ │ │ -DBBINARY * dbtxptr(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get text pointer for a column in the current row. │ │ │ │ │ -Definition dblib.c:6599 │ │ │ │ │ -dbmsghandle │ │ │ │ │ -MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler) │ │ │ │ │ -Set a message handler, for messages from the server. │ │ │ │ │ -Definition dblib.c:5182 │ │ │ │ │ -dbreadtext │ │ │ │ │ -STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize) │ │ │ │ │ -Fetch part of a text or image value from the server. │ │ │ │ │ -Definition dblib.c:6705 │ │ │ │ │ -dbsqlok │ │ │ │ │ -RETCODE dbsqlok(DBPROCESS *dbproc) │ │ │ │ │ -Wait for results of a query from the server. │ │ │ │ │ -Definition dblib.c:4856 │ │ │ │ │ -dbdatlen │ │ │ │ │ -DBINT dbdatlen(DBPROCESS *dbproc, int column) │ │ │ │ │ -Get size of current row's data in a regular result column. │ │ │ │ │ -Definition dblib.c:3343 │ │ │ │ │ -dbsetrow │ │ │ │ │ -STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row) │ │ │ │ │ -Make a buffered row "current" without fetching it into bound variables. │ │ │ │ │ -Definition dblib.c:2064 │ │ │ │ │ -dbclose │ │ │ │ │ -void dbclose(DBPROCESS *dbproc) │ │ │ │ │ -Close a connection to the server and free associated resources. │ │ │ │ │ -Definition dblib.c:1504 │ │ │ │ │ -dbstrcpy │ │ │ │ │ -RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest) │ │ │ │ │ -Get a copy of a chunk of the command buffer. │ │ │ │ │ -Definition dblib.c:6384 │ │ │ │ │ -dbaltutype │ │ │ │ │ -DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ -Get user-defined datatype of a compute column. │ │ │ │ │ -Definition dblib.c:7158 │ │ │ │ │ -dbsetmaxprocs │ │ │ │ │ -RETCODE dbsetmaxprocs(int maxprocs) │ │ │ │ │ -Set maximum simultaneous connections db-lib will open to the server. │ │ │ │ │ -Definition dblib.c:4141 │ │ │ │ │ -dbspr1row │ │ │ │ │ -RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len) │ │ │ │ │ -Print a regular result row to a buffer. │ │ │ │ │ -Definition dblib.c:3476 │ │ │ │ │ -dbaltbind │ │ │ │ │ -RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype, │ │ │ │ │ -DBINT varlen, BYTE *varaddr) │ │ │ │ │ -Bind a compute column to a program variable. │ │ │ │ │ -Definition dblib.c:4411 │ │ │ │ │ -dbretstatus │ │ │ │ │ -DBINT dbretstatus(DBPROCESS *dbproc) │ │ │ │ │ -Fetch status value returned by query or remote procedure call. │ │ │ │ │ -Definition dblib.c:4716 │ │ │ │ │ -dbrpcinit │ │ │ │ │ -RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options) │ │ │ │ │ -Initialize a remote procedure call. │ │ │ │ │ -Definition rpc.c:72 │ │ │ │ │ -dbretdata │ │ │ │ │ -BYTE * dbretdata(DBPROCESS *dbproc, int retnum) │ │ │ │ │ -Get value of an output parameter filled by a stored procedure. │ │ │ │ │ -Definition dblib.c:4795 │ │ │ │ │ -dbretname │ │ │ │ │ -char * dbretname(DBPROCESS *dbproc, int retnum) │ │ │ │ │ -Get name of an output parameter filled by a stored procedure. │ │ │ │ │ -Definition dblib.c:4766 │ │ │ │ │ -dbhasretstat │ │ │ │ │ -DBBOOL dbhasretstat(DBPROCESS *dbproc) │ │ │ │ │ -Determine if query generated a return status number. │ │ │ │ │ -Definition dblib.c:4692 │ │ │ │ │ -dbrettype │ │ │ │ │ -int dbrettype(DBPROCESS *dbproc, int retnum) │ │ │ │ │ -Get datatype of a stored procedure's return parameter. │ │ │ │ │ -Definition dblib.c:6308 │ │ │ │ │ -dbretlen │ │ │ │ │ -int dbretlen(DBPROCESS *dbproc, int retnum) │ │ │ │ │ -Get size of an output parameter filled by a stored procedure. │ │ │ │ │ -Definition dblib.c:4821 │ │ │ │ │ -dbrpcparam │ │ │ │ │ -RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int │ │ │ │ │ -type, DBINT maxlen, DBINT datalen, BYTE *value) │ │ │ │ │ -Add a parameter to a remote procedure call. │ │ │ │ │ -Definition rpc.c:155 │ │ │ │ │ -dbrpcsend │ │ │ │ │ -RETCODE dbrpcsend(DBPROCESS *dbproc) │ │ │ │ │ -Execute the procedure and free associated memory. │ │ │ │ │ -Definition rpc.c:281 │ │ │ │ │ -dbnumrets │ │ │ │ │ -int dbnumrets(DBPROCESS *dbproc) │ │ │ │ │ -Get count of output parameters filled by a stored procedure. │ │ │ │ │ -Definition dblib.c:4734 │ │ │ │ │ -bcp_colfmt │ │ │ │ │ -RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int host_ │ │ │ │ │ -prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int │ │ │ │ │ -colnum) │ │ │ │ │ -Specify the format of a datafile prior to writing to a table. │ │ │ │ │ -Definition bcp.c:377 │ │ │ │ │ -bcp_getl │ │ │ │ │ -DBBOOL bcp_getl(LOGINREC *login) │ │ │ │ │ -See if BCP_SETL() was used to set the LOGINREC for BCP work. │ │ │ │ │ -Definition bcp.c:710 │ │ │ │ │ -bcp_control │ │ │ │ │ -RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value) │ │ │ │ │ -Set BCP options for uploading a datafile. │ │ │ │ │ -Definition bcp.c:546 │ │ │ │ │ -bcp_columns │ │ │ │ │ -RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount) │ │ │ │ │ -Indicate how many columns are to be found in the datafile. │ │ │ │ │ -Definition bcp.c:301 │ │ │ │ │ -bcp_colptr │ │ │ │ │ -RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column) │ │ │ │ │ -Override bcp_bind() by pointing to a different host variable. │ │ │ │ │ -Definition bcp.c:674 │ │ │ │ │ -bcp_bind │ │ │ │ │ -RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, │ │ │ │ │ -BYTE *terminator, int termlen, int type, int table_column) │ │ │ │ │ -Bind a program host variable to a database column. │ │ │ │ │ -Definition bcp.c:2083 │ │ │ │ │ -bcp_exec │ │ │ │ │ -RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied) │ │ │ │ │ -Write a datafile to a table. │ │ │ │ │ -Definition bcp.c:1621 │ │ │ │ │ -bcp_done │ │ │ │ │ -DBINT bcp_done(DBPROCESS *dbproc) │ │ │ │ │ -Conclude the transfer of data from program variables. │ │ │ │ │ -Definition bcp.c:2041 │ │ │ │ │ -bcp_readfmt │ │ │ │ │ -RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[]) │ │ │ │ │ -Read a format definition file. │ │ │ │ │ -Definition bcp.c:1682 │ │ │ │ │ -bcp_batch │ │ │ │ │ -DBINT bcp_batch(DBPROCESS *dbproc) │ │ │ │ │ -Commit a set of rows to the table. │ │ │ │ │ -Definition bcp.c:2014 │ │ │ │ │ -bcp_init │ │ │ │ │ -RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile, │ │ │ │ │ -const char *errfile, int direction) │ │ │ │ │ -Prepare for bulk copy operation on a table. │ │ │ │ │ -Definition bcp.c:167 │ │ │ │ │ -bcp_collen │ │ │ │ │ -RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column) │ │ │ │ │ -Set the length of a host variable to be written to a table. │ │ │ │ │ -Definition bcp.c:267 │ │ │ │ │ -bcp_sendrow │ │ │ │ │ -RETCODE bcp_sendrow(DBPROCESS *dbproc) │ │ │ │ │ -Write data in host variables to the table. │ │ │ │ │ -Definition bcp.c:1384 │ │ │ │ │ -bcp_colfmt_ps │ │ │ │ │ -RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int │ │ │ │ │ -host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int │ │ │ │ │ -colnum, DBTYPEINFO *typeinfo) │ │ │ │ │ -Specify the format of a host file for bulk copy purposes, with precision and │ │ │ │ │ -scale support for numeri... │ │ │ │ │ -Definition bcp.c:509 │ │ │ │ │ -bcp_options │ │ │ │ │ -RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen) │ │ │ │ │ -Set "hints" for uploading a file. │ │ │ │ │ -Definition bcp.c:624 │ │ │ │ │ -dbmny4zero │ │ │ │ │ -RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest) │ │ │ │ │ -Zero a DBMONEY4 value. │ │ │ │ │ -Definition dblib.c:5612 │ │ │ │ │ -dbmny4add │ │ │ │ │ -RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum) │ │ │ │ │ -Add two DBMONEY4 values. │ │ │ │ │ -Definition dblib.c:5635 │ │ │ │ │ -dbmny4cmp │ │ │ │ │ -int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2) │ │ │ │ │ -Compare two DBMONEY4 values. │ │ │ │ │ -Definition dblib.c:5754 │ │ │ │ │ -dbmnymaxpos │ │ │ │ │ -RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ -Get maximum positive DBMONEY value supported. │ │ │ │ │ -Definition dblib.c:5387 │ │ │ │ │ -dbmny4minus │ │ │ │ │ -RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest) │ │ │ │ │ -Negate a DBMONEY4 value. │ │ │ │ │ -Definition dblib.c:5588 │ │ │ │ │ -dbmnyminus │ │ │ │ │ -RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest) │ │ │ │ │ -Negate a DBMONEY value. │ │ │ │ │ -Definition dblib.c:5561 │ │ │ │ │ -dbmny4sub │ │ │ │ │ -RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 │ │ │ │ │ -*diff) │ │ │ │ │ -Subtract two DBMONEY4 values. │ │ │ │ │ -Definition dblib.c:5666 │ │ │ │ │ -dbmnyzero │ │ │ │ │ -RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ -Set a DBMONEY value to zero. │ │ │ │ │ -Definition dblib.c:5366 │ │ │ │ │ -dbmnycopy │ │ │ │ │ -RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest) │ │ │ │ │ -Copy a DBMONEY value. │ │ │ │ │ -Definition dblib.c:6052 │ │ │ │ │ -dbmny4copy │ │ │ │ │ -RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2) │ │ │ │ │ -Copy a DBMONEY4 value. │ │ │ │ │ -Definition dblib.c:5782 │ │ │ │ │ -dbmnymaxneg │ │ │ │ │ -RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ -Get maximum negative DBMONEY value supported. │ │ │ │ │ -Definition dblib.c:5408 │ │ │ │ │ -dbmnydec │ │ │ │ │ -RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr) │ │ │ │ │ -Subtract $0.0001 from a DBMONEY value. │ │ │ │ │ -Definition dblib.c:5533 │ │ │ │ │ -dbmnyinc │ │ │ │ │ -RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr) │ │ │ │ │ -Add $0.0001 to a DBMONEY value. │ │ │ │ │ -Definition dblib.c:5505 │ │ │ │ │ -dbmnycmp │ │ │ │ │ -int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2) │ │ │ │ │ -Compare two DBMONEY values. │ │ │ │ │ -Definition dblib.c:5308 │ │ │ │ │ -dbdatecmp │ │ │ │ │ -int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2) │ │ │ │ │ -Compare DBDATETIME values, similar to strcmp(3). │ │ │ │ │ -Definition dblib.c:5807 │ │ │ │ │ -dbmonthname │ │ │ │ │ -const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, │ │ │ │ │ -DBBOOL shortform) │ │ │ │ │ -Get name of a month, in some human language. │ │ │ │ │ -Definition dblib.c:7002 │ │ │ │ │ -dbcurcmd │ │ │ │ │ -int dbcurcmd(DBPROCESS *dbproc) │ │ │ │ │ -Get number of the row just returned. │ │ │ │ │ -Definition dblib.c:6262 │ │ │ │ │ -dbsetlbool │ │ │ │ │ -RETCODE dbsetlbool(LOGINREC *login, int value, int which) │ │ │ │ │ -Set a boolean value in a LOGINREC structure. │ │ │ │ │ -Definition dblib.c:909 │ │ │ │ │ -dblastrow │ │ │ │ │ -DBINT dblastrow(DBPROCESS *dbproc) │ │ │ │ │ -Get number of the last row in the row buffer. │ │ │ │ │ -Definition dblib.c:7251 │ │ │ │ │ -dbcmdrow │ │ │ │ │ -RETCODE dbcmdrow(DBPROCESS *dbproc) │ │ │ │ │ -See if the current command can return rows. │ │ │ │ │ -Definition dblib.c:4302 │ │ │ │ │ -dbsetlshort │ │ │ │ │ -RETCODE dbsetlshort(LOGINREC *login, int value, int which) │ │ │ │ │ -Set an integer value in a LOGINREC structure. │ │ │ │ │ -Definition dblib.c:874 │ │ │ │ │ -dbrows │ │ │ │ │ -RETCODE dbrows(DBPROCESS *dbproc) │ │ │ │ │ -Indicate whether a query returned rows. │ │ │ │ │ -Definition dblib.c:4076 │ │ │ │ │ -dbsetavail │ │ │ │ │ -void dbsetavail(DBPROCESS *dbprocess) │ │ │ │ │ -Mark a DBPROCESS as "available". │ │ │ │ │ -Definition dblib.c:7319 │ │ │ │ │ -dbiowdesc │ │ │ │ │ -int dbiowdesc(DBPROCESS *dbproc) │ │ │ │ │ -Get file descriptor of the socket used by a DBPROCESS to write data coming to │ │ │ │ │ -the server.... │ │ │ │ │ -Definition dblib.c:7291 │ │ │ │ │ -dbtds │ │ │ │ │ -int dbtds(DBPROCESS *dbprocess) │ │ │ │ │ -Get the TDS version in use for dbproc. │ │ │ │ │ -Definition dblib.c:6843 │ │ │ │ │ -dbcurrow │ │ │ │ │ -DBINT dbcurrow(DBPROCESS *dbproc) │ │ │ │ │ -Get number of the row currently being read. │ │ │ │ │ -Definition dblib.c:6228 │ │ │ │ │ -dbrowtype │ │ │ │ │ -STATUS dbrowtype(DBPROCESS *dbprocess) │ │ │ │ │ -Get returned row's type. │ │ │ │ │ -Definition dblib.c:6245 │ │ │ │ │ -dbiordesc │ │ │ │ │ -int dbiordesc(DBPROCESS *dbproc) │ │ │ │ │ -Get file descriptor of the socket used by a DBPROCESS to read data coming from │ │ │ │ │ -the server.... │ │ │ │ │ -Definition dblib.c:7275 │ │ │ │ │ -dbsetllong │ │ │ │ │ -RETCODE dbsetllong(LOGINREC *login, long value, int which) │ │ │ │ │ -Set an integer value in a LOGINREC structure. │ │ │ │ │ -Definition dblib.c:837 │ │ │ │ │ -dbsetlname │ │ │ │ │ -RETCODE dbsetlname(LOGINREC *login, const char *value, int which) │ │ │ │ │ -Set the value of a string in a LOGINREC structure. │ │ │ │ │ -Definition dblib.c:768 │ │ │ │ │ -tdsdbopen │ │ │ │ │ -DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib) │ │ │ │ │ -Form a connection with the server. │ │ │ │ │ -Definition dblib.c:1192 │ │ │ │ │ -dbdead │ │ │ │ │ -DBBOOL dbdead(DBPROCESS *dbproc) │ │ │ │ │ -Check if dbproc is an ex-parrot. │ │ │ │ │ -Definition dblib.c:5100 │ │ │ │ │ -dbfirstrow │ │ │ │ │ -DBINT dbfirstrow(DBPROCESS *dbproc) │ │ │ │ │ -See if a server response has arrived. │ │ │ │ │ -Definition dblib.c:7236 │ │ │ │ │ -LOGINREC │ │ │ │ │ -Definition bsqlodbc.c:100 │ │ │ │ │ -col_t │ │ │ │ │ -Definition dbpivot.c:77 │ │ │ │ │ -pivot_t │ │ │ │ │ -Definition dbpivot.c:842 │ │ │ │ │ -tds_dblib_loginrec │ │ │ │ │ -Definition dblib.h:44 │ │ │ │ │ -tds_dblib_dbprocess │ │ │ │ │ -Definition dblib.h:123 │ │ │ │ │ -DBVARYCHAR │ │ │ │ │ -Definition sybdb.h:264 │ │ │ │ │ -DBVARYBIN │ │ │ │ │ -Definition sybdb.h:270 │ │ │ │ │ -DBNUMERIC │ │ │ │ │ -Definition sybdb.h:276 │ │ │ │ │ -DBMONEY │ │ │ │ │ -Definition sybdb.h:285 │ │ │ │ │ -DBMONEY4 │ │ │ │ │ -Definition sybdb.h:291 │ │ │ │ │ -DBDATETIME │ │ │ │ │ -Definition sybdb.h:296 │ │ │ │ │ -DBDATETIME4 │ │ │ │ │ -Definition sybdb.h:302 │ │ │ │ │ -DBDATETIMEALL │ │ │ │ │ -Definition sybdb.h:308 │ │ │ │ │ -DBDATETIMEALL::offset │ │ │ │ │ -DBSMALLINT offset │ │ │ │ │ -time offset │ │ │ │ │ -Definition sybdb.h:311 │ │ │ │ │ -DBDATETIMEALL::time │ │ │ │ │ -DBUBIGINT time │ │ │ │ │ -time, 7 digit precision │ │ │ │ │ -Definition sybdb.h:309 │ │ │ │ │ -DBDATETIMEALL::date │ │ │ │ │ -DBINT date │ │ │ │ │ -date, 0 = 1900-01-01 │ │ │ │ │ -Definition sybdb.h:310 │ │ │ │ │ -dbtypeinfo │ │ │ │ │ -Definition sybdb.h:337 │ │ │ │ │ -dbstring │ │ │ │ │ -Definition sybdb.h:343 │ │ │ │ │ -DBCOL │ │ │ │ │ -Definition sybdb.h:356 │ │ │ │ │ -DBCOL2 │ │ │ │ │ -Definition sybdb.h:375 │ │ │ │ │ -tds_microsoft_dbdaterec │ │ │ │ │ -Definition sybdb.h:459 │ │ │ │ │ -tds_sybase_dbdaterec │ │ │ │ │ -Definition sybdb.h:475 │ │ │ │ │ -tds_microsoft_dbdaterec2 │ │ │ │ │ -Definition sybdb.h:491 │ │ │ │ │ -tds_sybase_dbdaterec2 │ │ │ │ │ -Definition sybdb.h:507 │ │ │ │ │ +841#endif │ │ │ │ │ +_cs_objname │ │ │ │ │ +Definition cspublic.h:728 │ │ │ │ │ +_cs_objdata │ │ │ │ │ +Definition cspublic.h:748 │ │ │ │ │ +_cs_datafmt │ │ │ │ │ +Definition cstypes.h:119 │ │ │ │ │ +_cs_daterec │ │ │ │ │ +Definition cstypes.h:168 │ │ │ │ │ +_cs_clientmsg │ │ │ │ │ +Definition cstypes.h:186 │ │ │ │ │ +_cs_servermsg │ │ │ │ │ +Definition cstypes.h:200 │ │ │ │ │ +_cs_context │ │ │ │ │ +Definition ctlib.h:135 │ │ │ │ │ +_cs_connection │ │ │ │ │ +Definition ctlib.h:188 │ │ │ │ │ +_cs_command │ │ │ │ │ +Definition ctlib.h:284 │ │ │ │ │ +_cs_blkdesc │ │ │ │ │ +Definition ctlib.h:311 │ │ │ │ │ +_cs_locale │ │ │ │ │ +Definition ctlib.h:320 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00368_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/bkpublic.h Source File │ │ │ │ +FreeTDS API: include/tds_sysdep_public.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,90 +74,131 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
bkpublic.h
│ │ │ │ +
tds_sysdep_public.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2024 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21#ifndef _bkpublic_h_
│ │ │ │ -
22#define _bkpublic_h_
│ │ │ │ -
23
│ │ │ │ -
24/* seperate this stuff out later */
│ │ │ │ -
25#include <cspublic.h>
│ │ │ │ -
26
│ │ │ │ -
27#ifdef __cplusplus
│ │ │ │ -
28extern "C"
│ │ │ │ -
29{
│ │ │ │ -
30#if 0
│ │ │ │ -
31}
│ │ │ │ -
32#endif
│ │ │ │ -
33#endif
│ │ │ │ -
34
│ │ │ │ -
35/* bulk properties start with 1 */
│ │ │ │ -
36#define BLK_IDENTITY 1
│ │ │ │ -
37
│ │ │ │ -
38/* FreeTDS extention, set MS bulk hints */
│ │ │ │ -
39#define BLK_HINTS 1001
│ │ │ │ -
40
│ │ │ │ -
41CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC ** blk_pointer);
│ │ │ │ -
42CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * datalen,
│ │ │ │ -
43 CS_SMALLINT * indicator);
│ │ │ │ -
44CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT colnum, CS_VOID * valuep,
│ │ │ │ -
45 CS_INT valuelen, CS_INT * outlenp);
│ │ │ │ -
46CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
47CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt);
│ │ │ │ -
48CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);
│ │ │ │ -
49CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);
│ │ │ │ -
50CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp);
│ │ │ │ -
51CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT bufsize, CS_INT * outlenp);
│ │ │ │ -
52CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * tablename, CS_INT tnamelen);
│ │ │ │ -
53CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
54CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);
│ │ │ │ -
55CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);
│ │ │ │ -
56CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);
│ │ │ │ -
57CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);
│ │ │ │ -
58CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);
│ │ │ │ -
59CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * buffer, CS_INT buflen);
│ │ │ │ -
60CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);
│ │ │ │ -
61CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
62
│ │ │ │ -
63#ifdef __cplusplus
│ │ │ │ -
64#if 0
│ │ │ │ -
65{
│ │ │ │ -
66#endif
│ │ │ │ -
67}
│ │ │ │ -
68#endif
│ │ │ │ -
69
│ │ │ │ -
70#endif
│ │ │ │ -
Definition cstypes.h:119
│ │ │ │ -
Definition ctlib.h:188
│ │ │ │ -
Definition ctlib.h:311
│ │ │ │ +
2 * Copyright (C) 1998-2011 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tds_sysdep_public_h_
│ │ │ │ +
21#define _tds_sysdep_public_h_
│ │ │ │ +
22
│ │ │ │ +
23/*
│ │ │ │ +
24 * This file is publicly installed.
│ │ │ │ +
25 * MUST not include config.h
│ │ │ │ +
26 */
│ │ │ │ +
27
│ │ │ │ +
28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || \
│ │ │ │ +
29 (defined(_MSC_VER) && _MSC_VER >= 1600) || \
│ │ │ │ +
30 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
│ │ │ │ +
31# include <stdint.h>
│ │ │ │ +
32#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)
│ │ │ │ +
33# include <inttypes.h>
│ │ │ │ +
34#else
│ │ │ │ +
35typedef signed char int8_t; /* 8-bit int */
│ │ │ │ +
36typedef unsigned char uint8_t; /* 8-bit int */
│ │ │ │ +
37/*
│ │ │ │ +
38 * This is where platform-specific changes need to be made.
│ │ │ │ +
39 */
│ │ │ │ +
40# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
│ │ │ │ +
41# include <winsock2.h>
│ │ │ │ +
42# include <ws2tcpip.h>
│ │ │ │ +
43# include <windows.h>
│ │ │ │ +
44 typedef signed short int16_t; /* 16-bit int */
│ │ │ │ +
45 typedef unsigned short uint16_t; /* 16-bit int */
│ │ │ │ +
46 typedef signed int int32_t; /* 32-bit int */
│ │ │ │ +
47 typedef unsigned int uint32_t; /* 32-bit int */
│ │ │ │ +
48 typedef signed __int64 int64_t; /* 64-bit int */
│ │ │ │ +
49 typedef unsigned __int64 uint64_t; /* 64-bit int */
│ │ │ │ +
50# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
│ │ │ │ +
51 typedef signed short int16_t; /* 16-bit int */
│ │ │ │ +
52 typedef unsigned short uint16_t; /* 16-bit int */
│ │ │ │ +
53 typedef signed int int32_t; /* 32-bit int */
│ │ │ │ +
54 typedef unsigned int uint32_t; /* 32-bit int */
│ │ │ │ +
55 typedef signed long int64_t; /* 64-bit int */
│ │ │ │ +
56 typedef unsigned long uint64_t; /* 64-bit int */
│ │ │ │ +
57# endif
│ │ │ │ +
58#endif
│ │ │ │ +
59
│ │ │ │ +
60#include <float.h>
│ │ │ │ +
61
│ │ │ │ +
62/* try to understand float sizes using float.h constants */
│ │ │ │ +
63#if FLT_RADIX == 2
│ │ │ │ +
64# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128
│ │ │ │ +
65# define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ +
66# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128
│ │ │ │ +
67# define tds_sysdep_real32_type double /* 32-bit real */
│ │ │ │ +
68# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128
│ │ │ │ +
69# define tds_sysdep_real32_type long double /* 32-bit real */
│ │ │ │ +
70# endif
│ │ │ │ +
71# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024
│ │ │ │ +
72# define tds_sysdep_real64_type float /* 64-bit real */
│ │ │ │ +
73# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024
│ │ │ │ +
74# define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ +
75# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
│ │ │ │ +
76# define tds_sysdep_real64_type long double /* 64-bit real */
│ │ │ │ +
77# endif
│ │ │ │ +
78# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)
│ │ │ │ +
79# error Some float type was not found!
│ │ │ │ +
80# endif
│ │ │ │ +
81#else
│ │ │ │ +
82# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38
│ │ │ │ +
83# define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ +
84# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38
│ │ │ │ +
85# define tds_sysdep_real32_type double /* 32-bit real */
│ │ │ │ +
86# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38
│ │ │ │ +
87# define tds_sysdep_real32_type long double /* 32-bit real */
│ │ │ │ +
88# endif
│ │ │ │ +
89# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308
│ │ │ │ +
90# define tds_sysdep_real64_type float /* 64-bit real */
│ │ │ │ +
91# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308
│ │ │ │ +
92# define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ +
93# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308
│ │ │ │ +
94# define tds_sysdep_real64_type long double /* 64-bit real */
│ │ │ │ +
95# endif
│ │ │ │ +
96#endif
│ │ │ │ +
97
│ │ │ │ +
98/* fall back to configure.ac types */
│ │ │ │ +
99#ifndef tds_sysdep_real32_type
│ │ │ │ +
100#define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ +
101#endif /* !tds_sysdep_real32_type */
│ │ │ │ +
102
│ │ │ │ +
103#ifndef tds_sysdep_real64_type
│ │ │ │ +
104#define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ +
105#endif /* !tds_sysdep_real64_type */
│ │ │ │ +
106
│ │ │ │ +
107#if !defined(MSDBLIB) && !defined(SYBDBLIB)
│ │ │ │ +
108#define SYBDBLIB 1
│ │ │ │ +
109#endif
│ │ │ │ +
110#if defined(MSDBLIB) && defined(SYBDBLIB)
│ │ │ │ +
111#error MSDBLIB and SYBDBLIB cannot both be defined
│ │ │ │ +
112#endif
│ │ │ │ +
113
│ │ │ │ +
114#endif /* _tds_sysdep_public_h_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,95 +1,123 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -bkpublic.h │ │ │ │ │ +tds_sysdep_public.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2024 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21#ifndef _bkpublic_h_ │ │ │ │ │ -22#define _bkpublic_h_ │ │ │ │ │ -23 │ │ │ │ │ -24/* seperate this stuff out later */ │ │ │ │ │ -25#include │ │ │ │ │ -26 │ │ │ │ │ -27#ifdef __cplusplus │ │ │ │ │ -28extern "C" │ │ │ │ │ -29{ │ │ │ │ │ -30#if 0 │ │ │ │ │ -31} │ │ │ │ │ -32#endif │ │ │ │ │ -33#endif │ │ │ │ │ -34 │ │ │ │ │ -35/* bulk properties start with 1 */ │ │ │ │ │ -36#define BLK_IDENTITY 1 │ │ │ │ │ -37 │ │ │ │ │ -38/* FreeTDS extention, set MS bulk hints */ │ │ │ │ │ -39#define BLK_HINTS 1001 │ │ │ │ │ -40 │ │ │ │ │ -41CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC │ │ │ │ │ -** blk_pointer); │ │ │ │ │ -42CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * │ │ │ │ │ -datafmt, CS_VOID * buffer, CS_INT * datalen, │ │ │ │ │ -43 CS_SMALLINT * indicator); │ │ │ │ │ -44CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * │ │ │ │ │ -rowp, CS_INT colnum, CS_VOID * valuep, │ │ │ │ │ -45 CS_INT valuelen, CS_INT * outlenp); │ │ │ │ │ -46CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, │ │ │ │ │ -CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -47CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * │ │ │ │ │ -datafmt); │ │ │ │ │ -48CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow); │ │ │ │ │ -49CS_RETCODE blk_drop(CS_BLKDESC * blkdesc); │ │ │ │ │ -50CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * │ │ │ │ │ -rowp); │ │ │ │ │ -51CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW │ │ │ │ │ -* rowp, CS_INT bufsize, CS_INT * outlenp); │ │ │ │ │ -52CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * │ │ │ │ │ -tablename, CS_INT tnamelen); │ │ │ │ │ -53CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, │ │ │ │ │ -CS_VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -54CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row); │ │ │ │ │ -55CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row); │ │ │ │ │ -56CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc); │ │ │ │ │ -57CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count); │ │ │ │ │ -58CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row); │ │ │ │ │ -59CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * │ │ │ │ │ -buffer, CS_INT buflen); │ │ │ │ │ -60CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp); │ │ │ │ │ -61CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT │ │ │ │ │ -buflen, CS_INT * outlen); │ │ │ │ │ -62 │ │ │ │ │ -63#ifdef __cplusplus │ │ │ │ │ -64#if 0 │ │ │ │ │ -65{ │ │ │ │ │ -66#endif │ │ │ │ │ -67} │ │ │ │ │ -68#endif │ │ │ │ │ -69 │ │ │ │ │ -70#endif │ │ │ │ │ -_cs_datafmt │ │ │ │ │ -Definition cstypes.h:119 │ │ │ │ │ -_cs_connection │ │ │ │ │ -Definition ctlib.h:188 │ │ │ │ │ -_cs_blkdesc │ │ │ │ │ -Definition ctlib.h:311 │ │ │ │ │ +2 * Copyright (C) 1998-2011 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tds_sysdep_public_h_ │ │ │ │ │ +21#define _tds_sysdep_public_h_ │ │ │ │ │ +22 │ │ │ │ │ +23/* │ │ │ │ │ +24 * This file is publicly installed. │ │ │ │ │ +25 * MUST not include config.h │ │ │ │ │ +26 */ │ │ │ │ │ +27 │ │ │ │ │ +28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || │ │ │ │ │ +\ │ │ │ │ │ +29 (defined(_MSC_VER) && _MSC_VER >= 1600) || \ │ │ │ │ │ +30 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) │ │ │ │ │ +31# include │ │ │ │ │ +32#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux) │ │ │ │ │ +33# include │ │ │ │ │ +34#else │ │ │ │ │ +35typedef signed char int8_t; /* 8-bit int */ │ │ │ │ │ +36typedef unsigned char uint8_t; /* 8-bit int */ │ │ │ │ │ +37/* │ │ │ │ │ +38 * This is where platform-specific changes need to be made. │ │ │ │ │ +39 */ │ │ │ │ │ +40# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) │ │ │ │ │ +41# include │ │ │ │ │ +42# include │ │ │ │ │ +43# include │ │ │ │ │ +44 typedef signed short int16_t; /* 16-bit int */ │ │ │ │ │ +45 typedef unsigned short uint16_t; /* 16-bit int */ │ │ │ │ │ +46 typedef signed int int32_t; /* 32-bit int */ │ │ │ │ │ +47 typedef unsigned int uint32_t; /* 32-bit int */ │ │ │ │ │ +48 typedef signed __int64 int64_t; /* 64-bit int */ │ │ │ │ │ +49 typedef unsigned __int64 uint64_t; /* 64-bit int */ │ │ │ │ │ +50# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */ │ │ │ │ │ +51 typedef signed short int16_t; /* 16-bit int */ │ │ │ │ │ +52 typedef unsigned short uint16_t; /* 16-bit int */ │ │ │ │ │ +53 typedef signed int int32_t; /* 32-bit int */ │ │ │ │ │ +54 typedef unsigned int uint32_t; /* 32-bit int */ │ │ │ │ │ +55 typedef signed long int64_t; /* 64-bit int */ │ │ │ │ │ +56 typedef unsigned long uint64_t; /* 64-bit int */ │ │ │ │ │ +57# endif │ │ │ │ │ +58#endif │ │ │ │ │ +59 │ │ │ │ │ +60#include │ │ │ │ │ +61 │ │ │ │ │ +62/* try to understand float sizes using float.h constants */ │ │ │ │ │ +63#if FLT_RADIX == 2 │ │ │ │ │ +64# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128 │ │ │ │ │ +65# define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ +66# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128 │ │ │ │ │ +67# define tds_sysdep_real32_type double /* 32-bit real */ │ │ │ │ │ +68# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128 │ │ │ │ │ +69# define tds_sysdep_real32_type long double /* 32-bit real */ │ │ │ │ │ +70# endif │ │ │ │ │ +71# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024 │ │ │ │ │ +72# define tds_sysdep_real64_type float /* 64-bit real */ │ │ │ │ │ +73# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024 │ │ │ │ │ +74# define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ +75# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 │ │ │ │ │ +76# define tds_sysdep_real64_type long double /* 64-bit real */ │ │ │ │ │ +77# endif │ │ │ │ │ +78# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type) │ │ │ │ │ +79# error Some float type was not found! │ │ │ │ │ +80# endif │ │ │ │ │ +81#else │ │ │ │ │ +82# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38 │ │ │ │ │ +83# define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ +84# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38 │ │ │ │ │ +85# define tds_sysdep_real32_type double /* 32-bit real */ │ │ │ │ │ +86# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38 │ │ │ │ │ +87# define tds_sysdep_real32_type long double /* 32-bit real */ │ │ │ │ │ +88# endif │ │ │ │ │ +89# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308 │ │ │ │ │ +90# define tds_sysdep_real64_type float /* 64-bit real */ │ │ │ │ │ +91# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308 │ │ │ │ │ +92# define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ +93# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308 │ │ │ │ │ +94# define tds_sysdep_real64_type long double /* 64-bit real */ │ │ │ │ │ +95# endif │ │ │ │ │ +96#endif │ │ │ │ │ +97 │ │ │ │ │ +98/* fall back to configure.ac types */ │ │ │ │ │ +99#ifndef tds_sysdep_real32_type │ │ │ │ │ +100#define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ +101#endif /* !tds_sysdep_real32_type */ │ │ │ │ │ +102 │ │ │ │ │ +103#ifndef tds_sysdep_real64_type │ │ │ │ │ +104#define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ +105#endif /* !tds_sysdep_real64_type */ │ │ │ │ │ +106 │ │ │ │ │ +107#if !defined(MSDBLIB) && !defined(SYBDBLIB) │ │ │ │ │ +108#define SYBDBLIB 1 │ │ │ │ │ +109#endif │ │ │ │ │ +110#if defined(MSDBLIB) && defined(SYBDBLIB) │ │ │ │ │ +111#error MSDBLIB and SYBDBLIB cannot both be defined │ │ │ │ │ +112#endif │ │ │ │ │ +113 │ │ │ │ │ +114#endif /* _tds_sysdep_public_h_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00371_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/config.h Source File │ │ │ │ +FreeTDS API: include/dblib.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,829 +74,268 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
config.h
│ │ │ │ +
dblib.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* include/config.h. Generated from config.h.in by configure. */
│ │ │ │ -
2/* include/config.h.in. Generated from configure.ac by autoheader. */
│ │ │ │ -
3
│ │ │ │ -
4#define _freetds_config_h_
│ │ │ │ -
5
│ │ │ │ -
6/* Define if building universal (internal helper macro) */
│ │ │ │ -
7/* #undef AC_APPLE_UNIVERSAL_BUILD */
│ │ │ │ -
8
│ │ │ │ -
9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */
│ │ │ │ -
10/* #undef BSD_COMP */
│ │ │ │ -
11
│ │ │ │ -
12/* Define to 1 if using 'alloca.c'. */
│ │ │ │ -
13/* #undef C_ALLOCA */
│ │ │ │ -
14
│ │ │ │ -
15/* Define to enable work in progress code */
│ │ │ │ -
16/* #undef ENABLE_DEVELOPING */
│ │ │ │ -
17
│ │ │ │ -
18/* Define to enable extra checks on code */
│ │ │ │ -
19/* #undef ENABLE_EXTRA_CHECKS */
│ │ │ │ -
20
│ │ │ │ -
21/* Defined if --enable-krb5 used and library detected */
│ │ │ │ -
22#define ENABLE_KRB5 1
│ │ │ │ -
23
│ │ │ │ -
24/* Define to enable MARS support */
│ │ │ │ -
25#define ENABLE_ODBC_MARS 1
│ │ │ │ -
26
│ │ │ │ -
27/* Define to enable ODBC wide string support */
│ │ │ │ -
28#define ENABLE_ODBC_WIDE 1
│ │ │ │ -
29
│ │ │ │ -
30/* Define to 1 if GNU tls use nettle as backend. */
│ │ │ │ -
31#define GNUTLS_USE_NETTLE 1
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_aoIoAtf9UfNLxwNuH19vDb_
│ │ │ │ +
21#define _tdsguard_aoIoAtf9UfNLxwNuH19vDb_
│ │ │ │ +
22
│ │ │ │ +
23#include <freetds/pushvis.h>
│ │ │ │ +
24
│ │ │ │ +
25#ifdef __cplusplus
│ │ │ │ +
26extern "C"
│ │ │ │ +
27{
│ │ │ │ +
28#if 0
│ │ │ │ +
29}
│ │ │ │ +
30#endif
│ │ │ │ +
31#endif
│ │ │ │
32
│ │ │ │ -
33/* Define to 1 if you have the 'alarm' function. */
│ │ │ │ -
34#define HAVE_ALARM 1
│ │ │ │ -
35
│ │ │ │ -
36/* Define to 1 if you have 'alloca', as a function or macro. */
│ │ │ │ -
37#define HAVE_ALLOCA 1
│ │ │ │ -
38
│ │ │ │ -
39/* Define to 1 if <alloca.h> works. */
│ │ │ │ -
40#define HAVE_ALLOCA_H 1
│ │ │ │ -
41
│ │ │ │ -
42/* Define to 1 if you have the <arpa/inet.h> header file. */
│ │ │ │ -
43#define HAVE_ARPA_INET_H 1
│ │ │ │ -
44
│ │ │ │ -
45/* Define to 1 if you have the 'ASN1_STRING_get0_data' function. */
│ │ │ │ -
46/* #undef HAVE_ASN1_STRING_GET0_DATA */
│ │ │ │ -
47
│ │ │ │ -
48/* Define to 1 if you have the 'asprintf' function. */
│ │ │ │ -
49#define HAVE_ASPRINTF 1
│ │ │ │ +
33typedef enum
│ │ │ │ +
34{
│ │ │ │ +
35 _DB_RES_INIT
│ │ │ │ +
36 , _DB_RES_RESULTSET_EMPTY
│ │ │ │ +
37 , _DB_RES_RESULTSET_ROWS
│ │ │ │ +
38 , _DB_RES_NEXT_RESULT
│ │ │ │ +
39 , _DB_RES_NO_MORE_RESULTS
│ │ │ │ +
40 , _DB_RES_SUCCEED
│ │ │ │ +
41} DB_RESULT_STATE;
│ │ │ │ +
42
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
44{
│ │ │ │ + │ │ │ │ +
46 bool network_auth;
│ │ │ │ +
47};
│ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
49struct dblib_buffer_row;
│ │ │ │
50
│ │ │ │ -
51/* Define to 1 if you have the 'basename' function. */
│ │ │ │ -
52#define HAVE_BASENAME 1
│ │ │ │ -
53
│ │ │ │ -
54/* Define to 1 if you have the 'BIO_get_data' function. */
│ │ │ │ -
55/* #undef HAVE_BIO_GET_DATA */
│ │ │ │ -
56
│ │ │ │ -
57/* Define if you have the clock_gettime function. */
│ │ │ │ -
58#define HAVE_CLOCK_GETTIME 1
│ │ │ │ -
59
│ │ │ │ -
60/* Define to 1 if you have the <com_err.h> header file. */
│ │ │ │ -
61#define HAVE_COM_ERR_H 1
│ │ │ │ -
62
│ │ │ │ -
63/* Define to 1 if you have the 'daemon' function. */
│ │ │ │ -
64#define HAVE_DAEMON 1
│ │ │ │ -
65
│ │ │ │ -
66/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't.
│ │ │ │ -
67 */
│ │ │ │ -
68/* #undef HAVE_DECL_TZNAME */
│ │ │ │ -
69
│ │ │ │ -
70/* Define to 1 if you have the <dirent.h> header file. */
│ │ │ │ -
71#define HAVE_DIRENT_H 1
│ │ │ │ +
│ │ │ │ +
51typedef struct
│ │ │ │ +
52{
│ │ │ │ +
53 int received; /* how many rows have been received for this result set */
│ │ │ │ +
54 int head; /* queue insertion point */
│ │ │ │ +
55 int tail; /* oldest item in queue */
│ │ │ │ +
56 int current; /* dbnextrow() reads this row */
│ │ │ │ +
57 int capacity; /* how many elements the queue can hold */
│ │ │ │ +
58 struct dblib_buffer_row *rows; /* pointer to the row storage */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
60
│ │ │ │ +
│ │ │ │ +
61typedef struct
│ │ │ │ +
62{
│ │ │ │ +
63 int host_column;
│ │ │ │ +
64 TDS_SERVER_TYPE datatype;
│ │ │ │ +
65 int prefix_len;
│ │ │ │ +
66 DBINT column_len;
│ │ │ │ +
67 BYTE *terminator;
│ │ │ │ +
68 int term_len;
│ │ │ │ +
69 int tab_colnum;
│ │ │ │ +
70 int column_error;
│ │ │ │ + │ │ │ │ +
│ │ │ │
72
│ │ │ │ -
73/* Define to 1 if you have the <dlfcn.h> header file. */
│ │ │ │ -
74#define HAVE_DLFCN_H 1
│ │ │ │ -
75
│ │ │ │ -
76/* Define to 1 if you have the <errno.h> header file. */
│ │ │ │ -
77#define HAVE_ERRNO_H 1
│ │ │ │ -
78
│ │ │ │ -
79/* Define to 1 if you have the 'error_message' function. */
│ │ │ │ -
80/* #undef HAVE_ERROR_MESSAGE */
│ │ │ │ -
81
│ │ │ │ -
82/* Define to 1 if you have the 'eventfd' function. */
│ │ │ │ -
83#define HAVE_EVENTFD 1
│ │ │ │ -
84
│ │ │ │ -
85/* Define to 1 if you have the <fcntl.h> header file. */
│ │ │ │ -
86#define HAVE_FCNTL_H 1
│ │ │ │ +
│ │ │ │ +
73typedef struct
│ │ │ │ +
74{
│ │ │ │ +
75 TDS_CHAR *hostfile;
│ │ │ │ +
76 TDS_CHAR *errorfile;
│ │ │ │ +
77 FILE *bcp_errfileptr;
│ │ │ │ +
78 TDS_INT host_colcount;
│ │ │ │ +
79 BCP_HOSTCOLINFO **host_columns;
│ │ │ │ +
80 TDS_INT firstrow;
│ │ │ │ +
81 TDS_INT lastrow;
│ │ │ │ +
82 TDS_INT maxerrs;
│ │ │ │ +
83 TDS_INT batch;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
85
│ │ │ │ +
86/* linked list of rpc parameters */
│ │ │ │
87
│ │ │ │ -
88/* Define to 1 if you have the 'fork' function. */
│ │ │ │ -
89#define HAVE_FORK 1
│ │ │ │ -
90
│ │ │ │ -
91/* Define to 1 if fseeko (and ftello) are declared in stdio.h. */
│ │ │ │ -
92#define HAVE_FSEEKO 1
│ │ │ │ -
93
│ │ │ │ -
94/* Define to 1 if you have the 'fstat' function. */
│ │ │ │ -
95#define HAVE_FSTAT 1
│ │ │ │ -
96
│ │ │ │ -
97/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ -
98 gethostbyaddr_r(). */
│ │ │ │ -
99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */
│ │ │ │ -
100
│ │ │ │ -
101/* Define to 1 if your system provides the 7-parameter version of
│ │ │ │ -
102 gethostbyaddr_r(). */
│ │ │ │ -
103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */
│ │ │ │ -
104
│ │ │ │ -
105/* Define to 1 if your system provides the 8-parameter version of
│ │ │ │ -
106 gethostbyaddr_r(). */
│ │ │ │ -
107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1
│ │ │ │ +
│ │ │ │ +
88typedef struct DBREMOTE_PROC_PARAM
│ │ │ │ +
89{
│ │ │ │ +
90 struct DBREMOTE_PROC_PARAM *next;
│ │ │ │ +
91
│ │ │ │ +
92 char *name;
│ │ │ │ +
93 BYTE status;
│ │ │ │ +
94 TDS_SERVER_TYPE type;
│ │ │ │ +
95 DBINT maxlen;
│ │ │ │ +
96 DBINT datalen;
│ │ │ │ +
97 BYTE *value;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
99
│ │ │ │ +
│ │ │ │ +
100typedef struct DBREMOTE_PROC
│ │ │ │ +
101{
│ │ │ │ +
102 struct DBREMOTE_PROC *next;
│ │ │ │ +
103
│ │ │ │ +
104 char *name;
│ │ │ │ +
105 DBSMALLINT options;
│ │ │ │ +
106 DBREMOTE_PROC_PARAM *param_list;
│ │ │ │ + │ │ │ │ +
│ │ │ │
108
│ │ │ │ -
109/* Define to 1 if your system provides the 3-parameter version of
│ │ │ │ -
110 gethostbyname_r(). */
│ │ │ │ -
111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */
│ │ │ │ -
112
│ │ │ │ -
113/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ -
114 gethostbyname_r(). */
│ │ │ │ -
115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */
│ │ │ │ -
116
│ │ │ │ -
117/* Define to 1 if your system provides the 6-parameter version of
│ │ │ │ -
118 gethostbyname_r(). */
│ │ │ │ -
119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1
│ │ │ │ -
120
│ │ │ │ -
121/* Define to 1 if your system provides the 4-parameter version of
│ │ │ │ -
122 getpwuid_r(). */
│ │ │ │ -
123/* #undef HAVE_FUNC_GETPWUID_R_4 */
│ │ │ │ -
124
│ │ │ │ -
125/* Define to 1 if your system getpwuid_r() have 4 parameters and return struct
│ │ │ │ -
126 passwd*. */
│ │ │ │ -
127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */
│ │ │ │ +
│ │ │ │ +
109typedef struct dboption
│ │ │ │ +
110{
│ │ │ │ +
111 const char *text;
│ │ │ │ +
112 DBSTRING *param;
│ │ │ │ +
113 DBBOOL factive;
│ │ │ │ +
114} DBOPTION;
│ │ │ │ +
│ │ │ │ +
115
│ │ │ │ +
│ │ │ │ +
116typedef struct
│ │ │ │ +
117{
│ │ │ │ +
118 const BYTE *bindval;
│ │ │ │ +
119 size_t len;
│ │ │ │ +
120} NULLREP;
│ │ │ │ +
│ │ │ │ +
121
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
123{
│ │ │ │ + │ │ │ │ +
125
│ │ │ │ +
126 STATUS row_type;
│ │ │ │ +
127 DBPROC_ROWBUF row_buf;
│ │ │ │
128
│ │ │ │ -
129/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ -
130 getpwuid_r(). */
│ │ │ │ -
131#define HAVE_FUNC_GETPWUID_R_5 1
│ │ │ │ -
132
│ │ │ │ -
133/* Define to 1 if your system provides the 4-parameter version of
│ │ │ │ -
134 getservbyname_r(). */
│ │ │ │ -
135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */
│ │ │ │ -
136
│ │ │ │ -
137/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ -
138 getservbyname_r(). */
│ │ │ │ -
139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */
│ │ │ │ -
140
│ │ │ │ -
141/* Define to 1 if your system provides the 6-parameter version of
│ │ │ │ -
142 getservbyname_r(). */
│ │ │ │ -
143#define HAVE_FUNC_GETSERVBYNAME_R_6 1
│ │ │ │ -
144
│ │ │ │ -
145/* Define to 1 if your localtime_r return a int. */
│ │ │ │ -
146/* #undef HAVE_FUNC_LOCALTIME_R_INT */
│ │ │ │ -
147
│ │ │ │ -
148/* Define to 1 if your localtime_r return a struct tm*. */
│ │ │ │ -
149#define HAVE_FUNC_LOCALTIME_R_TM 1
│ │ │ │ -
150
│ │ │ │ -
151/* Define if you have getaddrinfo function */
│ │ │ │ -
152#define HAVE_GETADDRINFO 1
│ │ │ │ -
153
│ │ │ │ -
154/* Define to 1 if you have the 'gethostname' function. */
│ │ │ │ -
155#define HAVE_GETHOSTNAME 1
│ │ │ │ -
156
│ │ │ │ -
157/* Define to 1 if you have the 'gethrtime' function. */
│ │ │ │ -
158/* #undef HAVE_GETHRTIME */
│ │ │ │ -
159
│ │ │ │ -
160/* Define to 1 if you have the 'getipnodebyaddr' function. */
│ │ │ │ -
161/* #undef HAVE_GETIPNODEBYADDR */
│ │ │ │ -
162
│ │ │ │ -
163/* Define to 1 if you have the 'getipnodebyname' function. */
│ │ │ │ -
164/* #undef HAVE_GETIPNODEBYNAME */
│ │ │ │ -
165
│ │ │ │ -
166/* Define to 1 if you have the 'getopt' function. */
│ │ │ │ -
167#define HAVE_GETOPT 1
│ │ │ │ -
168
│ │ │ │ -
169/* Define to 1 if you have the <getopt.h> header file. */
│ │ │ │ -
170#define HAVE_GETOPT_H 1
│ │ │ │ -
171
│ │ │ │ -
172/* Define if your getopt(3) defines and uses optreset */
│ │ │ │ -
173/* #undef HAVE_GETOPT_OPTRESET */
│ │ │ │ -
174
│ │ │ │ -
175/* Define to 1 if you have the 'getpwuid' function. */
│ │ │ │ -
176#define HAVE_GETPWUID 1
│ │ │ │ +
129 int noautofree;
│ │ │ │ +
130 int more_results; /* boolean. Are we expecting results? */
│ │ │ │ +
131 DB_RESULT_STATE dbresults_state;
│ │ │ │ +
132 int dbresults_retcode;
│ │ │ │ +
133 BYTE *user_data; /* see dbsetuserdata() and dbgetuserdata() */
│ │ │ │ +
134 unsigned char *dbbuf; /* is dynamic! */
│ │ │ │ +
135 int dbbufsz;
│ │ │ │ +
136 int command_state;
│ │ │ │ +
137 TDS_INT text_size;
│ │ │ │ +
138 TDS_INT text_sent;
│ │ │ │ +
139 DBTYPEINFO typeinfo;
│ │ │ │ +
140 unsigned char avail_flag;
│ │ │ │ +
141 DBOPTION *dbopts;
│ │ │ │ +
142 DBSTRING *dboptcmd;
│ │ │ │ +
143 BCP_HOSTFILEINFO *hostfileinfo;
│ │ │ │ +
144 TDSBCPINFO *bcpinfo;
│ │ │ │ +
145 DBREMOTE_PROC *rpc;
│ │ │ │ +
146 DBUSMALLINT envchange_rcv;
│ │ │ │ +
147 char dbcurdb[DBMAXNAME + 1];
│ │ │ │ +
148 char servcharset[DBMAXNAME + 1];
│ │ │ │ +
149 FILE *ftos;
│ │ │ │ +
150 DB_DBCHKINTR_FUNC chkintr;
│ │ │ │ +
151 DB_DBHNDLINTR_FUNC hndlintr;
│ │ │ │ +
152
│ │ │ │ + │ │ │ │ +
155
│ │ │ │ +
156 int ntimeouts;
│ │ │ │ +
157
│ │ │ │ +
159 NULLREP nullreps[MAXBINDTYPES];
│ │ │ │ +
160};
│ │ │ │ +
│ │ │ │ +
161
│ │ │ │ +
162enum {
│ │ │ │ +
163#if MSDBLIB
│ │ │ │ +
164 dblib_msdblib = 1
│ │ │ │ +
165#else
│ │ │ │ +
166 dblib_msdblib = 0
│ │ │ │ +
167#endif
│ │ │ │ +
168};
│ │ │ │ +
169
│ │ │ │ +
170/*
│ │ │ │ +
171 * internal prototypes
│ │ │ │ +
172 */
│ │ │ │ +
173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* varaddr);
│ │ │ │ +
174void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, const BYTE * src, DBINT srclen,
│ │ │ │ +
175 BYTE * dest, DBINT destlen,
│ │ │ │ +
176 int bindtype, DBINT *indicator);
│ │ │ │
177
│ │ │ │ -
178/* Define to 1 if you have the 'getpwuid_r' function. */
│ │ │ │ -
179#define HAVE_GETPWUID_R 1
│ │ │ │ -
180
│ │ │ │ -
181/* Define to 1 if you have the 'gettimeofday' function. */
│ │ │ │ -
182#define HAVE_GETTIMEOFDAY 1
│ │ │ │ -
183
│ │ │ │ -
184/* Define to 1 if you have the 'getuid' function. */
│ │ │ │ -
185#define HAVE_GETUID 1
│ │ │ │ -
186
│ │ │ │ -
187/* Define if you have GMP library */
│ │ │ │ -
188#define HAVE_GMP 1
│ │ │ │ -
189
│ │ │ │ -
190/* Define to 1 if you have GnuTLS. */
│ │ │ │ -
191#define HAVE_GNUTLS 1
│ │ │ │ -
192
│ │ │ │ -
193/* Define to 1 if you have the <gnutls/abstract.h> header file. */
│ │ │ │ -
194#define HAVE_GNUTLS_ABSTRACT_H 1
│ │ │ │ -
195
│ │ │ │ -
196/* Define to 1 if you have the 'gnutls_alpn_set_protocols' function. */
│ │ │ │ -
197#define HAVE_GNUTLS_ALPN_SET_PROTOCOLS 1
│ │ │ │ -
198
│ │ │ │ -
199/* Define to 1 if you have the 'gnutls_certificate_set_verify_function'
│ │ │ │ -
200 function. */
│ │ │ │ -
201#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1
│ │ │ │ +
178int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...);
│ │ │ │ +
179int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
│ │ │ │ +
180int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
│ │ │ │ +
181int _dblib_check_and_handle_interrupt(void * vdbproc);
│ │ │ │ +
182
│ │ │ │ +
183void _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version);
│ │ │ │ +
184void _dblib_convert_err(DBPROCESS * dbproc, TDS_INT len);
│ │ │ │ +
185
│ │ │ │ +
186DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
│ │ │ │ +
187DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
│ │ │ │ +
188
│ │ │ │ +
189RETCODE _bcp_clear_storage(DBPROCESS * dbproc);
│ │ │ │ +
190RETCODE _bcp_get_prog_data(DBPROCESS * dbproc);
│ │ │ │ +
191
│ │ │ │ +
192extern MHANDLEFUNC _dblib_msg_handler;
│ │ │ │ +
193extern EHANDLEFUNC _dblib_err_handler;
│ │ │ │ +
194
│ │ │ │ +
195#define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); return ret; }
│ │ │ │ +
196#define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, SYBENULP, 0, func, (int) param_num); return ret; }
│ │ │ │ +
197#define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); return FAIL; }
│ │ │ │ +
198#define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return FAIL; }
│ │ │ │ +
199#define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), 0, a, b, c); return FAIL; }
│ │ │ │ +
200#define CHECK_CONN(ret) do { CHECK_PARAMETER(dbproc, SYBENULL, (ret)); \
│ │ │ │ +
201 if (IS_TDSDEAD(dbproc->tds_socket)) { dbperror(dbproc, SYBEDDNE, 0); return (ret); } } while(0)
│ │ │ │
202
│ │ │ │ -
203/* Define to 1 if you have the 'gnutls_record_disable_padding' function. */
│ │ │ │ -
204#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1
│ │ │ │ -
205
│ │ │ │ -
206/* Define to 1 if you have the 'gnutls_rnd' function. */
│ │ │ │ -
207#define HAVE_GNUTLS_RND 1
│ │ │ │ -
208
│ │ │ │ -
209/* Define if you have the iconv() function and it works. */
│ │ │ │ -
210#define HAVE_ICONV 1
│ │ │ │ -
211
│ │ │ │ -
212/* Define to 1 if you have the 'inet_ntoa_r' function. */
│ │ │ │ -
213/* #undef HAVE_INET_NTOA_R */
│ │ │ │ -
214
│ │ │ │ -
215/* Define to 1 if you have the 'inet_ntop' function. */
│ │ │ │ -
216#define HAVE_INET_NTOP 1
│ │ │ │ -
217
│ │ │ │ -
218/* Define to 1 if you have the <inttypes.h> header file. */
│ │ │ │ -
219#define HAVE_INTTYPES_H 1
│ │ │ │ -
220
│ │ │ │ -
221/* Define to 1 if you have the <iodbcinst.h> header file. */
│ │ │ │ -
222/* #undef HAVE_IODBCINST_H */
│ │ │ │ -
223
│ │ │ │ -
224/* Define to 1 if you have the <langinfo.h> header file. */
│ │ │ │ -
225#define HAVE_LANGINFO_H 1
│ │ │ │ -
226
│ │ │ │ -
227/* Define to 1 if you have the <libgen.h> header file. */
│ │ │ │ -
228#define HAVE_LIBGEN_H 1
│ │ │ │ -
229
│ │ │ │ -
230/* Define to 1 if you have the <limits.h> header file. */
│ │ │ │ -
231#define HAVE_LIMITS_H 1
│ │ │ │ -
232
│ │ │ │ -
233/* Define to 1 if you have the <localcharset.h> header file. */
│ │ │ │ -
234/* #undef HAVE_LOCALCHARSET_H */
│ │ │ │ -
235
│ │ │ │ -
236/* Define to 1 if you have the 'locale_charset' function. */
│ │ │ │ -
237/* #undef HAVE_LOCALE_CHARSET */
│ │ │ │ -
238
│ │ │ │ -
239/* Define to 1 if you have the <locale.h> header file. */
│ │ │ │ -
240#define HAVE_LOCALE_H 1
│ │ │ │ -
241
│ │ │ │ -
242/* Define to 1 if you have the 'localtime_r' function. */
│ │ │ │ -
243#define HAVE_LOCALTIME_R 1
│ │ │ │ -
244
│ │ │ │ -
245/* Define if you have long long */
│ │ │ │ -
246#define HAVE_LONG_LONG 1
│ │ │ │ -
247
│ │ │ │ -
248/* Define to 1 if you have the 'mallinfo' function. */
│ │ │ │ -
249#define HAVE_MALLINFO 1
│ │ │ │ -
250
│ │ │ │ -
251/* Define to 1 if you have the 'mallinfo2' function. */
│ │ │ │ -
252#define HAVE_MALLINFO2 1
│ │ │ │ -
253
│ │ │ │ -
254/* Define to 1 if you have the <malloc.h> header file. */
│ │ │ │ -
255#define HAVE_MALLOC_H 1
│ │ │ │ -
256
│ │ │ │ -
257/* Define to 1 if your system provides the malloc_options variable. */
│ │ │ │ -
258/* #undef HAVE_MALLOC_OPTIONS */
│ │ │ │ -
259
│ │ │ │ -
260/* Define to 1 if you have the <minix/config.h> header file. */
│ │ │ │ -
261/* #undef HAVE_MINIX_CONFIG_H */
│ │ │ │ -
262
│ │ │ │ -
263/* Define to 1 if you have the 'nanosleep' function. */
│ │ │ │ -
264#define HAVE_NANOSLEEP 1
│ │ │ │ -
265
│ │ │ │ -
266/* Define to 1 if you have the <netdb.h> header file. */
│ │ │ │ -
267#define HAVE_NETDB_H 1
│ │ │ │ -
268
│ │ │ │ -
269/* Define to 1 if you have the <netinet/in.h> header file. */
│ │ │ │ -
270#define HAVE_NETINET_IN_H 1
│ │ │ │ -
271
│ │ │ │ -
272/* Define to 1 if you have the <netinet/tcp.h> header file. */
│ │ │ │ -
273#define HAVE_NETINET_TCP_H 1
│ │ │ │ -
274
│ │ │ │ -
275/* Define to 1 if nettle is present. */
│ │ │ │ -
276#define HAVE_NETTLE 1
│ │ │ │ -
277
│ │ │ │ -
278/* Define to 1 if you have the 'nl_langinfo' function. */
│ │ │ │ -
279#define HAVE_NL_LANGINFO 1
│ │ │ │ -
280
│ │ │ │ -
281/* Define to 1 if you have the <odbcss.h> header file. */
│ │ │ │ -
282/* #undef HAVE_ODBCSS_H */
│ │ │ │ -
283
│ │ │ │ -
284/* Define if you have the OpenSSL. */
│ │ │ │ -
285/* #undef HAVE_OPENSSL */
│ │ │ │ -
286
│ │ │ │ -
287/* Define to 1 if you have the <paths.h> header file. */
│ │ │ │ -
288#define HAVE_PATHS_H 1
│ │ │ │ -
289
│ │ │ │ -
290/* Define to 1 if you have the 'poll' function. */
│ │ │ │ -
291#define HAVE_POLL 1
│ │ │ │ -
292
│ │ │ │ -
293/* Define to 1 if you have the <poll.h> header file. */
│ │ │ │ -
294#define HAVE_POLL_H 1
│ │ │ │ -
295
│ │ │ │ -
296/* Define if you have POSIX threads libraries and header files. */
│ │ │ │ -
297#define HAVE_PTHREAD 1
│ │ │ │ -
298
│ │ │ │ -
299/* Define to 1 if you have the 'pthread_condattr_setclock' function. */
│ │ │ │ -
300#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
│ │ │ │ -
301
│ │ │ │ -
302/* Define to 1 if you have the 'pthread_cond_timedwait' function. */
│ │ │ │ -
303#define HAVE_PTHREAD_COND_TIMEDWAIT 1
│ │ │ │ -
304
│ │ │ │ -
305/* Define to 1 if you have the 'pthread_cond_timedwait_relative_np' function.
│ │ │ │ -
306 */
│ │ │ │ -
307/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */
│ │ │ │ -
308
│ │ │ │ -
309/* Have PTHREAD_PRIO_INHERIT. */
│ │ │ │ -
310#define HAVE_PTHREAD_PRIO_INHERIT 1
│ │ │ │ -
311
│ │ │ │ -
312/* Define to 1 if you have the 'putenv' function. */
│ │ │ │ -
313#define HAVE_PUTENV 1
│ │ │ │ -
314
│ │ │ │ -
315/* Define to 1 if you have the 'readdir_r' function. */
│ │ │ │ -
316#define HAVE_READDIR_R 1
│ │ │ │ -
317
│ │ │ │ -
318/* Define to 1 if you have the GNU Readline library. */
│ │ │ │ -
319#define HAVE_READLINE 1
│ │ │ │ -
320
│ │ │ │ -
321/* Define to 1 if you have the 'readpassphrase' function. */
│ │ │ │ -
322/* #undef HAVE_READPASSPHRASE */
│ │ │ │ -
323
│ │ │ │ -
324/* Define to 1 if you have rl_inhibit_completion. */
│ │ │ │ -
325#define HAVE_RL_INHIBIT_COMPLETION 1
│ │ │ │ -
326
│ │ │ │ -
327/* Define to 1 if you have the 'rl_on_new_line' function. */
│ │ │ │ -
328#define HAVE_RL_ON_NEW_LINE 1
│ │ │ │ -
329
│ │ │ │ -
330/* Define to 1 if you have the 'rl_reset_line_state' function. */
│ │ │ │ -
331#define HAVE_RL_RESET_LINE_STATE 1
│ │ │ │ -
332
│ │ │ │ -
333/* Define to 1 if you have the <roken.h> header file. */
│ │ │ │ -
334/* #undef HAVE_ROKEN_H */
│ │ │ │ -
335
│ │ │ │ -
336/* Define to 1 if you have the 'RSA_get0_key' function. */
│ │ │ │ -
337/* #undef HAVE_RSA_GET0_KEY */
│ │ │ │ -
338
│ │ │ │ -
339/* Define to 1 if you have the 'setenv' function. */
│ │ │ │ -
340#define HAVE_SETENV 1
│ │ │ │ -
341
│ │ │ │ -
342/* Define to 1 if you have the 'setitimer' function. */
│ │ │ │ -
343#define HAVE_SETITIMER 1
│ │ │ │ -
344
│ │ │ │ -
345/* Define to 1 if you have the 'setrlimit' function. */
│ │ │ │ -
346#define HAVE_SETRLIMIT 1
│ │ │ │ -
347
│ │ │ │ -
348/* Define to 1 if you have the <signal.h> header file. */
│ │ │ │ -
349#define HAVE_SIGNAL_H 1
│ │ │ │ -
350
│ │ │ │ -
351/* Define to 1 if you have the 'socketpair' function. */
│ │ │ │ -
352#define HAVE_SOCKETPAIR 1
│ │ │ │ -
353
│ │ │ │ -
354/* Define to 1 if you have the SQLGetPrivateProfileString function. */
│ │ │ │ -
355#define HAVE_SQLGETPRIVATEPROFILESTRING 1
│ │ │ │ -
356
│ │ │ │ -
357/* Define if sqltypes.h define SQLLEN */
│ │ │ │ -
358#define HAVE_SQLLEN 1
│ │ │ │ -
359
│ │ │ │ -
360/* Define to 1 if the system has the type 'SQLROWOFFSET'. */
│ │ │ │ -
361/* #undef HAVE_SQLROWOFFSET */
│ │ │ │ -
362
│ │ │ │ -
363/* Define to 1 if the system has the type 'SQLROWSETSIZE'. */
│ │ │ │ -
364/* #undef HAVE_SQLROWSETSIZE */
│ │ │ │ -
365
│ │ │ │ -
366/* Define to 1 if the system has the type 'SQLSETPOSIROW'. */
│ │ │ │ -
367#define HAVE_SQLSETPOSIROW 1
│ │ │ │ -
368
│ │ │ │ -
369/* Define to 1 if you have the <sql.h> header file. */
│ │ │ │ -
370#define HAVE_SQL_H 1
│ │ │ │ -
371
│ │ │ │ -
372/* Define to 1 if you have the 'SSL_set_alpn_protos' function. */
│ │ │ │ -
373/* #undef HAVE_SSL_SET_ALPN_PROTOS */
│ │ │ │ -
374
│ │ │ │ -
375/* Defined if not --disable-sspi and SSPI detected */
│ │ │ │ -
376/* #undef HAVE_SSPI */
│ │ │ │ -
377
│ │ │ │ -
378/* Define to 1 if you have the <stdbool.h> header file. */
│ │ │ │ -
379#define HAVE_STDBOOL_H 1
│ │ │ │ -
380
│ │ │ │ -
381/* Define to 1 if you have the <stddef.h> header file. */
│ │ │ │ -
382#define HAVE_STDDEF_H 1
│ │ │ │ -
383
│ │ │ │ -
384/* Define to 1 if you have the <stdint.h> header file. */
│ │ │ │ -
385#define HAVE_STDINT_H 1
│ │ │ │ -
386
│ │ │ │ -
387/* Define to 1 if you have the <stdio.h> header file. */
│ │ │ │ -
388#define HAVE_STDIO_H 1
│ │ │ │ -
389
│ │ │ │ -
390/* Define to 1 if you have the <stdlib.h> header file. */
│ │ │ │ -
391#define HAVE_STDLIB_H 1
│ │ │ │ -
392
│ │ │ │ -
393/* Define to 1 if you have the <strings.h> header file. */
│ │ │ │ -
394#define HAVE_STRINGS_H 1
│ │ │ │ -
395
│ │ │ │ -
396/* Define to 1 if you have the <string.h> header file. */
│ │ │ │ -
397#define HAVE_STRING_H 1
│ │ │ │ -
398
│ │ │ │ -
399/* Define to 1 if you have the 'strlcat' function. */
│ │ │ │ -
400#define HAVE_STRLCAT 1
│ │ │ │ -
401
│ │ │ │ -
402/* Define to 1 if you have the 'strlcpy' function. */
│ │ │ │ -
403#define HAVE_STRLCPY 1
│ │ │ │ -
404
│ │ │ │ -
405/* Define to 1 if you have the 'strsep' function. */
│ │ │ │ -
406#define HAVE_STRSEP 1
│ │ │ │ -
407
│ │ │ │ -
408/* Define to 1 if you have the 'strtok_r' function. */
│ │ │ │ -
409#define HAVE_STRTOK_R 1
│ │ │ │ -
410
│ │ │ │ -
411/* Define to 1 if you have the 'strtok_s' function. */
│ │ │ │ -
412/* #undef HAVE_STRTOK_S */
│ │ │ │ -
413
│ │ │ │ -
414/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */
│ │ │ │ -
415#define HAVE_STRUCT_TM_TM_ZONE 1
│ │ │ │ -
416
│ │ │ │ -
417/* Define to 1 if '__tm_zone' is a member of 'struct tm'. */
│ │ │ │ -
418/* #undef HAVE_STRUCT_TM___TM_ZONE */
│ │ │ │ -
419
│ │ │ │ -
420/* Define to 1 if you have the 'system' function */
│ │ │ │ -
421#define HAVE_SYSTEM 1
│ │ │ │ -
422
│ │ │ │ -
423/* Define to 1 if you have the <sys/eventfd.h> header file. */
│ │ │ │ -
424#define HAVE_SYS_EVENTFD_H 1
│ │ │ │ -
425
│ │ │ │ -
426/* Define to 1 if you have the <sys/ioctl.h> header file. */
│ │ │ │ -
427#define HAVE_SYS_IOCTL_H 1
│ │ │ │ -
428
│ │ │ │ -
429/* Define to 1 if you have the <sys/param.h> header file. */
│ │ │ │ -
430#define HAVE_SYS_PARAM_H 1
│ │ │ │ -
431
│ │ │ │ -
432/* Define to 1 if you have the <sys/resource.h> header file. */
│ │ │ │ -
433#define HAVE_SYS_RESOURCE_H 1
│ │ │ │ -
434
│ │ │ │ -
435/* Define to 1 if you have the <sys/select.h> header file. */
│ │ │ │ -
436#define HAVE_SYS_SELECT_H 1
│ │ │ │ -
437
│ │ │ │ -
438/* Define to 1 if you have the <sys/socket.h> header file. */
│ │ │ │ -
439#define HAVE_SYS_SOCKET_H 1
│ │ │ │ -
440
│ │ │ │ -
441/* Define to 1 if you have the <sys/stat.h> header file. */
│ │ │ │ -
442#define HAVE_SYS_STAT_H 1
│ │ │ │ -
443
│ │ │ │ -
444/* Define to 1 if you have the <sys/time.h> header file. */
│ │ │ │ -
445#define HAVE_SYS_TIME_H 1
│ │ │ │ -
446
│ │ │ │ -
447/* Define to 1 if you have the <sys/types.h> header file. */
│ │ │ │ -
448#define HAVE_SYS_TYPES_H 1
│ │ │ │ -
449
│ │ │ │ -
450/* Define to 1 if you have the <sys/wait.h> header file. */
│ │ │ │ -
451#define HAVE_SYS_WAIT_H 1
│ │ │ │ -
452
│ │ │ │ -
453/* Define to 1 if your 'struct tm' has 'tm_zone'. Deprecated, use
│ │ │ │ -
454 'HAVE_STRUCT_TM_TM_ZONE' instead. */
│ │ │ │ -
455#define HAVE_TM_ZONE 1
│ │ │ │ -
456
│ │ │ │ -
457/* Define to 1 if you don't have 'tm_zone' but do have the external array
│ │ │ │ -
458 'tzname'. */
│ │ │ │ -
459/* #undef HAVE_TZNAME */
│ │ │ │ -
460
│ │ │ │ -
461/* Define to 1 if you have the <unistd.h> header file. */
│ │ │ │ -
462#define HAVE_UNISTD_H 1
│ │ │ │ -
463
│ │ │ │ -
464/* Define to 1 if you have the 'usleep' function. */
│ │ │ │ -
465#define HAVE_USLEEP 1
│ │ │ │ -
466
│ │ │ │ -
467/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
│ │ │ │ -
468/* #undef HAVE_VALGRIND_MEMCHECK_H */
│ │ │ │ -
469
│ │ │ │ -
470/* Define to 1 if you have the 'vasprintf' function. */
│ │ │ │ -
471#define HAVE_VASPRINTF 1
│ │ │ │ -
472
│ │ │ │ -
473/* Define to 1 if you have the 'vsnprintf' function. */
│ │ │ │ -
474#define HAVE_VSNPRINTF 1
│ │ │ │ -
475
│ │ │ │ -
476/* Define to 1 if you have the <wchar.h> header file. */
│ │ │ │ -
477#define HAVE_WCHAR_H 1
│ │ │ │ -
478
│ │ │ │ -
479/* Define to 1 if you have the <windows.h> header file. */
│ │ │ │ -
480/* #undef HAVE_WINDOWS_H */
│ │ │ │ -
481
│ │ │ │ -
482/* Define to 1 if you have the <winsock2.h> header file. */
│ │ │ │ -
483/* #undef HAVE_WINSOCK2_H */
│ │ │ │ -
484
│ │ │ │ -
485/* Define to 1 if you have the '_fseeki64' function. */
│ │ │ │ -
486/* #undef HAVE__FSEEKI64 */
│ │ │ │ -
487
│ │ │ │ -
488/* Define to 1 if you have the '_ftelli64' function. */
│ │ │ │ -
489/* #undef HAVE__FTELLI64 */
│ │ │ │ -
490
│ │ │ │ -
491/* Define to 1 if you have the '_heapwalk' function. */
│ │ │ │ -
492/* #undef HAVE__HEAPWALK */
│ │ │ │ -
493
│ │ │ │ -
494/* Define to 1 if you have the '_lock_file' function. */
│ │ │ │ -
495/* #undef HAVE__LOCK_FILE */
│ │ │ │ -
496
│ │ │ │ -
497/* Define to 1 if you have the '_unlock_file' function. */
│ │ │ │ -
498/* #undef HAVE__UNLOCK_FILE */
│ │ │ │ -
499
│ │ │ │ -
500/* Define to 1 if you have the '_vscprintf' function. */
│ │ │ │ -
501/* #undef HAVE__VSCPRINTF */
│ │ │ │ -
502
│ │ │ │ -
503/* Define to 1 if you have the '_vsnprintf' function. */
│ │ │ │ -
504/* #undef HAVE__VSNPRINTF */
│ │ │ │ -
505
│ │ │ │ -
506/* Define to 1 if you have the '_xpg_accept' function. */
│ │ │ │ -
507/* #undef HAVE__XPG_ACCEPT */
│ │ │ │ -
508
│ │ │ │ -
509/* Define to 1 if you have the '_xpg_getpeername' function. */
│ │ │ │ -
510/* #undef HAVE__XPG_GETPEERNAME */
│ │ │ │ -
511
│ │ │ │ -
512/* Define to 1 if you have the '_xpg_getsockname' function. */
│ │ │ │ -
513/* #undef HAVE__XPG_GETSOCKNAME */
│ │ │ │ -
514
│ │ │ │ -
515/* Define to 1 if you have the '_xpg_getsockopt' function. */
│ │ │ │ -
516/* #undef HAVE__XPG_GETSOCKOPT */
│ │ │ │ -
517
│ │ │ │ -
518/* Define to 1 if you have the '_xpg_recvfrom' function. */
│ │ │ │ -
519/* #undef HAVE__XPG_RECVFROM */
│ │ │ │ -
520
│ │ │ │ -
521/* Define to 1 if you have the '__accept' function. */
│ │ │ │ -
522/* #undef HAVE___ACCEPT */
│ │ │ │ -
523
│ │ │ │ -
524/* Define to 1 if you have the '__getpeername' function. */
│ │ │ │ -
525/* #undef HAVE___GETPEERNAME */
│ │ │ │ -
526
│ │ │ │ -
527/* Define to 1 if you have the '__getsockname' function. */
│ │ │ │ -
528/* #undef HAVE___GETSOCKNAME */
│ │ │ │ -
529
│ │ │ │ -
530/* Define to 1 if you have the '__getsockopt' function. */
│ │ │ │ -
531/* #undef HAVE___GETSOCKOPT */
│ │ │ │ -
532
│ │ │ │ -
533/* Define to 1 if you have the '__recvfrom' function. */
│ │ │ │ -
534/* #undef HAVE___RECVFROM */
│ │ │ │ -
535
│ │ │ │ -
536/* Define as const if the declaration of iconv() needs const. */
│ │ │ │ -
537#define ICONV_CONST
│ │ │ │ -
538
│ │ │ │ -
539/* Define to value of INADDR_NONE if not provided by your system header files.
│ │ │ │ -
540 */
│ │ │ │ -
541/* #undef INADDR_NONE */
│ │ │ │ -
542
│ │ │ │ -
543/* Define to the sub-directory where libtool stores uninstalled libraries. */
│ │ │ │ -
544#define LT_OBJDIR ".libs/"
│ │ │ │ -
545
│ │ │ │ -
546/* Define to 1 if the BSD-style netdb interface is reentrant. */
│ │ │ │ -
547/* #undef NETDB_REENTRANT */
│ │ │ │ -
548
│ │ │ │ -
549/* Define to 1 if memset(0) sets pointers to NULL. */
│ │ │ │ -
550#define NULL_REP_IS_ZERO_BYTES 1
│ │ │ │ -
551
│ │ │ │ -
552/* Name of package */
│ │ │ │ -
553#define PACKAGE "freetds"
│ │ │ │ -
554
│ │ │ │ -
555/* Define to the address where bug reports for this package should be sent. */
│ │ │ │ -
556#define PACKAGE_BUGREPORT ""
│ │ │ │ -
557
│ │ │ │ -
558/* Define to the full name of this package. */
│ │ │ │ -
559#define PACKAGE_NAME "FreeTDS"
│ │ │ │ -
560
│ │ │ │ -
561/* Define to the full name and version of this package. */
│ │ │ │ -
562#define PACKAGE_STRING "FreeTDS 1.5.5"
│ │ │ │ -
563
│ │ │ │ -
564/* Define to the one symbol short name of this package. */
│ │ │ │ -
565#define PACKAGE_TARNAME "freetds"
│ │ │ │ -
566
│ │ │ │ -
567/* Define to the home page for this package. */
│ │ │ │ -
568#define PACKAGE_URL ""
│ │ │ │ -
569
│ │ │ │ -
570/* Define to the version of this package. */
│ │ │ │ -
571#define PACKAGE_VERSION "1.5.5"
│ │ │ │ -
572
│ │ │ │ -
573/* Define to necessary symbol if this constant uses a non-standard name on
│ │ │ │ -
574 your system. */
│ │ │ │ -
575/* #undef PTHREAD_CREATE_JOINABLE */
│ │ │ │ -
576
│ │ │ │ -
577/* The size of 'char', as computed by sizeof. */
│ │ │ │ -
578#define SIZEOF_CHAR 1
│ │ │ │ -
579
│ │ │ │ -
580/* The size of 'double', as computed by sizeof. */
│ │ │ │ -
581#define SIZEOF_DOUBLE 8
│ │ │ │ -
582
│ │ │ │ -
583/* The size of 'float', as computed by sizeof. */
│ │ │ │ -
584#define SIZEOF_FLOAT 4
│ │ │ │ -
585
│ │ │ │ -
586/* The size of 'int', as computed by sizeof. */
│ │ │ │ -
587#define SIZEOF_INT 4
│ │ │ │ -
588
│ │ │ │ -
589/* The size of 'long', as computed by sizeof. */
│ │ │ │ -
590#define SIZEOF_LONG 8
│ │ │ │ -
591
│ │ │ │ -
592/* The size of 'long double', as computed by sizeof. */
│ │ │ │ -
593#define SIZEOF_LONG_DOUBLE 16
│ │ │ │ -
594
│ │ │ │ -
595/* The size of 'long int', as computed by sizeof. */
│ │ │ │ -
596#define SIZEOF_LONG_INT 8
│ │ │ │ -
597
│ │ │ │ -
598/* The size of 'long long', as computed by sizeof. */
│ │ │ │ -
599#define SIZEOF_LONG_LONG 8
│ │ │ │ -
600
│ │ │ │ -
601/* The size of 'short', as computed by sizeof. */
│ │ │ │ -
602#define SIZEOF_SHORT 2
│ │ │ │ -
603
│ │ │ │ -
604/* The size of 'SQLWCHAR', as computed by sizeof. */
│ │ │ │ -
605#define SIZEOF_SQLWCHAR 2
│ │ │ │ -
606
│ │ │ │ -
607/* The size of 'void *', as computed by sizeof. */
│ │ │ │ -
608#define SIZEOF_VOID_P 8
│ │ │ │ -
609
│ │ │ │ -
610/* The size of 'wchar_t', as computed by sizeof. */
│ │ │ │ -
611#define SIZEOF_WCHAR_T 4
│ │ │ │ -
612
│ │ │ │ -
613/* The size of '__int128', as computed by sizeof. */
│ │ │ │ -
614#define SIZEOF___INT128 16
│ │ │ │ -
615
│ │ │ │ -
616/* The size of '__int64', as computed by sizeof. */
│ │ │ │ -
617#define SIZEOF___INT64 0
│ │ │ │ -
618
│ │ │ │ -
619/* If using the C implementation of alloca, define if you know the
│ │ │ │ -
620 direction of stack growth for your system; otherwise it will be
│ │ │ │ -
621 automatically deduced at runtime.
│ │ │ │ -
622 STACK_DIRECTION > 0 => grows toward higher addresses
│ │ │ │ -
623 STACK_DIRECTION < 0 => grows toward lower addresses
│ │ │ │ -
624 STACK_DIRECTION = 0 => direction of growth unknown */
│ │ │ │ -
625/* #undef STACK_DIRECTION */
│ │ │ │ -
626
│ │ │ │ -
627/* Define to 1 if all of the C89 standard headers exist (not just the ones
│ │ │ │ -
628 required in a freestanding environment). This macro is provided for
│ │ │ │ -
629 backward compatibility; new code need not use it. */
│ │ │ │ -
630#define STDC_HEADERS 1
│ │ │ │ -
631
│ │ │ │ -
632/* Define to use TDS 5.0 by default */
│ │ │ │ -
633/* #undef TDS50 */
│ │ │ │ -
634
│ │ │ │ -
635/* Define to use TDS 7.1 by default */
│ │ │ │ -
636/* #undef TDS71 */
│ │ │ │ -
637
│ │ │ │ -
638/* Define to use TDS 7.2 by default */
│ │ │ │ -
639/* #undef TDS72 */
│ │ │ │ -
640
│ │ │ │ -
641/* Define to use TDS 7.3 by default */
│ │ │ │ -
642/* #undef TDS73 */
│ │ │ │ -
643
│ │ │ │ -
644/* Define to use TDS 7.4 by default */
│ │ │ │ -
645/* #undef TDS74 */
│ │ │ │ -
646
│ │ │ │ -
647/* Define to 1 if your compiler supports __attribute__((destructor)). */
│ │ │ │ -
648#define TDS_ATTRIBUTE_DESTRUCTOR 1
│ │ │ │ -
649
│ │ │ │ -
650/* define to constant to use for clock_gettime */
│ │ │ │ -
651#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC
│ │ │ │ -
652
│ │ │ │ -
653/* Define if you have pthread with mutex support */
│ │ │ │ -
654#define TDS_HAVE_PTHREAD_MUTEX 1
│ │ │ │ -
655
│ │ │ │ -
656/* Define if stdio support locking */
│ │ │ │ -
657#define TDS_HAVE_STDIO_LOCKED 1
│ │ │ │ -
658
│ │ │ │ -
659/* define to prefix format string used for 64bit integers */
│ │ │ │ -
660#define TDS_I64_PREFIX "l"
│ │ │ │ -
661
│ │ │ │ -
662/* Define if you don't care about thread safety */
│ │ │ │ -
663/* #undef TDS_NO_THREADSAFE */
│ │ │ │ -
664
│ │ │ │ -
665/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */
│ │ │ │ -
666#define TDS_SQLCOLATTRIBUTE_SQLLEN 1
│ │ │ │ -
667
│ │ │ │ -
668/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */
│ │ │ │ -
669#define TDS_SQLPARAMOPTIONS_SQLLEN 1
│ │ │ │ -
670
│ │ │ │ -
671/* Defined if --enable-sybase-compat used */
│ │ │ │ -
672#define TDS_SYBASE_COMPAT 1
│ │ │ │ -
673
│ │ │ │ -
674/* Define to 1 if your <sys/time.h> declares 'struct tm'. */
│ │ │ │ -
675/* #undef TM_IN_SYS_TIME */
│ │ │ │ -
676
│ │ │ │ -
677/* Enable extensions on AIX, Interix, z/OS. */
│ │ │ │ -
678#ifndef _ALL_SOURCE
│ │ │ │ -
679# define _ALL_SOURCE 1
│ │ │ │ -
680#endif
│ │ │ │ -
681/* Enable general extensions on macOS. */
│ │ │ │ -
682#ifndef _DARWIN_C_SOURCE
│ │ │ │ -
683# define _DARWIN_C_SOURCE 1
│ │ │ │ -
684#endif
│ │ │ │ -
685/* Enable general extensions on Solaris. */
│ │ │ │ -
686#ifndef __EXTENSIONS__
│ │ │ │ -
687# define __EXTENSIONS__ 1
│ │ │ │ -
688#endif
│ │ │ │ -
689/* Enable GNU extensions on systems that have them. */
│ │ │ │ -
690#ifndef _GNU_SOURCE
│ │ │ │ -
691# define _GNU_SOURCE 1
│ │ │ │ -
692#endif
│ │ │ │ -
693/* Enable X/Open compliant socket functions that do not require linking
│ │ │ │ -
694 with -lxnet on HP-UX 11.11. */
│ │ │ │ -
695#ifndef _HPUX_ALT_XOPEN_SOCKET_API
│ │ │ │ -
696# define _HPUX_ALT_XOPEN_SOCKET_API 1
│ │ │ │ -
697#endif
│ │ │ │ -
698/* Identify the host operating system as Minix.
│ │ │ │ -
699 This macro does not affect the system headers' behavior.
│ │ │ │ -
700 A future release of Autoconf may stop defining this macro. */
│ │ │ │ -
701#ifndef _MINIX
│ │ │ │ -
702/* # undef _MINIX */
│ │ │ │ -
703#endif
│ │ │ │ -
704/* Enable general extensions on NetBSD.
│ │ │ │ -
705 Enable NetBSD compatibility extensions on Minix. */
│ │ │ │ -
706#ifndef _NETBSD_SOURCE
│ │ │ │ -
707# define _NETBSD_SOURCE 1
│ │ │ │ -
708#endif
│ │ │ │ -
709/* Enable OpenBSD compatibility extensions on NetBSD.
│ │ │ │ -
710 Oddly enough, this does nothing on OpenBSD. */
│ │ │ │ -
711#ifndef _OPENBSD_SOURCE
│ │ │ │ -
712# define _OPENBSD_SOURCE 1
│ │ │ │ -
713#endif
│ │ │ │ -
714/* Define to 1 if needed for POSIX-compatible behavior. */
│ │ │ │ -
715#ifndef _POSIX_SOURCE
│ │ │ │ -
716/* # undef _POSIX_SOURCE */
│ │ │ │ -
717#endif
│ │ │ │ -
718/* Define to 2 if needed for POSIX-compatible behavior. */
│ │ │ │ -
719#ifndef _POSIX_1_SOURCE
│ │ │ │ -
720/* # undef _POSIX_1_SOURCE */
│ │ │ │ -
721#endif
│ │ │ │ -
722/* Enable POSIX-compatible threading on Solaris. */
│ │ │ │ -
723#ifndef _POSIX_PTHREAD_SEMANTICS
│ │ │ │ -
724# define _POSIX_PTHREAD_SEMANTICS 1
│ │ │ │ -
725#endif
│ │ │ │ -
726/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
│ │ │ │ -
727#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
│ │ │ │ -
728# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
│ │ │ │ -
729#endif
│ │ │ │ -
730/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
│ │ │ │ -
731#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
│ │ │ │ -
732# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
│ │ │ │ -
733#endif
│ │ │ │ -
734/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
│ │ │ │ -
735#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
│ │ │ │ -
736# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
│ │ │ │ -
737#endif
│ │ │ │ -
738/* Enable extensions specified by C23 Annex F. */
│ │ │ │ -
739#ifndef __STDC_WANT_IEC_60559_EXT__
│ │ │ │ -
740# define __STDC_WANT_IEC_60559_EXT__ 1
│ │ │ │ -
741#endif
│ │ │ │ -
742/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
│ │ │ │ -
743#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
│ │ │ │ -
744# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
│ │ │ │ -
745#endif
│ │ │ │ -
746/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
│ │ │ │ -
747#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
│ │ │ │ -
748# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
│ │ │ │ -
749#endif
│ │ │ │ -
750/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
│ │ │ │ -
751#ifndef __STDC_WANT_LIB_EXT2__
│ │ │ │ -
752# define __STDC_WANT_LIB_EXT2__ 1
│ │ │ │ -
753#endif
│ │ │ │ -
754/* Enable extensions specified by ISO/IEC 24747:2009. */
│ │ │ │ -
755#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
│ │ │ │ -
756# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
│ │ │ │ -
757#endif
│ │ │ │ -
758/* Enable extensions on HP NonStop. */
│ │ │ │ -
759#ifndef _TANDEM_SOURCE
│ │ │ │ -
760# define _TANDEM_SOURCE 1
│ │ │ │ -
761#endif
│ │ │ │ -
762/* Enable X/Open extensions. Define to 500 only if necessary
│ │ │ │ -
763 to make mbstate_t available. */
│ │ │ │ -
764#ifndef _XOPEN_SOURCE
│ │ │ │ -
765/* # undef _XOPEN_SOURCE */
│ │ │ │ -
766#endif
│ │ │ │ -
767
│ │ │ │ -
768
│ │ │ │ -
769/* Version number of package */
│ │ │ │ -
770#define VERSION "1.5.5"
│ │ │ │ -
771
│ │ │ │ -
772/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
│ │ │ │ -
773 significant byte first (like Motorola and SPARC, unlike Intel). */
│ │ │ │ -
774#if defined AC_APPLE_UNIVERSAL_BUILD
│ │ │ │ -
775# if defined __BIG_ENDIAN__
│ │ │ │ -
776# define WORDS_BIGENDIAN 1
│ │ │ │ -
777# endif
│ │ │ │ -
778#else
│ │ │ │ -
779# ifndef WORDS_BIGENDIAN
│ │ │ │ -
780/* # undef WORDS_BIGENDIAN */
│ │ │ │ -
781# endif
│ │ │ │ -
782#endif
│ │ │ │ -
783
│ │ │ │ -
784/* Number of bits in a file offset, on hosts where this is settable. */
│ │ │ │ -
785/* #undef _FILE_OFFSET_BITS */
│ │ │ │ -
786
│ │ │ │ -
787/* Define to 1 if necessary to make fseeko visible. */
│ │ │ │ -
788/* #undef _LARGEFILE_SOURCE */
│ │ │ │ -
789
│ │ │ │ -
790/* Define to 1 on platforms where this makes off_t a 64-bit type. */
│ │ │ │ -
791/* #undef _LARGE_FILES */
│ │ │ │ -
792
│ │ │ │ -
793/* Number of bits in time_t, on hosts where this is settable. */
│ │ │ │ -
794/* #undef _TIME_BITS */
│ │ │ │ -
795
│ │ │ │ -
796/* Define to 1 on platforms where this makes time_t a 64-bit type. */
│ │ │ │ -
797/* #undef __MINGW_USE_VC2005_COMPAT */
│ │ │ │ -
798
│ │ │ │ -
799/* Define to empty if 'const' does not conform to ANSI C. */
│ │ │ │ -
800/* #undef const */
│ │ │ │ -
801
│ │ │ │ -
802/* Define to '__inline__' or '__inline' if that's what the C compiler
│ │ │ │ -
803 calls it, or to nothing if 'inline' is not supported under any name. */
│ │ │ │ -
804#ifndef __cplusplus
│ │ │ │ -
805/* #undef inline */
│ │ │ │ -
806#endif
│ │ │ │ -
807
│ │ │ │ -
808/* Define as 'unsigned int' if <stddef.h> doesn't define. */
│ │ │ │ -
809/* #undef size_t */
│ │ │ │ -
810
│ │ │ │ -
811/* type to use in place of socklen_t if not defined */
│ │ │ │ -
812/* #undef socklen_t */
│ │ │ │ +
203
│ │ │ │ +
204#ifdef __cplusplus
│ │ │ │ +
205#if 0
│ │ │ │ +
206{
│ │ │ │ +
207#endif
│ │ │ │ +
208}
│ │ │ │ +
209#endif
│ │ │ │ +
210
│ │ │ │ +
211#include <freetds/popvis.h>
│ │ │ │ +
212
│ │ │ │ +
213#endif
│ │ │ │ +
RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
Definition dblib.c:537
│ │ │ │ +
int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...)
Call client-installed error handler.
Definition dblib.c:8172
│ │ │ │ +
int _dblib_check_and_handle_interrupt(void *vdbproc)
check interrupts for libtds.
Definition dbutil.c:192
│ │ │ │ +
Definition buffering.h:1
│ │ │ │ +
Definition dblib.h:44
│ │ │ │ +
Definition dblib.h:52
│ │ │ │ +
Definition dblib.h:62
│ │ │ │ +
Definition dblib.h:74
│ │ │ │ +
Definition dblib.h:89
│ │ │ │ +
Definition dblib.h:101
│ │ │ │ +
Definition dblib.h:110
│ │ │ │ +
Definition dblib.h:117
│ │ │ │ +
Definition dblib.h:123
│ │ │ │ +
NULLREP nullreps[MAXBINDTYPES]
default null values
Definition dblib.h:159
│ │ │ │ +
int msdblib
boolean use ms behaviour
Definition dblib.h:154
│ │ │ │ +
Definition tds.h:498
│ │ │ │ +
Definition tds.h:861
│ │ │ │ +
Definition tds.h:1015
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
Definition tds.h:1684
│ │ │ │ +
Definition sybdb.h:337
│ │ │ │ +
Definition sybdb.h:343
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,827 +1,285 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -config.h │ │ │ │ │ -1/* include/config.h. Generated from config.h.in by configure. */ │ │ │ │ │ -2/* include/config.h.in. Generated from configure.ac by autoheader. */ │ │ │ │ │ -3 │ │ │ │ │ -4#define _freetds_config_h_ │ │ │ │ │ -5 │ │ │ │ │ -6/* Define if building universal (internal helper macro) */ │ │ │ │ │ -7/* #undef AC_APPLE_UNIVERSAL_BUILD */ │ │ │ │ │ -8 │ │ │ │ │ -9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */ │ │ │ │ │ -10/* #undef BSD_COMP */ │ │ │ │ │ -11 │ │ │ │ │ -12/* Define to 1 if using 'alloca.c'. */ │ │ │ │ │ -13/* #undef C_ALLOCA */ │ │ │ │ │ -14 │ │ │ │ │ -15/* Define to enable work in progress code */ │ │ │ │ │ -16/* #undef ENABLE_DEVELOPING */ │ │ │ │ │ -17 │ │ │ │ │ -18/* Define to enable extra checks on code */ │ │ │ │ │ -19/* #undef ENABLE_EXTRA_CHECKS */ │ │ │ │ │ -20 │ │ │ │ │ -21/* Defined if --enable-krb5 used and library detected */ │ │ │ │ │ -22#define ENABLE_KRB5 1 │ │ │ │ │ -23 │ │ │ │ │ -24/* Define to enable MARS support */ │ │ │ │ │ -25#define ENABLE_ODBC_MARS 1 │ │ │ │ │ -26 │ │ │ │ │ -27/* Define to enable ODBC wide string support */ │ │ │ │ │ -28#define ENABLE_ODBC_WIDE 1 │ │ │ │ │ -29 │ │ │ │ │ -30/* Define to 1 if GNU tls use nettle as backend. */ │ │ │ │ │ -31#define GNUTLS_USE_NETTLE 1 │ │ │ │ │ +dblib.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_aoIoAtf9UfNLxwNuH19vDb_ │ │ │ │ │ +21#define _tdsguard_aoIoAtf9UfNLxwNuH19vDb_ │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#ifdef __cplusplus │ │ │ │ │ +26extern "C" │ │ │ │ │ +27{ │ │ │ │ │ +28#if 0 │ │ │ │ │ +29} │ │ │ │ │ +30#endif │ │ │ │ │ +31#endif │ │ │ │ │ 32 │ │ │ │ │ -33/* Define to 1 if you have the 'alarm' function. */ │ │ │ │ │ -34#define HAVE_ALARM 1 │ │ │ │ │ -35 │ │ │ │ │ -36/* Define to 1 if you have 'alloca', as a function or macro. */ │ │ │ │ │ -37#define HAVE_ALLOCA 1 │ │ │ │ │ -38 │ │ │ │ │ -39/* Define to 1 if works. */ │ │ │ │ │ -40#define HAVE_ALLOCA_H 1 │ │ │ │ │ -41 │ │ │ │ │ -42/* Define to 1 if you have the header file. */ │ │ │ │ │ -43#define HAVE_ARPA_INET_H 1 │ │ │ │ │ -44 │ │ │ │ │ -45/* Define to 1 if you have the 'ASN1_STRING_get0_data' function. */ │ │ │ │ │ -46/* #undef HAVE_ASN1_STRING_GET0_DATA */ │ │ │ │ │ -47 │ │ │ │ │ -48/* Define to 1 if you have the 'asprintf' function. */ │ │ │ │ │ -49#define HAVE_ASPRINTF 1 │ │ │ │ │ +33typedef enum │ │ │ │ │ +34{ │ │ │ │ │ +35 _DB_RES_INIT │ │ │ │ │ +36 , _DB_RES_RESULTSET_EMPTY │ │ │ │ │ +37 , _DB_RES_RESULTSET_ROWS │ │ │ │ │ +38 , _DB_RES_NEXT_RESULT │ │ │ │ │ +39 , _DB_RES_NO_MORE_RESULTS │ │ │ │ │ +40 , _DB_RES_SUCCEED │ │ │ │ │ +41} DB_RESULT_STATE; │ │ │ │ │ +42 │ │ │ │ │ +43struct tds_dblib_loginrec │ │ │ │ │ +44{ │ │ │ │ │ +45 TDSLOGIN *tds_login; │ │ │ │ │ +46 bool network_auth; │ │ │ │ │ +47}; │ │ │ │ │ +48 │ │ │ │ │ +49struct dblib_buffer_row; │ │ │ │ │ 50 │ │ │ │ │ -51/* Define to 1 if you have the 'basename' function. */ │ │ │ │ │ -52#define HAVE_BASENAME 1 │ │ │ │ │ -53 │ │ │ │ │ -54/* Define to 1 if you have the 'BIO_get_data' function. */ │ │ │ │ │ -55/* #undef HAVE_BIO_GET_DATA */ │ │ │ │ │ -56 │ │ │ │ │ -57/* Define if you have the clock_gettime function. */ │ │ │ │ │ -58#define HAVE_CLOCK_GETTIME 1 │ │ │ │ │ -59 │ │ │ │ │ -60/* Define to 1 if you have the header file. */ │ │ │ │ │ -61#define HAVE_COM_ERR_H 1 │ │ │ │ │ -62 │ │ │ │ │ -63/* Define to 1 if you have the 'daemon' function. */ │ │ │ │ │ -64#define HAVE_DAEMON 1 │ │ │ │ │ -65 │ │ │ │ │ -66/* Define to 1 if you have the declaration of 'tzname', and to 0 if you │ │ │ │ │ -don't. │ │ │ │ │ -67 */ │ │ │ │ │ -68/* #undef HAVE_DECL_TZNAME */ │ │ │ │ │ -69 │ │ │ │ │ -70/* Define to 1 if you have the header file. */ │ │ │ │ │ -71#define HAVE_DIRENT_H 1 │ │ │ │ │ +51typedef struct │ │ │ │ │ +52{ │ │ │ │ │ +53 int received; /* how many rows have been received for this result set */ │ │ │ │ │ +54 int head; /* queue insertion point */ │ │ │ │ │ +55 int tail; /* oldest item in queue */ │ │ │ │ │ +56 int current; /* dbnextrow() reads this row */ │ │ │ │ │ +57 int capacity; /* how many elements the queue can hold */ │ │ │ │ │ +58 struct dblib_buffer_row *rows; /* pointer to the row storage */ │ │ │ │ │ +59} DBPROC_ROWBUF; │ │ │ │ │ +60 │ │ │ │ │ +61typedef struct │ │ │ │ │ +62{ │ │ │ │ │ +63 int host_column; │ │ │ │ │ +64 TDS_SERVER_TYPE datatype; │ │ │ │ │ +65 int prefix_len; │ │ │ │ │ +66 DBINT column_len; │ │ │ │ │ +67 BYTE *terminator; │ │ │ │ │ +68 int term_len; │ │ │ │ │ +69 int tab_colnum; │ │ │ │ │ +70 int column_error; │ │ │ │ │ +71} BCP_HOSTCOLINFO; │ │ │ │ │ 72 │ │ │ │ │ -73/* Define to 1 if you have the header file. */ │ │ │ │ │ -74#define HAVE_DLFCN_H 1 │ │ │ │ │ -75 │ │ │ │ │ -76/* Define to 1 if you have the header file. */ │ │ │ │ │ -77#define HAVE_ERRNO_H 1 │ │ │ │ │ -78 │ │ │ │ │ -79/* Define to 1 if you have the 'error_message' function. */ │ │ │ │ │ -80/* #undef HAVE_ERROR_MESSAGE */ │ │ │ │ │ -81 │ │ │ │ │ -82/* Define to 1 if you have the 'eventfd' function. */ │ │ │ │ │ -83#define HAVE_EVENTFD 1 │ │ │ │ │ -84 │ │ │ │ │ -85/* Define to 1 if you have the header file. */ │ │ │ │ │ -86#define HAVE_FCNTL_H 1 │ │ │ │ │ +73typedef struct │ │ │ │ │ +74{ │ │ │ │ │ +75 TDS_CHAR *hostfile; │ │ │ │ │ +76 TDS_CHAR *errorfile; │ │ │ │ │ +77 FILE *bcp_errfileptr; │ │ │ │ │ +78 TDS_INT host_colcount; │ │ │ │ │ +79 BCP_HOSTCOLINFO **host_columns; │ │ │ │ │ +80 TDS_INT firstrow; │ │ │ │ │ +81 TDS_INT lastrow; │ │ │ │ │ +82 TDS_INT maxerrs; │ │ │ │ │ +83 TDS_INT batch; │ │ │ │ │ +84} BCP_HOSTFILEINFO; │ │ │ │ │ +85 │ │ │ │ │ +86/* linked list of rpc parameters */ │ │ │ │ │ 87 │ │ │ │ │ -88/* Define to 1 if you have the 'fork' function. */ │ │ │ │ │ -89#define HAVE_FORK 1 │ │ │ │ │ -90 │ │ │ │ │ -91/* Define to 1 if fseeko (and ftello) are declared in stdio.h. */ │ │ │ │ │ -92#define HAVE_FSEEKO 1 │ │ │ │ │ -93 │ │ │ │ │ -94/* Define to 1 if you have the 'fstat' function. */ │ │ │ │ │ -95#define HAVE_FSTAT 1 │ │ │ │ │ -96 │ │ │ │ │ -97/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ -98 gethostbyaddr_r(). */ │ │ │ │ │ -99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */ │ │ │ │ │ -100 │ │ │ │ │ -101/* Define to 1 if your system provides the 7-parameter version of │ │ │ │ │ -102 gethostbyaddr_r(). */ │ │ │ │ │ -103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */ │ │ │ │ │ -104 │ │ │ │ │ -105/* Define to 1 if your system provides the 8-parameter version of │ │ │ │ │ -106 gethostbyaddr_r(). */ │ │ │ │ │ -107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1 │ │ │ │ │ +88typedef struct DBREMOTE_PROC_PARAM │ │ │ │ │ +89{ │ │ │ │ │ +90 struct DBREMOTE_PROC_PARAM *next; │ │ │ │ │ +91 │ │ │ │ │ +92 char *name; │ │ │ │ │ +93 BYTE status; │ │ │ │ │ +94 TDS_SERVER_TYPE type; │ │ │ │ │ +95 DBINT maxlen; │ │ │ │ │ +96 DBINT datalen; │ │ │ │ │ +97 BYTE *value; │ │ │ │ │ +98} DBREMOTE_PROC_PARAM; │ │ │ │ │ +99 │ │ │ │ │ +100typedef struct DBREMOTE_PROC │ │ │ │ │ +101{ │ │ │ │ │ +102 struct DBREMOTE_PROC *next; │ │ │ │ │ +103 │ │ │ │ │ +104 char *name; │ │ │ │ │ +105 DBSMALLINT options; │ │ │ │ │ +106 DBREMOTE_PROC_PARAM *param_list; │ │ │ │ │ +107} DBREMOTE_PROC; │ │ │ │ │ 108 │ │ │ │ │ -109/* Define to 1 if your system provides the 3-parameter version of │ │ │ │ │ -110 gethostbyname_r(). */ │ │ │ │ │ -111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */ │ │ │ │ │ -112 │ │ │ │ │ -113/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ -114 gethostbyname_r(). */ │ │ │ │ │ -115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */ │ │ │ │ │ -116 │ │ │ │ │ -117/* Define to 1 if your system provides the 6-parameter version of │ │ │ │ │ -118 gethostbyname_r(). */ │ │ │ │ │ -119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1 │ │ │ │ │ -120 │ │ │ │ │ -121/* Define to 1 if your system provides the 4-parameter version of │ │ │ │ │ -122 getpwuid_r(). */ │ │ │ │ │ -123/* #undef HAVE_FUNC_GETPWUID_R_4 */ │ │ │ │ │ -124 │ │ │ │ │ -125/* Define to 1 if your system getpwuid_r() have 4 parameters and return │ │ │ │ │ -struct │ │ │ │ │ -126 passwd*. */ │ │ │ │ │ -127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */ │ │ │ │ │ +109typedef struct dboption │ │ │ │ │ +110{ │ │ │ │ │ +111 const char *text; │ │ │ │ │ +112 DBSTRING *param; │ │ │ │ │ +113 DBBOOL factive; │ │ │ │ │ +114} DBOPTION; │ │ │ │ │ +115 │ │ │ │ │ +116typedef struct │ │ │ │ │ +117{ │ │ │ │ │ +118 const BYTE *bindval; │ │ │ │ │ +119 size_t len; │ │ │ │ │ +120} NULLREP; │ │ │ │ │ +121 │ │ │ │ │ +122struct tds_dblib_dbprocess │ │ │ │ │ +123{ │ │ │ │ │ +124 TDSSOCKET *tds_socket; │ │ │ │ │ +125 │ │ │ │ │ +126 STATUS row_type; │ │ │ │ │ +127 DBPROC_ROWBUF row_buf; │ │ │ │ │ 128 │ │ │ │ │ -129/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ -130 getpwuid_r(). */ │ │ │ │ │ -131#define HAVE_FUNC_GETPWUID_R_5 1 │ │ │ │ │ -132 │ │ │ │ │ -133/* Define to 1 if your system provides the 4-parameter version of │ │ │ │ │ -134 getservbyname_r(). */ │ │ │ │ │ -135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */ │ │ │ │ │ -136 │ │ │ │ │ -137/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ -138 getservbyname_r(). */ │ │ │ │ │ -139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */ │ │ │ │ │ -140 │ │ │ │ │ -141/* Define to 1 if your system provides the 6-parameter version of │ │ │ │ │ -142 getservbyname_r(). */ │ │ │ │ │ -143#define HAVE_FUNC_GETSERVBYNAME_R_6 1 │ │ │ │ │ -144 │ │ │ │ │ -145/* Define to 1 if your localtime_r return a int. */ │ │ │ │ │ -146/* #undef HAVE_FUNC_LOCALTIME_R_INT */ │ │ │ │ │ -147 │ │ │ │ │ -148/* Define to 1 if your localtime_r return a struct tm*. */ │ │ │ │ │ -149#define HAVE_FUNC_LOCALTIME_R_TM 1 │ │ │ │ │ -150 │ │ │ │ │ -151/* Define if you have getaddrinfo function */ │ │ │ │ │ -152#define HAVE_GETADDRINFO 1 │ │ │ │ │ -153 │ │ │ │ │ -154/* Define to 1 if you have the 'gethostname' function. */ │ │ │ │ │ -155#define HAVE_GETHOSTNAME 1 │ │ │ │ │ -156 │ │ │ │ │ -157/* Define to 1 if you have the 'gethrtime' function. */ │ │ │ │ │ -158/* #undef HAVE_GETHRTIME */ │ │ │ │ │ -159 │ │ │ │ │ -160/* Define to 1 if you have the 'getipnodebyaddr' function. */ │ │ │ │ │ -161/* #undef HAVE_GETIPNODEBYADDR */ │ │ │ │ │ -162 │ │ │ │ │ -163/* Define to 1 if you have the 'getipnodebyname' function. */ │ │ │ │ │ -164/* #undef HAVE_GETIPNODEBYNAME */ │ │ │ │ │ -165 │ │ │ │ │ -166/* Define to 1 if you have the 'getopt' function. */ │ │ │ │ │ -167#define HAVE_GETOPT 1 │ │ │ │ │ -168 │ │ │ │ │ -169/* Define to 1 if you have the header file. */ │ │ │ │ │ -170#define HAVE_GETOPT_H 1 │ │ │ │ │ -171 │ │ │ │ │ -172/* Define if your getopt(3) defines and uses optreset */ │ │ │ │ │ -173/* #undef HAVE_GETOPT_OPTRESET */ │ │ │ │ │ -174 │ │ │ │ │ -175/* Define to 1 if you have the 'getpwuid' function. */ │ │ │ │ │ -176#define HAVE_GETPWUID 1 │ │ │ │ │ +129 int noautofree; │ │ │ │ │ +130 int more_results; /* boolean. Are we expecting results? */ │ │ │ │ │ +131 DB_RESULT_STATE dbresults_state; │ │ │ │ │ +132 int dbresults_retcode; │ │ │ │ │ +133 BYTE *user_data; /* see dbsetuserdata() and dbgetuserdata() */ │ │ │ │ │ +134 unsigned char *dbbuf; /* is dynamic! */ │ │ │ │ │ +135 int dbbufsz; │ │ │ │ │ +136 int command_state; │ │ │ │ │ +137 TDS_INT text_size; │ │ │ │ │ +138 TDS_INT text_sent; │ │ │ │ │ +139 DBTYPEINFO typeinfo; │ │ │ │ │ +140 unsigned char avail_flag; │ │ │ │ │ +141 DBOPTION *dbopts; │ │ │ │ │ +142 DBSTRING *dboptcmd; │ │ │ │ │ +143 BCP_HOSTFILEINFO *hostfileinfo; │ │ │ │ │ +144 TDSBCPINFO *bcpinfo; │ │ │ │ │ +145 DBREMOTE_PROC *rpc; │ │ │ │ │ +146 DBUSMALLINT envchange_rcv; │ │ │ │ │ +147 char dbcurdb[DBMAXNAME + 1]; │ │ │ │ │ +148 char servcharset[DBMAXNAME + 1]; │ │ │ │ │ +149 FILE *ftos; │ │ │ │ │ +150 DB_DBCHKINTR_FUNC chkintr; │ │ │ │ │ +151 DB_DBHNDLINTR_FUNC hndlintr; │ │ │ │ │ +152 │ │ │ │ │ +154 int msdblib; │ │ │ │ │ +155 │ │ │ │ │ +156 int ntimeouts; │ │ │ │ │ +157 │ │ │ │ │ +159 NULLREP nullreps[MAXBINDTYPES]; │ │ │ │ │ +160}; │ │ │ │ │ +161 │ │ │ │ │ +162enum { │ │ │ │ │ +163#if MSDBLIB │ │ │ │ │ +164 dblib_msdblib = 1 │ │ │ │ │ +165#else │ │ │ │ │ +166 dblib_msdblib = 0 │ │ │ │ │ +167#endif │ │ │ │ │ +168}; │ │ │ │ │ +169 │ │ │ │ │ +170/* │ │ │ │ │ +171 * internal prototypes │ │ │ │ │ +172 */ │ │ │ │ │ +173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* │ │ │ │ │ +varaddr); │ │ │ │ │ +174void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, │ │ │ │ │ +const BYTE * src, DBINT srclen, │ │ │ │ │ +175 BYTE * dest, DBINT destlen, │ │ │ │ │ +176 int bindtype, DBINT *indicator); │ │ │ │ │ 177 │ │ │ │ │ -178/* Define to 1 if you have the 'getpwuid_r' function. */ │ │ │ │ │ -179#define HAVE_GETPWUID_R 1 │ │ │ │ │ -180 │ │ │ │ │ -181/* Define to 1 if you have the 'gettimeofday' function. */ │ │ │ │ │ -182#define HAVE_GETTIMEOFDAY 1 │ │ │ │ │ -183 │ │ │ │ │ -184/* Define to 1 if you have the 'getuid' function. */ │ │ │ │ │ -185#define HAVE_GETUID 1 │ │ │ │ │ -186 │ │ │ │ │ -187/* Define if you have GMP library */ │ │ │ │ │ -188#define HAVE_GMP 1 │ │ │ │ │ -189 │ │ │ │ │ -190/* Define to 1 if you have GnuTLS. */ │ │ │ │ │ -191#define HAVE_GNUTLS 1 │ │ │ │ │ -192 │ │ │ │ │ -193/* Define to 1 if you have the header file. */ │ │ │ │ │ -194#define HAVE_GNUTLS_ABSTRACT_H 1 │ │ │ │ │ -195 │ │ │ │ │ -196/* Define to 1 if you have the 'gnutls_alpn_set_protocols' function. */ │ │ │ │ │ -197#define HAVE_GNUTLS_ALPN_SET_PROTOCOLS 1 │ │ │ │ │ -198 │ │ │ │ │ -199/* Define to 1 if you have the 'gnutls_certificate_set_verify_function' │ │ │ │ │ -200 function. */ │ │ │ │ │ -201#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1 │ │ │ │ │ +178int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...); │ │ │ │ │ +179int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * │ │ │ │ │ +tdsptr, TDSMESSAGE* msgptr); │ │ │ │ │ +180int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, │ │ │ │ │ +TDSMESSAGE* msgptr); │ │ │ │ │ +181int _dblib_check_and_handle_interrupt(void * vdbproc); │ │ │ │ │ +182 │ │ │ │ │ +183void _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version); │ │ │ │ │ +184void _dblib_convert_err(DBPROCESS * dbproc, TDS_INT len); │ │ │ │ │ +185 │ │ │ │ │ +186DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT │ │ │ │ │ +destlen); │ │ │ │ │ +187DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT │ │ │ │ │ +destlen); │ │ │ │ │ +188 │ │ │ │ │ +189RETCODE _bcp_clear_storage(DBPROCESS * dbproc); │ │ │ │ │ +190RETCODE _bcp_get_prog_data(DBPROCESS * dbproc); │ │ │ │ │ +191 │ │ │ │ │ +192extern MHANDLEFUNC _dblib_msg_handler; │ │ │ │ │ +193extern EHANDLEFUNC _dblib_err_handler; │ │ │ │ │ +194 │ │ │ │ │ +195#define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); │ │ │ │ │ +return ret; } │ │ │ │ │ +196#define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, │ │ │ │ │ +SYBENULP, 0, func, (int) param_num); return ret; } │ │ │ │ │ +197#define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); │ │ │ │ │ +return FAIL; } │ │ │ │ │ +198#define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return │ │ │ │ │ +FAIL; } │ │ │ │ │ +199#define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), │ │ │ │ │ +0, a, b, c); return FAIL; } │ │ │ │ │ +200#define CHECK_CONN(ret) do { CHECK_PARAMETER(dbproc, SYBENULL, (ret)); \ │ │ │ │ │ +201 if (IS_TDSDEAD(dbproc->tds_socket)) { dbperror(dbproc, SYBEDDNE, 0); return │ │ │ │ │ +(ret); } } while(0) │ │ │ │ │ 202 │ │ │ │ │ -203/* Define to 1 if you have the 'gnutls_record_disable_padding' function. */ │ │ │ │ │ -204#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1 │ │ │ │ │ -205 │ │ │ │ │ -206/* Define to 1 if you have the 'gnutls_rnd' function. */ │ │ │ │ │ -207#define HAVE_GNUTLS_RND 1 │ │ │ │ │ -208 │ │ │ │ │ -209/* Define if you have the iconv() function and it works. */ │ │ │ │ │ -210#define HAVE_ICONV 1 │ │ │ │ │ -211 │ │ │ │ │ -212/* Define to 1 if you have the 'inet_ntoa_r' function. */ │ │ │ │ │ -213/* #undef HAVE_INET_NTOA_R */ │ │ │ │ │ -214 │ │ │ │ │ -215/* Define to 1 if you have the 'inet_ntop' function. */ │ │ │ │ │ -216#define HAVE_INET_NTOP 1 │ │ │ │ │ -217 │ │ │ │ │ -218/* Define to 1 if you have the header file. */ │ │ │ │ │ -219#define HAVE_INTTYPES_H 1 │ │ │ │ │ -220 │ │ │ │ │ -221/* Define to 1 if you have the header file. */ │ │ │ │ │ -222/* #undef HAVE_IODBCINST_H */ │ │ │ │ │ -223 │ │ │ │ │ -224/* Define to 1 if you have the header file. */ │ │ │ │ │ -225#define HAVE_LANGINFO_H 1 │ │ │ │ │ -226 │ │ │ │ │ -227/* Define to 1 if you have the header file. */ │ │ │ │ │ -228#define HAVE_LIBGEN_H 1 │ │ │ │ │ -229 │ │ │ │ │ -230/* Define to 1 if you have the header file. */ │ │ │ │ │ -231#define HAVE_LIMITS_H 1 │ │ │ │ │ -232 │ │ │ │ │ -233/* Define to 1 if you have the header file. */ │ │ │ │ │ -234/* #undef HAVE_LOCALCHARSET_H */ │ │ │ │ │ -235 │ │ │ │ │ -236/* Define to 1 if you have the 'locale_charset' function. */ │ │ │ │ │ -237/* #undef HAVE_LOCALE_CHARSET */ │ │ │ │ │ -238 │ │ │ │ │ -239/* Define to 1 if you have the header file. */ │ │ │ │ │ -240#define HAVE_LOCALE_H 1 │ │ │ │ │ -241 │ │ │ │ │ -242/* Define to 1 if you have the 'localtime_r' function. */ │ │ │ │ │ -243#define HAVE_LOCALTIME_R 1 │ │ │ │ │ -244 │ │ │ │ │ -245/* Define if you have long long */ │ │ │ │ │ -246#define HAVE_LONG_LONG 1 │ │ │ │ │ -247 │ │ │ │ │ -248/* Define to 1 if you have the 'mallinfo' function. */ │ │ │ │ │ -249#define HAVE_MALLINFO 1 │ │ │ │ │ -250 │ │ │ │ │ -251/* Define to 1 if you have the 'mallinfo2' function. */ │ │ │ │ │ -252#define HAVE_MALLINFO2 1 │ │ │ │ │ -253 │ │ │ │ │ -254/* Define to 1 if you have the header file. */ │ │ │ │ │ -255#define HAVE_MALLOC_H 1 │ │ │ │ │ -256 │ │ │ │ │ -257/* Define to 1 if your system provides the malloc_options variable. */ │ │ │ │ │ -258/* #undef HAVE_MALLOC_OPTIONS */ │ │ │ │ │ -259 │ │ │ │ │ -260/* Define to 1 if you have the header file. */ │ │ │ │ │ -261/* #undef HAVE_MINIX_CONFIG_H */ │ │ │ │ │ -262 │ │ │ │ │ -263/* Define to 1 if you have the 'nanosleep' function. */ │ │ │ │ │ -264#define HAVE_NANOSLEEP 1 │ │ │ │ │ -265 │ │ │ │ │ -266/* Define to 1 if you have the header file. */ │ │ │ │ │ -267#define HAVE_NETDB_H 1 │ │ │ │ │ -268 │ │ │ │ │ -269/* Define to 1 if you have the header file. */ │ │ │ │ │ -270#define HAVE_NETINET_IN_H 1 │ │ │ │ │ -271 │ │ │ │ │ -272/* Define to 1 if you have the header file. */ │ │ │ │ │ -273#define HAVE_NETINET_TCP_H 1 │ │ │ │ │ -274 │ │ │ │ │ -275/* Define to 1 if nettle is present. */ │ │ │ │ │ -276#define HAVE_NETTLE 1 │ │ │ │ │ -277 │ │ │ │ │ -278/* Define to 1 if you have the 'nl_langinfo' function. */ │ │ │ │ │ -279#define HAVE_NL_LANGINFO 1 │ │ │ │ │ -280 │ │ │ │ │ -281/* Define to 1 if you have the header file. */ │ │ │ │ │ -282/* #undef HAVE_ODBCSS_H */ │ │ │ │ │ -283 │ │ │ │ │ -284/* Define if you have the OpenSSL. */ │ │ │ │ │ -285/* #undef HAVE_OPENSSL */ │ │ │ │ │ -286 │ │ │ │ │ -287/* Define to 1 if you have the header file. */ │ │ │ │ │ -288#define HAVE_PATHS_H 1 │ │ │ │ │ -289 │ │ │ │ │ -290/* Define to 1 if you have the 'poll' function. */ │ │ │ │ │ -291#define HAVE_POLL 1 │ │ │ │ │ -292 │ │ │ │ │ -293/* Define to 1 if you have the header file. */ │ │ │ │ │ -294#define HAVE_POLL_H 1 │ │ │ │ │ -295 │ │ │ │ │ -296/* Define if you have POSIX threads libraries and header files. */ │ │ │ │ │ -297#define HAVE_PTHREAD 1 │ │ │ │ │ -298 │ │ │ │ │ -299/* Define to 1 if you have the 'pthread_condattr_setclock' function. */ │ │ │ │ │ -300#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1 │ │ │ │ │ -301 │ │ │ │ │ -302/* Define to 1 if you have the 'pthread_cond_timedwait' function. */ │ │ │ │ │ -303#define HAVE_PTHREAD_COND_TIMEDWAIT 1 │ │ │ │ │ -304 │ │ │ │ │ -305/* Define to 1 if you have the 'pthread_cond_timedwait_relative_np' │ │ │ │ │ -function. │ │ │ │ │ -306 */ │ │ │ │ │ -307/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */ │ │ │ │ │ -308 │ │ │ │ │ -309/* Have PTHREAD_PRIO_INHERIT. */ │ │ │ │ │ -310#define HAVE_PTHREAD_PRIO_INHERIT 1 │ │ │ │ │ -311 │ │ │ │ │ -312/* Define to 1 if you have the 'putenv' function. */ │ │ │ │ │ -313#define HAVE_PUTENV 1 │ │ │ │ │ -314 │ │ │ │ │ -315/* Define to 1 if you have the 'readdir_r' function. */ │ │ │ │ │ -316#define HAVE_READDIR_R 1 │ │ │ │ │ -317 │ │ │ │ │ -318/* Define to 1 if you have the GNU Readline library. */ │ │ │ │ │ -319#define HAVE_READLINE 1 │ │ │ │ │ -320 │ │ │ │ │ -321/* Define to 1 if you have the 'readpassphrase' function. */ │ │ │ │ │ -322/* #undef HAVE_READPASSPHRASE */ │ │ │ │ │ -323 │ │ │ │ │ -324/* Define to 1 if you have rl_inhibit_completion. */ │ │ │ │ │ -325#define HAVE_RL_INHIBIT_COMPLETION 1 │ │ │ │ │ -326 │ │ │ │ │ -327/* Define to 1 if you have the 'rl_on_new_line' function. */ │ │ │ │ │ -328#define HAVE_RL_ON_NEW_LINE 1 │ │ │ │ │ -329 │ │ │ │ │ -330/* Define to 1 if you have the 'rl_reset_line_state' function. */ │ │ │ │ │ -331#define HAVE_RL_RESET_LINE_STATE 1 │ │ │ │ │ -332 │ │ │ │ │ -333/* Define to 1 if you have the header file. */ │ │ │ │ │ -334/* #undef HAVE_ROKEN_H */ │ │ │ │ │ -335 │ │ │ │ │ -336/* Define to 1 if you have the 'RSA_get0_key' function. */ │ │ │ │ │ -337/* #undef HAVE_RSA_GET0_KEY */ │ │ │ │ │ -338 │ │ │ │ │ -339/* Define to 1 if you have the 'setenv' function. */ │ │ │ │ │ -340#define HAVE_SETENV 1 │ │ │ │ │ -341 │ │ │ │ │ -342/* Define to 1 if you have the 'setitimer' function. */ │ │ │ │ │ -343#define HAVE_SETITIMER 1 │ │ │ │ │ -344 │ │ │ │ │ -345/* Define to 1 if you have the 'setrlimit' function. */ │ │ │ │ │ -346#define HAVE_SETRLIMIT 1 │ │ │ │ │ -347 │ │ │ │ │ -348/* Define to 1 if you have the header file. */ │ │ │ │ │ -349#define HAVE_SIGNAL_H 1 │ │ │ │ │ -350 │ │ │ │ │ -351/* Define to 1 if you have the 'socketpair' function. */ │ │ │ │ │ -352#define HAVE_SOCKETPAIR 1 │ │ │ │ │ -353 │ │ │ │ │ -354/* Define to 1 if you have the SQLGetPrivateProfileString function. */ │ │ │ │ │ -355#define HAVE_SQLGETPRIVATEPROFILESTRING 1 │ │ │ │ │ -356 │ │ │ │ │ -357/* Define if sqltypes.h define SQLLEN */ │ │ │ │ │ -358#define HAVE_SQLLEN 1 │ │ │ │ │ -359 │ │ │ │ │ -360/* Define to 1 if the system has the type 'SQLROWOFFSET'. */ │ │ │ │ │ -361/* #undef HAVE_SQLROWOFFSET */ │ │ │ │ │ -362 │ │ │ │ │ -363/* Define to 1 if the system has the type 'SQLROWSETSIZE'. */ │ │ │ │ │ -364/* #undef HAVE_SQLROWSETSIZE */ │ │ │ │ │ -365 │ │ │ │ │ -366/* Define to 1 if the system has the type 'SQLSETPOSIROW'. */ │ │ │ │ │ -367#define HAVE_SQLSETPOSIROW 1 │ │ │ │ │ -368 │ │ │ │ │ -369/* Define to 1 if you have the header file. */ │ │ │ │ │ -370#define HAVE_SQL_H 1 │ │ │ │ │ -371 │ │ │ │ │ -372/* Define to 1 if you have the 'SSL_set_alpn_protos' function. */ │ │ │ │ │ -373/* #undef HAVE_SSL_SET_ALPN_PROTOS */ │ │ │ │ │ -374 │ │ │ │ │ -375/* Defined if not --disable-sspi and SSPI detected */ │ │ │ │ │ -376/* #undef HAVE_SSPI */ │ │ │ │ │ -377 │ │ │ │ │ -378/* Define to 1 if you have the header file. */ │ │ │ │ │ -379#define HAVE_STDBOOL_H 1 │ │ │ │ │ -380 │ │ │ │ │ -381/* Define to 1 if you have the header file. */ │ │ │ │ │ -382#define HAVE_STDDEF_H 1 │ │ │ │ │ -383 │ │ │ │ │ -384/* Define to 1 if you have the header file. */ │ │ │ │ │ -385#define HAVE_STDINT_H 1 │ │ │ │ │ -386 │ │ │ │ │ -387/* Define to 1 if you have the header file. */ │ │ │ │ │ -388#define HAVE_STDIO_H 1 │ │ │ │ │ -389 │ │ │ │ │ -390/* Define to 1 if you have the header file. */ │ │ │ │ │ -391#define HAVE_STDLIB_H 1 │ │ │ │ │ -392 │ │ │ │ │ -393/* Define to 1 if you have the header file. */ │ │ │ │ │ -394#define HAVE_STRINGS_H 1 │ │ │ │ │ -395 │ │ │ │ │ -396/* Define to 1 if you have the header file. */ │ │ │ │ │ -397#define HAVE_STRING_H 1 │ │ │ │ │ -398 │ │ │ │ │ -399/* Define to 1 if you have the 'strlcat' function. */ │ │ │ │ │ -400#define HAVE_STRLCAT 1 │ │ │ │ │ -401 │ │ │ │ │ -402/* Define to 1 if you have the 'strlcpy' function. */ │ │ │ │ │ -403#define HAVE_STRLCPY 1 │ │ │ │ │ -404 │ │ │ │ │ -405/* Define to 1 if you have the 'strsep' function. */ │ │ │ │ │ -406#define HAVE_STRSEP 1 │ │ │ │ │ -407 │ │ │ │ │ -408/* Define to 1 if you have the 'strtok_r' function. */ │ │ │ │ │ -409#define HAVE_STRTOK_R 1 │ │ │ │ │ -410 │ │ │ │ │ -411/* Define to 1 if you have the 'strtok_s' function. */ │ │ │ │ │ -412/* #undef HAVE_STRTOK_S */ │ │ │ │ │ -413 │ │ │ │ │ -414/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */ │ │ │ │ │ -415#define HAVE_STRUCT_TM_TM_ZONE 1 │ │ │ │ │ -416 │ │ │ │ │ -417/* Define to 1 if '__tm_zone' is a member of 'struct tm'. */ │ │ │ │ │ -418/* #undef HAVE_STRUCT_TM___TM_ZONE */ │ │ │ │ │ -419 │ │ │ │ │ -420/* Define to 1 if you have the 'system' function */ │ │ │ │ │ -421#define HAVE_SYSTEM 1 │ │ │ │ │ -422 │ │ │ │ │ -423/* Define to 1 if you have the header file. */ │ │ │ │ │ -424#define HAVE_SYS_EVENTFD_H 1 │ │ │ │ │ -425 │ │ │ │ │ -426/* Define to 1 if you have the header file. */ │ │ │ │ │ -427#define HAVE_SYS_IOCTL_H 1 │ │ │ │ │ -428 │ │ │ │ │ -429/* Define to 1 if you have the header file. */ │ │ │ │ │ -430#define HAVE_SYS_PARAM_H 1 │ │ │ │ │ -431 │ │ │ │ │ -432/* Define to 1 if you have the header file. */ │ │ │ │ │ -433#define HAVE_SYS_RESOURCE_H 1 │ │ │ │ │ -434 │ │ │ │ │ -435/* Define to 1 if you have the header file. */ │ │ │ │ │ -436#define HAVE_SYS_SELECT_H 1 │ │ │ │ │ -437 │ │ │ │ │ -438/* Define to 1 if you have the header file. */ │ │ │ │ │ -439#define HAVE_SYS_SOCKET_H 1 │ │ │ │ │ -440 │ │ │ │ │ -441/* Define to 1 if you have the header file. */ │ │ │ │ │ -442#define HAVE_SYS_STAT_H 1 │ │ │ │ │ -443 │ │ │ │ │ -444/* Define to 1 if you have the header file. */ │ │ │ │ │ -445#define HAVE_SYS_TIME_H 1 │ │ │ │ │ -446 │ │ │ │ │ -447/* Define to 1 if you have the header file. */ │ │ │ │ │ -448#define HAVE_SYS_TYPES_H 1 │ │ │ │ │ -449 │ │ │ │ │ -450/* Define to 1 if you have the header file. */ │ │ │ │ │ -451#define HAVE_SYS_WAIT_H 1 │ │ │ │ │ -452 │ │ │ │ │ -453/* Define to 1 if your 'struct tm' has 'tm_zone'. Deprecated, use │ │ │ │ │ -454 'HAVE_STRUCT_TM_TM_ZONE' instead. */ │ │ │ │ │ -455#define HAVE_TM_ZONE 1 │ │ │ │ │ -456 │ │ │ │ │ -457/* Define to 1 if you don't have 'tm_zone' but do have the external array │ │ │ │ │ -458 'tzname'. */ │ │ │ │ │ -459/* #undef HAVE_TZNAME */ │ │ │ │ │ -460 │ │ │ │ │ -461/* Define to 1 if you have the header file. */ │ │ │ │ │ -462#define HAVE_UNISTD_H 1 │ │ │ │ │ -463 │ │ │ │ │ -464/* Define to 1 if you have the 'usleep' function. */ │ │ │ │ │ -465#define HAVE_USLEEP 1 │ │ │ │ │ -466 │ │ │ │ │ -467/* Define to 1 if you have the header file. */ │ │ │ │ │ -468/* #undef HAVE_VALGRIND_MEMCHECK_H */ │ │ │ │ │ -469 │ │ │ │ │ -470/* Define to 1 if you have the 'vasprintf' function. */ │ │ │ │ │ -471#define HAVE_VASPRINTF 1 │ │ │ │ │ -472 │ │ │ │ │ -473/* Define to 1 if you have the 'vsnprintf' function. */ │ │ │ │ │ -474#define HAVE_VSNPRINTF 1 │ │ │ │ │ -475 │ │ │ │ │ -476/* Define to 1 if you have the header file. */ │ │ │ │ │ -477#define HAVE_WCHAR_H 1 │ │ │ │ │ -478 │ │ │ │ │ -479/* Define to 1 if you have the header file. */ │ │ │ │ │ -480/* #undef HAVE_WINDOWS_H */ │ │ │ │ │ -481 │ │ │ │ │ -482/* Define to 1 if you have the header file. */ │ │ │ │ │ -483/* #undef HAVE_WINSOCK2_H */ │ │ │ │ │ -484 │ │ │ │ │ -485/* Define to 1 if you have the '_fseeki64' function. */ │ │ │ │ │ -486/* #undef HAVE__FSEEKI64 */ │ │ │ │ │ -487 │ │ │ │ │ -488/* Define to 1 if you have the '_ftelli64' function. */ │ │ │ │ │ -489/* #undef HAVE__FTELLI64 */ │ │ │ │ │ -490 │ │ │ │ │ -491/* Define to 1 if you have the '_heapwalk' function. */ │ │ │ │ │ -492/* #undef HAVE__HEAPWALK */ │ │ │ │ │ -493 │ │ │ │ │ -494/* Define to 1 if you have the '_lock_file' function. */ │ │ │ │ │ -495/* #undef HAVE__LOCK_FILE */ │ │ │ │ │ -496 │ │ │ │ │ -497/* Define to 1 if you have the '_unlock_file' function. */ │ │ │ │ │ -498/* #undef HAVE__UNLOCK_FILE */ │ │ │ │ │ -499 │ │ │ │ │ -500/* Define to 1 if you have the '_vscprintf' function. */ │ │ │ │ │ -501/* #undef HAVE__VSCPRINTF */ │ │ │ │ │ -502 │ │ │ │ │ -503/* Define to 1 if you have the '_vsnprintf' function. */ │ │ │ │ │ -504/* #undef HAVE__VSNPRINTF */ │ │ │ │ │ -505 │ │ │ │ │ -506/* Define to 1 if you have the '_xpg_accept' function. */ │ │ │ │ │ -507/* #undef HAVE__XPG_ACCEPT */ │ │ │ │ │ -508 │ │ │ │ │ -509/* Define to 1 if you have the '_xpg_getpeername' function. */ │ │ │ │ │ -510/* #undef HAVE__XPG_GETPEERNAME */ │ │ │ │ │ -511 │ │ │ │ │ -512/* Define to 1 if you have the '_xpg_getsockname' function. */ │ │ │ │ │ -513/* #undef HAVE__XPG_GETSOCKNAME */ │ │ │ │ │ -514 │ │ │ │ │ -515/* Define to 1 if you have the '_xpg_getsockopt' function. */ │ │ │ │ │ -516/* #undef HAVE__XPG_GETSOCKOPT */ │ │ │ │ │ -517 │ │ │ │ │ -518/* Define to 1 if you have the '_xpg_recvfrom' function. */ │ │ │ │ │ -519/* #undef HAVE__XPG_RECVFROM */ │ │ │ │ │ -520 │ │ │ │ │ -521/* Define to 1 if you have the '__accept' function. */ │ │ │ │ │ -522/* #undef HAVE___ACCEPT */ │ │ │ │ │ -523 │ │ │ │ │ -524/* Define to 1 if you have the '__getpeername' function. */ │ │ │ │ │ -525/* #undef HAVE___GETPEERNAME */ │ │ │ │ │ -526 │ │ │ │ │ -527/* Define to 1 if you have the '__getsockname' function. */ │ │ │ │ │ -528/* #undef HAVE___GETSOCKNAME */ │ │ │ │ │ -529 │ │ │ │ │ -530/* Define to 1 if you have the '__getsockopt' function. */ │ │ │ │ │ -531/* #undef HAVE___GETSOCKOPT */ │ │ │ │ │ -532 │ │ │ │ │ -533/* Define to 1 if you have the '__recvfrom' function. */ │ │ │ │ │ -534/* #undef HAVE___RECVFROM */ │ │ │ │ │ -535 │ │ │ │ │ -536/* Define as const if the declaration of iconv() needs const. */ │ │ │ │ │ -537#define ICONV_CONST │ │ │ │ │ -538 │ │ │ │ │ -539/* Define to value of INADDR_NONE if not provided by your system header │ │ │ │ │ -files. │ │ │ │ │ -540 */ │ │ │ │ │ -541/* #undef INADDR_NONE */ │ │ │ │ │ -542 │ │ │ │ │ -543/* Define to the sub-directory where libtool stores uninstalled libraries. │ │ │ │ │ -*/ │ │ │ │ │ -544#define LT_OBJDIR ".libs/" │ │ │ │ │ -545 │ │ │ │ │ -546/* Define to 1 if the BSD-style netdb interface is reentrant. */ │ │ │ │ │ -547/* #undef NETDB_REENTRANT */ │ │ │ │ │ -548 │ │ │ │ │ -549/* Define to 1 if memset(0) sets pointers to NULL. */ │ │ │ │ │ -550#define NULL_REP_IS_ZERO_BYTES 1 │ │ │ │ │ -551 │ │ │ │ │ -552/* Name of package */ │ │ │ │ │ -553#define PACKAGE "freetds" │ │ │ │ │ -554 │ │ │ │ │ -555/* Define to the address where bug reports for this package should be sent. │ │ │ │ │ -*/ │ │ │ │ │ -556#define PACKAGE_BUGREPORT "" │ │ │ │ │ -557 │ │ │ │ │ -558/* Define to the full name of this package. */ │ │ │ │ │ -559#define PACKAGE_NAME "FreeTDS" │ │ │ │ │ -560 │ │ │ │ │ -561/* Define to the full name and version of this package. */ │ │ │ │ │ -562#define PACKAGE_STRING "FreeTDS 1.5.5" │ │ │ │ │ -563 │ │ │ │ │ -564/* Define to the one symbol short name of this package. */ │ │ │ │ │ -565#define PACKAGE_TARNAME "freetds" │ │ │ │ │ -566 │ │ │ │ │ -567/* Define to the home page for this package. */ │ │ │ │ │ -568#define PACKAGE_URL "" │ │ │ │ │ -569 │ │ │ │ │ -570/* Define to the version of this package. */ │ │ │ │ │ -571#define PACKAGE_VERSION "1.5.5" │ │ │ │ │ -572 │ │ │ │ │ -573/* Define to necessary symbol if this constant uses a non-standard name on │ │ │ │ │ -574 your system. */ │ │ │ │ │ -575/* #undef PTHREAD_CREATE_JOINABLE */ │ │ │ │ │ -576 │ │ │ │ │ -577/* The size of 'char', as computed by sizeof. */ │ │ │ │ │ -578#define SIZEOF_CHAR 1 │ │ │ │ │ -579 │ │ │ │ │ -580/* The size of 'double', as computed by sizeof. */ │ │ │ │ │ -581#define SIZEOF_DOUBLE 8 │ │ │ │ │ -582 │ │ │ │ │ -583/* The size of 'float', as computed by sizeof. */ │ │ │ │ │ -584#define SIZEOF_FLOAT 4 │ │ │ │ │ -585 │ │ │ │ │ -586/* The size of 'int', as computed by sizeof. */ │ │ │ │ │ -587#define SIZEOF_INT 4 │ │ │ │ │ -588 │ │ │ │ │ -589/* The size of 'long', as computed by sizeof. */ │ │ │ │ │ -590#define SIZEOF_LONG 8 │ │ │ │ │ -591 │ │ │ │ │ -592/* The size of 'long double', as computed by sizeof. */ │ │ │ │ │ -593#define SIZEOF_LONG_DOUBLE 16 │ │ │ │ │ -594 │ │ │ │ │ -595/* The size of 'long int', as computed by sizeof. */ │ │ │ │ │ -596#define SIZEOF_LONG_INT 8 │ │ │ │ │ -597 │ │ │ │ │ -598/* The size of 'long long', as computed by sizeof. */ │ │ │ │ │ -599#define SIZEOF_LONG_LONG 8 │ │ │ │ │ -600 │ │ │ │ │ -601/* The size of 'short', as computed by sizeof. */ │ │ │ │ │ -602#define SIZEOF_SHORT 2 │ │ │ │ │ -603 │ │ │ │ │ -604/* The size of 'SQLWCHAR', as computed by sizeof. */ │ │ │ │ │ -605#define SIZEOF_SQLWCHAR 2 │ │ │ │ │ -606 │ │ │ │ │ -607/* The size of 'void *', as computed by sizeof. */ │ │ │ │ │ -608#define SIZEOF_VOID_P 8 │ │ │ │ │ -609 │ │ │ │ │ -610/* The size of 'wchar_t', as computed by sizeof. */ │ │ │ │ │ -611#define SIZEOF_WCHAR_T 4 │ │ │ │ │ -612 │ │ │ │ │ -613/* The size of '__int128', as computed by sizeof. */ │ │ │ │ │ -614#define SIZEOF___INT128 16 │ │ │ │ │ -615 │ │ │ │ │ -616/* The size of '__int64', as computed by sizeof. */ │ │ │ │ │ -617#define SIZEOF___INT64 0 │ │ │ │ │ -618 │ │ │ │ │ -619/* If using the C implementation of alloca, define if you know the │ │ │ │ │ -620 direction of stack growth for your system; otherwise it will be │ │ │ │ │ -621 automatically deduced at runtime. │ │ │ │ │ -622 STACK_DIRECTION > 0 => grows toward higher addresses │ │ │ │ │ -623 STACK_DIRECTION < 0 => grows toward lower addresses │ │ │ │ │ -624 STACK_DIRECTION = 0 => direction of growth unknown */ │ │ │ │ │ -625/* #undef STACK_DIRECTION */ │ │ │ │ │ -626 │ │ │ │ │ -627/* Define to 1 if all of the C89 standard headers exist (not just the ones │ │ │ │ │ -628 required in a freestanding environment). This macro is provided for │ │ │ │ │ -629 backward compatibility; new code need not use it. */ │ │ │ │ │ -630#define STDC_HEADERS 1 │ │ │ │ │ -631 │ │ │ │ │ -632/* Define to use TDS 5.0 by default */ │ │ │ │ │ -633/* #undef TDS50 */ │ │ │ │ │ -634 │ │ │ │ │ -635/* Define to use TDS 7.1 by default */ │ │ │ │ │ -636/* #undef TDS71 */ │ │ │ │ │ -637 │ │ │ │ │ -638/* Define to use TDS 7.2 by default */ │ │ │ │ │ -639/* #undef TDS72 */ │ │ │ │ │ -640 │ │ │ │ │ -641/* Define to use TDS 7.3 by default */ │ │ │ │ │ -642/* #undef TDS73 */ │ │ │ │ │ -643 │ │ │ │ │ -644/* Define to use TDS 7.4 by default */ │ │ │ │ │ -645/* #undef TDS74 */ │ │ │ │ │ -646 │ │ │ │ │ -647/* Define to 1 if your compiler supports __attribute__((destructor)). */ │ │ │ │ │ -648#define TDS_ATTRIBUTE_DESTRUCTOR 1 │ │ │ │ │ -649 │ │ │ │ │ -650/* define to constant to use for clock_gettime */ │ │ │ │ │ -651#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC │ │ │ │ │ -652 │ │ │ │ │ -653/* Define if you have pthread with mutex support */ │ │ │ │ │ -654#define TDS_HAVE_PTHREAD_MUTEX 1 │ │ │ │ │ -655 │ │ │ │ │ -656/* Define if stdio support locking */ │ │ │ │ │ -657#define TDS_HAVE_STDIO_LOCKED 1 │ │ │ │ │ -658 │ │ │ │ │ -659/* define to prefix format string used for 64bit integers */ │ │ │ │ │ -660#define TDS_I64_PREFIX "l" │ │ │ │ │ -661 │ │ │ │ │ -662/* Define if you don't care about thread safety */ │ │ │ │ │ -663/* #undef TDS_NO_THREADSAFE */ │ │ │ │ │ -664 │ │ │ │ │ -665/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */ │ │ │ │ │ -666#define TDS_SQLCOLATTRIBUTE_SQLLEN 1 │ │ │ │ │ -667 │ │ │ │ │ -668/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */ │ │ │ │ │ -669#define TDS_SQLPARAMOPTIONS_SQLLEN 1 │ │ │ │ │ -670 │ │ │ │ │ -671/* Defined if --enable-sybase-compat used */ │ │ │ │ │ -672#define TDS_SYBASE_COMPAT 1 │ │ │ │ │ -673 │ │ │ │ │ -674/* Define to 1 if your declares 'struct tm'. */ │ │ │ │ │ -675/* #undef TM_IN_SYS_TIME */ │ │ │ │ │ -676 │ │ │ │ │ -677/* Enable extensions on AIX, Interix, z/OS. */ │ │ │ │ │ -678#ifndef _ALL_SOURCE │ │ │ │ │ -679# define _ALL_SOURCE 1 │ │ │ │ │ -680#endif │ │ │ │ │ -681/* Enable general extensions on macOS. */ │ │ │ │ │ -682#ifndef _DARWIN_C_SOURCE │ │ │ │ │ -683# define _DARWIN_C_SOURCE 1 │ │ │ │ │ -684#endif │ │ │ │ │ -685/* Enable general extensions on Solaris. */ │ │ │ │ │ -686#ifndef __EXTENSIONS__ │ │ │ │ │ -687# define __EXTENSIONS__ 1 │ │ │ │ │ -688#endif │ │ │ │ │ -689/* Enable GNU extensions on systems that have them. */ │ │ │ │ │ -690#ifndef _GNU_SOURCE │ │ │ │ │ -691# define _GNU_SOURCE 1 │ │ │ │ │ -692#endif │ │ │ │ │ -693/* Enable X/Open compliant socket functions that do not require linking │ │ │ │ │ -694 with -lxnet on HP-UX 11.11. */ │ │ │ │ │ -695#ifndef _HPUX_ALT_XOPEN_SOCKET_API │ │ │ │ │ -696# define _HPUX_ALT_XOPEN_SOCKET_API 1 │ │ │ │ │ -697#endif │ │ │ │ │ -698/* Identify the host operating system as Minix. │ │ │ │ │ -699 This macro does not affect the system headers' behavior. │ │ │ │ │ -700 A future release of Autoconf may stop defining this macro. */ │ │ │ │ │ -701#ifndef _MINIX │ │ │ │ │ -702/* # undef _MINIX */ │ │ │ │ │ -703#endif │ │ │ │ │ -704/* Enable general extensions on NetBSD. │ │ │ │ │ -705 Enable NetBSD compatibility extensions on Minix. */ │ │ │ │ │ -706#ifndef _NETBSD_SOURCE │ │ │ │ │ -707# define _NETBSD_SOURCE 1 │ │ │ │ │ -708#endif │ │ │ │ │ -709/* Enable OpenBSD compatibility extensions on NetBSD. │ │ │ │ │ -710 Oddly enough, this does nothing on OpenBSD. */ │ │ │ │ │ -711#ifndef _OPENBSD_SOURCE │ │ │ │ │ -712# define _OPENBSD_SOURCE 1 │ │ │ │ │ -713#endif │ │ │ │ │ -714/* Define to 1 if needed for POSIX-compatible behavior. */ │ │ │ │ │ -715#ifndef _POSIX_SOURCE │ │ │ │ │ -716/* # undef _POSIX_SOURCE */ │ │ │ │ │ -717#endif │ │ │ │ │ -718/* Define to 2 if needed for POSIX-compatible behavior. */ │ │ │ │ │ -719#ifndef _POSIX_1_SOURCE │ │ │ │ │ -720/* # undef _POSIX_1_SOURCE */ │ │ │ │ │ -721#endif │ │ │ │ │ -722/* Enable POSIX-compatible threading on Solaris. */ │ │ │ │ │ -723#ifndef _POSIX_PTHREAD_SEMANTICS │ │ │ │ │ -724# define _POSIX_PTHREAD_SEMANTICS 1 │ │ │ │ │ -725#endif │ │ │ │ │ -726/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ │ │ │ │ │ -727#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ │ │ │ │ │ -728# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1 │ │ │ │ │ -729#endif │ │ │ │ │ -730/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ │ │ │ │ │ -731#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ │ │ │ │ │ -732# define __STDC_WANT_IEC_60559_BFP_EXT__ 1 │ │ │ │ │ -733#endif │ │ │ │ │ -734/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ │ │ │ │ │ -735#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ │ │ │ │ │ -736# define __STDC_WANT_IEC_60559_DFP_EXT__ 1 │ │ │ │ │ -737#endif │ │ │ │ │ -738/* Enable extensions specified by C23 Annex F. */ │ │ │ │ │ -739#ifndef __STDC_WANT_IEC_60559_EXT__ │ │ │ │ │ -740# define __STDC_WANT_IEC_60559_EXT__ 1 │ │ │ │ │ -741#endif │ │ │ │ │ -742/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ │ │ │ │ │ -743#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ │ │ │ │ │ -744# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 │ │ │ │ │ -745#endif │ │ │ │ │ -746/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. │ │ │ │ │ -*/ │ │ │ │ │ -747#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ │ │ │ │ │ -748# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 │ │ │ │ │ -749#endif │ │ │ │ │ -750/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ │ │ │ │ │ -751#ifndef __STDC_WANT_LIB_EXT2__ │ │ │ │ │ -752# define __STDC_WANT_LIB_EXT2__ 1 │ │ │ │ │ -753#endif │ │ │ │ │ -754/* Enable extensions specified by ISO/IEC 24747:2009. */ │ │ │ │ │ -755#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ │ │ │ │ │ -756# define __STDC_WANT_MATH_SPEC_FUNCS__ 1 │ │ │ │ │ -757#endif │ │ │ │ │ -758/* Enable extensions on HP NonStop. */ │ │ │ │ │ -759#ifndef _TANDEM_SOURCE │ │ │ │ │ -760# define _TANDEM_SOURCE 1 │ │ │ │ │ -761#endif │ │ │ │ │ -762/* Enable X/Open extensions. Define to 500 only if necessary │ │ │ │ │ -763 to make mbstate_t available. */ │ │ │ │ │ -764#ifndef _XOPEN_SOURCE │ │ │ │ │ -765/* # undef _XOPEN_SOURCE */ │ │ │ │ │ -766#endif │ │ │ │ │ -767 │ │ │ │ │ -768 │ │ │ │ │ -769/* Version number of package */ │ │ │ │ │ -770#define VERSION "1.5.5" │ │ │ │ │ -771 │ │ │ │ │ -772/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most │ │ │ │ │ -773 significant byte first (like Motorola and SPARC, unlike Intel). */ │ │ │ │ │ -774#if defined AC_APPLE_UNIVERSAL_BUILD │ │ │ │ │ -775# if defined __BIG_ENDIAN__ │ │ │ │ │ -776# define WORDS_BIGENDIAN 1 │ │ │ │ │ -777# endif │ │ │ │ │ -778#else │ │ │ │ │ -779# ifndef WORDS_BIGENDIAN │ │ │ │ │ -780/* # undef WORDS_BIGENDIAN */ │ │ │ │ │ -781# endif │ │ │ │ │ -782#endif │ │ │ │ │ -783 │ │ │ │ │ -784/* Number of bits in a file offset, on hosts where this is settable. */ │ │ │ │ │ -785/* #undef _FILE_OFFSET_BITS */ │ │ │ │ │ -786 │ │ │ │ │ -787/* Define to 1 if necessary to make fseeko visible. */ │ │ │ │ │ -788/* #undef _LARGEFILE_SOURCE */ │ │ │ │ │ -789 │ │ │ │ │ -790/* Define to 1 on platforms where this makes off_t a 64-bit type. */ │ │ │ │ │ -791/* #undef _LARGE_FILES */ │ │ │ │ │ -792 │ │ │ │ │ -793/* Number of bits in time_t, on hosts where this is settable. */ │ │ │ │ │ -794/* #undef _TIME_BITS */ │ │ │ │ │ -795 │ │ │ │ │ -796/* Define to 1 on platforms where this makes time_t a 64-bit type. */ │ │ │ │ │ -797/* #undef __MINGW_USE_VC2005_COMPAT */ │ │ │ │ │ -798 │ │ │ │ │ -799/* Define to empty if 'const' does not conform to ANSI C. */ │ │ │ │ │ -800/* #undef const */ │ │ │ │ │ -801 │ │ │ │ │ -802/* Define to '__inline__' or '__inline' if that's what the C compiler │ │ │ │ │ -803 calls it, or to nothing if 'inline' is not supported under any name. */ │ │ │ │ │ -804#ifndef __cplusplus │ │ │ │ │ -805/* #undef inline */ │ │ │ │ │ -806#endif │ │ │ │ │ -807 │ │ │ │ │ -808/* Define as 'unsigned int' if doesn't define. */ │ │ │ │ │ -809/* #undef size_t */ │ │ │ │ │ -810 │ │ │ │ │ -811/* type to use in place of socklen_t if not defined */ │ │ │ │ │ -812/* #undef socklen_t */ │ │ │ │ │ +203 │ │ │ │ │ +204#ifdef __cplusplus │ │ │ │ │ +205#if 0 │ │ │ │ │ +206{ │ │ │ │ │ +207#endif │ │ │ │ │ +208} │ │ │ │ │ +209#endif │ │ │ │ │ +210 │ │ │ │ │ +211#include │ │ │ │ │ +212 │ │ │ │ │ +213#endif │ │ │ │ │ +dbgetnull │ │ │ │ │ +RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr) │ │ │ │ │ +Definition dblib.c:537 │ │ │ │ │ +dbperror │ │ │ │ │ +int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...) │ │ │ │ │ +Call client-installed error handler. │ │ │ │ │ +Definition dblib.c:8172 │ │ │ │ │ +_dblib_check_and_handle_interrupt │ │ │ │ │ +int _dblib_check_and_handle_interrupt(void *vdbproc) │ │ │ │ │ +check interrupts for libtds. │ │ │ │ │ +Definition dbutil.c:192 │ │ │ │ │ +dblib_buffer_row │ │ │ │ │ +Definition buffering.h:1 │ │ │ │ │ +tds_dblib_loginrec │ │ │ │ │ +Definition dblib.h:44 │ │ │ │ │ +DBPROC_ROWBUF │ │ │ │ │ +Definition dblib.h:52 │ │ │ │ │ +BCP_HOSTCOLINFO │ │ │ │ │ +Definition dblib.h:62 │ │ │ │ │ +BCP_HOSTFILEINFO │ │ │ │ │ +Definition dblib.h:74 │ │ │ │ │ +DBREMOTE_PROC_PARAM │ │ │ │ │ +Definition dblib.h:89 │ │ │ │ │ +DBREMOTE_PROC │ │ │ │ │ +Definition dblib.h:101 │ │ │ │ │ +dboption │ │ │ │ │ +Definition dblib.h:110 │ │ │ │ │ +NULLREP │ │ │ │ │ +Definition dblib.h:117 │ │ │ │ │ +tds_dblib_dbprocess │ │ │ │ │ +Definition dblib.h:123 │ │ │ │ │ +tds_dblib_dbprocess::nullreps │ │ │ │ │ +NULLREP nullreps[MAXBINDTYPES] │ │ │ │ │ +default null values │ │ │ │ │ +Definition dblib.h:159 │ │ │ │ │ +tds_dblib_dbprocess::msdblib │ │ │ │ │ +int msdblib │ │ │ │ │ +boolean use ms behaviour │ │ │ │ │ +Definition dblib.h:154 │ │ │ │ │ +tds_login │ │ │ │ │ +Definition tds.h:498 │ │ │ │ │ +tds_message │ │ │ │ │ +Definition tds.h:861 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ +tds_bcpinfo │ │ │ │ │ +Definition tds.h:1684 │ │ │ │ │ +dbtypeinfo │ │ │ │ │ +Definition sybdb.h:337 │ │ │ │ │ +dbstring │ │ │ │ │ +Definition sybdb.h:343 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00374_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/cstypes.h Source File │ │ │ │ +FreeTDS API: include/sybdb.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,287 +74,1550 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
cstypes.h
│ │ │ │ +
sybdb.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _cstypes_h_
│ │ │ │ -
21#define _cstypes_h_
│ │ │ │ -
22
│ │ │ │ -
23#include "tds_sysdep_public.h"
│ │ │ │ -
24
│ │ │ │ -
25#ifdef __cplusplus
│ │ │ │ -
26extern "C"
│ │ │ │ -
27{
│ │ │ │ -
28#if 0
│ │ │ │ -
29}
│ │ │ │ -
30#endif
│ │ │ │ -
31#endif
│ │ │ │ +Go to the documentation of this file.
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
28#ifndef _sybdb_h_
│ │ │ │ +
29#define _sybdb_h_
│ │ │ │ +
30
│ │ │ │ +
31#include "tds_sysdep_public.h"
│ │ │ │
32
│ │ │ │ -
33typedef int32_t CS_INT;
│ │ │ │ -
34typedef uint32_t CS_UINT;
│ │ │ │ -
35typedef int64_t CS_BIGINT;
│ │ │ │ -
36typedef uint64_t CS_UBIGINT;
│ │ │ │ -
37typedef int16_t CS_SMALLINT;
│ │ │ │ -
38typedef uint16_t CS_USMALLINT;
│ │ │ │ -
39typedef unsigned char CS_TINYINT;
│ │ │ │ -
40typedef char CS_CHAR;
│ │ │ │ -
41typedef unsigned char CS_BYTE;
│ │ │ │ -
42typedef tds_sysdep_real32_type CS_REAL;
│ │ │ │ -
43typedef tds_sysdep_real64_type CS_FLOAT;
│ │ │ │ -
44typedef int32_t CS_BOOL;
│ │ │ │ -
45typedef void CS_VOID;
│ │ │ │ -
46typedef unsigned char CS_IMAGE;
│ │ │ │ -
47typedef unsigned char CS_TEXT;
│ │ │ │ -
48typedef unsigned char CS_LONGBINARY;
│ │ │ │ -
49typedef unsigned char CS_LONGCHAR;
│ │ │ │ -
50typedef long CS_LONG;
│ │ │ │ -
51typedef unsigned char CS_BINARY;
│ │ │ │ -
52typedef uint16_t CS_USHORT;
│ │ │ │ -
53typedef unsigned char CS_BIT;
│ │ │ │ -
54
│ │ │ │ -
55typedef CS_INT CS_RETCODE;
│ │ │ │ -
56
│ │ │ │ -
57#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
58#define CS_MAX_NAME 132
│ │ │ │ -
59#else
│ │ │ │ -
60#define CS_MAX_NAME 255
│ │ │ │ -
61#endif
│ │ │ │ -
62#define CS_MAX_CHAR 256
│ │ │ │ -
63#define CS_MAX_SCALE 77
│ │ │ │ -
64#define CS_MAX_PREC 77 /* used by php */
│ │ │ │ -
65#define CS_MAX_NUMLEN 33 /* used by roguewave */
│ │ │ │ -
66#define CS_MAX_MSG 1024
│ │ │ │ -
67#define CS_SQLSTATE_SIZE 8
│ │ │ │ -
68#define CS_OBJ_NAME 400
│ │ │ │ -
69#define CS_TP_SIZE 16 /* text pointer */
│ │ │ │ -
70#define CS_TS_SIZE 8 /* length of timestamp */
│ │ │ │ -
71
│ │ │ │ -
72
│ │ │ │ -
│ │ │ │ -
73typedef struct _cs_numeric
│ │ │ │ -
74{
│ │ │ │ -
75 unsigned char precision;
│ │ │ │ -
76 unsigned char scale;
│ │ │ │ -
77 unsigned char array[CS_MAX_NUMLEN];
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
33#undef TDS_STATIC_CAST
│ │ │ │ +
34#ifdef __cplusplus
│ │ │ │ +
35#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ +
36extern "C"
│ │ │ │ +
37{
│ │ │ │ +
38#if 0
│ │ │ │ +
39}
│ │ │ │ +
40#endif
│ │ │ │ +
41#else
│ │ │ │ +
42#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ +
43#endif
│ │ │ │ +
44
│ │ │ │ +
45#ifdef FALSE
│ │ │ │ +
46#undef FALSE
│ │ │ │ +
47#endif
│ │ │ │ +
48#ifdef TRUE
│ │ │ │ +
49#undef TRUE
│ │ │ │ +
50#endif
│ │ │ │ +
51#define FALSE 0
│ │ │ │ +
52#define TRUE 1
│ │ │ │ +
53
│ │ │ │ +
54#define DBSAVE 1
│ │ │ │ +
55#define DBNOSAVE 0
│ │ │ │ +
56#define DBNOERR -1
│ │ │ │ +
57
│ │ │ │ +
58#define INT_EXIT 0
│ │ │ │ +
59#define INT_CONTINUE 1
│ │ │ │ +
60#define INT_CANCEL 2
│ │ │ │ +
61#define INT_TIMEOUT 3
│ │ │ │ +
62
│ │ │ │ +
63#define DBMAXNUMLEN 33
│ │ │ │ +
64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */
│ │ │ │ +
65#define DBMAXNAME 128
│ │ │ │ +
66
│ │ │ │ +
70#define DBVERSION_UNKNOWN 0
│ │ │ │ +
71#define DBVERSION_46 1
│ │ │ │ +
72#define DBVERSION_100 2
│ │ │ │ +
73#define DBVERSION_42 3
│ │ │ │ +
74#define DBVERSION_70 4
│ │ │ │ +
75#define DBVERSION_71 5
│ │ │ │ +
76#define DBVERSION_72 6
│ │ │ │ +
77#define DBVERSION_73 7
│ │ │ │ +
78#define DBVERSION_74 8
│ │ │ │
79
│ │ │ │ - │ │ │ │ -
81
│ │ │ │ -
│ │ │ │ -
82typedef struct _cs_varbinary
│ │ │ │ -
83{
│ │ │ │ -
84 CS_SMALLINT len;
│ │ │ │ -
85 CS_CHAR array[256];
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
87
│ │ │ │ -
│ │ │ │ -
88typedef struct _cs_varchar
│ │ │ │ -
89{
│ │ │ │ -
90 CS_SMALLINT len; /* length of the string */
│ │ │ │ -
91 CS_CHAR str[256]; /* string, no NULL terminator */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
93
│ │ │ │ -
94typedef struct _cs_config CS_CONFIG;
│ │ │ │ -
95typedef struct _cs_context CS_CONTEXT;
│ │ │ │ -
96typedef struct _cs_connection CS_CONNECTION;
│ │ │ │ -
97typedef struct _cs_locale CS_LOCALE;
│ │ │ │ -
98typedef struct _cs_command CS_COMMAND;
│ │ │ │ -
99typedef struct _cs_blk_row CS_BLK_ROW;
│ │ │ │ -
100
│ │ │ │ -
│ │ │ │ -
101typedef struct _cs_iodesc
│ │ │ │ -
102{
│ │ │ │ -
103 CS_INT iotype;
│ │ │ │ -
104 CS_INT datatype;
│ │ │ │ -
105 CS_LOCALE *locale;
│ │ │ │ -
106 CS_INT usertype;
│ │ │ │ -
107 CS_INT total_txtlen;
│ │ │ │ -
108 CS_INT offset;
│ │ │ │ -
109 CS_BOOL log_on_update;
│ │ │ │ -
110 CS_CHAR name[CS_OBJ_NAME];
│ │ │ │ -
111 CS_INT namelen;
│ │ │ │ -
112 CS_BYTE timestamp[CS_TS_SIZE];
│ │ │ │ -
113 CS_INT timestamplen;
│ │ │ │ -
114 CS_BYTE textptr[CS_TP_SIZE];
│ │ │ │ -
115 CS_INT textptrlen;
│ │ │ │ -
116} CS_IODESC;
│ │ │ │ -
│ │ │ │ -
117
│ │ │ │ -
│ │ │ │ -
118typedef struct _cs_datafmt
│ │ │ │ -
119{
│ │ │ │ -
120#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
121 CS_CHAR name[CS_MAX_NAME];
│ │ │ │ -
122#else
│ │ │ │ -
123 CS_CHAR name[CS_MAX_CHAR];
│ │ │ │ -
124#endif
│ │ │ │ -
125 CS_INT namelen;
│ │ │ │ -
126 CS_INT datatype;
│ │ │ │ -
127 CS_INT format;
│ │ │ │ -
128 CS_INT maxlength;
│ │ │ │ -
129 CS_INT scale;
│ │ │ │ -
130 CS_INT precision;
│ │ │ │ -
131 CS_INT status;
│ │ │ │ -
132 CS_INT count;
│ │ │ │ -
133 CS_INT usertype;
│ │ │ │ -
134 CS_LOCALE *locale;
│ │ │ │ -
135} CS_DATAFMT;
│ │ │ │ -
│ │ │ │ -
136
│ │ │ │ -
│ │ │ │ -
137typedef struct _cs_money
│ │ │ │ -
138{
│ │ │ │ -
139 CS_INT mnyhigh;
│ │ │ │ -
140 CS_UINT mnylow;
│ │ │ │ -
141} CS_MONEY;
│ │ │ │ -
│ │ │ │ -
142
│ │ │ │ -
│ │ │ │ -
143typedef struct _cs_money4
│ │ │ │ -
144{
│ │ │ │ -
145 CS_INT mny4;
│ │ │ │ -
146} CS_MONEY4;
│ │ │ │ -
│ │ │ │ -
147
│ │ │ │ -
148typedef CS_INT CS_DATE;
│ │ │ │ -
149
│ │ │ │ -
150typedef CS_INT CS_TIME;
│ │ │ │ -
151
│ │ │ │ -
152typedef CS_UBIGINT CS_BIGDATETIME;
│ │ │ │ -
153typedef CS_UBIGINT CS_BIGTIME;
│ │ │ │ -
154
│ │ │ │ -
│ │ │ │ -
155typedef struct _cs_datetime
│ │ │ │ -
156{
│ │ │ │ -
157 CS_INT dtdays;
│ │ │ │ -
158 CS_INT dttime;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
160
│ │ │ │ -
│ │ │ │ -
161typedef struct _cs_datetime4
│ │ │ │ -
162{
│ │ │ │ -
163 CS_USHORT days;
│ │ │ │ -
164 CS_USHORT minutes;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
166
│ │ │ │ -
│ │ │ │ -
167typedef struct _cs_daterec
│ │ │ │ -
168{
│ │ │ │ -
169 CS_INT dateyear;
│ │ │ │ -
170 CS_INT datemonth;
│ │ │ │ -
171 CS_INT datedmonth;
│ │ │ │ -
172 CS_INT datedyear;
│ │ │ │ -
173 CS_INT datedweek;
│ │ │ │ -
174 CS_INT datehour;
│ │ │ │ -
175 CS_INT dateminute;
│ │ │ │ -
176 CS_INT datesecond;
│ │ │ │ -
177 CS_INT datemsecond;
│ │ │ │ -
178 CS_INT datetzone;
│ │ │ │ -
179 CS_INT datesecfrac;
│ │ │ │ -
180 CS_INT datesecprec;
│ │ │ │ -
181} CS_DATEREC;
│ │ │ │ -
│ │ │ │ -
182
│ │ │ │ -
183typedef CS_INT CS_MSGNUM;
│ │ │ │ -
184
│ │ │ │ -
│ │ │ │ -
185typedef struct _cs_clientmsg
│ │ │ │ -
186{
│ │ │ │ -
187 CS_INT severity;
│ │ │ │ -
188 CS_MSGNUM msgnumber;
│ │ │ │ -
189 CS_CHAR msgstring[CS_MAX_MSG];
│ │ │ │ -
190 CS_INT msgstringlen;
│ │ │ │ -
191 CS_INT osnumber;
│ │ │ │ -
192 CS_CHAR osstring[CS_MAX_MSG];
│ │ │ │ -
193 CS_INT osstringlen;
│ │ │ │ -
194 CS_INT status;
│ │ │ │ -
195 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
│ │ │ │ -
196 CS_INT sqlstatelen;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
198
│ │ │ │ -
│ │ │ │ -
199typedef struct _cs_servermsg
│ │ │ │ -
200{
│ │ │ │ -
201 CS_MSGNUM msgnumber;
│ │ │ │ -
202 CS_INT state;
│ │ │ │ -
203 CS_INT severity;
│ │ │ │ -
204 CS_CHAR text[CS_MAX_MSG];
│ │ │ │ -
205 CS_INT textlen;
│ │ │ │ -
206#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
207 CS_CHAR svrname[CS_MAX_NAME];
│ │ │ │ -
208 CS_INT svrnlen;
│ │ │ │ -
209 CS_CHAR proc[CS_MAX_NAME];
│ │ │ │ -
210#else
│ │ │ │ -
211 CS_CHAR svrname[CS_MAX_CHAR];
│ │ │ │ -
212 CS_INT svrnlen;
│ │ │ │ -
213 CS_CHAR proc[CS_MAX_CHAR];
│ │ │ │ -
214#endif
│ │ │ │ -
215 CS_INT proclen;
│ │ │ │ -
216 CS_INT line;
│ │ │ │ -
217 CS_INT status;
│ │ │ │ -
218 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
│ │ │ │ -
219 CS_INT sqlstatelen;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
221
│ │ │ │ -
222#ifdef __cplusplus
│ │ │ │ -
223#if 0
│ │ │ │ -
224{
│ │ │ │ -
225#endif
│ │ │ │ -
226}
│ │ │ │ -
227#endif
│ │ │ │ -
228
│ │ │ │ -
229#endif
│ │ │ │ -
Definition cstypes.h:74
│ │ │ │ -
Definition cstypes.h:83
│ │ │ │ -
Definition cstypes.h:89
│ │ │ │ -
Definition cstypes.h:102
│ │ │ │ -
Definition cstypes.h:119
│ │ │ │ -
Definition cstypes.h:138
│ │ │ │ -
Definition cstypes.h:144
│ │ │ │ -
Definition cstypes.h:156
│ │ │ │ -
Definition cstypes.h:162
│ │ │ │ -
Definition cstypes.h:168
│ │ │ │ -
Definition cstypes.h:186
│ │ │ │ -
Definition cstypes.h:200
│ │ │ │ -
Definition ctlib.h:49
│ │ │ │ -
Definition ctlib.h:135
│ │ │ │ -
Definition ctlib.h:188
│ │ │ │ -
Definition ctlib.h:284
│ │ │ │ -
Definition ctlib.h:320
│ │ │ │ +
80/* these two are defined by Microsoft for dbsetlversion() */
│ │ │ │ +
81#define DBVER42 DBVERSION_42
│ │ │ │ +
82#define DBVER60 DBVERSION_70 /* our best approximation */
│ │ │ │ +
83
│ │ │ │ +
88#define DBTDS_UNKNOWN 0
│ │ │ │ +
89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */
│ │ │ │ +
90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */
│ │ │ │ +
91#define DBTDS_4_0 3 /* 4.0 SQL Server */
│ │ │ │ +
92#define DBTDS_4_2 4 /* 4.2 SQL Server */
│ │ │ │ +
93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */
│ │ │ │ +
94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */
│ │ │ │ +
95#define DBTDS_5_0 7 /* 5.0 SQL Server */
│ │ │ │ +
96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */
│ │ │ │ +
97#define DBTDS_8_0 ("Use DBTDS_7_1 instead"*x) /* Microsoft SQL Server 2000 */
│ │ │ │ +
98#define DBTDS_9_0 ("Use DBTDS_7_2 instead"*x) /* Microsoft SQL Server 2005 */
│ │ │ │ +
99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */
│ │ │ │ +
100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */
│ │ │ │ +
101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */
│ │ │ │ +
102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */
│ │ │ │ +
103#define DBTDS_8_0_ 13 /* Microsoft SQL Server 2022 */
│ │ │ │ +
104
│ │ │ │ +
105#define DBTXPLEN 16
│ │ │ │ +
106
│ │ │ │ +
107#define BCPMAXERRS 1
│ │ │ │ +
108#define BCPFIRST 2
│ │ │ │ +
109#define BCPLAST 3
│ │ │ │ +
110#define BCPBATCH 4
│ │ │ │ +
111#define BCPKEEPIDENTITY 8
│ │ │ │ +
112
│ │ │ │ +
113#define BCPLABELED 5
│ │ │ │ +
114#define BCPHINTS 6
│ │ │ │ +
115
│ │ │ │ +
116#define DBCMDNONE 0
│ │ │ │ +
117#define DBCMDPEND 1
│ │ │ │ +
118#define DBCMDSENT 2
│ │ │ │ +
119
│ │ │ │ +
120typedef int RETCODE;
│ │ │ │ +
121
│ │ │ │ +
122typedef void DBCURSOR;
│ │ │ │ +
123typedef void DBXLATE;
│ │ │ │ +
124typedef void DBSORTORDER;
│ │ │ │ +
125typedef void DBLOGINFO;
│ │ │ │ +
126typedef void *DBVOIDPTR;
│ │ │ │ +
127typedef short SHORT;
│ │ │ │ +
128typedef unsigned short USHORT;
│ │ │ │ +
129typedef int (*INTFUNCPTR) (void *, ...);
│ │ │ │ +
130typedef int (*DBWAITFUNC) (void);
│ │ │ │ +
131typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);
│ │ │ │ +
132typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);
│ │ │ │ +
133typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);
│ │ │ │ +
134typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);
│ │ │ │ +
135
│ │ │ │ +
136#ifndef __INCvxWorksh
│ │ │ │ +
137/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you
│ │ │ │ +
138** redefine them. */
│ │ │ │ +
139/* __INCvxWorksh will get #defined by std. include files included from tds.h
│ │ │ │ +
140*/
│ │ │ │ +
141#ifdef STATUS
│ │ │ │ +
142/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h
│ │ │ │ +
143 when _REENTRANT is defined.
│ │ │ │ +
144*/
│ │ │ │ +
145#undef STATUS
│ │ │ │ +
146#endif
│ │ │ │ +
147typedef int STATUS;
│ │ │ │ +
148#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)
│ │ │ │ +
149typedef int BOOL;
│ │ │ │ +
150#endif
│ │ │ │ +
151#endif
│ │ │ │ +
152
│ │ │ │ +
153#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +
154/* copied from tds.h */
│ │ │ │ +
155/* TODO find a best way... */
│ │ │ │ +
156enum
│ │ │ │ +
157{
│ │ │ │ +
158 SYBCHAR = 47, /* 0x2F */
│ │ │ │ +
159#define SYBCHAR SYBCHAR
│ │ │ │ +
160 SYBVARCHAR = 39, /* 0x27 */
│ │ │ │ +
161#define SYBVARCHAR SYBVARCHAR
│ │ │ │ +
162 SYBINTN = 38, /* 0x26 */
│ │ │ │ +
163#define SYBINTN SYBINTN
│ │ │ │ +
164 SYBINT1 = 48, /* 0x30 */
│ │ │ │ +
165#define SYBINT1 SYBINT1
│ │ │ │ +
166 SYBINT2 = 52, /* 0x34 */
│ │ │ │ +
167#define SYBINT2 SYBINT2
│ │ │ │ +
168 SYBINT4 = 56, /* 0x38 */
│ │ │ │ +
169#define SYBINT4 SYBINT4
│ │ │ │ +
170 SYBINT8 = 127, /* 0x7F */
│ │ │ │ +
171#define SYBINT8 SYBINT8
│ │ │ │ +
172 SYBFLT8 = 62, /* 0x3E */
│ │ │ │ +
173#define SYBFLT8 SYBFLT8
│ │ │ │ +
174 SYBDATETIME = 61, /* 0x3D */
│ │ │ │ +
175#define SYBDATETIME SYBDATETIME
│ │ │ │ +
176 SYBBIT = 50, /* 0x32 */
│ │ │ │ +
177#define SYBBIT SYBBIT
│ │ │ │ +
178 SYBBITN = 104, /* 0x68 */
│ │ │ │ +
179#define SYBBITN SYBBITN
│ │ │ │ +
180 SYBTEXT = 35, /* 0x23 */
│ │ │ │ +
181#define SYBTEXT SYBTEXT
│ │ │ │ +
182 SYBNTEXT = 99, /* 0x63 */
│ │ │ │ +
183#define SYBNTEXT SYBNTEXT
│ │ │ │ +
184 SYBIMAGE = 34, /* 0x22 */
│ │ │ │ +
185#define SYBIMAGE SYBIMAGE
│ │ │ │ +
186 SYBMONEY4 = 122, /* 0x7A */
│ │ │ │ +
187#define SYBMONEY4 SYBMONEY4
│ │ │ │ +
188 SYBMONEY = 60, /* 0x3C */
│ │ │ │ +
189#define SYBMONEY SYBMONEY
│ │ │ │ +
190 SYBDATETIME4 = 58, /* 0x3A */
│ │ │ │ +
191#define SYBDATETIME4 SYBDATETIME4
│ │ │ │ +
192 SYBREAL = 59, /* 0x3B */
│ │ │ │ +
193#define SYBREAL SYBREAL
│ │ │ │ +
194 SYBBINARY = 45, /* 0x2D */
│ │ │ │ +
195#define SYBBINARY SYBBINARY
│ │ │ │ +
196 SYBVOID = 31, /* 0x1F */
│ │ │ │ +
197#define SYBVOID SYBVOID
│ │ │ │ +
198 SYBVARBINARY = 37, /* 0x25 */
│ │ │ │ +
199#define SYBVARBINARY SYBVARBINARY
│ │ │ │ +
200 SYBNUMERIC = 108, /* 0x6C */
│ │ │ │ +
201#define SYBNUMERIC SYBNUMERIC
│ │ │ │ +
202 SYBDECIMAL = 106, /* 0x6A */
│ │ │ │ +
203#define SYBDECIMAL SYBDECIMAL
│ │ │ │ +
204 SYBFLTN = 109, /* 0x6D */
│ │ │ │ +
205#define SYBFLTN SYBFLTN
│ │ │ │ +
206 SYBMONEYN = 110, /* 0x6E */
│ │ │ │ +
207#define SYBMONEYN SYBMONEYN
│ │ │ │ +
208 SYBDATETIMN = 111, /* 0x6F */
│ │ │ │ +
209#define SYBDATETIMN SYBDATETIMN
│ │ │ │ +
210 SYBNVARCHAR = 103, /* 0x67 */
│ │ │ │ +
211#define SYBNVARCHAR SYBNVARCHAR
│ │ │ │ +
212 SYBDATE = 49, /* 0x31 */
│ │ │ │ +
213#define SYBDATE SYBDATE
│ │ │ │ +
214 SYBTIME = 51, /* 0x33 */
│ │ │ │ +
215#define SYBTIME SYBTIME
│ │ │ │ +
216 SYBBIGDATETIME = 187, /* 0xBB */
│ │ │ │ +
217#define SYBBIGDATETIME SYBBIGDATETIME
│ │ │ │ +
218 SYBBIGTIME = 188, /* 0xBC */
│ │ │ │ +
219#define SYBBIGTIME SYBBIGTIME
│ │ │ │ +
220 SYBMSDATE = 40, /* 0x28 */
│ │ │ │ +
221#define SYBMSDATE SYBMSDATE
│ │ │ │ +
222 SYBMSTIME = 41, /* 0x29 */
│ │ │ │ +
223#define SYBMSTIME SYBMSTIME
│ │ │ │ +
224 SYBMSDATETIME2 = 42, /* 0x2A */
│ │ │ │ +
225#define SYBMSDATETIME2 SYBMSDATETIME2
│ │ │ │ +
226 SYBMSDATETIMEOFFSET = 43, /* 0x2B */
│ │ │ │ +
227#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET
│ │ │ │ +
228};
│ │ │ │ +
229
│ │ │ │ +
230#define SYBAOPCNT 0x4b
│ │ │ │ +
231#define SYBAOPCNTU 0x4c
│ │ │ │ +
232#define SYBAOPSUM 0x4d
│ │ │ │ +
233#define SYBAOPSUMU 0x4e
│ │ │ │ +
234#define SYBAOPAVG 0x4f
│ │ │ │ +
235#define SYBAOPAVGU 0x50
│ │ │ │ +
236#define SYBAOPMIN 0x51
│ │ │ │ +
237#define SYBAOPMAX 0x52
│ │ │ │ +
238
│ │ │ │ +
239/* mssql2k compute operator */
│ │ │ │ +
240#define SYBAOPCNT_BIG 0x09
│ │ │ │ +
241#define SYBAOPSTDEV 0x30
│ │ │ │ +
242#define SYBAOPSTDEVP 0x31
│ │ │ │ +
243#define SYBAOPVAR 0x32
│ │ │ │ +
244#define SYBAOPVARP 0x33
│ │ │ │ +
245#define SYBAOPCHECKSUM_AGG 0x72
│ │ │ │ +
246
│ │ │ │ +
247#endif
│ │ │ │ +
248
│ │ │ │ +
249typedef unsigned char DBBOOL;
│ │ │ │ +
250typedef char DBCHAR;
│ │ │ │ +
251typedef unsigned char DBBIT;
│ │ │ │ +
252typedef unsigned char DBTINYINT;
│ │ │ │ +
253typedef int16_t DBSMALLINT;
│ │ │ │ +
254typedef int32_t DBINT;
│ │ │ │ +
255typedef int64_t DBBIGINT;
│ │ │ │ +
256typedef unsigned char DBBINARY;
│ │ │ │ +
257typedef tds_sysdep_real32_type DBREAL;
│ │ │ │ +
258typedef tds_sysdep_real64_type DBFLT8;
│ │ │ │ +
259typedef uint16_t DBUSMALLINT;
│ │ │ │ +
260typedef uint32_t DBUINT;
│ │ │ │ +
261typedef uint64_t DBUBIGINT;
│ │ │ │ +
262
│ │ │ │ +
│ │ │ │ +
263typedef struct
│ │ │ │ +
264{
│ │ │ │ +
265 DBSMALLINT len;
│ │ │ │ +
266 char str[256];
│ │ │ │ +
267} DBVARYCHAR;
│ │ │ │ +
│ │ │ │ +
268
│ │ │ │ +
│ │ │ │ +
269typedef struct
│ │ │ │ +
270{
│ │ │ │ +
271 DBSMALLINT len;
│ │ │ │ +
272 unsigned char array[256];
│ │ │ │ +
273} DBVARYBIN;
│ │ │ │ +
│ │ │ │ +
274
│ │ │ │ +
│ │ │ │ +
275typedef struct
│ │ │ │ +
276{
│ │ │ │ +
277 unsigned char precision;
│ │ │ │ +
278 unsigned char scale;
│ │ │ │ +
279 unsigned char array[33];
│ │ │ │ +
280} DBNUMERIC;
│ │ │ │ +
│ │ │ │ +
281
│ │ │ │ +
282typedef DBNUMERIC DBDECIMAL;
│ │ │ │ +
283
│ │ │ │ +
│ │ │ │ +
284typedef struct
│ │ │ │ +
285{
│ │ │ │ +
286 DBINT mnyhigh;
│ │ │ │ +
287 DBUINT mnylow;
│ │ │ │ +
288} DBMONEY;
│ │ │ │ +
│ │ │ │ +
289
│ │ │ │ +
│ │ │ │ +
290typedef struct
│ │ │ │ +
291{
│ │ │ │ +
292 DBINT mny4;
│ │ │ │ +
293} DBMONEY4;
│ │ │ │ +
│ │ │ │ +
294
│ │ │ │ +
│ │ │ │ +
295typedef struct
│ │ │ │ +
296{
│ │ │ │ +
297 DBINT dtdays;
│ │ │ │ +
298 DBINT dttime;
│ │ │ │ +
299} DBDATETIME;
│ │ │ │ +
│ │ │ │ +
300
│ │ │ │ +
│ │ │ │ +
301typedef struct
│ │ │ │ +
302{
│ │ │ │ +
303 DBUSMALLINT days; /* days since Jan-1-1900 */
│ │ │ │ +
304 DBUSMALLINT minutes; /* minutes since midnight */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
306
│ │ │ │ +
│ │ │ │ +
307typedef struct
│ │ │ │ +
308{
│ │ │ │ +
309 DBUBIGINT time;
│ │ │ │ +
310 DBINT date;
│ │ │ │ +
311 DBSMALLINT offset;
│ │ │ │ +
312 DBUSMALLINT time_prec:3;
│ │ │ │ +
313/* fix a problem with some public headers defining _res */
│ │ │ │ +
314#undef _res
│ │ │ │ +
315 DBUSMALLINT _res:10;
│ │ │ │ +
316 DBUSMALLINT has_time:1;
│ │ │ │ +
317 DBUSMALLINT has_date:1;
│ │ │ │ +
318 DBUSMALLINT has_offset:1;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
320
│ │ │ │ +
321#ifdef MSDBLIB
│ │ │ │ +
322# define SQLCHAR SYBCHAR
│ │ │ │ +
323 typedef struct
│ │ │ │ +
324 {
│ │ │ │ +
325 DBUSMALLINT numdays;
│ │ │ │ +
326 DBUSMALLINT nummins;
│ │ │ │ +
327 } DBDATETIM4;
│ │ │ │ +
328#endif
│ │ │ │ +
329
│ │ │ │ +
330typedef struct tds_dblib_loginrec LOGINREC;
│ │ │ │ +
331
│ │ │ │ +
332#ifndef DOS32X
│ │ │ │ +
333typedef unsigned char BYTE;
│ │ │ │ +
334#endif
│ │ │ │ +
335
│ │ │ │ +
│ │ │ │ +
336typedef struct dbtypeinfo
│ │ │ │ +
337{
│ │ │ │ +
338 DBINT precision;
│ │ │ │ +
339 DBINT scale;
│ │ │ │ +
340} DBTYPEINFO;
│ │ │ │ +
│ │ │ │ +
341
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
343{
│ │ │ │ +
344 BYTE *strtext;
│ │ │ │ +
345 DBINT strtotlen;
│ │ │ │ +
346 struct dbstring *strnext;
│ │ │ │ +
347};
│ │ │ │ +
│ │ │ │ +
348typedef struct dbstring DBSTRING;
│ │ │ │ +
349
│ │ │ │ +
350/* Used by dbcolinfo */
│ │ │ │ +
351enum
│ │ │ │ +
352{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */
│ │ │ │ +
353typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;
│ │ │ │ +
354
│ │ │ │ +
│ │ │ │ +
355typedef struct
│ │ │ │ +
356{
│ │ │ │ +
357 DBINT SizeOfStruct;
│ │ │ │ +
358 DBCHAR Name[MAXCOLNAMELEN+2];
│ │ │ │ +
359 DBCHAR ActualName[MAXCOLNAMELEN+2];
│ │ │ │ +
360 DBCHAR TableName[MAXCOLNAMELEN+2];
│ │ │ │ +
361 SHORT Type;
│ │ │ │ +
362 DBINT UserType;
│ │ │ │ +
363 DBINT MaxLength;
│ │ │ │ +
364 BYTE Precision;
│ │ │ │ +
365 BYTE Scale;
│ │ │ │ +
366 BOOL VarLength;
│ │ │ │ +
367 BYTE Null;
│ │ │ │ +
368 BYTE CaseSensitive;
│ │ │ │ +
369 BYTE Updatable;
│ │ │ │ +
370 BOOL Identity;
│ │ │ │ +
371
│ │ │ │ +
372} DBCOL;
│ │ │ │ +
│ │ │ │ +
373
│ │ │ │ +
│ │ │ │ +
374typedef struct
│ │ │ │ +
375{
│ │ │ │ +
376 DBINT SizeOfStruct;
│ │ │ │ +
377 DBCHAR Name[MAXCOLNAMELEN+2];
│ │ │ │ +
378 DBCHAR ActualName[MAXCOLNAMELEN+2];
│ │ │ │ +
379 DBCHAR TableName[MAXCOLNAMELEN+2];
│ │ │ │ +
380 SHORT Type;
│ │ │ │ +
381 DBINT UserType;
│ │ │ │ +
382 DBINT MaxLength;
│ │ │ │ +
383 BYTE Precision;
│ │ │ │ +
384 BYTE Scale;
│ │ │ │ +
385 BOOL VarLength;
│ │ │ │ +
386 BYTE Null;
│ │ │ │ +
387 BYTE CaseSensitive;
│ │ │ │ +
388 BYTE Updatable;
│ │ │ │ +
389 BOOL Identity;
│ │ │ │ +
390 SHORT ServerType;
│ │ │ │ +
391 DBINT ServerMaxLength;
│ │ │ │ +
392 DBCHAR ServerTypeDeclaration[256];
│ │ │ │ +
393} DBCOL2;
│ │ │ │ +
│ │ │ │ +
394/* end dbcolinfo stuff */
│ │ │ │ +
395
│ │ │ │ +
396
│ │ │ │ +
397
│ │ │ │ +
398/* a large list of options, DBTEXTSIZE is needed by sybtcl */
│ │ │ │ +
399#define DBPARSEONLY 0
│ │ │ │ +
400#define DBESTIMATE 1
│ │ │ │ +
401#define DBSHOWPLAN 2
│ │ │ │ +
402#define DBNOEXEC 3
│ │ │ │ +
403#define DBARITHIGNORE 4
│ │ │ │ +
404#define DBNOCOUNT 5
│ │ │ │ +
405#define DBARITHABORT 6
│ │ │ │ +
406#define DBTEXTLIMIT 7
│ │ │ │ +
407#define DBBROWSE 8
│ │ │ │ +
408#define DBOFFSET 9
│ │ │ │ +
409#define DBSTAT 10
│ │ │ │ +
410#define DBERRLVL 11
│ │ │ │ +
411#define DBCONFIRM 12
│ │ │ │ +
412#define DBSTORPROCID 13
│ │ │ │ +
413#define DBBUFFER 14
│ │ │ │ +
414#define DBNOAUTOFREE 15
│ │ │ │ +
415#define DBROWCOUNT 16
│ │ │ │ +
416#define DBTEXTSIZE 17
│ │ │ │ +
417#define DBNATLANG 18
│ │ │ │ +
418#define DBDATEFORMAT 19
│ │ │ │ +
419#define DBPRPAD 20
│ │ │ │ +
420#define DBPRCOLSEP 21
│ │ │ │ +
421#define DBPRLINELEN 22
│ │ │ │ +
422#define DBPRLINESEP 23
│ │ │ │ +
423#define DBLFCONVERT 24
│ │ │ │ +
424#define DBDATEFIRST 25
│ │ │ │ +
425#define DBCHAINXACTS 26
│ │ │ │ +
426#define DBFIPSFLAG 27
│ │ │ │ +
427#define DBISOLATION 28
│ │ │ │ +
428#define DBAUTH 29
│ │ │ │ +
429#define DBIDENTITY 30
│ │ │ │ +
430#define DBNOIDCOL 31
│ │ │ │ +
431#define DBDATESHORT 32
│ │ │ │ +
432#define DBCLIENTCURSORS 33
│ │ │ │ +
433#define DBSETTIME 34
│ │ │ │ +
434#define DBQUOTEDIDENT 35
│ │ │ │ +
435
│ │ │ │ +
436#define DBNUMOPTIONS 36
│ │ │ │ +
437
│ │ │ │ +
438#define DBPADOFF 0
│ │ │ │ +
439#define DBPADON 1
│ │ │ │ +
440
│ │ │ │ +
441#define OFF 0
│ │ │ │ +
442#define ON 1
│ │ │ │ +
443
│ │ │ │ +
444#define NOSUCHOPTION 2
│ │ │ │ +
445
│ │ │ │ +
446#define MAXOPTTEXT 32
│ │ │ │ +
447
│ │ │ │ +
448typedef struct tds_dblib_dbprocess DBPROCESS;
│ │ │ │ +
449
│ │ │ │ +
450/*
│ │ │ │ +
451 * Sybase & Microsoft use different names for the dbdaterec members.
│ │ │ │ +
452 * Keep these two structures physically identical in memory.
│ │ │ │ +
453 * dbdatecrack() casts one to the other for ease of implementation.
│ │ │ │ +
454 *
│ │ │ │ +
455 * Giving credit where credit is due, we can acknowledge that
│ │ │ │ +
456 * Microsoft chose the better names here, hands down. ("datedmonth"?!)
│ │ │ │ +
457 */
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
459{
│ │ │ │ +
460 DBINT year; /* 1753 - 9999 */
│ │ │ │ +
461 DBINT quarter; /* 1 - 4 */
│ │ │ │ +
462 DBINT month; /* 1 - 12 */
│ │ │ │ +
463 DBINT day; /* 1 - 31 */
│ │ │ │ +
464 DBINT dayofyear; /* 1 - 366 */
│ │ │ │ +
465 DBINT week; /* 1 - 54 (for leap years) */
│ │ │ │ +
466 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
│ │ │ │ +
467 DBINT hour; /* 0 - 23 */
│ │ │ │ +
468 DBINT minute; /* 0 - 59 */
│ │ │ │ +
469 DBINT second; /* 0 - 59 */
│ │ │ │ +
470 DBINT millisecond; /* 0 - 999 */
│ │ │ │ +
471 DBINT tzone; /* -840 - 840 */
│ │ │ │ +
472};
│ │ │ │ +
│ │ │ │ +
473
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
475{
│ │ │ │ +
476 DBINT dateyear; /* 1900 and counting */
│ │ │ │ +
477 DBINT quarter; /* 0 - 3 (Microsoft only) */
│ │ │ │ +
478 DBINT datemonth; /* 0 - 11 */
│ │ │ │ +
479 DBINT datedmonth; /* 1 - 31 */
│ │ │ │ +
480 DBINT datedyear; /* 1 - 366 */
│ │ │ │ +
481 DBINT week; /* 1 - 54 (Microsoft only) */
│ │ │ │ +
482 DBINT datedweek; /* 0 - 6 */
│ │ │ │ +
483 DBINT datehour; /* 0 - 23 */
│ │ │ │ +
484 DBINT dateminute; /* 0 - 59 */
│ │ │ │ +
485 DBINT datesecond; /* 0 - 59 */
│ │ │ │ +
486 DBINT datemsecond; /* 0 - 999 */
│ │ │ │ +
487 DBINT datetzone; /* -840 - 840 */
│ │ │ │ +
488};
│ │ │ │ +
│ │ │ │ +
489
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
491{
│ │ │ │ +
492 DBINT year; /* 1753 - 9999 */
│ │ │ │ +
493 DBINT quarter; /* 1 - 4 */
│ │ │ │ +
494 DBINT month; /* 1 - 12 */
│ │ │ │ +
495 DBINT day; /* 1 - 31 */
│ │ │ │ +
496 DBINT dayofyear; /* 1 - 366 */
│ │ │ │ +
497 DBINT week; /* 1 - 54 (for leap years) */
│ │ │ │ +
498 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
│ │ │ │ +
499 DBINT hour; /* 0 - 23 */
│ │ │ │ +
500 DBINT minute; /* 0 - 59 */
│ │ │ │ +
501 DBINT second; /* 0 - 59 */
│ │ │ │ +
502 DBINT nanosecond; /* 0 - 999999999 */
│ │ │ │ +
503 DBINT tzone; /* 0 - 127 (Sybase only) */
│ │ │ │ +
504};
│ │ │ │ +
│ │ │ │ +
505
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
507{
│ │ │ │ +
508 DBINT dateyear; /* 1900 and counting */
│ │ │ │ +
509 DBINT quarter; /* 0 - 3 (Microsoft only) */
│ │ │ │ +
510 DBINT datemonth; /* 0 - 11 */
│ │ │ │ +
511 DBINT datedmonth; /* 1 - 31 */
│ │ │ │ +
512 DBINT datedyear; /* 1 - 366 */
│ │ │ │ +
513 DBINT week; /* 1 - 54 (Microsoft only) */
│ │ │ │ +
514 DBINT datedweek; /* 0 - 6 */
│ │ │ │ +
515 DBINT datehour; /* 0 - 23 */
│ │ │ │ +
516 DBINT dateminute; /* 0 - 59 */
│ │ │ │ +
517 DBINT datesecond; /* 0 - 59 */
│ │ │ │ +
518 DBINT datensecond; /* 0 - 999999999 */
│ │ │ │ +
519 DBINT datetzone; /* 0 - 127 */
│ │ │ │ +
520};
│ │ │ │ +
│ │ │ │ +
521
│ │ │ │ +
522
│ │ │ │ +
523#ifdef MSDBLIB
│ │ │ │ + │ │ │ │ + │ │ │ │ +
526#else
│ │ │ │ +
527typedef struct tds_sybase_dbdaterec DBDATEREC;
│ │ │ │ +
528typedef struct tds_sybase_dbdaterec2 DBDATEREC2;
│ │ │ │ +
529#endif
│ │ │ │ +
530
│ │ │ │ +
531typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
│ │ │ │ +
532
│ │ │ │ +
533typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname,
│ │ │ │ +
534 char *proc, int line);
│ │ │ │ +
535
│ │ │ │ +
536/* dbpoll() result codes, sybtcl needs DBRESULT */
│ │ │ │ +
537#define DBRESULT 1
│ │ │ │ +
538#define DBNOTIFICATION 2
│ │ │ │ +
539#define DBTIMEOUT 3
│ │ │ │ +
540#define DBINTERRUPT 4
│ │ │ │ +
541
│ │ │ │ +
542/* more sybtcl needs: */
│ │ │ │ +
543#define DBTXTSLEN 8
│ │ │ │ +
544
│ │ │ │ +
545/* bind types */
│ │ │ │ +
546#define CHARBIND 0
│ │ │ │ +
547#define STRINGBIND 1
│ │ │ │ +
548#define NTBSTRINGBIND 2
│ │ │ │ +
549#define VARYCHARBIND 3
│ │ │ │ +
550#define VARYBINBIND 4
│ │ │ │ +
551#define TINYBIND 6
│ │ │ │ +
552#define SMALLBIND 7
│ │ │ │ +
553#define INTBIND 8
│ │ │ │ +
554#define FLT8BIND 9
│ │ │ │ +
555#define REALBIND 10
│ │ │ │ +
556#define DATETIMEBIND 11
│ │ │ │ +
557#define SMALLDATETIMEBIND 12
│ │ │ │ +
558#define MONEYBIND 13
│ │ │ │ +
559#define SMALLMONEYBIND 14
│ │ │ │ +
560#define BINARYBIND 15
│ │ │ │ +
561#define BITBIND 16
│ │ │ │ +
562#define NUMERICBIND 17
│ │ │ │ +
563#define DECIMALBIND 18
│ │ │ │ +
564#define SRCNUMERICBIND 19
│ │ │ │ +
565#define SRCDECIMALBIND 20
│ │ │ │ +
566#define DATEBIND 21
│ │ │ │ +
567#define TIMEBIND 22
│ │ │ │ +
568#define BIGDATETIMEBIND 23
│ │ │ │ +
569#define BIGTIMEBIND 24
│ │ │ │ +
570#define BIGINTBIND 30
│ │ │ │ +
571#define DATETIME2BIND 31
│ │ │ │ +
572#define MAXBINDTYPES 32 /* keep last */
│ │ │ │ +
573
│ │ │ │ +
574#define DBPRCOLSEP 21
│ │ │ │ +
575#define DBPRLINELEN 22
│ │ │ │ +
576#define DBRPCNORETURN 0
│ │ │ │ +
577#define DBRPCRETURN 1
│ │ │ │ +
578#define DBRPCDEFAULT 2
│ │ │ │ +
579
│ │ │ │ +
580#define REG_ROW -1
│ │ │ │ +
581#define MORE_ROWS -1
│ │ │ │ +
582#define NO_MORE_ROWS -2
│ │ │ │ +
583#define BUF_FULL -3
│ │ │ │ +
584#define NO_MORE_RESULTS 2
│ │ │ │ +
585#define SUCCEED 1
│ │ │ │ +
586#define FAIL 0
│ │ │ │ +
587
│ │ │ │ +
588#define DB_IN 1
│ │ │ │ +
589#define DB_OUT 2
│ │ │ │ +
590#define DB_QUERYOUT 3
│ │ │ │ +
591
│ │ │ │ +
592#define DBSINGLE 0
│ │ │ │ +
593#define DBDOUBLE 1
│ │ │ │ +
594#define DBBOTH 2
│ │ │ │ +
595
│ │ │ │ +
596/* remote procedure call (rpc) options */
│ │ │ │ +
597#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)
│ │ │ │ +
598#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)
│ │ │ │ +
599#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)
│ │ │ │ +
600
│ │ │ │ +
601#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ +
602DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);
│ │ │ │ +
603
│ │ │ │ +
604DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);
│ │ │ │ +
605
│ │ │ │ +
606RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, BYTE * values);
│ │ │ │ +
607RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);
│ │ │ │ +
608void dbcursorclose(DBCURSOR * hc);
│ │ │ │ +
609RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT * coltype, DBINT * collen, DBINT * usertype);
│ │ │ │ +
610RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);
│ │ │ │ +
611RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);
│ │ │ │ +
612DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, SHORT concuropt, USHORT nrows, DBINT * pstatus);
│ │ │ │ +
613
│ │ │ │ +
614int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);
│ │ │ │ +
615RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);
│ │ │ │ +
616RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int value);
│ │ │ │ +
617int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * datetime);
│ │ │ │ +
618char *dateorder(DBPROCESS * dbprocess, char *language);
│ │ │ │ +
619DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * datetime);
│ │ │ │ +
620RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);
│ │ │ │ +
621char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);
│ │ │ │ +
622
│ │ │ │ +
623int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);
│ │ │ │ +
624
│ │ │ │ +
625char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);
│ │ │ │ +
626void dbfreequal(char *qualptr);
│ │ │ │ +
627
│ │ │ │ +
628DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);
│ │ │ │ +
629RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);
│ │ │ │ +
630
│ │ │ │ +
631RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);
│ │ │ │ +
632
│ │ │ │ +
633RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * quotient);
│ │ │ │ +
634RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * prod);
│ │ │ │ +
635RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * sum);
│ │ │ │ +
636RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * quotient);
│ │ │ │ +
637RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int *remainder);
│ │ │ │ +
638RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * negative);
│ │ │ │ +
639RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, DBBOOL * zero);
│ │ │ │ +
640RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * prod);
│ │ │ │ +
641RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, DBBOOL * zero);
│ │ │ │ +
642RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int addend);
│ │ │ │ +
643
│ │ │ │ +
644
│ │ │ │ +
645RETCODE dbnpcreate(DBPROCESS * dbprocess);
│ │ │ │ +
646RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, DBSMALLINT namelen);
│ │ │ │ +
647
│ │ │ │ +
648int DBNUMORDERS(DBPROCESS * dbprocess);
│ │ │ │ +
649
│ │ │ │ +
650RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_dbproc, int *return_reason);
│ │ │ │ +
651int dbordercol(DBPROCESS * dbprocess, int order);
│ │ │ │ +
652
│ │ │ │ +
653RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
│ │ │ │ +
654RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);
│ │ │ │ +
655RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, INTFUNCPTR handler);
│ │ │ │ +
656RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT namelen);
│ │ │ │ +
657RETCODE dbreglist(DBPROCESS * dbproc);
│ │ │ │ +
658RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
│ │ │ │ +
659RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT datalen, BYTE * data);
│ │ │ │ +
660RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, DBUSMALLINT options);
│ │ │ │ +
661RETCODE dbregwatchlist(DBPROCESS * dbprocess);
│ │ │ │ +
662
│ │ │ │ +
663void dbrpwclr(LOGINREC * login);
│ │ │ │ +
664RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int pwlen);
│ │ │ │ +
665
│ │ │ │ +
666DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * buf);
│ │ │ │ +
667RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, DBINT size, BYTE * buf);
│ │ │ │ +
668
│ │ │ │ +
669RETCODE dbsetdeflang(char *language);
│ │ │ │ +
670
│ │ │ │ +
671int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
│ │ │ │ +
672int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
│ │ │ │ +
673
│ │ │ │ +
674DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);
│ │ │ │ +
675int dbtabcount(DBPROCESS * dbprocess);
│ │ │ │ +
676char *dbtabname(DBPROCESS * dbprocess, int tabnum);
│ │ │ │ +
677char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);
│ │ │ │ +
678
│ │ │ │ +
679RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);
│ │ │ │ +
680RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);
│ │ │ │ +
681
│ │ │ │ +
682RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);
│ │ │ │ +
683RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);
│ │ │ │ +
684
│ │ │ │ +
685int dbtsnewlen(DBPROCESS * dbprocess);
│ │ │ │ +
686DBBINARY *dbtsnewval(DBPROCESS * dbprocess);
│ │ │ │ +
687RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int tabnum, char *tabname);
│ │ │ │ +
688
│ │ │ │ +
689RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * clt_todisp);
│ │ │ │ +
690int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int destlen, DBXLATE * xlt, int *srcbytes_used,
│ │ │ │ +
691 DBBOOL srcend, int status);
│ │ │ │ +
692
│ │ │ │ +
693RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);
│ │ │ │ +
694RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);
│ │ │ │ +
695
│ │ │ │ +
696void build_xact_string(char *xact_name, char *service_name, DBINT commid, char *result);
│ │ │ │ +
697RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);
│ │ │ │ +
698RETCODE abort_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ +
699void close_commit(DBPROCESS * connect);
│ │ │ │ +
700RETCODE commit_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ +
701DBPROCESS *open_commit(LOGINREC * login, char *servername);
│ │ │ │ +
702RETCODE scan_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ +
703DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_name, int site_count);
│ │ │ │ +
704DBINT stat_xact(DBPROCESS * connect, DBINT commid);
│ │ │ │ +
705
│ │ │ │ +
706#endif /* define unimplemented */
│ │ │ │ +
707
│ │ │ │ +
708BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
709DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
710RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr);
│ │ │ │ +
711RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr,
│ │ │ │ +
712 DBTYPEINFO * typeinfo);
│ │ │ │ +
713int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
714DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
715int dbaltop(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
716int dbalttype(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
717DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
718RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT * indicator);
│ │ │ │ +
719RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, BYTE * varaddr);
│ │ │ │ +
720RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);
│ │ │ │ +
721int dbbufsize(DBPROCESS * dbprocess);
│ │ │ │ +
722BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);
│ │ │ │ +
723RETCODE dbcancel(DBPROCESS * dbproc);
│ │ │ │ +
724RETCODE dbcanquery(DBPROCESS * dbproc);
│ │ │ │ +
725char *dbchange(DBPROCESS * dbprocess);
│ │ │ │ +
726DBBOOL dbcharsetconv(DBPROCESS * dbprocess);
│ │ │ │ +
727void dbclose(DBPROCESS * dbproc);
│ │ │ │ +
728void dbclrbuf(DBPROCESS * dbproc, DBINT n);
│ │ │ │ +
729RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);
│ │ │ │ +
730RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);
│ │ │ │ +
731RETCODE dbcmdrow(DBPROCESS * dbproc);
│ │ │ │ +
732
│ │ │ │ +
733#define DBCMDROW(x) dbcmdrow((x))
│ │ │ │ +
734RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );
│ │ │ │ +
735RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol);
│ │ │ │ +
736DBINT dbcollen(DBPROCESS * dbproc, int column);
│ │ │ │ +
737char *dbcolname(DBPROCESS * dbproc, int column);
│ │ │ │ +
738const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);
│ │ │ │ +
739char *dbcolsource(DBPROCESS * dbproc, int colnum);
│ │ │ │ +
740int dbcoltype(DBPROCESS * dbproc, int column);
│ │ │ │ +
741DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);
│ │ │ │ +
742DBINT dbcolutype(DBPROCESS * dbprocess, int column);
│ │ │ │ +
743DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen);
│ │ │ │ +
744DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen,
│ │ │ │ +
745 DBTYPEINFO * typeinfo);
│ │ │ │ +
746BOOL dbiscount(DBPROCESS * dbproc);
│ │ │ │ +
747DBINT dbcount(DBPROCESS * dbproc);
│ │ │ │ +
748
│ │ │ │ +
749#define DBCOUNT(x) dbcount((x))
│ │ │ │ +
750int dbcurcmd(DBPROCESS * dbproc);
│ │ │ │ +
751
│ │ │ │ +
752#define DBCURCMD(x) dbcurcmd((x))
│ │ │ │ +
753DBINT dbcurrow(DBPROCESS * dbproc);
│ │ │ │ +
754
│ │ │ │ +
755#define DBCURROW(x) dbcurrow((x))
│ │ │ │ +
756BYTE *dbdata(DBPROCESS * dbproc, int column);
│ │ │ │ +
757int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);
│ │ │ │ +
758RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);
│ │ │ │ +
759RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const void *data);
│ │ │ │ +
760DBINT dbdatlen(DBPROCESS * dbproc, int column);
│ │ │ │ +
761DBBOOL dbdead(DBPROCESS * dbproc);
│ │ │ │ +
762
│ │ │ │ +
763#define DBDEAD(x) dbdead((x))
│ │ │ │ +
764EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);
│ │ │ │ +
765void dbexit(void);
│ │ │ │ +
766RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);
│ │ │ │ +
767DBINT dbfirstrow(DBPROCESS * dbproc);
│ │ │ │ +
768
│ │ │ │ +
769#define DBFIRSTROW(x) dbfirstrow((x))
│ │ │ │ +
770void dbfreebuf(DBPROCESS * dbproc);
│ │ │ │ +
771char *dbgetchar(DBPROCESS * dbprocess, int n);
│ │ │ │ +
772char *dbgetcharset(DBPROCESS * dbprocess);
│ │ │ │ +
773int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);
│ │ │ │ +
774int dbgetmaxprocs(void);
│ │ │ │ +
775char *dbgetnatlanf(DBPROCESS * dbprocess);
│ │ │ │ +
776int dbgetpacket(DBPROCESS * dbproc);
│ │ │ │ +
777RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);
│ │ │ │ +
778int dbgettime(void);
│ │ │ │ +
779#define DBGETTIME dbgettime
│ │ │ │ +
780BYTE *dbgetuserdata(DBPROCESS * dbproc);
│ │ │ │ +
781DBBOOL dbhasretstat(DBPROCESS * dbproc);
│ │ │ │ +
782RETCODE dbinit(void);
│ │ │ │ +
783int dbiordesc(DBPROCESS * dbproc);
│ │ │ │ +
784
│ │ │ │ +
785#define DBIORDESC(x) dbiordesc((x))
│ │ │ │ +
786int dbiowdesc(DBPROCESS * dbproc);
│ │ │ │ +
787
│ │ │ │ +
788#define DBIOWDESC(x) dbiowdesc((x))
│ │ │ │ +
789DBBOOL dbisavail(DBPROCESS * dbprocess);
│ │ │ │ +
790
│ │ │ │ +
791#define DBISAVAIL(x) dbisavail((x))
│ │ │ │ +
792DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);
│ │ │ │ +
793DBINT dblastrow(DBPROCESS * dbproc);
│ │ │ │ +
794
│ │ │ │ +
795#define DBLASTROW(x) dblastrow((x))
│ │ │ │ +
796LOGINREC *dblogin(void);
│ │ │ │ +
797void dbloginfree(LOGINREC * login);
│ │ │ │ +
798
│ │ │ │ +
799int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);
│ │ │ │ +
800int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);
│ │ │ │ +
801
│ │ │ │ +
802RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * sum);
│ │ │ │ +
803RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);
│ │ │ │ +
804RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);
│ │ │ │ +
805RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ +
806RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ +
807RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);
│ │ │ │ +
808RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
│ │ │ │ +
809RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * diff);
│ │ │ │ +
810RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * diff);
│ │ │ │ +
811
│ │ │ │ +
812RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);
│ │ │ │ +
813RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
│ │ │ │ +
814
│ │ │ │ +
815RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);
│ │ │ │ +
816RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);
│ │ │ │ +
817
│ │ │ │ +
818const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, DBBOOL shortform);
│ │ │ │ +
819RETCODE dbmorecmds(DBPROCESS * dbproc);
│ │ │ │ +
820
│ │ │ │ +
821#define DBMORECMDS(x) dbmorecmds((x))
│ │ │ │ +
822RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);
│ │ │ │ +
823MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);
│ │ │ │ +
824char *dbname(DBPROCESS * dbproc);
│ │ │ │ +
825STATUS dbnextrow(DBPROCESS * dbproc);
│ │ │ │ +
826RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);
│ │ │ │ +
827int dbnumalts(DBPROCESS * dbproc, int computeid);
│ │ │ │ +
828int dbnumcols(DBPROCESS * dbproc);
│ │ │ │ +
829int dbnumcompute(DBPROCESS * dbprocess);
│ │ │ │ +
830int dbnumrets(DBPROCESS * dbproc);
│ │ │ │ +
831DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);
│ │ │ │ +
832DBPROCESS *dbopen(LOGINREC * login, const char *server);
│ │ │ │ +
833
│ │ │ │ +
834/* pivot functions */
│ │ │ │ +
835struct col_t;
│ │ │ │ +
836void dbpivot_count (struct col_t *output, const struct col_t *input);
│ │ │ │ +
837void dbpivot_sum (struct col_t *output, const struct col_t *input);
│ │ │ │ +
838void dbpivot_min (struct col_t *output, const struct col_t *input);
│ │ │ │ +
839void dbpivot_max (struct col_t *output, const struct col_t *input);
│ │ │ │ +
840
│ │ │ │ +
841struct pivot_t;
│ │ │ │ +
842typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t *input);
│ │ │ │ +
843struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);
│ │ │ │ +
844STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);
│ │ │ │ +
845RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val);
│ │ │ │ +
846
│ │ │ │ +
847DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );
│ │ │ │ +
848
│ │ │ │ +
849#ifdef MSDBLIB
│ │ │ │ +
850#define dbopen(x,y) tdsdbopen((x),(y), 1)
│ │ │ │ +
851#else
│ │ │ │ +
852#define dbopen(x,y) tdsdbopen((x),(y), 0)
│ │ │ │ +
853#endif
│ │ │ │ +
854
│ │ │ │ +
855/* fix PHP problem */
│ │ │ │ +
856#ifdef PHP_SYBASE_DBOPEN
│ │ │ │ +
857#undef PHP_SYBASE_DBOPEN
│ │ │ │ +
858#define PHP_SYBASE_DBOPEN dbopen
│ │ │ │ +
859#endif
│ │ │ │ +
860
│ │ │ │ +
861void dbprhead(DBPROCESS * dbproc);
│ │ │ │ +
862DBINT dbprcollen(DBPROCESS * dbproc, int column);
│ │ │ │ +
863RETCODE dbprrow(DBPROCESS * dbproc);
│ │ │ │ +
864const char *dbprtype(int token);
│ │ │ │ +
865DBBOOL DRBUF(DBPROCESS * dbprocess);
│ │ │ │ +
866STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);
│ │ │ │ +
867void dbrecftos(const char filename[]);
│ │ │ │ +
868RETCODE dbresults(DBPROCESS * dbproc);
│ │ │ │ +
869RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);
│ │ │ │ +
870BYTE *dbretdata(DBPROCESS * dbproc, int retnum);
│ │ │ │ +
871int dbretlen(DBPROCESS * dbproc, int retnum);
│ │ │ │ +
872char *dbretname(DBPROCESS * dbproc, int retnum);
│ │ │ │ +
873DBINT dbretstatus(DBPROCESS * dbproc);
│ │ │ │ +
874int dbrettype(DBPROCESS * dbproc, int retnum);
│ │ │ │ +
875RETCODE dbrows(DBPROCESS * dbproc);
│ │ │ │ +
876
│ │ │ │ +
877#define DBROWS(x) dbrows((x))
│ │ │ │ +
878STATUS dbrowtype(DBPROCESS * dbprocess);
│ │ │ │ +
879
│ │ │ │ +
880#define DBROWTYPE(x) dbrowtype((x))
│ │ │ │ +
881RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT options);
│ │ │ │ +
882RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE * value);
│ │ │ │ +
883RETCODE dbrpcsend(DBPROCESS * dbproc);
│ │ │ │ +
884RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype);
│ │ │ │ +
885RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);
│ │ │ │ +
886char *dbservcharset(DBPROCESS * dbprocess);
│ │ │ │ +
887void dbsetavail(DBPROCESS * dbprocess);
│ │ │ │ +
888void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);
│ │ │ │ +
889RETCODE dbsetdefcharset(char *charset);
│ │ │ │ +
890void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);
│ │ │ │ +
891void dbsetifile(char *filename);
│ │ │ │ +
892void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr);
│ │ │ │ +
893RETCODE dbsetlogintime(int seconds);
│ │ │ │ +
894RETCODE dbsetmaxprocs(int maxprocs);
│ │ │ │ +
895RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * bindval);
│ │ │ │ +
896RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int int_param);
│ │ │ │ +
897STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);
│ │ │ │ +
898RETCODE dbsettime(int seconds);
│ │ │ │ +
899void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);
│ │ │ │ +
900RETCODE dbsetversion(DBINT version);
│ │ │ │ +
901
│ │ │ │ +
902int dbspid(DBPROCESS * dbproc);
│ │ │ │ +
903RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
│ │ │ │ +
904DBINT dbspr1rowlen(DBPROCESS * dbproc);
│ │ │ │ +
905RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
│ │ │ │ +
906RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR line_char);
│ │ │ │ +
907RETCODE dbsqlexec(DBPROCESS * dbproc);
│ │ │ │ +
908RETCODE dbsqlok(DBPROCESS * dbproc);
│ │ │ │ +
909RETCODE dbsqlsend(DBPROCESS * dbproc);
│ │ │ │ +
910int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, char *formats, ...);
│ │ │ │ +
911RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);
│ │ │ │ +
912int dbstrlen(DBPROCESS * dbproc);
│ │ │ │ +
913DBINT dbvarylen(DBPROCESS * dbproc, int column);
│ │ │ │ +
914
│ │ │ │ +
915#define SYBEVERDOWN 100 /* TDS version downgraded . */
│ │ │ │ +
916#define SYBEICONVIU 2400 /* Some character(s) could not be converted into client's character set. */
│ │ │ │ +
917#define SYBEICONVAVAIL 2401 /* Character set conversion is not available between client character set '%.*s' and server character set '%.*s'.*/
│ │ │ │ +
918#define SYBEICONVO 2402 /* Error converting characters into server's character set. Some character(s) could not be converted.*/
│ │ │ │ +
919#define SYBEICONVI 2403 /* Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').*/
│ │ │ │ +
920#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from client into server's character set.*/
│ │ │ │ +
921 /* cf. doc/dblib_errors.txt for more iconv error values. */
│ │ │ │ +
922 /* Reserve a few slots for other iconv-related issues. */
│ │ │ │ +
923#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */
│ │ │ │ +
924#define SYBEPORT 2500 /* Both port and instance specified */
│ │ │ │ +
925#define SYBESYNC 20001 /* Read attempted while out of synchronization with SQL Server. */
│ │ │ │ +
926#define SYBEFCON 20002 /* SQL Server connection failed. */
│ │ │ │ +
927#define SYBETIME 20003 /* SQL Server connection timed out. */
│ │ │ │ +
928#define SYBEREAD 20004 /* Read from SQL Server failed. */
│ │ │ │ +
929#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length corrupted. */
│ │ │ │ +
930#define SYBEWRIT 20006 /* Write to SQL Server failed. */
│ │ │ │ +
931#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */
│ │ │ │ +
932#define SYBESOCK 20008 /* Unable to open socket */
│ │ │ │ +
933#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is unavailable or does not exist. */
│ │ │ │ +
934#define SYBEMEM 20010 /* Unable to allocate sufficient memory */
│ │ │ │ +
935#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. */
│ │ │ │ +
936#define SYBEINTF 20012 /* Server name not found in interface file */
│ │ │ │ +
937#define SYBEUHST 20013 /* Unknown host machine name */
│ │ │ │ +
938#define SYBEPWD 20014 /* Incorrect password. */
│ │ │ │ +
939#define SYBEOPIN 20015 /* Could not open interface file. */
│ │ │ │ +
940#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */
│ │ │ │ +
941#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */
│ │ │ │ +
942#define SYBESMSG 20018 /* General SQL Server error: Check messages from the SQL Server. */
│ │ │ │ +
943#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation with results pending. */
│ │ │ │ +
944#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing out of sync. */
│ │ │ │ +
945#define SYBEITIM 20021 /* Illegal timeout value specified. */
│ │ │ │ +
946#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */
│ │ │ │ +
947#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. */
│ │ │ │ +
948#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent compute row. */
│ │ │ │ +
949#define SYBEIICL 20025 /* Illegal integer column length returned by SQL Server. Legal integer lengths are 1, 2, and 4 bytes. */
│ │ │ │ +
950#define SYBECNOR 20026 /* Column number out of range. */
│ │ │ │ +
951#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */
│ │ │ │ +
952#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */
│ │ │ │ +
953#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */
│ │ │ │ +
954#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following ALTNAME has wrong id. */
│ │ │ │ +
955#define SYBECDNS 20031 /* Datastream indicates that a compute column is derived from a non-existent select-list member. */
│ │ │ │ +
956#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */
│ │ │ │ +
957#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column and variable types. */
│ │ │ │ +
958#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */
│ │ │ │ +
959#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched column and variable types. */
│ │ │ │ +
960#define SYBENXID 20036 /* The Server did not grant us a distributed-transaction ID. */
│ │ │ │ +
961#define SYBERXID 20037 /* The Server did not recognize our distributed-transaction ID. */
│ │ │ │ +
962#define SYBEICN 20038 /* Invalid computeid or compute column number. */
│ │ │ │ +
963#define SYBENMOB 20039 /* No such member of 'order by' clause. */
│ │ │ │ +
964#define SYBEAPUT 20040 /* Attempt to print unknown token. */
│ │ │ │ +
965#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */
│ │ │ │ +
966#define SYBENTLL 20042 /* Name too long for loginrec field. */
│ │ │ │ +
967#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */
│ │ │ │ +
968#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. */
│ │ │ │ +
969#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */
│ │ │ │ +
970#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */
│ │ │ │ +
971#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */
│ │ │ │ +
972#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */
│ │ │ │ +
973#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */
│ │ │ │ +
974#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in source field. */
│ │ │ │ +
975#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */
│ │ │ │ +
976#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in overflow. */
│ │ │ │ +
977#define SYBERDCN 20053 /* Requested data-conversion does not exist. */
│ │ │ │ +
978#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */
│ │ │ │ +
979#define SYBEUNT 20055 /* Unknown network type found in interface file. */
│ │ │ │ +
980#define SYBECLOS 20056 /* Error in closing network connection. */
│ │ │ │ +
981#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */
│ │ │ │ +
982#define SYBEUSCT 20058 /* Unable to set communications timer. */
│ │ │ │ +
983#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */
│ │ │ │ +
984#define SYBEUDTY 20060 /* Unknown datatype encountered. */
│ │ │ │ +
985#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid timestamp. */
│ │ │ │ +
986#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which has no timestamp column. */
│ │ │ │ +
987#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. */
│ │ │ │ +
988#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent Server table. */
│ │ │ │ +
989#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */
│ │ │ │ +
990#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to a host-file is shorter than the number of rows which bulk-copy was instructed to skip. */
│ │ │ │ +
991#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. */
│ │ │ │ +
992#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */
│ │ │ │ +
993#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */
│ │ │ │ +
994#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */
│ │ │ │ +
995#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in table names. */
│ │ │ │ +
996#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */
│ │ │ │ +
997#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server column %d, which does not accept NULL values. */
│ │ │ │ +
998#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL Server. */
│ │ │ │ +
999#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column value to the SQL Server. */
│ │ │ │ +
1000#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp routines. */
│ │ │ │ +
1001#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(), bcp_moretext() and bcp_sendrow() may be used only after bcp_init() has been called with the copy direction set to DB_IN. */
│ │ │ │ +
1002#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may NOT be used after bcp_init() has been passed a non-NULL input file name. */
│ │ │ │ +
1003#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have either a length-prefix or a terminator specified. */
│ │ │ │ +
1004#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps() may be used only after bcp_init() has been passed a valid input file. */
│ │ │ │ +
1005#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() and bcp_colfmt_ps(). */
│ │ │ │ +
1006#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. */
│ │ │ │ +
1007#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() has been passed a valid host file. */
│ │ │ │ +
1008#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */
│ │ │ │ +
1009#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */
│ │ │ │ +
1010#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */
│ │ │ │ +
1011#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */
│ │ │ │ +
1012#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */
│ │ │ │ +
1013#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */
│ │ │ │ +
1014#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */
│ │ │ │ +
1015#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the SQL Server. */
│ │ │ │ +
1016#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the dbmoretext() call. */
│ │ │ │ +
1017#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-timestamp into a non-existent data row. */
│ │ │ │ +
1018#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */
│ │ │ │ +
1019#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_moretext() call. */
│ │ │ │ +
1020#define SYBEORPF 20096 /* Attempt to set remote password would overflow the login-record's remote-password field. */
│ │ │ │ +
1021#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format-file. */
│ │ │ │ +
1022#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */
│ │ │ │ +
1023#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */
│ │ │ │ +
1024#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */
│ │ │ │ +
1025#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */
│ │ │ │ +
1026#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. */
│ │ │ │ +
1027#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format-file. */
│ │ │ │ +
1028#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */
│ │ │ │ +
1029#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */
│ │ │ │ +
1030#define SYBEBCSI 20106 /* Host-file columns may be skipped only when copying INto the Server. */
│ │ │ │ +
1031#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */
│ │ │ │ +
1032#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. Skipping all of these rows is not allowed. */
│ │ │ │ +
1033#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */
│ │ │ │ +
1034#define SYBEUNAM 20110 /* Unable to get current username from operating system. */
│ │ │ │ +
1035#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It was impossible to read the requested %ld rows. */
│ │ │ │ +
1036#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes lower than 1. */
│ │ │ │ +
1037#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or SYBVARBINARY. */
│ │ │ │ +
1038#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN, or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the parameter's maximum or actual length, so that DB-Library can recognize it as a SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */
│ │ │ │ +
1039#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */
│ │ │ │ +
1040#define SYBECRNC 20116 /* The current row is not a result of compute clause %d, so it is illegal to attempt to extract that data from this row. */
│ │ │ │ +
1041#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the results of a query which contains a COMPUTE clause. */
│ │ │ │ +
1042#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the results of a query which contains a single result column. */
│ │ │ │ +
1043#define SYBEUCRR 20119 /* Internal software error: Unknown connection result reported by * dbpasswd(). */
│ │ │ │ +
1044#define SYBERPNA 20120 /* The RPC facility is available only when using a SQL Server whose version number is 4.0 or greater. */
│ │ │ │ +
1045#define SYBEOPNA 20121 /* The text/image facility is available only when using a SQL Server whose version number is 4.0 or greater. */
│ │ │ │ +
1046#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied cannot be greater than the row number for the last row to be copied. */
│ │ │ │ +
1047#define SYBECWLL 20123 /* Attempt to set column width less than 1. */
│ │ │ │ +
1048#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). */
│ │ │ │ +
1049#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type encountered in dbstrbuild(). */
│ │ │ │ +
1050#define SYBETMCF 20126 /* Attempt to install too many custom formats via dbfmtinstall(). */
│ │ │ │ +
1051#define SYBEAICF 20127 /* Error in attempting to install custom format. */
│ │ │ │ +
1052#define SYBEADST 20128 /* Error in attempting to determine the size of a pair of translation tables. */
│ │ │ │ +
1053#define SYBEALTT 20129 /* Error in attempting to load a pair of translation tables. */
│ │ │ │ +
1054#define SYBEAPCT 20130 /* Error in attempting to perform a character-set translation. */
│ │ │ │ +
1055#define SYBEXOCI 20131 /* A character-set translation overflowed its destination buffer while using bcp to copy data from a host-file to the SQL Server. */
│ │ │ │ +
1056#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home directory. */
│ │ │ │ +
1057#define SYBEAOLF 20133 /* Error in attempting to open a localization file. */
│ │ │ │ +
1058#define SYBEARDI 20134 /* Error in attempting to read datetime information from a localization file. */
│ │ │ │ +
1059#define SYBEURCI 20135 /* Unable to read copyright information from the dblib localization file. */
│ │ │ │ +
1060#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc localization file. */
│ │ │ │ +
1061#define SYBEURMI 20137 /* Unable to read money-format information from the dblib localization file. */
│ │ │ │ +
1062#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib localization file. */
│ │ │ │ +
1063#define SYBEURES 20139 /* Unable to read error string from the dblib localization file. */
│ │ │ │ +
1064#define SYBEUREI 20140 /* Unable to read error information from the dblib localization file. */
│ │ │ │ +
1065#define SYBEOREN 20141 /* Warning: an out-of-range error-number was encountered in dblib.loc. The maximum permissible error-number is defined as DBERRCOUNT in sybdb.h. */
│ │ │ │ +
1066#define SYBEISOI 20142 /* Invalid sort-order information found. */
│ │ │ │ +
1067#define SYBEIDCL 20143 /* Illegal datetime column length returned by DataServer. Legal datetime lengths are 4 and 8 bytes. */
│ │ │ │ +
1068#define SYBEIMCL 20144 /* Illegal money column length returned by DataServer. Legal money lengths are 4 and 8 bytes. */
│ │ │ │ +
1069#define SYBEIFCL 20145 /* Illegal floating-point column length returned by DataServer. Legal floating-point lengths are 4 and 8 bytes. */
│ │ │ │ +
1070#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL Server. */
│ │ │ │ +
1071#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */
│ │ │ │ +
1072#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination variable. */
│ │ │ │ +
1073#define SYBEDPOR 20149 /* Out-of-range datepart constant. */
│ │ │ │ +
1074#define SYBENDC 20150 /* Cannot have negative component in date in numeric form. */
│ │ │ │ +
1075#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */
│ │ │ │ +
1076#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */
│ │ │ │ +
1077#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. */
│ │ │ │ +
1078#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */
│ │ │ │ +
1079#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime parameter. */
│ │ │ │ +
1080#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_xlate() were NULL. */
│ │ │ │ +
1081#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has been freed. */
│ │ │ │ +
1082#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate() was NULL. The space associated with the xlt_todisp parameter has been freed. */
│ │ │ │ +
1083#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. */
│ │ │ │ +
1084#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */
│ │ │ │ +
1085#define SYBEGENOS 20161 /* General Operating System Error. */
│ │ │ │ +
1086#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() operation. */
│ │ │ │ +
1087#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */
│ │ │ │ +
1088#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or IMAGE data via dbmoretext(). */
│ │ │ │ +
1089#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */
│ │ │ │ +
1090#define SYBERFILE 20166 /* "Can not open resource file." */
│ │ │ │ +
1091#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */
│ │ │ │ +
1092#define SYBESLCT 20168 /* Could not select or copy field specified */
│ │ │ │ +
1093#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to dataserver via dbwritetext(). */
│ │ │ │ +
1094#define SYBENTST 20170 /* The file being opened must be a stream_lf. */
│ │ │ │ +
1095#define SYBEOSSL 20171 /* Operating system login level not in range of Secure SQL Server */
│ │ │ │ +
1096#define SYBEESSL 20172 /* Login security level entered does not agree with operating system level */
│ │ │ │ +
1097#define SYBENLNL 20173 /* Program not linked with specified network library. */
│ │ │ │ +
1098#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler parameter. */
│ │ │ │ +
1099#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. */
│ │ │ │ +
1100#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */
│ │ │ │ +
1101#define SYBENOTI 20177 /* No event handler installed. */
│ │ │ │ +
1102#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. */
│ │ │ │ +
1103#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler parameter. */
│ │ │ │ +
1104#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. */
│ │ │ │ +
1105#define SYBEEVST 20181 /* Must initiate a transaction before calling dbregparam(). */
│ │ │ │ +
1106#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */
│ │ │ │ +
1107#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */
│ │ │ │ +
1108#define SYBEECAN 20184 /* Attempted to cancel unrequested event notification. */
│ │ │ │ +
1109#define SYBEEUNR 20185 /* Unsolicited event notification received. */
│ │ │ │ +
1110#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */
│ │ │ │ +
1111#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. */
│ │ │ │ +
1112#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */
│ │ │ │ +
1113#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not on. */
│ │ │ │ +
1114#define SYBETRAS 20190 /* DB-Library internal error - trace structure not found. */
│ │ │ │ +
1115#define SYBEPRTF 20191 /* dbtracestring() may only be called from a printfunc(). */
│ │ │ │ +
1116#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). */
│ │ │ │ +
1117#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must be between 0 and 999999. */
│ │ │ │ +
1118#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of %3!. */
│ │ │ │ +
1119#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function %1!. */
│ │ │ │ +
1120#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */
│ │ │ │ +
1121#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */
│ │ │ │ +
1122#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are present. */
│ │ │ │ +
1123#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */
│ │ │ │ +
1124#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure notifications have been disabled. */
│ │ │ │ +
1125#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! used instead. */
│ │ │ │ +
1126#define SYBESECURE 20202 /* Secure Server function not supported in this version. */
│ │ │ │ +
1127#define SYBECAP 20203 /* DB-Library capabilities not accepted by the Server. */
│ │ │ │ +
1128#define SYBEFUNC 20204 /* Functionality not supported at the specified version level. */
│ │ │ │ +
1129#define SYBERESP 20205 /* Response function address passed to dbresponse() must be non-NULL. */
│ │ │ │ +
1130#define SYBEIVERS 20206 /* Illegal version level specified. */
│ │ │ │ +
1131#define SYBEONCE 20207 /* Function can be called only once. */
│ │ │ │ +
1132#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, only if the datalen parameter is 0 */
│ │ │ │ +
1133#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. */
│ │ │ │ +
1134#define SYBENEG 20210 /* Negotiated login attempt failed. */
│ │ │ │ +
1135#define SYBELBLEN 20211 /* Security labels should be less than 256 characters long. */
│ │ │ │ +
1136#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */
│ │ │ │ +
1137#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY datastream. */
│ │ │ │ +
1138#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */
│ │ │ │ +
1139#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */
│ │ │ │ +
1140#define SYBEBPREC 20216 /* Illegal precision specified */
│ │ │ │ +
1141#define SYBEBSCALE 20217 /* Illegal scale specified */
│ │ │ │ +
1142#define SYBECDOMAIN 20218 /* Source field value is not within the domain of legal values. */
│ │ │ │ +
1143#define SYBECINTERNAL 20219 /* Internal Conversion error. */
│ │ │ │ +
1144#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */
│ │ │ │ +
1145#define SYBEBCSET 20221 /* Unknown character-set encountered." */
│ │ │ │ +
1146#define SYBEFENC 20222 /* Password Encryption failed." */
│ │ │ │ +
1147#define SYBEFRES 20223 /* Challenge-Response function failed.", */
│ │ │ │ +
1148#define SYBEISRVPREC 20224 /* Illegal precision value returned by the server. */
│ │ │ │ +
1149#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */
│ │ │ │ +
1150#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the server. */
│ │ │ │ +
1151#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the server. */
│ │ │ │ +
1152#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is at least one text or image column in the server table. */
│ │ │ │ +
1153#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value encountered. */
│ │ │ │ +
1154#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must be 0 and no terminator should be specified. */
│ │ │ │ +
1155#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */
│ │ │ │ +
1156#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */
│ │ │ │ +
1157#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type cannot be 0. */
│ │ │ │ +
1158#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. */
│ │ │ │ +
1159#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to -1. */
│ │ │ │ +
1160#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, 2 or 4. */
│ │ │ │ +
1161#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, 1, 2 or 4. */
│ │ │ │ +
1162#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. */
│ │ │ │ +
1163#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */
│ │ │ │ +
1164#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all text data for the previous row has been sent using bcp_moretext(). */
│ │ │ │ +
1165#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count differs from the actual number of columns received. */
│ │ │ │ +
1166#define SYBEBPRODEF 20242 /* bcp protocol error: expected default information and got none. */
│ │ │ │ +
1167#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of defaults differs from the actual number of defaults received. */
│ │ │ │ +
1168#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and actual column id are not same */
│ │ │ │ +
1169#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received for column that does not have default. */
│ │ │ │ +
1170#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype differs from column datatype. */
│ │ │ │ +
1171#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of default information received. */
│ │ │ │ +
1172#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of results received. */
│ │ │ │ +
1173#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column id received. */
│ │ │ │ +
1174#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column datatype. */
│ │ │ │ +
1175#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length received. */
│ │ │ │ +
1176#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision value received. */
│ │ │ │ +
1177#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value received. */
│ │ │ │ +
1178#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. */
│ │ │ │ +
1179#define SYBECRSNORES 20255 /* Cursor statement generated no results. */
│ │ │ │ +
1180#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor statement does not have a unique index. */
│ │ │ │ +
1181#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or a view in a cursor statement. */
│ │ │ │ +
1182#define SYBECRSVIIND 20258 /* The view used in the cursor statement does not include all the unique index columns of the underlying tables. */
│ │ │ │ +
1183#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have 'order by', ' group by', or 'having' phrases. */
│ │ │ │ +
1184#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when using cursor APIs. */
│ │ │ │ +
1185#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned on when using cursor APIs. */
│ │ │ │ +
1186#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */
│ │ │ │ +
1187#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor statement. */
│ │ │ │ +
1188#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be used within the keyset of keyset driven cursors. */
│ │ │ │ +
1189#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven cursors. */
│ │ │ │ +
1190#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward scrolling cursor. */
│ │ │ │ +
1191#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid range. */
│ │ │ │ +
1192#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed cursors with a previous fetch type. */
│ │ │ │ +
1193#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in a READONLY cursor. */
│ │ │ │ +
1194#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned on when doing updates or deletes with dbcursor(). */
│ │ │ │ +
1195#define SYBECRSTAB 20271 /* Table name must be determined in operations involving data locking or modifications. */
│ │ │ │ +
1196#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind variables when binding type is NOBIND. */
│ │ │ │ +
1197#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor update or insert. */
│ │ │ │ +
1198#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or insert. */
│ │ │ │ +
1199#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind variables require single table cursors. */
│ │ │ │ +
1200#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any rows. */
│ │ │ │ +
1201#define SYBECRSINV 20277 /* Invalid cursor statement. */
│ │ │ │ +
1202#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET cursors. */
│ │ │ │ +
1203#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating cursor */
│ │ │ │ +
1204#define SYBECRSFTYPE 20280 /* Unknown fetch type. */
│ │ │ │ +
1205#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */
│ │ │ │ +
1206#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is expected. */
│ │ │ │ +
1207#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. */
│ │ │ │ +
1208#define SYBECRSNOLEN 20284 /* No unique index found. */
│ │ │ │ +
1209#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */
│ │ │ │ +
1210#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, and order by. */
│ │ │ │ +
1211#define SYBECRSNOTABLE 20287 /* Table name is NULL. */
│ │ │ │ +
1212#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. */
│ │ │ │ +
1213#define SYBECRSVAR 20289 /* There is no valid address associated with this bind. */
│ │ │ │ +
1214#define SYBENOVALUE 20290 /* Security labels require both a name and a value */
│ │ │ │ +
1215#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return parameter. */
│ │ │ │ +
1216#define SYBECLOSEIN 20292 /* Unable to close interface file. */
│ │ │ │ +
1217#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */
│ │ │ │ +
1218#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy operation is progress. */
│ │ │ │ +
1219#define SYBEERRLABEL 20295 /* An illegal value was returned from the security label handler. */
│ │ │ │ +
1220#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge attention." */
│ │ │ │ +
1221#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */
│ │ │ │ +
1222#define SYBEDCL 20298 /* -004- DCL Error */
│ │ │ │ +
1223#define SYBECS 20299 /* -004- cs context Error */
│ │ │ │ +
1224#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */
│ │ │ │ +
1225#define SYBECOLSIZE 22000 /* Invalid column information structure size */
│ │ │ │ +
1226
│ │ │ │ +
1227int dbtds(DBPROCESS * dbprocess);
│ │ │ │ +
1228
│ │ │ │ +
1229#define DBTDS(a) dbtds(a)
│ │ │ │ +
1230DBINT dbtextsize(DBPROCESS * dbprocess);
│ │ │ │ +
1231DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);
│ │ │ │ +
1232DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);
│ │ │ │ +
1233DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);
│ │ │ │ +
1234RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);
│ │ │ │ +
1235RETCODE dbuse(DBPROCESS * dbproc, const char *name);
│ │ │ │ +
1236const char *dbversion(void);
│ │ │ │ +
1237DBBOOL dbwillconvert(int srctype, int desttype);
│ │ │ │ +
1238RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, DBTINYINT textptrlen, DBBINARY * timestamp,
│ │ │ │ +
1239 DBBOOL log, DBINT size, BYTE * text);
│ │ │ │ +
1240
│ │ │ │ +
1241/* LOGINREC manipulation */
│ │ │ │ +
1242RETCODE dbsetlname(LOGINREC * login, const char *value, int which);
│ │ │ │ +
1243RETCODE dbsetlbool(LOGINREC * login, int value, int which);
│ │ │ │ +
1244RETCODE dbsetlshort(LOGINREC * login, int value, int which);
│ │ │ │ +
1245RETCODE dbsetllong(LOGINREC * login, long value, int which);
│ │ │ │ +
1246RETCODE dbsetlversion (LOGINREC * login, BYTE version);
│ │ │ │ +
1247
│ │ │ │ +
1248#define DBSETHOST 1
│ │ │ │ +
1249#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)
│ │ │ │ +
1250#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)
│ │ │ │ +
1251#define DBSETUSER 2
│ │ │ │ +
1252#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)
│ │ │ │ +
1253#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)
│ │ │ │ +
1254#define DBSETPWD 3
│ │ │ │ +
1255#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)
│ │ │ │ +
1256#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)
│ │ │ │ +
1257#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ +
1258# define DBSETHID 4 /* not implemented */
│ │ │ │ +
1259# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)
│ │ │ │ +
1260#endif
│ │ │ │ +
1261#define DBSETAPP 5
│ │ │ │ +
1262#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)
│ │ │ │ +
1263#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)
│ │ │ │ +
1264#define DBSETBCP 6
│ │ │ │ +
1265#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)
│ │ │ │ +
1266#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)
│ │ │ │ +
1267#define DBSETNATLANG 7
│ │ │ │ +
1268#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)
│ │ │ │ +
1269#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)
│ │ │ │ +
1270#if defined(DBLIB_UNIMPLEMENTED)
│ │ │ │ +
1271# define DBSETNOSHORT 8 /* not implemented */
│ │ │ │ +
1272# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)
│ │ │ │ +
1273# define DBSETHIER 9 /* not implemented */
│ │ │ │ +
1274# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)
│ │ │ │ +
1275#endif
│ │ │ │ +
1276#define DBSETCHARSET 10
│ │ │ │ +
1277#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)
│ │ │ │ +
1278#define DBSETPACKET 11
│ │ │ │ +
1279#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)
│ │ │ │ +
1280#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)
│ │ │ │ +
1281#define DBSETENCRYPT 12
│ │ │ │ +
1282#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)
│ │ │ │ +
1283#define DBSETLABELED 13
│ │ │ │ +
1284#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
│ │ │ │ +
1285#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
│ │ │ │ +
1286#define DBSETDBNAME 14
│ │ │ │ +
1287#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)
│ │ │ │ +
1288#define DBSETLVERSION(login, version) dbsetlversion((login), (version))
│ │ │ │ +
1289#define DBSETNETWORKAUTH 101
│ │ │ │ +
1290#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)
│ │ │ │ +
1291#define DBSETMUTUALAUTH 102
│ │ │ │ +
1292#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)
│ │ │ │ +
1293#define DBSETSERVERPRINCIPAL 103
│ │ │ │ +
1294#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), DBSETSERVERPRINCIPAL)
│ │ │ │ +
1295/* settings from here are purely FreeTDS extensions */
│ │ │ │ +
1296#define DBSETUTF16 1001
│ │ │ │ +
1297#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)
│ │ │ │ +
1298#define DBSETNTLMV2 1002
│ │ │ │ +
1299#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)
│ │ │ │ +
1300#define DBSETREADONLY 1003
│ │ │ │ +
1301#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)
│ │ │ │ +
1302#define DBSETDELEGATION 1004
│ │ │ │ +
1303#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)
│ │ │ │ +
1304#define DBSETENCRYPTION 1005
│ │ │ │ +
1305#define DBSETLENCRYPTION(x, y) dbsetlname((x), (y), DBSETENCRYPTION)
│ │ │ │ +
1306#define DBSETPORT 1006
│ │ │ │ +
1307#define DBSETLPORT(x,y) dbsetlshort((x), (y), DBSETPORT)
│ │ │ │ +
1308
│ │ │ │ +
1309RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char *hfile, const char *errfile, int direction);
│ │ │ │ +
1310DBINT bcp_done(DBPROCESS * dbproc);
│ │ │ │ +
1311
│ │ │ │ +
1312DBINT bcp_batch(DBPROCESS * dbproc);
│ │ │ │ +
1313RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT varlen, BYTE * terminator, int termlen, int type,
│ │ │ │ +
1314 int table_column);
│ │ │ │ +
1315RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);
│ │ │ │ +
1316RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);
│ │ │ │ +
1317RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
│ │ │ │ +
1318 const BYTE * host_term, int host_termlen, int colnum);
│ │ │ │ +
1319RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
│ │ │ │ +
1320 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);
│ │ │ │ +
1321RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);
│ │ │ │ +
1322RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);
│ │ │ │ +
1323int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */
│ │ │ │ +
1324RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);
│ │ │ │ +
1325DBBOOL bcp_getl(LOGINREC * login);
│ │ │ │ +
1326RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int valuelen);
│ │ │ │ +
1327RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);
│ │ │ │ +
1328RETCODE bcp_sendrow(DBPROCESS * dbproc);
│ │ │ │ +
1329
│ │ │ │ +
1330#ifdef __cplusplus
│ │ │ │ +
1331#if 0
│ │ │ │ +
1332{
│ │ │ │ +
1333#endif
│ │ │ │ +
1334}
│ │ │ │ +
1335#endif
│ │ │ │ +
1336
│ │ │ │ +
1337#endif
│ │ │ │ +
RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
Get a bunch of column attributes with a single call (Microsoft-compatibility feature).
Definition dblib.c:3062
│ │ │ │ +
RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val)
Pivot the rows, creating a new resultset.
Definition dbpivot.c:974
│ │ │ │ +
void dbclrbuf(DBPROCESS *dbproc, DBINT n)
Clear n rows from the row buffer.
Definition dblib.c:2860
│ │ │ │ +
DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)
Get precision and scale information for a regular result column.
Definition dblib.c:3033
│ │ │ │ +
LOGINREC * dblogin(void)
Allocate a LOGINREC structure.
Definition dblib.c:713
│ │ │ │ +
void dbfreebuf(DBPROCESS *dbproc)
Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
Definition dblib.c:6102
│ │ │ │ +
BYTE * dbdata(DBPROCESS *dbproc, int column)
Get address of data in a regular result column.
Definition dblib.c:3371
│ │ │ │ +
int dbstrlen(DBPROCESS *dbproc)
Get size of the command buffer, in bytes.
Definition dblib.c:6333
│ │ │ │ +
BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)
Get address of compute column data.
Definition dblib.c:4457
│ │ │ │ +
int dbspid(DBPROCESS *dbproc)
Get server process ID for a DBPROCESS.
Definition dblib.c:5962
│ │ │ │ +
DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)
Get text timestamp for a column in the current row.
Definition dblib.c:6569
│ │ │ │ +
BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)
Get bylist for a compute row.
Definition dblib.c:5041
│ │ │ │ +
char * dbservcharset(DBPROCESS *dbprocess)
Get syscharset name of the server character set.
Definition dblib.c:7067
│ │ │ │ +
DBINT dbspr1rowlen(DBPROCESS *dbproc)
Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(),...
Definition dblib.c:3438
│ │ │ │ +
DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
cf.
Definition dblib.c:2612
│ │ │ │ +
DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)
Get size of data in a compute column.
Definition dblib.c:4352
│ │ │ │ +
void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr)
Set interrupt handler for db-lib to use while blocked against a read from the server.
Definition dblib.c:4673
│ │ │ │ +
RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE *bindval)
Define substitution values to be used when binding null values.
Definition dblib.c:1981
│ │ │ │ +
char * dbcolname(DBPROCESS *dbproc, int column)
Return name of a regular result column.
Definition dblib.c:1891
│ │ │ │ +
RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)
printf-like way to form SQL to send to the server.
Definition dblib.c:1353
│ │ │ │ +
RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)
Break a DBDATETIME value into useful pieces.
Definition dblib.c:5889
│ │ │ │ +
RETCODE dbresults(DBPROCESS *dbproc)
Set up query results.
Definition dblib.c:1713
│ │ │ │ +
RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)
Send text or image data to the server.
Definition dblib.c:6636
│ │ │ │ +
RETCODE dbcanquery(DBPROCESS *dbproc)
Cancel the query currently being retrieved, discarding all pending rows.
Definition dblib.c:6073
│ │ │ │ +
RETCODE dbinit(void)
Initialize db-lib.
Definition dblib.c:668
│ │ │ │ +
DBINT dbvarylen(DBPROCESS *dbproc, int column)
Determine whether a column can vary in size.
Definition dblib.c:3235
│ │ │ │ +
RETCODE dbcancel(DBPROCESS *dbproc)
Cancel the current command batch.
Definition dblib.c:3413
│ │ │ │ +
RETCODE dbsetlogintime(int seconds)
Set maximum seconds db-lib waits for a server response to a login attempt.
Definition dblib.c:4281
│ │ │ │ +
RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)
Read a row from the row buffer.
Definition dblib.c:1949
│ │ │ │ +
int dbcoltype(DBPROCESS *dbproc, int column)
Get the datatype of a regular result set column.
Definition dblib.c:2987
│ │ │ │ +
void dbsetifile(char *filename)
set name and location of the interfaces file FreeTDS should use to look up a servername.
Definition dblib.c:2730
│ │ │ │ +
RETCODE dbuse(DBPROCESS *dbproc, const char *name)
Change current database.
Definition dblib.c:1464
│ │ │ │ +
int dbnumalts(DBPROCESS *dbproc, int computeid)
Get count of columns in a compute row.
Definition dblib.c:4982
│ │ │ │ +
BOOL dbiscount(DBPROCESS *dbproc)
Indicates whether or not the count returned by dbcount is real (Microsoft-compatibility feature).
Definition dblib.c:2820
│ │ │ │ +
int dbgettime(void)
Get maximum seconds db-lib waits for a server response to query.
Definition dblib.c:4265
│ │ │ │ +
RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])
Send chunk of a text/image value to the server.
Definition dblib.c:6774
│ │ │ │ +
const char * dbprtype(int token)
Print a token value's name to a buffer.
Definition dblib.c:6489
│ │ │ │ +
char * dbcolsource(DBPROCESS *dbproc, int colnum)
Get base database column name for a result set column.
Definition dblib.c:3161
│ │ │ │ +
char * dbchange(DBPROCESS *dbprocess)
See if a command caused the current database to change.
Definition dblib.c:7031
│ │ │ │ +
const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)
Return name of a computed result column.
Definition dblib.c:1917
│ │ │ │ +
RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)
Tie a null-indicator to a regular result column.
Definition dblib.c:2756
│ │ │ │ +
RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
Tie a host variable to a resultset column.
Definition dblib.c:2653
│ │ │ │ +
RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])
Append SQL to the command buffer.
Definition dblib.c:1392
│ │ │ │ +
DBINT dbcollen(DBPROCESS *dbproc, int column)
Get size of a regular result column.
Definition dblib.c:3186
│ │ │ │ +
DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
Convert one datatype to another.
Definition dblib.c:2319
│ │ │ │ +
char * dbgetchar(DBPROCESS *dbprocess, int n)
Get address of a position in the command buffer.
Definition dblib.c:6352
│ │ │ │ +
RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT *indicator)
Tie a null-indicator to a compute result column.
Definition dblib.c:2792
│ │ │ │ +
RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])
Reset an option.
Definition dblib.c:6137
│ │ │ │ +
DBINT dbcount(DBPROCESS *dbproc)
Get count of rows processed.
Definition dblib.c:2840
│ │ │ │ +
int dbaltop(DBPROCESS *dbproc, int computeid, int column)
Get aggregation operator for a compute column.
Definition dblib.c:4486
│ │ │ │ +
RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)
describe table column attributes with a single call (Freetds-only API function modelled on dbcolinfo)
Definition dblib.c:6506
│ │ │ │ +
DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)
Get size of data in compute column.
Definition dblib.c:7181
│ │ │ │ +
RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int int_param)
Set db-lib or server option.
Definition dblib.c:4513
│ │ │ │ +
void dbprhead(DBPROCESS *dbproc)
Print result set headings to stdout.
Definition dblib.c:4001
│ │ │ │ +
RETCODE dbsetlversion(LOGINREC *login, BYTE version)
Set TDS version for future connections.
Definition dblib.c:960
│ │ │ │ +
RETCODE dbprrow(DBPROCESS *dbproc)
Print a result set to stdout.
Definition dblib.c:3559
│ │ │ │ +
char * dbname(DBPROCESS *dbproc)
Get name of current database.
Definition dblib.c:7051
│ │ │ │ +
int dbalttype(DBPROCESS *dbproc, int computeid, int column)
Get datatype for a compute column.
Definition dblib.c:4382
│ │ │ │ +
RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
Print result set headings to a buffer.
Definition dblib.c:3937
│ │ │ │ +
RETCODE dbsqlexec(DBPROCESS *dbproc)
send the SQL command to the server and wait for an answer.
Definition dblib.c:1438
│ │ │ │ +
DBBOOL dbwillconvert(int srctype, int desttype)
Test whether or not a datatype can be converted to another datatype.
Definition dblib.c:2890
│ │ │ │ +
DBINT dbcolutype(DBPROCESS *dbprocess, int column)
Get user-defined datatype of a regular result column.
Definition dblib.c:3010
│ │ │ │ +
int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char *formats,...)
Build a printable string from text containing placeholders for variables.
Definition dblib.c:7344
│ │ │ │ +
EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)
Set an error handler, for messages from db-lib.
Definition dblib.c:5163
│ │ │ │ +
RETCODE dbsetversion(DBINT version)
Specify a db-lib version level.
Definition dblib.c:6018
│ │ │ │ +
int dbgetpacket(DBPROCESS *dbproc)
Get TDS packet size for the connection.
Definition dblib.c:4117
│ │ │ │ +
void dbrecftos(const char filename[])
Record to a file all SQL commands sent to the server.
Definition dblib.c:6809
│ │ │ │ +
BYTE * dbgetuserdata(DBPROCESS *dbproc)
Get address of user-allocated data from a DBPROCESS.
Definition dblib.c:6000
│ │ │ │ +
void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)
Associate client-allocated (and defined) data with a DBPROCESS.
Definition dblib.c:5982
│ │ │ │ +
DBINT dbprcollen(DBPROCESS *dbproc, int column)
Get size of a result column needed to print column.
Definition dblib.c:3209
│ │ │ │ +
void dbexit(void)
Close server connections and free all related structures.
Definition dblib.c:1571
│ │ │ │ +
void dbloginfree(LOGINREC *login)
free the LOGINREC
Definition dblib.c:746
│ │ │ │ +
RETCODE dbmorecmds(DBPROCESS *dbproc)
See if more commands are to be processed.
Definition dblib.c:6279
│ │ │ │ +
DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])
Get value of an option.
Definition dblib.c:6205
│ │ │ │ +
int dbnumcompute(DBPROCESS *dbprocess)
Get count of COMPUTE clauses for a result set.
Definition dblib.c:5015
│ │ │ │ +
RETCODE dbsqlsend(DBPROCESS *dbproc)
Transmit the command buffer to the server.
Definition dblib.c:7087
│ │ │ │ +
RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
Get formatted string for underlining dbsprhead() column names.
Definition dblib.c:3879
│ │ │ │ +
const char * dbversion(void)
See which version of db-lib is in use.
Definition dblib.c:6884
│ │ │ │ +
RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype)
safely quotes character values in SQL text.
Definition dblib.c:6428
│ │ │ │ +
int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)
Get column ID of a compute column.
Definition dblib.c:4326
│ │ │ │ +
RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void *data)
Break any kind of date or time value into useful pieces.
Definition dblib.c:5910
│ │ │ │ +
RETCODE dbsettime(int seconds)
Set maximum seconds db-lib waits for a server response to query.
Definition dblib.c:4234
│ │ │ │ +
int dbnumcols(DBPROCESS *dbproc)
Return number of regular columns in a result set.
Definition dblib.c:1867
│ │ │ │ +
int dbgetmaxprocs(void)
get maximum simultaneous connections db-lib will open to the server.
Definition dblib.c:4213
│ │ │ │ +
DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)
Get text pointer for a column in the current row.
Definition dblib.c:6599
│ │ │ │ +
MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)
Set a message handler, for messages from the server.
Definition dblib.c:5182
│ │ │ │ +
STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)
Fetch part of a text or image value from the server.
Definition dblib.c:6705
│ │ │ │ +
RETCODE dbsqlok(DBPROCESS *dbproc)
Wait for results of a query from the server.
Definition dblib.c:4856
│ │ │ │ +
DBINT dbdatlen(DBPROCESS *dbproc, int column)
Get size of current row's data in a regular result column.
Definition dblib.c:3343
│ │ │ │ +
STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)
Make a buffered row "current" without fetching it into bound variables.
Definition dblib.c:2064
│ │ │ │ +
void dbclose(DBPROCESS *dbproc)
Close a connection to the server and free associated resources.
Definition dblib.c:1504
│ │ │ │ +
RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)
Get a copy of a chunk of the command buffer.
Definition dblib.c:6384
│ │ │ │ +
DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)
Get user-defined datatype of a compute column.
Definition dblib.c:7158
│ │ │ │ +
RETCODE dbsetmaxprocs(int maxprocs)
Set maximum simultaneous connections db-lib will open to the server.
Definition dblib.c:4141
│ │ │ │ +
RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
Print a regular result row to a buffer.
Definition dblib.c:3476
│ │ │ │ +
RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE *varaddr)
Bind a compute column to a program variable.
Definition dblib.c:4411
│ │ │ │ +
DBINT dbretstatus(DBPROCESS *dbproc)
Fetch status value returned by query or remote procedure call.
Definition dblib.c:4716
│ │ │ │ +
RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)
Initialize a remote procedure call.
Definition rpc.c:72
│ │ │ │ +
BYTE * dbretdata(DBPROCESS *dbproc, int retnum)
Get value of an output parameter filled by a stored procedure.
Definition dblib.c:4795
│ │ │ │ +
char * dbretname(DBPROCESS *dbproc, int retnum)
Get name of an output parameter filled by a stored procedure.
Definition dblib.c:4766
│ │ │ │ +
DBBOOL dbhasretstat(DBPROCESS *dbproc)
Determine if query generated a return status number.
Definition dblib.c:4692
│ │ │ │ +
int dbrettype(DBPROCESS *dbproc, int retnum)
Get datatype of a stored procedure's return parameter.
Definition dblib.c:6308
│ │ │ │ +
int dbretlen(DBPROCESS *dbproc, int retnum)
Get size of an output parameter filled by a stored procedure.
Definition dblib.c:4821
│ │ │ │ +
RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE *value)
Add a parameter to a remote procedure call.
Definition rpc.c:155
│ │ │ │ +
RETCODE dbrpcsend(DBPROCESS *dbproc)
Execute the procedure and free associated memory.
Definition rpc.c:281
│ │ │ │ +
int dbnumrets(DBPROCESS *dbproc)
Get count of output parameters filled by a stored procedure.
Definition dblib.c:4734
│ │ │ │ +
RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int colnum)
Specify the format of a datafile prior to writing to a table.
Definition bcp.c:377
│ │ │ │ +
DBBOOL bcp_getl(LOGINREC *login)
See if BCP_SETL() was used to set the LOGINREC for BCP work.
Definition bcp.c:710
│ │ │ │ +
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:546
│ │ │ │ +
RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)
Indicate how many columns are to be found in the datafile.
Definition bcp.c:301
│ │ │ │ +
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:674
│ │ │ │ +
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int type, int table_column)
Bind a program host variable to a database column.
Definition bcp.c:2083
│ │ │ │ +
RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)
Write a datafile to a table.
Definition bcp.c:1621
│ │ │ │ +
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition bcp.c:2041
│ │ │ │ +
RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])
Read a format definition file.
Definition bcp.c:1682
│ │ │ │ +
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition bcp.c:2014
│ │ │ │ +
RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile, const char *errfile, int direction)
Prepare for bulk copy operation on a table.
Definition bcp.c:167
│ │ │ │ +
RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column)
Set the length of a host variable to be written to a table.
Definition bcp.c:267
│ │ │ │ +
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition bcp.c:1384
│ │ │ │ +
RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int colnum, DBTYPEINFO *typeinfo)
Specify the format of a host file for bulk copy purposes, with precision and scale support for numeri...
Definition bcp.c:509
│ │ │ │ +
RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
Set "hints" for uploading a file.
Definition bcp.c:624
│ │ │ │ +
RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)
Zero a DBMONEY4 value.
Definition dblib.c:5612
│ │ │ │ +
RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
Add two DBMONEY4 values.
Definition dblib.c:5635
│ │ │ │ +
int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
Compare two DBMONEY4 values.
Definition dblib.c:5754
│ │ │ │ +
RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)
Get maximum positive DBMONEY value supported.
Definition dblib.c:5387
│ │ │ │ +
RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
Negate a DBMONEY4 value.
Definition dblib.c:5588
│ │ │ │ +
RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
Negate a DBMONEY value.
Definition dblib.c:5561
│ │ │ │ +
RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
Subtract two DBMONEY4 values.
Definition dblib.c:5666
│ │ │ │ +
RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)
Set a DBMONEY value to zero.
Definition dblib.c:5366
│ │ │ │ +
RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
Copy a DBMONEY value.
Definition dblib.c:6052
│ │ │ │ +
RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)
Copy a DBMONEY4 value.
Definition dblib.c:5782
│ │ │ │ +
RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)
Get maximum negative DBMONEY value supported.
Definition dblib.c:5408
│ │ │ │ +
RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)
Subtract $0.0001 from a DBMONEY value.
Definition dblib.c:5533
│ │ │ │ +
RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)
Add $0.0001 to a DBMONEY value.
Definition dblib.c:5505
│ │ │ │ +
int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
Compare two DBMONEY values.
Definition dblib.c:5308
│ │ │ │ +
int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
Compare DBDATETIME values, similar to strcmp(3).
Definition dblib.c:5807
│ │ │ │ +
const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
Get name of a month, in some human language.
Definition dblib.c:7002
│ │ │ │ +
int dbcurcmd(DBPROCESS *dbproc)
Get number of the row just returned.
Definition dblib.c:6262
│ │ │ │ +
RETCODE dbsetlbool(LOGINREC *login, int value, int which)
Set a boolean value in a LOGINREC structure.
Definition dblib.c:909
│ │ │ │ +
DBINT dblastrow(DBPROCESS *dbproc)
Get number of the last row in the row buffer.
Definition dblib.c:7251
│ │ │ │ +
RETCODE dbcmdrow(DBPROCESS *dbproc)
See if the current command can return rows.
Definition dblib.c:4302
│ │ │ │ +
RETCODE dbsetlshort(LOGINREC *login, int value, int which)
Set an integer value in a LOGINREC structure.
Definition dblib.c:874
│ │ │ │ +
RETCODE dbrows(DBPROCESS *dbproc)
Indicate whether a query returned rows.
Definition dblib.c:4076
│ │ │ │ +
void dbsetavail(DBPROCESS *dbprocess)
Mark a DBPROCESS as "available".
Definition dblib.c:7319
│ │ │ │ +
int dbiowdesc(DBPROCESS *dbproc)
Get file descriptor of the socket used by a DBPROCESS to write data coming to the server....
Definition dblib.c:7291
│ │ │ │ +
int dbtds(DBPROCESS *dbprocess)
Get the TDS version in use for dbproc.
Definition dblib.c:6843
│ │ │ │ +
DBINT dbcurrow(DBPROCESS *dbproc)
Get number of the row currently being read.
Definition dblib.c:6228
│ │ │ │ +
STATUS dbrowtype(DBPROCESS *dbprocess)
Get returned row's type.
Definition dblib.c:6245
│ │ │ │ +
int dbiordesc(DBPROCESS *dbproc)
Get file descriptor of the socket used by a DBPROCESS to read data coming from the server....
Definition dblib.c:7275
│ │ │ │ +
RETCODE dbsetllong(LOGINREC *login, long value, int which)
Set an integer value in a LOGINREC structure.
Definition dblib.c:837
│ │ │ │ +
RETCODE dbsetlname(LOGINREC *login, const char *value, int which)
Set the value of a string in a LOGINREC structure.
Definition dblib.c:768
│ │ │ │ +
DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)
Form a connection with the server.
Definition dblib.c:1192
│ │ │ │ +
DBBOOL dbdead(DBPROCESS *dbproc)
Check if dbproc is an ex-parrot.
Definition dblib.c:5100
│ │ │ │ +
DBINT dbfirstrow(DBPROCESS *dbproc)
See if a server response has arrived.
Definition dblib.c:7236
│ │ │ │ +
Definition bsqlodbc.c:100
│ │ │ │ +
Definition dbpivot.c:77
│ │ │ │ +
Definition dbpivot.c:842
│ │ │ │ +
Definition dblib.h:44
│ │ │ │ +
Definition dblib.h:123
│ │ │ │ +
Definition sybdb.h:264
│ │ │ │ +
Definition sybdb.h:270
│ │ │ │ +
Definition sybdb.h:276
│ │ │ │ +
Definition sybdb.h:285
│ │ │ │ +
Definition sybdb.h:291
│ │ │ │ +
Definition sybdb.h:296
│ │ │ │ +
Definition sybdb.h:302
│ │ │ │ +
Definition sybdb.h:308
│ │ │ │ +
DBSMALLINT offset
time offset
Definition sybdb.h:311
│ │ │ │ +
DBUBIGINT time
time, 7 digit precision
Definition sybdb.h:309
│ │ │ │ +
DBINT date
date, 0 = 1900-01-01
Definition sybdb.h:310
│ │ │ │ +
Definition sybdb.h:337
│ │ │ │ +
Definition sybdb.h:343
│ │ │ │ +
Definition sybdb.h:356
│ │ │ │ +
Definition sybdb.h:375
│ │ │ │ +
Definition sybdb.h:459
│ │ │ │ +
Definition sybdb.h:475
│ │ │ │ +
Definition sybdb.h:491
│ │ │ │ +
Definition sybdb.h:507
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,271 +1,2305 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -cstypes.h │ │ │ │ │ +sybdb.h │ │ │ │ │ +Go_to_the_documentation_of_this_file. │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _cstypes_h_ │ │ │ │ │ -21#define _cstypes_h_ │ │ │ │ │ -22 │ │ │ │ │ -23#include "tds_sysdep_public.h" │ │ │ │ │ -24 │ │ │ │ │ -25#ifdef __cplusplus │ │ │ │ │ -26extern "C" │ │ │ │ │ -27{ │ │ │ │ │ -28#if 0 │ │ │ │ │ -29} │ │ │ │ │ -30#endif │ │ │ │ │ -31#endif │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +28#ifndef _sybdb_h_ │ │ │ │ │ +29#define _sybdb_h_ │ │ │ │ │ +30 │ │ │ │ │ +31#include "tds_sysdep_public.h" │ │ │ │ │ 32 │ │ │ │ │ -33typedef int32_t CS_INT; │ │ │ │ │ -34typedef uint32_t CS_UINT; │ │ │ │ │ -35typedef int64_t CS_BIGINT; │ │ │ │ │ -36typedef uint64_t CS_UBIGINT; │ │ │ │ │ -37typedef int16_t CS_SMALLINT; │ │ │ │ │ -38typedef uint16_t CS_USMALLINT; │ │ │ │ │ -39typedef unsigned char CS_TINYINT; │ │ │ │ │ -40typedef char CS_CHAR; │ │ │ │ │ -41typedef unsigned char CS_BYTE; │ │ │ │ │ -42typedef tds_sysdep_real32_type CS_REAL; │ │ │ │ │ -43typedef tds_sysdep_real64_type CS_FLOAT; │ │ │ │ │ -44typedef int32_t CS_BOOL; │ │ │ │ │ -45typedef void CS_VOID; │ │ │ │ │ -46typedef unsigned char CS_IMAGE; │ │ │ │ │ -47typedef unsigned char CS_TEXT; │ │ │ │ │ -48typedef unsigned char CS_LONGBINARY; │ │ │ │ │ -49typedef unsigned char CS_LONGCHAR; │ │ │ │ │ -50typedef long CS_LONG; │ │ │ │ │ -51typedef unsigned char CS_BINARY; │ │ │ │ │ -52typedef uint16_t CS_USHORT; │ │ │ │ │ -53typedef unsigned char CS_BIT; │ │ │ │ │ -54 │ │ │ │ │ -55typedef CS_INT CS_RETCODE; │ │ │ │ │ -56 │ │ │ │ │ -57#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -58#define CS_MAX_NAME 132 │ │ │ │ │ -59#else │ │ │ │ │ -60#define CS_MAX_NAME 255 │ │ │ │ │ -61#endif │ │ │ │ │ -62#define CS_MAX_CHAR 256 │ │ │ │ │ -63#define CS_MAX_SCALE 77 │ │ │ │ │ -64#define CS_MAX_PREC 77 /* used by php */ │ │ │ │ │ -65#define CS_MAX_NUMLEN 33 /* used by roguewave */ │ │ │ │ │ -66#define CS_MAX_MSG 1024 │ │ │ │ │ -67#define CS_SQLSTATE_SIZE 8 │ │ │ │ │ -68#define CS_OBJ_NAME 400 │ │ │ │ │ -69#define CS_TP_SIZE 16 /* text pointer */ │ │ │ │ │ -70#define CS_TS_SIZE 8 /* length of timestamp */ │ │ │ │ │ -71 │ │ │ │ │ -72 │ │ │ │ │ -73typedef struct _cs_numeric │ │ │ │ │ -74{ │ │ │ │ │ -75 unsigned char precision; │ │ │ │ │ -76 unsigned char scale; │ │ │ │ │ -77 unsigned char array[CS_MAX_NUMLEN]; │ │ │ │ │ -78} CS_NUMERIC; │ │ │ │ │ +33#undef TDS_STATIC_CAST │ │ │ │ │ +34#ifdef __cplusplus │ │ │ │ │ +35#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ +36extern "C" │ │ │ │ │ +37{ │ │ │ │ │ +38#if 0 │ │ │ │ │ +39} │ │ │ │ │ +40#endif │ │ │ │ │ +41#else │ │ │ │ │ +42#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ +43#endif │ │ │ │ │ +44 │ │ │ │ │ +45#ifdef FALSE │ │ │ │ │ +46#undef FALSE │ │ │ │ │ +47#endif │ │ │ │ │ +48#ifdef TRUE │ │ │ │ │ +49#undef TRUE │ │ │ │ │ +50#endif │ │ │ │ │ +51#define FALSE 0 │ │ │ │ │ +52#define TRUE 1 │ │ │ │ │ +53 │ │ │ │ │ +54#define DBSAVE 1 │ │ │ │ │ +55#define DBNOSAVE 0 │ │ │ │ │ +56#define DBNOERR -1 │ │ │ │ │ +57 │ │ │ │ │ +58#define INT_EXIT 0 │ │ │ │ │ +59#define INT_CONTINUE 1 │ │ │ │ │ +60#define INT_CANCEL 2 │ │ │ │ │ +61#define INT_TIMEOUT 3 │ │ │ │ │ +62 │ │ │ │ │ +63#define DBMAXNUMLEN 33 │ │ │ │ │ +64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */ │ │ │ │ │ +65#define DBMAXNAME 128 │ │ │ │ │ +66 │ │ │ │ │ +70#define DBVERSION_UNKNOWN 0 │ │ │ │ │ +71#define DBVERSION_46 1 │ │ │ │ │ +72#define DBVERSION_100 2 │ │ │ │ │ +73#define DBVERSION_42 3 │ │ │ │ │ +74#define DBVERSION_70 4 │ │ │ │ │ +75#define DBVERSION_71 5 │ │ │ │ │ +76#define DBVERSION_72 6 │ │ │ │ │ +77#define DBVERSION_73 7 │ │ │ │ │ +78#define DBVERSION_74 8 │ │ │ │ │ 79 │ │ │ │ │ -80typedef CS_NUMERIC CS_DECIMAL; │ │ │ │ │ -81 │ │ │ │ │ -82typedef struct _cs_varbinary │ │ │ │ │ -83{ │ │ │ │ │ -84 CS_SMALLINT len; │ │ │ │ │ -85 CS_CHAR array[256]; │ │ │ │ │ -86} CS_VARBINARY; │ │ │ │ │ -87 │ │ │ │ │ -88typedef struct _cs_varchar │ │ │ │ │ -89{ │ │ │ │ │ -90 CS_SMALLINT len; /* length of the string */ │ │ │ │ │ -91 CS_CHAR str[256]; /* string, no NULL terminator */ │ │ │ │ │ -92} CS_VARCHAR; │ │ │ │ │ -93 │ │ │ │ │ -94typedef struct _cs_config CS_CONFIG; │ │ │ │ │ -95typedef struct _cs_context CS_CONTEXT; │ │ │ │ │ -96typedef struct _cs_connection CS_CONNECTION; │ │ │ │ │ -97typedef struct _cs_locale CS_LOCALE; │ │ │ │ │ -98typedef struct _cs_command CS_COMMAND; │ │ │ │ │ -99typedef struct _cs_blk_row CS_BLK_ROW; │ │ │ │ │ -100 │ │ │ │ │ -101typedef struct _cs_iodesc │ │ │ │ │ -102{ │ │ │ │ │ -103 CS_INT iotype; │ │ │ │ │ -104 CS_INT datatype; │ │ │ │ │ -105 CS_LOCALE *locale; │ │ │ │ │ -106 CS_INT usertype; │ │ │ │ │ -107 CS_INT total_txtlen; │ │ │ │ │ -108 CS_INT offset; │ │ │ │ │ -109 CS_BOOL log_on_update; │ │ │ │ │ -110 CS_CHAR name[CS_OBJ_NAME]; │ │ │ │ │ -111 CS_INT namelen; │ │ │ │ │ -112 CS_BYTE timestamp[CS_TS_SIZE]; │ │ │ │ │ -113 CS_INT timestamplen; │ │ │ │ │ -114 CS_BYTE textptr[CS_TP_SIZE]; │ │ │ │ │ -115 CS_INT textptrlen; │ │ │ │ │ -116} CS_IODESC; │ │ │ │ │ -117 │ │ │ │ │ -118typedef struct _cs_datafmt │ │ │ │ │ -119{ │ │ │ │ │ -120#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -121 CS_CHAR name[CS_MAX_NAME]; │ │ │ │ │ -122#else │ │ │ │ │ -123 CS_CHAR name[CS_MAX_CHAR]; │ │ │ │ │ -124#endif │ │ │ │ │ -125 CS_INT namelen; │ │ │ │ │ -126 CS_INT datatype; │ │ │ │ │ -127 CS_INT format; │ │ │ │ │ -128 CS_INT maxlength; │ │ │ │ │ -129 CS_INT scale; │ │ │ │ │ -130 CS_INT precision; │ │ │ │ │ -131 CS_INT status; │ │ │ │ │ -132 CS_INT count; │ │ │ │ │ -133 CS_INT usertype; │ │ │ │ │ -134 CS_LOCALE *locale; │ │ │ │ │ -135} CS_DATAFMT; │ │ │ │ │ -136 │ │ │ │ │ -137typedef struct _cs_money │ │ │ │ │ -138{ │ │ │ │ │ -139 CS_INT mnyhigh; │ │ │ │ │ -140 CS_UINT mnylow; │ │ │ │ │ -141} CS_MONEY; │ │ │ │ │ -142 │ │ │ │ │ -143typedef struct _cs_money4 │ │ │ │ │ -144{ │ │ │ │ │ -145 CS_INT mny4; │ │ │ │ │ -146} CS_MONEY4; │ │ │ │ │ -147 │ │ │ │ │ -148typedef CS_INT CS_DATE; │ │ │ │ │ -149 │ │ │ │ │ -150typedef CS_INT CS_TIME; │ │ │ │ │ -151 │ │ │ │ │ -152typedef CS_UBIGINT CS_BIGDATETIME; │ │ │ │ │ -153typedef CS_UBIGINT CS_BIGTIME; │ │ │ │ │ -154 │ │ │ │ │ -155typedef struct _cs_datetime │ │ │ │ │ -156{ │ │ │ │ │ -157 CS_INT dtdays; │ │ │ │ │ -158 CS_INT dttime; │ │ │ │ │ -159} CS_DATETIME; │ │ │ │ │ -160 │ │ │ │ │ -161typedef struct _cs_datetime4 │ │ │ │ │ -162{ │ │ │ │ │ -163 CS_USHORT days; │ │ │ │ │ -164 CS_USHORT minutes; │ │ │ │ │ -165} CS_DATETIME4; │ │ │ │ │ -166 │ │ │ │ │ -167typedef struct _cs_daterec │ │ │ │ │ -168{ │ │ │ │ │ -169 CS_INT dateyear; │ │ │ │ │ -170 CS_INT datemonth; │ │ │ │ │ -171 CS_INT datedmonth; │ │ │ │ │ -172 CS_INT datedyear; │ │ │ │ │ -173 CS_INT datedweek; │ │ │ │ │ -174 CS_INT datehour; │ │ │ │ │ -175 CS_INT dateminute; │ │ │ │ │ -176 CS_INT datesecond; │ │ │ │ │ -177 CS_INT datemsecond; │ │ │ │ │ -178 CS_INT datetzone; │ │ │ │ │ -179 CS_INT datesecfrac; │ │ │ │ │ -180 CS_INT datesecprec; │ │ │ │ │ -181} CS_DATEREC; │ │ │ │ │ -182 │ │ │ │ │ -183typedef CS_INT CS_MSGNUM; │ │ │ │ │ -184 │ │ │ │ │ -185typedef struct _cs_clientmsg │ │ │ │ │ -186{ │ │ │ │ │ -187 CS_INT severity; │ │ │ │ │ -188 CS_MSGNUM msgnumber; │ │ │ │ │ -189 CS_CHAR msgstring[CS_MAX_MSG]; │ │ │ │ │ -190 CS_INT msgstringlen; │ │ │ │ │ -191 CS_INT osnumber; │ │ │ │ │ -192 CS_CHAR osstring[CS_MAX_MSG]; │ │ │ │ │ -193 CS_INT osstringlen; │ │ │ │ │ -194 CS_INT status; │ │ │ │ │ -195 CS_BYTE sqlstate[CS_SQLSTATE_SIZE]; │ │ │ │ │ -196 CS_INT sqlstatelen; │ │ │ │ │ -197} CS_CLIENTMSG; │ │ │ │ │ -198 │ │ │ │ │ -199typedef struct _cs_servermsg │ │ │ │ │ -200{ │ │ │ │ │ -201 CS_MSGNUM msgnumber; │ │ │ │ │ -202 CS_INT state; │ │ │ │ │ -203 CS_INT severity; │ │ │ │ │ -204 CS_CHAR text[CS_MAX_MSG]; │ │ │ │ │ -205 CS_INT textlen; │ │ │ │ │ -206#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -207 CS_CHAR svrname[CS_MAX_NAME]; │ │ │ │ │ -208 CS_INT svrnlen; │ │ │ │ │ -209 CS_CHAR proc[CS_MAX_NAME]; │ │ │ │ │ -210#else │ │ │ │ │ -211 CS_CHAR svrname[CS_MAX_CHAR]; │ │ │ │ │ -212 CS_INT svrnlen; │ │ │ │ │ -213 CS_CHAR proc[CS_MAX_CHAR]; │ │ │ │ │ -214#endif │ │ │ │ │ -215 CS_INT proclen; │ │ │ │ │ -216 CS_INT line; │ │ │ │ │ -217 CS_INT status; │ │ │ │ │ -218 CS_BYTE sqlstate[CS_SQLSTATE_SIZE]; │ │ │ │ │ -219 CS_INT sqlstatelen; │ │ │ │ │ -220} CS_SERVERMSG; │ │ │ │ │ -221 │ │ │ │ │ -222#ifdef __cplusplus │ │ │ │ │ -223#if 0 │ │ │ │ │ -224{ │ │ │ │ │ -225#endif │ │ │ │ │ -226} │ │ │ │ │ -227#endif │ │ │ │ │ -228 │ │ │ │ │ -229#endif │ │ │ │ │ -_cs_numeric │ │ │ │ │ -Definition cstypes.h:74 │ │ │ │ │ -_cs_varbinary │ │ │ │ │ -Definition cstypes.h:83 │ │ │ │ │ -_cs_varchar │ │ │ │ │ -Definition cstypes.h:89 │ │ │ │ │ -_cs_iodesc │ │ │ │ │ -Definition cstypes.h:102 │ │ │ │ │ -_cs_datafmt │ │ │ │ │ -Definition cstypes.h:119 │ │ │ │ │ -_cs_money │ │ │ │ │ -Definition cstypes.h:138 │ │ │ │ │ -_cs_money4 │ │ │ │ │ -Definition cstypes.h:144 │ │ │ │ │ -_cs_datetime │ │ │ │ │ -Definition cstypes.h:156 │ │ │ │ │ -_cs_datetime4 │ │ │ │ │ -Definition cstypes.h:162 │ │ │ │ │ -_cs_daterec │ │ │ │ │ -Definition cstypes.h:168 │ │ │ │ │ -_cs_clientmsg │ │ │ │ │ -Definition cstypes.h:186 │ │ │ │ │ -_cs_servermsg │ │ │ │ │ -Definition cstypes.h:200 │ │ │ │ │ -_cs_config │ │ │ │ │ -Definition ctlib.h:49 │ │ │ │ │ -_cs_context │ │ │ │ │ -Definition ctlib.h:135 │ │ │ │ │ -_cs_connection │ │ │ │ │ -Definition ctlib.h:188 │ │ │ │ │ -_cs_command │ │ │ │ │ -Definition ctlib.h:284 │ │ │ │ │ -_cs_locale │ │ │ │ │ -Definition ctlib.h:320 │ │ │ │ │ +80/* these two are defined by Microsoft for dbsetlversion() */ │ │ │ │ │ +81#define DBVER42 DBVERSION_42 │ │ │ │ │ +82#define DBVER60 DBVERSION_70 /* our best approximation */ │ │ │ │ │ +83 │ │ │ │ │ +88#define DBTDS_UNKNOWN 0 │ │ │ │ │ +89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */ │ │ │ │ │ +90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */ │ │ │ │ │ +91#define DBTDS_4_0 3 /* 4.0 SQL Server */ │ │ │ │ │ +92#define DBTDS_4_2 4 /* 4.2 SQL Server */ │ │ │ │ │ +93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */ │ │ │ │ │ +94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */ │ │ │ │ │ +95#define DBTDS_5_0 7 /* 5.0 SQL Server */ │ │ │ │ │ +96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */ │ │ │ │ │ +97#define DBTDS_8_0 ("Use DBTDS_7_1 instead"*x) /* Microsoft SQL Server 2000 */ │ │ │ │ │ +98#define DBTDS_9_0 ("Use DBTDS_7_2 instead"*x) /* Microsoft SQL Server 2005 */ │ │ │ │ │ +99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */ │ │ │ │ │ +100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */ │ │ │ │ │ +101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */ │ │ │ │ │ +102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */ │ │ │ │ │ +103#define DBTDS_8_0_ 13 /* Microsoft SQL Server 2022 */ │ │ │ │ │ +104 │ │ │ │ │ +105#define DBTXPLEN 16 │ │ │ │ │ +106 │ │ │ │ │ +107#define BCPMAXERRS 1 │ │ │ │ │ +108#define BCPFIRST 2 │ │ │ │ │ +109#define BCPLAST 3 │ │ │ │ │ +110#define BCPBATCH 4 │ │ │ │ │ +111#define BCPKEEPIDENTITY 8 │ │ │ │ │ +112 │ │ │ │ │ +113#define BCPLABELED 5 │ │ │ │ │ +114#define BCPHINTS 6 │ │ │ │ │ +115 │ │ │ │ │ +116#define DBCMDNONE 0 │ │ │ │ │ +117#define DBCMDPEND 1 │ │ │ │ │ +118#define DBCMDSENT 2 │ │ │ │ │ +119 │ │ │ │ │ +120typedef int RETCODE; │ │ │ │ │ +121 │ │ │ │ │ +122typedef void DBCURSOR; │ │ │ │ │ +123typedef void DBXLATE; │ │ │ │ │ +124typedef void DBSORTORDER; │ │ │ │ │ +125typedef void DBLOGINFO; │ │ │ │ │ +126typedef void *DBVOIDPTR; │ │ │ │ │ +127typedef short SHORT; │ │ │ │ │ +128typedef unsigned short USHORT; │ │ │ │ │ +129typedef int (*INTFUNCPTR) (void *, ...); │ │ │ │ │ +130typedef int (*DBWAITFUNC) (void); │ │ │ │ │ +131typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc); │ │ │ │ │ +132typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc); │ │ │ │ │ +133typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc); │ │ │ │ │ +134typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc); │ │ │ │ │ +135 │ │ │ │ │ +136#ifndef __INCvxWorksh │ │ │ │ │ +137/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you │ │ │ │ │ +138** redefine them. */ │ │ │ │ │ +139/* __INCvxWorksh will get #defined by std. include files included from tds.h │ │ │ │ │ +140*/ │ │ │ │ │ +141#ifdef STATUS │ │ │ │ │ +142/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h │ │ │ │ │ +143 when _REENTRANT is defined. │ │ │ │ │ +144*/ │ │ │ │ │ +145#undef STATUS │ │ │ │ │ +146#endif │ │ │ │ │ +147typedef int STATUS; │ │ │ │ │ +148#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X) │ │ │ │ │ +149typedef int BOOL; │ │ │ │ │ +150#endif │ │ │ │ │ +151#endif │ │ │ │ │ +152 │ │ │ │ │ +153#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +154/* copied from tds.h */ │ │ │ │ │ +155/* TODO find a best way... */ │ │ │ │ │ +156enum │ │ │ │ │ +157{ │ │ │ │ │ +158 SYBCHAR = 47, /* 0x2F */ │ │ │ │ │ +159#define SYBCHAR SYBCHAR │ │ │ │ │ +160 SYBVARCHAR = 39, /* 0x27 */ │ │ │ │ │ +161#define SYBVARCHAR SYBVARCHAR │ │ │ │ │ +162 SYBINTN = 38, /* 0x26 */ │ │ │ │ │ +163#define SYBINTN SYBINTN │ │ │ │ │ +164 SYBINT1 = 48, /* 0x30 */ │ │ │ │ │ +165#define SYBINT1 SYBINT1 │ │ │ │ │ +166 SYBINT2 = 52, /* 0x34 */ │ │ │ │ │ +167#define SYBINT2 SYBINT2 │ │ │ │ │ +168 SYBINT4 = 56, /* 0x38 */ │ │ │ │ │ +169#define SYBINT4 SYBINT4 │ │ │ │ │ +170 SYBINT8 = 127, /* 0x7F */ │ │ │ │ │ +171#define SYBINT8 SYBINT8 │ │ │ │ │ +172 SYBFLT8 = 62, /* 0x3E */ │ │ │ │ │ +173#define SYBFLT8 SYBFLT8 │ │ │ │ │ +174 SYBDATETIME = 61, /* 0x3D */ │ │ │ │ │ +175#define SYBDATETIME SYBDATETIME │ │ │ │ │ +176 SYBBIT = 50, /* 0x32 */ │ │ │ │ │ +177#define SYBBIT SYBBIT │ │ │ │ │ +178 SYBBITN = 104, /* 0x68 */ │ │ │ │ │ +179#define SYBBITN SYBBITN │ │ │ │ │ +180 SYBTEXT = 35, /* 0x23 */ │ │ │ │ │ +181#define SYBTEXT SYBTEXT │ │ │ │ │ +182 SYBNTEXT = 99, /* 0x63 */ │ │ │ │ │ +183#define SYBNTEXT SYBNTEXT │ │ │ │ │ +184 SYBIMAGE = 34, /* 0x22 */ │ │ │ │ │ +185#define SYBIMAGE SYBIMAGE │ │ │ │ │ +186 SYBMONEY4 = 122, /* 0x7A */ │ │ │ │ │ +187#define SYBMONEY4 SYBMONEY4 │ │ │ │ │ +188 SYBMONEY = 60, /* 0x3C */ │ │ │ │ │ +189#define SYBMONEY SYBMONEY │ │ │ │ │ +190 SYBDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ +191#define SYBDATETIME4 SYBDATETIME4 │ │ │ │ │ +192 SYBREAL = 59, /* 0x3B */ │ │ │ │ │ +193#define SYBREAL SYBREAL │ │ │ │ │ +194 SYBBINARY = 45, /* 0x2D */ │ │ │ │ │ +195#define SYBBINARY SYBBINARY │ │ │ │ │ +196 SYBVOID = 31, /* 0x1F */ │ │ │ │ │ +197#define SYBVOID SYBVOID │ │ │ │ │ +198 SYBVARBINARY = 37, /* 0x25 */ │ │ │ │ │ +199#define SYBVARBINARY SYBVARBINARY │ │ │ │ │ +200 SYBNUMERIC = 108, /* 0x6C */ │ │ │ │ │ +201#define SYBNUMERIC SYBNUMERIC │ │ │ │ │ +202 SYBDECIMAL = 106, /* 0x6A */ │ │ │ │ │ +203#define SYBDECIMAL SYBDECIMAL │ │ │ │ │ +204 SYBFLTN = 109, /* 0x6D */ │ │ │ │ │ +205#define SYBFLTN SYBFLTN │ │ │ │ │ +206 SYBMONEYN = 110, /* 0x6E */ │ │ │ │ │ +207#define SYBMONEYN SYBMONEYN │ │ │ │ │ +208 SYBDATETIMN = 111, /* 0x6F */ │ │ │ │ │ +209#define SYBDATETIMN SYBDATETIMN │ │ │ │ │ +210 SYBNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ +211#define SYBNVARCHAR SYBNVARCHAR │ │ │ │ │ +212 SYBDATE = 49, /* 0x31 */ │ │ │ │ │ +213#define SYBDATE SYBDATE │ │ │ │ │ +214 SYBTIME = 51, /* 0x33 */ │ │ │ │ │ +215#define SYBTIME SYBTIME │ │ │ │ │ +216 SYBBIGDATETIME = 187, /* 0xBB */ │ │ │ │ │ +217#define SYBBIGDATETIME SYBBIGDATETIME │ │ │ │ │ +218 SYBBIGTIME = 188, /* 0xBC */ │ │ │ │ │ +219#define SYBBIGTIME SYBBIGTIME │ │ │ │ │ +220 SYBMSDATE = 40, /* 0x28 */ │ │ │ │ │ +221#define SYBMSDATE SYBMSDATE │ │ │ │ │ +222 SYBMSTIME = 41, /* 0x29 */ │ │ │ │ │ +223#define SYBMSTIME SYBMSTIME │ │ │ │ │ +224 SYBMSDATETIME2 = 42, /* 0x2A */ │ │ │ │ │ +225#define SYBMSDATETIME2 SYBMSDATETIME2 │ │ │ │ │ +226 SYBMSDATETIMEOFFSET = 43, /* 0x2B */ │ │ │ │ │ +227#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET │ │ │ │ │ +228}; │ │ │ │ │ +229 │ │ │ │ │ +230#define SYBAOPCNT 0x4b │ │ │ │ │ +231#define SYBAOPCNTU 0x4c │ │ │ │ │ +232#define SYBAOPSUM 0x4d │ │ │ │ │ +233#define SYBAOPSUMU 0x4e │ │ │ │ │ +234#define SYBAOPAVG 0x4f │ │ │ │ │ +235#define SYBAOPAVGU 0x50 │ │ │ │ │ +236#define SYBAOPMIN 0x51 │ │ │ │ │ +237#define SYBAOPMAX 0x52 │ │ │ │ │ +238 │ │ │ │ │ +239/* mssql2k compute operator */ │ │ │ │ │ +240#define SYBAOPCNT_BIG 0x09 │ │ │ │ │ +241#define SYBAOPSTDEV 0x30 │ │ │ │ │ +242#define SYBAOPSTDEVP 0x31 │ │ │ │ │ +243#define SYBAOPVAR 0x32 │ │ │ │ │ +244#define SYBAOPVARP 0x33 │ │ │ │ │ +245#define SYBAOPCHECKSUM_AGG 0x72 │ │ │ │ │ +246 │ │ │ │ │ +247#endif │ │ │ │ │ +248 │ │ │ │ │ +249typedef unsigned char DBBOOL; │ │ │ │ │ +250typedef char DBCHAR; │ │ │ │ │ +251typedef unsigned char DBBIT; │ │ │ │ │ +252typedef unsigned char DBTINYINT; │ │ │ │ │ +253typedef int16_t DBSMALLINT; │ │ │ │ │ +254typedef int32_t DBINT; │ │ │ │ │ +255typedef int64_t DBBIGINT; │ │ │ │ │ +256typedef unsigned char DBBINARY; │ │ │ │ │ +257typedef tds_sysdep_real32_type DBREAL; │ │ │ │ │ +258typedef tds_sysdep_real64_type DBFLT8; │ │ │ │ │ +259typedef uint16_t DBUSMALLINT; │ │ │ │ │ +260typedef uint32_t DBUINT; │ │ │ │ │ +261typedef uint64_t DBUBIGINT; │ │ │ │ │ +262 │ │ │ │ │ +263typedef struct │ │ │ │ │ +264{ │ │ │ │ │ +265 DBSMALLINT len; │ │ │ │ │ +266 char str[256]; │ │ │ │ │ +267} DBVARYCHAR; │ │ │ │ │ +268 │ │ │ │ │ +269typedef struct │ │ │ │ │ +270{ │ │ │ │ │ +271 DBSMALLINT len; │ │ │ │ │ +272 unsigned char array[256]; │ │ │ │ │ +273} DBVARYBIN; │ │ │ │ │ +274 │ │ │ │ │ +275typedef struct │ │ │ │ │ +276{ │ │ │ │ │ +277 unsigned char precision; │ │ │ │ │ +278 unsigned char scale; │ │ │ │ │ +279 unsigned char array[33]; │ │ │ │ │ +280} DBNUMERIC; │ │ │ │ │ +281 │ │ │ │ │ +282typedef DBNUMERIC DBDECIMAL; │ │ │ │ │ +283 │ │ │ │ │ +284typedef struct │ │ │ │ │ +285{ │ │ │ │ │ +286 DBINT mnyhigh; │ │ │ │ │ +287 DBUINT mnylow; │ │ │ │ │ +288} DBMONEY; │ │ │ │ │ +289 │ │ │ │ │ +290typedef struct │ │ │ │ │ +291{ │ │ │ │ │ +292 DBINT mny4; │ │ │ │ │ +293} DBMONEY4; │ │ │ │ │ +294 │ │ │ │ │ +295typedef struct │ │ │ │ │ +296{ │ │ │ │ │ +297 DBINT dtdays; │ │ │ │ │ +298 DBINT dttime; │ │ │ │ │ +299} DBDATETIME; │ │ │ │ │ +300 │ │ │ │ │ +301typedef struct │ │ │ │ │ +302{ │ │ │ │ │ +303 DBUSMALLINT days; /* days since Jan-1-1900 */ │ │ │ │ │ +304 DBUSMALLINT minutes; /* minutes since midnight */ │ │ │ │ │ +305} DBDATETIME4; │ │ │ │ │ +306 │ │ │ │ │ +307typedef struct │ │ │ │ │ +308{ │ │ │ │ │ +309 DBUBIGINT time; │ │ │ │ │ +310 DBINT date; │ │ │ │ │ +311 DBSMALLINT offset; │ │ │ │ │ +312 DBUSMALLINT time_prec:3; │ │ │ │ │ +313/* fix a problem with some public headers defining _res */ │ │ │ │ │ +314#undef _res │ │ │ │ │ +315 DBUSMALLINT _res:10; │ │ │ │ │ +316 DBUSMALLINT has_time:1; │ │ │ │ │ +317 DBUSMALLINT has_date:1; │ │ │ │ │ +318 DBUSMALLINT has_offset:1; │ │ │ │ │ +319} DBDATETIMEALL; │ │ │ │ │ +320 │ │ │ │ │ +321#ifdef MSDBLIB │ │ │ │ │ +322# define SQLCHAR SYBCHAR │ │ │ │ │ +323 typedef struct │ │ │ │ │ +324 { │ │ │ │ │ +325 DBUSMALLINT numdays; │ │ │ │ │ +326 DBUSMALLINT nummins; │ │ │ │ │ +327 } DBDATETIM4; │ │ │ │ │ +328#endif │ │ │ │ │ +329 │ │ │ │ │ +330typedef struct tds_dblib_loginrec LOGINREC; │ │ │ │ │ +331 │ │ │ │ │ +332#ifndef DOS32X │ │ │ │ │ +333typedef unsigned char BYTE; │ │ │ │ │ +334#endif │ │ │ │ │ +335 │ │ │ │ │ +336typedef struct dbtypeinfo │ │ │ │ │ +337{ │ │ │ │ │ +338 DBINT precision; │ │ │ │ │ +339 DBINT scale; │ │ │ │ │ +340} DBTYPEINFO; │ │ │ │ │ +341 │ │ │ │ │ +342struct dbstring │ │ │ │ │ +343{ │ │ │ │ │ +344 BYTE *strtext; │ │ │ │ │ +345 DBINT strtotlen; │ │ │ │ │ +346 struct dbstring *strnext; │ │ │ │ │ +347}; │ │ │ │ │ +348typedef struct dbstring DBSTRING; │ │ │ │ │ +349 │ │ │ │ │ +350/* Used by dbcolinfo */ │ │ │ │ │ +351enum │ │ │ │ │ +352{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */ │ │ │ │ │ +353typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE; │ │ │ │ │ +354 │ │ │ │ │ +355typedef struct │ │ │ │ │ +356{ │ │ │ │ │ +357 DBINT SizeOfStruct; │ │ │ │ │ +358 DBCHAR Name[MAXCOLNAMELEN+2]; │ │ │ │ │ +359 DBCHAR ActualName[MAXCOLNAMELEN+2]; │ │ │ │ │ +360 DBCHAR TableName[MAXCOLNAMELEN+2]; │ │ │ │ │ +361 SHORT Type; │ │ │ │ │ +362 DBINT UserType; │ │ │ │ │ +363 DBINT MaxLength; │ │ │ │ │ +364 BYTE Precision; │ │ │ │ │ +365 BYTE Scale; │ │ │ │ │ +366 BOOL VarLength; │ │ │ │ │ +367 BYTE Null; │ │ │ │ │ +368 BYTE CaseSensitive; │ │ │ │ │ +369 BYTE Updatable; │ │ │ │ │ +370 BOOL Identity; │ │ │ │ │ +371 │ │ │ │ │ +372} DBCOL; │ │ │ │ │ +373 │ │ │ │ │ +374typedef struct │ │ │ │ │ +375{ │ │ │ │ │ +376 DBINT SizeOfStruct; │ │ │ │ │ +377 DBCHAR Name[MAXCOLNAMELEN+2]; │ │ │ │ │ +378 DBCHAR ActualName[MAXCOLNAMELEN+2]; │ │ │ │ │ +379 DBCHAR TableName[MAXCOLNAMELEN+2]; │ │ │ │ │ +380 SHORT Type; │ │ │ │ │ +381 DBINT UserType; │ │ │ │ │ +382 DBINT MaxLength; │ │ │ │ │ +383 BYTE Precision; │ │ │ │ │ +384 BYTE Scale; │ │ │ │ │ +385 BOOL VarLength; │ │ │ │ │ +386 BYTE Null; │ │ │ │ │ +387 BYTE CaseSensitive; │ │ │ │ │ +388 BYTE Updatable; │ │ │ │ │ +389 BOOL Identity; │ │ │ │ │ +390 SHORT ServerType; │ │ │ │ │ +391 DBINT ServerMaxLength; │ │ │ │ │ +392 DBCHAR ServerTypeDeclaration[256]; │ │ │ │ │ +393} DBCOL2; │ │ │ │ │ +394/* end dbcolinfo stuff */ │ │ │ │ │ +395 │ │ │ │ │ +396 │ │ │ │ │ +397 │ │ │ │ │ +398/* a large list of options, DBTEXTSIZE is needed by sybtcl */ │ │ │ │ │ +399#define DBPARSEONLY 0 │ │ │ │ │ +400#define DBESTIMATE 1 │ │ │ │ │ +401#define DBSHOWPLAN 2 │ │ │ │ │ +402#define DBNOEXEC 3 │ │ │ │ │ +403#define DBARITHIGNORE 4 │ │ │ │ │ +404#define DBNOCOUNT 5 │ │ │ │ │ +405#define DBARITHABORT 6 │ │ │ │ │ +406#define DBTEXTLIMIT 7 │ │ │ │ │ +407#define DBBROWSE 8 │ │ │ │ │ +408#define DBOFFSET 9 │ │ │ │ │ +409#define DBSTAT 10 │ │ │ │ │ +410#define DBERRLVL 11 │ │ │ │ │ +411#define DBCONFIRM 12 │ │ │ │ │ +412#define DBSTORPROCID 13 │ │ │ │ │ +413#define DBBUFFER 14 │ │ │ │ │ +414#define DBNOAUTOFREE 15 │ │ │ │ │ +415#define DBROWCOUNT 16 │ │ │ │ │ +416#define DBTEXTSIZE 17 │ │ │ │ │ +417#define DBNATLANG 18 │ │ │ │ │ +418#define DBDATEFORMAT 19 │ │ │ │ │ +419#define DBPRPAD 20 │ │ │ │ │ +420#define DBPRCOLSEP 21 │ │ │ │ │ +421#define DBPRLINELEN 22 │ │ │ │ │ +422#define DBPRLINESEP 23 │ │ │ │ │ +423#define DBLFCONVERT 24 │ │ │ │ │ +424#define DBDATEFIRST 25 │ │ │ │ │ +425#define DBCHAINXACTS 26 │ │ │ │ │ +426#define DBFIPSFLAG 27 │ │ │ │ │ +427#define DBISOLATION 28 │ │ │ │ │ +428#define DBAUTH 29 │ │ │ │ │ +429#define DBIDENTITY 30 │ │ │ │ │ +430#define DBNOIDCOL 31 │ │ │ │ │ +431#define DBDATESHORT 32 │ │ │ │ │ +432#define DBCLIENTCURSORS 33 │ │ │ │ │ +433#define DBSETTIME 34 │ │ │ │ │ +434#define DBQUOTEDIDENT 35 │ │ │ │ │ +435 │ │ │ │ │ +436#define DBNUMOPTIONS 36 │ │ │ │ │ +437 │ │ │ │ │ +438#define DBPADOFF 0 │ │ │ │ │ +439#define DBPADON 1 │ │ │ │ │ +440 │ │ │ │ │ +441#define OFF 0 │ │ │ │ │ +442#define ON 1 │ │ │ │ │ +443 │ │ │ │ │ +444#define NOSUCHOPTION 2 │ │ │ │ │ +445 │ │ │ │ │ +446#define MAXOPTTEXT 32 │ │ │ │ │ +447 │ │ │ │ │ +448typedef struct tds_dblib_dbprocess DBPROCESS; │ │ │ │ │ +449 │ │ │ │ │ +450/* │ │ │ │ │ +451 * Sybase & Microsoft use different names for the dbdaterec members. │ │ │ │ │ +452 * Keep these two structures physically identical in memory. │ │ │ │ │ +453 * dbdatecrack() casts one to the other for ease of implementation. │ │ │ │ │ +454 * │ │ │ │ │ +455 * Giving credit where credit is due, we can acknowledge that │ │ │ │ │ +456 * Microsoft chose the better names here, hands down. ("datedmonth"?!) │ │ │ │ │ +457 */ │ │ │ │ │ +458struct tds_microsoft_dbdaterec │ │ │ │ │ +459{ │ │ │ │ │ +460 DBINT year; /* 1753 - 9999 */ │ │ │ │ │ +461 DBINT quarter; /* 1 - 4 */ │ │ │ │ │ +462 DBINT month; /* 1 - 12 */ │ │ │ │ │ +463 DBINT day; /* 1 - 31 */ │ │ │ │ │ +464 DBINT dayofyear; /* 1 - 366 */ │ │ │ │ │ +465 DBINT week; /* 1 - 54 (for leap years) */ │ │ │ │ │ +466 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */ │ │ │ │ │ +467 DBINT hour; /* 0 - 23 */ │ │ │ │ │ +468 DBINT minute; /* 0 - 59 */ │ │ │ │ │ +469 DBINT second; /* 0 - 59 */ │ │ │ │ │ +470 DBINT millisecond; /* 0 - 999 */ │ │ │ │ │ +471 DBINT tzone; /* -840 - 840 */ │ │ │ │ │ +472}; │ │ │ │ │ +473 │ │ │ │ │ +474struct tds_sybase_dbdaterec │ │ │ │ │ +475{ │ │ │ │ │ +476 DBINT dateyear; /* 1900 and counting */ │ │ │ │ │ +477 DBINT quarter; /* 0 - 3 (Microsoft only) */ │ │ │ │ │ +478 DBINT datemonth; /* 0 - 11 */ │ │ │ │ │ +479 DBINT datedmonth; /* 1 - 31 */ │ │ │ │ │ +480 DBINT datedyear; /* 1 - 366 */ │ │ │ │ │ +481 DBINT week; /* 1 - 54 (Microsoft only) */ │ │ │ │ │ +482 DBINT datedweek; /* 0 - 6 */ │ │ │ │ │ +483 DBINT datehour; /* 0 - 23 */ │ │ │ │ │ +484 DBINT dateminute; /* 0 - 59 */ │ │ │ │ │ +485 DBINT datesecond; /* 0 - 59 */ │ │ │ │ │ +486 DBINT datemsecond; /* 0 - 999 */ │ │ │ │ │ +487 DBINT datetzone; /* -840 - 840 */ │ │ │ │ │ +488}; │ │ │ │ │ +489 │ │ │ │ │ +490struct tds_microsoft_dbdaterec2 │ │ │ │ │ +491{ │ │ │ │ │ +492 DBINT year; /* 1753 - 9999 */ │ │ │ │ │ +493 DBINT quarter; /* 1 - 4 */ │ │ │ │ │ +494 DBINT month; /* 1 - 12 */ │ │ │ │ │ +495 DBINT day; /* 1 - 31 */ │ │ │ │ │ +496 DBINT dayofyear; /* 1 - 366 */ │ │ │ │ │ +497 DBINT week; /* 1 - 54 (for leap years) */ │ │ │ │ │ +498 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */ │ │ │ │ │ +499 DBINT hour; /* 0 - 23 */ │ │ │ │ │ +500 DBINT minute; /* 0 - 59 */ │ │ │ │ │ +501 DBINT second; /* 0 - 59 */ │ │ │ │ │ +502 DBINT nanosecond; /* 0 - 999999999 */ │ │ │ │ │ +503 DBINT tzone; /* 0 - 127 (Sybase only) */ │ │ │ │ │ +504}; │ │ │ │ │ +505 │ │ │ │ │ +506struct tds_sybase_dbdaterec2 │ │ │ │ │ +507{ │ │ │ │ │ +508 DBINT dateyear; /* 1900 and counting */ │ │ │ │ │ +509 DBINT quarter; /* 0 - 3 (Microsoft only) */ │ │ │ │ │ +510 DBINT datemonth; /* 0 - 11 */ │ │ │ │ │ +511 DBINT datedmonth; /* 1 - 31 */ │ │ │ │ │ +512 DBINT datedyear; /* 1 - 366 */ │ │ │ │ │ +513 DBINT week; /* 1 - 54 (Microsoft only) */ │ │ │ │ │ +514 DBINT datedweek; /* 0 - 6 */ │ │ │ │ │ +515 DBINT datehour; /* 0 - 23 */ │ │ │ │ │ +516 DBINT dateminute; /* 0 - 59 */ │ │ │ │ │ +517 DBINT datesecond; /* 0 - 59 */ │ │ │ │ │ +518 DBINT datensecond; /* 0 - 999999999 */ │ │ │ │ │ +519 DBINT datetzone; /* 0 - 127 */ │ │ │ │ │ +520}; │ │ │ │ │ +521 │ │ │ │ │ +522 │ │ │ │ │ +523#ifdef MSDBLIB │ │ │ │ │ +524typedef struct tds_microsoft_dbdaterec DBDATEREC; │ │ │ │ │ +525typedef struct tds_microsoft_dbdaterec2 DBDATEREC2; │ │ │ │ │ +526#else │ │ │ │ │ +527typedef struct tds_sybase_dbdaterec DBDATEREC; │ │ │ │ │ +528typedef struct tds_sybase_dbdaterec2 DBDATEREC2; │ │ │ │ │ +529#endif │ │ │ │ │ +530 │ │ │ │ │ +531typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int │ │ │ │ │ +oserr, char *dberrstr, char *oserrstr); │ │ │ │ │ +532 │ │ │ │ │ +533typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, │ │ │ │ │ +int severity, char *msgtext, char *srvname, │ │ │ │ │ +534 char *proc, int line); │ │ │ │ │ +535 │ │ │ │ │ +536/* dbpoll() result codes, sybtcl needs DBRESULT */ │ │ │ │ │ +537#define DBRESULT 1 │ │ │ │ │ +538#define DBNOTIFICATION 2 │ │ │ │ │ +539#define DBTIMEOUT 3 │ │ │ │ │ +540#define DBINTERRUPT 4 │ │ │ │ │ +541 │ │ │ │ │ +542/* more sybtcl needs: */ │ │ │ │ │ +543#define DBTXTSLEN 8 │ │ │ │ │ +544 │ │ │ │ │ +545/* bind types */ │ │ │ │ │ +546#define CHARBIND 0 │ │ │ │ │ +547#define STRINGBIND 1 │ │ │ │ │ +548#define NTBSTRINGBIND 2 │ │ │ │ │ +549#define VARYCHARBIND 3 │ │ │ │ │ +550#define VARYBINBIND 4 │ │ │ │ │ +551#define TINYBIND 6 │ │ │ │ │ +552#define SMALLBIND 7 │ │ │ │ │ +553#define INTBIND 8 │ │ │ │ │ +554#define FLT8BIND 9 │ │ │ │ │ +555#define REALBIND 10 │ │ │ │ │ +556#define DATETIMEBIND 11 │ │ │ │ │ +557#define SMALLDATETIMEBIND 12 │ │ │ │ │ +558#define MONEYBIND 13 │ │ │ │ │ +559#define SMALLMONEYBIND 14 │ │ │ │ │ +560#define BINARYBIND 15 │ │ │ │ │ +561#define BITBIND 16 │ │ │ │ │ +562#define NUMERICBIND 17 │ │ │ │ │ +563#define DECIMALBIND 18 │ │ │ │ │ +564#define SRCNUMERICBIND 19 │ │ │ │ │ +565#define SRCDECIMALBIND 20 │ │ │ │ │ +566#define DATEBIND 21 │ │ │ │ │ +567#define TIMEBIND 22 │ │ │ │ │ +568#define BIGDATETIMEBIND 23 │ │ │ │ │ +569#define BIGTIMEBIND 24 │ │ │ │ │ +570#define BIGINTBIND 30 │ │ │ │ │ +571#define DATETIME2BIND 31 │ │ │ │ │ +572#define MAXBINDTYPES 32 /* keep last */ │ │ │ │ │ +573 │ │ │ │ │ +574#define DBPRCOLSEP 21 │ │ │ │ │ +575#define DBPRLINELEN 22 │ │ │ │ │ +576#define DBRPCNORETURN 0 │ │ │ │ │ +577#define DBRPCRETURN 1 │ │ │ │ │ +578#define DBRPCDEFAULT 2 │ │ │ │ │ +579 │ │ │ │ │ +580#define REG_ROW -1 │ │ │ │ │ +581#define MORE_ROWS -1 │ │ │ │ │ +582#define NO_MORE_ROWS -2 │ │ │ │ │ +583#define BUF_FULL -3 │ │ │ │ │ +584#define NO_MORE_RESULTS 2 │ │ │ │ │ +585#define SUCCEED 1 │ │ │ │ │ +586#define FAIL 0 │ │ │ │ │ +587 │ │ │ │ │ +588#define DB_IN 1 │ │ │ │ │ +589#define DB_OUT 2 │ │ │ │ │ +590#define DB_QUERYOUT 3 │ │ │ │ │ +591 │ │ │ │ │ +592#define DBSINGLE 0 │ │ │ │ │ +593#define DBDOUBLE 1 │ │ │ │ │ +594#define DBBOTH 2 │ │ │ │ │ +595 │ │ │ │ │ +596/* remote procedure call (rpc) options */ │ │ │ │ │ +597#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001) │ │ │ │ │ +598#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002) │ │ │ │ │ +599#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008) │ │ │ │ │ +600 │ │ │ │ │ +601#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ +602DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]); │ │ │ │ │ +603 │ │ │ │ │ +604DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum); │ │ │ │ │ +605 │ │ │ │ │ +606RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, │ │ │ │ │ +BYTE * values); │ │ │ │ │ +607RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, │ │ │ │ │ +DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo); │ │ │ │ │ +608void dbcursorclose(DBCURSOR * hc); │ │ │ │ │ +609RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT │ │ │ │ │ +* coltype, DBINT * collen, DBINT * usertype); │ │ │ │ │ +610RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum); │ │ │ │ │ +611RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows); │ │ │ │ │ +612DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, │ │ │ │ │ +SHORT concuropt, USHORT nrows, DBINT * pstatus); │ │ │ │ │ +613 │ │ │ │ │ +614int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2); │ │ │ │ │ +615RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1); │ │ │ │ │ +616RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int │ │ │ │ │ +value); │ │ │ │ │ +617int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * │ │ │ │ │ +datetime); │ │ │ │ │ +618char *dateorder(DBPROCESS * dbprocess, char *language); │ │ │ │ │ +619DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * │ │ │ │ │ +datetime); │ │ │ │ │ +620RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1); │ │ │ │ │ +621char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum); │ │ │ │ │ +622 │ │ │ │ │ +623int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom); │ │ │ │ │ +624 │ │ │ │ │ +625char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname); │ │ │ │ │ +626void dbfreequal(char *qualptr); │ │ │ │ │ +627 │ │ │ │ │ +628DBSORTORDER *dbloadsort(DBPROCESS * dbprocess); │ │ │ │ │ +629RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder); │ │ │ │ │ +630 │ │ │ │ │ +631RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_ │ │ │ │ │ +name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp); │ │ │ │ │ +632 │ │ │ │ │ +633RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, │ │ │ │ │ +DBMONEY4 * quotient); │ │ │ │ │ +634RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ +* prod); │ │ │ │ │ +635RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ +sum); │ │ │ │ │ +636RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY │ │ │ │ │ +* quotient); │ │ │ │ │ +637RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int │ │ │ │ │ +*remainder); │ │ │ │ │ +638RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * │ │ │ │ │ +negative); │ │ │ │ │ +639RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, │ │ │ │ │ +DBBOOL * zero); │ │ │ │ │ +640RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ +prod); │ │ │ │ │ +641RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, │ │ │ │ │ +DBBOOL * zero); │ │ │ │ │ +642RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int │ │ │ │ │ +addend); │ │ │ │ │ +643 │ │ │ │ │ +644 │ │ │ │ │ +645RETCODE dbnpcreate(DBPROCESS * dbprocess); │ │ │ │ │ +646RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, │ │ │ │ │ +DBSMALLINT namelen); │ │ │ │ │ +647 │ │ │ │ │ +648int DBNUMORDERS(DBPROCESS * dbprocess); │ │ │ │ │ +649 │ │ │ │ │ +650RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_ │ │ │ │ │ +dbproc, int *return_reason); │ │ │ │ │ +651int dbordercol(DBPROCESS * dbprocess, int order); │ │ │ │ │ +652 │ │ │ │ │ +653RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ +namelen); │ │ │ │ │ +654RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options); │ │ │ │ │ +655RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ +namelen, INTFUNCPTR handler); │ │ │ │ │ +656RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT │ │ │ │ │ +namelen); │ │ │ │ │ +657RETCODE dbreglist(DBPROCESS * dbproc); │ │ │ │ │ +658RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ +namelen); │ │ │ │ │ +659RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT │ │ │ │ │ +datalen, BYTE * data); │ │ │ │ │ +660RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT │ │ │ │ │ +namelen, DBUSMALLINT options); │ │ │ │ │ +661RETCODE dbregwatchlist(DBPROCESS * dbprocess); │ │ │ │ │ +662 │ │ │ │ │ +663void dbrpwclr(LOGINREC * login); │ │ │ │ │ +664RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int │ │ │ │ │ +pwlen); │ │ │ │ │ +665 │ │ │ │ │ +666DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * │ │ │ │ │ +buf); │ │ │ │ │ +667RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, │ │ │ │ │ +DBINT size, BYTE * buf); │ │ │ │ │ +668 │ │ │ │ │ +669RETCODE dbsetdeflang(char *language); │ │ │ │ │ +670 │ │ │ │ │ +671int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, │ │ │ │ │ +DBSORTORDER * sort); │ │ │ │ │ +672int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, │ │ │ │ │ +DBSORTORDER * sort); │ │ │ │ │ +673 │ │ │ │ │ +674DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum); │ │ │ │ │ +675int dbtabcount(DBPROCESS * dbprocess); │ │ │ │ │ +676char *dbtabname(DBPROCESS * dbprocess, int tabnum); │ │ │ │ │ +677char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum); │ │ │ │ │ +678 │ │ │ │ │ +679RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp); │ │ │ │ │ +680RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp); │ │ │ │ │ +681 │ │ │ │ │ +682RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo); │ │ │ │ │ +683RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo); │ │ │ │ │ +684 │ │ │ │ │ +685int dbtsnewlen(DBPROCESS * dbprocess); │ │ │ │ │ +686DBBINARY *dbtsnewval(DBPROCESS * dbprocess); │ │ │ │ │ +687RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int │ │ │ │ │ +tabnum, char *tabname); │ │ │ │ │ +688 │ │ │ │ │ +689RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * │ │ │ │ │ +clt_todisp); │ │ │ │ │ +690int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int │ │ │ │ │ +destlen, DBXLATE * xlt, int *srcbytes_used, │ │ │ │ │ +691 DBBOOL srcend, int status); │ │ │ │ │ +692 │ │ │ │ │ +693RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text); │ │ │ │ │ +694RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]); │ │ │ │ │ +695 │ │ │ │ │ +696void build_xact_string(char *xact_name, char *service_name, DBINT commid, │ │ │ │ │ +char *result); │ │ │ │ │ +697RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n); │ │ │ │ │ +698RETCODE abort_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ +699void close_commit(DBPROCESS * connect); │ │ │ │ │ +700RETCODE commit_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ +701DBPROCESS *open_commit(LOGINREC * login, char *servername); │ │ │ │ │ +702RETCODE scan_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ +703DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_ │ │ │ │ │ +name, int site_count); │ │ │ │ │ +704DBINT stat_xact(DBPROCESS * connect, DBINT commid); │ │ │ │ │ +705 │ │ │ │ │ +706#endif /* define unimplemented */ │ │ │ │ │ +707 │ │ │ │ │ +708BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +709DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +710RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int │ │ │ │ │ +vartype, DBINT varlen, BYTE * varaddr); │ │ │ │ │ +711RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int │ │ │ │ │ +vartype, DBINT varlen, BYTE * varaddr, │ │ │ │ │ +712 DBTYPEINFO * typeinfo); │ │ │ │ │ +713int dbaltcolid(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +714DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +715int dbaltop(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +716int dbalttype(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +717DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +718RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT │ │ │ │ │ +* indicator); │ │ │ │ │ +719RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, │ │ │ │ │ +BYTE * varaddr); │ │ │ │ │ +720RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT │ │ │ │ │ +varlen, BYTE * varaddr, DBTYPEINFO * typeinfo); │ │ │ │ │ +721int dbbufsize(DBPROCESS * dbprocess); │ │ │ │ │ +722BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size); │ │ │ │ │ +723RETCODE dbcancel(DBPROCESS * dbproc); │ │ │ │ │ +724RETCODE dbcanquery(DBPROCESS * dbproc); │ │ │ │ │ +725char *dbchange(DBPROCESS * dbprocess); │ │ │ │ │ +726DBBOOL dbcharsetconv(DBPROCESS * dbprocess); │ │ │ │ │ +727void dbclose(DBPROCESS * dbproc); │ │ │ │ │ +728void dbclrbuf(DBPROCESS * dbproc, DBINT n); │ │ │ │ │ +729RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]); │ │ │ │ │ +730RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]); │ │ │ │ │ +731RETCODE dbcmdrow(DBPROCESS * dbproc); │ │ │ │ │ +732 │ │ │ │ │ +733#define DBCMDROW(x) dbcmdrow((x)) │ │ │ │ │ +734RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol ); │ │ │ │ │ +735RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT │ │ │ │ │ +computeid, DBCOL *pdbcol); │ │ │ │ │ +736DBINT dbcollen(DBPROCESS * dbproc, int column); │ │ │ │ │ +737char *dbcolname(DBPROCESS * dbproc, int column); │ │ │ │ │ +738const char *dbacolname(DBPROCESS * dbproc, int computeid, int column); │ │ │ │ │ +739char *dbcolsource(DBPROCESS * dbproc, int colnum); │ │ │ │ │ +740int dbcoltype(DBPROCESS * dbproc, int column); │ │ │ │ │ +741DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column); │ │ │ │ │ +742DBINT dbcolutype(DBPROCESS * dbprocess, int column); │ │ │ │ │ +743DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT │ │ │ │ │ +srclen, int desttype, BYTE * dest, DBINT destlen); │ │ │ │ │ +744DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, │ │ │ │ │ +DBINT srclen, int desttype, BYTE * dest, DBINT destlen, │ │ │ │ │ +745 DBTYPEINFO * typeinfo); │ │ │ │ │ +746BOOL dbiscount(DBPROCESS * dbproc); │ │ │ │ │ +747DBINT dbcount(DBPROCESS * dbproc); │ │ │ │ │ +748 │ │ │ │ │ +749#define DBCOUNT(x) dbcount((x)) │ │ │ │ │ +750int dbcurcmd(DBPROCESS * dbproc); │ │ │ │ │ +751 │ │ │ │ │ +752#define DBCURCMD(x) dbcurcmd((x)) │ │ │ │ │ +753DBINT dbcurrow(DBPROCESS * dbproc); │ │ │ │ │ +754 │ │ │ │ │ +755#define DBCURROW(x) dbcurrow((x)) │ │ │ │ │ +756BYTE *dbdata(DBPROCESS * dbproc, int column); │ │ │ │ │ +757int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2); │ │ │ │ │ +758RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt); │ │ │ │ │ +759RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const │ │ │ │ │ +void *data); │ │ │ │ │ +760DBINT dbdatlen(DBPROCESS * dbproc, int column); │ │ │ │ │ +761DBBOOL dbdead(DBPROCESS * dbproc); │ │ │ │ │ +762 │ │ │ │ │ +763#define DBDEAD(x) dbdead((x)) │ │ │ │ │ +764EHANDLEFUNC dberrhandle(EHANDLEFUNC handler); │ │ │ │ │ +765void dbexit(void); │ │ │ │ │ +766RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...); │ │ │ │ │ +767DBINT dbfirstrow(DBPROCESS * dbproc); │ │ │ │ │ +768 │ │ │ │ │ +769#define DBFIRSTROW(x) dbfirstrow((x)) │ │ │ │ │ +770void dbfreebuf(DBPROCESS * dbproc); │ │ │ │ │ +771char *dbgetchar(DBPROCESS * dbprocess, int n); │ │ │ │ │ +772char *dbgetcharset(DBPROCESS * dbprocess); │ │ │ │ │ +773int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len); │ │ │ │ │ +774int dbgetmaxprocs(void); │ │ │ │ │ +775char *dbgetnatlanf(DBPROCESS * dbprocess); │ │ │ │ │ +776int dbgetpacket(DBPROCESS * dbproc); │ │ │ │ │ +777RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row); │ │ │ │ │ +778int dbgettime(void); │ │ │ │ │ +779#define DBGETTIME dbgettime │ │ │ │ │ +780BYTE *dbgetuserdata(DBPROCESS * dbproc); │ │ │ │ │ +781DBBOOL dbhasretstat(DBPROCESS * dbproc); │ │ │ │ │ +782RETCODE dbinit(void); │ │ │ │ │ +783int dbiordesc(DBPROCESS * dbproc); │ │ │ │ │ +784 │ │ │ │ │ +785#define DBIORDESC(x) dbiordesc((x)) │ │ │ │ │ +786int dbiowdesc(DBPROCESS * dbproc); │ │ │ │ │ +787 │ │ │ │ │ +788#define DBIOWDESC(x) dbiowdesc((x)) │ │ │ │ │ +789DBBOOL dbisavail(DBPROCESS * dbprocess); │ │ │ │ │ +790 │ │ │ │ │ +791#define DBISAVAIL(x) dbisavail((x)) │ │ │ │ │ +792DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]); │ │ │ │ │ +793DBINT dblastrow(DBPROCESS * dbproc); │ │ │ │ │ +794 │ │ │ │ │ +795#define DBLASTROW(x) dblastrow((x)) │ │ │ │ │ +796LOGINREC *dblogin(void); │ │ │ │ │ +797void dbloginfree(LOGINREC * login); │ │ │ │ │ +798 │ │ │ │ │ +799int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2); │ │ │ │ │ +800int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2); │ │ │ │ │ +801 │ │ │ │ │ +802RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ +* sum); │ │ │ │ │ +803RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr); │ │ │ │ │ +804RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr); │ │ │ │ │ +805RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ +806RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ +807RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest); │ │ │ │ │ +808RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest); │ │ │ │ │ +809RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 │ │ │ │ │ +* diff); │ │ │ │ │ +810RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * │ │ │ │ │ +diff); │ │ │ │ │ +811 │ │ │ │ │ +812RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2); │ │ │ │ │ +813RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest); │ │ │ │ │ +814 │ │ │ │ │ +815RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest); │ │ │ │ │ +816RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest); │ │ │ │ │ +817 │ │ │ │ │ +818const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, │ │ │ │ │ +DBBOOL shortform); │ │ │ │ │ +819RETCODE dbmorecmds(DBPROCESS * dbproc); │ │ │ │ │ +820 │ │ │ │ │ +821#define DBMORECMDS(x) dbmorecmds((x)) │ │ │ │ │ +822RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]); │ │ │ │ │ +823MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler); │ │ │ │ │ +824char *dbname(DBPROCESS * dbproc); │ │ │ │ │ +825STATUS dbnextrow(DBPROCESS * dbproc); │ │ │ │ │ +826RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator); │ │ │ │ │ +827int dbnumalts(DBPROCESS * dbproc, int computeid); │ │ │ │ │ +828int dbnumcols(DBPROCESS * dbproc); │ │ │ │ │ +829int dbnumcompute(DBPROCESS * dbprocess); │ │ │ │ │ +830int dbnumrets(DBPROCESS * dbproc); │ │ │ │ │ +831DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib); │ │ │ │ │ +832DBPROCESS *dbopen(LOGINREC * login, const char *server); │ │ │ │ │ +833 │ │ │ │ │ +834/* pivot functions */ │ │ │ │ │ +835struct col_t; │ │ │ │ │ +836void dbpivot_count (struct col_t *output, const struct col_t *input); │ │ │ │ │ +837void dbpivot_sum (struct col_t *output, const struct col_t *input); │ │ │ │ │ +838void dbpivot_min (struct col_t *output, const struct col_t *input); │ │ │ │ │ +839void dbpivot_max (struct col_t *output, const struct col_t *input); │ │ │ │ │ +840 │ │ │ │ │ +841struct pivot_t; │ │ │ │ │ +842typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_ │ │ │ │ │ +t *input); │ │ │ │ │ +843struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc); │ │ │ │ │ +844STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp); │ │ │ │ │ +845RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int │ │ │ │ │ +*cols, DBPIVOT_FUNC func, int val); │ │ │ │ │ +846 │ │ │ │ │ +847DBPIVOT_FUNC dbpivot_lookup_name( const char name[] ); │ │ │ │ │ +848 │ │ │ │ │ +849#ifdef MSDBLIB │ │ │ │ │ +850#define dbopen(x,y) tdsdbopen((x),(y), 1) │ │ │ │ │ +851#else │ │ │ │ │ +852#define dbopen(x,y) tdsdbopen((x),(y), 0) │ │ │ │ │ +853#endif │ │ │ │ │ +854 │ │ │ │ │ +855/* fix PHP problem */ │ │ │ │ │ +856#ifdef PHP_SYBASE_DBOPEN │ │ │ │ │ +857#undef PHP_SYBASE_DBOPEN │ │ │ │ │ +858#define PHP_SYBASE_DBOPEN dbopen │ │ │ │ │ +859#endif │ │ │ │ │ +860 │ │ │ │ │ +861void dbprhead(DBPROCESS * dbproc); │ │ │ │ │ +862DBINT dbprcollen(DBPROCESS * dbproc, int column); │ │ │ │ │ +863RETCODE dbprrow(DBPROCESS * dbproc); │ │ │ │ │ +864const char *dbprtype(int token); │ │ │ │ │ +865DBBOOL DRBUF(DBPROCESS * dbprocess); │ │ │ │ │ +866STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize); │ │ │ │ │ +867void dbrecftos(const char filename[]); │ │ │ │ │ +868RETCODE dbresults(DBPROCESS * dbproc); │ │ │ │ │ +869RETCODE dbresults_r(DBPROCESS * dbproc, int recursive); │ │ │ │ │ +870BYTE *dbretdata(DBPROCESS * dbproc, int retnum); │ │ │ │ │ +871int dbretlen(DBPROCESS * dbproc, int retnum); │ │ │ │ │ +872char *dbretname(DBPROCESS * dbproc, int retnum); │ │ │ │ │ +873DBINT dbretstatus(DBPROCESS * dbproc); │ │ │ │ │ +874int dbrettype(DBPROCESS * dbproc, int retnum); │ │ │ │ │ +875RETCODE dbrows(DBPROCESS * dbproc); │ │ │ │ │ +876 │ │ │ │ │ +877#define DBROWS(x) dbrows((x)) │ │ │ │ │ +878STATUS dbrowtype(DBPROCESS * dbprocess); │ │ │ │ │ +879 │ │ │ │ │ +880#define DBROWTYPE(x) dbrowtype((x)) │ │ │ │ │ +881RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT │ │ │ │ │ +options); │ │ │ │ │ +882RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, │ │ │ │ │ +int type, DBINT maxlen, DBINT datalen, BYTE * value); │ │ │ │ │ +883RETCODE dbrpcsend(DBPROCESS * dbproc); │ │ │ │ │ +884RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char │ │ │ │ │ +*dest, DBINT destlen, int quotetype); │ │ │ │ │ +885RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler); │ │ │ │ │ +886char *dbservcharset(DBPROCESS * dbprocess); │ │ │ │ │ +887void dbsetavail(DBPROCESS * dbprocess); │ │ │ │ │ +888void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc); │ │ │ │ │ +889RETCODE dbsetdefcharset(char *charset); │ │ │ │ │ +890void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc); │ │ │ │ │ +891void dbsetifile(char *filename); │ │ │ │ │ +892void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_ │ │ │ │ │ +DBHNDLINTR_FUNC hndlintr); │ │ │ │ │ +893RETCODE dbsetlogintime(int seconds); │ │ │ │ │ +894RETCODE dbsetmaxprocs(int maxprocs); │ │ │ │ │ +895RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * │ │ │ │ │ +bindval); │ │ │ │ │ +896RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int │ │ │ │ │ +int_param); │ │ │ │ │ +897STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row); │ │ │ │ │ +898RETCODE dbsettime(int seconds); │ │ │ │ │ +899void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr); │ │ │ │ │ +900RETCODE dbsetversion(DBINT version); │ │ │ │ │ +901 │ │ │ │ │ +902int dbspid(DBPROCESS * dbproc); │ │ │ │ │ +903RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len); │ │ │ │ │ +904DBINT dbspr1rowlen(DBPROCESS * dbproc); │ │ │ │ │ +905RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len); │ │ │ │ │ +906RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR │ │ │ │ │ +line_char); │ │ │ │ │ +907RETCODE dbsqlexec(DBPROCESS * dbproc); │ │ │ │ │ +908RETCODE dbsqlok(DBPROCESS * dbproc); │ │ │ │ │ +909RETCODE dbsqlsend(DBPROCESS * dbproc); │ │ │ │ │ +910int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, │ │ │ │ │ +char *formats, ...); │ │ │ │ │ +911RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest); │ │ │ │ │ +912int dbstrlen(DBPROCESS * dbproc); │ │ │ │ │ +913DBINT dbvarylen(DBPROCESS * dbproc, int column); │ │ │ │ │ +914 │ │ │ │ │ +915#define SYBEVERDOWN 100 /* TDS version downgraded . */ │ │ │ │ │ +916#define SYBEICONVIU 2400 /* Some character(s) could not be converted into │ │ │ │ │ +client's character set. */ │ │ │ │ │ +917#define SYBEICONVAVAIL 2401 /* Character set conversion is not available │ │ │ │ │ +between client character set '%.*s' and server character set '%.*s'.*/ │ │ │ │ │ +918#define SYBEICONVO 2402 /* Error converting characters into server's │ │ │ │ │ +character set. Some character(s) could not be converted.*/ │ │ │ │ │ +919#define SYBEICONVI 2403 /* Some character(s) could not be converted into │ │ │ │ │ +client's character set. Unconverted bytes were changed to question marks │ │ │ │ │ +('?').*/ │ │ │ │ │ +920#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from │ │ │ │ │ +client into server's character set.*/ │ │ │ │ │ +921 /* cf. doc/dblib_errors.txt for more iconv error values. */ │ │ │ │ │ +922 /* Reserve a few slots for other iconv-related issues. */ │ │ │ │ │ +923#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */ │ │ │ │ │ +924#define SYBEPORT 2500 /* Both port and instance specified */ │ │ │ │ │ +925#define SYBESYNC 20001 /* Read attempted while out of synchronization with │ │ │ │ │ +SQL Server. */ │ │ │ │ │ +926#define SYBEFCON 20002 /* SQL Server connection failed. */ │ │ │ │ │ +927#define SYBETIME 20003 /* SQL Server connection timed out. */ │ │ │ │ │ +928#define SYBEREAD 20004 /* Read from SQL Server failed. */ │ │ │ │ │ +929#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length │ │ │ │ │ +corrupted. */ │ │ │ │ │ +930#define SYBEWRIT 20006 /* Write to SQL Server failed. */ │ │ │ │ │ +931#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */ │ │ │ │ │ +932#define SYBESOCK 20008 /* Unable to open socket */ │ │ │ │ │ +933#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is │ │ │ │ │ +unavailable or does not exist. */ │ │ │ │ │ +934#define SYBEMEM 20010 /* Unable to allocate sufficient memory */ │ │ │ │ │ +935#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. │ │ │ │ │ +*/ │ │ │ │ │ +936#define SYBEINTF 20012 /* Server name not found in interface file */ │ │ │ │ │ +937#define SYBEUHST 20013 /* Unknown host machine name */ │ │ │ │ │ +938#define SYBEPWD 20014 /* Incorrect password. */ │ │ │ │ │ +939#define SYBEOPIN 20015 /* Could not open interface file. */ │ │ │ │ │ +940#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */ │ │ │ │ │ +941#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */ │ │ │ │ │ +942#define SYBESMSG 20018 /* General SQL Server error: Check messages from the │ │ │ │ │ +SQL Server. */ │ │ │ │ │ +943#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation │ │ │ │ │ +with results pending. */ │ │ │ │ │ +944#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing │ │ │ │ │ +out of sync. */ │ │ │ │ │ +945#define SYBEITIM 20021 /* Illegal timeout value specified. */ │ │ │ │ │ +946#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */ │ │ │ │ │ +947#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. │ │ │ │ │ +*/ │ │ │ │ │ +948#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent │ │ │ │ │ +compute row. */ │ │ │ │ │ +949#define SYBEIICL 20025 /* Illegal integer column length returned by SQL │ │ │ │ │ +Server. Legal integer lengths are 1, 2, and 4 bytes. */ │ │ │ │ │ +950#define SYBECNOR 20026 /* Column number out of range. */ │ │ │ │ │ +951#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */ │ │ │ │ │ +952#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */ │ │ │ │ │ +953#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */ │ │ │ │ │ +954#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following │ │ │ │ │ +ALTNAME has wrong id. */ │ │ │ │ │ +955#define SYBECDNS 20031 /* Datastream indicates that a compute column is │ │ │ │ │ +derived from a non-existent select-list member. */ │ │ │ │ │ +956#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */ │ │ │ │ │ +957#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column │ │ │ │ │ +and variable types. */ │ │ │ │ │ +958#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */ │ │ │ │ │ +959#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched │ │ │ │ │ +column and variable types. */ │ │ │ │ │ +960#define SYBENXID 20036 /* The Server did not grant us a distributed- │ │ │ │ │ +transaction ID. */ │ │ │ │ │ +961#define SYBERXID 20037 /* The Server did not recognize our distributed- │ │ │ │ │ +transaction ID. */ │ │ │ │ │ +962#define SYBEICN 20038 /* Invalid computeid or compute column number. */ │ │ │ │ │ +963#define SYBENMOB 20039 /* No such member of 'order by' clause. */ │ │ │ │ │ +964#define SYBEAPUT 20040 /* Attempt to print unknown token. */ │ │ │ │ │ +965#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */ │ │ │ │ │ +966#define SYBENTLL 20042 /* Name too long for loginrec field. */ │ │ │ │ │ +967#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */ │ │ │ │ │ +968#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. │ │ │ │ │ +*/ │ │ │ │ │ +969#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */ │ │ │ │ │ +970#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */ │ │ │ │ │ +971#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */ │ │ │ │ │ +972#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */ │ │ │ │ │ +973#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */ │ │ │ │ │ +974#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in │ │ │ │ │ +source field. */ │ │ │ │ │ +975#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */ │ │ │ │ │ +976#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in │ │ │ │ │ +overflow. */ │ │ │ │ │ +977#define SYBERDCN 20053 /* Requested data-conversion does not exist. */ │ │ │ │ │ +978#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */ │ │ │ │ │ +979#define SYBEUNT 20055 /* Unknown network type found in interface file. */ │ │ │ │ │ +980#define SYBECLOS 20056 /* Error in closing network connection. */ │ │ │ │ │ +981#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */ │ │ │ │ │ +982#define SYBEUSCT 20058 /* Unable to set communications timer. */ │ │ │ │ │ +983#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */ │ │ │ │ │ +984#define SYBEUDTY 20060 /* Unknown datatype encountered. */ │ │ │ │ │ +985#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid │ │ │ │ │ +timestamp. */ │ │ │ │ │ +986#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which │ │ │ │ │ +has no timestamp column. */ │ │ │ │ │ +987#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. │ │ │ │ │ +*/ │ │ │ │ │ +988#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent │ │ │ │ │ +Server table. */ │ │ │ │ │ +989#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */ │ │ │ │ │ +990#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to │ │ │ │ │ +a host-file is shorter than the number of rows which bulk-copy was instructed │ │ │ │ │ +to skip. */ │ │ │ │ │ +991#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. │ │ │ │ │ +*/ │ │ │ │ │ +992#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */ │ │ │ │ │ +993#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */ │ │ │ │ │ +994#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */ │ │ │ │ │ +995#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in │ │ │ │ │ +table names. */ │ │ │ │ │ +996#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */ │ │ │ │ │ +997#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server │ │ │ │ │ +column %d, which does not accept NULL values. */ │ │ │ │ │ +998#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL │ │ │ │ │ +Server. */ │ │ │ │ │ +999#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column │ │ │ │ │ +value to the SQL Server. */ │ │ │ │ │ +1000#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp │ │ │ │ │ +routines. */ │ │ │ │ │ +1001#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(), bcp_ │ │ │ │ │ +moretext() and bcp_sendrow() may be used only after bcp_init() has been called │ │ │ │ │ +with the copy direction set to DB_IN. */ │ │ │ │ │ +1002#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may │ │ │ │ │ +NOT be used after bcp_init() has been passed a non-NULL input file name. */ │ │ │ │ │ +1003#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have │ │ │ │ │ +either a length-prefix or a terminator specified. */ │ │ │ │ │ +1004#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps() │ │ │ │ │ +may be used only after bcp_init() has been passed a valid input file. */ │ │ │ │ │ +1005#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() │ │ │ │ │ +and bcp_colfmt_ps(). */ │ │ │ │ │ +1006#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. │ │ │ │ │ +*/ │ │ │ │ │ +1007#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() │ │ │ │ │ +has been passed a valid host file. */ │ │ │ │ │ +1008#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */ │ │ │ │ │ +1009#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */ │ │ │ │ │ +1010#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */ │ │ │ │ │ +1011#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */ │ │ │ │ │ +1012#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */ │ │ │ │ │ +1013#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */ │ │ │ │ │ +1014#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */ │ │ │ │ │ +1015#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the │ │ │ │ │ +SQL Server. */ │ │ │ │ │ +1016#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the │ │ │ │ │ +dbmoretext() call. */ │ │ │ │ │ +1017#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text- │ │ │ │ │ +timestamp into a non-existent data row. */ │ │ │ │ │ +1018#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text- │ │ │ │ │ +timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */ │ │ │ │ │ +1019#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_ │ │ │ │ │ +moretext() call. */ │ │ │ │ │ +1020#define SYBEORPF 20096 /* Attempt to set remote password would overflow the │ │ │ │ │ +login-record's remote-password field. */ │ │ │ │ │ +1021#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format- │ │ │ │ │ +file. */ │ │ │ │ │ +1022#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */ │ │ │ │ │ +1023#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */ │ │ │ │ │ +1024#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */ │ │ │ │ │ +1025#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */ │ │ │ │ │ +1026#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. │ │ │ │ │ +*/ │ │ │ │ │ +1027#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format- │ │ │ │ │ +file. */ │ │ │ │ │ +1028#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */ │ │ │ │ │ +1029#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */ │ │ │ │ │ +1030#define SYBEBCSI 20106 /* Host-file columns may be skipped only when │ │ │ │ │ +copying INto the Server. */ │ │ │ │ │ +1031#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program │ │ │ │ │ +variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */ │ │ │ │ │ +1032#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. │ │ │ │ │ +Skipping all of these rows is not allowed. */ │ │ │ │ │ +1033#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */ │ │ │ │ │ +1034#define SYBEUNAM 20110 /* Unable to get current username from operating │ │ │ │ │ +system. */ │ │ │ │ │ +1035#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It │ │ │ │ │ +was impossible to read the requested %ld rows. */ │ │ │ │ │ +1036#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes │ │ │ │ │ +lower than 1. */ │ │ │ │ │ +1037#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the │ │ │ │ │ +datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or │ │ │ │ │ +SYBVARBINARY. */ │ │ │ │ │ +1038#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN, │ │ │ │ │ +or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the │ │ │ │ │ +parameter's maximum or actual length, so that DB-Library can recognize it as a │ │ │ │ │ +SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */ │ │ │ │ │ +1039#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */ │ │ │ │ │ +1040#define SYBECRNC 20116 /* The current row is not a result of compute clause │ │ │ │ │ +%d, so it is illegal to attempt to extract that data from this row. */ │ │ │ │ │ +1041#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the │ │ │ │ │ +results of a query which contains a COMPUTE clause. */ │ │ │ │ │ +1042#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the │ │ │ │ │ +results of a query which contains a single result column. */ │ │ │ │ │ +1043#define SYBEUCRR 20119 /* Internal software error: Unknown connection │ │ │ │ │ +result reported by * dbpasswd(). */ │ │ │ │ │ +1044#define SYBERPNA 20120 /* The RPC facility is available only when using a │ │ │ │ │ +SQL Server whose version number is 4.0 or greater. */ │ │ │ │ │ +1045#define SYBEOPNA 20121 /* The text/image facility is available only when │ │ │ │ │ +using a SQL Server whose version number is 4.0 or greater. */ │ │ │ │ │ +1046#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied │ │ │ │ │ +cannot be greater than the row number for the last row to be copied. */ │ │ │ │ │ +1047#define SYBECWLL 20123 /* Attempt to set column width less than 1. */ │ │ │ │ │ +1048#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). │ │ │ │ │ +*/ │ │ │ │ │ +1049#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type │ │ │ │ │ +encountered in dbstrbuild(). */ │ │ │ │ │ +1050#define SYBETMCF 20126 /* Attempt to install too many custom formats via │ │ │ │ │ +dbfmtinstall(). */ │ │ │ │ │ +1051#define SYBEAICF 20127 /* Error in attempting to install custom format. */ │ │ │ │ │ +1052#define SYBEADST 20128 /* Error in attempting to determine the size of a │ │ │ │ │ +pair of translation tables. */ │ │ │ │ │ +1053#define SYBEALTT 20129 /* Error in attempting to load a pair of translation │ │ │ │ │ +tables. */ │ │ │ │ │ +1054#define SYBEAPCT 20130 /* Error in attempting to perform a character-set │ │ │ │ │ +translation. */ │ │ │ │ │ +1055#define SYBEXOCI 20131 /* A character-set translation overflowed its │ │ │ │ │ +destination buffer while using bcp to copy data from a host-file to the SQL │ │ │ │ │ +Server. */ │ │ │ │ │ +1056#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home │ │ │ │ │ +directory. */ │ │ │ │ │ +1057#define SYBEAOLF 20133 /* Error in attempting to open a localization file. │ │ │ │ │ +*/ │ │ │ │ │ +1058#define SYBEARDI 20134 /* Error in attempting to read datetime information │ │ │ │ │ +from a localization file. */ │ │ │ │ │ +1059#define SYBEURCI 20135 /* Unable to read copyright information from the │ │ │ │ │ +dblib localization file. */ │ │ │ │ │ +1060#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc │ │ │ │ │ +localization file. */ │ │ │ │ │ +1061#define SYBEURMI 20137 /* Unable to read money-format information from the │ │ │ │ │ +dblib localization file. */ │ │ │ │ │ +1062#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib │ │ │ │ │ +localization file. */ │ │ │ │ │ +1063#define SYBEURES 20139 /* Unable to read error string from the dblib │ │ │ │ │ +localization file. */ │ │ │ │ │ +1064#define SYBEUREI 20140 /* Unable to read error information from the dblib │ │ │ │ │ +localization file. */ │ │ │ │ │ +1065#define SYBEOREN 20141 /* Warning: an out-of-range error-number was │ │ │ │ │ +encountered in dblib.loc. The maximum permissible error-number is defined as │ │ │ │ │ +DBERRCOUNT in sybdb.h. */ │ │ │ │ │ +1066#define SYBEISOI 20142 /* Invalid sort-order information found. */ │ │ │ │ │ +1067#define SYBEIDCL 20143 /* Illegal datetime column length returned by │ │ │ │ │ +DataServer. Legal datetime lengths are 4 and 8 bytes. */ │ │ │ │ │ +1068#define SYBEIMCL 20144 /* Illegal money column length returned by │ │ │ │ │ +DataServer. Legal money lengths are 4 and 8 bytes. */ │ │ │ │ │ +1069#define SYBEIFCL 20145 /* Illegal floating-point column length returned by │ │ │ │ │ +DataServer. Legal floating-point lengths are 4 and 8 bytes. */ │ │ │ │ │ +1070#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL │ │ │ │ │ +Server. */ │ │ │ │ │ +1071#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */ │ │ │ │ │ +1072#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination │ │ │ │ │ +variable. */ │ │ │ │ │ +1073#define SYBEDPOR 20149 /* Out-of-range datepart constant. */ │ │ │ │ │ +1074#define SYBENDC 20150 /* Cannot have negative component in date in numeric │ │ │ │ │ +form. */ │ │ │ │ │ +1075#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */ │ │ │ │ │ +1076#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */ │ │ │ │ │ +1077#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. │ │ │ │ │ +*/ │ │ │ │ │ +1078#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */ │ │ │ │ │ +1079#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime │ │ │ │ │ +parameter. */ │ │ │ │ │ +1080#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_ │ │ │ │ │ +xlate() were NULL. */ │ │ │ │ │ +1081#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate │ │ │ │ │ +() was NULL. The space associated with the xlt_tosrv parameter has been freed. │ │ │ │ │ +*/ │ │ │ │ │ +1082#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate │ │ │ │ │ +() was NULL. The space associated with the xlt_todisp parameter has been freed. │ │ │ │ │ +*/ │ │ │ │ │ +1083#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. │ │ │ │ │ +*/ │ │ │ │ │ +1084#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */ │ │ │ │ │ +1085#define SYBEGENOS 20161 /* General Operating System Error. */ │ │ │ │ │ +1086#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() │ │ │ │ │ +operation. */ │ │ │ │ │ +1087#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */ │ │ │ │ │ +1088#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or │ │ │ │ │ +IMAGE data via dbmoretext(). */ │ │ │ │ │ +1089#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */ │ │ │ │ │ +1090#define SYBERFILE 20166 /* "Can not open resource file." */ │ │ │ │ │ +1091#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */ │ │ │ │ │ +1092#define SYBESLCT 20168 /* Could not select or copy field specified */ │ │ │ │ │ +1093#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to │ │ │ │ │ +dataserver via dbwritetext(). */ │ │ │ │ │ +1094#define SYBENTST 20170 /* The file being opened must be a stream_lf. */ │ │ │ │ │ +1095#define SYBEOSSL 20171 /* Operating system login level not in range of │ │ │ │ │ +Secure SQL Server */ │ │ │ │ │ +1096#define SYBEESSL 20172 /* Login security level entered does not agree with │ │ │ │ │ +operating system level */ │ │ │ │ │ +1097#define SYBENLNL 20173 /* Program not linked with specified network │ │ │ │ │ +library. */ │ │ │ │ │ +1098#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler │ │ │ │ │ +parameter. */ │ │ │ │ │ +1099#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. │ │ │ │ │ +*/ │ │ │ │ │ +1100#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */ │ │ │ │ │ +1101#define SYBENOTI 20177 /* No event handler installed. */ │ │ │ │ │ +1102#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. │ │ │ │ │ +*/ │ │ │ │ │ +1103#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler │ │ │ │ │ +parameter. */ │ │ │ │ │ +1104#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. │ │ │ │ │ +*/ │ │ │ │ │ +1105#define SYBEEVST 20181 /* Must initiate a transaction before calling │ │ │ │ │ +dbregparam(). */ │ │ │ │ │ +1106#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */ │ │ │ │ │ +1107#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */ │ │ │ │ │ +1108#define SYBEECAN 20184 /* Attempted to cancel unrequested event │ │ │ │ │ +notification. */ │ │ │ │ │ +1109#define SYBEEUNR 20185 /* Unsolicited event notification received. */ │ │ │ │ │ +1110#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */ │ │ │ │ │ +1111#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. │ │ │ │ │ +*/ │ │ │ │ │ +1112#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */ │ │ │ │ │ +1113#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not │ │ │ │ │ +on. */ │ │ │ │ │ +1114#define SYBETRAS 20190 /* DB-Library internal error - trace structure not │ │ │ │ │ +found. */ │ │ │ │ │ +1115#define SYBEPRTF 20191 /* dbtracestring() may only be called from a │ │ │ │ │ +printfunc(). */ │ │ │ │ │ +1116#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). │ │ │ │ │ +*/ │ │ │ │ │ +1117#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must │ │ │ │ │ +be between 0 and 999999. */ │ │ │ │ │ +1118#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of │ │ │ │ │ +%3!. */ │ │ │ │ │ +1119#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function │ │ │ │ │ +%1!. */ │ │ │ │ │ +1120#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */ │ │ │ │ │ +1121#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */ │ │ │ │ │ +1122#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are │ │ │ │ │ +present. */ │ │ │ │ │ +1123#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */ │ │ │ │ │ +1124#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure │ │ │ │ │ +notifications have been disabled. */ │ │ │ │ │ +1125#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! │ │ │ │ │ +used instead. */ │ │ │ │ │ +1126#define SYBESECURE 20202 /* Secure Server function not supported in this │ │ │ │ │ +version. */ │ │ │ │ │ +1127#define SYBECAP 20203 /* DB-Library capabilities not accepted by the │ │ │ │ │ +Server. */ │ │ │ │ │ +1128#define SYBEFUNC 20204 /* Functionality not supported at the specified │ │ │ │ │ +version level. */ │ │ │ │ │ +1129#define SYBERESP 20205 /* Response function address passed to dbresponse() │ │ │ │ │ +must be non-NULL. */ │ │ │ │ │ +1130#define SYBEIVERS 20206 /* Illegal version level specified. */ │ │ │ │ │ +1131#define SYBEONCE 20207 /* Function can be called only once. */ │ │ │ │ │ +1132#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, │ │ │ │ │ +only if the datalen parameter is 0 */ │ │ │ │ │ +1133#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. │ │ │ │ │ +*/ │ │ │ │ │ +1134#define SYBENEG 20210 /* Negotiated login attempt failed. */ │ │ │ │ │ +1135#define SYBELBLEN 20211 /* Security labels should be less than 256 │ │ │ │ │ +characters long. */ │ │ │ │ │ +1136#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */ │ │ │ │ │ +1137#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY │ │ │ │ │ +datastream. */ │ │ │ │ │ +1138#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */ │ │ │ │ │ +1139#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */ │ │ │ │ │ +1140#define SYBEBPREC 20216 /* Illegal precision specified */ │ │ │ │ │ +1141#define SYBEBSCALE 20217 /* Illegal scale specified */ │ │ │ │ │ +1142#define SYBECDOMAIN 20218 /* Source field value is not within the domain of │ │ │ │ │ +legal values. */ │ │ │ │ │ +1143#define SYBECINTERNAL 20219 /* Internal Conversion error. */ │ │ │ │ │ +1144#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */ │ │ │ │ │ +1145#define SYBEBCSET 20221 /* Unknown character-set encountered." */ │ │ │ │ │ +1146#define SYBEFENC 20222 /* Password Encryption failed." */ │ │ │ │ │ +1147#define SYBEFRES 20223 /* Challenge-Response function failed.", */ │ │ │ │ │ +1148#define SYBEISRVPREC 20224 /* Illegal precision value returned by the │ │ │ │ │ +server. */ │ │ │ │ │ +1149#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */ │ │ │ │ │ +1150#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the │ │ │ │ │ +server. */ │ │ │ │ │ +1151#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the │ │ │ │ │ +server. */ │ │ │ │ │ +1152#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is │ │ │ │ │ +at least one text or image column in the server table. */ │ │ │ │ │ +1153#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value │ │ │ │ │ +encountered. */ │ │ │ │ │ +1154#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must │ │ │ │ │ +be 0 and no terminator should be specified. */ │ │ │ │ │ +1155#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen │ │ │ │ │ +greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the │ │ │ │ │ +program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */ │ │ │ │ │ +1156#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and │ │ │ │ │ +varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and │ │ │ │ │ +the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */ │ │ │ │ │ +1157#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type │ │ │ │ │ +cannot be 0. */ │ │ │ │ │ +1158#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. │ │ │ │ │ +*/ │ │ │ │ │ +1159#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to │ │ │ │ │ +-1. */ │ │ │ │ │ +1160#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, │ │ │ │ │ +2 or 4. */ │ │ │ │ │ +1161#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, │ │ │ │ │ +1, 2 or 4. */ │ │ │ │ │ +1162#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. │ │ │ │ │ +*/ │ │ │ │ │ +1163#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */ │ │ │ │ │ +1164#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all │ │ │ │ │ +text data for the previous row has been sent using bcp_moretext(). */ │ │ │ │ │ +1165#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count │ │ │ │ │ +differs from the actual number of columns received. */ │ │ │ │ │ +1166#define SYBEBPRODEF 20242 /* bcp protocol error: expected default │ │ │ │ │ +information and got none. */ │ │ │ │ │ +1167#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of │ │ │ │ │ +defaults differs from the actual number of defaults received. */ │ │ │ │ │ +1168#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and │ │ │ │ │ +actual column id are not same */ │ │ │ │ │ +1169#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received │ │ │ │ │ +for column that does not have default. */ │ │ │ │ │ +1170#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype │ │ │ │ │ +differs from column datatype. */ │ │ │ │ │ +1171#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of │ │ │ │ │ +default information received. */ │ │ │ │ │ +1172#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of │ │ │ │ │ +results received. */ │ │ │ │ │ +1173#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column │ │ │ │ │ +id received. */ │ │ │ │ │ +1174#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column │ │ │ │ │ +datatype. */ │ │ │ │ │ +1175#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length │ │ │ │ │ +received. */ │ │ │ │ │ +1176#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision │ │ │ │ │ +value received. */ │ │ │ │ │ +1177#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value │ │ │ │ │ +received. */ │ │ │ │ │ +1178#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. │ │ │ │ │ +*/ │ │ │ │ │ +1179#define SYBECRSNORES 20255 /* Cursor statement generated no results. */ │ │ │ │ │ +1180#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor │ │ │ │ │ +statement does not have a unique index. */ │ │ │ │ │ +1181#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or │ │ │ │ │ +a view in a cursor statement. */ │ │ │ │ │ +1182#define SYBECRSVIIND 20258 /* The view used in the cursor statement does │ │ │ │ │ +not include all the unique index columns of the underlying tables. */ │ │ │ │ │ +1183#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have │ │ │ │ │ +'order by', ' group by', or 'having' phrases. */ │ │ │ │ │ +1184#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when │ │ │ │ │ +using cursor APIs. */ │ │ │ │ │ +1185#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned │ │ │ │ │ +on when using cursor APIs. */ │ │ │ │ │ +1186#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed │ │ │ │ │ +phrases 'compute', 'union', 'for browse', or 'select into'. */ │ │ │ │ │ +1187#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor │ │ │ │ │ +statement. */ │ │ │ │ │ +1188#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be │ │ │ │ │ +used within the keyset of keyset driven cursors. */ │ │ │ │ │ +1189#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven │ │ │ │ │ +cursors. */ │ │ │ │ │ +1190#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward │ │ │ │ │ +scrolling cursor. */ │ │ │ │ │ +1191#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid │ │ │ │ │ +range. */ │ │ │ │ │ +1192#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed │ │ │ │ │ +cursors with a previous fetch type. */ │ │ │ │ │ +1193#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in │ │ │ │ │ +a READONLY cursor. */ │ │ │ │ │ +1194#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned │ │ │ │ │ +on when doing updates or deletes with dbcursor(). */ │ │ │ │ │ +1195#define SYBECRSTAB 20271 /* Table name must be determined in operations │ │ │ │ │ +involving data locking or modifications. */ │ │ │ │ │ +1196#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind │ │ │ │ │ +variables when binding type is NOBIND. */ │ │ │ │ │ +1197#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor │ │ │ │ │ +update or insert. */ │ │ │ │ │ +1198#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or │ │ │ │ │ +insert. */ │ │ │ │ │ +1199#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind │ │ │ │ │ +variables require single table cursors. */ │ │ │ │ │ +1200#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any │ │ │ │ │ +rows. */ │ │ │ │ │ +1201#define SYBECRSINV 20277 /* Invalid cursor statement. */ │ │ │ │ │ +1202#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET │ │ │ │ │ +cursors. */ │ │ │ │ │ +1203#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating │ │ │ │ │ +cursor */ │ │ │ │ │ +1204#define SYBECRSFTYPE 20280 /* Unknown fetch type. */ │ │ │ │ │ +1205#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */ │ │ │ │ │ +1206#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is │ │ │ │ │ +expected. */ │ │ │ │ │ +1207#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. │ │ │ │ │ +*/ │ │ │ │ │ +1208#define SYBECRSNOLEN 20284 /* No unique index found. */ │ │ │ │ │ +1209#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */ │ │ │ │ │ +1210#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, │ │ │ │ │ +and order by. */ │ │ │ │ │ +1211#define SYBECRSNOTABLE 20287 /* Table name is NULL. */ │ │ │ │ │ +1212#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. │ │ │ │ │ +*/ │ │ │ │ │ +1213#define SYBECRSVAR 20289 /* There is no valid address associated with this │ │ │ │ │ +bind. */ │ │ │ │ │ +1214#define SYBENOVALUE 20290 /* Security labels require both a name and a │ │ │ │ │ +value */ │ │ │ │ │ +1215#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return │ │ │ │ │ +parameter. */ │ │ │ │ │ +1216#define SYBECLOSEIN 20292 /* Unable to close interface file. */ │ │ │ │ │ +1217#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */ │ │ │ │ │ +1218#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy │ │ │ │ │ +operation is progress. */ │ │ │ │ │ +1219#define SYBEERRLABEL 20295 /* An illegal value was returned from the │ │ │ │ │ +security label handler. */ │ │ │ │ │ +1220#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge │ │ │ │ │ +attention." */ │ │ │ │ │ +1221#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */ │ │ │ │ │ +1222#define SYBEDCL 20298 /* -004- DCL Error */ │ │ │ │ │ +1223#define SYBECS 20299 /* -004- cs context Error */ │ │ │ │ │ +1224#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */ │ │ │ │ │ +1225#define SYBECOLSIZE 22000 /* Invalid column information structure size */ │ │ │ │ │ +1226 │ │ │ │ │ +1227int dbtds(DBPROCESS * dbprocess); │ │ │ │ │ +1228 │ │ │ │ │ +1229#define DBTDS(a) dbtds(a) │ │ │ │ │ +1230DBINT dbtextsize(DBPROCESS * dbprocess); │ │ │ │ │ +1231DBBINARY *dbtxptr(DBPROCESS * dbproc, int column); │ │ │ │ │ +1232DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column); │ │ │ │ │ +1233DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess); │ │ │ │ │ +1234RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum); │ │ │ │ │ +1235RETCODE dbuse(DBPROCESS * dbproc, const char *name); │ │ │ │ │ +1236const char *dbversion(void); │ │ │ │ │ +1237DBBOOL dbwillconvert(int srctype, int desttype); │ │ │ │ │ +1238RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, │ │ │ │ │ +DBTINYINT textptrlen, DBBINARY * timestamp, │ │ │ │ │ +1239 DBBOOL log, DBINT size, BYTE * text); │ │ │ │ │ +1240 │ │ │ │ │ +1241/* LOGINREC manipulation */ │ │ │ │ │ +1242RETCODE dbsetlname(LOGINREC * login, const char *value, int which); │ │ │ │ │ +1243RETCODE dbsetlbool(LOGINREC * login, int value, int which); │ │ │ │ │ +1244RETCODE dbsetlshort(LOGINREC * login, int value, int which); │ │ │ │ │ +1245RETCODE dbsetllong(LOGINREC * login, long value, int which); │ │ │ │ │ +1246RETCODE dbsetlversion (LOGINREC * login, BYTE version); │ │ │ │ │ +1247 │ │ │ │ │ +1248#define DBSETHOST 1 │ │ │ │ │ +1249#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST) │ │ │ │ │ +1250#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST) │ │ │ │ │ +1251#define DBSETUSER 2 │ │ │ │ │ +1252#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER) │ │ │ │ │ +1253#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER) │ │ │ │ │ +1254#define DBSETPWD 3 │ │ │ │ │ +1255#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD) │ │ │ │ │ +1256#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD) │ │ │ │ │ +1257#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ +1258# define DBSETHID 4 /* not implemented */ │ │ │ │ │ +1259# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID) │ │ │ │ │ +1260#endif │ │ │ │ │ +1261#define DBSETAPP 5 │ │ │ │ │ +1262#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP) │ │ │ │ │ +1263#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP) │ │ │ │ │ +1264#define DBSETBCP 6 │ │ │ │ │ +1265#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP) │ │ │ │ │ +1266#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP) │ │ │ │ │ +1267#define DBSETNATLANG 7 │ │ │ │ │ +1268#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG) │ │ │ │ │ +1269#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG) │ │ │ │ │ +1270#if defined(DBLIB_UNIMPLEMENTED) │ │ │ │ │ +1271# define DBSETNOSHORT 8 /* not implemented */ │ │ │ │ │ +1272# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT) │ │ │ │ │ +1273# define DBSETHIER 9 /* not implemented */ │ │ │ │ │ +1274# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER) │ │ │ │ │ +1275#endif │ │ │ │ │ +1276#define DBSETCHARSET 10 │ │ │ │ │ +1277#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET) │ │ │ │ │ +1278#define DBSETPACKET 11 │ │ │ │ │ +1279#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET) │ │ │ │ │ +1280#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET) │ │ │ │ │ +1281#define DBSETENCRYPT 12 │ │ │ │ │ +1282#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT) │ │ │ │ │ +1283#define DBSETLABELED 13 │ │ │ │ │ +1284#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED) │ │ │ │ │ +1285#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED) │ │ │ │ │ +1286#define DBSETDBNAME 14 │ │ │ │ │ +1287#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME) │ │ │ │ │ +1288#define DBSETLVERSION(login, version) dbsetlversion((login), (version)) │ │ │ │ │ +1289#define DBSETNETWORKAUTH 101 │ │ │ │ │ +1290#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH) │ │ │ │ │ +1291#define DBSETMUTUALAUTH 102 │ │ │ │ │ +1292#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH) │ │ │ │ │ +1293#define DBSETSERVERPRINCIPAL 103 │ │ │ │ │ +1294#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), │ │ │ │ │ +DBSETSERVERPRINCIPAL) │ │ │ │ │ +1295/* settings from here are purely FreeTDS extensions */ │ │ │ │ │ +1296#define DBSETUTF16 1001 │ │ │ │ │ +1297#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16) │ │ │ │ │ +1298#define DBSETNTLMV2 1002 │ │ │ │ │ +1299#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2) │ │ │ │ │ +1300#define DBSETREADONLY 1003 │ │ │ │ │ +1301#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY) │ │ │ │ │ +1302#define DBSETDELEGATION 1004 │ │ │ │ │ +1303#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION) │ │ │ │ │ +1304#define DBSETENCRYPTION 1005 │ │ │ │ │ +1305#define DBSETLENCRYPTION(x, y) dbsetlname((x), (y), DBSETENCRYPTION) │ │ │ │ │ +1306#define DBSETPORT 1006 │ │ │ │ │ +1307#define DBSETLPORT(x,y) dbsetlshort((x), (y), DBSETPORT) │ │ │ │ │ +1308 │ │ │ │ │ +1309RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char │ │ │ │ │ +*hfile, const char *errfile, int direction); │ │ │ │ │ +1310DBINT bcp_done(DBPROCESS * dbproc); │ │ │ │ │ +1311 │ │ │ │ │ +1312DBINT bcp_batch(DBPROCESS * dbproc); │ │ │ │ │ +1313RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT │ │ │ │ │ +varlen, BYTE * terminator, int termlen, int type, │ │ │ │ │ +1314 int table_column); │ │ │ │ │ +1315RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column); │ │ │ │ │ +1316RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount); │ │ │ │ │ +1317RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int │ │ │ │ │ +host_prefixlen, DBINT host_collen, │ │ │ │ │ +1318 const BYTE * host_term, int host_termlen, int colnum); │ │ │ │ │ +1319RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, │ │ │ │ │ +int host_prefixlen, DBINT host_collen, │ │ │ │ │ +1320 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo); │ │ │ │ │ +1321RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column); │ │ │ │ │ +1322RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value); │ │ │ │ │ +1323int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */ │ │ │ │ │ +1324RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied); │ │ │ │ │ +1325DBBOOL bcp_getl(LOGINREC * login); │ │ │ │ │ +1326RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int │ │ │ │ │ +valuelen); │ │ │ │ │ +1327RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]); │ │ │ │ │ +1328RETCODE bcp_sendrow(DBPROCESS * dbproc); │ │ │ │ │ +1329 │ │ │ │ │ +1330#ifdef __cplusplus │ │ │ │ │ +1331#if 0 │ │ │ │ │ +1332{ │ │ │ │ │ +1333#endif │ │ │ │ │ +1334} │ │ │ │ │ +1335#endif │ │ │ │ │ +1336 │ │ │ │ │ +1337#endif │ │ │ │ │ +dbcolinfo │ │ │ │ │ +RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT │ │ │ │ │ +computeid, DBCOL *pdbcol) │ │ │ │ │ +Get a bunch of column attributes with a single call (Microsoft-compatibility │ │ │ │ │ +feature). │ │ │ │ │ +Definition dblib.c:3062 │ │ │ │ │ +dbpivot │ │ │ │ │ +RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, │ │ │ │ │ +DBPIVOT_FUNC func, int val) │ │ │ │ │ +Pivot the rows, creating a new resultset. │ │ │ │ │ +Definition dbpivot.c:974 │ │ │ │ │ +dbclrbuf │ │ │ │ │ +void dbclrbuf(DBPROCESS *dbproc, DBINT n) │ │ │ │ │ +Clear n rows from the row buffer. │ │ │ │ │ +Definition dblib.c:2860 │ │ │ │ │ +dbcoltypeinfo │ │ │ │ │ +DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get precision and scale information for a regular result column. │ │ │ │ │ +Definition dblib.c:3033 │ │ │ │ │ +dblogin │ │ │ │ │ +LOGINREC * dblogin(void) │ │ │ │ │ +Allocate a LOGINREC structure. │ │ │ │ │ +Definition dblib.c:713 │ │ │ │ │ +dbfreebuf │ │ │ │ │ +void dbfreebuf(DBPROCESS *dbproc) │ │ │ │ │ +Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt(). │ │ │ │ │ +Definition dblib.c:6102 │ │ │ │ │ +dbdata │ │ │ │ │ +BYTE * dbdata(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get address of data in a regular result column. │ │ │ │ │ +Definition dblib.c:3371 │ │ │ │ │ +dbstrlen │ │ │ │ │ +int dbstrlen(DBPROCESS *dbproc) │ │ │ │ │ +Get size of the command buffer, in bytes. │ │ │ │ │ +Definition dblib.c:6333 │ │ │ │ │ +dbadata │ │ │ │ │ +BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get address of compute column data. │ │ │ │ │ +Definition dblib.c:4457 │ │ │ │ │ +dbspid │ │ │ │ │ +int dbspid(DBPROCESS *dbproc) │ │ │ │ │ +Get server process ID for a DBPROCESS. │ │ │ │ │ +Definition dblib.c:5962 │ │ │ │ │ +dbtxtimestamp │ │ │ │ │ +DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get text timestamp for a column in the current row. │ │ │ │ │ +Definition dblib.c:6569 │ │ │ │ │ +dbbylist │ │ │ │ │ +BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size) │ │ │ │ │ +Get bylist for a compute row. │ │ │ │ │ +Definition dblib.c:5041 │ │ │ │ │ +dbservcharset │ │ │ │ │ +char * dbservcharset(DBPROCESS *dbprocess) │ │ │ │ │ +Get syscharset name of the server character set. │ │ │ │ │ +Definition dblib.c:7067 │ │ │ │ │ +dbspr1rowlen │ │ │ │ │ +DBINT dbspr1rowlen(DBPROCESS *dbproc) │ │ │ │ │ +Determine size buffer required to hold the results returned by dbsprhead(), │ │ │ │ │ +dbsprline(),... │ │ │ │ │ +Definition dblib.c:3438 │ │ │ │ │ +dbconvert │ │ │ │ │ +DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, │ │ │ │ │ +int desttype, BYTE *dest, DBINT destlen) │ │ │ │ │ +cf. │ │ │ │ │ +Definition dblib.c:2612 │ │ │ │ │ +dbadlen │ │ │ │ │ +DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get size of data in a compute column. │ │ │ │ │ +Definition dblib.c:4352 │ │ │ │ │ +dbsetinterrupt │ │ │ │ │ +void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_ │ │ │ │ │ +DBHNDLINTR_FUNC hndlintr) │ │ │ │ │ +Set interrupt handler for db-lib to use while blocked against a read from the │ │ │ │ │ +server. │ │ │ │ │ +Definition dblib.c:4673 │ │ │ │ │ +dbsetnull │ │ │ │ │ +RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE │ │ │ │ │ +*bindval) │ │ │ │ │ +Define substitution values to be used when binding null values. │ │ │ │ │ +Definition dblib.c:1981 │ │ │ │ │ +dbcolname │ │ │ │ │ +char * dbcolname(DBPROCESS *dbproc, int column) │ │ │ │ │ +Return name of a regular result column. │ │ │ │ │ +Definition dblib.c:1891 │ │ │ │ │ +dbfcmd │ │ │ │ │ +RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...) │ │ │ │ │ +printf-like way to form SQL to send to the server. │ │ │ │ │ +Definition dblib.c:1353 │ │ │ │ │ +dbdatecrack │ │ │ │ │ +RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt) │ │ │ │ │ +Break a DBDATETIME value into useful pieces. │ │ │ │ │ +Definition dblib.c:5889 │ │ │ │ │ +dbresults │ │ │ │ │ +RETCODE dbresults(DBPROCESS *dbproc) │ │ │ │ │ +Set up query results. │ │ │ │ │ +Definition dblib.c:1713 │ │ │ │ │ +dbwritetext │ │ │ │ │ +RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, │ │ │ │ │ +DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text) │ │ │ │ │ +Send text or image data to the server. │ │ │ │ │ +Definition dblib.c:6636 │ │ │ │ │ +dbcanquery │ │ │ │ │ +RETCODE dbcanquery(DBPROCESS *dbproc) │ │ │ │ │ +Cancel the query currently being retrieved, discarding all pending rows. │ │ │ │ │ +Definition dblib.c:6073 │ │ │ │ │ +dbinit │ │ │ │ │ +RETCODE dbinit(void) │ │ │ │ │ +Initialize db-lib. │ │ │ │ │ +Definition dblib.c:668 │ │ │ │ │ +dbvarylen │ │ │ │ │ +DBINT dbvarylen(DBPROCESS *dbproc, int column) │ │ │ │ │ +Determine whether a column can vary in size. │ │ │ │ │ +Definition dblib.c:3235 │ │ │ │ │ +dbcancel │ │ │ │ │ +RETCODE dbcancel(DBPROCESS *dbproc) │ │ │ │ │ +Cancel the current command batch. │ │ │ │ │ +Definition dblib.c:3413 │ │ │ │ │ +dbsetlogintime │ │ │ │ │ +RETCODE dbsetlogintime(int seconds) │ │ │ │ │ +Set maximum seconds db-lib waits for a server response to a login attempt. │ │ │ │ │ +Definition dblib.c:4281 │ │ │ │ │ +dbgetrow │ │ │ │ │ +RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row) │ │ │ │ │ +Read a row from the row buffer. │ │ │ │ │ +Definition dblib.c:1949 │ │ │ │ │ +dbcoltype │ │ │ │ │ +int dbcoltype(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get the datatype of a regular result set column. │ │ │ │ │ +Definition dblib.c:2987 │ │ │ │ │ +dbsetifile │ │ │ │ │ +void dbsetifile(char *filename) │ │ │ │ │ +set name and location of the interfaces file FreeTDS should use to look up a │ │ │ │ │ +servername. │ │ │ │ │ +Definition dblib.c:2730 │ │ │ │ │ +dbuse │ │ │ │ │ +RETCODE dbuse(DBPROCESS *dbproc, const char *name) │ │ │ │ │ +Change current database. │ │ │ │ │ +Definition dblib.c:1464 │ │ │ │ │ +dbnumalts │ │ │ │ │ +int dbnumalts(DBPROCESS *dbproc, int computeid) │ │ │ │ │ +Get count of columns in a compute row. │ │ │ │ │ +Definition dblib.c:4982 │ │ │ │ │ +dbiscount │ │ │ │ │ +BOOL dbiscount(DBPROCESS *dbproc) │ │ │ │ │ +Indicates whether or not the count returned by dbcount is real (Microsoft- │ │ │ │ │ +compatibility feature). │ │ │ │ │ +Definition dblib.c:2820 │ │ │ │ │ +dbgettime │ │ │ │ │ +int dbgettime(void) │ │ │ │ │ +Get maximum seconds db-lib waits for a server response to query. │ │ │ │ │ +Definition dblib.c:4265 │ │ │ │ │ +dbmoretext │ │ │ │ │ +RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[]) │ │ │ │ │ +Send chunk of a text/image value to the server. │ │ │ │ │ +Definition dblib.c:6774 │ │ │ │ │ +dbprtype │ │ │ │ │ +const char * dbprtype(int token) │ │ │ │ │ +Print a token value's name to a buffer. │ │ │ │ │ +Definition dblib.c:6489 │ │ │ │ │ +dbcolsource │ │ │ │ │ +char * dbcolsource(DBPROCESS *dbproc, int colnum) │ │ │ │ │ +Get base database column name for a result set column. │ │ │ │ │ +Definition dblib.c:3161 │ │ │ │ │ +dbchange │ │ │ │ │ +char * dbchange(DBPROCESS *dbprocess) │ │ │ │ │ +See if a command caused the current database to change. │ │ │ │ │ +Definition dblib.c:7031 │ │ │ │ │ +dbacolname │ │ │ │ │ +const char * dbacolname(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Return name of a computed result column. │ │ │ │ │ +Definition dblib.c:1917 │ │ │ │ │ +dbnullbind │ │ │ │ │ +RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator) │ │ │ │ │ +Tie a null-indicator to a regular result column. │ │ │ │ │ +Definition dblib.c:2756 │ │ │ │ │ +dbbind │ │ │ │ │ +RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE │ │ │ │ │ +*varaddr) │ │ │ │ │ +Tie a host variable to a resultset column. │ │ │ │ │ +Definition dblib.c:2653 │ │ │ │ │ +dbcmd │ │ │ │ │ +RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[]) │ │ │ │ │ +Append SQL to the command buffer. │ │ │ │ │ +Definition dblib.c:1392 │ │ │ │ │ +dbcollen │ │ │ │ │ +DBINT dbcollen(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get size of a regular result column. │ │ │ │ │ +Definition dblib.c:3186 │ │ │ │ │ +dbconvert_ps │ │ │ │ │ +DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT │ │ │ │ │ +srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo) │ │ │ │ │ +Convert one datatype to another. │ │ │ │ │ +Definition dblib.c:2319 │ │ │ │ │ +dbgetchar │ │ │ │ │ +char * dbgetchar(DBPROCESS *dbprocess, int n) │ │ │ │ │ +Get address of a position in the command buffer. │ │ │ │ │ +Definition dblib.c:6352 │ │ │ │ │ +dbanullbind │ │ │ │ │ +RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT │ │ │ │ │ +*indicator) │ │ │ │ │ +Tie a null-indicator to a compute result column. │ │ │ │ │ +Definition dblib.c:2792 │ │ │ │ │ +dbclropt │ │ │ │ │ +RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[]) │ │ │ │ │ +Reset an option. │ │ │ │ │ +Definition dblib.c:6137 │ │ │ │ │ +dbcount │ │ │ │ │ +DBINT dbcount(DBPROCESS *dbproc) │ │ │ │ │ +Get count of rows processed. │ │ │ │ │ +Definition dblib.c:2840 │ │ │ │ │ +dbaltop │ │ │ │ │ +int dbaltop(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get aggregation operator for a compute column. │ │ │ │ │ +Definition dblib.c:4486 │ │ │ │ │ +dbtablecolinfo │ │ │ │ │ +RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol) │ │ │ │ │ +describe table column attributes with a single call (Freetds-only API function │ │ │ │ │ +modelled on dbcolinfo) │ │ │ │ │ +Definition dblib.c:6506 │ │ │ │ │ +dbaltlen │ │ │ │ │ +DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get size of data in compute column. │ │ │ │ │ +Definition dblib.c:7181 │ │ │ │ │ +dbsetopt │ │ │ │ │ +RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int │ │ │ │ │ +int_param) │ │ │ │ │ +Set db-lib or server option. │ │ │ │ │ +Definition dblib.c:4513 │ │ │ │ │ +dbprhead │ │ │ │ │ +void dbprhead(DBPROCESS *dbproc) │ │ │ │ │ +Print result set headings to stdout. │ │ │ │ │ +Definition dblib.c:4001 │ │ │ │ │ +dbsetlversion │ │ │ │ │ +RETCODE dbsetlversion(LOGINREC *login, BYTE version) │ │ │ │ │ +Set TDS version for future connections. │ │ │ │ │ +Definition dblib.c:960 │ │ │ │ │ +dbprrow │ │ │ │ │ +RETCODE dbprrow(DBPROCESS *dbproc) │ │ │ │ │ +Print a result set to stdout. │ │ │ │ │ +Definition dblib.c:3559 │ │ │ │ │ +dbname │ │ │ │ │ +char * dbname(DBPROCESS *dbproc) │ │ │ │ │ +Get name of current database. │ │ │ │ │ +Definition dblib.c:7051 │ │ │ │ │ +dbalttype │ │ │ │ │ +int dbalttype(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get datatype for a compute column. │ │ │ │ │ +Definition dblib.c:4382 │ │ │ │ │ +dbsprhead │ │ │ │ │ +RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len) │ │ │ │ │ +Print result set headings to a buffer. │ │ │ │ │ +Definition dblib.c:3937 │ │ │ │ │ +dbsqlexec │ │ │ │ │ +RETCODE dbsqlexec(DBPROCESS *dbproc) │ │ │ │ │ +send the SQL command to the server and wait for an answer. │ │ │ │ │ +Definition dblib.c:1438 │ │ │ │ │ +dbwillconvert │ │ │ │ │ +DBBOOL dbwillconvert(int srctype, int desttype) │ │ │ │ │ +Test whether or not a datatype can be converted to another datatype. │ │ │ │ │ +Definition dblib.c:2890 │ │ │ │ │ +dbcolutype │ │ │ │ │ +DBINT dbcolutype(DBPROCESS *dbprocess, int column) │ │ │ │ │ +Get user-defined datatype of a regular result column. │ │ │ │ │ +Definition dblib.c:3010 │ │ │ │ │ +dbstrbuild │ │ │ │ │ +int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char │ │ │ │ │ +*formats,...) │ │ │ │ │ +Build a printable string from text containing placeholders for variables. │ │ │ │ │ +Definition dblib.c:7344 │ │ │ │ │ +dberrhandle │ │ │ │ │ +EHANDLEFUNC dberrhandle(EHANDLEFUNC handler) │ │ │ │ │ +Set an error handler, for messages from db-lib. │ │ │ │ │ +Definition dblib.c:5163 │ │ │ │ │ +dbsetversion │ │ │ │ │ +RETCODE dbsetversion(DBINT version) │ │ │ │ │ +Specify a db-lib version level. │ │ │ │ │ +Definition dblib.c:6018 │ │ │ │ │ +dbgetpacket │ │ │ │ │ +int dbgetpacket(DBPROCESS *dbproc) │ │ │ │ │ +Get TDS packet size for the connection. │ │ │ │ │ +Definition dblib.c:4117 │ │ │ │ │ +dbrecftos │ │ │ │ │ +void dbrecftos(const char filename[]) │ │ │ │ │ +Record to a file all SQL commands sent to the server. │ │ │ │ │ +Definition dblib.c:6809 │ │ │ │ │ +dbgetuserdata │ │ │ │ │ +BYTE * dbgetuserdata(DBPROCESS *dbproc) │ │ │ │ │ +Get address of user-allocated data from a DBPROCESS. │ │ │ │ │ +Definition dblib.c:6000 │ │ │ │ │ +dbsetuserdata │ │ │ │ │ +void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr) │ │ │ │ │ +Associate client-allocated (and defined) data with a DBPROCESS. │ │ │ │ │ +Definition dblib.c:5982 │ │ │ │ │ +dbprcollen │ │ │ │ │ +DBINT dbprcollen(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get size of a result column needed to print column. │ │ │ │ │ +Definition dblib.c:3209 │ │ │ │ │ +dbexit │ │ │ │ │ +void dbexit(void) │ │ │ │ │ +Close server connections and free all related structures. │ │ │ │ │ +Definition dblib.c:1571 │ │ │ │ │ +dbloginfree │ │ │ │ │ +void dbloginfree(LOGINREC *login) │ │ │ │ │ +free the LOGINREC │ │ │ │ │ +Definition dblib.c:746 │ │ │ │ │ +dbmorecmds │ │ │ │ │ +RETCODE dbmorecmds(DBPROCESS *dbproc) │ │ │ │ │ +See if more commands are to be processed. │ │ │ │ │ +Definition dblib.c:6279 │ │ │ │ │ +dbisopt │ │ │ │ │ +DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[]) │ │ │ │ │ +Get value of an option. │ │ │ │ │ +Definition dblib.c:6205 │ │ │ │ │ +dbnumcompute │ │ │ │ │ +int dbnumcompute(DBPROCESS *dbprocess) │ │ │ │ │ +Get count of COMPUTE clauses for a result set. │ │ │ │ │ +Definition dblib.c:5015 │ │ │ │ │ +dbsqlsend │ │ │ │ │ +RETCODE dbsqlsend(DBPROCESS *dbproc) │ │ │ │ │ +Transmit the command buffer to the server. │ │ │ │ │ +Definition dblib.c:7087 │ │ │ │ │ +dbsprline │ │ │ │ │ +RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_ │ │ │ │ │ +char) │ │ │ │ │ +Get formatted string for underlining dbsprhead() column names. │ │ │ │ │ +Definition dblib.c:3879 │ │ │ │ │ +dbversion │ │ │ │ │ +const char * dbversion(void) │ │ │ │ │ +See which version of db-lib is in use. │ │ │ │ │ +Definition dblib.c:6884 │ │ │ │ │ +dbsafestr │ │ │ │ │ +RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, │ │ │ │ │ +DBINT destlen, int quotetype) │ │ │ │ │ +safely quotes character values in SQL text. │ │ │ │ │ +Definition dblib.c:6428 │ │ │ │ │ +dbaltcolid │ │ │ │ │ +int dbaltcolid(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get column ID of a compute column. │ │ │ │ │ +Definition dblib.c:4326 │ │ │ │ │ +dbanydatecrack │ │ │ │ │ +RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void │ │ │ │ │ +*data) │ │ │ │ │ +Break any kind of date or time value into useful pieces. │ │ │ │ │ +Definition dblib.c:5910 │ │ │ │ │ +dbsettime │ │ │ │ │ +RETCODE dbsettime(int seconds) │ │ │ │ │ +Set maximum seconds db-lib waits for a server response to query. │ │ │ │ │ +Definition dblib.c:4234 │ │ │ │ │ +dbnumcols │ │ │ │ │ +int dbnumcols(DBPROCESS *dbproc) │ │ │ │ │ +Return number of regular columns in a result set. │ │ │ │ │ +Definition dblib.c:1867 │ │ │ │ │ +dbgetmaxprocs │ │ │ │ │ +int dbgetmaxprocs(void) │ │ │ │ │ +get maximum simultaneous connections db-lib will open to the server. │ │ │ │ │ +Definition dblib.c:4213 │ │ │ │ │ +dbtxptr │ │ │ │ │ +DBBINARY * dbtxptr(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get text pointer for a column in the current row. │ │ │ │ │ +Definition dblib.c:6599 │ │ │ │ │ +dbmsghandle │ │ │ │ │ +MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler) │ │ │ │ │ +Set a message handler, for messages from the server. │ │ │ │ │ +Definition dblib.c:5182 │ │ │ │ │ +dbreadtext │ │ │ │ │ +STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize) │ │ │ │ │ +Fetch part of a text or image value from the server. │ │ │ │ │ +Definition dblib.c:6705 │ │ │ │ │ +dbsqlok │ │ │ │ │ +RETCODE dbsqlok(DBPROCESS *dbproc) │ │ │ │ │ +Wait for results of a query from the server. │ │ │ │ │ +Definition dblib.c:4856 │ │ │ │ │ +dbdatlen │ │ │ │ │ +DBINT dbdatlen(DBPROCESS *dbproc, int column) │ │ │ │ │ +Get size of current row's data in a regular result column. │ │ │ │ │ +Definition dblib.c:3343 │ │ │ │ │ +dbsetrow │ │ │ │ │ +STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row) │ │ │ │ │ +Make a buffered row "current" without fetching it into bound variables. │ │ │ │ │ +Definition dblib.c:2064 │ │ │ │ │ +dbclose │ │ │ │ │ +void dbclose(DBPROCESS *dbproc) │ │ │ │ │ +Close a connection to the server and free associated resources. │ │ │ │ │ +Definition dblib.c:1504 │ │ │ │ │ +dbstrcpy │ │ │ │ │ +RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest) │ │ │ │ │ +Get a copy of a chunk of the command buffer. │ │ │ │ │ +Definition dblib.c:6384 │ │ │ │ │ +dbaltutype │ │ │ │ │ +DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column) │ │ │ │ │ +Get user-defined datatype of a compute column. │ │ │ │ │ +Definition dblib.c:7158 │ │ │ │ │ +dbsetmaxprocs │ │ │ │ │ +RETCODE dbsetmaxprocs(int maxprocs) │ │ │ │ │ +Set maximum simultaneous connections db-lib will open to the server. │ │ │ │ │ +Definition dblib.c:4141 │ │ │ │ │ +dbspr1row │ │ │ │ │ +RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len) │ │ │ │ │ +Print a regular result row to a buffer. │ │ │ │ │ +Definition dblib.c:3476 │ │ │ │ │ +dbaltbind │ │ │ │ │ +RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype, │ │ │ │ │ +DBINT varlen, BYTE *varaddr) │ │ │ │ │ +Bind a compute column to a program variable. │ │ │ │ │ +Definition dblib.c:4411 │ │ │ │ │ +dbretstatus │ │ │ │ │ +DBINT dbretstatus(DBPROCESS *dbproc) │ │ │ │ │ +Fetch status value returned by query or remote procedure call. │ │ │ │ │ +Definition dblib.c:4716 │ │ │ │ │ +dbrpcinit │ │ │ │ │ +RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options) │ │ │ │ │ +Initialize a remote procedure call. │ │ │ │ │ +Definition rpc.c:72 │ │ │ │ │ +dbretdata │ │ │ │ │ +BYTE * dbretdata(DBPROCESS *dbproc, int retnum) │ │ │ │ │ +Get value of an output parameter filled by a stored procedure. │ │ │ │ │ +Definition dblib.c:4795 │ │ │ │ │ +dbretname │ │ │ │ │ +char * dbretname(DBPROCESS *dbproc, int retnum) │ │ │ │ │ +Get name of an output parameter filled by a stored procedure. │ │ │ │ │ +Definition dblib.c:4766 │ │ │ │ │ +dbhasretstat │ │ │ │ │ +DBBOOL dbhasretstat(DBPROCESS *dbproc) │ │ │ │ │ +Determine if query generated a return status number. │ │ │ │ │ +Definition dblib.c:4692 │ │ │ │ │ +dbrettype │ │ │ │ │ +int dbrettype(DBPROCESS *dbproc, int retnum) │ │ │ │ │ +Get datatype of a stored procedure's return parameter. │ │ │ │ │ +Definition dblib.c:6308 │ │ │ │ │ +dbretlen │ │ │ │ │ +int dbretlen(DBPROCESS *dbproc, int retnum) │ │ │ │ │ +Get size of an output parameter filled by a stored procedure. │ │ │ │ │ +Definition dblib.c:4821 │ │ │ │ │ +dbrpcparam │ │ │ │ │ +RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int │ │ │ │ │ +type, DBINT maxlen, DBINT datalen, BYTE *value) │ │ │ │ │ +Add a parameter to a remote procedure call. │ │ │ │ │ +Definition rpc.c:155 │ │ │ │ │ +dbrpcsend │ │ │ │ │ +RETCODE dbrpcsend(DBPROCESS *dbproc) │ │ │ │ │ +Execute the procedure and free associated memory. │ │ │ │ │ +Definition rpc.c:281 │ │ │ │ │ +dbnumrets │ │ │ │ │ +int dbnumrets(DBPROCESS *dbproc) │ │ │ │ │ +Get count of output parameters filled by a stored procedure. │ │ │ │ │ +Definition dblib.c:4734 │ │ │ │ │ +bcp_colfmt │ │ │ │ │ +RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int host_ │ │ │ │ │ +prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int │ │ │ │ │ +colnum) │ │ │ │ │ +Specify the format of a datafile prior to writing to a table. │ │ │ │ │ +Definition bcp.c:377 │ │ │ │ │ +bcp_getl │ │ │ │ │ +DBBOOL bcp_getl(LOGINREC *login) │ │ │ │ │ +See if BCP_SETL() was used to set the LOGINREC for BCP work. │ │ │ │ │ +Definition bcp.c:710 │ │ │ │ │ +bcp_control │ │ │ │ │ +RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value) │ │ │ │ │ +Set BCP options for uploading a datafile. │ │ │ │ │ +Definition bcp.c:546 │ │ │ │ │ +bcp_columns │ │ │ │ │ +RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount) │ │ │ │ │ +Indicate how many columns are to be found in the datafile. │ │ │ │ │ +Definition bcp.c:301 │ │ │ │ │ +bcp_colptr │ │ │ │ │ +RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column) │ │ │ │ │ +Override bcp_bind() by pointing to a different host variable. │ │ │ │ │ +Definition bcp.c:674 │ │ │ │ │ +bcp_bind │ │ │ │ │ +RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, │ │ │ │ │ +BYTE *terminator, int termlen, int type, int table_column) │ │ │ │ │ +Bind a program host variable to a database column. │ │ │ │ │ +Definition bcp.c:2083 │ │ │ │ │ +bcp_exec │ │ │ │ │ +RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied) │ │ │ │ │ +Write a datafile to a table. │ │ │ │ │ +Definition bcp.c:1621 │ │ │ │ │ +bcp_done │ │ │ │ │ +DBINT bcp_done(DBPROCESS *dbproc) │ │ │ │ │ +Conclude the transfer of data from program variables. │ │ │ │ │ +Definition bcp.c:2041 │ │ │ │ │ +bcp_readfmt │ │ │ │ │ +RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[]) │ │ │ │ │ +Read a format definition file. │ │ │ │ │ +Definition bcp.c:1682 │ │ │ │ │ +bcp_batch │ │ │ │ │ +DBINT bcp_batch(DBPROCESS *dbproc) │ │ │ │ │ +Commit a set of rows to the table. │ │ │ │ │ +Definition bcp.c:2014 │ │ │ │ │ +bcp_init │ │ │ │ │ +RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile, │ │ │ │ │ +const char *errfile, int direction) │ │ │ │ │ +Prepare for bulk copy operation on a table. │ │ │ │ │ +Definition bcp.c:167 │ │ │ │ │ +bcp_collen │ │ │ │ │ +RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column) │ │ │ │ │ +Set the length of a host variable to be written to a table. │ │ │ │ │ +Definition bcp.c:267 │ │ │ │ │ +bcp_sendrow │ │ │ │ │ +RETCODE bcp_sendrow(DBPROCESS *dbproc) │ │ │ │ │ +Write data in host variables to the table. │ │ │ │ │ +Definition bcp.c:1384 │ │ │ │ │ +bcp_colfmt_ps │ │ │ │ │ +RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int │ │ │ │ │ +host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int │ │ │ │ │ +colnum, DBTYPEINFO *typeinfo) │ │ │ │ │ +Specify the format of a host file for bulk copy purposes, with precision and │ │ │ │ │ +scale support for numeri... │ │ │ │ │ +Definition bcp.c:509 │ │ │ │ │ +bcp_options │ │ │ │ │ +RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen) │ │ │ │ │ +Set "hints" for uploading a file. │ │ │ │ │ +Definition bcp.c:624 │ │ │ │ │ +dbmny4zero │ │ │ │ │ +RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest) │ │ │ │ │ +Zero a DBMONEY4 value. │ │ │ │ │ +Definition dblib.c:5612 │ │ │ │ │ +dbmny4add │ │ │ │ │ +RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum) │ │ │ │ │ +Add two DBMONEY4 values. │ │ │ │ │ +Definition dblib.c:5635 │ │ │ │ │ +dbmny4cmp │ │ │ │ │ +int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2) │ │ │ │ │ +Compare two DBMONEY4 values. │ │ │ │ │ +Definition dblib.c:5754 │ │ │ │ │ +dbmnymaxpos │ │ │ │ │ +RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ +Get maximum positive DBMONEY value supported. │ │ │ │ │ +Definition dblib.c:5387 │ │ │ │ │ +dbmny4minus │ │ │ │ │ +RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest) │ │ │ │ │ +Negate a DBMONEY4 value. │ │ │ │ │ +Definition dblib.c:5588 │ │ │ │ │ +dbmnyminus │ │ │ │ │ +RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest) │ │ │ │ │ +Negate a DBMONEY value. │ │ │ │ │ +Definition dblib.c:5561 │ │ │ │ │ +dbmny4sub │ │ │ │ │ +RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 │ │ │ │ │ +*diff) │ │ │ │ │ +Subtract two DBMONEY4 values. │ │ │ │ │ +Definition dblib.c:5666 │ │ │ │ │ +dbmnyzero │ │ │ │ │ +RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ +Set a DBMONEY value to zero. │ │ │ │ │ +Definition dblib.c:5366 │ │ │ │ │ +dbmnycopy │ │ │ │ │ +RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest) │ │ │ │ │ +Copy a DBMONEY value. │ │ │ │ │ +Definition dblib.c:6052 │ │ │ │ │ +dbmny4copy │ │ │ │ │ +RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2) │ │ │ │ │ +Copy a DBMONEY4 value. │ │ │ │ │ +Definition dblib.c:5782 │ │ │ │ │ +dbmnymaxneg │ │ │ │ │ +RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest) │ │ │ │ │ +Get maximum negative DBMONEY value supported. │ │ │ │ │ +Definition dblib.c:5408 │ │ │ │ │ +dbmnydec │ │ │ │ │ +RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr) │ │ │ │ │ +Subtract $0.0001 from a DBMONEY value. │ │ │ │ │ +Definition dblib.c:5533 │ │ │ │ │ +dbmnyinc │ │ │ │ │ +RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr) │ │ │ │ │ +Add $0.0001 to a DBMONEY value. │ │ │ │ │ +Definition dblib.c:5505 │ │ │ │ │ +dbmnycmp │ │ │ │ │ +int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2) │ │ │ │ │ +Compare two DBMONEY values. │ │ │ │ │ +Definition dblib.c:5308 │ │ │ │ │ +dbdatecmp │ │ │ │ │ +int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2) │ │ │ │ │ +Compare DBDATETIME values, similar to strcmp(3). │ │ │ │ │ +Definition dblib.c:5807 │ │ │ │ │ +dbmonthname │ │ │ │ │ +const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, │ │ │ │ │ +DBBOOL shortform) │ │ │ │ │ +Get name of a month, in some human language. │ │ │ │ │ +Definition dblib.c:7002 │ │ │ │ │ +dbcurcmd │ │ │ │ │ +int dbcurcmd(DBPROCESS *dbproc) │ │ │ │ │ +Get number of the row just returned. │ │ │ │ │ +Definition dblib.c:6262 │ │ │ │ │ +dbsetlbool │ │ │ │ │ +RETCODE dbsetlbool(LOGINREC *login, int value, int which) │ │ │ │ │ +Set a boolean value in a LOGINREC structure. │ │ │ │ │ +Definition dblib.c:909 │ │ │ │ │ +dblastrow │ │ │ │ │ +DBINT dblastrow(DBPROCESS *dbproc) │ │ │ │ │ +Get number of the last row in the row buffer. │ │ │ │ │ +Definition dblib.c:7251 │ │ │ │ │ +dbcmdrow │ │ │ │ │ +RETCODE dbcmdrow(DBPROCESS *dbproc) │ │ │ │ │ +See if the current command can return rows. │ │ │ │ │ +Definition dblib.c:4302 │ │ │ │ │ +dbsetlshort │ │ │ │ │ +RETCODE dbsetlshort(LOGINREC *login, int value, int which) │ │ │ │ │ +Set an integer value in a LOGINREC structure. │ │ │ │ │ +Definition dblib.c:874 │ │ │ │ │ +dbrows │ │ │ │ │ +RETCODE dbrows(DBPROCESS *dbproc) │ │ │ │ │ +Indicate whether a query returned rows. │ │ │ │ │ +Definition dblib.c:4076 │ │ │ │ │ +dbsetavail │ │ │ │ │ +void dbsetavail(DBPROCESS *dbprocess) │ │ │ │ │ +Mark a DBPROCESS as "available". │ │ │ │ │ +Definition dblib.c:7319 │ │ │ │ │ +dbiowdesc │ │ │ │ │ +int dbiowdesc(DBPROCESS *dbproc) │ │ │ │ │ +Get file descriptor of the socket used by a DBPROCESS to write data coming to │ │ │ │ │ +the server.... │ │ │ │ │ +Definition dblib.c:7291 │ │ │ │ │ +dbtds │ │ │ │ │ +int dbtds(DBPROCESS *dbprocess) │ │ │ │ │ +Get the TDS version in use for dbproc. │ │ │ │ │ +Definition dblib.c:6843 │ │ │ │ │ +dbcurrow │ │ │ │ │ +DBINT dbcurrow(DBPROCESS *dbproc) │ │ │ │ │ +Get number of the row currently being read. │ │ │ │ │ +Definition dblib.c:6228 │ │ │ │ │ +dbrowtype │ │ │ │ │ +STATUS dbrowtype(DBPROCESS *dbprocess) │ │ │ │ │ +Get returned row's type. │ │ │ │ │ +Definition dblib.c:6245 │ │ │ │ │ +dbiordesc │ │ │ │ │ +int dbiordesc(DBPROCESS *dbproc) │ │ │ │ │ +Get file descriptor of the socket used by a DBPROCESS to read data coming from │ │ │ │ │ +the server.... │ │ │ │ │ +Definition dblib.c:7275 │ │ │ │ │ +dbsetllong │ │ │ │ │ +RETCODE dbsetllong(LOGINREC *login, long value, int which) │ │ │ │ │ +Set an integer value in a LOGINREC structure. │ │ │ │ │ +Definition dblib.c:837 │ │ │ │ │ +dbsetlname │ │ │ │ │ +RETCODE dbsetlname(LOGINREC *login, const char *value, int which) │ │ │ │ │ +Set the value of a string in a LOGINREC structure. │ │ │ │ │ +Definition dblib.c:768 │ │ │ │ │ +tdsdbopen │ │ │ │ │ +DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib) │ │ │ │ │ +Form a connection with the server. │ │ │ │ │ +Definition dblib.c:1192 │ │ │ │ │ +dbdead │ │ │ │ │ +DBBOOL dbdead(DBPROCESS *dbproc) │ │ │ │ │ +Check if dbproc is an ex-parrot. │ │ │ │ │ +Definition dblib.c:5100 │ │ │ │ │ +dbfirstrow │ │ │ │ │ +DBINT dbfirstrow(DBPROCESS *dbproc) │ │ │ │ │ +See if a server response has arrived. │ │ │ │ │ +Definition dblib.c:7236 │ │ │ │ │ +LOGINREC │ │ │ │ │ +Definition bsqlodbc.c:100 │ │ │ │ │ +col_t │ │ │ │ │ +Definition dbpivot.c:77 │ │ │ │ │ +pivot_t │ │ │ │ │ +Definition dbpivot.c:842 │ │ │ │ │ +tds_dblib_loginrec │ │ │ │ │ +Definition dblib.h:44 │ │ │ │ │ +tds_dblib_dbprocess │ │ │ │ │ +Definition dblib.h:123 │ │ │ │ │ +DBVARYCHAR │ │ │ │ │ +Definition sybdb.h:264 │ │ │ │ │ +DBVARYBIN │ │ │ │ │ +Definition sybdb.h:270 │ │ │ │ │ +DBNUMERIC │ │ │ │ │ +Definition sybdb.h:276 │ │ │ │ │ +DBMONEY │ │ │ │ │ +Definition sybdb.h:285 │ │ │ │ │ +DBMONEY4 │ │ │ │ │ +Definition sybdb.h:291 │ │ │ │ │ +DBDATETIME │ │ │ │ │ +Definition sybdb.h:296 │ │ │ │ │ +DBDATETIME4 │ │ │ │ │ +Definition sybdb.h:302 │ │ │ │ │ +DBDATETIMEALL │ │ │ │ │ +Definition sybdb.h:308 │ │ │ │ │ +DBDATETIMEALL::offset │ │ │ │ │ +DBSMALLINT offset │ │ │ │ │ +time offset │ │ │ │ │ +Definition sybdb.h:311 │ │ │ │ │ +DBDATETIMEALL::time │ │ │ │ │ +DBUBIGINT time │ │ │ │ │ +time, 7 digit precision │ │ │ │ │ +Definition sybdb.h:309 │ │ │ │ │ +DBDATETIMEALL::date │ │ │ │ │ +DBINT date │ │ │ │ │ +date, 0 = 1900-01-01 │ │ │ │ │ +Definition sybdb.h:310 │ │ │ │ │ +dbtypeinfo │ │ │ │ │ +Definition sybdb.h:337 │ │ │ │ │ +dbstring │ │ │ │ │ +Definition sybdb.h:343 │ │ │ │ │ +DBCOL │ │ │ │ │ +Definition sybdb.h:356 │ │ │ │ │ +DBCOL2 │ │ │ │ │ +Definition sybdb.h:375 │ │ │ │ │ +tds_microsoft_dbdaterec │ │ │ │ │ +Definition sybdb.h:459 │ │ │ │ │ +tds_sybase_dbdaterec │ │ │ │ │ +Definition sybdb.h:475 │ │ │ │ │ +tds_microsoft_dbdaterec2 │ │ │ │ │ +Definition sybdb.h:491 │ │ │ │ │ +tds_sybase_dbdaterec2 │ │ │ │ │ +Definition sybdb.h:507 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00377_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/tds_sysdep_public.h Source File │ │ │ │ +FreeTDS API: include/odbcss.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,19 +74,19 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
tds_sysdep_public.h
│ │ │ │ +
odbcss.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-2011 Brian Bruns
│ │ │ │ +
2 * Copyright (C) 2008 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,109 +96,388 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tds_sysdep_public_h_
│ │ │ │ -
21#define _tds_sysdep_public_h_
│ │ │ │ +
20#ifndef _odbcss_h_
│ │ │ │ +
21#define _odbcss_h_
│ │ │ │
22
│ │ │ │ -
23/*
│ │ │ │ -
24 * This file is publicly installed.
│ │ │ │ -
25 * MUST not include config.h
│ │ │ │ -
26 */
│ │ │ │ -
27
│ │ │ │ -
28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || \
│ │ │ │ -
29 (defined(_MSC_VER) && _MSC_VER >= 1600) || \
│ │ │ │ -
30 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
│ │ │ │ -
31# include <stdint.h>
│ │ │ │ -
32#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)
│ │ │ │ -
33# include <inttypes.h>
│ │ │ │ -
34#else
│ │ │ │ -
35typedef signed char int8_t; /* 8-bit int */
│ │ │ │ -
36typedef unsigned char uint8_t; /* 8-bit int */
│ │ │ │ -
37/*
│ │ │ │ -
38 * This is where platform-specific changes need to be made.
│ │ │ │ -
39 */
│ │ │ │ -
40# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
│ │ │ │ -
41# include <winsock2.h>
│ │ │ │ -
42# include <ws2tcpip.h>
│ │ │ │ -
43# include <windows.h>
│ │ │ │ -
44 typedef signed short int16_t; /* 16-bit int */
│ │ │ │ -
45 typedef unsigned short uint16_t; /* 16-bit int */
│ │ │ │ -
46 typedef signed int int32_t; /* 32-bit int */
│ │ │ │ -
47 typedef unsigned int uint32_t; /* 32-bit int */
│ │ │ │ -
48 typedef signed __int64 int64_t; /* 64-bit int */
│ │ │ │ -
49 typedef unsigned __int64 uint64_t; /* 64-bit int */
│ │ │ │ -
50# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
│ │ │ │ -
51 typedef signed short int16_t; /* 16-bit int */
│ │ │ │ -
52 typedef unsigned short uint16_t; /* 16-bit int */
│ │ │ │ -
53 typedef signed int int32_t; /* 32-bit int */
│ │ │ │ -
54 typedef unsigned int uint32_t; /* 32-bit int */
│ │ │ │ -
55 typedef signed long int64_t; /* 64-bit int */
│ │ │ │ -
56 typedef unsigned long uint64_t; /* 64-bit int */
│ │ │ │ -
57# endif
│ │ │ │ -
58#endif
│ │ │ │ -
59
│ │ │ │ -
60#include <float.h>
│ │ │ │ +
23#ifdef TDSODBC_BCP
│ │ │ │ +
24#include <sql.h>
│ │ │ │ +
25#endif
│ │ │ │ +
26
│ │ │ │ +
27#ifdef __cplusplus
│ │ │ │ +
28extern "C" {
│ │ │ │ +
29#endif
│ │ │ │ +
30
│ │ │ │ +
31#define SQL_DIAG_SS_MSGSTATE (-1150)
│ │ │ │ +
32#define SQL_DIAG_SS_LINE (-1154)
│ │ │ │ +
33
│ │ │ │ +
34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233
│ │ │ │ +
35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234
│ │ │ │ +
36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235
│ │ │ │ +
37#define SQL_SOPT_SS_PARAM_FOCUS 1236
│ │ │ │ +
38
│ │ │ │ +
39#ifndef SQL_SS_LENGTH_UNLIMITED
│ │ │ │ +
40#define SQL_SS_LENGTH_UNLIMITED 0
│ │ │ │ +
41#endif
│ │ │ │ +
42
│ │ │ │ +
43#ifndef SQL_COPT_SS_BASE
│ │ │ │ +
44#define SQL_COPT_SS_BASE 1200
│ │ │ │ +
45#endif
│ │ │ │ +
46
│ │ │ │ +
47#ifndef SQL_COPT_SS_MARS_ENABLED
│ │ │ │ +
48#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
│ │ │ │ +
49#endif
│ │ │ │ +
50
│ │ │ │ +
51#ifndef SQL_COPT_SS_OLDPWD
│ │ │ │ +
52#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
│ │ │ │ +
53#endif
│ │ │ │ +
54
│ │ │ │ +
55#define SQL_INFO_FREETDS_TDS_VERSION 1300
│ │ │ │ +
56#define SQL_INFO_FREETDS_SOCKET 1301
│ │ │ │ +
57
│ │ │ │ +
58#ifndef SQL_MARS_ENABLED_NO
│ │ │ │ +
59#define SQL_MARS_ENABLED_NO 0
│ │ │ │ +
60#endif
│ │ │ │
61
│ │ │ │ -
62/* try to understand float sizes using float.h constants */
│ │ │ │ -
63#if FLT_RADIX == 2
│ │ │ │ -
64# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128
│ │ │ │ -
65# define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ -
66# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128
│ │ │ │ -
67# define tds_sysdep_real32_type double /* 32-bit real */
│ │ │ │ -
68# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128
│ │ │ │ -
69# define tds_sysdep_real32_type long double /* 32-bit real */
│ │ │ │ -
70# endif
│ │ │ │ -
71# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024
│ │ │ │ -
72# define tds_sysdep_real64_type float /* 64-bit real */
│ │ │ │ -
73# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024
│ │ │ │ -
74# define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ -
75# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
│ │ │ │ -
76# define tds_sysdep_real64_type long double /* 64-bit real */
│ │ │ │ -
77# endif
│ │ │ │ -
78# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)
│ │ │ │ -
79# error Some float type was not found!
│ │ │ │ -
80# endif
│ │ │ │ -
81#else
│ │ │ │ -
82# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38
│ │ │ │ -
83# define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ -
84# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38
│ │ │ │ -
85# define tds_sysdep_real32_type double /* 32-bit real */
│ │ │ │ -
86# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38
│ │ │ │ -
87# define tds_sysdep_real32_type long double /* 32-bit real */
│ │ │ │ -
88# endif
│ │ │ │ -
89# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308
│ │ │ │ -
90# define tds_sysdep_real64_type float /* 64-bit real */
│ │ │ │ -
91# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308
│ │ │ │ -
92# define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ -
93# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308
│ │ │ │ -
94# define tds_sysdep_real64_type long double /* 64-bit real */
│ │ │ │ -
95# endif
│ │ │ │ -
96#endif
│ │ │ │ -
97
│ │ │ │ -
98/* fall back to configure.ac types */
│ │ │ │ -
99#ifndef tds_sysdep_real32_type
│ │ │ │ -
100#define tds_sysdep_real32_type float /* 32-bit real */
│ │ │ │ -
101#endif /* !tds_sysdep_real32_type */
│ │ │ │ -
102
│ │ │ │ -
103#ifndef tds_sysdep_real64_type
│ │ │ │ -
104#define tds_sysdep_real64_type double /* 64-bit real */
│ │ │ │ -
105#endif /* !tds_sysdep_real64_type */
│ │ │ │ -
106
│ │ │ │ -
107#if !defined(MSDBLIB) && !defined(SYBDBLIB)
│ │ │ │ -
108#define SYBDBLIB 1
│ │ │ │ -
109#endif
│ │ │ │ -
110#if defined(MSDBLIB) && defined(SYBDBLIB)
│ │ │ │ -
111#error MSDBLIB and SYBDBLIB cannot both be defined
│ │ │ │ -
112#endif
│ │ │ │ -
113
│ │ │ │ -
114#endif /* _tds_sysdep_public_h_ */
│ │ │ │ +
62#ifndef SQL_MARS_ENABLED_YES
│ │ │ │ +
63#define SQL_MARS_ENABLED_YES 1
│ │ │ │ +
64#endif
│ │ │ │ +
65
│ │ │ │ +
66#ifndef SQL_SS_VARIANT
│ │ │ │ +
67#define SQL_SS_VARIANT (-150)
│ │ │ │ +
68#endif
│ │ │ │ +
69
│ │ │ │ +
70#ifndef SQL_SS_UDT
│ │ │ │ +
71#define SQL_SS_UDT (-151)
│ │ │ │ +
72#endif
│ │ │ │ +
73
│ │ │ │ +
74#ifndef SQL_SS_XML
│ │ │ │ +
75#define SQL_SS_XML (-152)
│ │ │ │ +
76#endif
│ │ │ │ +
77
│ │ │ │ +
78#ifndef SQL_SS_TABLE
│ │ │ │ +
79#define SQL_SS_TABLE (-153)
│ │ │ │ +
80#endif
│ │ │ │ +
81
│ │ │ │ +
82#ifndef SQL_SS_TIME2
│ │ │ │ +
83#define SQL_SS_TIME2 (-154)
│ │ │ │ +
84#endif
│ │ │ │ +
85
│ │ │ │ +
86#ifndef SQL_SS_TIMESTAMPOFFSET
│ │ │ │ +
87#define SQL_SS_TIMESTAMPOFFSET (-155)
│ │ │ │ +
88#endif
│ │ │ │ +
89
│ │ │ │ +
90/*
│ │ │ │ +
91 * these types are used from conversion from client to server
│ │ │ │ +
92 */
│ │ │ │ +
93#ifndef SQL_C_SS_TIME2
│ │ │ │ +
94#define SQL_C_SS_TIME2 (0x4000)
│ │ │ │ +
95#endif
│ │ │ │ +
96
│ │ │ │ +
97#ifndef SQL_C_SS_TIMESTAMPOFFSET
│ │ │ │ +
98#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
│ │ │ │ +
99#endif
│ │ │ │ +
100
│ │ │ │ +
101#ifndef SQL_CA_SS_BASE
│ │ │ │ +
102#define SQL_CA_SS_BASE 1200
│ │ │ │ +
103#endif
│ │ │ │ +
104
│ │ │ │ +
105#ifndef SQL_CA_SS_UDT_CATALOG_NAME
│ │ │ │ +
106#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
│ │ │ │ +
107#endif
│ │ │ │ +
108
│ │ │ │ +
109#ifndef SQL_CA_SS_UDT_SCHEMA_NAME
│ │ │ │ +
110#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
│ │ │ │ +
111#endif
│ │ │ │ +
112
│ │ │ │ +
113#ifndef SQL_CA_SS_UDT_TYPE_NAME
│ │ │ │ +
114#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
│ │ │ │ +
115#endif
│ │ │ │ +
116
│ │ │ │ +
117#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
│ │ │ │ +
118#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
│ │ │ │ +
119#endif
│ │ │ │ +
120
│ │ │ │ +
121#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
│ │ │ │ +
122#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
│ │ │ │ +
123#endif
│ │ │ │ +
124
│ │ │ │ +
125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
│ │ │ │ +
126#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
│ │ │ │ +
127#endif
│ │ │ │ +
128
│ │ │ │ +
129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
│ │ │ │ +
130#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
│ │ │ │ +
131#endif
│ │ │ │ +
132
│ │ │ │ +
│ │ │ │ +
133typedef struct tagSS_TIME2_STRUCT {
│ │ │ │ +
134 SQLUSMALLINT hour;
│ │ │ │ +
135 SQLUSMALLINT minute;
│ │ │ │ +
136 SQLUSMALLINT second;
│ │ │ │ +
137 SQLUINTEGER fraction;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
139
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
141 SQLSMALLINT year;
│ │ │ │ +
142 SQLUSMALLINT month;
│ │ │ │ +
143 SQLUSMALLINT day;
│ │ │ │ +
144 SQLUSMALLINT hour;
│ │ │ │ +
145 SQLUSMALLINT minute;
│ │ │ │ +
146 SQLUSMALLINT second;
│ │ │ │ +
147 SQLUINTEGER fraction;
│ │ │ │ +
148 SQLSMALLINT timezone_hour;
│ │ │ │ +
149 SQLSMALLINT timezone_minute;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
151
│ │ │ │ +
152
│ │ │ │ +
153#ifdef TDSODBC_BCP
│ │ │ │ +
154
│ │ │ │ +
155#ifndef SUCCEED
│ │ │ │ +
156#define SUCCEED 1
│ │ │ │ +
157#endif
│ │ │ │ +
158#ifndef FAIL
│ │ │ │ +
159#define FAIL 0
│ │ │ │ +
160#endif
│ │ │ │ +
161
│ │ │ │ +
162#ifndef BCPKEEPIDENTITY
│ │ │ │ +
163#define BCPKEEPIDENTITY 8
│ │ │ │ +
164#endif
│ │ │ │ +
165#ifndef BCPHINTSA
│ │ │ │ +
166#define BCPHINTSA 10
│ │ │ │ +
167#endif
│ │ │ │ +
168#ifndef BCPHINTSW
│ │ │ │ +
169#define BCPHINTSW 11
│ │ │ │ +
170#endif
│ │ │ │ +
171
│ │ │ │ +
172#define BCP_DIRECTION_IN 1
│ │ │ │ +
173
│ │ │ │ +
174#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
│ │ │ │ +
175#define SQL_BCP_OFF 0
│ │ │ │ +
176#define SQL_BCP_ON 1
│ │ │ │ +
177
│ │ │ │ +
178#define SQL_COPT_TDSODBC_IMPL_BASE 1500
│ │ │ │ +
179#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
│ │ │ │ +
180/* deprecated SQL_COPT_TDSODBC_IMPL_BCP_CONTROL */
│ │ │ │ +
181#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
│ │ │ │ +
182#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
│ │ │ │ +
183#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
│ │ │ │ +
184#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
│ │ │ │ +
185#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
│ │ │ │ +
186#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
│ │ │ │ +
187#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+8)
│ │ │ │ +
188
│ │ │ │ +
189#define SQL_VARLEN_DATA -10
│ │ │ │ +
190
│ │ │ │ +
191/* copied from sybdb.h which was copied from tds.h */
│ │ │ │ +
192/* TODO find a much better way... */
│ │ │ │ +
193enum
│ │ │ │ +
194{
│ │ │ │ +
195 BCP_TYPE_SQLCHAR = 47, /* 0x2F */
│ │ │ │ +
196#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
│ │ │ │ +
197 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */
│ │ │ │ +
198#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
│ │ │ │ +
199 BCP_TYPE_SQLINTN = 38, /* 0x26 */
│ │ │ │ +
200#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
│ │ │ │ +
201 BCP_TYPE_SQLINT1 = 48, /* 0x30 */
│ │ │ │ +
202#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
│ │ │ │ +
203 BCP_TYPE_SQLINT2 = 52, /* 0x34 */
│ │ │ │ +
204#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
│ │ │ │ +
205 BCP_TYPE_SQLINT4 = 56, /* 0x38 */
│ │ │ │ +
206#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
│ │ │ │ +
207 BCP_TYPE_SQLINT8 = 127, /* 0x7F */
│ │ │ │ +
208#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
│ │ │ │ +
209 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */
│ │ │ │ +
210#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
│ │ │ │ +
211 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */
│ │ │ │ +
212#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
│ │ │ │ +
213 BCP_TYPE_SQLBIT = 50, /* 0x32 */
│ │ │ │ +
214#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
│ │ │ │ +
215 BCP_TYPE_SQLBITN = 104, /* 0x68 */
│ │ │ │ +
216#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
│ │ │ │ +
217 BCP_TYPE_SQLTEXT = 35, /* 0x23 */
│ │ │ │ +
218#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
│ │ │ │ +
219 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */
│ │ │ │ +
220#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
│ │ │ │ +
221 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */
│ │ │ │ +
222#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
│ │ │ │ +
223 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */
│ │ │ │ +
224#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
│ │ │ │ +
225 BCP_TYPE_SQLMONEY = 60, /* 0x3C */
│ │ │ │ +
226#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
│ │ │ │ +
227 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */
│ │ │ │ +
228#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
│ │ │ │ +
229 BCP_TYPE_SQLREAL = 59, /* 0x3B */
│ │ │ │ +
230 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */
│ │ │ │ +
231#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
│ │ │ │ +
232#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
│ │ │ │ +
233 BCP_TYPE_SQLBINARY = 45, /* 0x2D */
│ │ │ │ +
234#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
│ │ │ │ +
235 BCP_TYPE_SQLVOID = 31, /* 0x1F */
│ │ │ │ +
236#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
│ │ │ │ +
237 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */
│ │ │ │ +
238#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
│ │ │ │ +
239 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */
│ │ │ │ +
240#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
│ │ │ │ +
241 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */
│ │ │ │ +
242#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
│ │ │ │ +
243 BCP_TYPE_SQLFLTN = 109, /* 0x6D */
│ │ │ │ +
244#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
│ │ │ │ +
245 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */
│ │ │ │ +
246#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
│ │ │ │ +
247 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */
│ │ │ │ +
248#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
│ │ │ │ +
249 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */
│ │ │ │ +
250#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
│ │ │ │ +
251 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */
│ │ │ │ +
252#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
│ │ │ │ +
253 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */
│ │ │ │ +
254#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
│ │ │ │ +
255};
│ │ │ │ +
256
│ │ │ │ +
257typedef struct
│ │ │ │ +
258{
│ │ │ │ +
259 int dtdays;
│ │ │ │ +
260 int dttime;
│ │ │ │ +
261} DBDATETIME;
│ │ │ │ +
262
│ │ │ │ +
263#ifdef _MSC_VER
│ │ │ │ +
264#define TDSODBC_INLINE __inline
│ │ │ │ +
265#else
│ │ │ │ +
266#define TDSODBC_INLINE __inline__
│ │ │ │ +
267#endif
│ │ │ │ +
268
│ │ │ │ +
269struct tdsodbc_impl_bcp_init_params
│ │ │ │ +
270{
│ │ │ │ +
271 const void *tblname;
│ │ │ │ +
272 const void *hfile;
│ │ │ │ +
273 const void *errfile;
│ │ │ │ +
274 int direction;
│ │ │ │ +
275};
│ │ │ │ +
276
│ │ │ │ +
277static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
278bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char *errfile, int direction)
│ │ │ │ +
279{
│ │ │ │ +
280 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
│ │ │ │ +
281 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
282}
│ │ │ │ +
283
│ │ │ │ +
284static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
285bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const SQLWCHAR *errfile, int direction)
│ │ │ │ +
286{
│ │ │ │ +
287 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
│ │ │ │ +
288 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
289}
│ │ │ │ +
290
│ │ │ │ +
291struct tdsodbc_impl_bcp_control_params
│ │ │ │ +
292{
│ │ │ │ +
293 int field;
│ │ │ │ +
294 void *value;
│ │ │ │ +
295};
│ │ │ │ +
296
│ │ │ │ +
297static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
298bcp_control(HDBC hdbc, int field, void *value)
│ │ │ │ +
299{
│ │ │ │ +
300 struct tdsodbc_impl_bcp_control_params params = {field, value};
│ │ │ │ +
301 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
302}
│ │ │ │ +
303
│ │ │ │ +
304struct tdsodbc_impl_bcp_colptr_params
│ │ │ │ +
305{
│ │ │ │ +
306 const unsigned char * colptr;
│ │ │ │ +
307 int table_column;
│ │ │ │ +
308};
│ │ │ │ +
309
│ │ │ │ +
310static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
311bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)
│ │ │ │ +
312{
│ │ │ │ +
313 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
│ │ │ │ +
314 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
315}
│ │ │ │ +
316
│ │ │ │ +
317static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
318bcp_sendrow(HDBC hdbc)
│ │ │ │ +
319{
│ │ │ │ +
320 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
321}
│ │ │ │ +
322
│ │ │ │ +
323struct tdsodbc_impl_bcp_batch_params
│ │ │ │ +
324{
│ │ │ │ +
325 int rows;
│ │ │ │ +
326};
│ │ │ │ +
327
│ │ │ │ +
328static TDSODBC_INLINE int SQL_API
│ │ │ │ +
329bcp_batch(HDBC hdbc)
│ │ │ │ +
330{
│ │ │ │ +
331 struct tdsodbc_impl_bcp_batch_params params = {-1};
│ │ │ │ +
332 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, &params, SQL_IS_POINTER)) ? params.rows : -1;
│ │ │ │ +
333}
│ │ │ │ +
334
│ │ │ │ +
335struct tdsodbc_impl_bcp_done_params
│ │ │ │ +
336{
│ │ │ │ +
337 int rows;
│ │ │ │ +
338};
│ │ │ │ +
339
│ │ │ │ +
340static TDSODBC_INLINE int SQL_API
│ │ │ │ +
341bcp_done(HDBC hdbc)
│ │ │ │ +
342{
│ │ │ │ +
343 struct tdsodbc_impl_bcp_done_params params = {-1};
│ │ │ │ +
344 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, &params, SQL_IS_POINTER)) ? params.rows : -1;
│ │ │ │ +
345}
│ │ │ │ +
346
│ │ │ │ +
347struct tdsodbc_impl_bcp_bind_params
│ │ │ │ +
348{
│ │ │ │ +
349 const unsigned char * varaddr;
│ │ │ │ +
350 int prefixlen;
│ │ │ │ +
351 int varlen;
│ │ │ │ +
352 const unsigned char * terminator;
│ │ │ │ +
353 int termlen;
│ │ │ │ +
354 int vartype;
│ │ │ │ +
355 int table_column;
│ │ │ │ +
356};
│ │ │ │ +
357
│ │ │ │ +
358static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ +
359bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int varlen,
│ │ │ │ +
360 const unsigned char * terminator, int termlen, int vartype, int table_column)
│ │ │ │ +
361{
│ │ │ │ +
362 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
│ │ │ │ +
363 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ +
364}
│ │ │ │ +
365
│ │ │ │ +
366#ifdef UNICODE
│ │ │ │ +
367#define bcp_init bcp_initW
│ │ │ │ +
368#define BCPHINTS BCPHINTSW
│ │ │ │ +
369#else
│ │ │ │ +
370#define bcp_init bcp_initA
│ │ │ │ +
371#define BCPHINTS BCPHINTSA
│ │ │ │ +
372#endif
│ │ │ │ +
373
│ │ │ │ +
374#endif /* TDSODBC_BCP */
│ │ │ │ +
375
│ │ │ │ +
376#ifdef __cplusplus
│ │ │ │ +
377}
│ │ │ │ +
378#endif
│ │ │ │ +
379
│ │ │ │ +
380#endif /* _odbcss_h_ */
│ │ │ │ +
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:546
│ │ │ │ +
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:674
│ │ │ │ +
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int db_vartype, int table_column)
Bind a program host variable to a database column.
Definition bcp.c:2083
│ │ │ │ +
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition bcp.c:2041
│ │ │ │ +
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition bcp.c:2014
│ │ │ │ +
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition bcp.c:1384
│ │ │ │ +
Definition odbcss.h:133
│ │ │ │ +
Definition odbcss.h:140
│ │ │ │ +
Definition sybdb.h:296
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -tds_sysdep_public.h │ │ │ │ │ +odbcss.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-2011 Brian Bruns │ │ │ │ │ +2 * Copyright (C) 2008 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -19,105 +19,416 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tds_sysdep_public_h_ │ │ │ │ │ -21#define _tds_sysdep_public_h_ │ │ │ │ │ +20#ifndef _odbcss_h_ │ │ │ │ │ +21#define _odbcss_h_ │ │ │ │ │ 22 │ │ │ │ │ -23/* │ │ │ │ │ -24 * This file is publicly installed. │ │ │ │ │ -25 * MUST not include config.h │ │ │ │ │ -26 */ │ │ │ │ │ -27 │ │ │ │ │ -28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || │ │ │ │ │ -\ │ │ │ │ │ -29 (defined(_MSC_VER) && _MSC_VER >= 1600) || \ │ │ │ │ │ -30 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) │ │ │ │ │ -31# include │ │ │ │ │ -32#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux) │ │ │ │ │ -33# include │ │ │ │ │ -34#else │ │ │ │ │ -35typedef signed char int8_t; /* 8-bit int */ │ │ │ │ │ -36typedef unsigned char uint8_t; /* 8-bit int */ │ │ │ │ │ -37/* │ │ │ │ │ -38 * This is where platform-specific changes need to be made. │ │ │ │ │ -39 */ │ │ │ │ │ -40# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) │ │ │ │ │ -41# include │ │ │ │ │ -42# include │ │ │ │ │ -43# include │ │ │ │ │ -44 typedef signed short int16_t; /* 16-bit int */ │ │ │ │ │ -45 typedef unsigned short uint16_t; /* 16-bit int */ │ │ │ │ │ -46 typedef signed int int32_t; /* 32-bit int */ │ │ │ │ │ -47 typedef unsigned int uint32_t; /* 32-bit int */ │ │ │ │ │ -48 typedef signed __int64 int64_t; /* 64-bit int */ │ │ │ │ │ -49 typedef unsigned __int64 uint64_t; /* 64-bit int */ │ │ │ │ │ -50# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */ │ │ │ │ │ -51 typedef signed short int16_t; /* 16-bit int */ │ │ │ │ │ -52 typedef unsigned short uint16_t; /* 16-bit int */ │ │ │ │ │ -53 typedef signed int int32_t; /* 32-bit int */ │ │ │ │ │ -54 typedef unsigned int uint32_t; /* 32-bit int */ │ │ │ │ │ -55 typedef signed long int64_t; /* 64-bit int */ │ │ │ │ │ -56 typedef unsigned long uint64_t; /* 64-bit int */ │ │ │ │ │ -57# endif │ │ │ │ │ -58#endif │ │ │ │ │ -59 │ │ │ │ │ -60#include │ │ │ │ │ +23#ifdef TDSODBC_BCP │ │ │ │ │ +24#include │ │ │ │ │ +25#endif │ │ │ │ │ +26 │ │ │ │ │ +27#ifdef __cplusplus │ │ │ │ │ +28extern "C" { │ │ │ │ │ +29#endif │ │ │ │ │ +30 │ │ │ │ │ +31#define SQL_DIAG_SS_MSGSTATE (-1150) │ │ │ │ │ +32#define SQL_DIAG_SS_LINE (-1154) │ │ │ │ │ +33 │ │ │ │ │ +34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233 │ │ │ │ │ +35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234 │ │ │ │ │ +36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235 │ │ │ │ │ +37#define SQL_SOPT_SS_PARAM_FOCUS 1236 │ │ │ │ │ +38 │ │ │ │ │ +39#ifndef SQL_SS_LENGTH_UNLIMITED │ │ │ │ │ +40#define SQL_SS_LENGTH_UNLIMITED 0 │ │ │ │ │ +41#endif │ │ │ │ │ +42 │ │ │ │ │ +43#ifndef SQL_COPT_SS_BASE │ │ │ │ │ +44#define SQL_COPT_SS_BASE 1200 │ │ │ │ │ +45#endif │ │ │ │ │ +46 │ │ │ │ │ +47#ifndef SQL_COPT_SS_MARS_ENABLED │ │ │ │ │ +48#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) │ │ │ │ │ +49#endif │ │ │ │ │ +50 │ │ │ │ │ +51#ifndef SQL_COPT_SS_OLDPWD │ │ │ │ │ +52#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) │ │ │ │ │ +53#endif │ │ │ │ │ +54 │ │ │ │ │ +55#define SQL_INFO_FREETDS_TDS_VERSION 1300 │ │ │ │ │ +56#define SQL_INFO_FREETDS_SOCKET 1301 │ │ │ │ │ +57 │ │ │ │ │ +58#ifndef SQL_MARS_ENABLED_NO │ │ │ │ │ +59#define SQL_MARS_ENABLED_NO 0 │ │ │ │ │ +60#endif │ │ │ │ │ 61 │ │ │ │ │ -62/* try to understand float sizes using float.h constants */ │ │ │ │ │ -63#if FLT_RADIX == 2 │ │ │ │ │ -64# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128 │ │ │ │ │ -65# define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ -66# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128 │ │ │ │ │ -67# define tds_sysdep_real32_type double /* 32-bit real */ │ │ │ │ │ -68# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128 │ │ │ │ │ -69# define tds_sysdep_real32_type long double /* 32-bit real */ │ │ │ │ │ -70# endif │ │ │ │ │ -71# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024 │ │ │ │ │ -72# define tds_sysdep_real64_type float /* 64-bit real */ │ │ │ │ │ -73# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024 │ │ │ │ │ -74# define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ -75# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 │ │ │ │ │ -76# define tds_sysdep_real64_type long double /* 64-bit real */ │ │ │ │ │ -77# endif │ │ │ │ │ -78# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type) │ │ │ │ │ -79# error Some float type was not found! │ │ │ │ │ -80# endif │ │ │ │ │ -81#else │ │ │ │ │ -82# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38 │ │ │ │ │ -83# define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ -84# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38 │ │ │ │ │ -85# define tds_sysdep_real32_type double /* 32-bit real */ │ │ │ │ │ -86# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38 │ │ │ │ │ -87# define tds_sysdep_real32_type long double /* 32-bit real */ │ │ │ │ │ -88# endif │ │ │ │ │ -89# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308 │ │ │ │ │ -90# define tds_sysdep_real64_type float /* 64-bit real */ │ │ │ │ │ -91# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308 │ │ │ │ │ -92# define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ -93# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308 │ │ │ │ │ -94# define tds_sysdep_real64_type long double /* 64-bit real */ │ │ │ │ │ -95# endif │ │ │ │ │ -96#endif │ │ │ │ │ -97 │ │ │ │ │ -98/* fall back to configure.ac types */ │ │ │ │ │ -99#ifndef tds_sysdep_real32_type │ │ │ │ │ -100#define tds_sysdep_real32_type float /* 32-bit real */ │ │ │ │ │ -101#endif /* !tds_sysdep_real32_type */ │ │ │ │ │ -102 │ │ │ │ │ -103#ifndef tds_sysdep_real64_type │ │ │ │ │ -104#define tds_sysdep_real64_type double /* 64-bit real */ │ │ │ │ │ -105#endif /* !tds_sysdep_real64_type */ │ │ │ │ │ -106 │ │ │ │ │ -107#if !defined(MSDBLIB) && !defined(SYBDBLIB) │ │ │ │ │ -108#define SYBDBLIB 1 │ │ │ │ │ -109#endif │ │ │ │ │ -110#if defined(MSDBLIB) && defined(SYBDBLIB) │ │ │ │ │ -111#error MSDBLIB and SYBDBLIB cannot both be defined │ │ │ │ │ -112#endif │ │ │ │ │ -113 │ │ │ │ │ -114#endif /* _tds_sysdep_public_h_ */ │ │ │ │ │ +62#ifndef SQL_MARS_ENABLED_YES │ │ │ │ │ +63#define SQL_MARS_ENABLED_YES 1 │ │ │ │ │ +64#endif │ │ │ │ │ +65 │ │ │ │ │ +66#ifndef SQL_SS_VARIANT │ │ │ │ │ +67#define SQL_SS_VARIANT (-150) │ │ │ │ │ +68#endif │ │ │ │ │ +69 │ │ │ │ │ +70#ifndef SQL_SS_UDT │ │ │ │ │ +71#define SQL_SS_UDT (-151) │ │ │ │ │ +72#endif │ │ │ │ │ +73 │ │ │ │ │ +74#ifndef SQL_SS_XML │ │ │ │ │ +75#define SQL_SS_XML (-152) │ │ │ │ │ +76#endif │ │ │ │ │ +77 │ │ │ │ │ +78#ifndef SQL_SS_TABLE │ │ │ │ │ +79#define SQL_SS_TABLE (-153) │ │ │ │ │ +80#endif │ │ │ │ │ +81 │ │ │ │ │ +82#ifndef SQL_SS_TIME2 │ │ │ │ │ +83#define SQL_SS_TIME2 (-154) │ │ │ │ │ +84#endif │ │ │ │ │ +85 │ │ │ │ │ +86#ifndef SQL_SS_TIMESTAMPOFFSET │ │ │ │ │ +87#define SQL_SS_TIMESTAMPOFFSET (-155) │ │ │ │ │ +88#endif │ │ │ │ │ +89 │ │ │ │ │ +90/* │ │ │ │ │ +91 * these types are used from conversion from client to server │ │ │ │ │ +92 */ │ │ │ │ │ +93#ifndef SQL_C_SS_TIME2 │ │ │ │ │ +94#define SQL_C_SS_TIME2 (0x4000) │ │ │ │ │ +95#endif │ │ │ │ │ +96 │ │ │ │ │ +97#ifndef SQL_C_SS_TIMESTAMPOFFSET │ │ │ │ │ +98#define SQL_C_SS_TIMESTAMPOFFSET (0x4001) │ │ │ │ │ +99#endif │ │ │ │ │ +100 │ │ │ │ │ +101#ifndef SQL_CA_SS_BASE │ │ │ │ │ +102#define SQL_CA_SS_BASE 1200 │ │ │ │ │ +103#endif │ │ │ │ │ +104 │ │ │ │ │ +105#ifndef SQL_CA_SS_UDT_CATALOG_NAME │ │ │ │ │ +106#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) │ │ │ │ │ +107#endif │ │ │ │ │ +108 │ │ │ │ │ +109#ifndef SQL_CA_SS_UDT_SCHEMA_NAME │ │ │ │ │ +110#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) │ │ │ │ │ +111#endif │ │ │ │ │ +112 │ │ │ │ │ +113#ifndef SQL_CA_SS_UDT_TYPE_NAME │ │ │ │ │ +114#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) │ │ │ │ │ +115#endif │ │ │ │ │ +116 │ │ │ │ │ +117#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME │ │ │ │ │ +118#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) │ │ │ │ │ +119#endif │ │ │ │ │ +120 │ │ │ │ │ +121#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME │ │ │ │ │ +122#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) │ │ │ │ │ +123#endif │ │ │ │ │ +124 │ │ │ │ │ +125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME │ │ │ │ │ +126#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) │ │ │ │ │ +127#endif │ │ │ │ │ +128 │ │ │ │ │ +129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME │ │ │ │ │ +130#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) │ │ │ │ │ +131#endif │ │ │ │ │ +132 │ │ │ │ │ +133typedef struct tagSS_TIME2_STRUCT { │ │ │ │ │ +134 SQLUSMALLINT hour; │ │ │ │ │ +135 SQLUSMALLINT minute; │ │ │ │ │ +136 SQLUSMALLINT second; │ │ │ │ │ +137 SQLUINTEGER fraction; │ │ │ │ │ +138} SQL_SS_TIME2_STRUCT; │ │ │ │ │ +139 │ │ │ │ │ +140typedef struct tagSS_TIMESTAMPOFFSET_STRUCT { │ │ │ │ │ +141 SQLSMALLINT year; │ │ │ │ │ +142 SQLUSMALLINT month; │ │ │ │ │ +143 SQLUSMALLINT day; │ │ │ │ │ +144 SQLUSMALLINT hour; │ │ │ │ │ +145 SQLUSMALLINT minute; │ │ │ │ │ +146 SQLUSMALLINT second; │ │ │ │ │ +147 SQLUINTEGER fraction; │ │ │ │ │ +148 SQLSMALLINT timezone_hour; │ │ │ │ │ +149 SQLSMALLINT timezone_minute; │ │ │ │ │ +150} SQL_SS_TIMESTAMPOFFSET_STRUCT; │ │ │ │ │ +151 │ │ │ │ │ +152 │ │ │ │ │ +153#ifdef TDSODBC_BCP │ │ │ │ │ +154 │ │ │ │ │ +155#ifndef SUCCEED │ │ │ │ │ +156#define SUCCEED 1 │ │ │ │ │ +157#endif │ │ │ │ │ +158#ifndef FAIL │ │ │ │ │ +159#define FAIL 0 │ │ │ │ │ +160#endif │ │ │ │ │ +161 │ │ │ │ │ +162#ifndef BCPKEEPIDENTITY │ │ │ │ │ +163#define BCPKEEPIDENTITY 8 │ │ │ │ │ +164#endif │ │ │ │ │ +165#ifndef BCPHINTSA │ │ │ │ │ +166#define BCPHINTSA 10 │ │ │ │ │ +167#endif │ │ │ │ │ +168#ifndef BCPHINTSW │ │ │ │ │ +169#define BCPHINTSW 11 │ │ │ │ │ +170#endif │ │ │ │ │ +171 │ │ │ │ │ +172#define BCP_DIRECTION_IN 1 │ │ │ │ │ +173 │ │ │ │ │ +174#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) │ │ │ │ │ +175#define SQL_BCP_OFF 0 │ │ │ │ │ +176#define SQL_BCP_ON 1 │ │ │ │ │ +177 │ │ │ │ │ +178#define SQL_COPT_TDSODBC_IMPL_BASE 1500 │ │ │ │ │ +179#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE) │ │ │ │ │ +180/* deprecated SQL_COPT_TDSODBC_IMPL_BCP_CONTROL */ │ │ │ │ │ +181#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2) │ │ │ │ │ +182#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3) │ │ │ │ │ +183#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4) │ │ │ │ │ +184#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5) │ │ │ │ │ +185#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6) │ │ │ │ │ +186#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7) │ │ │ │ │ +187#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+8) │ │ │ │ │ +188 │ │ │ │ │ +189#define SQL_VARLEN_DATA -10 │ │ │ │ │ +190 │ │ │ │ │ +191/* copied from sybdb.h which was copied from tds.h */ │ │ │ │ │ +192/* TODO find a much better way... */ │ │ │ │ │ +193enum │ │ │ │ │ +194{ │ │ │ │ │ +195 BCP_TYPE_SQLCHAR = 47, /* 0x2F */ │ │ │ │ │ +196#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR │ │ │ │ │ +197 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */ │ │ │ │ │ +198#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR │ │ │ │ │ +199 BCP_TYPE_SQLINTN = 38, /* 0x26 */ │ │ │ │ │ +200#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN │ │ │ │ │ +201 BCP_TYPE_SQLINT1 = 48, /* 0x30 */ │ │ │ │ │ +202#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1 │ │ │ │ │ +203 BCP_TYPE_SQLINT2 = 52, /* 0x34 */ │ │ │ │ │ +204#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2 │ │ │ │ │ +205 BCP_TYPE_SQLINT4 = 56, /* 0x38 */ │ │ │ │ │ +206#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4 │ │ │ │ │ +207 BCP_TYPE_SQLINT8 = 127, /* 0x7F */ │ │ │ │ │ +208#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8 │ │ │ │ │ +209 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */ │ │ │ │ │ +210#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8 │ │ │ │ │ +211 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */ │ │ │ │ │ +212#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME │ │ │ │ │ +213 BCP_TYPE_SQLBIT = 50, /* 0x32 */ │ │ │ │ │ +214#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT │ │ │ │ │ +215 BCP_TYPE_SQLBITN = 104, /* 0x68 */ │ │ │ │ │ +216#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN │ │ │ │ │ +217 BCP_TYPE_SQLTEXT = 35, /* 0x23 */ │ │ │ │ │ +218#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT │ │ │ │ │ +219 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */ │ │ │ │ │ +220#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT │ │ │ │ │ +221 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */ │ │ │ │ │ +222#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE │ │ │ │ │ +223 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */ │ │ │ │ │ +224#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4 │ │ │ │ │ +225 BCP_TYPE_SQLMONEY = 60, /* 0x3C */ │ │ │ │ │ +226#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY │ │ │ │ │ +227 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ +228#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4 │ │ │ │ │ +229 BCP_TYPE_SQLREAL = 59, /* 0x3B */ │ │ │ │ │ +230 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */ │ │ │ │ │ +231#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL │ │ │ │ │ +232#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4 │ │ │ │ │ +233 BCP_TYPE_SQLBINARY = 45, /* 0x2D */ │ │ │ │ │ +234#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY │ │ │ │ │ +235 BCP_TYPE_SQLVOID = 31, /* 0x1F */ │ │ │ │ │ +236#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID │ │ │ │ │ +237 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */ │ │ │ │ │ +238#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY │ │ │ │ │ +239 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */ │ │ │ │ │ +240#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC │ │ │ │ │ +241 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */ │ │ │ │ │ +242#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL │ │ │ │ │ +243 BCP_TYPE_SQLFLTN = 109, /* 0x6D */ │ │ │ │ │ +244#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN │ │ │ │ │ +245 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */ │ │ │ │ │ +246#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN │ │ │ │ │ +247 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */ │ │ │ │ │ +248#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN │ │ │ │ │ +249 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ +250#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR │ │ │ │ │ +251 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */ │ │ │ │ │ +252#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID │ │ │ │ │ +253 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */ │ │ │ │ │ +254#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2 │ │ │ │ │ +255}; │ │ │ │ │ +256 │ │ │ │ │ +257typedef struct │ │ │ │ │ +258{ │ │ │ │ │ +259 int dtdays; │ │ │ │ │ +260 int dttime; │ │ │ │ │ +261} DBDATETIME; │ │ │ │ │ +262 │ │ │ │ │ +263#ifdef _MSC_VER │ │ │ │ │ +264#define TDSODBC_INLINE __inline │ │ │ │ │ +265#else │ │ │ │ │ +266#define TDSODBC_INLINE __inline__ │ │ │ │ │ +267#endif │ │ │ │ │ +268 │ │ │ │ │ +269struct tdsodbc_impl_bcp_init_params │ │ │ │ │ +270{ │ │ │ │ │ +271 const void *tblname; │ │ │ │ │ +272 const void *hfile; │ │ │ │ │ +273 const void *errfile; │ │ │ │ │ +274 int direction; │ │ │ │ │ +275}; │ │ │ │ │ +276 │ │ │ │ │ +277static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +278bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char │ │ │ │ │ +*errfile, int direction) │ │ │ │ │ +279{ │ │ │ │ │ +280 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, │ │ │ │ │ +direction}; │ │ │ │ │ +281 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +282} │ │ │ │ │ +283 │ │ │ │ │ +284static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +285bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const │ │ │ │ │ +SQLWCHAR *errfile, int direction) │ │ │ │ │ +286{ │ │ │ │ │ +287 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, │ │ │ │ │ +direction}; │ │ │ │ │ +288 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +289} │ │ │ │ │ +290 │ │ │ │ │ +291struct tdsodbc_impl_bcp_control_params │ │ │ │ │ +292{ │ │ │ │ │ +293 int field; │ │ │ │ │ +294 void *value; │ │ │ │ │ +295}; │ │ │ │ │ +296 │ │ │ │ │ +297static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +298bcp_control(HDBC hdbc, int field, void *value) │ │ │ │ │ +299{ │ │ │ │ │ +300 struct tdsodbc_impl_bcp_control_params params = {field, value}; │ │ │ │ │ +301 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +302} │ │ │ │ │ +303 │ │ │ │ │ +304struct tdsodbc_impl_bcp_colptr_params │ │ │ │ │ +305{ │ │ │ │ │ +306 const unsigned char * colptr; │ │ │ │ │ +307 int table_column; │ │ │ │ │ +308}; │ │ │ │ │ +309 │ │ │ │ │ +310static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +311bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column) │ │ │ │ │ +312{ │ │ │ │ │ +313 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column}; │ │ │ │ │ +314 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +315} │ │ │ │ │ +316 │ │ │ │ │ +317static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +318bcp_sendrow(HDBC hdbc) │ │ │ │ │ +319{ │ │ │ │ │ +320 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +321} │ │ │ │ │ +322 │ │ │ │ │ +323struct tdsodbc_impl_bcp_batch_params │ │ │ │ │ +324{ │ │ │ │ │ +325 int rows; │ │ │ │ │ +326}; │ │ │ │ │ +327 │ │ │ │ │ +328static TDSODBC_INLINE int SQL_API │ │ │ │ │ +329bcp_batch(HDBC hdbc) │ │ │ │ │ +330{ │ │ │ │ │ +331 struct tdsodbc_impl_bcp_batch_params params = {-1}; │ │ │ │ │ +332 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1; │ │ │ │ │ +333} │ │ │ │ │ +334 │ │ │ │ │ +335struct tdsodbc_impl_bcp_done_params │ │ │ │ │ +336{ │ │ │ │ │ +337 int rows; │ │ │ │ │ +338}; │ │ │ │ │ +339 │ │ │ │ │ +340static TDSODBC_INLINE int SQL_API │ │ │ │ │ +341bcp_done(HDBC hdbc) │ │ │ │ │ +342{ │ │ │ │ │ +343 struct tdsodbc_impl_bcp_done_params params = {-1}; │ │ │ │ │ +344 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1; │ │ │ │ │ +345} │ │ │ │ │ +346 │ │ │ │ │ +347struct tdsodbc_impl_bcp_bind_params │ │ │ │ │ +348{ │ │ │ │ │ +349 const unsigned char * varaddr; │ │ │ │ │ +350 int prefixlen; │ │ │ │ │ +351 int varlen; │ │ │ │ │ +352 const unsigned char * terminator; │ │ │ │ │ +353 int termlen; │ │ │ │ │ +354 int vartype; │ │ │ │ │ +355 int table_column; │ │ │ │ │ +356}; │ │ │ │ │ +357 │ │ │ │ │ +358static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ +359bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int │ │ │ │ │ +varlen, │ │ │ │ │ +360 const unsigned char * terminator, int termlen, int vartype, int table_ │ │ │ │ │ +column) │ │ │ │ │ +361{ │ │ │ │ │ +362 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, │ │ │ │ │ +terminator, termlen, vartype, table_column}; │ │ │ │ │ +363 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ +BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ +364} │ │ │ │ │ +365 │ │ │ │ │ +366#ifdef UNICODE │ │ │ │ │ +367#define bcp_init bcp_initW │ │ │ │ │ +368#define BCPHINTS BCPHINTSW │ │ │ │ │ +369#else │ │ │ │ │ +370#define bcp_init bcp_initA │ │ │ │ │ +371#define BCPHINTS BCPHINTSA │ │ │ │ │ +372#endif │ │ │ │ │ +373 │ │ │ │ │ +374#endif /* TDSODBC_BCP */ │ │ │ │ │ +375 │ │ │ │ │ +376#ifdef __cplusplus │ │ │ │ │ +377} │ │ │ │ │ +378#endif │ │ │ │ │ +379 │ │ │ │ │ +380#endif /* _odbcss_h_ */ │ │ │ │ │ +bcp_control │ │ │ │ │ +RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value) │ │ │ │ │ +Set BCP options for uploading a datafile. │ │ │ │ │ +Definition bcp.c:546 │ │ │ │ │ +bcp_colptr │ │ │ │ │ +RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column) │ │ │ │ │ +Override bcp_bind() by pointing to a different host variable. │ │ │ │ │ +Definition bcp.c:674 │ │ │ │ │ +bcp_bind │ │ │ │ │ +RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, │ │ │ │ │ +BYTE *terminator, int termlen, int db_vartype, int table_column) │ │ │ │ │ +Bind a program host variable to a database column. │ │ │ │ │ +Definition bcp.c:2083 │ │ │ │ │ +bcp_done │ │ │ │ │ +DBINT bcp_done(DBPROCESS *dbproc) │ │ │ │ │ +Conclude the transfer of data from program variables. │ │ │ │ │ +Definition bcp.c:2041 │ │ │ │ │ +bcp_batch │ │ │ │ │ +DBINT bcp_batch(DBPROCESS *dbproc) │ │ │ │ │ +Commit a set of rows to the table. │ │ │ │ │ +Definition bcp.c:2014 │ │ │ │ │ +bcp_sendrow │ │ │ │ │ +RETCODE bcp_sendrow(DBPROCESS *dbproc) │ │ │ │ │ +Write data in host variables to the table. │ │ │ │ │ +Definition bcp.c:1384 │ │ │ │ │ +tagSS_TIME2_STRUCT │ │ │ │ │ +Definition odbcss.h:133 │ │ │ │ │ +tagSS_TIMESTAMPOFFSET_STRUCT │ │ │ │ │ +Definition odbcss.h:140 │ │ │ │ │ +DBDATETIME │ │ │ │ │ +Definition sybdb.h:296 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00380_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/dblib.h Source File │ │ │ │ +FreeTDS API: include/config.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,268 +74,829 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
dblib.h
│ │ │ │ +
config.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_aoIoAtf9UfNLxwNuH19vDb_
│ │ │ │ -
21#define _tdsguard_aoIoAtf9UfNLxwNuH19vDb_
│ │ │ │ -
22
│ │ │ │ -
23#include <freetds/pushvis.h>
│ │ │ │ -
24
│ │ │ │ -
25#ifdef __cplusplus
│ │ │ │ -
26extern "C"
│ │ │ │ -
27{
│ │ │ │ -
28#if 0
│ │ │ │ -
29}
│ │ │ │ -
30#endif
│ │ │ │ -
31#endif
│ │ │ │ +
1/* include/config.h. Generated from config.h.in by configure. */
│ │ │ │ +
2/* include/config.h.in. Generated from configure.ac by autoheader. */
│ │ │ │ +
3
│ │ │ │ +
4#define _freetds_config_h_
│ │ │ │ +
5
│ │ │ │ +
6/* Define if building universal (internal helper macro) */
│ │ │ │ +
7/* #undef AC_APPLE_UNIVERSAL_BUILD */
│ │ │ │ +
8
│ │ │ │ +
9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */
│ │ │ │ +
10/* #undef BSD_COMP */
│ │ │ │ +
11
│ │ │ │ +
12/* Define to 1 if using 'alloca.c'. */
│ │ │ │ +
13/* #undef C_ALLOCA */
│ │ │ │ +
14
│ │ │ │ +
15/* Define to enable work in progress code */
│ │ │ │ +
16/* #undef ENABLE_DEVELOPING */
│ │ │ │ +
17
│ │ │ │ +
18/* Define to enable extra checks on code */
│ │ │ │ +
19/* #undef ENABLE_EXTRA_CHECKS */
│ │ │ │ +
20
│ │ │ │ +
21/* Defined if --enable-krb5 used and library detected */
│ │ │ │ +
22#define ENABLE_KRB5 1
│ │ │ │ +
23
│ │ │ │ +
24/* Define to enable MARS support */
│ │ │ │ +
25#define ENABLE_ODBC_MARS 1
│ │ │ │ +
26
│ │ │ │ +
27/* Define to enable ODBC wide string support */
│ │ │ │ +
28#define ENABLE_ODBC_WIDE 1
│ │ │ │ +
29
│ │ │ │ +
30/* Define to 1 if GNU tls use nettle as backend. */
│ │ │ │ +
31#define GNUTLS_USE_NETTLE 1
│ │ │ │
32
│ │ │ │ -
33typedef enum
│ │ │ │ -
34{
│ │ │ │ -
35 _DB_RES_INIT
│ │ │ │ -
36 , _DB_RES_RESULTSET_EMPTY
│ │ │ │ -
37 , _DB_RES_RESULTSET_ROWS
│ │ │ │ -
38 , _DB_RES_NEXT_RESULT
│ │ │ │ -
39 , _DB_RES_NO_MORE_RESULTS
│ │ │ │ -
40 , _DB_RES_SUCCEED
│ │ │ │ -
41} DB_RESULT_STATE;
│ │ │ │ -
42
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
44{
│ │ │ │ - │ │ │ │ -
46 bool network_auth;
│ │ │ │ -
47};
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
49struct dblib_buffer_row;
│ │ │ │ +
33/* Define to 1 if you have the 'alarm' function. */
│ │ │ │ +
34#define HAVE_ALARM 1
│ │ │ │ +
35
│ │ │ │ +
36/* Define to 1 if you have 'alloca', as a function or macro. */
│ │ │ │ +
37#define HAVE_ALLOCA 1
│ │ │ │ +
38
│ │ │ │ +
39/* Define to 1 if <alloca.h> works. */
│ │ │ │ +
40#define HAVE_ALLOCA_H 1
│ │ │ │ +
41
│ │ │ │ +
42/* Define to 1 if you have the <arpa/inet.h> header file. */
│ │ │ │ +
43#define HAVE_ARPA_INET_H 1
│ │ │ │ +
44
│ │ │ │ +
45/* Define to 1 if you have the 'ASN1_STRING_get0_data' function. */
│ │ │ │ +
46/* #undef HAVE_ASN1_STRING_GET0_DATA */
│ │ │ │ +
47
│ │ │ │ +
48/* Define to 1 if you have the 'asprintf' function. */
│ │ │ │ +
49#define HAVE_ASPRINTF 1
│ │ │ │
50
│ │ │ │ -
│ │ │ │ -
51typedef struct
│ │ │ │ -
52{
│ │ │ │ -
53 int received; /* how many rows have been received for this result set */
│ │ │ │ -
54 int head; /* queue insertion point */
│ │ │ │ -
55 int tail; /* oldest item in queue */
│ │ │ │ -
56 int current; /* dbnextrow() reads this row */
│ │ │ │ -
57 int capacity; /* how many elements the queue can hold */
│ │ │ │ -
58 struct dblib_buffer_row *rows; /* pointer to the row storage */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
60
│ │ │ │ -
│ │ │ │ -
61typedef struct
│ │ │ │ -
62{
│ │ │ │ -
63 int host_column;
│ │ │ │ -
64 TDS_SERVER_TYPE datatype;
│ │ │ │ -
65 int prefix_len;
│ │ │ │ -
66 DBINT column_len;
│ │ │ │ -
67 BYTE *terminator;
│ │ │ │ -
68 int term_len;
│ │ │ │ -
69 int tab_colnum;
│ │ │ │ -
70 int column_error;
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
51/* Define to 1 if you have the 'basename' function. */
│ │ │ │ +
52#define HAVE_BASENAME 1
│ │ │ │ +
53
│ │ │ │ +
54/* Define to 1 if you have the 'BIO_get_data' function. */
│ │ │ │ +
55/* #undef HAVE_BIO_GET_DATA */
│ │ │ │ +
56
│ │ │ │ +
57/* Define if you have the clock_gettime function. */
│ │ │ │ +
58#define HAVE_CLOCK_GETTIME 1
│ │ │ │ +
59
│ │ │ │ +
60/* Define to 1 if you have the <com_err.h> header file. */
│ │ │ │ +
61#define HAVE_COM_ERR_H 1
│ │ │ │ +
62
│ │ │ │ +
63/* Define to 1 if you have the 'daemon' function. */
│ │ │ │ +
64#define HAVE_DAEMON 1
│ │ │ │ +
65
│ │ │ │ +
66/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't.
│ │ │ │ +
67 */
│ │ │ │ +
68/* #undef HAVE_DECL_TZNAME */
│ │ │ │ +
69
│ │ │ │ +
70/* Define to 1 if you have the <dirent.h> header file. */
│ │ │ │ +
71#define HAVE_DIRENT_H 1
│ │ │ │
72
│ │ │ │ -
│ │ │ │ -
73typedef struct
│ │ │ │ -
74{
│ │ │ │ -
75 TDS_CHAR *hostfile;
│ │ │ │ -
76 TDS_CHAR *errorfile;
│ │ │ │ -
77 FILE *bcp_errfileptr;
│ │ │ │ -
78 TDS_INT host_colcount;
│ │ │ │ -
79 BCP_HOSTCOLINFO **host_columns;
│ │ │ │ -
80 TDS_INT firstrow;
│ │ │ │ -
81 TDS_INT lastrow;
│ │ │ │ -
82 TDS_INT maxerrs;
│ │ │ │ -
83 TDS_INT batch;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
85
│ │ │ │ -
86/* linked list of rpc parameters */
│ │ │ │ +
73/* Define to 1 if you have the <dlfcn.h> header file. */
│ │ │ │ +
74#define HAVE_DLFCN_H 1
│ │ │ │ +
75
│ │ │ │ +
76/* Define to 1 if you have the <errno.h> header file. */
│ │ │ │ +
77#define HAVE_ERRNO_H 1
│ │ │ │ +
78
│ │ │ │ +
79/* Define to 1 if you have the 'error_message' function. */
│ │ │ │ +
80/* #undef HAVE_ERROR_MESSAGE */
│ │ │ │ +
81
│ │ │ │ +
82/* Define to 1 if you have the 'eventfd' function. */
│ │ │ │ +
83#define HAVE_EVENTFD 1
│ │ │ │ +
84
│ │ │ │ +
85/* Define to 1 if you have the <fcntl.h> header file. */
│ │ │ │ +
86#define HAVE_FCNTL_H 1
│ │ │ │
87
│ │ │ │ -
│ │ │ │ -
88typedef struct DBREMOTE_PROC_PARAM
│ │ │ │ -
89{
│ │ │ │ -
90 struct DBREMOTE_PROC_PARAM *next;
│ │ │ │ -
91
│ │ │ │ -
92 char *name;
│ │ │ │ -
93 BYTE status;
│ │ │ │ -
94 TDS_SERVER_TYPE type;
│ │ │ │ -
95 DBINT maxlen;
│ │ │ │ -
96 DBINT datalen;
│ │ │ │ -
97 BYTE *value;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
99
│ │ │ │ -
│ │ │ │ -
100typedef struct DBREMOTE_PROC
│ │ │ │ -
101{
│ │ │ │ -
102 struct DBREMOTE_PROC *next;
│ │ │ │ -
103
│ │ │ │ -
104 char *name;
│ │ │ │ -
105 DBSMALLINT options;
│ │ │ │ -
106 DBREMOTE_PROC_PARAM *param_list;
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
88/* Define to 1 if you have the 'fork' function. */
│ │ │ │ +
89#define HAVE_FORK 1
│ │ │ │ +
90
│ │ │ │ +
91/* Define to 1 if fseeko (and ftello) are declared in stdio.h. */
│ │ │ │ +
92#define HAVE_FSEEKO 1
│ │ │ │ +
93
│ │ │ │ +
94/* Define to 1 if you have the 'fstat' function. */
│ │ │ │ +
95#define HAVE_FSTAT 1
│ │ │ │ +
96
│ │ │ │ +
97/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ +
98 gethostbyaddr_r(). */
│ │ │ │ +
99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */
│ │ │ │ +
100
│ │ │ │ +
101/* Define to 1 if your system provides the 7-parameter version of
│ │ │ │ +
102 gethostbyaddr_r(). */
│ │ │ │ +
103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */
│ │ │ │ +
104
│ │ │ │ +
105/* Define to 1 if your system provides the 8-parameter version of
│ │ │ │ +
106 gethostbyaddr_r(). */
│ │ │ │ +
107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1
│ │ │ │
108
│ │ │ │ -
│ │ │ │ -
109typedef struct dboption
│ │ │ │ -
110{
│ │ │ │ -
111 const char *text;
│ │ │ │ -
112 DBSTRING *param;
│ │ │ │ -
113 DBBOOL factive;
│ │ │ │ -
114} DBOPTION;
│ │ │ │ -
│ │ │ │ -
115
│ │ │ │ -
│ │ │ │ -
116typedef struct
│ │ │ │ -
117{
│ │ │ │ -
118 const BYTE *bindval;
│ │ │ │ -
119 size_t len;
│ │ │ │ -
120} NULLREP;
│ │ │ │ -
│ │ │ │ -
121
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
123{
│ │ │ │ - │ │ │ │ -
125
│ │ │ │ -
126 STATUS row_type;
│ │ │ │ -
127 DBPROC_ROWBUF row_buf;
│ │ │ │ +
109/* Define to 1 if your system provides the 3-parameter version of
│ │ │ │ +
110 gethostbyname_r(). */
│ │ │ │ +
111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */
│ │ │ │ +
112
│ │ │ │ +
113/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ +
114 gethostbyname_r(). */
│ │ │ │ +
115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */
│ │ │ │ +
116
│ │ │ │ +
117/* Define to 1 if your system provides the 6-parameter version of
│ │ │ │ +
118 gethostbyname_r(). */
│ │ │ │ +
119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1
│ │ │ │ +
120
│ │ │ │ +
121/* Define to 1 if your system provides the 4-parameter version of
│ │ │ │ +
122 getpwuid_r(). */
│ │ │ │ +
123/* #undef HAVE_FUNC_GETPWUID_R_4 */
│ │ │ │ +
124
│ │ │ │ +
125/* Define to 1 if your system getpwuid_r() have 4 parameters and return struct
│ │ │ │ +
126 passwd*. */
│ │ │ │ +
127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */
│ │ │ │
128
│ │ │ │ -
129 int noautofree;
│ │ │ │ -
130 int more_results; /* boolean. Are we expecting results? */
│ │ │ │ -
131 DB_RESULT_STATE dbresults_state;
│ │ │ │ -
132 int dbresults_retcode;
│ │ │ │ -
133 BYTE *user_data; /* see dbsetuserdata() and dbgetuserdata() */
│ │ │ │ -
134 unsigned char *dbbuf; /* is dynamic! */
│ │ │ │ -
135 int dbbufsz;
│ │ │ │ -
136 int command_state;
│ │ │ │ -
137 TDS_INT text_size;
│ │ │ │ -
138 TDS_INT text_sent;
│ │ │ │ -
139 DBTYPEINFO typeinfo;
│ │ │ │ -
140 unsigned char avail_flag;
│ │ │ │ -
141 DBOPTION *dbopts;
│ │ │ │ -
142 DBSTRING *dboptcmd;
│ │ │ │ -
143 BCP_HOSTFILEINFO *hostfileinfo;
│ │ │ │ -
144 TDSBCPINFO *bcpinfo;
│ │ │ │ -
145 DBREMOTE_PROC *rpc;
│ │ │ │ -
146 DBUSMALLINT envchange_rcv;
│ │ │ │ -
147 char dbcurdb[DBMAXNAME + 1];
│ │ │ │ -
148 char servcharset[DBMAXNAME + 1];
│ │ │ │ -
149 FILE *ftos;
│ │ │ │ -
150 DB_DBCHKINTR_FUNC chkintr;
│ │ │ │ -
151 DB_DBHNDLINTR_FUNC hndlintr;
│ │ │ │ -
152
│ │ │ │ - │ │ │ │ -
155
│ │ │ │ -
156 int ntimeouts;
│ │ │ │ -
157
│ │ │ │ -
159 NULLREP nullreps[MAXBINDTYPES];
│ │ │ │ -
160};
│ │ │ │ -
│ │ │ │ -
161
│ │ │ │ -
162enum {
│ │ │ │ -
163#if MSDBLIB
│ │ │ │ -
164 dblib_msdblib = 1
│ │ │ │ -
165#else
│ │ │ │ -
166 dblib_msdblib = 0
│ │ │ │ -
167#endif
│ │ │ │ -
168};
│ │ │ │ -
169
│ │ │ │ -
170/*
│ │ │ │ -
171 * internal prototypes
│ │ │ │ -
172 */
│ │ │ │ -
173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* varaddr);
│ │ │ │ -
174void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, const BYTE * src, DBINT srclen,
│ │ │ │ -
175 BYTE * dest, DBINT destlen,
│ │ │ │ -
176 int bindtype, DBINT *indicator);
│ │ │ │ +
129/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ +
130 getpwuid_r(). */
│ │ │ │ +
131#define HAVE_FUNC_GETPWUID_R_5 1
│ │ │ │ +
132
│ │ │ │ +
133/* Define to 1 if your system provides the 4-parameter version of
│ │ │ │ +
134 getservbyname_r(). */
│ │ │ │ +
135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */
│ │ │ │ +
136
│ │ │ │ +
137/* Define to 1 if your system provides the 5-parameter version of
│ │ │ │ +
138 getservbyname_r(). */
│ │ │ │ +
139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */
│ │ │ │ +
140
│ │ │ │ +
141/* Define to 1 if your system provides the 6-parameter version of
│ │ │ │ +
142 getservbyname_r(). */
│ │ │ │ +
143#define HAVE_FUNC_GETSERVBYNAME_R_6 1
│ │ │ │ +
144
│ │ │ │ +
145/* Define to 1 if your localtime_r return a int. */
│ │ │ │ +
146/* #undef HAVE_FUNC_LOCALTIME_R_INT */
│ │ │ │ +
147
│ │ │ │ +
148/* Define to 1 if your localtime_r return a struct tm*. */
│ │ │ │ +
149#define HAVE_FUNC_LOCALTIME_R_TM 1
│ │ │ │ +
150
│ │ │ │ +
151/* Define if you have getaddrinfo function */
│ │ │ │ +
152#define HAVE_GETADDRINFO 1
│ │ │ │ +
153
│ │ │ │ +
154/* Define to 1 if you have the 'gethostname' function. */
│ │ │ │ +
155#define HAVE_GETHOSTNAME 1
│ │ │ │ +
156
│ │ │ │ +
157/* Define to 1 if you have the 'gethrtime' function. */
│ │ │ │ +
158/* #undef HAVE_GETHRTIME */
│ │ │ │ +
159
│ │ │ │ +
160/* Define to 1 if you have the 'getipnodebyaddr' function. */
│ │ │ │ +
161/* #undef HAVE_GETIPNODEBYADDR */
│ │ │ │ +
162
│ │ │ │ +
163/* Define to 1 if you have the 'getipnodebyname' function. */
│ │ │ │ +
164/* #undef HAVE_GETIPNODEBYNAME */
│ │ │ │ +
165
│ │ │ │ +
166/* Define to 1 if you have the 'getopt' function. */
│ │ │ │ +
167#define HAVE_GETOPT 1
│ │ │ │ +
168
│ │ │ │ +
169/* Define to 1 if you have the <getopt.h> header file. */
│ │ │ │ +
170#define HAVE_GETOPT_H 1
│ │ │ │ +
171
│ │ │ │ +
172/* Define if your getopt(3) defines and uses optreset */
│ │ │ │ +
173/* #undef HAVE_GETOPT_OPTRESET */
│ │ │ │ +
174
│ │ │ │ +
175/* Define to 1 if you have the 'getpwuid' function. */
│ │ │ │ +
176#define HAVE_GETPWUID 1
│ │ │ │
177
│ │ │ │ -
178int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...);
│ │ │ │ -
179int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
│ │ │ │ -
180int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
│ │ │ │ -
181int _dblib_check_and_handle_interrupt(void * vdbproc);
│ │ │ │ -
182
│ │ │ │ -
183void _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version);
│ │ │ │ -
184void _dblib_convert_err(DBPROCESS * dbproc, TDS_INT len);
│ │ │ │ -
185
│ │ │ │ -
186DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
│ │ │ │ -
187DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
│ │ │ │ -
188
│ │ │ │ -
189RETCODE _bcp_clear_storage(DBPROCESS * dbproc);
│ │ │ │ -
190RETCODE _bcp_get_prog_data(DBPROCESS * dbproc);
│ │ │ │ -
191
│ │ │ │ -
192extern MHANDLEFUNC _dblib_msg_handler;
│ │ │ │ -
193extern EHANDLEFUNC _dblib_err_handler;
│ │ │ │ -
194
│ │ │ │ -
195#define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); return ret; }
│ │ │ │ -
196#define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, SYBENULP, 0, func, (int) param_num); return ret; }
│ │ │ │ -
197#define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); return FAIL; }
│ │ │ │ -
198#define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return FAIL; }
│ │ │ │ -
199#define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), 0, a, b, c); return FAIL; }
│ │ │ │ -
200#define CHECK_CONN(ret) do { CHECK_PARAMETER(dbproc, SYBENULL, (ret)); \
│ │ │ │ -
201 if (IS_TDSDEAD(dbproc->tds_socket)) { dbperror(dbproc, SYBEDDNE, 0); return (ret); } } while(0)
│ │ │ │ +
178/* Define to 1 if you have the 'getpwuid_r' function. */
│ │ │ │ +
179#define HAVE_GETPWUID_R 1
│ │ │ │ +
180
│ │ │ │ +
181/* Define to 1 if you have the 'gettimeofday' function. */
│ │ │ │ +
182#define HAVE_GETTIMEOFDAY 1
│ │ │ │ +
183
│ │ │ │ +
184/* Define to 1 if you have the 'getuid' function. */
│ │ │ │ +
185#define HAVE_GETUID 1
│ │ │ │ +
186
│ │ │ │ +
187/* Define if you have GMP library */
│ │ │ │ +
188#define HAVE_GMP 1
│ │ │ │ +
189
│ │ │ │ +
190/* Define to 1 if you have GnuTLS. */
│ │ │ │ +
191#define HAVE_GNUTLS 1
│ │ │ │ +
192
│ │ │ │ +
193/* Define to 1 if you have the <gnutls/abstract.h> header file. */
│ │ │ │ +
194#define HAVE_GNUTLS_ABSTRACT_H 1
│ │ │ │ +
195
│ │ │ │ +
196/* Define to 1 if you have the 'gnutls_alpn_set_protocols' function. */
│ │ │ │ +
197#define HAVE_GNUTLS_ALPN_SET_PROTOCOLS 1
│ │ │ │ +
198
│ │ │ │ +
199/* Define to 1 if you have the 'gnutls_certificate_set_verify_function'
│ │ │ │ +
200 function. */
│ │ │ │ +
201#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1
│ │ │ │
202
│ │ │ │ -
203
│ │ │ │ -
204#ifdef __cplusplus
│ │ │ │ -
205#if 0
│ │ │ │ -
206{
│ │ │ │ -
207#endif
│ │ │ │ -
208}
│ │ │ │ -
209#endif
│ │ │ │ -
210
│ │ │ │ -
211#include <freetds/popvis.h>
│ │ │ │ -
212
│ │ │ │ -
213#endif
│ │ │ │ -
RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
Definition dblib.c:537
│ │ │ │ -
int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...)
Call client-installed error handler.
Definition dblib.c:8172
│ │ │ │ -
int _dblib_check_and_handle_interrupt(void *vdbproc)
check interrupts for libtds.
Definition dbutil.c:192
│ │ │ │ -
Definition buffering.h:1
│ │ │ │ -
Definition dblib.h:44
│ │ │ │ -
Definition dblib.h:52
│ │ │ │ -
Definition dblib.h:62
│ │ │ │ -
Definition dblib.h:74
│ │ │ │ -
Definition dblib.h:89
│ │ │ │ -
Definition dblib.h:101
│ │ │ │ -
Definition dblib.h:110
│ │ │ │ -
Definition dblib.h:117
│ │ │ │ -
Definition dblib.h:123
│ │ │ │ -
NULLREP nullreps[MAXBINDTYPES]
default null values
Definition dblib.h:159
│ │ │ │ -
int msdblib
boolean use ms behaviour
Definition dblib.h:154
│ │ │ │ -
Definition tds.h:498
│ │ │ │ -
Definition tds.h:861
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ -
Definition tds.h:1684
│ │ │ │ -
Definition sybdb.h:337
│ │ │ │ -
Definition sybdb.h:343
│ │ │ │ +
203/* Define to 1 if you have the 'gnutls_record_disable_padding' function. */
│ │ │ │ +
204#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1
│ │ │ │ +
205
│ │ │ │ +
206/* Define to 1 if you have the 'gnutls_rnd' function. */
│ │ │ │ +
207#define HAVE_GNUTLS_RND 1
│ │ │ │ +
208
│ │ │ │ +
209/* Define if you have the iconv() function and it works. */
│ │ │ │ +
210#define HAVE_ICONV 1
│ │ │ │ +
211
│ │ │ │ +
212/* Define to 1 if you have the 'inet_ntoa_r' function. */
│ │ │ │ +
213/* #undef HAVE_INET_NTOA_R */
│ │ │ │ +
214
│ │ │ │ +
215/* Define to 1 if you have the 'inet_ntop' function. */
│ │ │ │ +
216#define HAVE_INET_NTOP 1
│ │ │ │ +
217
│ │ │ │ +
218/* Define to 1 if you have the <inttypes.h> header file. */
│ │ │ │ +
219#define HAVE_INTTYPES_H 1
│ │ │ │ +
220
│ │ │ │ +
221/* Define to 1 if you have the <iodbcinst.h> header file. */
│ │ │ │ +
222/* #undef HAVE_IODBCINST_H */
│ │ │ │ +
223
│ │ │ │ +
224/* Define to 1 if you have the <langinfo.h> header file. */
│ │ │ │ +
225#define HAVE_LANGINFO_H 1
│ │ │ │ +
226
│ │ │ │ +
227/* Define to 1 if you have the <libgen.h> header file. */
│ │ │ │ +
228#define HAVE_LIBGEN_H 1
│ │ │ │ +
229
│ │ │ │ +
230/* Define to 1 if you have the <limits.h> header file. */
│ │ │ │ +
231#define HAVE_LIMITS_H 1
│ │ │ │ +
232
│ │ │ │ +
233/* Define to 1 if you have the <localcharset.h> header file. */
│ │ │ │ +
234/* #undef HAVE_LOCALCHARSET_H */
│ │ │ │ +
235
│ │ │ │ +
236/* Define to 1 if you have the 'locale_charset' function. */
│ │ │ │ +
237/* #undef HAVE_LOCALE_CHARSET */
│ │ │ │ +
238
│ │ │ │ +
239/* Define to 1 if you have the <locale.h> header file. */
│ │ │ │ +
240#define HAVE_LOCALE_H 1
│ │ │ │ +
241
│ │ │ │ +
242/* Define to 1 if you have the 'localtime_r' function. */
│ │ │ │ +
243#define HAVE_LOCALTIME_R 1
│ │ │ │ +
244
│ │ │ │ +
245/* Define if you have long long */
│ │ │ │ +
246#define HAVE_LONG_LONG 1
│ │ │ │ +
247
│ │ │ │ +
248/* Define to 1 if you have the 'mallinfo' function. */
│ │ │ │ +
249#define HAVE_MALLINFO 1
│ │ │ │ +
250
│ │ │ │ +
251/* Define to 1 if you have the 'mallinfo2' function. */
│ │ │ │ +
252#define HAVE_MALLINFO2 1
│ │ │ │ +
253
│ │ │ │ +
254/* Define to 1 if you have the <malloc.h> header file. */
│ │ │ │ +
255#define HAVE_MALLOC_H 1
│ │ │ │ +
256
│ │ │ │ +
257/* Define to 1 if your system provides the malloc_options variable. */
│ │ │ │ +
258/* #undef HAVE_MALLOC_OPTIONS */
│ │ │ │ +
259
│ │ │ │ +
260/* Define to 1 if you have the <minix/config.h> header file. */
│ │ │ │ +
261/* #undef HAVE_MINIX_CONFIG_H */
│ │ │ │ +
262
│ │ │ │ +
263/* Define to 1 if you have the 'nanosleep' function. */
│ │ │ │ +
264#define HAVE_NANOSLEEP 1
│ │ │ │ +
265
│ │ │ │ +
266/* Define to 1 if you have the <netdb.h> header file. */
│ │ │ │ +
267#define HAVE_NETDB_H 1
│ │ │ │ +
268
│ │ │ │ +
269/* Define to 1 if you have the <netinet/in.h> header file. */
│ │ │ │ +
270#define HAVE_NETINET_IN_H 1
│ │ │ │ +
271
│ │ │ │ +
272/* Define to 1 if you have the <netinet/tcp.h> header file. */
│ │ │ │ +
273#define HAVE_NETINET_TCP_H 1
│ │ │ │ +
274
│ │ │ │ +
275/* Define to 1 if nettle is present. */
│ │ │ │ +
276#define HAVE_NETTLE 1
│ │ │ │ +
277
│ │ │ │ +
278/* Define to 1 if you have the 'nl_langinfo' function. */
│ │ │ │ +
279#define HAVE_NL_LANGINFO 1
│ │ │ │ +
280
│ │ │ │ +
281/* Define to 1 if you have the <odbcss.h> header file. */
│ │ │ │ +
282/* #undef HAVE_ODBCSS_H */
│ │ │ │ +
283
│ │ │ │ +
284/* Define if you have the OpenSSL. */
│ │ │ │ +
285/* #undef HAVE_OPENSSL */
│ │ │ │ +
286
│ │ │ │ +
287/* Define to 1 if you have the <paths.h> header file. */
│ │ │ │ +
288#define HAVE_PATHS_H 1
│ │ │ │ +
289
│ │ │ │ +
290/* Define to 1 if you have the 'poll' function. */
│ │ │ │ +
291#define HAVE_POLL 1
│ │ │ │ +
292
│ │ │ │ +
293/* Define to 1 if you have the <poll.h> header file. */
│ │ │ │ +
294#define HAVE_POLL_H 1
│ │ │ │ +
295
│ │ │ │ +
296/* Define if you have POSIX threads libraries and header files. */
│ │ │ │ +
297#define HAVE_PTHREAD 1
│ │ │ │ +
298
│ │ │ │ +
299/* Define to 1 if you have the 'pthread_condattr_setclock' function. */
│ │ │ │ +
300#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
│ │ │ │ +
301
│ │ │ │ +
302/* Define to 1 if you have the 'pthread_cond_timedwait' function. */
│ │ │ │ +
303#define HAVE_PTHREAD_COND_TIMEDWAIT 1
│ │ │ │ +
304
│ │ │ │ +
305/* Define to 1 if you have the 'pthread_cond_timedwait_relative_np' function.
│ │ │ │ +
306 */
│ │ │ │ +
307/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */
│ │ │ │ +
308
│ │ │ │ +
309/* Have PTHREAD_PRIO_INHERIT. */
│ │ │ │ +
310#define HAVE_PTHREAD_PRIO_INHERIT 1
│ │ │ │ +
311
│ │ │ │ +
312/* Define to 1 if you have the 'putenv' function. */
│ │ │ │ +
313#define HAVE_PUTENV 1
│ │ │ │ +
314
│ │ │ │ +
315/* Define to 1 if you have the 'readdir_r' function. */
│ │ │ │ +
316#define HAVE_READDIR_R 1
│ │ │ │ +
317
│ │ │ │ +
318/* Define to 1 if you have the GNU Readline library. */
│ │ │ │ +
319#define HAVE_READLINE 1
│ │ │ │ +
320
│ │ │ │ +
321/* Define to 1 if you have the 'readpassphrase' function. */
│ │ │ │ +
322/* #undef HAVE_READPASSPHRASE */
│ │ │ │ +
323
│ │ │ │ +
324/* Define to 1 if you have rl_inhibit_completion. */
│ │ │ │ +
325#define HAVE_RL_INHIBIT_COMPLETION 1
│ │ │ │ +
326
│ │ │ │ +
327/* Define to 1 if you have the 'rl_on_new_line' function. */
│ │ │ │ +
328#define HAVE_RL_ON_NEW_LINE 1
│ │ │ │ +
329
│ │ │ │ +
330/* Define to 1 if you have the 'rl_reset_line_state' function. */
│ │ │ │ +
331#define HAVE_RL_RESET_LINE_STATE 1
│ │ │ │ +
332
│ │ │ │ +
333/* Define to 1 if you have the <roken.h> header file. */
│ │ │ │ +
334/* #undef HAVE_ROKEN_H */
│ │ │ │ +
335
│ │ │ │ +
336/* Define to 1 if you have the 'RSA_get0_key' function. */
│ │ │ │ +
337/* #undef HAVE_RSA_GET0_KEY */
│ │ │ │ +
338
│ │ │ │ +
339/* Define to 1 if you have the 'setenv' function. */
│ │ │ │ +
340#define HAVE_SETENV 1
│ │ │ │ +
341
│ │ │ │ +
342/* Define to 1 if you have the 'setitimer' function. */
│ │ │ │ +
343#define HAVE_SETITIMER 1
│ │ │ │ +
344
│ │ │ │ +
345/* Define to 1 if you have the 'setrlimit' function. */
│ │ │ │ +
346#define HAVE_SETRLIMIT 1
│ │ │ │ +
347
│ │ │ │ +
348/* Define to 1 if you have the <signal.h> header file. */
│ │ │ │ +
349#define HAVE_SIGNAL_H 1
│ │ │ │ +
350
│ │ │ │ +
351/* Define to 1 if you have the 'socketpair' function. */
│ │ │ │ +
352#define HAVE_SOCKETPAIR 1
│ │ │ │ +
353
│ │ │ │ +
354/* Define to 1 if you have the SQLGetPrivateProfileString function. */
│ │ │ │ +
355#define HAVE_SQLGETPRIVATEPROFILESTRING 1
│ │ │ │ +
356
│ │ │ │ +
357/* Define if sqltypes.h define SQLLEN */
│ │ │ │ +
358#define HAVE_SQLLEN 1
│ │ │ │ +
359
│ │ │ │ +
360/* Define to 1 if the system has the type 'SQLROWOFFSET'. */
│ │ │ │ +
361/* #undef HAVE_SQLROWOFFSET */
│ │ │ │ +
362
│ │ │ │ +
363/* Define to 1 if the system has the type 'SQLROWSETSIZE'. */
│ │ │ │ +
364/* #undef HAVE_SQLROWSETSIZE */
│ │ │ │ +
365
│ │ │ │ +
366/* Define to 1 if the system has the type 'SQLSETPOSIROW'. */
│ │ │ │ +
367#define HAVE_SQLSETPOSIROW 1
│ │ │ │ +
368
│ │ │ │ +
369/* Define to 1 if you have the <sql.h> header file. */
│ │ │ │ +
370#define HAVE_SQL_H 1
│ │ │ │ +
371
│ │ │ │ +
372/* Define to 1 if you have the 'SSL_set_alpn_protos' function. */
│ │ │ │ +
373/* #undef HAVE_SSL_SET_ALPN_PROTOS */
│ │ │ │ +
374
│ │ │ │ +
375/* Defined if not --disable-sspi and SSPI detected */
│ │ │ │ +
376/* #undef HAVE_SSPI */
│ │ │ │ +
377
│ │ │ │ +
378/* Define to 1 if you have the <stdbool.h> header file. */
│ │ │ │ +
379#define HAVE_STDBOOL_H 1
│ │ │ │ +
380
│ │ │ │ +
381/* Define to 1 if you have the <stddef.h> header file. */
│ │ │ │ +
382#define HAVE_STDDEF_H 1
│ │ │ │ +
383
│ │ │ │ +
384/* Define to 1 if you have the <stdint.h> header file. */
│ │ │ │ +
385#define HAVE_STDINT_H 1
│ │ │ │ +
386
│ │ │ │ +
387/* Define to 1 if you have the <stdio.h> header file. */
│ │ │ │ +
388#define HAVE_STDIO_H 1
│ │ │ │ +
389
│ │ │ │ +
390/* Define to 1 if you have the <stdlib.h> header file. */
│ │ │ │ +
391#define HAVE_STDLIB_H 1
│ │ │ │ +
392
│ │ │ │ +
393/* Define to 1 if you have the <strings.h> header file. */
│ │ │ │ +
394#define HAVE_STRINGS_H 1
│ │ │ │ +
395
│ │ │ │ +
396/* Define to 1 if you have the <string.h> header file. */
│ │ │ │ +
397#define HAVE_STRING_H 1
│ │ │ │ +
398
│ │ │ │ +
399/* Define to 1 if you have the 'strlcat' function. */
│ │ │ │ +
400#define HAVE_STRLCAT 1
│ │ │ │ +
401
│ │ │ │ +
402/* Define to 1 if you have the 'strlcpy' function. */
│ │ │ │ +
403#define HAVE_STRLCPY 1
│ │ │ │ +
404
│ │ │ │ +
405/* Define to 1 if you have the 'strsep' function. */
│ │ │ │ +
406#define HAVE_STRSEP 1
│ │ │ │ +
407
│ │ │ │ +
408/* Define to 1 if you have the 'strtok_r' function. */
│ │ │ │ +
409#define HAVE_STRTOK_R 1
│ │ │ │ +
410
│ │ │ │ +
411/* Define to 1 if you have the 'strtok_s' function. */
│ │ │ │ +
412/* #undef HAVE_STRTOK_S */
│ │ │ │ +
413
│ │ │ │ +
414/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */
│ │ │ │ +
415#define HAVE_STRUCT_TM_TM_ZONE 1
│ │ │ │ +
416
│ │ │ │ +
417/* Define to 1 if '__tm_zone' is a member of 'struct tm'. */
│ │ │ │ +
418/* #undef HAVE_STRUCT_TM___TM_ZONE */
│ │ │ │ +
419
│ │ │ │ +
420/* Define to 1 if you have the 'system' function */
│ │ │ │ +
421#define HAVE_SYSTEM 1
│ │ │ │ +
422
│ │ │ │ +
423/* Define to 1 if you have the <sys/eventfd.h> header file. */
│ │ │ │ +
424#define HAVE_SYS_EVENTFD_H 1
│ │ │ │ +
425
│ │ │ │ +
426/* Define to 1 if you have the <sys/ioctl.h> header file. */
│ │ │ │ +
427#define HAVE_SYS_IOCTL_H 1
│ │ │ │ +
428
│ │ │ │ +
429/* Define to 1 if you have the <sys/param.h> header file. */
│ │ │ │ +
430#define HAVE_SYS_PARAM_H 1
│ │ │ │ +
431
│ │ │ │ +
432/* Define to 1 if you have the <sys/resource.h> header file. */
│ │ │ │ +
433#define HAVE_SYS_RESOURCE_H 1
│ │ │ │ +
434
│ │ │ │ +
435/* Define to 1 if you have the <sys/select.h> header file. */
│ │ │ │ +
436#define HAVE_SYS_SELECT_H 1
│ │ │ │ +
437
│ │ │ │ +
438/* Define to 1 if you have the <sys/socket.h> header file. */
│ │ │ │ +
439#define HAVE_SYS_SOCKET_H 1
│ │ │ │ +
440
│ │ │ │ +
441/* Define to 1 if you have the <sys/stat.h> header file. */
│ │ │ │ +
442#define HAVE_SYS_STAT_H 1
│ │ │ │ +
443
│ │ │ │ +
444/* Define to 1 if you have the <sys/time.h> header file. */
│ │ │ │ +
445#define HAVE_SYS_TIME_H 1
│ │ │ │ +
446
│ │ │ │ +
447/* Define to 1 if you have the <sys/types.h> header file. */
│ │ │ │ +
448#define HAVE_SYS_TYPES_H 1
│ │ │ │ +
449
│ │ │ │ +
450/* Define to 1 if you have the <sys/wait.h> header file. */
│ │ │ │ +
451#define HAVE_SYS_WAIT_H 1
│ │ │ │ +
452
│ │ │ │ +
453/* Define to 1 if your 'struct tm' has 'tm_zone'. Deprecated, use
│ │ │ │ +
454 'HAVE_STRUCT_TM_TM_ZONE' instead. */
│ │ │ │ +
455#define HAVE_TM_ZONE 1
│ │ │ │ +
456
│ │ │ │ +
457/* Define to 1 if you don't have 'tm_zone' but do have the external array
│ │ │ │ +
458 'tzname'. */
│ │ │ │ +
459/* #undef HAVE_TZNAME */
│ │ │ │ +
460
│ │ │ │ +
461/* Define to 1 if you have the <unistd.h> header file. */
│ │ │ │ +
462#define HAVE_UNISTD_H 1
│ │ │ │ +
463
│ │ │ │ +
464/* Define to 1 if you have the 'usleep' function. */
│ │ │ │ +
465#define HAVE_USLEEP 1
│ │ │ │ +
466
│ │ │ │ +
467/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
│ │ │ │ +
468/* #undef HAVE_VALGRIND_MEMCHECK_H */
│ │ │ │ +
469
│ │ │ │ +
470/* Define to 1 if you have the 'vasprintf' function. */
│ │ │ │ +
471#define HAVE_VASPRINTF 1
│ │ │ │ +
472
│ │ │ │ +
473/* Define to 1 if you have the 'vsnprintf' function. */
│ │ │ │ +
474#define HAVE_VSNPRINTF 1
│ │ │ │ +
475
│ │ │ │ +
476/* Define to 1 if you have the <wchar.h> header file. */
│ │ │ │ +
477#define HAVE_WCHAR_H 1
│ │ │ │ +
478
│ │ │ │ +
479/* Define to 1 if you have the <windows.h> header file. */
│ │ │ │ +
480/* #undef HAVE_WINDOWS_H */
│ │ │ │ +
481
│ │ │ │ +
482/* Define to 1 if you have the <winsock2.h> header file. */
│ │ │ │ +
483/* #undef HAVE_WINSOCK2_H */
│ │ │ │ +
484
│ │ │ │ +
485/* Define to 1 if you have the '_fseeki64' function. */
│ │ │ │ +
486/* #undef HAVE__FSEEKI64 */
│ │ │ │ +
487
│ │ │ │ +
488/* Define to 1 if you have the '_ftelli64' function. */
│ │ │ │ +
489/* #undef HAVE__FTELLI64 */
│ │ │ │ +
490
│ │ │ │ +
491/* Define to 1 if you have the '_heapwalk' function. */
│ │ │ │ +
492/* #undef HAVE__HEAPWALK */
│ │ │ │ +
493
│ │ │ │ +
494/* Define to 1 if you have the '_lock_file' function. */
│ │ │ │ +
495/* #undef HAVE__LOCK_FILE */
│ │ │ │ +
496
│ │ │ │ +
497/* Define to 1 if you have the '_unlock_file' function. */
│ │ │ │ +
498/* #undef HAVE__UNLOCK_FILE */
│ │ │ │ +
499
│ │ │ │ +
500/* Define to 1 if you have the '_vscprintf' function. */
│ │ │ │ +
501/* #undef HAVE__VSCPRINTF */
│ │ │ │ +
502
│ │ │ │ +
503/* Define to 1 if you have the '_vsnprintf' function. */
│ │ │ │ +
504/* #undef HAVE__VSNPRINTF */
│ │ │ │ +
505
│ │ │ │ +
506/* Define to 1 if you have the '_xpg_accept' function. */
│ │ │ │ +
507/* #undef HAVE__XPG_ACCEPT */
│ │ │ │ +
508
│ │ │ │ +
509/* Define to 1 if you have the '_xpg_getpeername' function. */
│ │ │ │ +
510/* #undef HAVE__XPG_GETPEERNAME */
│ │ │ │ +
511
│ │ │ │ +
512/* Define to 1 if you have the '_xpg_getsockname' function. */
│ │ │ │ +
513/* #undef HAVE__XPG_GETSOCKNAME */
│ │ │ │ +
514
│ │ │ │ +
515/* Define to 1 if you have the '_xpg_getsockopt' function. */
│ │ │ │ +
516/* #undef HAVE__XPG_GETSOCKOPT */
│ │ │ │ +
517
│ │ │ │ +
518/* Define to 1 if you have the '_xpg_recvfrom' function. */
│ │ │ │ +
519/* #undef HAVE__XPG_RECVFROM */
│ │ │ │ +
520
│ │ │ │ +
521/* Define to 1 if you have the '__accept' function. */
│ │ │ │ +
522/* #undef HAVE___ACCEPT */
│ │ │ │ +
523
│ │ │ │ +
524/* Define to 1 if you have the '__getpeername' function. */
│ │ │ │ +
525/* #undef HAVE___GETPEERNAME */
│ │ │ │ +
526
│ │ │ │ +
527/* Define to 1 if you have the '__getsockname' function. */
│ │ │ │ +
528/* #undef HAVE___GETSOCKNAME */
│ │ │ │ +
529
│ │ │ │ +
530/* Define to 1 if you have the '__getsockopt' function. */
│ │ │ │ +
531/* #undef HAVE___GETSOCKOPT */
│ │ │ │ +
532
│ │ │ │ +
533/* Define to 1 if you have the '__recvfrom' function. */
│ │ │ │ +
534/* #undef HAVE___RECVFROM */
│ │ │ │ +
535
│ │ │ │ +
536/* Define as const if the declaration of iconv() needs const. */
│ │ │ │ +
537#define ICONV_CONST
│ │ │ │ +
538
│ │ │ │ +
539/* Define to value of INADDR_NONE if not provided by your system header files.
│ │ │ │ +
540 */
│ │ │ │ +
541/* #undef INADDR_NONE */
│ │ │ │ +
542
│ │ │ │ +
543/* Define to the sub-directory where libtool stores uninstalled libraries. */
│ │ │ │ +
544#define LT_OBJDIR ".libs/"
│ │ │ │ +
545
│ │ │ │ +
546/* Define to 1 if the BSD-style netdb interface is reentrant. */
│ │ │ │ +
547/* #undef NETDB_REENTRANT */
│ │ │ │ +
548
│ │ │ │ +
549/* Define to 1 if memset(0) sets pointers to NULL. */
│ │ │ │ +
550#define NULL_REP_IS_ZERO_BYTES 1
│ │ │ │ +
551
│ │ │ │ +
552/* Name of package */
│ │ │ │ +
553#define PACKAGE "freetds"
│ │ │ │ +
554
│ │ │ │ +
555/* Define to the address where bug reports for this package should be sent. */
│ │ │ │ +
556#define PACKAGE_BUGREPORT ""
│ │ │ │ +
557
│ │ │ │ +
558/* Define to the full name of this package. */
│ │ │ │ +
559#define PACKAGE_NAME "FreeTDS"
│ │ │ │ +
560
│ │ │ │ +
561/* Define to the full name and version of this package. */
│ │ │ │ +
562#define PACKAGE_STRING "FreeTDS 1.5.5"
│ │ │ │ +
563
│ │ │ │ +
564/* Define to the one symbol short name of this package. */
│ │ │ │ +
565#define PACKAGE_TARNAME "freetds"
│ │ │ │ +
566
│ │ │ │ +
567/* Define to the home page for this package. */
│ │ │ │ +
568#define PACKAGE_URL ""
│ │ │ │ +
569
│ │ │ │ +
570/* Define to the version of this package. */
│ │ │ │ +
571#define PACKAGE_VERSION "1.5.5"
│ │ │ │ +
572
│ │ │ │ +
573/* Define to necessary symbol if this constant uses a non-standard name on
│ │ │ │ +
574 your system. */
│ │ │ │ +
575/* #undef PTHREAD_CREATE_JOINABLE */
│ │ │ │ +
576
│ │ │ │ +
577/* The size of 'char', as computed by sizeof. */
│ │ │ │ +
578#define SIZEOF_CHAR 1
│ │ │ │ +
579
│ │ │ │ +
580/* The size of 'double', as computed by sizeof. */
│ │ │ │ +
581#define SIZEOF_DOUBLE 8
│ │ │ │ +
582
│ │ │ │ +
583/* The size of 'float', as computed by sizeof. */
│ │ │ │ +
584#define SIZEOF_FLOAT 4
│ │ │ │ +
585
│ │ │ │ +
586/* The size of 'int', as computed by sizeof. */
│ │ │ │ +
587#define SIZEOF_INT 4
│ │ │ │ +
588
│ │ │ │ +
589/* The size of 'long', as computed by sizeof. */
│ │ │ │ +
590#define SIZEOF_LONG 8
│ │ │ │ +
591
│ │ │ │ +
592/* The size of 'long double', as computed by sizeof. */
│ │ │ │ +
593#define SIZEOF_LONG_DOUBLE 16
│ │ │ │ +
594
│ │ │ │ +
595/* The size of 'long int', as computed by sizeof. */
│ │ │ │ +
596#define SIZEOF_LONG_INT 8
│ │ │ │ +
597
│ │ │ │ +
598/* The size of 'long long', as computed by sizeof. */
│ │ │ │ +
599#define SIZEOF_LONG_LONG 8
│ │ │ │ +
600
│ │ │ │ +
601/* The size of 'short', as computed by sizeof. */
│ │ │ │ +
602#define SIZEOF_SHORT 2
│ │ │ │ +
603
│ │ │ │ +
604/* The size of 'SQLWCHAR', as computed by sizeof. */
│ │ │ │ +
605#define SIZEOF_SQLWCHAR 2
│ │ │ │ +
606
│ │ │ │ +
607/* The size of 'void *', as computed by sizeof. */
│ │ │ │ +
608#define SIZEOF_VOID_P 8
│ │ │ │ +
609
│ │ │ │ +
610/* The size of 'wchar_t', as computed by sizeof. */
│ │ │ │ +
611#define SIZEOF_WCHAR_T 4
│ │ │ │ +
612
│ │ │ │ +
613/* The size of '__int128', as computed by sizeof. */
│ │ │ │ +
614#define SIZEOF___INT128 16
│ │ │ │ +
615
│ │ │ │ +
616/* The size of '__int64', as computed by sizeof. */
│ │ │ │ +
617#define SIZEOF___INT64 0
│ │ │ │ +
618
│ │ │ │ +
619/* If using the C implementation of alloca, define if you know the
│ │ │ │ +
620 direction of stack growth for your system; otherwise it will be
│ │ │ │ +
621 automatically deduced at runtime.
│ │ │ │ +
622 STACK_DIRECTION > 0 => grows toward higher addresses
│ │ │ │ +
623 STACK_DIRECTION < 0 => grows toward lower addresses
│ │ │ │ +
624 STACK_DIRECTION = 0 => direction of growth unknown */
│ │ │ │ +
625/* #undef STACK_DIRECTION */
│ │ │ │ +
626
│ │ │ │ +
627/* Define to 1 if all of the C89 standard headers exist (not just the ones
│ │ │ │ +
628 required in a freestanding environment). This macro is provided for
│ │ │ │ +
629 backward compatibility; new code need not use it. */
│ │ │ │ +
630#define STDC_HEADERS 1
│ │ │ │ +
631
│ │ │ │ +
632/* Define to use TDS 5.0 by default */
│ │ │ │ +
633/* #undef TDS50 */
│ │ │ │ +
634
│ │ │ │ +
635/* Define to use TDS 7.1 by default */
│ │ │ │ +
636/* #undef TDS71 */
│ │ │ │ +
637
│ │ │ │ +
638/* Define to use TDS 7.2 by default */
│ │ │ │ +
639/* #undef TDS72 */
│ │ │ │ +
640
│ │ │ │ +
641/* Define to use TDS 7.3 by default */
│ │ │ │ +
642/* #undef TDS73 */
│ │ │ │ +
643
│ │ │ │ +
644/* Define to use TDS 7.4 by default */
│ │ │ │ +
645/* #undef TDS74 */
│ │ │ │ +
646
│ │ │ │ +
647/* Define to 1 if your compiler supports __attribute__((destructor)). */
│ │ │ │ +
648#define TDS_ATTRIBUTE_DESTRUCTOR 1
│ │ │ │ +
649
│ │ │ │ +
650/* define to constant to use for clock_gettime */
│ │ │ │ +
651#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC
│ │ │ │ +
652
│ │ │ │ +
653/* Define if you have pthread with mutex support */
│ │ │ │ +
654#define TDS_HAVE_PTHREAD_MUTEX 1
│ │ │ │ +
655
│ │ │ │ +
656/* Define if stdio support locking */
│ │ │ │ +
657#define TDS_HAVE_STDIO_LOCKED 1
│ │ │ │ +
658
│ │ │ │ +
659/* define to prefix format string used for 64bit integers */
│ │ │ │ +
660#define TDS_I64_PREFIX "l"
│ │ │ │ +
661
│ │ │ │ +
662/* Define if you don't care about thread safety */
│ │ │ │ +
663/* #undef TDS_NO_THREADSAFE */
│ │ │ │ +
664
│ │ │ │ +
665/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */
│ │ │ │ +
666#define TDS_SQLCOLATTRIBUTE_SQLLEN 1
│ │ │ │ +
667
│ │ │ │ +
668/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */
│ │ │ │ +
669#define TDS_SQLPARAMOPTIONS_SQLLEN 1
│ │ │ │ +
670
│ │ │ │ +
671/* Defined if --enable-sybase-compat used */
│ │ │ │ +
672#define TDS_SYBASE_COMPAT 1
│ │ │ │ +
673
│ │ │ │ +
674/* Define to 1 if your <sys/time.h> declares 'struct tm'. */
│ │ │ │ +
675/* #undef TM_IN_SYS_TIME */
│ │ │ │ +
676
│ │ │ │ +
677/* Enable extensions on AIX, Interix, z/OS. */
│ │ │ │ +
678#ifndef _ALL_SOURCE
│ │ │ │ +
679# define _ALL_SOURCE 1
│ │ │ │ +
680#endif
│ │ │ │ +
681/* Enable general extensions on macOS. */
│ │ │ │ +
682#ifndef _DARWIN_C_SOURCE
│ │ │ │ +
683# define _DARWIN_C_SOURCE 1
│ │ │ │ +
684#endif
│ │ │ │ +
685/* Enable general extensions on Solaris. */
│ │ │ │ +
686#ifndef __EXTENSIONS__
│ │ │ │ +
687# define __EXTENSIONS__ 1
│ │ │ │ +
688#endif
│ │ │ │ +
689/* Enable GNU extensions on systems that have them. */
│ │ │ │ +
690#ifndef _GNU_SOURCE
│ │ │ │ +
691# define _GNU_SOURCE 1
│ │ │ │ +
692#endif
│ │ │ │ +
693/* Enable X/Open compliant socket functions that do not require linking
│ │ │ │ +
694 with -lxnet on HP-UX 11.11. */
│ │ │ │ +
695#ifndef _HPUX_ALT_XOPEN_SOCKET_API
│ │ │ │ +
696# define _HPUX_ALT_XOPEN_SOCKET_API 1
│ │ │ │ +
697#endif
│ │ │ │ +
698/* Identify the host operating system as Minix.
│ │ │ │ +
699 This macro does not affect the system headers' behavior.
│ │ │ │ +
700 A future release of Autoconf may stop defining this macro. */
│ │ │ │ +
701#ifndef _MINIX
│ │ │ │ +
702/* # undef _MINIX */
│ │ │ │ +
703#endif
│ │ │ │ +
704/* Enable general extensions on NetBSD.
│ │ │ │ +
705 Enable NetBSD compatibility extensions on Minix. */
│ │ │ │ +
706#ifndef _NETBSD_SOURCE
│ │ │ │ +
707# define _NETBSD_SOURCE 1
│ │ │ │ +
708#endif
│ │ │ │ +
709/* Enable OpenBSD compatibility extensions on NetBSD.
│ │ │ │ +
710 Oddly enough, this does nothing on OpenBSD. */
│ │ │ │ +
711#ifndef _OPENBSD_SOURCE
│ │ │ │ +
712# define _OPENBSD_SOURCE 1
│ │ │ │ +
713#endif
│ │ │ │ +
714/* Define to 1 if needed for POSIX-compatible behavior. */
│ │ │ │ +
715#ifndef _POSIX_SOURCE
│ │ │ │ +
716/* # undef _POSIX_SOURCE */
│ │ │ │ +
717#endif
│ │ │ │ +
718/* Define to 2 if needed for POSIX-compatible behavior. */
│ │ │ │ +
719#ifndef _POSIX_1_SOURCE
│ │ │ │ +
720/* # undef _POSIX_1_SOURCE */
│ │ │ │ +
721#endif
│ │ │ │ +
722/* Enable POSIX-compatible threading on Solaris. */
│ │ │ │ +
723#ifndef _POSIX_PTHREAD_SEMANTICS
│ │ │ │ +
724# define _POSIX_PTHREAD_SEMANTICS 1
│ │ │ │ +
725#endif
│ │ │ │ +
726/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
│ │ │ │ +
727#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
│ │ │ │ +
728# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
│ │ │ │ +
729#endif
│ │ │ │ +
730/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
│ │ │ │ +
731#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
│ │ │ │ +
732# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
│ │ │ │ +
733#endif
│ │ │ │ +
734/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
│ │ │ │ +
735#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
│ │ │ │ +
736# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
│ │ │ │ +
737#endif
│ │ │ │ +
738/* Enable extensions specified by C23 Annex F. */
│ │ │ │ +
739#ifndef __STDC_WANT_IEC_60559_EXT__
│ │ │ │ +
740# define __STDC_WANT_IEC_60559_EXT__ 1
│ │ │ │ +
741#endif
│ │ │ │ +
742/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
│ │ │ │ +
743#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
│ │ │ │ +
744# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
│ │ │ │ +
745#endif
│ │ │ │ +
746/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
│ │ │ │ +
747#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
│ │ │ │ +
748# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
│ │ │ │ +
749#endif
│ │ │ │ +
750/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
│ │ │ │ +
751#ifndef __STDC_WANT_LIB_EXT2__
│ │ │ │ +
752# define __STDC_WANT_LIB_EXT2__ 1
│ │ │ │ +
753#endif
│ │ │ │ +
754/* Enable extensions specified by ISO/IEC 24747:2009. */
│ │ │ │ +
755#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
│ │ │ │ +
756# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
│ │ │ │ +
757#endif
│ │ │ │ +
758/* Enable extensions on HP NonStop. */
│ │ │ │ +
759#ifndef _TANDEM_SOURCE
│ │ │ │ +
760# define _TANDEM_SOURCE 1
│ │ │ │ +
761#endif
│ │ │ │ +
762/* Enable X/Open extensions. Define to 500 only if necessary
│ │ │ │ +
763 to make mbstate_t available. */
│ │ │ │ +
764#ifndef _XOPEN_SOURCE
│ │ │ │ +
765/* # undef _XOPEN_SOURCE */
│ │ │ │ +
766#endif
│ │ │ │ +
767
│ │ │ │ +
768
│ │ │ │ +
769/* Version number of package */
│ │ │ │ +
770#define VERSION "1.5.5"
│ │ │ │ +
771
│ │ │ │ +
772/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
│ │ │ │ +
773 significant byte first (like Motorola and SPARC, unlike Intel). */
│ │ │ │ +
774#if defined AC_APPLE_UNIVERSAL_BUILD
│ │ │ │ +
775# if defined __BIG_ENDIAN__
│ │ │ │ +
776# define WORDS_BIGENDIAN 1
│ │ │ │ +
777# endif
│ │ │ │ +
778#else
│ │ │ │ +
779# ifndef WORDS_BIGENDIAN
│ │ │ │ +
780/* # undef WORDS_BIGENDIAN */
│ │ │ │ +
781# endif
│ │ │ │ +
782#endif
│ │ │ │ +
783
│ │ │ │ +
784/* Number of bits in a file offset, on hosts where this is settable. */
│ │ │ │ +
785/* #undef _FILE_OFFSET_BITS */
│ │ │ │ +
786
│ │ │ │ +
787/* Define to 1 if necessary to make fseeko visible. */
│ │ │ │ +
788/* #undef _LARGEFILE_SOURCE */
│ │ │ │ +
789
│ │ │ │ +
790/* Define to 1 on platforms where this makes off_t a 64-bit type. */
│ │ │ │ +
791/* #undef _LARGE_FILES */
│ │ │ │ +
792
│ │ │ │ +
793/* Number of bits in time_t, on hosts where this is settable. */
│ │ │ │ +
794/* #undef _TIME_BITS */
│ │ │ │ +
795
│ │ │ │ +
796/* Define to 1 on platforms where this makes time_t a 64-bit type. */
│ │ │ │ +
797/* #undef __MINGW_USE_VC2005_COMPAT */
│ │ │ │ +
798
│ │ │ │ +
799/* Define to empty if 'const' does not conform to ANSI C. */
│ │ │ │ +
800/* #undef const */
│ │ │ │ +
801
│ │ │ │ +
802/* Define to '__inline__' or '__inline' if that's what the C compiler
│ │ │ │ +
803 calls it, or to nothing if 'inline' is not supported under any name. */
│ │ │ │ +
804#ifndef __cplusplus
│ │ │ │ +
805/* #undef inline */
│ │ │ │ +
806#endif
│ │ │ │ +
807
│ │ │ │ +
808/* Define as 'unsigned int' if <stddef.h> doesn't define. */
│ │ │ │ +
809/* #undef size_t */
│ │ │ │ +
810
│ │ │ │ +
811/* type to use in place of socklen_t if not defined */
│ │ │ │ +
812/* #undef socklen_t */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,285 +1,827 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -dblib.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_aoIoAtf9UfNLxwNuH19vDb_ │ │ │ │ │ -21#define _tdsguard_aoIoAtf9UfNLxwNuH19vDb_ │ │ │ │ │ -22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#ifdef __cplusplus │ │ │ │ │ -26extern "C" │ │ │ │ │ -27{ │ │ │ │ │ -28#if 0 │ │ │ │ │ -29} │ │ │ │ │ -30#endif │ │ │ │ │ -31#endif │ │ │ │ │ +config.h │ │ │ │ │ +1/* include/config.h. Generated from config.h.in by configure. */ │ │ │ │ │ +2/* include/config.h.in. Generated from configure.ac by autoheader. */ │ │ │ │ │ +3 │ │ │ │ │ +4#define _freetds_config_h_ │ │ │ │ │ +5 │ │ │ │ │ +6/* Define if building universal (internal helper macro) */ │ │ │ │ │ +7/* #undef AC_APPLE_UNIVERSAL_BUILD */ │ │ │ │ │ +8 │ │ │ │ │ +9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */ │ │ │ │ │ +10/* #undef BSD_COMP */ │ │ │ │ │ +11 │ │ │ │ │ +12/* Define to 1 if using 'alloca.c'. */ │ │ │ │ │ +13/* #undef C_ALLOCA */ │ │ │ │ │ +14 │ │ │ │ │ +15/* Define to enable work in progress code */ │ │ │ │ │ +16/* #undef ENABLE_DEVELOPING */ │ │ │ │ │ +17 │ │ │ │ │ +18/* Define to enable extra checks on code */ │ │ │ │ │ +19/* #undef ENABLE_EXTRA_CHECKS */ │ │ │ │ │ +20 │ │ │ │ │ +21/* Defined if --enable-krb5 used and library detected */ │ │ │ │ │ +22#define ENABLE_KRB5 1 │ │ │ │ │ +23 │ │ │ │ │ +24/* Define to enable MARS support */ │ │ │ │ │ +25#define ENABLE_ODBC_MARS 1 │ │ │ │ │ +26 │ │ │ │ │ +27/* Define to enable ODBC wide string support */ │ │ │ │ │ +28#define ENABLE_ODBC_WIDE 1 │ │ │ │ │ +29 │ │ │ │ │ +30/* Define to 1 if GNU tls use nettle as backend. */ │ │ │ │ │ +31#define GNUTLS_USE_NETTLE 1 │ │ │ │ │ 32 │ │ │ │ │ -33typedef enum │ │ │ │ │ -34{ │ │ │ │ │ -35 _DB_RES_INIT │ │ │ │ │ -36 , _DB_RES_RESULTSET_EMPTY │ │ │ │ │ -37 , _DB_RES_RESULTSET_ROWS │ │ │ │ │ -38 , _DB_RES_NEXT_RESULT │ │ │ │ │ -39 , _DB_RES_NO_MORE_RESULTS │ │ │ │ │ -40 , _DB_RES_SUCCEED │ │ │ │ │ -41} DB_RESULT_STATE; │ │ │ │ │ -42 │ │ │ │ │ -43struct tds_dblib_loginrec │ │ │ │ │ -44{ │ │ │ │ │ -45 TDSLOGIN *tds_login; │ │ │ │ │ -46 bool network_auth; │ │ │ │ │ -47}; │ │ │ │ │ -48 │ │ │ │ │ -49struct dblib_buffer_row; │ │ │ │ │ +33/* Define to 1 if you have the 'alarm' function. */ │ │ │ │ │ +34#define HAVE_ALARM 1 │ │ │ │ │ +35 │ │ │ │ │ +36/* Define to 1 if you have 'alloca', as a function or macro. */ │ │ │ │ │ +37#define HAVE_ALLOCA 1 │ │ │ │ │ +38 │ │ │ │ │ +39/* Define to 1 if works. */ │ │ │ │ │ +40#define HAVE_ALLOCA_H 1 │ │ │ │ │ +41 │ │ │ │ │ +42/* Define to 1 if you have the header file. */ │ │ │ │ │ +43#define HAVE_ARPA_INET_H 1 │ │ │ │ │ +44 │ │ │ │ │ +45/* Define to 1 if you have the 'ASN1_STRING_get0_data' function. */ │ │ │ │ │ +46/* #undef HAVE_ASN1_STRING_GET0_DATA */ │ │ │ │ │ +47 │ │ │ │ │ +48/* Define to 1 if you have the 'asprintf' function. */ │ │ │ │ │ +49#define HAVE_ASPRINTF 1 │ │ │ │ │ 50 │ │ │ │ │ -51typedef struct │ │ │ │ │ -52{ │ │ │ │ │ -53 int received; /* how many rows have been received for this result set */ │ │ │ │ │ -54 int head; /* queue insertion point */ │ │ │ │ │ -55 int tail; /* oldest item in queue */ │ │ │ │ │ -56 int current; /* dbnextrow() reads this row */ │ │ │ │ │ -57 int capacity; /* how many elements the queue can hold */ │ │ │ │ │ -58 struct dblib_buffer_row *rows; /* pointer to the row storage */ │ │ │ │ │ -59} DBPROC_ROWBUF; │ │ │ │ │ -60 │ │ │ │ │ -61typedef struct │ │ │ │ │ -62{ │ │ │ │ │ -63 int host_column; │ │ │ │ │ -64 TDS_SERVER_TYPE datatype; │ │ │ │ │ -65 int prefix_len; │ │ │ │ │ -66 DBINT column_len; │ │ │ │ │ -67 BYTE *terminator; │ │ │ │ │ -68 int term_len; │ │ │ │ │ -69 int tab_colnum; │ │ │ │ │ -70 int column_error; │ │ │ │ │ -71} BCP_HOSTCOLINFO; │ │ │ │ │ +51/* Define to 1 if you have the 'basename' function. */ │ │ │ │ │ +52#define HAVE_BASENAME 1 │ │ │ │ │ +53 │ │ │ │ │ +54/* Define to 1 if you have the 'BIO_get_data' function. */ │ │ │ │ │ +55/* #undef HAVE_BIO_GET_DATA */ │ │ │ │ │ +56 │ │ │ │ │ +57/* Define if you have the clock_gettime function. */ │ │ │ │ │ +58#define HAVE_CLOCK_GETTIME 1 │ │ │ │ │ +59 │ │ │ │ │ +60/* Define to 1 if you have the header file. */ │ │ │ │ │ +61#define HAVE_COM_ERR_H 1 │ │ │ │ │ +62 │ │ │ │ │ +63/* Define to 1 if you have the 'daemon' function. */ │ │ │ │ │ +64#define HAVE_DAEMON 1 │ │ │ │ │ +65 │ │ │ │ │ +66/* Define to 1 if you have the declaration of 'tzname', and to 0 if you │ │ │ │ │ +don't. │ │ │ │ │ +67 */ │ │ │ │ │ +68/* #undef HAVE_DECL_TZNAME */ │ │ │ │ │ +69 │ │ │ │ │ +70/* Define to 1 if you have the header file. */ │ │ │ │ │ +71#define HAVE_DIRENT_H 1 │ │ │ │ │ 72 │ │ │ │ │ -73typedef struct │ │ │ │ │ -74{ │ │ │ │ │ -75 TDS_CHAR *hostfile; │ │ │ │ │ -76 TDS_CHAR *errorfile; │ │ │ │ │ -77 FILE *bcp_errfileptr; │ │ │ │ │ -78 TDS_INT host_colcount; │ │ │ │ │ -79 BCP_HOSTCOLINFO **host_columns; │ │ │ │ │ -80 TDS_INT firstrow; │ │ │ │ │ -81 TDS_INT lastrow; │ │ │ │ │ -82 TDS_INT maxerrs; │ │ │ │ │ -83 TDS_INT batch; │ │ │ │ │ -84} BCP_HOSTFILEINFO; │ │ │ │ │ -85 │ │ │ │ │ -86/* linked list of rpc parameters */ │ │ │ │ │ +73/* Define to 1 if you have the header file. */ │ │ │ │ │ +74#define HAVE_DLFCN_H 1 │ │ │ │ │ +75 │ │ │ │ │ +76/* Define to 1 if you have the header file. */ │ │ │ │ │ +77#define HAVE_ERRNO_H 1 │ │ │ │ │ +78 │ │ │ │ │ +79/* Define to 1 if you have the 'error_message' function. */ │ │ │ │ │ +80/* #undef HAVE_ERROR_MESSAGE */ │ │ │ │ │ +81 │ │ │ │ │ +82/* Define to 1 if you have the 'eventfd' function. */ │ │ │ │ │ +83#define HAVE_EVENTFD 1 │ │ │ │ │ +84 │ │ │ │ │ +85/* Define to 1 if you have the header file. */ │ │ │ │ │ +86#define HAVE_FCNTL_H 1 │ │ │ │ │ 87 │ │ │ │ │ -88typedef struct DBREMOTE_PROC_PARAM │ │ │ │ │ -89{ │ │ │ │ │ -90 struct DBREMOTE_PROC_PARAM *next; │ │ │ │ │ -91 │ │ │ │ │ -92 char *name; │ │ │ │ │ -93 BYTE status; │ │ │ │ │ -94 TDS_SERVER_TYPE type; │ │ │ │ │ -95 DBINT maxlen; │ │ │ │ │ -96 DBINT datalen; │ │ │ │ │ -97 BYTE *value; │ │ │ │ │ -98} DBREMOTE_PROC_PARAM; │ │ │ │ │ -99 │ │ │ │ │ -100typedef struct DBREMOTE_PROC │ │ │ │ │ -101{ │ │ │ │ │ -102 struct DBREMOTE_PROC *next; │ │ │ │ │ -103 │ │ │ │ │ -104 char *name; │ │ │ │ │ -105 DBSMALLINT options; │ │ │ │ │ -106 DBREMOTE_PROC_PARAM *param_list; │ │ │ │ │ -107} DBREMOTE_PROC; │ │ │ │ │ +88/* Define to 1 if you have the 'fork' function. */ │ │ │ │ │ +89#define HAVE_FORK 1 │ │ │ │ │ +90 │ │ │ │ │ +91/* Define to 1 if fseeko (and ftello) are declared in stdio.h. */ │ │ │ │ │ +92#define HAVE_FSEEKO 1 │ │ │ │ │ +93 │ │ │ │ │ +94/* Define to 1 if you have the 'fstat' function. */ │ │ │ │ │ +95#define HAVE_FSTAT 1 │ │ │ │ │ +96 │ │ │ │ │ +97/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ +98 gethostbyaddr_r(). */ │ │ │ │ │ +99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */ │ │ │ │ │ +100 │ │ │ │ │ +101/* Define to 1 if your system provides the 7-parameter version of │ │ │ │ │ +102 gethostbyaddr_r(). */ │ │ │ │ │ +103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */ │ │ │ │ │ +104 │ │ │ │ │ +105/* Define to 1 if your system provides the 8-parameter version of │ │ │ │ │ +106 gethostbyaddr_r(). */ │ │ │ │ │ +107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1 │ │ │ │ │ 108 │ │ │ │ │ -109typedef struct dboption │ │ │ │ │ -110{ │ │ │ │ │ -111 const char *text; │ │ │ │ │ -112 DBSTRING *param; │ │ │ │ │ -113 DBBOOL factive; │ │ │ │ │ -114} DBOPTION; │ │ │ │ │ -115 │ │ │ │ │ -116typedef struct │ │ │ │ │ -117{ │ │ │ │ │ -118 const BYTE *bindval; │ │ │ │ │ -119 size_t len; │ │ │ │ │ -120} NULLREP; │ │ │ │ │ -121 │ │ │ │ │ -122struct tds_dblib_dbprocess │ │ │ │ │ -123{ │ │ │ │ │ -124 TDSSOCKET *tds_socket; │ │ │ │ │ -125 │ │ │ │ │ -126 STATUS row_type; │ │ │ │ │ -127 DBPROC_ROWBUF row_buf; │ │ │ │ │ +109/* Define to 1 if your system provides the 3-parameter version of │ │ │ │ │ +110 gethostbyname_r(). */ │ │ │ │ │ +111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */ │ │ │ │ │ +112 │ │ │ │ │ +113/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ +114 gethostbyname_r(). */ │ │ │ │ │ +115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */ │ │ │ │ │ +116 │ │ │ │ │ +117/* Define to 1 if your system provides the 6-parameter version of │ │ │ │ │ +118 gethostbyname_r(). */ │ │ │ │ │ +119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1 │ │ │ │ │ +120 │ │ │ │ │ +121/* Define to 1 if your system provides the 4-parameter version of │ │ │ │ │ +122 getpwuid_r(). */ │ │ │ │ │ +123/* #undef HAVE_FUNC_GETPWUID_R_4 */ │ │ │ │ │ +124 │ │ │ │ │ +125/* Define to 1 if your system getpwuid_r() have 4 parameters and return │ │ │ │ │ +struct │ │ │ │ │ +126 passwd*. */ │ │ │ │ │ +127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */ │ │ │ │ │ 128 │ │ │ │ │ -129 int noautofree; │ │ │ │ │ -130 int more_results; /* boolean. Are we expecting results? */ │ │ │ │ │ -131 DB_RESULT_STATE dbresults_state; │ │ │ │ │ -132 int dbresults_retcode; │ │ │ │ │ -133 BYTE *user_data; /* see dbsetuserdata() and dbgetuserdata() */ │ │ │ │ │ -134 unsigned char *dbbuf; /* is dynamic! */ │ │ │ │ │ -135 int dbbufsz; │ │ │ │ │ -136 int command_state; │ │ │ │ │ -137 TDS_INT text_size; │ │ │ │ │ -138 TDS_INT text_sent; │ │ │ │ │ -139 DBTYPEINFO typeinfo; │ │ │ │ │ -140 unsigned char avail_flag; │ │ │ │ │ -141 DBOPTION *dbopts; │ │ │ │ │ -142 DBSTRING *dboptcmd; │ │ │ │ │ -143 BCP_HOSTFILEINFO *hostfileinfo; │ │ │ │ │ -144 TDSBCPINFO *bcpinfo; │ │ │ │ │ -145 DBREMOTE_PROC *rpc; │ │ │ │ │ -146 DBUSMALLINT envchange_rcv; │ │ │ │ │ -147 char dbcurdb[DBMAXNAME + 1]; │ │ │ │ │ -148 char servcharset[DBMAXNAME + 1]; │ │ │ │ │ -149 FILE *ftos; │ │ │ │ │ -150 DB_DBCHKINTR_FUNC chkintr; │ │ │ │ │ -151 DB_DBHNDLINTR_FUNC hndlintr; │ │ │ │ │ -152 │ │ │ │ │ -154 int msdblib; │ │ │ │ │ -155 │ │ │ │ │ -156 int ntimeouts; │ │ │ │ │ -157 │ │ │ │ │ -159 NULLREP nullreps[MAXBINDTYPES]; │ │ │ │ │ -160}; │ │ │ │ │ -161 │ │ │ │ │ -162enum { │ │ │ │ │ -163#if MSDBLIB │ │ │ │ │ -164 dblib_msdblib = 1 │ │ │ │ │ -165#else │ │ │ │ │ -166 dblib_msdblib = 0 │ │ │ │ │ -167#endif │ │ │ │ │ -168}; │ │ │ │ │ -169 │ │ │ │ │ -170/* │ │ │ │ │ -171 * internal prototypes │ │ │ │ │ -172 */ │ │ │ │ │ -173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* │ │ │ │ │ -varaddr); │ │ │ │ │ -174void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, │ │ │ │ │ -const BYTE * src, DBINT srclen, │ │ │ │ │ -175 BYTE * dest, DBINT destlen, │ │ │ │ │ -176 int bindtype, DBINT *indicator); │ │ │ │ │ +129/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ +130 getpwuid_r(). */ │ │ │ │ │ +131#define HAVE_FUNC_GETPWUID_R_5 1 │ │ │ │ │ +132 │ │ │ │ │ +133/* Define to 1 if your system provides the 4-parameter version of │ │ │ │ │ +134 getservbyname_r(). */ │ │ │ │ │ +135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */ │ │ │ │ │ +136 │ │ │ │ │ +137/* Define to 1 if your system provides the 5-parameter version of │ │ │ │ │ +138 getservbyname_r(). */ │ │ │ │ │ +139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */ │ │ │ │ │ +140 │ │ │ │ │ +141/* Define to 1 if your system provides the 6-parameter version of │ │ │ │ │ +142 getservbyname_r(). */ │ │ │ │ │ +143#define HAVE_FUNC_GETSERVBYNAME_R_6 1 │ │ │ │ │ +144 │ │ │ │ │ +145/* Define to 1 if your localtime_r return a int. */ │ │ │ │ │ +146/* #undef HAVE_FUNC_LOCALTIME_R_INT */ │ │ │ │ │ +147 │ │ │ │ │ +148/* Define to 1 if your localtime_r return a struct tm*. */ │ │ │ │ │ +149#define HAVE_FUNC_LOCALTIME_R_TM 1 │ │ │ │ │ +150 │ │ │ │ │ +151/* Define if you have getaddrinfo function */ │ │ │ │ │ +152#define HAVE_GETADDRINFO 1 │ │ │ │ │ +153 │ │ │ │ │ +154/* Define to 1 if you have the 'gethostname' function. */ │ │ │ │ │ +155#define HAVE_GETHOSTNAME 1 │ │ │ │ │ +156 │ │ │ │ │ +157/* Define to 1 if you have the 'gethrtime' function. */ │ │ │ │ │ +158/* #undef HAVE_GETHRTIME */ │ │ │ │ │ +159 │ │ │ │ │ +160/* Define to 1 if you have the 'getipnodebyaddr' function. */ │ │ │ │ │ +161/* #undef HAVE_GETIPNODEBYADDR */ │ │ │ │ │ +162 │ │ │ │ │ +163/* Define to 1 if you have the 'getipnodebyname' function. */ │ │ │ │ │ +164/* #undef HAVE_GETIPNODEBYNAME */ │ │ │ │ │ +165 │ │ │ │ │ +166/* Define to 1 if you have the 'getopt' function. */ │ │ │ │ │ +167#define HAVE_GETOPT 1 │ │ │ │ │ +168 │ │ │ │ │ +169/* Define to 1 if you have the header file. */ │ │ │ │ │ +170#define HAVE_GETOPT_H 1 │ │ │ │ │ +171 │ │ │ │ │ +172/* Define if your getopt(3) defines and uses optreset */ │ │ │ │ │ +173/* #undef HAVE_GETOPT_OPTRESET */ │ │ │ │ │ +174 │ │ │ │ │ +175/* Define to 1 if you have the 'getpwuid' function. */ │ │ │ │ │ +176#define HAVE_GETPWUID 1 │ │ │ │ │ 177 │ │ │ │ │ -178int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...); │ │ │ │ │ -179int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * │ │ │ │ │ -tdsptr, TDSMESSAGE* msgptr); │ │ │ │ │ -180int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, │ │ │ │ │ -TDSMESSAGE* msgptr); │ │ │ │ │ -181int _dblib_check_and_handle_interrupt(void * vdbproc); │ │ │ │ │ -182 │ │ │ │ │ -183void _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version); │ │ │ │ │ -184void _dblib_convert_err(DBPROCESS * dbproc, TDS_INT len); │ │ │ │ │ -185 │ │ │ │ │ -186DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT │ │ │ │ │ -destlen); │ │ │ │ │ -187DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT │ │ │ │ │ -destlen); │ │ │ │ │ -188 │ │ │ │ │ -189RETCODE _bcp_clear_storage(DBPROCESS * dbproc); │ │ │ │ │ -190RETCODE _bcp_get_prog_data(DBPROCESS * dbproc); │ │ │ │ │ -191 │ │ │ │ │ -192extern MHANDLEFUNC _dblib_msg_handler; │ │ │ │ │ -193extern EHANDLEFUNC _dblib_err_handler; │ │ │ │ │ -194 │ │ │ │ │ -195#define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); │ │ │ │ │ -return ret; } │ │ │ │ │ -196#define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, │ │ │ │ │ -SYBENULP, 0, func, (int) param_num); return ret; } │ │ │ │ │ -197#define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); │ │ │ │ │ -return FAIL; } │ │ │ │ │ -198#define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return │ │ │ │ │ -FAIL; } │ │ │ │ │ -199#define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), │ │ │ │ │ -0, a, b, c); return FAIL; } │ │ │ │ │ -200#define CHECK_CONN(ret) do { CHECK_PARAMETER(dbproc, SYBENULL, (ret)); \ │ │ │ │ │ -201 if (IS_TDSDEAD(dbproc->tds_socket)) { dbperror(dbproc, SYBEDDNE, 0); return │ │ │ │ │ -(ret); } } while(0) │ │ │ │ │ +178/* Define to 1 if you have the 'getpwuid_r' function. */ │ │ │ │ │ +179#define HAVE_GETPWUID_R 1 │ │ │ │ │ +180 │ │ │ │ │ +181/* Define to 1 if you have the 'gettimeofday' function. */ │ │ │ │ │ +182#define HAVE_GETTIMEOFDAY 1 │ │ │ │ │ +183 │ │ │ │ │ +184/* Define to 1 if you have the 'getuid' function. */ │ │ │ │ │ +185#define HAVE_GETUID 1 │ │ │ │ │ +186 │ │ │ │ │ +187/* Define if you have GMP library */ │ │ │ │ │ +188#define HAVE_GMP 1 │ │ │ │ │ +189 │ │ │ │ │ +190/* Define to 1 if you have GnuTLS. */ │ │ │ │ │ +191#define HAVE_GNUTLS 1 │ │ │ │ │ +192 │ │ │ │ │ +193/* Define to 1 if you have the header file. */ │ │ │ │ │ +194#define HAVE_GNUTLS_ABSTRACT_H 1 │ │ │ │ │ +195 │ │ │ │ │ +196/* Define to 1 if you have the 'gnutls_alpn_set_protocols' function. */ │ │ │ │ │ +197#define HAVE_GNUTLS_ALPN_SET_PROTOCOLS 1 │ │ │ │ │ +198 │ │ │ │ │ +199/* Define to 1 if you have the 'gnutls_certificate_set_verify_function' │ │ │ │ │ +200 function. */ │ │ │ │ │ +201#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1 │ │ │ │ │ 202 │ │ │ │ │ -203 │ │ │ │ │ -204#ifdef __cplusplus │ │ │ │ │ -205#if 0 │ │ │ │ │ -206{ │ │ │ │ │ -207#endif │ │ │ │ │ -208} │ │ │ │ │ -209#endif │ │ │ │ │ -210 │ │ │ │ │ -211#include │ │ │ │ │ -212 │ │ │ │ │ -213#endif │ │ │ │ │ -dbgetnull │ │ │ │ │ -RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr) │ │ │ │ │ -Definition dblib.c:537 │ │ │ │ │ -dbperror │ │ │ │ │ -int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...) │ │ │ │ │ -Call client-installed error handler. │ │ │ │ │ -Definition dblib.c:8172 │ │ │ │ │ -_dblib_check_and_handle_interrupt │ │ │ │ │ -int _dblib_check_and_handle_interrupt(void *vdbproc) │ │ │ │ │ -check interrupts for libtds. │ │ │ │ │ -Definition dbutil.c:192 │ │ │ │ │ -dblib_buffer_row │ │ │ │ │ -Definition buffering.h:1 │ │ │ │ │ -tds_dblib_loginrec │ │ │ │ │ -Definition dblib.h:44 │ │ │ │ │ -DBPROC_ROWBUF │ │ │ │ │ -Definition dblib.h:52 │ │ │ │ │ -BCP_HOSTCOLINFO │ │ │ │ │ -Definition dblib.h:62 │ │ │ │ │ -BCP_HOSTFILEINFO │ │ │ │ │ -Definition dblib.h:74 │ │ │ │ │ -DBREMOTE_PROC_PARAM │ │ │ │ │ -Definition dblib.h:89 │ │ │ │ │ -DBREMOTE_PROC │ │ │ │ │ -Definition dblib.h:101 │ │ │ │ │ -dboption │ │ │ │ │ -Definition dblib.h:110 │ │ │ │ │ -NULLREP │ │ │ │ │ -Definition dblib.h:117 │ │ │ │ │ -tds_dblib_dbprocess │ │ │ │ │ -Definition dblib.h:123 │ │ │ │ │ -tds_dblib_dbprocess::nullreps │ │ │ │ │ -NULLREP nullreps[MAXBINDTYPES] │ │ │ │ │ -default null values │ │ │ │ │ -Definition dblib.h:159 │ │ │ │ │ -tds_dblib_dbprocess::msdblib │ │ │ │ │ -int msdblib │ │ │ │ │ -boolean use ms behaviour │ │ │ │ │ -Definition dblib.h:154 │ │ │ │ │ -tds_login │ │ │ │ │ -Definition tds.h:498 │ │ │ │ │ -tds_message │ │ │ │ │ -Definition tds.h:861 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ -tds_bcpinfo │ │ │ │ │ -Definition tds.h:1684 │ │ │ │ │ -dbtypeinfo │ │ │ │ │ -Definition sybdb.h:337 │ │ │ │ │ -dbstring │ │ │ │ │ -Definition sybdb.h:343 │ │ │ │ │ +203/* Define to 1 if you have the 'gnutls_record_disable_padding' function. */ │ │ │ │ │ +204#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1 │ │ │ │ │ +205 │ │ │ │ │ +206/* Define to 1 if you have the 'gnutls_rnd' function. */ │ │ │ │ │ +207#define HAVE_GNUTLS_RND 1 │ │ │ │ │ +208 │ │ │ │ │ +209/* Define if you have the iconv() function and it works. */ │ │ │ │ │ +210#define HAVE_ICONV 1 │ │ │ │ │ +211 │ │ │ │ │ +212/* Define to 1 if you have the 'inet_ntoa_r' function. */ │ │ │ │ │ +213/* #undef HAVE_INET_NTOA_R */ │ │ │ │ │ +214 │ │ │ │ │ +215/* Define to 1 if you have the 'inet_ntop' function. */ │ │ │ │ │ +216#define HAVE_INET_NTOP 1 │ │ │ │ │ +217 │ │ │ │ │ +218/* Define to 1 if you have the header file. */ │ │ │ │ │ +219#define HAVE_INTTYPES_H 1 │ │ │ │ │ +220 │ │ │ │ │ +221/* Define to 1 if you have the header file. */ │ │ │ │ │ +222/* #undef HAVE_IODBCINST_H */ │ │ │ │ │ +223 │ │ │ │ │ +224/* Define to 1 if you have the header file. */ │ │ │ │ │ +225#define HAVE_LANGINFO_H 1 │ │ │ │ │ +226 │ │ │ │ │ +227/* Define to 1 if you have the header file. */ │ │ │ │ │ +228#define HAVE_LIBGEN_H 1 │ │ │ │ │ +229 │ │ │ │ │ +230/* Define to 1 if you have the header file. */ │ │ │ │ │ +231#define HAVE_LIMITS_H 1 │ │ │ │ │ +232 │ │ │ │ │ +233/* Define to 1 if you have the header file. */ │ │ │ │ │ +234/* #undef HAVE_LOCALCHARSET_H */ │ │ │ │ │ +235 │ │ │ │ │ +236/* Define to 1 if you have the 'locale_charset' function. */ │ │ │ │ │ +237/* #undef HAVE_LOCALE_CHARSET */ │ │ │ │ │ +238 │ │ │ │ │ +239/* Define to 1 if you have the header file. */ │ │ │ │ │ +240#define HAVE_LOCALE_H 1 │ │ │ │ │ +241 │ │ │ │ │ +242/* Define to 1 if you have the 'localtime_r' function. */ │ │ │ │ │ +243#define HAVE_LOCALTIME_R 1 │ │ │ │ │ +244 │ │ │ │ │ +245/* Define if you have long long */ │ │ │ │ │ +246#define HAVE_LONG_LONG 1 │ │ │ │ │ +247 │ │ │ │ │ +248/* Define to 1 if you have the 'mallinfo' function. */ │ │ │ │ │ +249#define HAVE_MALLINFO 1 │ │ │ │ │ +250 │ │ │ │ │ +251/* Define to 1 if you have the 'mallinfo2' function. */ │ │ │ │ │ +252#define HAVE_MALLINFO2 1 │ │ │ │ │ +253 │ │ │ │ │ +254/* Define to 1 if you have the header file. */ │ │ │ │ │ +255#define HAVE_MALLOC_H 1 │ │ │ │ │ +256 │ │ │ │ │ +257/* Define to 1 if your system provides the malloc_options variable. */ │ │ │ │ │ +258/* #undef HAVE_MALLOC_OPTIONS */ │ │ │ │ │ +259 │ │ │ │ │ +260/* Define to 1 if you have the header file. */ │ │ │ │ │ +261/* #undef HAVE_MINIX_CONFIG_H */ │ │ │ │ │ +262 │ │ │ │ │ +263/* Define to 1 if you have the 'nanosleep' function. */ │ │ │ │ │ +264#define HAVE_NANOSLEEP 1 │ │ │ │ │ +265 │ │ │ │ │ +266/* Define to 1 if you have the header file. */ │ │ │ │ │ +267#define HAVE_NETDB_H 1 │ │ │ │ │ +268 │ │ │ │ │ +269/* Define to 1 if you have the header file. */ │ │ │ │ │ +270#define HAVE_NETINET_IN_H 1 │ │ │ │ │ +271 │ │ │ │ │ +272/* Define to 1 if you have the header file. */ │ │ │ │ │ +273#define HAVE_NETINET_TCP_H 1 │ │ │ │ │ +274 │ │ │ │ │ +275/* Define to 1 if nettle is present. */ │ │ │ │ │ +276#define HAVE_NETTLE 1 │ │ │ │ │ +277 │ │ │ │ │ +278/* Define to 1 if you have the 'nl_langinfo' function. */ │ │ │ │ │ +279#define HAVE_NL_LANGINFO 1 │ │ │ │ │ +280 │ │ │ │ │ +281/* Define to 1 if you have the header file. */ │ │ │ │ │ +282/* #undef HAVE_ODBCSS_H */ │ │ │ │ │ +283 │ │ │ │ │ +284/* Define if you have the OpenSSL. */ │ │ │ │ │ +285/* #undef HAVE_OPENSSL */ │ │ │ │ │ +286 │ │ │ │ │ +287/* Define to 1 if you have the header file. */ │ │ │ │ │ +288#define HAVE_PATHS_H 1 │ │ │ │ │ +289 │ │ │ │ │ +290/* Define to 1 if you have the 'poll' function. */ │ │ │ │ │ +291#define HAVE_POLL 1 │ │ │ │ │ +292 │ │ │ │ │ +293/* Define to 1 if you have the header file. */ │ │ │ │ │ +294#define HAVE_POLL_H 1 │ │ │ │ │ +295 │ │ │ │ │ +296/* Define if you have POSIX threads libraries and header files. */ │ │ │ │ │ +297#define HAVE_PTHREAD 1 │ │ │ │ │ +298 │ │ │ │ │ +299/* Define to 1 if you have the 'pthread_condattr_setclock' function. */ │ │ │ │ │ +300#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1 │ │ │ │ │ +301 │ │ │ │ │ +302/* Define to 1 if you have the 'pthread_cond_timedwait' function. */ │ │ │ │ │ +303#define HAVE_PTHREAD_COND_TIMEDWAIT 1 │ │ │ │ │ +304 │ │ │ │ │ +305/* Define to 1 if you have the 'pthread_cond_timedwait_relative_np' │ │ │ │ │ +function. │ │ │ │ │ +306 */ │ │ │ │ │ +307/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */ │ │ │ │ │ +308 │ │ │ │ │ +309/* Have PTHREAD_PRIO_INHERIT. */ │ │ │ │ │ +310#define HAVE_PTHREAD_PRIO_INHERIT 1 │ │ │ │ │ +311 │ │ │ │ │ +312/* Define to 1 if you have the 'putenv' function. */ │ │ │ │ │ +313#define HAVE_PUTENV 1 │ │ │ │ │ +314 │ │ │ │ │ +315/* Define to 1 if you have the 'readdir_r' function. */ │ │ │ │ │ +316#define HAVE_READDIR_R 1 │ │ │ │ │ +317 │ │ │ │ │ +318/* Define to 1 if you have the GNU Readline library. */ │ │ │ │ │ +319#define HAVE_READLINE 1 │ │ │ │ │ +320 │ │ │ │ │ +321/* Define to 1 if you have the 'readpassphrase' function. */ │ │ │ │ │ +322/* #undef HAVE_READPASSPHRASE */ │ │ │ │ │ +323 │ │ │ │ │ +324/* Define to 1 if you have rl_inhibit_completion. */ │ │ │ │ │ +325#define HAVE_RL_INHIBIT_COMPLETION 1 │ │ │ │ │ +326 │ │ │ │ │ +327/* Define to 1 if you have the 'rl_on_new_line' function. */ │ │ │ │ │ +328#define HAVE_RL_ON_NEW_LINE 1 │ │ │ │ │ +329 │ │ │ │ │ +330/* Define to 1 if you have the 'rl_reset_line_state' function. */ │ │ │ │ │ +331#define HAVE_RL_RESET_LINE_STATE 1 │ │ │ │ │ +332 │ │ │ │ │ +333/* Define to 1 if you have the header file. */ │ │ │ │ │ +334/* #undef HAVE_ROKEN_H */ │ │ │ │ │ +335 │ │ │ │ │ +336/* Define to 1 if you have the 'RSA_get0_key' function. */ │ │ │ │ │ +337/* #undef HAVE_RSA_GET0_KEY */ │ │ │ │ │ +338 │ │ │ │ │ +339/* Define to 1 if you have the 'setenv' function. */ │ │ │ │ │ +340#define HAVE_SETENV 1 │ │ │ │ │ +341 │ │ │ │ │ +342/* Define to 1 if you have the 'setitimer' function. */ │ │ │ │ │ +343#define HAVE_SETITIMER 1 │ │ │ │ │ +344 │ │ │ │ │ +345/* Define to 1 if you have the 'setrlimit' function. */ │ │ │ │ │ +346#define HAVE_SETRLIMIT 1 │ │ │ │ │ +347 │ │ │ │ │ +348/* Define to 1 if you have the header file. */ │ │ │ │ │ +349#define HAVE_SIGNAL_H 1 │ │ │ │ │ +350 │ │ │ │ │ +351/* Define to 1 if you have the 'socketpair' function. */ │ │ │ │ │ +352#define HAVE_SOCKETPAIR 1 │ │ │ │ │ +353 │ │ │ │ │ +354/* Define to 1 if you have the SQLGetPrivateProfileString function. */ │ │ │ │ │ +355#define HAVE_SQLGETPRIVATEPROFILESTRING 1 │ │ │ │ │ +356 │ │ │ │ │ +357/* Define if sqltypes.h define SQLLEN */ │ │ │ │ │ +358#define HAVE_SQLLEN 1 │ │ │ │ │ +359 │ │ │ │ │ +360/* Define to 1 if the system has the type 'SQLROWOFFSET'. */ │ │ │ │ │ +361/* #undef HAVE_SQLROWOFFSET */ │ │ │ │ │ +362 │ │ │ │ │ +363/* Define to 1 if the system has the type 'SQLROWSETSIZE'. */ │ │ │ │ │ +364/* #undef HAVE_SQLROWSETSIZE */ │ │ │ │ │ +365 │ │ │ │ │ +366/* Define to 1 if the system has the type 'SQLSETPOSIROW'. */ │ │ │ │ │ +367#define HAVE_SQLSETPOSIROW 1 │ │ │ │ │ +368 │ │ │ │ │ +369/* Define to 1 if you have the header file. */ │ │ │ │ │ +370#define HAVE_SQL_H 1 │ │ │ │ │ +371 │ │ │ │ │ +372/* Define to 1 if you have the 'SSL_set_alpn_protos' function. */ │ │ │ │ │ +373/* #undef HAVE_SSL_SET_ALPN_PROTOS */ │ │ │ │ │ +374 │ │ │ │ │ +375/* Defined if not --disable-sspi and SSPI detected */ │ │ │ │ │ +376/* #undef HAVE_SSPI */ │ │ │ │ │ +377 │ │ │ │ │ +378/* Define to 1 if you have the header file. */ │ │ │ │ │ +379#define HAVE_STDBOOL_H 1 │ │ │ │ │ +380 │ │ │ │ │ +381/* Define to 1 if you have the header file. */ │ │ │ │ │ +382#define HAVE_STDDEF_H 1 │ │ │ │ │ +383 │ │ │ │ │ +384/* Define to 1 if you have the header file. */ │ │ │ │ │ +385#define HAVE_STDINT_H 1 │ │ │ │ │ +386 │ │ │ │ │ +387/* Define to 1 if you have the header file. */ │ │ │ │ │ +388#define HAVE_STDIO_H 1 │ │ │ │ │ +389 │ │ │ │ │ +390/* Define to 1 if you have the header file. */ │ │ │ │ │ +391#define HAVE_STDLIB_H 1 │ │ │ │ │ +392 │ │ │ │ │ +393/* Define to 1 if you have the header file. */ │ │ │ │ │ +394#define HAVE_STRINGS_H 1 │ │ │ │ │ +395 │ │ │ │ │ +396/* Define to 1 if you have the header file. */ │ │ │ │ │ +397#define HAVE_STRING_H 1 │ │ │ │ │ +398 │ │ │ │ │ +399/* Define to 1 if you have the 'strlcat' function. */ │ │ │ │ │ +400#define HAVE_STRLCAT 1 │ │ │ │ │ +401 │ │ │ │ │ +402/* Define to 1 if you have the 'strlcpy' function. */ │ │ │ │ │ +403#define HAVE_STRLCPY 1 │ │ │ │ │ +404 │ │ │ │ │ +405/* Define to 1 if you have the 'strsep' function. */ │ │ │ │ │ +406#define HAVE_STRSEP 1 │ │ │ │ │ +407 │ │ │ │ │ +408/* Define to 1 if you have the 'strtok_r' function. */ │ │ │ │ │ +409#define HAVE_STRTOK_R 1 │ │ │ │ │ +410 │ │ │ │ │ +411/* Define to 1 if you have the 'strtok_s' function. */ │ │ │ │ │ +412/* #undef HAVE_STRTOK_S */ │ │ │ │ │ +413 │ │ │ │ │ +414/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */ │ │ │ │ │ +415#define HAVE_STRUCT_TM_TM_ZONE 1 │ │ │ │ │ +416 │ │ │ │ │ +417/* Define to 1 if '__tm_zone' is a member of 'struct tm'. */ │ │ │ │ │ +418/* #undef HAVE_STRUCT_TM___TM_ZONE */ │ │ │ │ │ +419 │ │ │ │ │ +420/* Define to 1 if you have the 'system' function */ │ │ │ │ │ +421#define HAVE_SYSTEM 1 │ │ │ │ │ +422 │ │ │ │ │ +423/* Define to 1 if you have the header file. */ │ │ │ │ │ +424#define HAVE_SYS_EVENTFD_H 1 │ │ │ │ │ +425 │ │ │ │ │ +426/* Define to 1 if you have the header file. */ │ │ │ │ │ +427#define HAVE_SYS_IOCTL_H 1 │ │ │ │ │ +428 │ │ │ │ │ +429/* Define to 1 if you have the header file. */ │ │ │ │ │ +430#define HAVE_SYS_PARAM_H 1 │ │ │ │ │ +431 │ │ │ │ │ +432/* Define to 1 if you have the header file. */ │ │ │ │ │ +433#define HAVE_SYS_RESOURCE_H 1 │ │ │ │ │ +434 │ │ │ │ │ +435/* Define to 1 if you have the header file. */ │ │ │ │ │ +436#define HAVE_SYS_SELECT_H 1 │ │ │ │ │ +437 │ │ │ │ │ +438/* Define to 1 if you have the header file. */ │ │ │ │ │ +439#define HAVE_SYS_SOCKET_H 1 │ │ │ │ │ +440 │ │ │ │ │ +441/* Define to 1 if you have the header file. */ │ │ │ │ │ +442#define HAVE_SYS_STAT_H 1 │ │ │ │ │ +443 │ │ │ │ │ +444/* Define to 1 if you have the header file. */ │ │ │ │ │ +445#define HAVE_SYS_TIME_H 1 │ │ │ │ │ +446 │ │ │ │ │ +447/* Define to 1 if you have the header file. */ │ │ │ │ │ +448#define HAVE_SYS_TYPES_H 1 │ │ │ │ │ +449 │ │ │ │ │ +450/* Define to 1 if you have the header file. */ │ │ │ │ │ +451#define HAVE_SYS_WAIT_H 1 │ │ │ │ │ +452 │ │ │ │ │ +453/* Define to 1 if your 'struct tm' has 'tm_zone'. Deprecated, use │ │ │ │ │ +454 'HAVE_STRUCT_TM_TM_ZONE' instead. */ │ │ │ │ │ +455#define HAVE_TM_ZONE 1 │ │ │ │ │ +456 │ │ │ │ │ +457/* Define to 1 if you don't have 'tm_zone' but do have the external array │ │ │ │ │ +458 'tzname'. */ │ │ │ │ │ +459/* #undef HAVE_TZNAME */ │ │ │ │ │ +460 │ │ │ │ │ +461/* Define to 1 if you have the header file. */ │ │ │ │ │ +462#define HAVE_UNISTD_H 1 │ │ │ │ │ +463 │ │ │ │ │ +464/* Define to 1 if you have the 'usleep' function. */ │ │ │ │ │ +465#define HAVE_USLEEP 1 │ │ │ │ │ +466 │ │ │ │ │ +467/* Define to 1 if you have the header file. */ │ │ │ │ │ +468/* #undef HAVE_VALGRIND_MEMCHECK_H */ │ │ │ │ │ +469 │ │ │ │ │ +470/* Define to 1 if you have the 'vasprintf' function. */ │ │ │ │ │ +471#define HAVE_VASPRINTF 1 │ │ │ │ │ +472 │ │ │ │ │ +473/* Define to 1 if you have the 'vsnprintf' function. */ │ │ │ │ │ +474#define HAVE_VSNPRINTF 1 │ │ │ │ │ +475 │ │ │ │ │ +476/* Define to 1 if you have the header file. */ │ │ │ │ │ +477#define HAVE_WCHAR_H 1 │ │ │ │ │ +478 │ │ │ │ │ +479/* Define to 1 if you have the header file. */ │ │ │ │ │ +480/* #undef HAVE_WINDOWS_H */ │ │ │ │ │ +481 │ │ │ │ │ +482/* Define to 1 if you have the header file. */ │ │ │ │ │ +483/* #undef HAVE_WINSOCK2_H */ │ │ │ │ │ +484 │ │ │ │ │ +485/* Define to 1 if you have the '_fseeki64' function. */ │ │ │ │ │ +486/* #undef HAVE__FSEEKI64 */ │ │ │ │ │ +487 │ │ │ │ │ +488/* Define to 1 if you have the '_ftelli64' function. */ │ │ │ │ │ +489/* #undef HAVE__FTELLI64 */ │ │ │ │ │ +490 │ │ │ │ │ +491/* Define to 1 if you have the '_heapwalk' function. */ │ │ │ │ │ +492/* #undef HAVE__HEAPWALK */ │ │ │ │ │ +493 │ │ │ │ │ +494/* Define to 1 if you have the '_lock_file' function. */ │ │ │ │ │ +495/* #undef HAVE__LOCK_FILE */ │ │ │ │ │ +496 │ │ │ │ │ +497/* Define to 1 if you have the '_unlock_file' function. */ │ │ │ │ │ +498/* #undef HAVE__UNLOCK_FILE */ │ │ │ │ │ +499 │ │ │ │ │ +500/* Define to 1 if you have the '_vscprintf' function. */ │ │ │ │ │ +501/* #undef HAVE__VSCPRINTF */ │ │ │ │ │ +502 │ │ │ │ │ +503/* Define to 1 if you have the '_vsnprintf' function. */ │ │ │ │ │ +504/* #undef HAVE__VSNPRINTF */ │ │ │ │ │ +505 │ │ │ │ │ +506/* Define to 1 if you have the '_xpg_accept' function. */ │ │ │ │ │ +507/* #undef HAVE__XPG_ACCEPT */ │ │ │ │ │ +508 │ │ │ │ │ +509/* Define to 1 if you have the '_xpg_getpeername' function. */ │ │ │ │ │ +510/* #undef HAVE__XPG_GETPEERNAME */ │ │ │ │ │ +511 │ │ │ │ │ +512/* Define to 1 if you have the '_xpg_getsockname' function. */ │ │ │ │ │ +513/* #undef HAVE__XPG_GETSOCKNAME */ │ │ │ │ │ +514 │ │ │ │ │ +515/* Define to 1 if you have the '_xpg_getsockopt' function. */ │ │ │ │ │ +516/* #undef HAVE__XPG_GETSOCKOPT */ │ │ │ │ │ +517 │ │ │ │ │ +518/* Define to 1 if you have the '_xpg_recvfrom' function. */ │ │ │ │ │ +519/* #undef HAVE__XPG_RECVFROM */ │ │ │ │ │ +520 │ │ │ │ │ +521/* Define to 1 if you have the '__accept' function. */ │ │ │ │ │ +522/* #undef HAVE___ACCEPT */ │ │ │ │ │ +523 │ │ │ │ │ +524/* Define to 1 if you have the '__getpeername' function. */ │ │ │ │ │ +525/* #undef HAVE___GETPEERNAME */ │ │ │ │ │ +526 │ │ │ │ │ +527/* Define to 1 if you have the '__getsockname' function. */ │ │ │ │ │ +528/* #undef HAVE___GETSOCKNAME */ │ │ │ │ │ +529 │ │ │ │ │ +530/* Define to 1 if you have the '__getsockopt' function. */ │ │ │ │ │ +531/* #undef HAVE___GETSOCKOPT */ │ │ │ │ │ +532 │ │ │ │ │ +533/* Define to 1 if you have the '__recvfrom' function. */ │ │ │ │ │ +534/* #undef HAVE___RECVFROM */ │ │ │ │ │ +535 │ │ │ │ │ +536/* Define as const if the declaration of iconv() needs const. */ │ │ │ │ │ +537#define ICONV_CONST │ │ │ │ │ +538 │ │ │ │ │ +539/* Define to value of INADDR_NONE if not provided by your system header │ │ │ │ │ +files. │ │ │ │ │ +540 */ │ │ │ │ │ +541/* #undef INADDR_NONE */ │ │ │ │ │ +542 │ │ │ │ │ +543/* Define to the sub-directory where libtool stores uninstalled libraries. │ │ │ │ │ +*/ │ │ │ │ │ +544#define LT_OBJDIR ".libs/" │ │ │ │ │ +545 │ │ │ │ │ +546/* Define to 1 if the BSD-style netdb interface is reentrant. */ │ │ │ │ │ +547/* #undef NETDB_REENTRANT */ │ │ │ │ │ +548 │ │ │ │ │ +549/* Define to 1 if memset(0) sets pointers to NULL. */ │ │ │ │ │ +550#define NULL_REP_IS_ZERO_BYTES 1 │ │ │ │ │ +551 │ │ │ │ │ +552/* Name of package */ │ │ │ │ │ +553#define PACKAGE "freetds" │ │ │ │ │ +554 │ │ │ │ │ +555/* Define to the address where bug reports for this package should be sent. │ │ │ │ │ +*/ │ │ │ │ │ +556#define PACKAGE_BUGREPORT "" │ │ │ │ │ +557 │ │ │ │ │ +558/* Define to the full name of this package. */ │ │ │ │ │ +559#define PACKAGE_NAME "FreeTDS" │ │ │ │ │ +560 │ │ │ │ │ +561/* Define to the full name and version of this package. */ │ │ │ │ │ +562#define PACKAGE_STRING "FreeTDS 1.5.5" │ │ │ │ │ +563 │ │ │ │ │ +564/* Define to the one symbol short name of this package. */ │ │ │ │ │ +565#define PACKAGE_TARNAME "freetds" │ │ │ │ │ +566 │ │ │ │ │ +567/* Define to the home page for this package. */ │ │ │ │ │ +568#define PACKAGE_URL "" │ │ │ │ │ +569 │ │ │ │ │ +570/* Define to the version of this package. */ │ │ │ │ │ +571#define PACKAGE_VERSION "1.5.5" │ │ │ │ │ +572 │ │ │ │ │ +573/* Define to necessary symbol if this constant uses a non-standard name on │ │ │ │ │ +574 your system. */ │ │ │ │ │ +575/* #undef PTHREAD_CREATE_JOINABLE */ │ │ │ │ │ +576 │ │ │ │ │ +577/* The size of 'char', as computed by sizeof. */ │ │ │ │ │ +578#define SIZEOF_CHAR 1 │ │ │ │ │ +579 │ │ │ │ │ +580/* The size of 'double', as computed by sizeof. */ │ │ │ │ │ +581#define SIZEOF_DOUBLE 8 │ │ │ │ │ +582 │ │ │ │ │ +583/* The size of 'float', as computed by sizeof. */ │ │ │ │ │ +584#define SIZEOF_FLOAT 4 │ │ │ │ │ +585 │ │ │ │ │ +586/* The size of 'int', as computed by sizeof. */ │ │ │ │ │ +587#define SIZEOF_INT 4 │ │ │ │ │ +588 │ │ │ │ │ +589/* The size of 'long', as computed by sizeof. */ │ │ │ │ │ +590#define SIZEOF_LONG 8 │ │ │ │ │ +591 │ │ │ │ │ +592/* The size of 'long double', as computed by sizeof. */ │ │ │ │ │ +593#define SIZEOF_LONG_DOUBLE 16 │ │ │ │ │ +594 │ │ │ │ │ +595/* The size of 'long int', as computed by sizeof. */ │ │ │ │ │ +596#define SIZEOF_LONG_INT 8 │ │ │ │ │ +597 │ │ │ │ │ +598/* The size of 'long long', as computed by sizeof. */ │ │ │ │ │ +599#define SIZEOF_LONG_LONG 8 │ │ │ │ │ +600 │ │ │ │ │ +601/* The size of 'short', as computed by sizeof. */ │ │ │ │ │ +602#define SIZEOF_SHORT 2 │ │ │ │ │ +603 │ │ │ │ │ +604/* The size of 'SQLWCHAR', as computed by sizeof. */ │ │ │ │ │ +605#define SIZEOF_SQLWCHAR 2 │ │ │ │ │ +606 │ │ │ │ │ +607/* The size of 'void *', as computed by sizeof. */ │ │ │ │ │ +608#define SIZEOF_VOID_P 8 │ │ │ │ │ +609 │ │ │ │ │ +610/* The size of 'wchar_t', as computed by sizeof. */ │ │ │ │ │ +611#define SIZEOF_WCHAR_T 4 │ │ │ │ │ +612 │ │ │ │ │ +613/* The size of '__int128', as computed by sizeof. */ │ │ │ │ │ +614#define SIZEOF___INT128 16 │ │ │ │ │ +615 │ │ │ │ │ +616/* The size of '__int64', as computed by sizeof. */ │ │ │ │ │ +617#define SIZEOF___INT64 0 │ │ │ │ │ +618 │ │ │ │ │ +619/* If using the C implementation of alloca, define if you know the │ │ │ │ │ +620 direction of stack growth for your system; otherwise it will be │ │ │ │ │ +621 automatically deduced at runtime. │ │ │ │ │ +622 STACK_DIRECTION > 0 => grows toward higher addresses │ │ │ │ │ +623 STACK_DIRECTION < 0 => grows toward lower addresses │ │ │ │ │ +624 STACK_DIRECTION = 0 => direction of growth unknown */ │ │ │ │ │ +625/* #undef STACK_DIRECTION */ │ │ │ │ │ +626 │ │ │ │ │ +627/* Define to 1 if all of the C89 standard headers exist (not just the ones │ │ │ │ │ +628 required in a freestanding environment). This macro is provided for │ │ │ │ │ +629 backward compatibility; new code need not use it. */ │ │ │ │ │ +630#define STDC_HEADERS 1 │ │ │ │ │ +631 │ │ │ │ │ +632/* Define to use TDS 5.0 by default */ │ │ │ │ │ +633/* #undef TDS50 */ │ │ │ │ │ +634 │ │ │ │ │ +635/* Define to use TDS 7.1 by default */ │ │ │ │ │ +636/* #undef TDS71 */ │ │ │ │ │ +637 │ │ │ │ │ +638/* Define to use TDS 7.2 by default */ │ │ │ │ │ +639/* #undef TDS72 */ │ │ │ │ │ +640 │ │ │ │ │ +641/* Define to use TDS 7.3 by default */ │ │ │ │ │ +642/* #undef TDS73 */ │ │ │ │ │ +643 │ │ │ │ │ +644/* Define to use TDS 7.4 by default */ │ │ │ │ │ +645/* #undef TDS74 */ │ │ │ │ │ +646 │ │ │ │ │ +647/* Define to 1 if your compiler supports __attribute__((destructor)). */ │ │ │ │ │ +648#define TDS_ATTRIBUTE_DESTRUCTOR 1 │ │ │ │ │ +649 │ │ │ │ │ +650/* define to constant to use for clock_gettime */ │ │ │ │ │ +651#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC │ │ │ │ │ +652 │ │ │ │ │ +653/* Define if you have pthread with mutex support */ │ │ │ │ │ +654#define TDS_HAVE_PTHREAD_MUTEX 1 │ │ │ │ │ +655 │ │ │ │ │ +656/* Define if stdio support locking */ │ │ │ │ │ +657#define TDS_HAVE_STDIO_LOCKED 1 │ │ │ │ │ +658 │ │ │ │ │ +659/* define to prefix format string used for 64bit integers */ │ │ │ │ │ +660#define TDS_I64_PREFIX "l" │ │ │ │ │ +661 │ │ │ │ │ +662/* Define if you don't care about thread safety */ │ │ │ │ │ +663/* #undef TDS_NO_THREADSAFE */ │ │ │ │ │ +664 │ │ │ │ │ +665/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */ │ │ │ │ │ +666#define TDS_SQLCOLATTRIBUTE_SQLLEN 1 │ │ │ │ │ +667 │ │ │ │ │ +668/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */ │ │ │ │ │ +669#define TDS_SQLPARAMOPTIONS_SQLLEN 1 │ │ │ │ │ +670 │ │ │ │ │ +671/* Defined if --enable-sybase-compat used */ │ │ │ │ │ +672#define TDS_SYBASE_COMPAT 1 │ │ │ │ │ +673 │ │ │ │ │ +674/* Define to 1 if your declares 'struct tm'. */ │ │ │ │ │ +675/* #undef TM_IN_SYS_TIME */ │ │ │ │ │ +676 │ │ │ │ │ +677/* Enable extensions on AIX, Interix, z/OS. */ │ │ │ │ │ +678#ifndef _ALL_SOURCE │ │ │ │ │ +679# define _ALL_SOURCE 1 │ │ │ │ │ +680#endif │ │ │ │ │ +681/* Enable general extensions on macOS. */ │ │ │ │ │ +682#ifndef _DARWIN_C_SOURCE │ │ │ │ │ +683# define _DARWIN_C_SOURCE 1 │ │ │ │ │ +684#endif │ │ │ │ │ +685/* Enable general extensions on Solaris. */ │ │ │ │ │ +686#ifndef __EXTENSIONS__ │ │ │ │ │ +687# define __EXTENSIONS__ 1 │ │ │ │ │ +688#endif │ │ │ │ │ +689/* Enable GNU extensions on systems that have them. */ │ │ │ │ │ +690#ifndef _GNU_SOURCE │ │ │ │ │ +691# define _GNU_SOURCE 1 │ │ │ │ │ +692#endif │ │ │ │ │ +693/* Enable X/Open compliant socket functions that do not require linking │ │ │ │ │ +694 with -lxnet on HP-UX 11.11. */ │ │ │ │ │ +695#ifndef _HPUX_ALT_XOPEN_SOCKET_API │ │ │ │ │ +696# define _HPUX_ALT_XOPEN_SOCKET_API 1 │ │ │ │ │ +697#endif │ │ │ │ │ +698/* Identify the host operating system as Minix. │ │ │ │ │ +699 This macro does not affect the system headers' behavior. │ │ │ │ │ +700 A future release of Autoconf may stop defining this macro. */ │ │ │ │ │ +701#ifndef _MINIX │ │ │ │ │ +702/* # undef _MINIX */ │ │ │ │ │ +703#endif │ │ │ │ │ +704/* Enable general extensions on NetBSD. │ │ │ │ │ +705 Enable NetBSD compatibility extensions on Minix. */ │ │ │ │ │ +706#ifndef _NETBSD_SOURCE │ │ │ │ │ +707# define _NETBSD_SOURCE 1 │ │ │ │ │ +708#endif │ │ │ │ │ +709/* Enable OpenBSD compatibility extensions on NetBSD. │ │ │ │ │ +710 Oddly enough, this does nothing on OpenBSD. */ │ │ │ │ │ +711#ifndef _OPENBSD_SOURCE │ │ │ │ │ +712# define _OPENBSD_SOURCE 1 │ │ │ │ │ +713#endif │ │ │ │ │ +714/* Define to 1 if needed for POSIX-compatible behavior. */ │ │ │ │ │ +715#ifndef _POSIX_SOURCE │ │ │ │ │ +716/* # undef _POSIX_SOURCE */ │ │ │ │ │ +717#endif │ │ │ │ │ +718/* Define to 2 if needed for POSIX-compatible behavior. */ │ │ │ │ │ +719#ifndef _POSIX_1_SOURCE │ │ │ │ │ +720/* # undef _POSIX_1_SOURCE */ │ │ │ │ │ +721#endif │ │ │ │ │ +722/* Enable POSIX-compatible threading on Solaris. */ │ │ │ │ │ +723#ifndef _POSIX_PTHREAD_SEMANTICS │ │ │ │ │ +724# define _POSIX_PTHREAD_SEMANTICS 1 │ │ │ │ │ +725#endif │ │ │ │ │ +726/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ │ │ │ │ │ +727#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ │ │ │ │ │ +728# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1 │ │ │ │ │ +729#endif │ │ │ │ │ +730/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ │ │ │ │ │ +731#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ │ │ │ │ │ +732# define __STDC_WANT_IEC_60559_BFP_EXT__ 1 │ │ │ │ │ +733#endif │ │ │ │ │ +734/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ │ │ │ │ │ +735#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ │ │ │ │ │ +736# define __STDC_WANT_IEC_60559_DFP_EXT__ 1 │ │ │ │ │ +737#endif │ │ │ │ │ +738/* Enable extensions specified by C23 Annex F. */ │ │ │ │ │ +739#ifndef __STDC_WANT_IEC_60559_EXT__ │ │ │ │ │ +740# define __STDC_WANT_IEC_60559_EXT__ 1 │ │ │ │ │ +741#endif │ │ │ │ │ +742/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ │ │ │ │ │ +743#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ │ │ │ │ │ +744# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1 │ │ │ │ │ +745#endif │ │ │ │ │ +746/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. │ │ │ │ │ +*/ │ │ │ │ │ +747#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ │ │ │ │ │ +748# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1 │ │ │ │ │ +749#endif │ │ │ │ │ +750/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ │ │ │ │ │ +751#ifndef __STDC_WANT_LIB_EXT2__ │ │ │ │ │ +752# define __STDC_WANT_LIB_EXT2__ 1 │ │ │ │ │ +753#endif │ │ │ │ │ +754/* Enable extensions specified by ISO/IEC 24747:2009. */ │ │ │ │ │ +755#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ │ │ │ │ │ +756# define __STDC_WANT_MATH_SPEC_FUNCS__ 1 │ │ │ │ │ +757#endif │ │ │ │ │ +758/* Enable extensions on HP NonStop. */ │ │ │ │ │ +759#ifndef _TANDEM_SOURCE │ │ │ │ │ +760# define _TANDEM_SOURCE 1 │ │ │ │ │ +761#endif │ │ │ │ │ +762/* Enable X/Open extensions. Define to 500 only if necessary │ │ │ │ │ +763 to make mbstate_t available. */ │ │ │ │ │ +764#ifndef _XOPEN_SOURCE │ │ │ │ │ +765/* # undef _XOPEN_SOURCE */ │ │ │ │ │ +766#endif │ │ │ │ │ +767 │ │ │ │ │ +768 │ │ │ │ │ +769/* Version number of package */ │ │ │ │ │ +770#define VERSION "1.5.5" │ │ │ │ │ +771 │ │ │ │ │ +772/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most │ │ │ │ │ +773 significant byte first (like Motorola and SPARC, unlike Intel). */ │ │ │ │ │ +774#if defined AC_APPLE_UNIVERSAL_BUILD │ │ │ │ │ +775# if defined __BIG_ENDIAN__ │ │ │ │ │ +776# define WORDS_BIGENDIAN 1 │ │ │ │ │ +777# endif │ │ │ │ │ +778#else │ │ │ │ │ +779# ifndef WORDS_BIGENDIAN │ │ │ │ │ +780/* # undef WORDS_BIGENDIAN */ │ │ │ │ │ +781# endif │ │ │ │ │ +782#endif │ │ │ │ │ +783 │ │ │ │ │ +784/* Number of bits in a file offset, on hosts where this is settable. */ │ │ │ │ │ +785/* #undef _FILE_OFFSET_BITS */ │ │ │ │ │ +786 │ │ │ │ │ +787/* Define to 1 if necessary to make fseeko visible. */ │ │ │ │ │ +788/* #undef _LARGEFILE_SOURCE */ │ │ │ │ │ +789 │ │ │ │ │ +790/* Define to 1 on platforms where this makes off_t a 64-bit type. */ │ │ │ │ │ +791/* #undef _LARGE_FILES */ │ │ │ │ │ +792 │ │ │ │ │ +793/* Number of bits in time_t, on hosts where this is settable. */ │ │ │ │ │ +794/* #undef _TIME_BITS */ │ │ │ │ │ +795 │ │ │ │ │ +796/* Define to 1 on platforms where this makes time_t a 64-bit type. */ │ │ │ │ │ +797/* #undef __MINGW_USE_VC2005_COMPAT */ │ │ │ │ │ +798 │ │ │ │ │ +799/* Define to empty if 'const' does not conform to ANSI C. */ │ │ │ │ │ +800/* #undef const */ │ │ │ │ │ +801 │ │ │ │ │ +802/* Define to '__inline__' or '__inline' if that's what the C compiler │ │ │ │ │ +803 calls it, or to nothing if 'inline' is not supported under any name. */ │ │ │ │ │ +804#ifndef __cplusplus │ │ │ │ │ +805/* #undef inline */ │ │ │ │ │ +806#endif │ │ │ │ │ +807 │ │ │ │ │ +808/* Define as 'unsigned int' if doesn't define. */ │ │ │ │ │ +809/* #undef size_t */ │ │ │ │ │ +810 │ │ │ │ │ +811/* type to use in place of socklen_t if not defined */ │ │ │ │ │ +812/* #undef socklen_t */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00383_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/syberror.h Source File │ │ │ │ +FreeTDS API: include/sybfront.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,15 +74,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
syberror.h
│ │ │ │ +
sybfront.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ @@ -96,49 +96,42 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _syberror_h_
│ │ │ │ -
21#define _syberror_h_
│ │ │ │ +
20#ifndef SYBFRONT_h
│ │ │ │ +
21#define SYBFRONT_h
│ │ │ │
22
│ │ │ │ -
23#ifdef __cplusplus
│ │ │ │ -
24extern "C"
│ │ │ │ -
25{
│ │ │ │ -
26#if 0
│ │ │ │ -
27}
│ │ │ │ -
28#endif
│ │ │ │ -
29#endif
│ │ │ │ -
30
│ │ │ │ -
31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12:42:12 freddy77 Exp $";
│ │ │ │ -
32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, no_unused_syberror_h_warn };
│ │ │ │ -
33
│ │ │ │ -
34/* severity levels, gleaned from google */
│ │ │ │ -
35#define EXINFO 1
│ │ │ │ -
36#define EXUSER 2
│ │ │ │ -
37#define EXNONFATAL 3
│ │ │ │ -
38#define EXCONVERSION 4
│ │ │ │ -
39#define EXSERVER 5
│ │ │ │ -
40#define EXTIME 6
│ │ │ │ -
41#define EXPROGRAM 7
│ │ │ │ -
42#define EXRESOURCE 8
│ │ │ │ -
43#define EXCOMM 9
│ │ │ │ -
44#define EXFATAL 10
│ │ │ │ -
45#define EXCONSISTENCY 11
│ │ │ │ -
46
│ │ │ │ -
47#ifdef __cplusplus
│ │ │ │ -
48#if 0
│ │ │ │ -
49{
│ │ │ │ -
50#endif
│ │ │ │ -
51}
│ │ │ │ -
52#endif
│ │ │ │ -
53
│ │ │ │ -
54#endif
│ │ │ │ +
23#include "sybdb.h"
│ │ │ │ +
24
│ │ │ │ +
25#ifdef __cplusplus
│ │ │ │ +
26extern "C"
│ │ │ │ +
27{
│ │ │ │ +
28#if 0
│ │ │ │ +
29}
│ │ │ │ +
30#endif
│ │ │ │ +
31#endif
│ │ │ │ +
32
│ │ │ │ +
33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12:42:12 freddy77 Exp $";
│ │ │ │ +
34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, no_unused_sybfront_h_warn };
│ │ │ │ +
35
│ │ │ │ +
36
│ │ │ │ +
37
│ │ │ │ +
38#ifdef __cplusplus
│ │ │ │ +
39#if 0
│ │ │ │ +
40{
│ │ │ │ +
41#endif
│ │ │ │ +
42}
│ │ │ │ +
43#endif
│ │ │ │ +
44
│ │ │ │ +
45
│ │ │ │ +
46#endif
│ │ │ │ +
Primary include file for db-lib applications.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -syberror.h │ │ │ │ │ +sybfront.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ 2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ @@ -19,46 +19,40 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _syberror_h_ │ │ │ │ │ -21#define _syberror_h_ │ │ │ │ │ +20#ifndef SYBFRONT_h │ │ │ │ │ +21#define SYBFRONT_h │ │ │ │ │ 22 │ │ │ │ │ -23#ifdef __cplusplus │ │ │ │ │ -24extern "C" │ │ │ │ │ -25{ │ │ │ │ │ -26#if 0 │ │ │ │ │ -27} │ │ │ │ │ -28#endif │ │ │ │ │ -29#endif │ │ │ │ │ -30 │ │ │ │ │ -31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12: │ │ │ │ │ +23#include "sybdb.h" │ │ │ │ │ +24 │ │ │ │ │ +25#ifdef __cplusplus │ │ │ │ │ +26extern "C" │ │ │ │ │ +27{ │ │ │ │ │ +28#if 0 │ │ │ │ │ +29} │ │ │ │ │ +30#endif │ │ │ │ │ +31#endif │ │ │ │ │ +32 │ │ │ │ │ +33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12: │ │ │ │ │ 42:12 freddy77 Exp $"; │ │ │ │ │ -32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, │ │ │ │ │ -no_unused_syberror_h_warn }; │ │ │ │ │ -33 │ │ │ │ │ -34/* severity levels, gleaned from google */ │ │ │ │ │ -35#define EXINFO 1 │ │ │ │ │ -36#define EXUSER 2 │ │ │ │ │ -37#define EXNONFATAL 3 │ │ │ │ │ -38#define EXCONVERSION 4 │ │ │ │ │ -39#define EXSERVER 5 │ │ │ │ │ -40#define EXTIME 6 │ │ │ │ │ -41#define EXPROGRAM 7 │ │ │ │ │ -42#define EXRESOURCE 8 │ │ │ │ │ -43#define EXCOMM 9 │ │ │ │ │ -44#define EXFATAL 10 │ │ │ │ │ -45#define EXCONSISTENCY 11 │ │ │ │ │ -46 │ │ │ │ │ -47#ifdef __cplusplus │ │ │ │ │ -48#if 0 │ │ │ │ │ -49{ │ │ │ │ │ -50#endif │ │ │ │ │ -51} │ │ │ │ │ -52#endif │ │ │ │ │ -53 │ │ │ │ │ -54#endif │ │ │ │ │ +34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, │ │ │ │ │ +no_unused_sybfront_h_warn }; │ │ │ │ │ +35 │ │ │ │ │ +36 │ │ │ │ │ +37 │ │ │ │ │ +38#ifdef __cplusplus │ │ │ │ │ +39#if 0 │ │ │ │ │ +40{ │ │ │ │ │ +41#endif │ │ │ │ │ +42} │ │ │ │ │ +43#endif │ │ │ │ │ +44 │ │ │ │ │ +45 │ │ │ │ │ +46#endif │ │ │ │ │ +sybdb.h │ │ │ │ │ +Primary include file for db-lib applications. │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00386_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/sqlfront.h Source File │ │ │ │ +FreeTDS API: include/sqldb.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,78 +74,198 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
sqlfront.h
│ │ │ │ +
sqldb.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2011 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21#ifndef SQLFRONT_h
│ │ │ │ -
22#define SQLFRONT_h
│ │ │ │ -
23
│ │ │ │ -
24#include "./sybfront.h"
│ │ │ │ -
25
│ │ │ │ -
26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11:06:31 freddy77 Exp $";
│ │ │ │ -
27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, no_unused_sqlfront_h_warn };
│ │ │ │ -
28
│ │ │ │ -
29typedef DBPROCESS * PDBPROCESS;
│ │ │ │ -
30typedef LOGINREC * PLOGINREC;
│ │ │ │ -
31typedef DBCURSOR * PDBCURSOR;
│ │ │ │ -
32
│ │ │ │ -
33typedef int * LPINT;
│ │ │ │ -
34typedef char * LPSTR;
│ │ │ │ -
35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)
│ │ │ │ -
36typedef BYTE * LPBYTE;
│ │ │ │ -
37#endif
│ │ │ │ -
38typedef void * LPVOID;
│ │ │ │ -
39typedef const char * LPCSTR;
│ │ │ │ -
40
│ │ │ │ -
41typedef const LPINT LPCINT;
│ │ │ │ -
42#ifndef _LPCBYTE_DEFINED
│ │ │ │ -
43#define _LPCBYTE_DEFINED
│ │ │ │ -
44typedef const BYTE * LPCBYTE;
│ │ │ │ -
45#endif
│ │ │ │ -
46typedef USHORT * LPUSHORT;
│ │ │ │ -
47typedef const LPUSHORT LPCUSHORT;
│ │ │ │ -
48typedef DBINT * LPDBINT;
│ │ │ │ -
49typedef const LPDBINT LPCDBINT;
│ │ │ │ -
50typedef DBBINARY * LPDBBINARY;
│ │ │ │ -
51typedef const LPDBBINARY LPCDBBINARY;
│ │ │ │ -
52typedef DBDATEREC * LPDBDATEREC;
│ │ │ │ -
53typedef const LPDBDATEREC LPCDBDATEREC;
│ │ │ │ -
54typedef DBDATETIME * LPDBDATETIME;
│ │ │ │ -
55typedef const LPDBDATETIME LPCDBDATETIME;
│ │ │ │ -
56
│ │ │ │ -
57#endif
│ │ │ │ -
Definition bsqlodbc.c:100
│ │ │ │ -
Definition dblib.h:123
│ │ │ │ -
Definition sybdb.h:296
│ │ │ │ -
Definition sybdb.h:475
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef SQLDB_h
│ │ │ │ +
21#define SQLDB_h
│ │ │ │ +
22
│ │ │ │ +
23#include "./sybdb.h"
│ │ │ │ +
24
│ │ │ │ +
25#define SQLCHAR SYBCHAR
│ │ │ │ +
26#define SQLVARCHAR SYBVARCHAR
│ │ │ │ +
27#define SQLINTN SYBINTN
│ │ │ │ +
28#define SQLINT1 SYBINT1
│ │ │ │ +
29#define SQLINT2 SYBINT2
│ │ │ │ +
30#define SQLINT4 SYBINT4
│ │ │ │ +
31#define SQLINT8 SYBINT8
│ │ │ │ +
32#define SQLFLT8 SYBFLT8
│ │ │ │ +
33#define SQLDATETIME SYBDATETIME
│ │ │ │ +
34#define SQLBIT SYBBIT
│ │ │ │ +
35#define SQLTEXT SYBTEXT
│ │ │ │ +
36#define SQLIMAGE SYBIMAGE
│ │ │ │ +
37#define SQLMONEY4 SYBMONEY4
│ │ │ │ +
38#define SQLMONEY SYBMONEY
│ │ │ │ +
39#define SQLDATETIM4 SYBDATETIME4
│ │ │ │ +
40#define SQLFLT4 SYBREAL
│ │ │ │ +
41#define SQLBINARY SYBBINARY
│ │ │ │ +
42#define SQLVARBINARY SYBVARBINARY
│ │ │ │ +
43#define SQLNUMERIC SYBNUMERIC
│ │ │ │ +
44#define SQLDECIMAL SYBDECIMAL
│ │ │ │ +
45#define SQLFLTN SYBFLTN
│ │ │ │ +
46#define SQLMONEYN SYBMONEYN
│ │ │ │ +
47#define SQLDATETIMN SYBDATETIMN
│ │ │ │ +
48#define SQLVOID SYBVOID
│ │ │ │ +
49
│ │ │ │ +
50#define SMALLDATETIBIND SMALLDATETIMEBIND
│ │ │ │ +
51
│ │ │ │ +
52#define DBERRHANDLE_PROC EHANDLEFUNC
│ │ │ │ +
53#define DBMSGHANDLE_PROC MHANDLEFUNC
│ │ │ │ +
54
│ │ │ │ +
55/* DB-Library errors as defined by Microsoft */
│ │ │ │ +
56#define SQLEMEM SYBEMEM
│ │ │ │ +
57#define SQLENULL SYBENULL
│ │ │ │ +
58#define SQLENLOG SYBENLOG
│ │ │ │ +
59#define SQLEPWD SYBEPWD
│ │ │ │ +
60#define SQLECONN SYBECONN
│ │ │ │ +
61#define SQLEDDNE SYBEDDNE
│ │ │ │ +
62#define SQLENULLO SYBENULLO
│ │ │ │ +
63#define SQLESMSG SYBESMSG
│ │ │ │ +
64#define SQLEBTOK SYBEBTOK
│ │ │ │ +
65#define SQLENSPE SYBENSPE
│ │ │ │ +
66#define SQLEREAD SYBEREAD
│ │ │ │ +
67#define SQLECNOR SYBECNOR
│ │ │ │ +
68#define SQLETSIT SYBETSIT
│ │ │ │ +
69#define SQLEPARM SYBEPARM
│ │ │ │ +
70#define SQLEAUTN SYBEAUTN
│ │ │ │ +
71#define SQLECOFL SYBECOFL
│ │ │ │ +
72#define SQLERDCN SYBERDCN
│ │ │ │ +
73#define SQLEICN SYBEICN
│ │ │ │ +
74#define SQLECLOS SYBECLOS
│ │ │ │ +
75#define SQLENTXT SYBENTXT
│ │ │ │ +
76#define SQLEDNTI SYBEDNTI
│ │ │ │ +
77#define SQLETMTD SYBETMTD
│ │ │ │ +
78#define SQLEASEC SYBEASEC
│ │ │ │ +
79#define SQLENTLL SYBENTLL
│ │ │ │ +
80#define SQLETIME SYBETIME
│ │ │ │ +
81#define SQLEWRIT SYBEWRIT
│ │ │ │ +
82#define SQLEMODE SYBEMODE
│ │ │ │ +
83#define SQLEOOB SYBEOOB
│ │ │ │ +
84#define SQLEITIM SYBEITIM
│ │ │ │ +
85#define SQLEDBPS SYBEDBPS
│ │ │ │ +
86#define SQLEIOPT SYBEIOPT
│ │ │ │ +
87#define SQLEASNL SYBEASNL
│ │ │ │ +
88#define SQLEASUL SYBEASUL
│ │ │ │ +
89#define SQLENPRM SYBENPRM
│ │ │ │ +
90#define SQLEDBOP SYBEDBOP
│ │ │ │ +
91#define SQLENSIP SYBENSIP
│ │ │ │ +
92#define SQLECNULL SYBECNULL
│ │ │ │ +
93#define SQLESEOF SYBESEOF
│ │ │ │ +
94#define SQLERPND SYBERPND
│ │ │ │ +
95#define SQLECSYN SYBECSYN
│ │ │ │ +
96#define SQLENONET SYBENONET
│ │ │ │ +
97#define SQLEBTYP SYBEBTYP
│ │ │ │ +
98#define SQLEABNC SYBEABNC
│ │ │ │ +
99#define SQLEABMT SYBEABMT
│ │ │ │ +
100#define SQLEABNP SYBEABNP
│ │ │ │ +
101#define SQLEBNCR SYBEBNCR
│ │ │ │ +
102#define SQLEAAMT SYBEAAMT
│ │ │ │ +
103#define SQLENXID SYBENXID
│ │ │ │ +
104#define SQLEIFNB SYBEIFNB
│ │ │ │ +
105#define SQLEKBCO SYBEKBCO
│ │ │ │ +
106#define SQLEBBCI SYBEBBCI
│ │ │ │ +
107#define SQLEKBCI SYBEKBCI
│ │ │ │ +
108#define SQLEBCWE SYBEBCWE
│ │ │ │ +
109#define SQLEBCNN SYBEBCNN
│ │ │ │ +
110#define SQLEBCOR SYBEBCOR
│ │ │ │ +
111#define SQLEBCPI SYBEBCPI
│ │ │ │ +
112#define SQLEBCPN SYBEBCPN
│ │ │ │ +
113#define SQLEBCPB SYBEBCPB
│ │ │ │ +
114#define SQLEVDPT SYBEVDPT
│ │ │ │ +
115#define SQLEBIVI SYBEBIVI
│ │ │ │ +
116#define SQLEBCBC SYBEBCBC
│ │ │ │ +
117#define SQLEBCFO SYBEBCFO
│ │ │ │ +
118#define SQLEBCVH SYBEBCVH
│ │ │ │ +
119#define SQLEBCUO SYBEBCUO
│ │ │ │ +
120#define SQLEBUOE SYBEBUOE
│ │ │ │ +
121#define SQLEBWEF SYBEBWEF
│ │ │ │ +
122#define SQLEBTMT SYBEBTMT
│ │ │ │ +
123#define SQLEBEOF SYBEBEOF
│ │ │ │ +
124#define SQLEBCSI SYBEBCSI
│ │ │ │ +
125#define SQLEPNUL SYBEPNUL
│ │ │ │ +
126#define SQLEBSKERR SYBEBSKERR
│ │ │ │ +
127#define SQLEBDIO SYBEBDIO
│ │ │ │ +
128#define SQLEBCNT SYBEBCNT
│ │ │ │ +
129#define SQLEMDBP SYBEMDBP
│ │ │ │ +
130#define SQLINIT SYBINIT
│ │ │ │ +
131#define SQLCRSINV SYBCRSINV
│ │ │ │ +
132#define SQLCRSCMD SYBCRSCMD
│ │ │ │ +
133#define SQLCRSNOIND SYBCRSNOIND
│ │ │ │ +
134#define SQLCRSDIS SYBCRSDIS
│ │ │ │ +
135#define SQLCRSAGR SYBCRSAGR
│ │ │ │ +
136#define SQLCRSORD SYBCRSORD
│ │ │ │ +
137#define SQLCRSMEM SYBCRSMEM
│ │ │ │ +
138#define SQLCRSBSKEY SYBCRSBSKEY
│ │ │ │ +
139#define SQLCRSNORES SYBCRSNORES
│ │ │ │ +
140#define SQLCRSVIEW SYBCRSVIEW
│ │ │ │ +
141#define SQLCRSBUFR SYBCRSBUFR
│ │ │ │ +
142#define SQLCRSFROWN SYBCRSFROWN
│ │ │ │ +
143#define SQLCRSBROL SYBCRSBROL
│ │ │ │ +
144#define SQLCRSFRAND SYBCRSFRAND
│ │ │ │ +
145#define SQLCRSFLAST SYBCRSFLAST
│ │ │ │ +
146#define SQLCRSRO SYBCRSRO
│ │ │ │ +
147#define SQLCRSTAB SYBCRSTAB
│ │ │ │ +
148#define SQLCRSUPDTAB SYBCRSUPDTAB
│ │ │ │ +
149#define SQLCRSUPDNB SYBCRSUPDNB
│ │ │ │ +
150#define SQLCRSVIIND SYBCRSVIIND
│ │ │ │ +
151#define SQLCRSNOUPD SYBCRSNOUPD
│ │ │ │ +
152#define SQLCRSOS SYBCRSOS
│ │ │ │ +
153#define SQLEBCSA SYBEBCSA
│ │ │ │ +
154#define SQLEBCRO SYBEBCRO
│ │ │ │ +
155#define SQLEBCNE SYBEBCNE
│ │ │ │ +
156#define SQLEBCSK SYBEBCSK
│ │ │ │ +
157#define SQLEUVBF SYBEUVBF
│ │ │ │ +
158#define SQLEBIHC SYBEBIHC
│ │ │ │ +
159#define SQLEBWFF SYBEBWFF
│ │ │ │ +
160#define SQLNUMVAL SYBNUMVAL
│ │ │ │ +
161#define SQLEOLDVR SYBEOLDVR
│ │ │ │ +
162#define SQLEBCPS SYBEBCPS
│ │ │ │ +
163#define SQLEDTC SYBEDTC
│ │ │ │ +
164#define SQLENOTIMPL SYBENOTIMPL
│ │ │ │ +
165#define SQLENONFLOAT SYBENONFLOAT
│ │ │ │ +
166#define SQLECONNFB SYBECONNFB
│ │ │ │ +
167
│ │ │ │ +
168
│ │ │ │ +
169#define dbfreelogin(x) dbloginfree((x))
│ │ │ │ +
170
│ │ │ │ +
171#define dbprocerrhandle(p, h) dberrhandle((h))
│ │ │ │ +
172#define dbprocmsghandle(p, h) dbmsghandle((h))
│ │ │ │ +
173
│ │ │ │ +
174#define dbwinexit()
│ │ │ │ +
175
│ │ │ │ +
176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 jklowden Exp $";
│ │ │ │ +
177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_unused_sqldb_h_warn };
│ │ │ │ +
178
│ │ │ │ +
179
│ │ │ │ +
180#endif
│ │ │ │ +
Primary include file for db-lib applications.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,75 +1,192 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -sqlfront.h │ │ │ │ │ +sqldb.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ 2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2011 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21#ifndef SQLFRONT_h │ │ │ │ │ -22#define SQLFRONT_h │ │ │ │ │ -23 │ │ │ │ │ -24#include "./sybfront.h" │ │ │ │ │ -25 │ │ │ │ │ -26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11: │ │ │ │ │ -06:31 freddy77 Exp $"; │ │ │ │ │ -27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, │ │ │ │ │ -no_unused_sqlfront_h_warn }; │ │ │ │ │ -28 │ │ │ │ │ -29typedef DBPROCESS * PDBPROCESS; │ │ │ │ │ -30typedef LOGINREC * PLOGINREC; │ │ │ │ │ -31typedef DBCURSOR * PDBCURSOR; │ │ │ │ │ -32 │ │ │ │ │ -33typedef int * LPINT; │ │ │ │ │ -34typedef char * LPSTR; │ │ │ │ │ -35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API) │ │ │ │ │ -36typedef BYTE * LPBYTE; │ │ │ │ │ -37#endif │ │ │ │ │ -38typedef void * LPVOID; │ │ │ │ │ -39typedef const char * LPCSTR; │ │ │ │ │ -40 │ │ │ │ │ -41typedef const LPINT LPCINT; │ │ │ │ │ -42#ifndef _LPCBYTE_DEFINED │ │ │ │ │ -43#define _LPCBYTE_DEFINED │ │ │ │ │ -44typedef const BYTE * LPCBYTE; │ │ │ │ │ -45#endif │ │ │ │ │ -46typedef USHORT * LPUSHORT; │ │ │ │ │ -47typedef const LPUSHORT LPCUSHORT; │ │ │ │ │ -48typedef DBINT * LPDBINT; │ │ │ │ │ -49typedef const LPDBINT LPCDBINT; │ │ │ │ │ -50typedef DBBINARY * LPDBBINARY; │ │ │ │ │ -51typedef const LPDBBINARY LPCDBBINARY; │ │ │ │ │ -52typedef DBDATEREC * LPDBDATEREC; │ │ │ │ │ -53typedef const LPDBDATEREC LPCDBDATEREC; │ │ │ │ │ -54typedef DBDATETIME * LPDBDATETIME; │ │ │ │ │ -55typedef const LPDBDATETIME LPCDBDATETIME; │ │ │ │ │ -56 │ │ │ │ │ -57#endif │ │ │ │ │ -LOGINREC │ │ │ │ │ -Definition bsqlodbc.c:100 │ │ │ │ │ -tds_dblib_dbprocess │ │ │ │ │ -Definition dblib.h:123 │ │ │ │ │ -DBDATETIME │ │ │ │ │ -Definition sybdb.h:296 │ │ │ │ │ -tds_sybase_dbdaterec │ │ │ │ │ -Definition sybdb.h:475 │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef SQLDB_h │ │ │ │ │ +21#define SQLDB_h │ │ │ │ │ +22 │ │ │ │ │ +23#include "./sybdb.h" │ │ │ │ │ +24 │ │ │ │ │ +25#define SQLCHAR SYBCHAR │ │ │ │ │ +26#define SQLVARCHAR SYBVARCHAR │ │ │ │ │ +27#define SQLINTN SYBINTN │ │ │ │ │ +28#define SQLINT1 SYBINT1 │ │ │ │ │ +29#define SQLINT2 SYBINT2 │ │ │ │ │ +30#define SQLINT4 SYBINT4 │ │ │ │ │ +31#define SQLINT8 SYBINT8 │ │ │ │ │ +32#define SQLFLT8 SYBFLT8 │ │ │ │ │ +33#define SQLDATETIME SYBDATETIME │ │ │ │ │ +34#define SQLBIT SYBBIT │ │ │ │ │ +35#define SQLTEXT SYBTEXT │ │ │ │ │ +36#define SQLIMAGE SYBIMAGE │ │ │ │ │ +37#define SQLMONEY4 SYBMONEY4 │ │ │ │ │ +38#define SQLMONEY SYBMONEY │ │ │ │ │ +39#define SQLDATETIM4 SYBDATETIME4 │ │ │ │ │ +40#define SQLFLT4 SYBREAL │ │ │ │ │ +41#define SQLBINARY SYBBINARY │ │ │ │ │ +42#define SQLVARBINARY SYBVARBINARY │ │ │ │ │ +43#define SQLNUMERIC SYBNUMERIC │ │ │ │ │ +44#define SQLDECIMAL SYBDECIMAL │ │ │ │ │ +45#define SQLFLTN SYBFLTN │ │ │ │ │ +46#define SQLMONEYN SYBMONEYN │ │ │ │ │ +47#define SQLDATETIMN SYBDATETIMN │ │ │ │ │ +48#define SQLVOID SYBVOID │ │ │ │ │ +49 │ │ │ │ │ +50#define SMALLDATETIBIND SMALLDATETIMEBIND │ │ │ │ │ +51 │ │ │ │ │ +52#define DBERRHANDLE_PROC EHANDLEFUNC │ │ │ │ │ +53#define DBMSGHANDLE_PROC MHANDLEFUNC │ │ │ │ │ +54 │ │ │ │ │ +55/* DB-Library errors as defined by Microsoft */ │ │ │ │ │ +56#define SQLEMEM SYBEMEM │ │ │ │ │ +57#define SQLENULL SYBENULL │ │ │ │ │ +58#define SQLENLOG SYBENLOG │ │ │ │ │ +59#define SQLEPWD SYBEPWD │ │ │ │ │ +60#define SQLECONN SYBECONN │ │ │ │ │ +61#define SQLEDDNE SYBEDDNE │ │ │ │ │ +62#define SQLENULLO SYBENULLO │ │ │ │ │ +63#define SQLESMSG SYBESMSG │ │ │ │ │ +64#define SQLEBTOK SYBEBTOK │ │ │ │ │ +65#define SQLENSPE SYBENSPE │ │ │ │ │ +66#define SQLEREAD SYBEREAD │ │ │ │ │ +67#define SQLECNOR SYBECNOR │ │ │ │ │ +68#define SQLETSIT SYBETSIT │ │ │ │ │ +69#define SQLEPARM SYBEPARM │ │ │ │ │ +70#define SQLEAUTN SYBEAUTN │ │ │ │ │ +71#define SQLECOFL SYBECOFL │ │ │ │ │ +72#define SQLERDCN SYBERDCN │ │ │ │ │ +73#define SQLEICN SYBEICN │ │ │ │ │ +74#define SQLECLOS SYBECLOS │ │ │ │ │ +75#define SQLENTXT SYBENTXT │ │ │ │ │ +76#define SQLEDNTI SYBEDNTI │ │ │ │ │ +77#define SQLETMTD SYBETMTD │ │ │ │ │ +78#define SQLEASEC SYBEASEC │ │ │ │ │ +79#define SQLENTLL SYBENTLL │ │ │ │ │ +80#define SQLETIME SYBETIME │ │ │ │ │ +81#define SQLEWRIT SYBEWRIT │ │ │ │ │ +82#define SQLEMODE SYBEMODE │ │ │ │ │ +83#define SQLEOOB SYBEOOB │ │ │ │ │ +84#define SQLEITIM SYBEITIM │ │ │ │ │ +85#define SQLEDBPS SYBEDBPS │ │ │ │ │ +86#define SQLEIOPT SYBEIOPT │ │ │ │ │ +87#define SQLEASNL SYBEASNL │ │ │ │ │ +88#define SQLEASUL SYBEASUL │ │ │ │ │ +89#define SQLENPRM SYBENPRM │ │ │ │ │ +90#define SQLEDBOP SYBEDBOP │ │ │ │ │ +91#define SQLENSIP SYBENSIP │ │ │ │ │ +92#define SQLECNULL SYBECNULL │ │ │ │ │ +93#define SQLESEOF SYBESEOF │ │ │ │ │ +94#define SQLERPND SYBERPND │ │ │ │ │ +95#define SQLECSYN SYBECSYN │ │ │ │ │ +96#define SQLENONET SYBENONET │ │ │ │ │ +97#define SQLEBTYP SYBEBTYP │ │ │ │ │ +98#define SQLEABNC SYBEABNC │ │ │ │ │ +99#define SQLEABMT SYBEABMT │ │ │ │ │ +100#define SQLEABNP SYBEABNP │ │ │ │ │ +101#define SQLEBNCR SYBEBNCR │ │ │ │ │ +102#define SQLEAAMT SYBEAAMT │ │ │ │ │ +103#define SQLENXID SYBENXID │ │ │ │ │ +104#define SQLEIFNB SYBEIFNB │ │ │ │ │ +105#define SQLEKBCO SYBEKBCO │ │ │ │ │ +106#define SQLEBBCI SYBEBBCI │ │ │ │ │ +107#define SQLEKBCI SYBEKBCI │ │ │ │ │ +108#define SQLEBCWE SYBEBCWE │ │ │ │ │ +109#define SQLEBCNN SYBEBCNN │ │ │ │ │ +110#define SQLEBCOR SYBEBCOR │ │ │ │ │ +111#define SQLEBCPI SYBEBCPI │ │ │ │ │ +112#define SQLEBCPN SYBEBCPN │ │ │ │ │ +113#define SQLEBCPB SYBEBCPB │ │ │ │ │ +114#define SQLEVDPT SYBEVDPT │ │ │ │ │ +115#define SQLEBIVI SYBEBIVI │ │ │ │ │ +116#define SQLEBCBC SYBEBCBC │ │ │ │ │ +117#define SQLEBCFO SYBEBCFO │ │ │ │ │ +118#define SQLEBCVH SYBEBCVH │ │ │ │ │ +119#define SQLEBCUO SYBEBCUO │ │ │ │ │ +120#define SQLEBUOE SYBEBUOE │ │ │ │ │ +121#define SQLEBWEF SYBEBWEF │ │ │ │ │ +122#define SQLEBTMT SYBEBTMT │ │ │ │ │ +123#define SQLEBEOF SYBEBEOF │ │ │ │ │ +124#define SQLEBCSI SYBEBCSI │ │ │ │ │ +125#define SQLEPNUL SYBEPNUL │ │ │ │ │ +126#define SQLEBSKERR SYBEBSKERR │ │ │ │ │ +127#define SQLEBDIO SYBEBDIO │ │ │ │ │ +128#define SQLEBCNT SYBEBCNT │ │ │ │ │ +129#define SQLEMDBP SYBEMDBP │ │ │ │ │ +130#define SQLINIT SYBINIT │ │ │ │ │ +131#define SQLCRSINV SYBCRSINV │ │ │ │ │ +132#define SQLCRSCMD SYBCRSCMD │ │ │ │ │ +133#define SQLCRSNOIND SYBCRSNOIND │ │ │ │ │ +134#define SQLCRSDIS SYBCRSDIS │ │ │ │ │ +135#define SQLCRSAGR SYBCRSAGR │ │ │ │ │ +136#define SQLCRSORD SYBCRSORD │ │ │ │ │ +137#define SQLCRSMEM SYBCRSMEM │ │ │ │ │ +138#define SQLCRSBSKEY SYBCRSBSKEY │ │ │ │ │ +139#define SQLCRSNORES SYBCRSNORES │ │ │ │ │ +140#define SQLCRSVIEW SYBCRSVIEW │ │ │ │ │ +141#define SQLCRSBUFR SYBCRSBUFR │ │ │ │ │ +142#define SQLCRSFROWN SYBCRSFROWN │ │ │ │ │ +143#define SQLCRSBROL SYBCRSBROL │ │ │ │ │ +144#define SQLCRSFRAND SYBCRSFRAND │ │ │ │ │ +145#define SQLCRSFLAST SYBCRSFLAST │ │ │ │ │ +146#define SQLCRSRO SYBCRSRO │ │ │ │ │ +147#define SQLCRSTAB SYBCRSTAB │ │ │ │ │ +148#define SQLCRSUPDTAB SYBCRSUPDTAB │ │ │ │ │ +149#define SQLCRSUPDNB SYBCRSUPDNB │ │ │ │ │ +150#define SQLCRSVIIND SYBCRSVIIND │ │ │ │ │ +151#define SQLCRSNOUPD SYBCRSNOUPD │ │ │ │ │ +152#define SQLCRSOS SYBCRSOS │ │ │ │ │ +153#define SQLEBCSA SYBEBCSA │ │ │ │ │ +154#define SQLEBCRO SYBEBCRO │ │ │ │ │ +155#define SQLEBCNE SYBEBCNE │ │ │ │ │ +156#define SQLEBCSK SYBEBCSK │ │ │ │ │ +157#define SQLEUVBF SYBEUVBF │ │ │ │ │ +158#define SQLEBIHC SYBEBIHC │ │ │ │ │ +159#define SQLEBWFF SYBEBWFF │ │ │ │ │ +160#define SQLNUMVAL SYBNUMVAL │ │ │ │ │ +161#define SQLEOLDVR SYBEOLDVR │ │ │ │ │ +162#define SQLEBCPS SYBEBCPS │ │ │ │ │ +163#define SQLEDTC SYBEDTC │ │ │ │ │ +164#define SQLENOTIMPL SYBENOTIMPL │ │ │ │ │ +165#define SQLENONFLOAT SYBENONFLOAT │ │ │ │ │ +166#define SQLECONNFB SYBECONNFB │ │ │ │ │ +167 │ │ │ │ │ +168 │ │ │ │ │ +169#define dbfreelogin(x) dbloginfree((x)) │ │ │ │ │ +170 │ │ │ │ │ +171#define dbprocerrhandle(p, h) dberrhandle((h)) │ │ │ │ │ +172#define dbprocmsghandle(p, h) dbmsghandle((h)) │ │ │ │ │ +173 │ │ │ │ │ +174#define dbwinexit() │ │ │ │ │ +175 │ │ │ │ │ +176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 │ │ │ │ │ +jklowden Exp $"; │ │ │ │ │ +177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_ │ │ │ │ │ +unused_sqldb_h_warn }; │ │ │ │ │ +178 │ │ │ │ │ +179 │ │ │ │ │ +180#endif │ │ │ │ │ +sybdb.h │ │ │ │ │ +Primary include file for db-lib applications. │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00389_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/time.h Source File │ │ │ │ +FreeTDS API: include/cstypes.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,26 +70,291 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
time.h
│ │ │ │ +
cstypes.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#if HAVE_SYS_TIME_H
│ │ │ │ -
2# include <sys/time.h>
│ │ │ │ -
3#endif
│ │ │ │ -
4
│ │ │ │ -
5#include <time.h>
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _cstypes_h_
│ │ │ │ +
21#define _cstypes_h_
│ │ │ │ +
22
│ │ │ │ +
23#include "tds_sysdep_public.h"
│ │ │ │ +
24
│ │ │ │ +
25#ifdef __cplusplus
│ │ │ │ +
26extern "C"
│ │ │ │ +
27{
│ │ │ │ +
28#if 0
│ │ │ │ +
29}
│ │ │ │ +
30#endif
│ │ │ │ +
31#endif
│ │ │ │ +
32
│ │ │ │ +
33typedef int32_t CS_INT;
│ │ │ │ +
34typedef uint32_t CS_UINT;
│ │ │ │ +
35typedef int64_t CS_BIGINT;
│ │ │ │ +
36typedef uint64_t CS_UBIGINT;
│ │ │ │ +
37typedef int16_t CS_SMALLINT;
│ │ │ │ +
38typedef uint16_t CS_USMALLINT;
│ │ │ │ +
39typedef unsigned char CS_TINYINT;
│ │ │ │ +
40typedef char CS_CHAR;
│ │ │ │ +
41typedef unsigned char CS_BYTE;
│ │ │ │ +
42typedef tds_sysdep_real32_type CS_REAL;
│ │ │ │ +
43typedef tds_sysdep_real64_type CS_FLOAT;
│ │ │ │ +
44typedef int32_t CS_BOOL;
│ │ │ │ +
45typedef void CS_VOID;
│ │ │ │ +
46typedef unsigned char CS_IMAGE;
│ │ │ │ +
47typedef unsigned char CS_TEXT;
│ │ │ │ +
48typedef unsigned char CS_LONGBINARY;
│ │ │ │ +
49typedef unsigned char CS_LONGCHAR;
│ │ │ │ +
50typedef long CS_LONG;
│ │ │ │ +
51typedef unsigned char CS_BINARY;
│ │ │ │ +
52typedef uint16_t CS_USHORT;
│ │ │ │ +
53typedef unsigned char CS_BIT;
│ │ │ │ +
54
│ │ │ │ +
55typedef CS_INT CS_RETCODE;
│ │ │ │ +
56
│ │ │ │ +
57#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
58#define CS_MAX_NAME 132
│ │ │ │ +
59#else
│ │ │ │ +
60#define CS_MAX_NAME 255
│ │ │ │ +
61#endif
│ │ │ │ +
62#define CS_MAX_CHAR 256
│ │ │ │ +
63#define CS_MAX_SCALE 77
│ │ │ │ +
64#define CS_MAX_PREC 77 /* used by php */
│ │ │ │ +
65#define CS_MAX_NUMLEN 33 /* used by roguewave */
│ │ │ │ +
66#define CS_MAX_MSG 1024
│ │ │ │ +
67#define CS_SQLSTATE_SIZE 8
│ │ │ │ +
68#define CS_OBJ_NAME 400
│ │ │ │ +
69#define CS_TP_SIZE 16 /* text pointer */
│ │ │ │ +
70#define CS_TS_SIZE 8 /* length of timestamp */
│ │ │ │ +
71
│ │ │ │ +
72
│ │ │ │ +
│ │ │ │ +
73typedef struct _cs_numeric
│ │ │ │ +
74{
│ │ │ │ +
75 unsigned char precision;
│ │ │ │ +
76 unsigned char scale;
│ │ │ │ +
77 unsigned char array[CS_MAX_NUMLEN];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
79
│ │ │ │ + │ │ │ │ +
81
│ │ │ │ +
│ │ │ │ +
82typedef struct _cs_varbinary
│ │ │ │ +
83{
│ │ │ │ +
84 CS_SMALLINT len;
│ │ │ │ +
85 CS_CHAR array[256];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
87
│ │ │ │ +
│ │ │ │ +
88typedef struct _cs_varchar
│ │ │ │ +
89{
│ │ │ │ +
90 CS_SMALLINT len; /* length of the string */
│ │ │ │ +
91 CS_CHAR str[256]; /* string, no NULL terminator */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
93
│ │ │ │ +
94typedef struct _cs_config CS_CONFIG;
│ │ │ │ +
95typedef struct _cs_context CS_CONTEXT;
│ │ │ │ +
96typedef struct _cs_connection CS_CONNECTION;
│ │ │ │ +
97typedef struct _cs_locale CS_LOCALE;
│ │ │ │ +
98typedef struct _cs_command CS_COMMAND;
│ │ │ │ +
99typedef struct _cs_blk_row CS_BLK_ROW;
│ │ │ │ +
100
│ │ │ │ +
│ │ │ │ +
101typedef struct _cs_iodesc
│ │ │ │ +
102{
│ │ │ │ +
103 CS_INT iotype;
│ │ │ │ +
104 CS_INT datatype;
│ │ │ │ +
105 CS_LOCALE *locale;
│ │ │ │ +
106 CS_INT usertype;
│ │ │ │ +
107 CS_INT total_txtlen;
│ │ │ │ +
108 CS_INT offset;
│ │ │ │ +
109 CS_BOOL log_on_update;
│ │ │ │ +
110 CS_CHAR name[CS_OBJ_NAME];
│ │ │ │ +
111 CS_INT namelen;
│ │ │ │ +
112 CS_BYTE timestamp[CS_TS_SIZE];
│ │ │ │ +
113 CS_INT timestamplen;
│ │ │ │ +
114 CS_BYTE textptr[CS_TP_SIZE];
│ │ │ │ +
115 CS_INT textptrlen;
│ │ │ │ +
116} CS_IODESC;
│ │ │ │ +
│ │ │ │ +
117
│ │ │ │ +
│ │ │ │ +
118typedef struct _cs_datafmt
│ │ │ │ +
119{
│ │ │ │ +
120#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
121 CS_CHAR name[CS_MAX_NAME];
│ │ │ │ +
122#else
│ │ │ │ +
123 CS_CHAR name[CS_MAX_CHAR];
│ │ │ │ +
124#endif
│ │ │ │ +
125 CS_INT namelen;
│ │ │ │ +
126 CS_INT datatype;
│ │ │ │ +
127 CS_INT format;
│ │ │ │ +
128 CS_INT maxlength;
│ │ │ │ +
129 CS_INT scale;
│ │ │ │ +
130 CS_INT precision;
│ │ │ │ +
131 CS_INT status;
│ │ │ │ +
132 CS_INT count;
│ │ │ │ +
133 CS_INT usertype;
│ │ │ │ +
134 CS_LOCALE *locale;
│ │ │ │ +
135} CS_DATAFMT;
│ │ │ │ +
│ │ │ │ +
136
│ │ │ │ +
│ │ │ │ +
137typedef struct _cs_money
│ │ │ │ +
138{
│ │ │ │ +
139 CS_INT mnyhigh;
│ │ │ │ +
140 CS_UINT mnylow;
│ │ │ │ +
141} CS_MONEY;
│ │ │ │ +
│ │ │ │ +
142
│ │ │ │ +
│ │ │ │ +
143typedef struct _cs_money4
│ │ │ │ +
144{
│ │ │ │ +
145 CS_INT mny4;
│ │ │ │ +
146} CS_MONEY4;
│ │ │ │ +
│ │ │ │ +
147
│ │ │ │ +
148typedef CS_INT CS_DATE;
│ │ │ │ +
149
│ │ │ │ +
150typedef CS_INT CS_TIME;
│ │ │ │ +
151
│ │ │ │ +
152typedef CS_UBIGINT CS_BIGDATETIME;
│ │ │ │ +
153typedef CS_UBIGINT CS_BIGTIME;
│ │ │ │ +
154
│ │ │ │ +
│ │ │ │ +
155typedef struct _cs_datetime
│ │ │ │ +
156{
│ │ │ │ +
157 CS_INT dtdays;
│ │ │ │ +
158 CS_INT dttime;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
160
│ │ │ │ +
│ │ │ │ +
161typedef struct _cs_datetime4
│ │ │ │ +
162{
│ │ │ │ +
163 CS_USHORT days;
│ │ │ │ +
164 CS_USHORT minutes;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
166
│ │ │ │ +
│ │ │ │ +
167typedef struct _cs_daterec
│ │ │ │ +
168{
│ │ │ │ +
169 CS_INT dateyear;
│ │ │ │ +
170 CS_INT datemonth;
│ │ │ │ +
171 CS_INT datedmonth;
│ │ │ │ +
172 CS_INT datedyear;
│ │ │ │ +
173 CS_INT datedweek;
│ │ │ │ +
174 CS_INT datehour;
│ │ │ │ +
175 CS_INT dateminute;
│ │ │ │ +
176 CS_INT datesecond;
│ │ │ │ +
177 CS_INT datemsecond;
│ │ │ │ +
178 CS_INT datetzone;
│ │ │ │ +
179 CS_INT datesecfrac;
│ │ │ │ +
180 CS_INT datesecprec;
│ │ │ │ +
181} CS_DATEREC;
│ │ │ │ +
│ │ │ │ +
182
│ │ │ │ +
183typedef CS_INT CS_MSGNUM;
│ │ │ │ +
184
│ │ │ │ +
│ │ │ │ +
185typedef struct _cs_clientmsg
│ │ │ │ +
186{
│ │ │ │ +
187 CS_INT severity;
│ │ │ │ +
188 CS_MSGNUM msgnumber;
│ │ │ │ +
189 CS_CHAR msgstring[CS_MAX_MSG];
│ │ │ │ +
190 CS_INT msgstringlen;
│ │ │ │ +
191 CS_INT osnumber;
│ │ │ │ +
192 CS_CHAR osstring[CS_MAX_MSG];
│ │ │ │ +
193 CS_INT osstringlen;
│ │ │ │ +
194 CS_INT status;
│ │ │ │ +
195 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
│ │ │ │ +
196 CS_INT sqlstatelen;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
198
│ │ │ │ +
│ │ │ │ +
199typedef struct _cs_servermsg
│ │ │ │ +
200{
│ │ │ │ +
201 CS_MSGNUM msgnumber;
│ │ │ │ +
202 CS_INT state;
│ │ │ │ +
203 CS_INT severity;
│ │ │ │ +
204 CS_CHAR text[CS_MAX_MSG];
│ │ │ │ +
205 CS_INT textlen;
│ │ │ │ +
206#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ +
207 CS_CHAR svrname[CS_MAX_NAME];
│ │ │ │ +
208 CS_INT svrnlen;
│ │ │ │ +
209 CS_CHAR proc[CS_MAX_NAME];
│ │ │ │ +
210#else
│ │ │ │ +
211 CS_CHAR svrname[CS_MAX_CHAR];
│ │ │ │ +
212 CS_INT svrnlen;
│ │ │ │ +
213 CS_CHAR proc[CS_MAX_CHAR];
│ │ │ │ +
214#endif
│ │ │ │ +
215 CS_INT proclen;
│ │ │ │ +
216 CS_INT line;
│ │ │ │ +
217 CS_INT status;
│ │ │ │ +
218 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
│ │ │ │ +
219 CS_INT sqlstatelen;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
221
│ │ │ │ +
222#ifdef __cplusplus
│ │ │ │ +
223#if 0
│ │ │ │ +
224{
│ │ │ │ +
225#endif
│ │ │ │ +
226}
│ │ │ │ +
227#endif
│ │ │ │ +
228
│ │ │ │ +
229#endif
│ │ │ │ +
Definition cstypes.h:74
│ │ │ │ +
Definition cstypes.h:83
│ │ │ │ +
Definition cstypes.h:89
│ │ │ │ +
Definition cstypes.h:102
│ │ │ │ +
Definition cstypes.h:119
│ │ │ │ +
Definition cstypes.h:138
│ │ │ │ +
Definition cstypes.h:144
│ │ │ │ +
Definition cstypes.h:156
│ │ │ │ +
Definition cstypes.h:162
│ │ │ │ +
Definition cstypes.h:168
│ │ │ │ +
Definition cstypes.h:186
│ │ │ │ +
Definition cstypes.h:200
│ │ │ │ +
Definition ctlib.h:49
│ │ │ │ +
Definition ctlib.h:135
│ │ │ │ +
Definition ctlib.h:188
│ │ │ │ +
Definition ctlib.h:284
│ │ │ │ +
Definition ctlib.h:320
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,14 +1,271 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ - * freetds │ │ │ │ │ -time.h │ │ │ │ │ -1#if HAVE_SYS_TIME_H │ │ │ │ │ -2# include │ │ │ │ │ -3#endif │ │ │ │ │ -4 │ │ │ │ │ -5#include │ │ │ │ │ +cstypes.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _cstypes_h_ │ │ │ │ │ +21#define _cstypes_h_ │ │ │ │ │ +22 │ │ │ │ │ +23#include "tds_sysdep_public.h" │ │ │ │ │ +24 │ │ │ │ │ +25#ifdef __cplusplus │ │ │ │ │ +26extern "C" │ │ │ │ │ +27{ │ │ │ │ │ +28#if 0 │ │ │ │ │ +29} │ │ │ │ │ +30#endif │ │ │ │ │ +31#endif │ │ │ │ │ +32 │ │ │ │ │ +33typedef int32_t CS_INT; │ │ │ │ │ +34typedef uint32_t CS_UINT; │ │ │ │ │ +35typedef int64_t CS_BIGINT; │ │ │ │ │ +36typedef uint64_t CS_UBIGINT; │ │ │ │ │ +37typedef int16_t CS_SMALLINT; │ │ │ │ │ +38typedef uint16_t CS_USMALLINT; │ │ │ │ │ +39typedef unsigned char CS_TINYINT; │ │ │ │ │ +40typedef char CS_CHAR; │ │ │ │ │ +41typedef unsigned char CS_BYTE; │ │ │ │ │ +42typedef tds_sysdep_real32_type CS_REAL; │ │ │ │ │ +43typedef tds_sysdep_real64_type CS_FLOAT; │ │ │ │ │ +44typedef int32_t CS_BOOL; │ │ │ │ │ +45typedef void CS_VOID; │ │ │ │ │ +46typedef unsigned char CS_IMAGE; │ │ │ │ │ +47typedef unsigned char CS_TEXT; │ │ │ │ │ +48typedef unsigned char CS_LONGBINARY; │ │ │ │ │ +49typedef unsigned char CS_LONGCHAR; │ │ │ │ │ +50typedef long CS_LONG; │ │ │ │ │ +51typedef unsigned char CS_BINARY; │ │ │ │ │ +52typedef uint16_t CS_USHORT; │ │ │ │ │ +53typedef unsigned char CS_BIT; │ │ │ │ │ +54 │ │ │ │ │ +55typedef CS_INT CS_RETCODE; │ │ │ │ │ +56 │ │ │ │ │ +57#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +58#define CS_MAX_NAME 132 │ │ │ │ │ +59#else │ │ │ │ │ +60#define CS_MAX_NAME 255 │ │ │ │ │ +61#endif │ │ │ │ │ +62#define CS_MAX_CHAR 256 │ │ │ │ │ +63#define CS_MAX_SCALE 77 │ │ │ │ │ +64#define CS_MAX_PREC 77 /* used by php */ │ │ │ │ │ +65#define CS_MAX_NUMLEN 33 /* used by roguewave */ │ │ │ │ │ +66#define CS_MAX_MSG 1024 │ │ │ │ │ +67#define CS_SQLSTATE_SIZE 8 │ │ │ │ │ +68#define CS_OBJ_NAME 400 │ │ │ │ │ +69#define CS_TP_SIZE 16 /* text pointer */ │ │ │ │ │ +70#define CS_TS_SIZE 8 /* length of timestamp */ │ │ │ │ │ +71 │ │ │ │ │ +72 │ │ │ │ │ +73typedef struct _cs_numeric │ │ │ │ │ +74{ │ │ │ │ │ +75 unsigned char precision; │ │ │ │ │ +76 unsigned char scale; │ │ │ │ │ +77 unsigned char array[CS_MAX_NUMLEN]; │ │ │ │ │ +78} CS_NUMERIC; │ │ │ │ │ +79 │ │ │ │ │ +80typedef CS_NUMERIC CS_DECIMAL; │ │ │ │ │ +81 │ │ │ │ │ +82typedef struct _cs_varbinary │ │ │ │ │ +83{ │ │ │ │ │ +84 CS_SMALLINT len; │ │ │ │ │ +85 CS_CHAR array[256]; │ │ │ │ │ +86} CS_VARBINARY; │ │ │ │ │ +87 │ │ │ │ │ +88typedef struct _cs_varchar │ │ │ │ │ +89{ │ │ │ │ │ +90 CS_SMALLINT len; /* length of the string */ │ │ │ │ │ +91 CS_CHAR str[256]; /* string, no NULL terminator */ │ │ │ │ │ +92} CS_VARCHAR; │ │ │ │ │ +93 │ │ │ │ │ +94typedef struct _cs_config CS_CONFIG; │ │ │ │ │ +95typedef struct _cs_context CS_CONTEXT; │ │ │ │ │ +96typedef struct _cs_connection CS_CONNECTION; │ │ │ │ │ +97typedef struct _cs_locale CS_LOCALE; │ │ │ │ │ +98typedef struct _cs_command CS_COMMAND; │ │ │ │ │ +99typedef struct _cs_blk_row CS_BLK_ROW; │ │ │ │ │ +100 │ │ │ │ │ +101typedef struct _cs_iodesc │ │ │ │ │ +102{ │ │ │ │ │ +103 CS_INT iotype; │ │ │ │ │ +104 CS_INT datatype; │ │ │ │ │ +105 CS_LOCALE *locale; │ │ │ │ │ +106 CS_INT usertype; │ │ │ │ │ +107 CS_INT total_txtlen; │ │ │ │ │ +108 CS_INT offset; │ │ │ │ │ +109 CS_BOOL log_on_update; │ │ │ │ │ +110 CS_CHAR name[CS_OBJ_NAME]; │ │ │ │ │ +111 CS_INT namelen; │ │ │ │ │ +112 CS_BYTE timestamp[CS_TS_SIZE]; │ │ │ │ │ +113 CS_INT timestamplen; │ │ │ │ │ +114 CS_BYTE textptr[CS_TP_SIZE]; │ │ │ │ │ +115 CS_INT textptrlen; │ │ │ │ │ +116} CS_IODESC; │ │ │ │ │ +117 │ │ │ │ │ +118typedef struct _cs_datafmt │ │ │ │ │ +119{ │ │ │ │ │ +120#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +121 CS_CHAR name[CS_MAX_NAME]; │ │ │ │ │ +122#else │ │ │ │ │ +123 CS_CHAR name[CS_MAX_CHAR]; │ │ │ │ │ +124#endif │ │ │ │ │ +125 CS_INT namelen; │ │ │ │ │ +126 CS_INT datatype; │ │ │ │ │ +127 CS_INT format; │ │ │ │ │ +128 CS_INT maxlength; │ │ │ │ │ +129 CS_INT scale; │ │ │ │ │ +130 CS_INT precision; │ │ │ │ │ +131 CS_INT status; │ │ │ │ │ +132 CS_INT count; │ │ │ │ │ +133 CS_INT usertype; │ │ │ │ │ +134 CS_LOCALE *locale; │ │ │ │ │ +135} CS_DATAFMT; │ │ │ │ │ +136 │ │ │ │ │ +137typedef struct _cs_money │ │ │ │ │ +138{ │ │ │ │ │ +139 CS_INT mnyhigh; │ │ │ │ │ +140 CS_UINT mnylow; │ │ │ │ │ +141} CS_MONEY; │ │ │ │ │ +142 │ │ │ │ │ +143typedef struct _cs_money4 │ │ │ │ │ +144{ │ │ │ │ │ +145 CS_INT mny4; │ │ │ │ │ +146} CS_MONEY4; │ │ │ │ │ +147 │ │ │ │ │ +148typedef CS_INT CS_DATE; │ │ │ │ │ +149 │ │ │ │ │ +150typedef CS_INT CS_TIME; │ │ │ │ │ +151 │ │ │ │ │ +152typedef CS_UBIGINT CS_BIGDATETIME; │ │ │ │ │ +153typedef CS_UBIGINT CS_BIGTIME; │ │ │ │ │ +154 │ │ │ │ │ +155typedef struct _cs_datetime │ │ │ │ │ +156{ │ │ │ │ │ +157 CS_INT dtdays; │ │ │ │ │ +158 CS_INT dttime; │ │ │ │ │ +159} CS_DATETIME; │ │ │ │ │ +160 │ │ │ │ │ +161typedef struct _cs_datetime4 │ │ │ │ │ +162{ │ │ │ │ │ +163 CS_USHORT days; │ │ │ │ │ +164 CS_USHORT minutes; │ │ │ │ │ +165} CS_DATETIME4; │ │ │ │ │ +166 │ │ │ │ │ +167typedef struct _cs_daterec │ │ │ │ │ +168{ │ │ │ │ │ +169 CS_INT dateyear; │ │ │ │ │ +170 CS_INT datemonth; │ │ │ │ │ +171 CS_INT datedmonth; │ │ │ │ │ +172 CS_INT datedyear; │ │ │ │ │ +173 CS_INT datedweek; │ │ │ │ │ +174 CS_INT datehour; │ │ │ │ │ +175 CS_INT dateminute; │ │ │ │ │ +176 CS_INT datesecond; │ │ │ │ │ +177 CS_INT datemsecond; │ │ │ │ │ +178 CS_INT datetzone; │ │ │ │ │ +179 CS_INT datesecfrac; │ │ │ │ │ +180 CS_INT datesecprec; │ │ │ │ │ +181} CS_DATEREC; │ │ │ │ │ +182 │ │ │ │ │ +183typedef CS_INT CS_MSGNUM; │ │ │ │ │ +184 │ │ │ │ │ +185typedef struct _cs_clientmsg │ │ │ │ │ +186{ │ │ │ │ │ +187 CS_INT severity; │ │ │ │ │ +188 CS_MSGNUM msgnumber; │ │ │ │ │ +189 CS_CHAR msgstring[CS_MAX_MSG]; │ │ │ │ │ +190 CS_INT msgstringlen; │ │ │ │ │ +191 CS_INT osnumber; │ │ │ │ │ +192 CS_CHAR osstring[CS_MAX_MSG]; │ │ │ │ │ +193 CS_INT osstringlen; │ │ │ │ │ +194 CS_INT status; │ │ │ │ │ +195 CS_BYTE sqlstate[CS_SQLSTATE_SIZE]; │ │ │ │ │ +196 CS_INT sqlstatelen; │ │ │ │ │ +197} CS_CLIENTMSG; │ │ │ │ │ +198 │ │ │ │ │ +199typedef struct _cs_servermsg │ │ │ │ │ +200{ │ │ │ │ │ +201 CS_MSGNUM msgnumber; │ │ │ │ │ +202 CS_INT state; │ │ │ │ │ +203 CS_INT severity; │ │ │ │ │ +204 CS_CHAR text[CS_MAX_MSG]; │ │ │ │ │ +205 CS_INT textlen; │ │ │ │ │ +206#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ +207 CS_CHAR svrname[CS_MAX_NAME]; │ │ │ │ │ +208 CS_INT svrnlen; │ │ │ │ │ +209 CS_CHAR proc[CS_MAX_NAME]; │ │ │ │ │ +210#else │ │ │ │ │ +211 CS_CHAR svrname[CS_MAX_CHAR]; │ │ │ │ │ +212 CS_INT svrnlen; │ │ │ │ │ +213 CS_CHAR proc[CS_MAX_CHAR]; │ │ │ │ │ +214#endif │ │ │ │ │ +215 CS_INT proclen; │ │ │ │ │ +216 CS_INT line; │ │ │ │ │ +217 CS_INT status; │ │ │ │ │ +218 CS_BYTE sqlstate[CS_SQLSTATE_SIZE]; │ │ │ │ │ +219 CS_INT sqlstatelen; │ │ │ │ │ +220} CS_SERVERMSG; │ │ │ │ │ +221 │ │ │ │ │ +222#ifdef __cplusplus │ │ │ │ │ +223#if 0 │ │ │ │ │ +224{ │ │ │ │ │ +225#endif │ │ │ │ │ +226} │ │ │ │ │ +227#endif │ │ │ │ │ +228 │ │ │ │ │ +229#endif │ │ │ │ │ +_cs_numeric │ │ │ │ │ +Definition cstypes.h:74 │ │ │ │ │ +_cs_varbinary │ │ │ │ │ +Definition cstypes.h:83 │ │ │ │ │ +_cs_varchar │ │ │ │ │ +Definition cstypes.h:89 │ │ │ │ │ +_cs_iodesc │ │ │ │ │ +Definition cstypes.h:102 │ │ │ │ │ +_cs_datafmt │ │ │ │ │ +Definition cstypes.h:119 │ │ │ │ │ +_cs_money │ │ │ │ │ +Definition cstypes.h:138 │ │ │ │ │ +_cs_money4 │ │ │ │ │ +Definition cstypes.h:144 │ │ │ │ │ +_cs_datetime │ │ │ │ │ +Definition cstypes.h:156 │ │ │ │ │ +_cs_datetime4 │ │ │ │ │ +Definition cstypes.h:162 │ │ │ │ │ +_cs_daterec │ │ │ │ │ +Definition cstypes.h:168 │ │ │ │ │ +_cs_clientmsg │ │ │ │ │ +Definition cstypes.h:186 │ │ │ │ │ +_cs_servermsg │ │ │ │ │ +Definition cstypes.h:200 │ │ │ │ │ +_cs_config │ │ │ │ │ +Definition ctlib.h:49 │ │ │ │ │ +_cs_context │ │ │ │ │ +Definition ctlib.h:135 │ │ │ │ │ +_cs_connection │ │ │ │ │ +Definition ctlib.h:188 │ │ │ │ │ +_cs_command │ │ │ │ │ +Definition ctlib.h:284 │ │ │ │ │ +_cs_locale │ │ │ │ │ +Definition ctlib.h:320 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00392_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/charset_lookup.h Source File │ │ │ │ +FreeTDS API: include/ctpublic.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,1911 +70,166 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
charset_lookup.h
│ │ │ │ +
ctpublic.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* ANSI-C code produced by gperf version 3.1 */
│ │ │ │ -
2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P -H hash_charset -N charset_lookup -L ANSI-C --enum charset_lookup.gperf */
│ │ │ │ -
3/* Computed positions: -k'1,3-11,$' */
│ │ │ │ -
4
│ │ │ │ -
5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
│ │ │ │ -
6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
│ │ │ │ -
7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
│ │ │ │ -
8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
│ │ │ │ -
9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
│ │ │ │ -
10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
│ │ │ │ -
11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
│ │ │ │ -
12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
│ │ │ │ -
13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
│ │ │ │ -
14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
│ │ │ │ -
15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
│ │ │ │ -
16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
│ │ │ │ -
17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
│ │ │ │ -
18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
│ │ │ │ -
19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
│ │ │ │ -
20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
│ │ │ │ -
21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
│ │ │ │ -
22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
│ │ │ │ -
23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
│ │ │ │ -
24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
│ │ │ │ -
25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
│ │ │ │ -
26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
│ │ │ │ -
27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
│ │ │ │ -
28/* The character set is not based on ISO-646. */
│ │ │ │ -
29#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
│ │ │ │ -
30#endif
│ │ │ │ -
31
│ │ │ │ -
32#line 3 "charset_lookup.gperf"
│ │ │ │ -
33
│ │ │ │ -
34static const struct charset_alias *charset_lookup(register const char *str, register size_t len);
│ │ │ │ -
35#line 2 "charset_lookup.gperf"
│ │ │ │ -
36struct charset_alias { short int alias_pos; short int canonic; };
│ │ │ │ -
37/* maximum key range = 1038, duplicates = 0 */
│ │ │ │ -
38
│ │ │ │ -
39#ifdef __GNUC__
│ │ │ │ -
40__inline
│ │ │ │ -
41#else
│ │ │ │ -
42#ifdef __cplusplus
│ │ │ │ -
43inline
│ │ │ │ -
44#endif
│ │ │ │ -
45#endif
│ │ │ │ -
46static unsigned int
│ │ │ │ -
47hash_charset (register const char *str, register size_t len)
│ │ │ │ -
48{
│ │ │ │ -
49 static const unsigned short asso_values[] =
│ │ │ │ -
50 {
│ │ │ │ -
51 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
52 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
53 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
54 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
55 1070, 1070, 1070, 1070, 1070, 8, 113, 1070, 34, 7,
│ │ │ │ -
56 83, 104, 36, 9, 20, 85, 8, 10, 330, 1070,
│ │ │ │ -
57 1070, 1070, 1070, 1070, 1070, 50, 186, 97, 7, 84,
│ │ │ │ -
58 66, 32, 73, 7, 17, 186, 27, 183, 9, 7,
│ │ │ │ -
59 106, 1070, 51, 7, 11, 117, 229, 151, 339, 22,
│ │ │ │ -
60 10, 1070, 1070, 1070, 1070, 24, 1070, 13, 7, 179,
│ │ │ │ -
61 1070, 7, 9, 13, 27, 7, 1070, 7, 1070, 8,
│ │ │ │ -
62 7, 7, 1070, 1070, 8, 8, 7, 10, 1070, 1070,
│ │ │ │ -
63 1070, 12, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
64 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
65 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
66 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
67 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
68 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
69 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
70 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
71 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
72 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
73 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
74 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
75 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ -
76 1070, 1070, 1070, 1070, 1070, 1070
│ │ │ │ -
77 };
│ │ │ │ -
78 register unsigned int hval = len;
│ │ │ │ -
79
│ │ │ │ -
80 switch (hval)
│ │ │ │ -
81 {
│ │ │ │ -
82 default:
│ │ │ │ -
83 hval += asso_values[(unsigned char)str[10]];
│ │ │ │ -
84 /*FALLTHROUGH*/
│ │ │ │ -
85 case 10:
│ │ │ │ -
86 hval += asso_values[(unsigned char)str[9]];
│ │ │ │ -
87 /*FALLTHROUGH*/
│ │ │ │ -
88 case 9:
│ │ │ │ -
89 hval += asso_values[(unsigned char)str[8]];
│ │ │ │ -
90 /*FALLTHROUGH*/
│ │ │ │ -
91 case 8:
│ │ │ │ -
92 hval += asso_values[(unsigned char)str[7]];
│ │ │ │ -
93 /*FALLTHROUGH*/
│ │ │ │ -
94 case 7:
│ │ │ │ -
95 hval += asso_values[(unsigned char)str[6]];
│ │ │ │ -
96 /*FALLTHROUGH*/
│ │ │ │ -
97 case 6:
│ │ │ │ -
98 hval += asso_values[(unsigned char)str[5]];
│ │ │ │ -
99 /*FALLTHROUGH*/
│ │ │ │ -
100 case 5:
│ │ │ │ -
101 hval += asso_values[(unsigned char)str[4]];
│ │ │ │ -
102 /*FALLTHROUGH*/
│ │ │ │ -
103 case 4:
│ │ │ │ -
104 hval += asso_values[(unsigned char)str[3]];
│ │ │ │ -
105 /*FALLTHROUGH*/
│ │ │ │ -
106 case 3:
│ │ │ │ -
107 hval += asso_values[(unsigned char)str[2]];
│ │ │ │ -
108 /*FALLTHROUGH*/
│ │ │ │ -
109 case 2:
│ │ │ │ -
110 case 1:
│ │ │ │ -
111 hval += asso_values[(unsigned char)str[0]];
│ │ │ │ -
112 break;
│ │ │ │ -
113 }
│ │ │ │ -
114 return hval + asso_values[(unsigned char)str[len - 1]];
│ │ │ │ -
115}
│ │ │ │ -
116
│ │ │ │ -
│ │ │ │ -
117struct stringpool_t
│ │ │ │ -
118 {
│ │ │ │ -
119 char stringpool_str32[sizeof("SJIS")];
│ │ │ │ -
120 char stringpool_str34[sizeof("koi8")];
│ │ │ │ -
121 char stringpool_str35[sizeof("sjis")];
│ │ │ │ -
122 char stringpool_str36[sizeof("L1")];
│ │ │ │ -
123 char stringpool_str37[sizeof("L8")];
│ │ │ │ -
124 char stringpool_str38[sizeof("L5")];
│ │ │ │ -
125 char stringpool_str39[sizeof("utf8")];
│ │ │ │ -
126 char stringpool_str41[sizeof("iso81")];
│ │ │ │ -
127 char stringpool_str42[sizeof("big5")];
│ │ │ │ -
128 char stringpool_str43[sizeof("iso88")];
│ │ │ │ -
129 char stringpool_str44[sizeof("iso15")];
│ │ │ │ -
130 char stringpool_str45[sizeof("iso85")];
│ │ │ │ -
131 char stringpool_str47[sizeof("iso89")];
│ │ │ │ -
132 char stringpool_str48[sizeof("thai8")];
│ │ │ │ -
133 char stringpool_str49[sizeof("L6")];
│ │ │ │ -
134 char stringpool_str50[sizeof("roma8")];
│ │ │ │ -
135 char stringpool_str51[sizeof("866")];
│ │ │ │ -
136 char stringpool_str53[sizeof("iso815")];
│ │ │ │ -
137 char stringpool_str56[sizeof("greek8")];
│ │ │ │ -
138 char stringpool_str57[sizeof("iso_1")];
│ │ │ │ -
139 char stringpool_str58[sizeof("roman8")];
│ │ │ │ -
140 char stringpool_str61[sizeof("R8")];
│ │ │ │ -
141 char stringpool_str63[sizeof("646")];
│ │ │ │ -
142 char stringpool_str65[sizeof("L4")];
│ │ │ │ -
143 char stringpool_str67[sizeof("iso86")];
│ │ │ │ -
144 char stringpool_str71[sizeof("iso88591")];
│ │ │ │ -
145 char stringpool_str73[sizeof("iso88598")];
│ │ │ │ -
146 char stringpool_str74[sizeof("LATIN1")];
│ │ │ │ -
147 char stringpool_str75[sizeof("iso88595")];
│ │ │ │ -
148 char stringpool_str76[sizeof("LATIN8")];
│ │ │ │ -
149 char stringpool_str77[sizeof("iso88599")];
│ │ │ │ -
150 char stringpool_str78[sizeof("LATIN5")];
│ │ │ │ -
151 char stringpool_str79[sizeof("850")];
│ │ │ │ -
152 char stringpool_str80[sizeof("ISO8859-1")];
│ │ │ │ -
153 char stringpool_str82[sizeof("ISO8859-8")];
│ │ │ │ -
154 char stringpool_str83[sizeof("iso885915")];
│ │ │ │ -
155 char stringpool_str84[sizeof("ISO8859-5")];
│ │ │ │ -
156 char stringpool_str85[sizeof("HZ")];
│ │ │ │ -
157 char stringpool_str86[sizeof("ISO8859-9")];
│ │ │ │ -
158 char stringpool_str89[sizeof("ISO-8859-1")];
│ │ │ │ -
159 char stringpool_str91[sizeof("ISO-8859-8")];
│ │ │ │ -
160 char stringpool_str92[sizeof("ISO8859-15")];
│ │ │ │ -
161 char stringpool_str93[sizeof("ISO-8859-5")];
│ │ │ │ -
162 char stringpool_str94[sizeof("iso10")];
│ │ │ │ -
163 char stringpool_str95[sizeof("ISO-8859-9")];
│ │ │ │ -
164 char stringpool_str97[sizeof("iso88596")];
│ │ │ │ -
165 char stringpool_str98[sizeof("iso14")];
│ │ │ │ -
166 char stringpool_str99[sizeof("iso84")];
│ │ │ │ -
167 char stringpool_str100[sizeof("LATIN6")];
│ │ │ │ -
168 char stringpool_str101[sizeof("ISO-8859-15")];
│ │ │ │ -
169 char stringpool_str105[sizeof("ISO_8859-1")];
│ │ │ │ -
170 char stringpool_str106[sizeof("ISO8859-6")];
│ │ │ │ -
171 char stringpool_str107[sizeof("ISO_8859-8")];
│ │ │ │ -
172 char stringpool_str108[sizeof("CN")];
│ │ │ │ -
173 char stringpool_str109[sizeof("ISO_8859-5")];
│ │ │ │ -
174 char stringpool_str111[sizeof("ISO_8859-9")];
│ │ │ │ -
175 char stringpool_str112[sizeof("L2")];
│ │ │ │ -
176 char stringpool_str114[sizeof("L7")];
│ │ │ │ -
177 char stringpool_str115[sizeof("ISO-8859-6")];
│ │ │ │ -
178 char stringpool_str116[sizeof("iso646")];
│ │ │ │ -
179 char stringpool_str117[sizeof("ISO_8859-15")];
│ │ │ │ -
180 char stringpool_str120[sizeof("C99")];
│ │ │ │ -
181 char stringpool_str121[sizeof("ISO_8859-15:1998")];
│ │ │ │ -
182 char stringpool_str122[sizeof("ISO-IR-58")];
│ │ │ │ -
183 char stringpool_str123[sizeof("ISO-8859-16")];
│ │ │ │ -
184 char stringpool_str125[sizeof("JP")];
│ │ │ │ -
185 char stringpool_str126[sizeof("US")];
│ │ │ │ -
186 char stringpool_str129[sizeof("iso88594")];
│ │ │ │ -
187 char stringpool_str131[sizeof("ISO_8859-6")];
│ │ │ │ -
188 char stringpool_str132[sizeof("LATIN4")];
│ │ │ │ -
189 char stringpool_str133[sizeof("L3")];
│ │ │ │ -
190 char stringpool_str134[sizeof("ISO-IR-159")];
│ │ │ │ -
191 char stringpool_str135[sizeof("ISO-IR-199")];
│ │ │ │ -
192 char stringpool_str136[sizeof("ISO-IR-6")];
│ │ │ │ -
193 char stringpool_str137[sizeof("CP819")];
│ │ │ │ -
194 char stringpool_str138[sizeof("ISO8859-4")];
│ │ │ │ -
195 char stringpool_str139[sizeof("ISO_8859-16")];
│ │ │ │ -
196 char stringpool_str142[sizeof("ISO8859-10")];
│ │ │ │ -
197 char stringpool_str143[sizeof("ISO-IR-165")];
│ │ │ │ -
198 char stringpool_str146[sizeof("SHIFT-JIS")];
│ │ │ │ -
199 char stringpool_str147[sizeof("ISO-8859-4")];
│ │ │ │ -
200 char stringpool_str148[sizeof("ISO_8859-14:1998")];
│ │ │ │ -
201 char stringpool_str151[sizeof("ISO-8859-10")];
│ │ │ │ -
202 char stringpool_str153[sizeof("ISO-IR-101")];
│ │ │ │ -
203 char stringpool_str155[sizeof("ISO-8859-14")];
│ │ │ │ -
204 char stringpool_str157[sizeof("ISO-IR-148")];
│ │ │ │ -
205 char stringpool_str158[sizeof("ISO_8859-16:2000")];
│ │ │ │ -
206 char stringpool_str159[sizeof("ISO-IR-109")];
│ │ │ │ -
207 char stringpool_str161[sizeof("ISO-IR-149")];
│ │ │ │ -
208 char stringpool_str162[sizeof("SHIFT_JIS")];
│ │ │ │ -
209 char stringpool_str163[sizeof("ISO_8859-4")];
│ │ │ │ -
210 char stringpool_str164[sizeof("hp15CN")];
│ │ │ │ -
211 char stringpool_str165[sizeof("ISO-IR-166")];
│ │ │ │ -
212 char stringpool_str167[sizeof("ISO_8859-10")];
│ │ │ │ -
213 char stringpool_str168[sizeof("CP949")];
│ │ │ │ -
214 char stringpool_str170[sizeof("CP866")];
│ │ │ │ -
215 char stringpool_str171[sizeof("ISO_8859-14")];
│ │ │ │ -
216 char stringpool_str173[sizeof("ASCII")];
│ │ │ │ -
217 char stringpool_str176[sizeof("ISO-IR-14")];
│ │ │ │ -
218 char stringpool_str177[sizeof("862")];
│ │ │ │ -
219 char stringpool_str180[sizeof("ISO-IR-110")];
│ │ │ │ -
220 char stringpool_str183[sizeof("GB_1988-80")];
│ │ │ │ -
221 char stringpool_str187[sizeof("CP850")];
│ │ │ │ -
222 char stringpool_str189[sizeof("CP950")];
│ │ │ │ -
223 char stringpool_str192[sizeof("tis620")];
│ │ │ │ -
224 char stringpool_str193[sizeof("iso82")];
│ │ │ │ -
225 char stringpool_str195[sizeof("TIS620")];
│ │ │ │ -
226 char stringpool_str197[sizeof("iso87")];
│ │ │ │ -
227 char stringpool_str198[sizeof("JIS0208")];
│ │ │ │ -
228 char stringpool_str203[sizeof("UTF8")];
│ │ │ │ -
229 char stringpool_str204[sizeof("TIS-620")];
│ │ │ │ -
230 char stringpool_str207[sizeof("ISO-IR-100")];
│ │ │ │ -
231 char stringpool_str210[sizeof("ISO-IR-179")];
│ │ │ │ -
232 char stringpool_str212[sizeof("UTF-8")];
│ │ │ │ -
233 char stringpool_str213[sizeof("ISO-IR-144")];
│ │ │ │ -
234 char stringpool_str215[sizeof("CP65001")];
│ │ │ │ -
235 char stringpool_str216[sizeof("CP1251")];
│ │ │ │ -
236 char stringpool_str218[sizeof("CP1258")];
│ │ │ │ -
237 char stringpool_str220[sizeof("CP1255")];
│ │ │ │ -
238 char stringpool_str221[sizeof("ISO_8859-10:1992")];
│ │ │ │ -
239 char stringpool_str222[sizeof("ISO646-CN")];
│ │ │ │ -
240 char stringpool_str223[sizeof("iso88592")];
│ │ │ │ -
241 char stringpool_str225[sizeof("ISO-IR-138")];
│ │ │ │ -
242 char stringpool_str226[sizeof("LATIN2")];
│ │ │ │ -
243 char stringpool_str227[sizeof("iso88597")];
│ │ │ │ -
244 char stringpool_str228[sizeof("ISO-IR-126")];
│ │ │ │ -
245 char stringpool_str229[sizeof("CSISO159JISX02121990")];
│ │ │ │ -
246 char stringpool_str230[sizeof("LATIN7")];
│ │ │ │ -
247 char stringpool_str231[sizeof("IBM819")];
│ │ │ │ -
248 char stringpool_str232[sizeof("ISO8859-2")];
│ │ │ │ -
249 char stringpool_str233[sizeof("macturk")];
│ │ │ │ -
250 char stringpool_str234[sizeof("iso13")];
│ │ │ │ -
251 char stringpool_str235[sizeof("iso83")];
│ │ │ │ -
252 char stringpool_str236[sizeof("ISO8859-7")];
│ │ │ │ -
253 char stringpool_str237[sizeof("KOI8-T")];
│ │ │ │ -
254 char stringpool_str238[sizeof("ISO646-US")];
│ │ │ │ -
255 char stringpool_str239[sizeof("TIS620-0")];
│ │ │ │ -
256 char stringpool_str240[sizeof("BIG5")];
│ │ │ │ -
257 char stringpool_str241[sizeof("ISO-8859-2")];
│ │ │ │ -
258 char stringpool_str242[sizeof("CP1256")];
│ │ │ │ -
259 char stringpool_str243[sizeof("ELOT_928")];
│ │ │ │ -
260 char stringpool_str244[sizeof("macgreek")];
│ │ │ │ -
261 char stringpool_str245[sizeof("ISO-8859-7")];
│ │ │ │ -
262 char stringpool_str247[sizeof("CSISOLATIN1")];
│ │ │ │ -
263 char stringpool_str248[sizeof("CP1361")];
│ │ │ │ -
264 char stringpool_str249[sizeof("BIG-5")];
│ │ │ │ -
265 char stringpool_str250[sizeof("cp949")];
│ │ │ │ -
266 char stringpool_str251[sizeof("CSISOLATIN5")];
│ │ │ │ -
267 char stringpool_str252[sizeof("cp866")];
│ │ │ │ -
268 char stringpool_str253[sizeof("ascii_8")];
│ │ │ │ -
269 char stringpool_str255[sizeof("macthai")];
│ │ │ │ -
270 char stringpool_str256[sizeof("CP936")];
│ │ │ │ -
271 char stringpool_str257[sizeof("ISO_8859-2")];
│ │ │ │ -
272 char stringpool_str260[sizeof("GB18030")];
│ │ │ │ -
273 char stringpool_str261[sizeof("ISO_8859-7")];
│ │ │ │ -
274 char stringpool_str262[sizeof("TCVN")];
│ │ │ │ -
275 char stringpool_str264[sizeof("IBM866")];
│ │ │ │ -
276 char stringpool_str265[sizeof("iso88593")];
│ │ │ │ -
277 char stringpool_str267[sizeof("CP874")];
│ │ │ │ -
278 char stringpool_str268[sizeof("LATIN3")];
│ │ │ │ -
279 char stringpool_str269[sizeof("cp850")];
│ │ │ │ -
280 char stringpool_str270[sizeof("CP1250")];
│ │ │ │ -
281 char stringpool_str271[sizeof("cp950")];
│ │ │ │ -
282 char stringpool_str273[sizeof("CSISOLATIN6")];
│ │ │ │ -
283 char stringpool_str274[sizeof("CP1254")];
│ │ │ │ -
284 char stringpool_str275[sizeof("ISO-IR-87")];
│ │ │ │ -
285 char stringpool_str276[sizeof("ISO-IR-57")];
│ │ │ │ -
286 char stringpool_str278[sizeof("MS-ANSI")];
│ │ │ │ -
287 char stringpool_str279[sizeof("CSASCII")];
│ │ │ │ -
288 char stringpool_str281[sizeof("IBM850")];
│ │ │ │ -
289 char stringpool_str283[sizeof("ISO-8859-3")];
│ │ │ │ -
290 char stringpool_str284[sizeof("ISO-IR-157")];
│ │ │ │ -
291 char stringpool_str291[sizeof("ISO-8859-13")];
│ │ │ │ -
292 char stringpool_str296[sizeof("CP862")];
│ │ │ │ -
293 char stringpool_str298[sizeof("cp1251")];
│ │ │ │ -
294 char stringpool_str299[sizeof("ISO_8859-3")];
│ │ │ │ -
295 char stringpool_str300[sizeof("cp1258")];
│ │ │ │ -
296 char stringpool_str301[sizeof("EUCCN")];
│ │ │ │ -
297 char stringpool_str302[sizeof("cp1255")];
│ │ │ │ -
298 char stringpool_str304[sizeof("ISO-IR-226")];
│ │ │ │ -
299 char stringpool_str305[sizeof("CSISOLATIN4")];
│ │ │ │ -
300 char stringpool_str307[sizeof("ISO_8859-13")];
│ │ │ │ -
301 char stringpool_str308[sizeof("US-ASCII")];
│ │ │ │ -
302 char stringpool_str309[sizeof("CSSHIFTJIS")];
│ │ │ │ -
303 char stringpool_str310[sizeof("EUC-CN")];
│ │ │ │ -
304 char stringpool_str313[sizeof("CSISO14JISC6220RO")];
│ │ │ │ -
305 char stringpool_str314[sizeof("UHC")];
│ │ │ │ -
306 char stringpool_str315[sizeof("ROMAN8")];
│ │ │ │ -
307 char stringpool_str317[sizeof("KOI8-R")];
│ │ │ │ -
308 char stringpool_str324[sizeof("cp1256")];
│ │ │ │ -
309 char stringpool_str327[sizeof("GEORGIAN-PS")];
│ │ │ │ -
310 char stringpool_str336[sizeof("ISO646-JP")];
│ │ │ │ -
311 char stringpool_str338[sizeof("cp936")];
│ │ │ │ -
312 char stringpool_str346[sizeof("CSBIG5")];
│ │ │ │ -
313 char stringpool_str349[sizeof("cp874")];
│ │ │ │ -
314 char stringpool_str350[sizeof("JAVA")];
│ │ │ │ -
315 char stringpool_str352[sizeof("cp1250")];
│ │ │ │ -
316 char stringpool_str355[sizeof("CN-BIG5")];
│ │ │ │ -
317 char stringpool_str356[sizeof("cp1254")];
│ │ │ │ -
318 char stringpool_str357[sizeof("UTF7")];
│ │ │ │ -
319 char stringpool_str358[sizeof("ISO-IR-127")];
│ │ │ │ -
320 char stringpool_str360[sizeof("VISCII")];
│ │ │ │ -
321 char stringpool_str363[sizeof("ECMA-118")];
│ │ │ │ -
322 char stringpool_str366[sizeof("UTF-7")];
│ │ │ │ -
323 char stringpool_str367[sizeof("UNICODE-1-1")];
│ │ │ │ -
324 char stringpool_str368[sizeof("CP1252")];
│ │ │ │ -
325 char stringpool_str369[sizeof("mac")];
│ │ │ │ -
326 char stringpool_str370[sizeof("UCS-4LE")];
│ │ │ │ -
327 char stringpool_str372[sizeof("CP1257")];
│ │ │ │ -
328 char stringpool_str378[sizeof("cp862")];
│ │ │ │ -
329 char stringpool_str379[sizeof("CHINESE")];
│ │ │ │ -
330 char stringpool_str380[sizeof("MAC")];
│ │ │ │ -
331 char stringpool_str381[sizeof("GEORGIAN-ACADEMY")];
│ │ │ │ -
332 char stringpool_str382[sizeof("CP932")];
│ │ │ │ -
333 char stringpool_str384[sizeof("ARMSCII-8")];
│ │ │ │ -
334 char stringpool_str385[sizeof("CSISOLATINARABIC")];
│ │ │ │ -
335 char stringpool_str390[sizeof("IBM862")];
│ │ │ │ -
336 char stringpool_str391[sizeof("ASMO-708")];
│ │ │ │ -
337 char stringpool_str392[sizeof("KSC_5601")];
│ │ │ │ -
338 char stringpool_str395[sizeof("KOREAN")];
│ │ │ │ -
339 char stringpool_str396[sizeof("CP367")];
│ │ │ │ -
340 char stringpool_str398[sizeof("GB2312")];
│ │ │ │ -
341 char stringpool_str399[sizeof("CSISOLATIN2")];
│ │ │ │ -
342 char stringpool_str404[sizeof("JIS_C6220-1969-RO")];
│ │ │ │ -
343 char stringpool_str406[sizeof("HP-ROMAN8")];
│ │ │ │ -
344 char stringpool_str407[sizeof("GBK")];
│ │ │ │ -
345 char stringpool_str408[sizeof("GREEK8")];
│ │ │ │ -
346 char stringpool_str409[sizeof("MULELAO-1")];
│ │ │ │ -
347 char stringpool_str410[sizeof("CP1253")];
│ │ │ │ -
348 char stringpool_str412[sizeof("CP437")];
│ │ │ │ -
349 char stringpool_str414[sizeof("CSKOI8R")];
│ │ │ │ -
350 char stringpool_str415[sizeof("EUCJP")];
│ │ │ │ -
351 char stringpool_str417[sizeof("UCS-2LE")];
│ │ │ │ -
352 char stringpool_str418[sizeof("CYRILLIC")];
│ │ │ │ -
353 char stringpool_str419[sizeof("ECMA-114")];
│ │ │ │ -
354 char stringpool_str420[sizeof("eucJP")];
│ │ │ │ -
355 char stringpool_str421[sizeof("UTF-16LE")];
│ │ │ │ -
356 char stringpool_str422[sizeof("MS-CYRL")];
│ │ │ │ -
357 char stringpool_str423[sizeof("ISO-IR-203")];
│ │ │ │ -
358 char stringpool_str424[sizeof("EUC-JP")];
│ │ │ │ -
359 char stringpool_str425[sizeof("mac_cyr")];
│ │ │ │ -
360 char stringpool_str427[sizeof("GB_2312-80")];
│ │ │ │ -
361 char stringpool_str429[sizeof("CP1133")];
│ │ │ │ -
362 char stringpool_str433[sizeof("CN-GB-ISOIR165")];
│ │ │ │ -
363 char stringpool_str434[sizeof("CSISOLATINCYRILLIC")];
│ │ │ │ -
364 char stringpool_str435[sizeof("MACTHAI")];
│ │ │ │ -
365 char stringpool_str439[sizeof("ISO-2022-CN")];
│ │ │ │ -
366 char stringpool_str440[sizeof("KS_C_5601-1989")];
│ │ │ │ -
367 char stringpool_str441[sizeof("CSISOLATIN3")];
│ │ │ │ -
368 char stringpool_str442[sizeof("ISO_8859-8:1988")];
│ │ │ │ -
369 char stringpool_str443[sizeof("ISO_8859-5:1988")];
│ │ │ │ -
370 char stringpool_str445[sizeof("ISO-2022-CN-EXT")];
│ │ │ │ -
371 char stringpool_str446[sizeof("ISO_8859-9:1989")];
│ │ │ │ -
372 char stringpool_str448[sizeof("MS-EE")];
│ │ │ │ -
373 char stringpool_str449[sizeof("KOI8-U")];
│ │ │ │ -
374 char stringpool_str450[sizeof("cp1252")];
│ │ │ │ -
375 char stringpool_str451[sizeof("UNICODE-1-1-UTF-7")];
│ │ │ │ -
376 char stringpool_str452[sizeof("ISO-CELTIC")];
│ │ │ │ -
377 char stringpool_str454[sizeof("cp1257")];
│ │ │ │ -
378 char stringpool_str455[sizeof("CSISOLATINGREEK")];
│ │ │ │ -
379 char stringpool_str456[sizeof("ISO-2022-JP-1")];
│ │ │ │ -
380 char stringpool_str457[sizeof("CSUNICODE11")];
│ │ │ │ -
381 char stringpool_str458[sizeof("WINDOWS-1251")];
│ │ │ │ -
382 char stringpool_str459[sizeof("WINDOWS-1258")];
│ │ │ │ -
383 char stringpool_str460[sizeof("WINDOWS-1255")];
│ │ │ │ -
384 char stringpool_str462[sizeof("CSISOLATINHEBREW")];
│ │ │ │ -
385 char stringpool_str464[sizeof("cp932")];
│ │ │ │ -
386 char stringpool_str465[sizeof("TCVN5712-1")];
│ │ │ │ -
387 char stringpool_str466[sizeof("CSVISCII")];
│ │ │ │ -
388 char stringpool_str468[sizeof("CSISO57GB1988")];
│ │ │ │ -
389 char stringpool_str470[sizeof("ISO_8859-4:1988")];
│ │ │ │ -
390 char stringpool_str471[sizeof("WINDOWS-1256")];
│ │ │ │ -
391 char stringpool_str472[sizeof("UNICODELITTLE")];
│ │ │ │ -
392 char stringpool_str473[sizeof("TIS620.2529-1")];
│ │ │ │ -
393 char stringpool_str474[sizeof("EUCKR")];
│ │ │ │ -
394 char stringpool_str475[sizeof("X0201")];
│ │ │ │ -
395 char stringpool_str476[sizeof("MACINTOSH")];
│ │ │ │ -
396 char stringpool_str477[sizeof("X0208")];
│ │ │ │ -
397 char stringpool_str479[sizeof("eucKR")];
│ │ │ │ -
398 char stringpool_str483[sizeof("EUC-KR")];
│ │ │ │ -
399 char stringpool_str484[sizeof("JIS_C6226-1983")];
│ │ │ │ -
400 char stringpool_str485[sizeof("WINDOWS-1250")];
│ │ │ │ -
401 char stringpool_str487[sizeof("WINDOWS-1254")];
│ │ │ │ -
402 char stringpool_str490[sizeof("IBM367")];
│ │ │ │ -
403 char stringpool_str491[sizeof("MS_KANJI")];
│ │ │ │ -
404 char stringpool_str492[sizeof("cp1253")];
│ │ │ │ -
405 char stringpool_str493[sizeof("ARABIC")];
│ │ │ │ -
406 char stringpool_str494[sizeof("cp437")];
│ │ │ │ -
407 char stringpool_str499[sizeof("EUCTW")];
│ │ │ │ -
408 char stringpool_str501[sizeof("KOI8-RU")];
│ │ │ │ -
409 char stringpool_str504[sizeof("eucTW")];
│ │ │ │ -
410 char stringpool_str506[sizeof("IBM437")];
│ │ │ │ -
411 char stringpool_str507[sizeof("VISCII1.1-1")];
│ │ │ │ -
412 char stringpool_str508[sizeof("EUC-TW")];
│ │ │ │ -
413 char stringpool_str514[sizeof("CN-GB")];
│ │ │ │ -
414 char stringpool_str515[sizeof("KS_C_5601-1987")];
│ │ │ │ -
415 char stringpool_str516[sizeof("WINDOWS-874")];
│ │ │ │ -
416 char stringpool_str517[sizeof("JOHAB")];
│ │ │ │ -
417 char stringpool_str518[sizeof("ISO_8859-1:1987")];
│ │ │ │ -
418 char stringpool_str527[sizeof("CSISO2022CN")];
│ │ │ │ -
419 char stringpool_str529[sizeof("UCS-4BE")];
│ │ │ │ -
420 char stringpool_str531[sizeof("ISO_8859-6:1987")];
│ │ │ │ -
421 char stringpool_str532[sizeof("ISO-2022-JP-2")];
│ │ │ │ -
422 char stringpool_str533[sizeof("TCVN-5712")];
│ │ │ │ -
423 char stringpool_str534[sizeof("WINDOWS-1252")];
│ │ │ │ -
424 char stringpool_str536[sizeof("WINDOWS-1257")];
│ │ │ │ -
425 char stringpool_str537[sizeof("ISO_646.IRV:1991")];
│ │ │ │ -
426 char stringpool_str538[sizeof("ISO_8859-3:1988")];
│ │ │ │ -
427 char stringpool_str539[sizeof("CSUNICODE11UTF7")];
│ │ │ │ -
428 char stringpool_str549[sizeof("CSIBM866")];
│ │ │ │ -
429 char stringpool_str553[sizeof("ISO-2022-JP")];
│ │ │ │ -
430 char stringpool_str555[sizeof("WINDOWS-1253")];
│ │ │ │ -
431 char stringpool_str561[sizeof("JIS_X0201")];
│ │ │ │ -
432 char stringpool_str563[sizeof("JIS_X0208")];
│ │ │ │ -
433 char stringpool_str565[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")];
│ │ │ │ -
434 char stringpool_str572[sizeof("CSKSC56011987")];
│ │ │ │ -
435 char stringpool_str576[sizeof("UCS-2BE")];
│ │ │ │ -
436 char stringpool_str577[sizeof("GREEK")];
│ │ │ │ -
437 char stringpool_str578[sizeof("MACICELAND")];
│ │ │ │ -
438 char stringpool_str579[sizeof("JISX0201-1976")];
│ │ │ │ -
439 char stringpool_str580[sizeof("UTF-16BE")];
│ │ │ │ -
440 char stringpool_str581[sizeof("UTF-32LE")];
│ │ │ │ -
441 char stringpool_str582[sizeof("MACCROATIAN")];
│ │ │ │ -
442 char stringpool_str586[sizeof("UNICODEBIG")];
│ │ │ │ -
443 char stringpool_str588[sizeof("TIS620.2533-1")];
│ │ │ │ -
444 char stringpool_str589[sizeof("CSISO58GB231280")];
│ │ │ │ -
445 char stringpool_str594[sizeof("ISO_8859-2:1987")];
│ │ │ │ -
446 char stringpool_str596[sizeof("ISO_8859-7:1987")];
│ │ │ │ -
447 char stringpool_str597[sizeof("MACROMAN")];
│ │ │ │ -
448 char stringpool_str600[sizeof("X0212")];
│ │ │ │ -
449 char stringpool_str602[sizeof("CSHPROMAN8")];
│ │ │ │ -
450 char stringpool_str604[sizeof("CSISO87JISX0208")];
│ │ │ │ -
451 char stringpool_str609[sizeof("JIS_X0208-1990")];
│ │ │ │ -
452 char stringpool_str612[sizeof("ISO-2022-KR")];
│ │ │ │ -
453 char stringpool_str613[sizeof("BIG5HKSCS")];
│ │ │ │ -
454 char stringpool_str615[sizeof("TIS620.2533-0")];
│ │ │ │ -
455 char stringpool_str619[sizeof("CSISO2022JP2")];
│ │ │ │ -
456 char stringpool_str622[sizeof("BIG5-HKSCS")];
│ │ │ │ -
457 char stringpool_str625[sizeof("CSMACINTOSH")];
│ │ │ │ -
458 char stringpool_str631[sizeof("CSHALFWIDTHKATAKANA")];
│ │ │ │ -
459 char stringpool_str641[sizeof("CSISO2022JP")];
│ │ │ │ -
460 char stringpool_str643[sizeof("MS-HEBR")];
│ │ │ │ -
461 char stringpool_str657[sizeof("JIS_X0212-1990")];
│ │ │ │ -
462 char stringpool_str675[sizeof("CSPC862LATINHEBREW")];
│ │ │ │ -
463 char stringpool_str677[sizeof("HZ-GB-2312")];
│ │ │ │ -
464 char stringpool_str679[sizeof("JIS_X0208-1983")];
│ │ │ │ -
465 char stringpool_str681[sizeof("NEXTSTEP")];
│ │ │ │ -
466 char stringpool_str683[sizeof("CSGB2312")];
│ │ │ │ -
467 char stringpool_str686[sizeof("JIS_X0212")];
│ │ │ │ -
468 char stringpool_str690[sizeof("CSEUCKR")];
│ │ │ │ -
469 char stringpool_str695[sizeof("BIGFIVE")];
│ │ │ │ -
470 char stringpool_str697[sizeof("MACROMANIA")];
│ │ │ │ -
471 char stringpool_str700[sizeof("CSISO2022KR")];
│ │ │ │ -
472 char stringpool_str702[sizeof("HEBREW")];
│ │ │ │ -
473 char stringpool_str704[sizeof("BIG-FIVE")];
│ │ │ │ -
474 char stringpool_str715[sizeof("CSEUCTW")];
│ │ │ │ -
475 char stringpool_str717[sizeof("ANSI_X3.4-1968")];
│ │ │ │ -
476 char stringpool_str721[sizeof("MS-ARAB")];
│ │ │ │ -
477 char stringpool_str723[sizeof("MACCYRILLIC")];
│ │ │ │ -
478 char stringpool_str729[sizeof("ANSI_X3.4-1986")];
│ │ │ │ -
479 char stringpool_str735[sizeof("CSPC850MULTILINGUAL")];
│ │ │ │ -
480 char stringpool_str737[sizeof("IBM-CP1133")];
│ │ │ │ -
481 char stringpool_str740[sizeof("UTF-32BE")];
│ │ │ │ -
482 char stringpool_str749[sizeof("MS-TURK")];
│ │ │ │ -
483 char stringpool_str764[sizeof("JIS_X0212.1990-0")];
│ │ │ │ -
484 char stringpool_str793[sizeof("MACCENTRALEUROPE")];
│ │ │ │ -
485 char stringpool_str815[sizeof("MACTURKISH")];
│ │ │ │ -
486 char stringpool_str822[sizeof("MS-GREEK")];
│ │ │ │ -
487 char stringpool_str827[sizeof("MACARABIC")];
│ │ │ │ -
488 char stringpool_str868[sizeof("WINBALTRIM")];
│ │ │ │ -
489 char stringpool_str878[sizeof("MACUKRAINE")];
│ │ │ │ -
490 char stringpool_str897[sizeof("TCVN5712-1:1993")];
│ │ │ │ -
491 char stringpool_str911[sizeof("MACGREEK")];
│ │ │ │ -
492 char stringpool_str1057[sizeof("CSEUCPKDFMTJAPANESE")];
│ │ │ │ -
493 char stringpool_str1069[sizeof("MACHEBREW")];
│ │ │ │ -
494 };
│ │ │ │ -
│ │ │ │ -
495static const struct stringpool_t stringpool_contents =
│ │ │ │ -
496 {
│ │ │ │ -
497 "SJIS",
│ │ │ │ -
498 "koi8",
│ │ │ │ -
499 "sjis",
│ │ │ │ -
500 "L1",
│ │ │ │ -
501 "L8",
│ │ │ │ -
502 "L5",
│ │ │ │ -
503 "utf8",
│ │ │ │ -
504 "iso81",
│ │ │ │ -
505 "big5",
│ │ │ │ -
506 "iso88",
│ │ │ │ -
507 "iso15",
│ │ │ │ -
508 "iso85",
│ │ │ │ -
509 "iso89",
│ │ │ │ -
510 "thai8",
│ │ │ │ -
511 "L6",
│ │ │ │ -
512 "roma8",
│ │ │ │ -
513 "866",
│ │ │ │ -
514 "iso815",
│ │ │ │ -
515 "greek8",
│ │ │ │ -
516 "iso_1",
│ │ │ │ -
517 "roman8",
│ │ │ │ -
518 "R8",
│ │ │ │ -
519 "646",
│ │ │ │ -
520 "L4",
│ │ │ │ -
521 "iso86",
│ │ │ │ -
522 "iso88591",
│ │ │ │ -
523 "iso88598",
│ │ │ │ -
524 "LATIN1",
│ │ │ │ -
525 "iso88595",
│ │ │ │ -
526 "LATIN8",
│ │ │ │ -
527 "iso88599",
│ │ │ │ -
528 "LATIN5",
│ │ │ │ -
529 "850",
│ │ │ │ -
530 "ISO8859-1",
│ │ │ │ -
531 "ISO8859-8",
│ │ │ │ -
532 "iso885915",
│ │ │ │ -
533 "ISO8859-5",
│ │ │ │ -
534 "HZ",
│ │ │ │ -
535 "ISO8859-9",
│ │ │ │ -
536 "ISO-8859-1",
│ │ │ │ -
537 "ISO-8859-8",
│ │ │ │ -
538 "ISO8859-15",
│ │ │ │ -
539 "ISO-8859-5",
│ │ │ │ -
540 "iso10",
│ │ │ │ -
541 "ISO-8859-9",
│ │ │ │ -
542 "iso88596",
│ │ │ │ -
543 "iso14",
│ │ │ │ -
544 "iso84",
│ │ │ │ -
545 "LATIN6",
│ │ │ │ -
546 "ISO-8859-15",
│ │ │ │ -
547 "ISO_8859-1",
│ │ │ │ -
548 "ISO8859-6",
│ │ │ │ -
549 "ISO_8859-8",
│ │ │ │ -
550 "CN",
│ │ │ │ -
551 "ISO_8859-5",
│ │ │ │ -
552 "ISO_8859-9",
│ │ │ │ -
553 "L2",
│ │ │ │ -
554 "L7",
│ │ │ │ -
555 "ISO-8859-6",
│ │ │ │ -
556 "iso646",
│ │ │ │ -
557 "ISO_8859-15",
│ │ │ │ -
558 "C99",
│ │ │ │ -
559 "ISO_8859-15:1998",
│ │ │ │ -
560 "ISO-IR-58",
│ │ │ │ -
561 "ISO-8859-16",
│ │ │ │ -
562 "JP",
│ │ │ │ -
563 "US",
│ │ │ │ -
564 "iso88594",
│ │ │ │ -
565 "ISO_8859-6",
│ │ │ │ -
566 "LATIN4",
│ │ │ │ -
567 "L3",
│ │ │ │ -
568 "ISO-IR-159",
│ │ │ │ -
569 "ISO-IR-199",
│ │ │ │ -
570 "ISO-IR-6",
│ │ │ │ -
571 "CP819",
│ │ │ │ -
572 "ISO8859-4",
│ │ │ │ -
573 "ISO_8859-16",
│ │ │ │ -
574 "ISO8859-10",
│ │ │ │ -
575 "ISO-IR-165",
│ │ │ │ -
576 "SHIFT-JIS",
│ │ │ │ -
577 "ISO-8859-4",
│ │ │ │ -
578 "ISO_8859-14:1998",
│ │ │ │ -
579 "ISO-8859-10",
│ │ │ │ -
580 "ISO-IR-101",
│ │ │ │ -
581 "ISO-8859-14",
│ │ │ │ -
582 "ISO-IR-148",
│ │ │ │ -
583 "ISO_8859-16:2000",
│ │ │ │ -
584 "ISO-IR-109",
│ │ │ │ -
585 "ISO-IR-149",
│ │ │ │ -
586 "SHIFT_JIS",
│ │ │ │ -
587 "ISO_8859-4",
│ │ │ │ -
588 "hp15CN",
│ │ │ │ -
589 "ISO-IR-166",
│ │ │ │ -
590 "ISO_8859-10",
│ │ │ │ -
591 "CP949",
│ │ │ │ -
592 "CP866",
│ │ │ │ -
593 "ISO_8859-14",
│ │ │ │ -
594 "ASCII",
│ │ │ │ -
595 "ISO-IR-14",
│ │ │ │ -
596 "862",
│ │ │ │ -
597 "ISO-IR-110",
│ │ │ │ -
598 "GB_1988-80",
│ │ │ │ -
599 "CP850",
│ │ │ │ -
600 "CP950",
│ │ │ │ -
601 "tis620",
│ │ │ │ -
602 "iso82",
│ │ │ │ -
603 "TIS620",
│ │ │ │ -
604 "iso87",
│ │ │ │ -
605 "JIS0208",
│ │ │ │ -
606 "UTF8",
│ │ │ │ -
607 "TIS-620",
│ │ │ │ -
608 "ISO-IR-100",
│ │ │ │ -
609 "ISO-IR-179",
│ │ │ │ -
610 "UTF-8",
│ │ │ │ -
611 "ISO-IR-144",
│ │ │ │ -
612 "CP65001",
│ │ │ │ -
613 "CP1251",
│ │ │ │ -
614 "CP1258",
│ │ │ │ -
615 "CP1255",
│ │ │ │ -
616 "ISO_8859-10:1992",
│ │ │ │ -
617 "ISO646-CN",
│ │ │ │ -
618 "iso88592",
│ │ │ │ -
619 "ISO-IR-138",
│ │ │ │ -
620 "LATIN2",
│ │ │ │ -
621 "iso88597",
│ │ │ │ -
622 "ISO-IR-126",
│ │ │ │ -
623 "CSISO159JISX02121990",
│ │ │ │ -
624 "LATIN7",
│ │ │ │ -
625 "IBM819",
│ │ │ │ -
626 "ISO8859-2",
│ │ │ │ -
627 "macturk",
│ │ │ │ -
628 "iso13",
│ │ │ │ -
629 "iso83",
│ │ │ │ -
630 "ISO8859-7",
│ │ │ │ -
631 "KOI8-T",
│ │ │ │ -
632 "ISO646-US",
│ │ │ │ -
633 "TIS620-0",
│ │ │ │ -
634 "BIG5",
│ │ │ │ -
635 "ISO-8859-2",
│ │ │ │ -
636 "CP1256",
│ │ │ │ -
637 "ELOT_928",
│ │ │ │ -
638 "macgreek",
│ │ │ │ -
639 "ISO-8859-7",
│ │ │ │ -
640 "CSISOLATIN1",
│ │ │ │ -
641 "CP1361",
│ │ │ │ -
642 "BIG-5",
│ │ │ │ -
643 "cp949",
│ │ │ │ -
644 "CSISOLATIN5",
│ │ │ │ -
645 "cp866",
│ │ │ │ -
646 "ascii_8",
│ │ │ │ -
647 "macthai",
│ │ │ │ -
648 "CP936",
│ │ │ │ -
649 "ISO_8859-2",
│ │ │ │ -
650 "GB18030",
│ │ │ │ -
651 "ISO_8859-7",
│ │ │ │ -
652 "TCVN",
│ │ │ │ -
653 "IBM866",
│ │ │ │ -
654 "iso88593",
│ │ │ │ -
655 "CP874",
│ │ │ │ -
656 "LATIN3",
│ │ │ │ -
657 "cp850",
│ │ │ │ -
658 "CP1250",
│ │ │ │ -
659 "cp950",
│ │ │ │ -
660 "CSISOLATIN6",
│ │ │ │ -
661 "CP1254",
│ │ │ │ -
662 "ISO-IR-87",
│ │ │ │ -
663 "ISO-IR-57",
│ │ │ │ -
664 "MS-ANSI",
│ │ │ │ -
665 "CSASCII",
│ │ │ │ -
666 "IBM850",
│ │ │ │ -
667 "ISO-8859-3",
│ │ │ │ -
668 "ISO-IR-157",
│ │ │ │ -
669 "ISO-8859-13",
│ │ │ │ -
670 "CP862",
│ │ │ │ -
671 "cp1251",
│ │ │ │ -
672 "ISO_8859-3",
│ │ │ │ -
673 "cp1258",
│ │ │ │ -
674 "EUCCN",
│ │ │ │ -
675 "cp1255",
│ │ │ │ -
676 "ISO-IR-226",
│ │ │ │ -
677 "CSISOLATIN4",
│ │ │ │ -
678 "ISO_8859-13",
│ │ │ │ -
679 "US-ASCII",
│ │ │ │ -
680 "CSSHIFTJIS",
│ │ │ │ -
681 "EUC-CN",
│ │ │ │ -
682 "CSISO14JISC6220RO",
│ │ │ │ -
683 "UHC",
│ │ │ │ -
684 "ROMAN8",
│ │ │ │ -
685 "KOI8-R",
│ │ │ │ -
686 "cp1256",
│ │ │ │ -
687 "GEORGIAN-PS",
│ │ │ │ -
688 "ISO646-JP",
│ │ │ │ -
689 "cp936",
│ │ │ │ -
690 "CSBIG5",
│ │ │ │ -
691 "cp874",
│ │ │ │ -
692 "JAVA",
│ │ │ │ -
693 "cp1250",
│ │ │ │ -
694 "CN-BIG5",
│ │ │ │ -
695 "cp1254",
│ │ │ │ -
696 "UTF7",
│ │ │ │ -
697 "ISO-IR-127",
│ │ │ │ -
698 "VISCII",
│ │ │ │ -
699 "ECMA-118",
│ │ │ │ -
700 "UTF-7",
│ │ │ │ -
701 "UNICODE-1-1",
│ │ │ │ -
702 "CP1252",
│ │ │ │ -
703 "mac",
│ │ │ │ -
704 "UCS-4LE",
│ │ │ │ -
705 "CP1257",
│ │ │ │ -
706 "cp862",
│ │ │ │ -
707 "CHINESE",
│ │ │ │ -
708 "MAC",
│ │ │ │ -
709 "GEORGIAN-ACADEMY",
│ │ │ │ -
710 "CP932",
│ │ │ │ -
711 "ARMSCII-8",
│ │ │ │ -
712 "CSISOLATINARABIC",
│ │ │ │ -
713 "IBM862",
│ │ │ │ -
714 "ASMO-708",
│ │ │ │ -
715 "KSC_5601",
│ │ │ │ -
716 "KOREAN",
│ │ │ │ -
717 "CP367",
│ │ │ │ -
718 "GB2312",
│ │ │ │ -
719 "CSISOLATIN2",
│ │ │ │ -
720 "JIS_C6220-1969-RO",
│ │ │ │ -
721 "HP-ROMAN8",
│ │ │ │ -
722 "GBK",
│ │ │ │ -
723 "GREEK8",
│ │ │ │ -
724 "MULELAO-1",
│ │ │ │ -
725 "CP1253",
│ │ │ │ -
726 "CP437",
│ │ │ │ -
727 "CSKOI8R",
│ │ │ │ -
728 "EUCJP",
│ │ │ │ -
729 "UCS-2LE",
│ │ │ │ -
730 "CYRILLIC",
│ │ │ │ -
731 "ECMA-114",
│ │ │ │ -
732 "eucJP",
│ │ │ │ -
733 "UTF-16LE",
│ │ │ │ -
734 "MS-CYRL",
│ │ │ │ -
735 "ISO-IR-203",
│ │ │ │ -
736 "EUC-JP",
│ │ │ │ -
737 "mac_cyr",
│ │ │ │ -
738 "GB_2312-80",
│ │ │ │ -
739 "CP1133",
│ │ │ │ -
740 "CN-GB-ISOIR165",
│ │ │ │ -
741 "CSISOLATINCYRILLIC",
│ │ │ │ -
742 "MACTHAI",
│ │ │ │ -
743 "ISO-2022-CN",
│ │ │ │ -
744 "KS_C_5601-1989",
│ │ │ │ -
745 "CSISOLATIN3",
│ │ │ │ -
746 "ISO_8859-8:1988",
│ │ │ │ -
747 "ISO_8859-5:1988",
│ │ │ │ -
748 "ISO-2022-CN-EXT",
│ │ │ │ -
749 "ISO_8859-9:1989",
│ │ │ │ -
750 "MS-EE",
│ │ │ │ -
751 "KOI8-U",
│ │ │ │ -
752 "cp1252",
│ │ │ │ -
753 "UNICODE-1-1-UTF-7",
│ │ │ │ -
754 "ISO-CELTIC",
│ │ │ │ -
755 "cp1257",
│ │ │ │ -
756 "CSISOLATINGREEK",
│ │ │ │ -
757 "ISO-2022-JP-1",
│ │ │ │ -
758 "CSUNICODE11",
│ │ │ │ -
759 "WINDOWS-1251",
│ │ │ │ -
760 "WINDOWS-1258",
│ │ │ │ -
761 "WINDOWS-1255",
│ │ │ │ -
762 "CSISOLATINHEBREW",
│ │ │ │ -
763 "cp932",
│ │ │ │ -
764 "TCVN5712-1",
│ │ │ │ -
765 "CSVISCII",
│ │ │ │ -
766 "CSISO57GB1988",
│ │ │ │ -
767 "ISO_8859-4:1988",
│ │ │ │ -
768 "WINDOWS-1256",
│ │ │ │ -
769 "UNICODELITTLE",
│ │ │ │ -
770 "TIS620.2529-1",
│ │ │ │ -
771 "EUCKR",
│ │ │ │ -
772 "X0201",
│ │ │ │ -
773 "MACINTOSH",
│ │ │ │ -
774 "X0208",
│ │ │ │ -
775 "eucKR",
│ │ │ │ -
776 "EUC-KR",
│ │ │ │ -
777 "JIS_C6226-1983",
│ │ │ │ -
778 "WINDOWS-1250",
│ │ │ │ -
779 "WINDOWS-1254",
│ │ │ │ -
780 "IBM367",
│ │ │ │ -
781 "MS_KANJI",
│ │ │ │ -
782 "cp1253",
│ │ │ │ -
783 "ARABIC",
│ │ │ │ -
784 "cp437",
│ │ │ │ -
785 "EUCTW",
│ │ │ │ -
786 "KOI8-RU",
│ │ │ │ -
787 "eucTW",
│ │ │ │ -
788 "IBM437",
│ │ │ │ -
789 "VISCII1.1-1",
│ │ │ │ -
790 "EUC-TW",
│ │ │ │ -
791 "CN-GB",
│ │ │ │ -
792 "KS_C_5601-1987",
│ │ │ │ -
793 "WINDOWS-874",
│ │ │ │ -
794 "JOHAB",
│ │ │ │ -
795 "ISO_8859-1:1987",
│ │ │ │ -
796 "CSISO2022CN",
│ │ │ │ -
797 "UCS-4BE",
│ │ │ │ -
798 "ISO_8859-6:1987",
│ │ │ │ -
799 "ISO-2022-JP-2",
│ │ │ │ -
800 "TCVN-5712",
│ │ │ │ -
801 "WINDOWS-1252",
│ │ │ │ -
802 "WINDOWS-1257",
│ │ │ │ -
803 "ISO_646.IRV:1991",
│ │ │ │ -
804 "ISO_8859-3:1988",
│ │ │ │ -
805 "CSUNICODE11UTF7",
│ │ │ │ -
806 "CSIBM866",
│ │ │ │ -
807 "ISO-2022-JP",
│ │ │ │ -
808 "WINDOWS-1253",
│ │ │ │ -
809 "JIS_X0201",
│ │ │ │ -
810 "JIS_X0208",
│ │ │ │ -
811 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
│ │ │ │ -
812 "CSKSC56011987",
│ │ │ │ -
813 "UCS-2BE",
│ │ │ │ -
814 "GREEK",
│ │ │ │ -
815 "MACICELAND",
│ │ │ │ -
816 "JISX0201-1976",
│ │ │ │ -
817 "UTF-16BE",
│ │ │ │ -
818 "UTF-32LE",
│ │ │ │ -
819 "MACCROATIAN",
│ │ │ │ -
820 "UNICODEBIG",
│ │ │ │ -
821 "TIS620.2533-1",
│ │ │ │ -
822 "CSISO58GB231280",
│ │ │ │ -
823 "ISO_8859-2:1987",
│ │ │ │ -
824 "ISO_8859-7:1987",
│ │ │ │ -
825 "MACROMAN",
│ │ │ │ -
826 "X0212",
│ │ │ │ -
827 "CSHPROMAN8",
│ │ │ │ -
828 "CSISO87JISX0208",
│ │ │ │ -
829 "JIS_X0208-1990",
│ │ │ │ -
830 "ISO-2022-KR",
│ │ │ │ -
831 "BIG5HKSCS",
│ │ │ │ -
832 "TIS620.2533-0",
│ │ │ │ -
833 "CSISO2022JP2",
│ │ │ │ -
834 "BIG5-HKSCS",
│ │ │ │ -
835 "CSMACINTOSH",
│ │ │ │ -
836 "CSHALFWIDTHKATAKANA",
│ │ │ │ -
837 "CSISO2022JP",
│ │ │ │ -
838 "MS-HEBR",
│ │ │ │ -
839 "JIS_X0212-1990",
│ │ │ │ -
840 "CSPC862LATINHEBREW",
│ │ │ │ -
841 "HZ-GB-2312",
│ │ │ │ -
842 "JIS_X0208-1983",
│ │ │ │ -
843 "NEXTSTEP",
│ │ │ │ -
844 "CSGB2312",
│ │ │ │ -
845 "JIS_X0212",
│ │ │ │ -
846 "CSEUCKR",
│ │ │ │ -
847 "BIGFIVE",
│ │ │ │ -
848 "MACROMANIA",
│ │ │ │ -
849 "CSISO2022KR",
│ │ │ │ -
850 "HEBREW",
│ │ │ │ -
851 "BIG-FIVE",
│ │ │ │ -
852 "CSEUCTW",
│ │ │ │ -
853 "ANSI_X3.4-1968",
│ │ │ │ -
854 "MS-ARAB",
│ │ │ │ -
855 "MACCYRILLIC",
│ │ │ │ -
856 "ANSI_X3.4-1986",
│ │ │ │ -
857 "CSPC850MULTILINGUAL",
│ │ │ │ -
858 "IBM-CP1133",
│ │ │ │ -
859 "UTF-32BE",
│ │ │ │ -
860 "MS-TURK",
│ │ │ │ -
861 "JIS_X0212.1990-0",
│ │ │ │ -
862 "MACCENTRALEUROPE",
│ │ │ │ -
863 "MACTURKISH",
│ │ │ │ -
864 "MS-GREEK",
│ │ │ │ -
865 "MACARABIC",
│ │ │ │ -
866 "WINBALTRIM",
│ │ │ │ -
867 "MACUKRAINE",
│ │ │ │ -
868 "TCVN5712-1:1993",
│ │ │ │ -
869 "MACGREEK",
│ │ │ │ -
870 "CSEUCPKDFMTJAPANESE",
│ │ │ │ -
871 "MACHEBREW"
│ │ │ │ -
872 };
│ │ │ │ -
873#define stringpool ((const char *) &stringpool_contents)
│ │ │ │ -
874const struct charset_alias *
│ │ │ │ -
875charset_lookup (register const char *str, register size_t len)
│ │ │ │ -
876{
│ │ │ │ -
877 enum
│ │ │ │ -
878 {
│ │ │ │ -
879 TOTAL_KEYWORDS = 375,
│ │ │ │ -
880 MIN_WORD_LENGTH = 2,
│ │ │ │ -
881 MAX_WORD_LENGTH = 45,
│ │ │ │ -
882 MIN_HASH_VALUE = 32,
│ │ │ │ -
883 MAX_HASH_VALUE = 1069
│ │ │ │ -
884 };
│ │ │ │ -
885
│ │ │ │ -
886 static const struct charset_alias wordlist[] =
│ │ │ │ -
887 {
│ │ │ │ -
888 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
889 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
890 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
891 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
893 {-1,-1}, {-1,-1},
│ │ │ │ -
894#line 273 "charset_lookup.gperf"
│ │ │ │ -
895 {(int)offsetof(struct stringpool_t, stringpool_str32), 90},
│ │ │ │ -
896 {-1,-1},
│ │ │ │ -
897#line 376 "charset_lookup.gperf"
│ │ │ │ -
898 {(int)offsetof(struct stringpool_t, stringpool_str34), 71},
│ │ │ │ -
899#line 360 "charset_lookup.gperf"
│ │ │ │ -
900 {(int)offsetof(struct stringpool_t, stringpool_str35), 90},
│ │ │ │ -
901#line 229 "charset_lookup.gperf"
│ │ │ │ -
902 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},
│ │ │ │ -
903#line 236 "charset_lookup.gperf"
│ │ │ │ -
904 {(int)offsetof(struct stringpool_t, stringpool_str37), 53},
│ │ │ │ -
905#line 233 "charset_lookup.gperf"
│ │ │ │ -
906 {(int)offsetof(struct stringpool_t, stringpool_str38), 63},
│ │ │ │ -
907#line 363 "charset_lookup.gperf"
│ │ │ │ -
908 {(int)offsetof(struct stringpool_t, stringpool_str39), 1},
│ │ │ │ -
909 {-1,-1},
│ │ │ │ -
910#line 338 "charset_lookup.gperf"
│ │ │ │ -
911 {(int)offsetof(struct stringpool_t, stringpool_str41), 0},
│ │ │ │ -
912#line 319 "charset_lookup.gperf"
│ │ │ │ -
913 {(int)offsetof(struct stringpool_t, stringpool_str42), 11},
│ │ │ │ -
914#line 346 "charset_lookup.gperf"
│ │ │ │ -
915 {(int)offsetof(struct stringpool_t, stringpool_str43), 62},
│ │ │ │ -
916#line 373 "charset_lookup.gperf"
│ │ │ │ -
917 {(int)offsetof(struct stringpool_t, stringpool_str44), 54},
│ │ │ │ -
918#line 343 "charset_lookup.gperf"
│ │ │ │ -
919 {(int)offsetof(struct stringpool_t, stringpool_str45), 59},
│ │ │ │ -
920 {-1,-1},
│ │ │ │ -
921#line 357 "charset_lookup.gperf"
│ │ │ │ -
922 {(int)offsetof(struct stringpool_t, stringpool_str47), 63},
│ │ │ │ -
923#line 361 "charset_lookup.gperf"
│ │ │ │ -
924 {(int)offsetof(struct stringpool_t, stringpool_str48), 67},
│ │ │ │ -
925#line 234 "charset_lookup.gperf"
│ │ │ │ -
926 {(int)offsetof(struct stringpool_t, stringpool_str49), 51},
│ │ │ │ -
927#line 358 "charset_lookup.gperf"
│ │ │ │ -
928 {(int)offsetof(struct stringpool_t, stringpool_str50), 89},
│ │ │ │ -
929#line 10 "charset_lookup.gperf"
│ │ │ │ -
930 {(int)offsetof(struct stringpool_t, stringpool_str51), 32},
│ │ │ │ -
931 {-1,-1},
│ │ │ │ -
932#line 339 "charset_lookup.gperf"
│ │ │ │ -
933 {(int)offsetof(struct stringpool_t, stringpool_str53), 54},
│ │ │ │ -
934 {-1,-1}, {-1,-1},
│ │ │ │ -
935#line 369 "charset_lookup.gperf"
│ │ │ │ -
936 {(int)offsetof(struct stringpool_t, stringpool_str56), 61},
│ │ │ │ -
937#line 375 "charset_lookup.gperf"
│ │ │ │ -
938 {(int)offsetof(struct stringpool_t, stringpool_str57), 0},
│ │ │ │ -
939#line 359 "charset_lookup.gperf"
│ │ │ │ -
940 {(int)offsetof(struct stringpool_t, stringpool_str58), 89},
│ │ │ │ -
941 {-1,-1}, {-1,-1},
│ │ │ │ -
942#line 269 "charset_lookup.gperf"
│ │ │ │ -
943 {(int)offsetof(struct stringpool_t, stringpool_str61), 89},
│ │ │ │ -
944 {-1,-1},
│ │ │ │ -
945#line 7 "charset_lookup.gperf"
│ │ │ │ -
946 {(int)offsetof(struct stringpool_t, stringpool_str63), 92},
│ │ │ │ -
947 {-1,-1},
│ │ │ │ -
948#line 232 "charset_lookup.gperf"
│ │ │ │ -
949 {(int)offsetof(struct stringpool_t, stringpool_str65), 58},
│ │ │ │ -
950 {-1,-1},
│ │ │ │ -
951#line 344 "charset_lookup.gperf"
│ │ │ │ -
952 {(int)offsetof(struct stringpool_t, stringpool_str67), 60},
│ │ │ │ -
953 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
954#line 347 "charset_lookup.gperf"
│ │ │ │ -
955 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},
│ │ │ │ -
956 {-1,-1},
│ │ │ │ -
957#line 355 "charset_lookup.gperf"
│ │ │ │ -
958 {(int)offsetof(struct stringpool_t, stringpool_str73), 62},
│ │ │ │ -
959#line 237 "charset_lookup.gperf"
│ │ │ │ -
960 {(int)offsetof(struct stringpool_t, stringpool_str74), 0},
│ │ │ │ -
961#line 352 "charset_lookup.gperf"
│ │ │ │ -
962 {(int)offsetof(struct stringpool_t, stringpool_str75), 59},
│ │ │ │ -
963#line 244 "charset_lookup.gperf"
│ │ │ │ -
964 {(int)offsetof(struct stringpool_t, stringpool_str76), 53},
│ │ │ │ -
965#line 356 "charset_lookup.gperf"
│ │ │ │ -
966 {(int)offsetof(struct stringpool_t, stringpool_str77), 63},
│ │ │ │ -
967#line 241 "charset_lookup.gperf"
│ │ │ │ -
968 {(int)offsetof(struct stringpool_t, stringpool_str78), 63},
│ │ │ │ -
969#line 8 "charset_lookup.gperf"
│ │ │ │ -
970 {(int)offsetof(struct stringpool_t, stringpool_str79), 30},
│ │ │ │ -
971#line 169 "charset_lookup.gperf"
│ │ │ │ -
972 {(int)offsetof(struct stringpool_t, stringpool_str80), 0},
│ │ │ │ -
973 {-1,-1},
│ │ │ │ -
974#line 177 "charset_lookup.gperf"
│ │ │ │ -
975 {(int)offsetof(struct stringpool_t, stringpool_str82), 62},
│ │ │ │ -
976#line 348 "charset_lookup.gperf"
│ │ │ │ -
977 {(int)offsetof(struct stringpool_t, stringpool_str83), 54},
│ │ │ │ -
978#line 174 "charset_lookup.gperf"
│ │ │ │ -
979 {(int)offsetof(struct stringpool_t, stringpool_str84), 59},
│ │ │ │ -
980#line 113 "charset_lookup.gperf"
│ │ │ │ -
981 {(int)offsetof(struct stringpool_t, stringpool_str85), 44},
│ │ │ │ -
982#line 178 "charset_lookup.gperf"
│ │ │ │ -
983 {(int)offsetof(struct stringpool_t, stringpool_str86), 63},
│ │ │ │ -
984 {-1,-1}, {-1,-1},
│ │ │ │ -
985#line 128 "charset_lookup.gperf"
│ │ │ │ -
986 {(int)offsetof(struct stringpool_t, stringpool_str89), 0},
│ │ │ │ -
987 {-1,-1},
│ │ │ │ -
988#line 140 "charset_lookup.gperf"
│ │ │ │ -
989 {(int)offsetof(struct stringpool_t, stringpool_str91), 62},
│ │ │ │ -
990#line 171 "charset_lookup.gperf"
│ │ │ │ -
991 {(int)offsetof(struct stringpool_t, stringpool_str92), 54},
│ │ │ │ -
992#line 137 "charset_lookup.gperf"
│ │ │ │ -
993 {(int)offsetof(struct stringpool_t, stringpool_str93), 59},
│ │ │ │ -
994#line 370 "charset_lookup.gperf"
│ │ │ │ -
995 {(int)offsetof(struct stringpool_t, stringpool_str94), 51},
│ │ │ │ -
996#line 141 "charset_lookup.gperf"
│ │ │ │ -
997 {(int)offsetof(struct stringpool_t, stringpool_str95), 63},
│ │ │ │ -
998 {-1,-1},
│ │ │ │ -
999#line 353 "charset_lookup.gperf"
│ │ │ │ -
1000 {(int)offsetof(struct stringpool_t, stringpool_str97), 60},
│ │ │ │ -
1001#line 372 "charset_lookup.gperf"
│ │ │ │ -
1002 {(int)offsetof(struct stringpool_t, stringpool_str98), 53},
│ │ │ │ -
1003#line 342 "charset_lookup.gperf"
│ │ │ │ -
1004 {(int)offsetof(struct stringpool_t, stringpool_str99), 58},
│ │ │ │ -
1005#line 242 "charset_lookup.gperf"
│ │ │ │ -
1006 {(int)offsetof(struct stringpool_t, stringpool_str100), 51},
│ │ │ │ -
1007#line 132 "charset_lookup.gperf"
│ │ │ │ -
1008 {(int)offsetof(struct stringpool_t, stringpool_str101), 54},
│ │ │ │ -
1009 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1010#line 180 "charset_lookup.gperf"
│ │ │ │ -
1011 {(int)offsetof(struct stringpool_t, stringpool_str105), 0},
│ │ │ │ -
1012#line 175 "charset_lookup.gperf"
│ │ │ │ -
1013 {(int)offsetof(struct stringpool_t, stringpool_str106), 60},
│ │ │ │ -
1014#line 203 "charset_lookup.gperf"
│ │ │ │ -
1015 {(int)offsetof(struct stringpool_t, stringpool_str107), 62},
│ │ │ │ -
1016#line 25 "charset_lookup.gperf"
│ │ │ │ -
1017 {(int)offsetof(struct stringpool_t, stringpool_str108), 15},
│ │ │ │ -
1018#line 197 "charset_lookup.gperf"
│ │ │ │ -
1019 {(int)offsetof(struct stringpool_t, stringpool_str109), 59},
│ │ │ │ -
1020 {-1,-1},
│ │ │ │ -
1021#line 205 "charset_lookup.gperf"
│ │ │ │ -
1022 {(int)offsetof(struct stringpool_t, stringpool_str111), 63},
│ │ │ │ -
1023#line 230 "charset_lookup.gperf"
│ │ │ │ -
1024 {(int)offsetof(struct stringpool_t, stringpool_str112), 56},
│ │ │ │ -
1025 {-1,-1},
│ │ │ │ -
1026#line 235 "charset_lookup.gperf"
│ │ │ │ -
1027 {(int)offsetof(struct stringpool_t, stringpool_str114), 52},
│ │ │ │ -
1028#line 138 "charset_lookup.gperf"
│ │ │ │ -
1029 {(int)offsetof(struct stringpool_t, stringpool_str115), 60},
│ │ │ │ -
1030#line 374 "charset_lookup.gperf"
│ │ │ │ -
1031 {(int)offsetof(struct stringpool_t, stringpool_str116), 92},
│ │ │ │ -
1032#line 186 "charset_lookup.gperf"
│ │ │ │ -
1033 {(int)offsetof(struct stringpool_t, stringpool_str117), 54},
│ │ │ │ -
1034 {-1,-1}, {-1,-1},
│ │ │ │ -
1035#line 23 "charset_lookup.gperf"
│ │ │ │ -
1036 {(int)offsetof(struct stringpool_t, stringpool_str120), 13},
│ │ │ │ -
1037#line 187 "charset_lookup.gperf"
│ │ │ │ -
1038 {(int)offsetof(struct stringpool_t, stringpool_str121), 54},
│ │ │ │ -
1039#line 163 "charset_lookup.gperf"
│ │ │ │ -
1040 {(int)offsetof(struct stringpool_t, stringpool_str122), 14},
│ │ │ │ -
1041#line 133 "charset_lookup.gperf"
│ │ │ │ -
1042 {(int)offsetof(struct stringpool_t, stringpool_str123), 55},
│ │ │ │ -
1043 {-1,-1},
│ │ │ │ -
1044#line 220 "charset_lookup.gperf"
│ │ │ │ -
1045 {(int)offsetof(struct stringpool_t, stringpool_str125), 64},
│ │ │ │ -
1046#line 293 "charset_lookup.gperf"
│ │ │ │ -
1047 {(int)offsetof(struct stringpool_t, stringpool_str126), 92},
│ │ │ │ -
1048 {-1,-1}, {-1,-1},
│ │ │ │ -
1049#line 351 "charset_lookup.gperf"
│ │ │ │ -
1050 {(int)offsetof(struct stringpool_t, stringpool_str129), 58},
│ │ │ │ -
1051 {-1,-1},
│ │ │ │ -
1052#line 199 "charset_lookup.gperf"
│ │ │ │ -
1053 {(int)offsetof(struct stringpool_t, stringpool_str131), 60},
│ │ │ │ -
1054#line 240 "charset_lookup.gperf"
│ │ │ │ -
1055 {(int)offsetof(struct stringpool_t, stringpool_str132), 58},
│ │ │ │ -
1056#line 231 "charset_lookup.gperf"
│ │ │ │ -
1057 {(int)offsetof(struct stringpool_t, stringpool_str133), 57},
│ │ │ │ -
1058#line 155 "charset_lookup.gperf"
│ │ │ │ -
1059 {(int)offsetof(struct stringpool_t, stringpool_str134), 66},
│ │ │ │ -
1060#line 159 "charset_lookup.gperf"
│ │ │ │ -
1061 {(int)offsetof(struct stringpool_t, stringpool_str135), 53},
│ │ │ │ -
1062#line 164 "charset_lookup.gperf"
│ │ │ │ -
1063 {(int)offsetof(struct stringpool_t, stringpool_str136), 92},
│ │ │ │ -
1064#line 43 "charset_lookup.gperf"
│ │ │ │ -
1065 {(int)offsetof(struct stringpool_t, stringpool_str137), 0},
│ │ │ │ -
1066#line 173 "charset_lookup.gperf"
│ │ │ │ -
1067 {(int)offsetof(struct stringpool_t, stringpool_str138), 58},
│ │ │ │ -
1068#line 188 "charset_lookup.gperf"
│ │ │ │ -
1069 {(int)offsetof(struct stringpool_t, stringpool_str139), 55},
│ │ │ │ -
1070 {-1,-1}, {-1,-1},
│ │ │ │ -
1071#line 170 "charset_lookup.gperf"
│ │ │ │ -
1072 {(int)offsetof(struct stringpool_t, stringpool_str142), 51},
│ │ │ │ -
1073#line 156 "charset_lookup.gperf"
│ │ │ │ -
1074 {(int)offsetof(struct stringpool_t, stringpool_str143), 17},
│ │ │ │ -
1075 {-1,-1}, {-1,-1},
│ │ │ │ -
1076#line 271 "charset_lookup.gperf"
│ │ │ │ -
1077 {(int)offsetof(struct stringpool_t, stringpool_str146), 90},
│ │ │ │ -
1078#line 136 "charset_lookup.gperf"
│ │ │ │ -
1079 {(int)offsetof(struct stringpool_t, stringpool_str147), 58},
│ │ │ │ -
1080#line 185 "charset_lookup.gperf"
│ │ │ │ -
1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 53},
│ │ │ │ -
1082 {-1,-1}, {-1,-1},
│ │ │ │ -
1083#line 129 "charset_lookup.gperf"
│ │ │ │ -
1084 {(int)offsetof(struct stringpool_t, stringpool_str151), 51},
│ │ │ │ -
1085 {-1,-1},
│ │ │ │ -
1086#line 144 "charset_lookup.gperf"
│ │ │ │ -
1087 {(int)offsetof(struct stringpool_t, stringpool_str153), 56},
│ │ │ │ -
1088 {-1,-1},
│ │ │ │ -
1089#line 131 "charset_lookup.gperf"
│ │ │ │ -
1090 {(int)offsetof(struct stringpool_t, stringpool_str155), 53},
│ │ │ │ -
1091 {-1,-1},
│ │ │ │ -
1092#line 152 "charset_lookup.gperf"
│ │ │ │ -
1093 {(int)offsetof(struct stringpool_t, stringpool_str157), 63},
│ │ │ │ -
1094#line 189 "charset_lookup.gperf"
│ │ │ │ -
1095 {(int)offsetof(struct stringpool_t, stringpool_str158), 55},
│ │ │ │ -
1096#line 145 "charset_lookup.gperf"
│ │ │ │ -
1097 {(int)offsetof(struct stringpool_t, stringpool_str159), 57},
│ │ │ │ -
1098 {-1,-1},
│ │ │ │ -
1099#line 153 "charset_lookup.gperf"
│ │ │ │ -
1100 {(int)offsetof(struct stringpool_t, stringpool_str161), 65},
│ │ │ │ -
1101#line 272 "charset_lookup.gperf"
│ │ │ │ -
1102 {(int)offsetof(struct stringpool_t, stringpool_str162), 90},
│ │ │ │ -
1103#line 195 "charset_lookup.gperf"
│ │ │ │ -
1104 {(int)offsetof(struct stringpool_t, stringpool_str163), 58},
│ │ │ │ -
1105#line 337 "charset_lookup.gperf"
│ │ │ │ -
1106 {(int)offsetof(struct stringpool_t, stringpool_str164), 14},
│ │ │ │ -
1107#line 157 "charset_lookup.gperf"
│ │ │ │ -
1108 {(int)offsetof(struct stringpool_t, stringpool_str165), 67},
│ │ │ │ -
1109 {-1,-1},
│ │ │ │ -
1110#line 181 "charset_lookup.gperf"
│ │ │ │ -
1111 {(int)offsetof(struct stringpool_t, stringpool_str167), 51},
│ │ │ │ -
1112#line 50 "charset_lookup.gperf"
│ │ │ │ -
1113 {(int)offsetof(struct stringpool_t, stringpool_str168), 36},
│ │ │ │ -
1114 {-1,-1},
│ │ │ │ -
1115#line 46 "charset_lookup.gperf"
│ │ │ │ -
1116 {(int)offsetof(struct stringpool_t, stringpool_str170), 32},
│ │ │ │ -
1117#line 184 "charset_lookup.gperf"
│ │ │ │ -
1118 {(int)offsetof(struct stringpool_t, stringpool_str171), 53},
│ │ │ │ -
1119 {-1,-1},
│ │ │ │ -
1120#line 15 "charset_lookup.gperf"
│ │ │ │ -
1121 {(int)offsetof(struct stringpool_t, stringpool_str173), 92},
│ │ │ │ -
1122 {-1,-1}, {-1,-1},
│ │ │ │ -
1123#line 150 "charset_lookup.gperf"
│ │ │ │ -
1124 {(int)offsetof(struct stringpool_t, stringpool_str176), 64},
│ │ │ │ -
1125#line 9 "charset_lookup.gperf"
│ │ │ │ -
1126 {(int)offsetof(struct stringpool_t, stringpool_str177), 31},
│ │ │ │ -
1127 {-1,-1}, {-1,-1},
│ │ │ │ -
1128#line 146 "charset_lookup.gperf"
│ │ │ │ -
1129 {(int)offsetof(struct stringpool_t, stringpool_str180), 58},
│ │ │ │ -
1130 {-1,-1}, {-1,-1},
│ │ │ │ -
1131#line 105 "charset_lookup.gperf"
│ │ │ │ -
1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 15},
│ │ │ │ -
1133 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1134#line 44 "charset_lookup.gperf"
│ │ │ │ -
1135 {(int)offsetof(struct stringpool_t, stringpool_str187), 30},
│ │ │ │ -
1136 {-1,-1},
│ │ │ │ -
1137#line 51 "charset_lookup.gperf"
│ │ │ │ -
1138 {(int)offsetof(struct stringpool_t, stringpool_str189), 37},
│ │ │ │ -
1139 {-1,-1}, {-1,-1},
│ │ │ │ -
1140#line 362 "charset_lookup.gperf"
│ │ │ │ -
1141 {(int)offsetof(struct stringpool_t, stringpool_str192), 67},
│ │ │ │ -
1142#line 340 "charset_lookup.gperf"
│ │ │ │ -
1143 {(int)offsetof(struct stringpool_t, stringpool_str193), 56},
│ │ │ │ -
1144 {-1,-1},
│ │ │ │ -
1145#line 279 "charset_lookup.gperf"
│ │ │ │ -
1146 {(int)offsetof(struct stringpool_t, stringpool_str195), 67},
│ │ │ │ -
1147 {-1,-1},
│ │ │ │ -
1148#line 345 "charset_lookup.gperf"
│ │ │ │ -
1149 {(int)offsetof(struct stringpool_t, stringpool_str197), 61},
│ │ │ │ -
1150#line 208 "charset_lookup.gperf"
│ │ │ │ -
1151 {(int)offsetof(struct stringpool_t, stringpool_str198), 68},
│ │ │ │ -
1152 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1153#line 302 "charset_lookup.gperf"
│ │ │ │ -
1154 {(int)offsetof(struct stringpool_t, stringpool_str203), 1},
│ │ │ │ -
1155#line 278 "charset_lookup.gperf"
│ │ │ │ -
1156 {(int)offsetof(struct stringpool_t, stringpool_str204), 67},
│ │ │ │ -
1157 {-1,-1}, {-1,-1},
│ │ │ │ -
1158#line 143 "charset_lookup.gperf"
│ │ │ │ -
1159 {(int)offsetof(struct stringpool_t, stringpool_str207), 0},
│ │ │ │ -
1160 {-1,-1}, {-1,-1},
│ │ │ │ -
1161#line 158 "charset_lookup.gperf"
│ │ │ │ -
1162 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},
│ │ │ │ -
1163 {-1,-1},
│ │ │ │ -
1164#line 300 "charset_lookup.gperf"
│ │ │ │ -
1165 {(int)offsetof(struct stringpool_t, stringpool_str212), 1},
│ │ │ │ -
1166#line 151 "charset_lookup.gperf"
│ │ │ │ -
1167 {(int)offsetof(struct stringpool_t, stringpool_str213), 59},
│ │ │ │ -
1168 {-1,-1},
│ │ │ │ -
1169#line 42 "charset_lookup.gperf"
│ │ │ │ -
1170 {(int)offsetof(struct stringpool_t, stringpool_str215), 1},
│ │ │ │ -
1171#line 31 "charset_lookup.gperf"
│ │ │ │ -
1172 {(int)offsetof(struct stringpool_t, stringpool_str216), 20},
│ │ │ │ -
1173 {-1,-1},
│ │ │ │ -
1174#line 38 "charset_lookup.gperf"
│ │ │ │ -
1175 {(int)offsetof(struct stringpool_t, stringpool_str218), 27},
│ │ │ │ -
1176 {-1,-1},
│ │ │ │ -
1177#line 35 "charset_lookup.gperf"
│ │ │ │ -
1178 {(int)offsetof(struct stringpool_t, stringpool_str220), 24},
│ │ │ │ -
1179#line 182 "charset_lookup.gperf"
│ │ │ │ -
1180 {(int)offsetof(struct stringpool_t, stringpool_str221), 51},
│ │ │ │ -
1181#line 166 "charset_lookup.gperf"
│ │ │ │ -
1182 {(int)offsetof(struct stringpool_t, stringpool_str222), 15},
│ │ │ │ -
1183#line 349 "charset_lookup.gperf"
│ │ │ │ -
1184 {(int)offsetof(struct stringpool_t, stringpool_str223), 56},
│ │ │ │ -
1185 {-1,-1},
│ │ │ │ -
1186#line 149 "charset_lookup.gperf"
│ │ │ │ -
1187 {(int)offsetof(struct stringpool_t, stringpool_str225), 62},
│ │ │ │ -
1188#line 238 "charset_lookup.gperf"
│ │ │ │ -
1189 {(int)offsetof(struct stringpool_t, stringpool_str226), 56},
│ │ │ │ -
1190#line 354 "charset_lookup.gperf"
│ │ │ │ -
1191 {(int)offsetof(struct stringpool_t, stringpool_str227), 61},
│ │ │ │ -
1192#line 147 "charset_lookup.gperf"
│ │ │ │ -
1193 {(int)offsetof(struct stringpool_t, stringpool_str228), 61},
│ │ │ │ -
1194#line 62 "charset_lookup.gperf"
│ │ │ │ -
1195 {(int)offsetof(struct stringpool_t, stringpool_str229), 66},
│ │ │ │ -
1196#line 243 "charset_lookup.gperf"
│ │ │ │ -
1197 {(int)offsetof(struct stringpool_t, stringpool_str230), 52},
│ │ │ │ -
1198#line 118 "charset_lookup.gperf"
│ │ │ │ -
1199 {(int)offsetof(struct stringpool_t, stringpool_str231), 0},
│ │ │ │ -
1200#line 172 "charset_lookup.gperf"
│ │ │ │ -
1201 {(int)offsetof(struct stringpool_t, stringpool_str232), 56},
│ │ │ │ -
1202#line 381 "charset_lookup.gperf"
│ │ │ │ -
1203 {(int)offsetof(struct stringpool_t, stringpool_str233), 85},
│ │ │ │ -
1204#line 371 "charset_lookup.gperf"
│ │ │ │ -
1205 {(int)offsetof(struct stringpool_t, stringpool_str234), 52},
│ │ │ │ -
1206#line 341 "charset_lookup.gperf"
│ │ │ │ -
1207 {(int)offsetof(struct stringpool_t, stringpool_str235), 57},
│ │ │ │ -
1208#line 176 "charset_lookup.gperf"
│ │ │ │ -
1209 {(int)offsetof(struct stringpool_t, stringpool_str236), 61},
│ │ │ │ -
1210#line 223 "charset_lookup.gperf"
│ │ │ │ -
1211 {(int)offsetof(struct stringpool_t, stringpool_str237), 73},
│ │ │ │ -
1212#line 168 "charset_lookup.gperf"
│ │ │ │ -
1213 {(int)offsetof(struct stringpool_t, stringpool_str238), 92},
│ │ │ │ -
1214#line 280 "charset_lookup.gperf"
│ │ │ │ -
1215 {(int)offsetof(struct stringpool_t, stringpool_str239), 67},
│ │ │ │ -
1216#line 19 "charset_lookup.gperf"
│ │ │ │ -
1217 {(int)offsetof(struct stringpool_t, stringpool_str240), 11},
│ │ │ │ -
1218#line 134 "charset_lookup.gperf"
│ │ │ │ -
1219 {(int)offsetof(struct stringpool_t, stringpool_str241), 56},
│ │ │ │ -
1220#line 36 "charset_lookup.gperf"
│ │ │ │ -
1221 {(int)offsetof(struct stringpool_t, stringpool_str242), 25},
│ │ │ │ -
1222#line 92 "charset_lookup.gperf"
│ │ │ │ -
1223 {(int)offsetof(struct stringpool_t, stringpool_str243), 61},
│ │ │ │ -
1224#line 379 "charset_lookup.gperf"
│ │ │ │ -
1225 {(int)offsetof(struct stringpool_t, stringpool_str244), 80},
│ │ │ │ -
1226#line 139 "charset_lookup.gperf"
│ │ │ │ -
1227 {(int)offsetof(struct stringpool_t, stringpool_str245), 61},
│ │ │ │ -
1228 {-1,-1},
│ │ │ │ -
1229#line 70 "charset_lookup.gperf"
│ │ │ │ -
1230 {(int)offsetof(struct stringpool_t, stringpool_str247), 0},
│ │ │ │ -
1231#line 39 "charset_lookup.gperf"
│ │ │ │ -
1232 {(int)offsetof(struct stringpool_t, stringpool_str248), 28},
│ │ │ │ -
1233#line 17 "charset_lookup.gperf"
│ │ │ │ -
1234 {(int)offsetof(struct stringpool_t, stringpool_str249), 11},
│ │ │ │ -
1235#line 367 "charset_lookup.gperf"
│ │ │ │ -
1236 {(int)offsetof(struct stringpool_t, stringpool_str250), 36},
│ │ │ │ -
1237#line 74 "charset_lookup.gperf"
│ │ │ │ -
1238 {(int)offsetof(struct stringpool_t, stringpool_str251), 63},
│ │ │ │ -
1239#line 332 "charset_lookup.gperf"
│ │ │ │ -
1240 {(int)offsetof(struct stringpool_t, stringpool_str252), 32},
│ │ │ │ -
1241#line 364 "charset_lookup.gperf"
│ │ │ │ -
1242 {(int)offsetof(struct stringpool_t, stringpool_str253), 0},
│ │ │ │ -
1243 {-1,-1},
│ │ │ │ -
1244#line 380 "charset_lookup.gperf"
│ │ │ │ -
1245 {(int)offsetof(struct stringpool_t, stringpool_str255), 84},
│ │ │ │ -
1246#line 49 "charset_lookup.gperf"
│ │ │ │ -
1247 {(int)offsetof(struct stringpool_t, stringpool_str256), 35},
│ │ │ │ -
1248#line 191 "charset_lookup.gperf"
│ │ │ │ -
1249 {(int)offsetof(struct stringpool_t, stringpool_str257), 56},
│ │ │ │ -
1250 {-1,-1}, {-1,-1},
│ │ │ │ -
1251#line 102 "charset_lookup.gperf"
│ │ │ │ -
1252 {(int)offsetof(struct stringpool_t, stringpool_str260), 41},
│ │ │ │ -
1253#line 201 "charset_lookup.gperf"
│ │ │ │ -
1254 {(int)offsetof(struct stringpool_t, stringpool_str261), 61},
│ │ │ │ -
1255#line 274 "charset_lookup.gperf"
│ │ │ │ -
1256 {(int)offsetof(struct stringpool_t, stringpool_str262), 91},
│ │ │ │ -
1257 {-1,-1},
│ │ │ │ -
1258#line 121 "charset_lookup.gperf"
│ │ │ │ -
1259 {(int)offsetof(struct stringpool_t, stringpool_str264), 32},
│ │ │ │ -
1260#line 350 "charset_lookup.gperf"
│ │ │ │ -
1261 {(int)offsetof(struct stringpool_t, stringpool_str265), 57},
│ │ │ │ -
1262 {-1,-1},
│ │ │ │ -
1263#line 47 "charset_lookup.gperf"
│ │ │ │ -
1264 {(int)offsetof(struct stringpool_t, stringpool_str267), 33},
│ │ │ │ -
1265#line 239 "charset_lookup.gperf"
│ │ │ │ -
1266 {(int)offsetof(struct stringpool_t, stringpool_str268), 57},
│ │ │ │ -
1267#line 330 "charset_lookup.gperf"
│ │ │ │ -
1268 {(int)offsetof(struct stringpool_t, stringpool_str269), 30},
│ │ │ │ -
1269#line 30 "charset_lookup.gperf"
│ │ │ │ -
1270 {(int)offsetof(struct stringpool_t, stringpool_str270), 19},
│ │ │ │ -
1271#line 368 "charset_lookup.gperf"
│ │ │ │ -
1272 {(int)offsetof(struct stringpool_t, stringpool_str271), 37},
│ │ │ │ -
1273 {-1,-1},
│ │ │ │ -
1274#line 75 "charset_lookup.gperf"
│ │ │ │ -
1275 {(int)offsetof(struct stringpool_t, stringpool_str273), 51},
│ │ │ │ -
1276#line 34 "charset_lookup.gperf"
│ │ │ │ -
1277 {(int)offsetof(struct stringpool_t, stringpool_str274), 23},
│ │ │ │ -
1278#line 165 "charset_lookup.gperf"
│ │ │ │ -
1279 {(int)offsetof(struct stringpool_t, stringpool_str275), 68},
│ │ │ │ -
1280#line 162 "charset_lookup.gperf"
│ │ │ │ -
1281 {(int)offsetof(struct stringpool_t, stringpool_str276), 15},
│ │ │ │ -
1282 {-1,-1},
│ │ │ │ -
1283#line 259 "charset_lookup.gperf"
│ │ │ │ -
1284 {(int)offsetof(struct stringpool_t, stringpool_str278), 21},
│ │ │ │ -
1285#line 52 "charset_lookup.gperf"
│ │ │ │ -
1286 {(int)offsetof(struct stringpool_t, stringpool_str279), 92},
│ │ │ │ -
1287 {-1,-1},
│ │ │ │ -
1288#line 119 "charset_lookup.gperf"
│ │ │ │ -
1289 {(int)offsetof(struct stringpool_t, stringpool_str281), 30},
│ │ │ │ -
1290 {-1,-1},
│ │ │ │ -
1291#line 135 "charset_lookup.gperf"
│ │ │ │ -
1292 {(int)offsetof(struct stringpool_t, stringpool_str283), 57},
│ │ │ │ -
1293#line 154 "charset_lookup.gperf"
│ │ │ │ -
1294 {(int)offsetof(struct stringpool_t, stringpool_str284), 51},
│ │ │ │ -
1295 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1296#line 130 "charset_lookup.gperf"
│ │ │ │ -
1297 {(int)offsetof(struct stringpool_t, stringpool_str291), 52},
│ │ │ │ -
1298 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1299#line 45 "charset_lookup.gperf"
│ │ │ │ -
1300 {(int)offsetof(struct stringpool_t, stringpool_str296), 31},
│ │ │ │ -
1301 {-1,-1},
│ │ │ │ -
1302#line 321 "charset_lookup.gperf"
│ │ │ │ -
1303 {(int)offsetof(struct stringpool_t, stringpool_str298), 20},
│ │ │ │ -
1304#line 193 "charset_lookup.gperf"
│ │ │ │ -
1305 {(int)offsetof(struct stringpool_t, stringpool_str299), 57},
│ │ │ │ -
1306#line 328 "charset_lookup.gperf"
│ │ │ │ -
1307 {(int)offsetof(struct stringpool_t, stringpool_str300), 27},
│ │ │ │ -
1308#line 97 "charset_lookup.gperf"
│ │ │ │ -
1309 {(int)offsetof(struct stringpool_t, stringpool_str301), 16},
│ │ │ │ -
1310#line 325 "charset_lookup.gperf"
│ │ │ │ -
1311 {(int)offsetof(struct stringpool_t, stringpool_str302), 24},
│ │ │ │ -
1312 {-1,-1},
│ │ │ │ -
1313#line 161 "charset_lookup.gperf"
│ │ │ │ -
1314 {(int)offsetof(struct stringpool_t, stringpool_str304), 55},
│ │ │ │ -
1315#line 73 "charset_lookup.gperf"
│ │ │ │ -
1316 {(int)offsetof(struct stringpool_t, stringpool_str305), 58},
│ │ │ │ -
1317 {-1,-1},
│ │ │ │ -
1318#line 183 "charset_lookup.gperf"
│ │ │ │ -
1319 {(int)offsetof(struct stringpool_t, stringpool_str307), 52},
│ │ │ │ -
1320#line 294 "charset_lookup.gperf"
│ │ │ │ -
1321 {(int)offsetof(struct stringpool_t, stringpool_str308), 92},
│ │ │ │ -
1322#line 85 "charset_lookup.gperf"
│ │ │ │ -
1323 {(int)offsetof(struct stringpool_t, stringpool_str309), 90},
│ │ │ │ -
1324#line 93 "charset_lookup.gperf"
│ │ │ │ -
1325 {(int)offsetof(struct stringpool_t, stringpool_str310), 16},
│ │ │ │ -
1326 {-1,-1}, {-1,-1},
│ │ │ │ -
1327#line 61 "charset_lookup.gperf"
│ │ │ │ -
1328 {(int)offsetof(struct stringpool_t, stringpool_str313), 64},
│ │ │ │ -
1329#line 288 "charset_lookup.gperf"
│ │ │ │ -
1330 {(int)offsetof(struct stringpool_t, stringpool_str314), 36},
│ │ │ │ -
1331#line 270 "charset_lookup.gperf"
│ │ │ │ -
1332 {(int)offsetof(struct stringpool_t, stringpool_str315), 89},
│ │ │ │ -
1333 {-1,-1},
│ │ │ │ -
1334#line 221 "charset_lookup.gperf"
│ │ │ │ -
1335 {(int)offsetof(struct stringpool_t, stringpool_str317), 71},
│ │ │ │ -
1336 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1337#line 326 "charset_lookup.gperf"
│ │ │ │ -
1338 {(int)offsetof(struct stringpool_t, stringpool_str324), 25},
│ │ │ │ -
1339 {-1,-1}, {-1,-1},
│ │ │ │ -
1340#line 108 "charset_lookup.gperf"
│ │ │ │ -
1341 {(int)offsetof(struct stringpool_t, stringpool_str327), 43},
│ │ │ │ -
1342 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1343 {-1,-1}, {-1,-1},
│ │ │ │ -
1344#line 167 "charset_lookup.gperf"
│ │ │ │ -
1345 {(int)offsetof(struct stringpool_t, stringpool_str336), 64},
│ │ │ │ -
1346 {-1,-1},
│ │ │ │ -
1347#line 366 "charset_lookup.gperf"
│ │ │ │ -
1348 {(int)offsetof(struct stringpool_t, stringpool_str338), 35},
│ │ │ │ -
1349 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1350 {-1,-1},
│ │ │ │ -
1351#line 53 "charset_lookup.gperf"
│ │ │ │ -
1352 {(int)offsetof(struct stringpool_t, stringpool_str346), 11},
│ │ │ │ -
1353 {-1,-1}, {-1,-1},
│ │ │ │ -
1354#line 333 "charset_lookup.gperf"
│ │ │ │ -
1355 {(int)offsetof(struct stringpool_t, stringpool_str349), 33},
│ │ │ │ -
1356#line 207 "charset_lookup.gperf"
│ │ │ │ -
1357 {(int)offsetof(struct stringpool_t, stringpool_str350), 69},
│ │ │ │ -
1358 {-1,-1},
│ │ │ │ -
1359#line 320 "charset_lookup.gperf"
│ │ │ │ -
1360 {(int)offsetof(struct stringpool_t, stringpool_str352), 19},
│ │ │ │ -
1361 {-1,-1}, {-1,-1},
│ │ │ │ -
1362#line 26 "charset_lookup.gperf"
│ │ │ │ -
1363 {(int)offsetof(struct stringpool_t, stringpool_str355), 11},
│ │ │ │ -
1364#line 324 "charset_lookup.gperf"
│ │ │ │ -
1365 {(int)offsetof(struct stringpool_t, stringpool_str356), 23},
│ │ │ │ -
1366#line 301 "charset_lookup.gperf"
│ │ │ │ -
1367 {(int)offsetof(struct stringpool_t, stringpool_str357), 93},
│ │ │ │ -
1368#line 148 "charset_lookup.gperf"
│ │ │ │ -
1369 {(int)offsetof(struct stringpool_t, stringpool_str358), 60},
│ │ │ │ -
1370 {-1,-1},
│ │ │ │ -
1371#line 303 "charset_lookup.gperf"
│ │ │ │ -
1372 {(int)offsetof(struct stringpool_t, stringpool_str360), 94},
│ │ │ │ -
1373 {-1,-1}, {-1,-1},
│ │ │ │ -
1374#line 91 "charset_lookup.gperf"
│ │ │ │ -
1375 {(int)offsetof(struct stringpool_t, stringpool_str363), 61},
│ │ │ │ -
1376 {-1,-1}, {-1,-1},
│ │ │ │ -
1377#line 299 "charset_lookup.gperf"
│ │ │ │ -
1378 {(int)offsetof(struct stringpool_t, stringpool_str366), 93},
│ │ │ │ -
1379#line 289 "charset_lookup.gperf"
│ │ │ │ -
1380 {(int)offsetof(struct stringpool_t, stringpool_str367), 3},
│ │ │ │ -
1381#line 32 "charset_lookup.gperf"
│ │ │ │ -
1382 {(int)offsetof(struct stringpool_t, stringpool_str368), 21},
│ │ │ │ -
1383#line 377 "charset_lookup.gperf"
│ │ │ │ -
1384 {(int)offsetof(struct stringpool_t, stringpool_str369), 75},
│ │ │ │ -
1385#line 287 "charset_lookup.gperf"
│ │ │ │ -
1386 {(int)offsetof(struct stringpool_t, stringpool_str370), 6},
│ │ │ │ -
1387 {-1,-1},
│ │ │ │ -
1388#line 37 "charset_lookup.gperf"
│ │ │ │ -
1389 {(int)offsetof(struct stringpool_t, stringpool_str372), 26},
│ │ │ │ -
1390 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1391#line 331 "charset_lookup.gperf"
│ │ │ │ -
1392 {(int)offsetof(struct stringpool_t, stringpool_str378), 31},
│ │ │ │ -
1393#line 24 "charset_lookup.gperf"
│ │ │ │ -
1394 {(int)offsetof(struct stringpool_t, stringpool_str379), 14},
│ │ │ │ -
1395#line 245 "charset_lookup.gperf"
│ │ │ │ -
1396 {(int)offsetof(struct stringpool_t, stringpool_str380), 75},
│ │ │ │ -
1397#line 107 "charset_lookup.gperf"
│ │ │ │ -
1398 {(int)offsetof(struct stringpool_t, stringpool_str381), 42},
│ │ │ │ -
1399#line 48 "charset_lookup.gperf"
│ │ │ │ -
1400 {(int)offsetof(struct stringpool_t, stringpool_str382), 34},
│ │ │ │ -
1401 {-1,-1},
│ │ │ │ -
1402#line 14 "charset_lookup.gperf"
│ │ │ │ -
1403 {(int)offsetof(struct stringpool_t, stringpool_str384), 10},
│ │ │ │ -
1404#line 76 "charset_lookup.gperf"
│ │ │ │ -
1405 {(int)offsetof(struct stringpool_t, stringpool_str385), 60},
│ │ │ │ -
1406 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1407#line 120 "charset_lookup.gperf"
│ │ │ │ -
1408 {(int)offsetof(struct stringpool_t, stringpool_str390), 31},
│ │ │ │ -
1409#line 16 "charset_lookup.gperf"
│ │ │ │ -
1410 {(int)offsetof(struct stringpool_t, stringpool_str391), 60},
│ │ │ │ -
1411#line 226 "charset_lookup.gperf"
│ │ │ │ -
1412 {(int)offsetof(struct stringpool_t, stringpool_str392), 65},
│ │ │ │ -
1413 {-1,-1}, {-1,-1},
│ │ │ │ -
1414#line 225 "charset_lookup.gperf"
│ │ │ │ -
1415 {(int)offsetof(struct stringpool_t, stringpool_str395), 65},
│ │ │ │ -
1416#line 40 "charset_lookup.gperf"
│ │ │ │ -
1417 {(int)offsetof(struct stringpool_t, stringpool_str396), 92},
│ │ │ │ -
1418 {-1,-1},
│ │ │ │ -
1419#line 103 "charset_lookup.gperf"
│ │ │ │ -
1420 {(int)offsetof(struct stringpool_t, stringpool_str398), 16},
│ │ │ │ -
1421#line 71 "charset_lookup.gperf"
│ │ │ │ -
1422 {(int)offsetof(struct stringpool_t, stringpool_str399), 56},
│ │ │ │ -
1423 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1424#line 210 "charset_lookup.gperf"
│ │ │ │ -
1425 {(int)offsetof(struct stringpool_t, stringpool_str404), 64},
│ │ │ │ -
1426 {-1,-1},
│ │ │ │ -
1427#line 112 "charset_lookup.gperf"
│ │ │ │ -
1428 {(int)offsetof(struct stringpool_t, stringpool_str406), 89},
│ │ │ │ -
1429#line 104 "charset_lookup.gperf"
│ │ │ │ -
1430 {(int)offsetof(struct stringpool_t, stringpool_str407), 35},
│ │ │ │ -
1431#line 110 "charset_lookup.gperf"
│ │ │ │ -
1432 {(int)offsetof(struct stringpool_t, stringpool_str408), 61},
│ │ │ │ -
1433#line 267 "charset_lookup.gperf"
│ │ │ │ -
1434 {(int)offsetof(struct stringpool_t, stringpool_str409), 87},
│ │ │ │ -
1435#line 33 "charset_lookup.gperf"
│ │ │ │ -
1436 {(int)offsetof(struct stringpool_t, stringpool_str410), 22},
│ │ │ │ -
1437 {-1,-1},
│ │ │ │ -
1438#line 41 "charset_lookup.gperf"
│ │ │ │ -
1439 {(int)offsetof(struct stringpool_t, stringpool_str412), 29},
│ │ │ │ -
1440 {-1,-1},
│ │ │ │ -
1441#line 80 "charset_lookup.gperf"
│ │ │ │ -
1442 {(int)offsetof(struct stringpool_t, stringpool_str414), 71},
│ │ │ │ -
1443#line 98 "charset_lookup.gperf"
│ │ │ │ -
1444 {(int)offsetof(struct stringpool_t, stringpool_str415), 38},
│ │ │ │ -
1445 {-1,-1},
│ │ │ │ -
1446#line 285 "charset_lookup.gperf"
│ │ │ │ -
1447 {(int)offsetof(struct stringpool_t, stringpool_str417), 2},
│ │ │ │ -
1448#line 89 "charset_lookup.gperf"
│ │ │ │ -
1449 {(int)offsetof(struct stringpool_t, stringpool_str418), 59},
│ │ │ │ -
1450#line 90 "charset_lookup.gperf"
│ │ │ │ -
1451 {(int)offsetof(struct stringpool_t, stringpool_str419), 60},
│ │ │ │ -
1452#line 334 "charset_lookup.gperf"
│ │ │ │ -
1453 {(int)offsetof(struct stringpool_t, stringpool_str420), 38},
│ │ │ │ -
1454#line 296 "charset_lookup.gperf"
│ │ │ │ -
1455 {(int)offsetof(struct stringpool_t, stringpool_str421), 4},
│ │ │ │ -
1456#line 261 "charset_lookup.gperf"
│ │ │ │ -
1457 {(int)offsetof(struct stringpool_t, stringpool_str422), 20},
│ │ │ │ -
1458#line 160 "charset_lookup.gperf"
│ │ │ │ -
1459 {(int)offsetof(struct stringpool_t, stringpool_str423), 54},
│ │ │ │ -
1460#line 94 "charset_lookup.gperf"
│ │ │ │ -
1461 {(int)offsetof(struct stringpool_t, stringpool_str424), 38},
│ │ │ │ -
1462#line 378 "charset_lookup.gperf"
│ │ │ │ -
1463 {(int)offsetof(struct stringpool_t, stringpool_str425), 79},
│ │ │ │ -
1464 {-1,-1},
│ │ │ │ -
1465#line 106 "charset_lookup.gperf"
│ │ │ │ -
1466 {(int)offsetof(struct stringpool_t, stringpool_str427), 14},
│ │ │ │ -
1467 {-1,-1},
│ │ │ │ -
1468#line 29 "charset_lookup.gperf"
│ │ │ │ -
1469 {(int)offsetof(struct stringpool_t, stringpool_str429), 18},
│ │ │ │ -
1470 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1471#line 28 "charset_lookup.gperf"
│ │ │ │ -
1472 {(int)offsetof(struct stringpool_t, stringpool_str433), 17},
│ │ │ │ -
1473#line 77 "charset_lookup.gperf"
│ │ │ │ -
1474 {(int)offsetof(struct stringpool_t, stringpool_str434), 59},
│ │ │ │ -
1475#line 256 "charset_lookup.gperf"
│ │ │ │ -
1476 {(int)offsetof(struct stringpool_t, stringpool_str435), 84},
│ │ │ │ -
1477 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1478#line 122 "charset_lookup.gperf"
│ │ │ │ -
1479 {(int)offsetof(struct stringpool_t, stringpool_str439), 45},
│ │ │ │ -
1480#line 228 "charset_lookup.gperf"
│ │ │ │ -
1481 {(int)offsetof(struct stringpool_t, stringpool_str440), 65},
│ │ │ │ -
1482#line 72 "charset_lookup.gperf"
│ │ │ │ -
1483 {(int)offsetof(struct stringpool_t, stringpool_str441), 57},
│ │ │ │ -
1484#line 204 "charset_lookup.gperf"
│ │ │ │ -
1485 {(int)offsetof(struct stringpool_t, stringpool_str442), 62},
│ │ │ │ -
1486#line 198 "charset_lookup.gperf"
│ │ │ │ -
1487 {(int)offsetof(struct stringpool_t, stringpool_str443), 59},
│ │ │ │ -
1488 {-1,-1},
│ │ │ │ -
1489#line 123 "charset_lookup.gperf"
│ │ │ │ -
1490 {(int)offsetof(struct stringpool_t, stringpool_str445), 46},
│ │ │ │ -
1491#line 206 "charset_lookup.gperf"
│ │ │ │ -
1492 {(int)offsetof(struct stringpool_t, stringpool_str446), 63},
│ │ │ │ -
1493 {-1,-1},
│ │ │ │ -
1494#line 262 "charset_lookup.gperf"
│ │ │ │ -
1495 {(int)offsetof(struct stringpool_t, stringpool_str448), 19},
│ │ │ │ -
1496#line 224 "charset_lookup.gperf"
│ │ │ │ -
1497 {(int)offsetof(struct stringpool_t, stringpool_str449), 74},
│ │ │ │ -
1498#line 322 "charset_lookup.gperf"
│ │ │ │ -
1499 {(int)offsetof(struct stringpool_t, stringpool_str450), 21},
│ │ │ │ -
1500#line 290 "charset_lookup.gperf"
│ │ │ │ -
1501 {(int)offsetof(struct stringpool_t, stringpool_str451), 93},
│ │ │ │ -
1502#line 142 "charset_lookup.gperf"
│ │ │ │ -
1503 {(int)offsetof(struct stringpool_t, stringpool_str452), 53},
│ │ │ │ -
1504 {-1,-1},
│ │ │ │ -
1505#line 327 "charset_lookup.gperf"
│ │ │ │ -
1506 {(int)offsetof(struct stringpool_t, stringpool_str454), 26},
│ │ │ │ -
1507#line 78 "charset_lookup.gperf"
│ │ │ │ -
1508 {(int)offsetof(struct stringpool_t, stringpool_str455), 61},
│ │ │ │ -
1509#line 125 "charset_lookup.gperf"
│ │ │ │ -
1510 {(int)offsetof(struct stringpool_t, stringpool_str456), 48},
│ │ │ │ -
1511#line 86 "charset_lookup.gperf"
│ │ │ │ -
1512 {(int)offsetof(struct stringpool_t, stringpool_str457), 3},
│ │ │ │ -
1513#line 307 "charset_lookup.gperf"
│ │ │ │ -
1514 {(int)offsetof(struct stringpool_t, stringpool_str458), 20},
│ │ │ │ -
1515#line 314 "charset_lookup.gperf"
│ │ │ │ -
1516 {(int)offsetof(struct stringpool_t, stringpool_str459), 27},
│ │ │ │ -
1517#line 311 "charset_lookup.gperf"
│ │ │ │ -
1518 {(int)offsetof(struct stringpool_t, stringpool_str460), 24},
│ │ │ │ -
1519 {-1,-1},
│ │ │ │ -
1520#line 79 "charset_lookup.gperf"
│ │ │ │ -
1521 {(int)offsetof(struct stringpool_t, stringpool_str462), 62},
│ │ │ │ -
1522 {-1,-1},
│ │ │ │ -
1523#line 365 "charset_lookup.gperf"
│ │ │ │ -
1524 {(int)offsetof(struct stringpool_t, stringpool_str464), 34},
│ │ │ │ -
1525#line 276 "charset_lookup.gperf"
│ │ │ │ -
1526 {(int)offsetof(struct stringpool_t, stringpool_str465), 91},
│ │ │ │ -
1527#line 88 "charset_lookup.gperf"
│ │ │ │ -
1528 {(int)offsetof(struct stringpool_t, stringpool_str466), 94},
│ │ │ │ -
1529 {-1,-1},
│ │ │ │ -
1530#line 67 "charset_lookup.gperf"
│ │ │ │ -
1531 {(int)offsetof(struct stringpool_t, stringpool_str468), 15},
│ │ │ │ -
1532 {-1,-1},
│ │ │ │ -
1533#line 196 "charset_lookup.gperf"
│ │ │ │ -
1534 {(int)offsetof(struct stringpool_t, stringpool_str470), 58},
│ │ │ │ -
1535#line 312 "charset_lookup.gperf"
│ │ │ │ -
1536 {(int)offsetof(struct stringpool_t, stringpool_str471), 25},
│ │ │ │ -
1537#line 292 "charset_lookup.gperf"
│ │ │ │ -
1538 {(int)offsetof(struct stringpool_t, stringpool_str472), 2},
│ │ │ │ -
1539#line 281 "charset_lookup.gperf"
│ │ │ │ -
1540 {(int)offsetof(struct stringpool_t, stringpool_str473), 67},
│ │ │ │ -
1541#line 99 "charset_lookup.gperf"
│ │ │ │ -
1542 {(int)offsetof(struct stringpool_t, stringpool_str474), 39},
│ │ │ │ -
1543#line 316 "charset_lookup.gperf"
│ │ │ │ -
1544 {(int)offsetof(struct stringpool_t, stringpool_str475), 70},
│ │ │ │ -
1545#line 253 "charset_lookup.gperf"
│ │ │ │ -
1546 {(int)offsetof(struct stringpool_t, stringpool_str476), 75},
│ │ │ │ -
1547#line 317 "charset_lookup.gperf"
│ │ │ │ -
1548 {(int)offsetof(struct stringpool_t, stringpool_str477), 68},
│ │ │ │ -
1549 {-1,-1},
│ │ │ │ -
1550#line 335 "charset_lookup.gperf"
│ │ │ │ -
1551 {(int)offsetof(struct stringpool_t, stringpool_str479), 39},
│ │ │ │ -
1552 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1553#line 95 "charset_lookup.gperf"
│ │ │ │ -
1554 {(int)offsetof(struct stringpool_t, stringpool_str483), 39},
│ │ │ │ -
1555#line 211 "charset_lookup.gperf"
│ │ │ │ -
1556 {(int)offsetof(struct stringpool_t, stringpool_str484), 68},
│ │ │ │ -
1557#line 306 "charset_lookup.gperf"
│ │ │ │ -
1558 {(int)offsetof(struct stringpool_t, stringpool_str485), 19},
│ │ │ │ -
1559 {-1,-1},
│ │ │ │ -
1560#line 310 "charset_lookup.gperf"
│ │ │ │ -
1561 {(int)offsetof(struct stringpool_t, stringpool_str487), 23},
│ │ │ │ -
1562 {-1,-1}, {-1,-1},
│ │ │ │ -
1563#line 116 "charset_lookup.gperf"
│ │ │ │ -
1564 {(int)offsetof(struct stringpool_t, stringpool_str490), 92},
│ │ │ │ -
1565#line 266 "charset_lookup.gperf"
│ │ │ │ -
1566 {(int)offsetof(struct stringpool_t, stringpool_str491), 90},
│ │ │ │ -
1567#line 323 "charset_lookup.gperf"
│ │ │ │ -
1568 {(int)offsetof(struct stringpool_t, stringpool_str492), 22},
│ │ │ │ -
1569#line 13 "charset_lookup.gperf"
│ │ │ │ -
1570 {(int)offsetof(struct stringpool_t, stringpool_str493), 60},
│ │ │ │ -
1571#line 329 "charset_lookup.gperf"
│ │ │ │ -
1572 {(int)offsetof(struct stringpool_t, stringpool_str494), 29},
│ │ │ │ -
1573 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1574#line 100 "charset_lookup.gperf"
│ │ │ │ -
1575 {(int)offsetof(struct stringpool_t, stringpool_str499), 40},
│ │ │ │ -
1576 {-1,-1},
│ │ │ │ -
1577#line 222 "charset_lookup.gperf"
│ │ │ │ -
1578 {(int)offsetof(struct stringpool_t, stringpool_str501), 72},
│ │ │ │ -
1579 {-1,-1}, {-1,-1},
│ │ │ │ -
1580#line 336 "charset_lookup.gperf"
│ │ │ │ -
1581 {(int)offsetof(struct stringpool_t, stringpool_str504), 40},
│ │ │ │ -
1582 {-1,-1},
│ │ │ │ -
1583#line 117 "charset_lookup.gperf"
│ │ │ │ -
1584 {(int)offsetof(struct stringpool_t, stringpool_str506), 29},
│ │ │ │ -
1585#line 304 "charset_lookup.gperf"
│ │ │ │ -
1586 {(int)offsetof(struct stringpool_t, stringpool_str507), 94},
│ │ │ │ -
1587#line 96 "charset_lookup.gperf"
│ │ │ │ -
1588 {(int)offsetof(struct stringpool_t, stringpool_str508), 40},
│ │ │ │ -
1589 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1590#line 27 "charset_lookup.gperf"
│ │ │ │ -
1591 {(int)offsetof(struct stringpool_t, stringpool_str514), 16},
│ │ │ │ -
1592#line 227 "charset_lookup.gperf"
│ │ │ │ -
1593 {(int)offsetof(struct stringpool_t, stringpool_str515), 65},
│ │ │ │ -
1594#line 315 "charset_lookup.gperf"
│ │ │ │ -
1595 {(int)offsetof(struct stringpool_t, stringpool_str516), 33},
│ │ │ │ -
1596#line 219 "charset_lookup.gperf"
│ │ │ │ -
1597 {(int)offsetof(struct stringpool_t, stringpool_str517), 28},
│ │ │ │ -
1598#line 190 "charset_lookup.gperf"
│ │ │ │ -
1599 {(int)offsetof(struct stringpool_t, stringpool_str518), 0},
│ │ │ │ -
1600 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1601 {-1,-1}, {-1,-1},
│ │ │ │ -
1602#line 63 "charset_lookup.gperf"
│ │ │ │ -
1603 {(int)offsetof(struct stringpool_t, stringpool_str527), 45},
│ │ │ │ -
1604 {-1,-1},
│ │ │ │ -
1605#line 286 "charset_lookup.gperf"
│ │ │ │ -
1606 {(int)offsetof(struct stringpool_t, stringpool_str529), 7},
│ │ │ │ -
1607 {-1,-1},
│ │ │ │ -
1608#line 200 "charset_lookup.gperf"
│ │ │ │ -
1609 {(int)offsetof(struct stringpool_t, stringpool_str531), 60},
│ │ │ │ -
1610#line 126 "charset_lookup.gperf"
│ │ │ │ -
1611 {(int)offsetof(struct stringpool_t, stringpool_str532), 49},
│ │ │ │ -
1612#line 275 "charset_lookup.gperf"
│ │ │ │ -
1613 {(int)offsetof(struct stringpool_t, stringpool_str533), 91},
│ │ │ │ -
1614#line 308 "charset_lookup.gperf"
│ │ │ │ -
1615 {(int)offsetof(struct stringpool_t, stringpool_str534), 21},
│ │ │ │ -
1616 {-1,-1},
│ │ │ │ -
1617#line 313 "charset_lookup.gperf"
│ │ │ │ -
1618 {(int)offsetof(struct stringpool_t, stringpool_str536), 26},
│ │ │ │ -
1619#line 179 "charset_lookup.gperf"
│ │ │ │ -
1620 {(int)offsetof(struct stringpool_t, stringpool_str537), 92},
│ │ │ │ -
1621#line 194 "charset_lookup.gperf"
│ │ │ │ -
1622 {(int)offsetof(struct stringpool_t, stringpool_str538), 57},
│ │ │ │ -
1623#line 87 "charset_lookup.gperf"
│ │ │ │ -
1624 {(int)offsetof(struct stringpool_t, stringpool_str539), 93},
│ │ │ │ -
1625 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1626 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1627#line 60 "charset_lookup.gperf"
│ │ │ │ -
1628 {(int)offsetof(struct stringpool_t, stringpool_str549), 32},
│ │ │ │ -
1629 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1630#line 124 "charset_lookup.gperf"
│ │ │ │ -
1631 {(int)offsetof(struct stringpool_t, stringpool_str553), 47},
│ │ │ │ -
1632 {-1,-1},
│ │ │ │ -
1633#line 309 "charset_lookup.gperf"
│ │ │ │ -
1634 {(int)offsetof(struct stringpool_t, stringpool_str555), 22},
│ │ │ │ -
1635 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1636#line 212 "charset_lookup.gperf"
│ │ │ │ -
1637 {(int)offsetof(struct stringpool_t, stringpool_str561), 70},
│ │ │ │ -
1638 {-1,-1},
│ │ │ │ -
1639#line 213 "charset_lookup.gperf"
│ │ │ │ -
1640 {(int)offsetof(struct stringpool_t, stringpool_str563), 68},
│ │ │ │ -
1641 {-1,-1},
│ │ │ │ -
1642#line 101 "charset_lookup.gperf"
│ │ │ │ -
1643 {(int)offsetof(struct stringpool_t, stringpool_str565), 38},
│ │ │ │ -
1644 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1645#line 81 "charset_lookup.gperf"
│ │ │ │ -
1646 {(int)offsetof(struct stringpool_t, stringpool_str572), 65},
│ │ │ │ -
1647 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1648#line 284 "charset_lookup.gperf"
│ │ │ │ -
1649 {(int)offsetof(struct stringpool_t, stringpool_str576), 3},
│ │ │ │ -
1650#line 109 "charset_lookup.gperf"
│ │ │ │ -
1651 {(int)offsetof(struct stringpool_t, stringpool_str577), 61},
│ │ │ │ -
1652#line 252 "charset_lookup.gperf"
│ │ │ │ -
1653 {(int)offsetof(struct stringpool_t, stringpool_str578), 82},
│ │ │ │ -
1654#line 209 "charset_lookup.gperf"
│ │ │ │ -
1655 {(int)offsetof(struct stringpool_t, stringpool_str579), 70},
│ │ │ │ -
1656#line 295 "charset_lookup.gperf"
│ │ │ │ -
1657 {(int)offsetof(struct stringpool_t, stringpool_str580), 5},
│ │ │ │ -
1658#line 298 "charset_lookup.gperf"
│ │ │ │ -
1659 {(int)offsetof(struct stringpool_t, stringpool_str581), 8},
│ │ │ │ -
1660#line 248 "charset_lookup.gperf"
│ │ │ │ -
1661 {(int)offsetof(struct stringpool_t, stringpool_str582), 78},
│ │ │ │ -
1662 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1663#line 291 "charset_lookup.gperf"
│ │ │ │ -
1664 {(int)offsetof(struct stringpool_t, stringpool_str586), 3},
│ │ │ │ -
1665 {-1,-1},
│ │ │ │ -
1666#line 283 "charset_lookup.gperf"
│ │ │ │ -
1667 {(int)offsetof(struct stringpool_t, stringpool_str588), 67},
│ │ │ │ -
1668#line 68 "charset_lookup.gperf"
│ │ │ │ -
1669 {(int)offsetof(struct stringpool_t, stringpool_str589), 14},
│ │ │ │ -
1670 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1671#line 192 "charset_lookup.gperf"
│ │ │ │ -
1672 {(int)offsetof(struct stringpool_t, stringpool_str594), 56},
│ │ │ │ -
1673 {-1,-1},
│ │ │ │ -
1674#line 202 "charset_lookup.gperf"
│ │ │ │ -
1675 {(int)offsetof(struct stringpool_t, stringpool_str596), 61},
│ │ │ │ -
1676#line 254 "charset_lookup.gperf"
│ │ │ │ -
1677 {(int)offsetof(struct stringpool_t, stringpool_str597), 75},
│ │ │ │ -
1678 {-1,-1}, {-1,-1},
│ │ │ │ -
1679#line 318 "charset_lookup.gperf"
│ │ │ │ -
1680 {(int)offsetof(struct stringpool_t, stringpool_str600), 66},
│ │ │ │ -
1681 {-1,-1},
│ │ │ │ -
1682#line 59 "charset_lookup.gperf"
│ │ │ │ -
1683 {(int)offsetof(struct stringpool_t, stringpool_str602), 89},
│ │ │ │ -
1684 {-1,-1},
│ │ │ │ -
1685#line 69 "charset_lookup.gperf"
│ │ │ │ -
1686 {(int)offsetof(struct stringpool_t, stringpool_str604), 68},
│ │ │ │ -
1687 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1688#line 215 "charset_lookup.gperf"
│ │ │ │ -
1689 {(int)offsetof(struct stringpool_t, stringpool_str609), 68},
│ │ │ │ -
1690 {-1,-1}, {-1,-1},
│ │ │ │ -
1691#line 127 "charset_lookup.gperf"
│ │ │ │ -
1692 {(int)offsetof(struct stringpool_t, stringpool_str612), 50},
│ │ │ │ -
1693#line 21 "charset_lookup.gperf"
│ │ │ │ -
1694 {(int)offsetof(struct stringpool_t, stringpool_str613), 12},
│ │ │ │ -
1695 {-1,-1},
│ │ │ │ -
1696#line 282 "charset_lookup.gperf"
│ │ │ │ -
1697 {(int)offsetof(struct stringpool_t, stringpool_str615), 67},
│ │ │ │ -
1698 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1699#line 65 "charset_lookup.gperf"
│ │ │ │ -
1700 {(int)offsetof(struct stringpool_t, stringpool_str619), 49},
│ │ │ │ -
1701 {-1,-1}, {-1,-1},
│ │ │ │ -
1702#line 20 "charset_lookup.gperf"
│ │ │ │ -
1703 {(int)offsetof(struct stringpool_t, stringpool_str622), 12},
│ │ │ │ -
1704 {-1,-1}, {-1,-1},
│ │ │ │ -
1705#line 82 "charset_lookup.gperf"
│ │ │ │ -
1706 {(int)offsetof(struct stringpool_t, stringpool_str625), 75},
│ │ │ │ -
1707 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1708#line 58 "charset_lookup.gperf"
│ │ │ │ -
1709 {(int)offsetof(struct stringpool_t, stringpool_str631), 70},
│ │ │ │ -
1710 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1711 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1712#line 64 "charset_lookup.gperf"
│ │ │ │ -
1713 {(int)offsetof(struct stringpool_t, stringpool_str641), 47},
│ │ │ │ -
1714 {-1,-1},
│ │ │ │ -
1715#line 264 "charset_lookup.gperf"
│ │ │ │ -
1716 {(int)offsetof(struct stringpool_t, stringpool_str643), 24},
│ │ │ │ -
1717 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1718 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1719 {-1,-1},
│ │ │ │ -
1720#line 217 "charset_lookup.gperf"
│ │ │ │ -
1721 {(int)offsetof(struct stringpool_t, stringpool_str657), 66},
│ │ │ │ -
1722 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1723 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1725#line 84 "charset_lookup.gperf"
│ │ │ │ -
1726 {(int)offsetof(struct stringpool_t, stringpool_str675), 31},
│ │ │ │ -
1727 {-1,-1},
│ │ │ │ -
1728#line 114 "charset_lookup.gperf"
│ │ │ │ -
1729 {(int)offsetof(struct stringpool_t, stringpool_str677), 44},
│ │ │ │ -
1730 {-1,-1},
│ │ │ │ -
1731#line 214 "charset_lookup.gperf"
│ │ │ │ -
1732 {(int)offsetof(struct stringpool_t, stringpool_str679), 68},
│ │ │ │ -
1733 {-1,-1},
│ │ │ │ -
1734#line 268 "charset_lookup.gperf"
│ │ │ │ -
1735 {(int)offsetof(struct stringpool_t, stringpool_str681), 88},
│ │ │ │ -
1736 {-1,-1},
│ │ │ │ -
1737#line 57 "charset_lookup.gperf"
│ │ │ │ -
1738 {(int)offsetof(struct stringpool_t, stringpool_str683), 16},
│ │ │ │ -
1739 {-1,-1}, {-1,-1},
│ │ │ │ -
1740#line 216 "charset_lookup.gperf"
│ │ │ │ -
1741 {(int)offsetof(struct stringpool_t, stringpool_str686), 66},
│ │ │ │ -
1742 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1743#line 54 "charset_lookup.gperf"
│ │ │ │ -
1744 {(int)offsetof(struct stringpool_t, stringpool_str690), 39},
│ │ │ │ -
1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1746#line 22 "charset_lookup.gperf"
│ │ │ │ -
1747 {(int)offsetof(struct stringpool_t, stringpool_str695), 11},
│ │ │ │ -
1748 {-1,-1},
│ │ │ │ -
1749#line 255 "charset_lookup.gperf"
│ │ │ │ -
1750 {(int)offsetof(struct stringpool_t, stringpool_str697), 83},
│ │ │ │ -
1751 {-1,-1}, {-1,-1},
│ │ │ │ -
1752#line 66 "charset_lookup.gperf"
│ │ │ │ -
1753 {(int)offsetof(struct stringpool_t, stringpool_str700), 50},
│ │ │ │ -
1754 {-1,-1},
│ │ │ │ -
1755#line 111 "charset_lookup.gperf"
│ │ │ │ -
1756 {(int)offsetof(struct stringpool_t, stringpool_str702), 62},
│ │ │ │ -
1757 {-1,-1},
│ │ │ │ -
1758#line 18 "charset_lookup.gperf"
│ │ │ │ -
1759 {(int)offsetof(struct stringpool_t, stringpool_str704), 11},
│ │ │ │ -
1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1762#line 56 "charset_lookup.gperf"
│ │ │ │ -
1763 {(int)offsetof(struct stringpool_t, stringpool_str715), 40},
│ │ │ │ -
1764 {-1,-1},
│ │ │ │ -
1765#line 11 "charset_lookup.gperf"
│ │ │ │ -
1766 {(int)offsetof(struct stringpool_t, stringpool_str717), 92},
│ │ │ │ -
1767 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1768#line 260 "charset_lookup.gperf"
│ │ │ │ -
1769 {(int)offsetof(struct stringpool_t, stringpool_str721), 25},
│ │ │ │ -
1770 {-1,-1},
│ │ │ │ -
1771#line 249 "charset_lookup.gperf"
│ │ │ │ -
1772 {(int)offsetof(struct stringpool_t, stringpool_str723), 79},
│ │ │ │ -
1773 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1774#line 12 "charset_lookup.gperf"
│ │ │ │ -
1775 {(int)offsetof(struct stringpool_t, stringpool_str729), 92},
│ │ │ │ -
1776 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1777#line 83 "charset_lookup.gperf"
│ │ │ │ -
1778 {(int)offsetof(struct stringpool_t, stringpool_str735), 30},
│ │ │ │ -
1779 {-1,-1},
│ │ │ │ -
1780#line 115 "charset_lookup.gperf"
│ │ │ │ -
1781 {(int)offsetof(struct stringpool_t, stringpool_str737), 18},
│ │ │ │ -
1782 {-1,-1}, {-1,-1},
│ │ │ │ -
1783#line 297 "charset_lookup.gperf"
│ │ │ │ -
1784 {(int)offsetof(struct stringpool_t, stringpool_str740), 9},
│ │ │ │ -
1785 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1786 {-1,-1}, {-1,-1},
│ │ │ │ -
1787#line 265 "charset_lookup.gperf"
│ │ │ │ -
1788 {(int)offsetof(struct stringpool_t, stringpool_str749), 23},
│ │ │ │ -
1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1791 {-1,-1}, {-1,-1},
│ │ │ │ -
1792#line 218 "charset_lookup.gperf"
│ │ │ │ -
1793 {(int)offsetof(struct stringpool_t, stringpool_str764), 66},
│ │ │ │ -
1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1799#line 247 "charset_lookup.gperf"
│ │ │ │ -
1800 {(int)offsetof(struct stringpool_t, stringpool_str793), 77},
│ │ │ │ -
1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1803 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1804 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1805#line 257 "charset_lookup.gperf"
│ │ │ │ -
1806 {(int)offsetof(struct stringpool_t, stringpool_str815), 85},
│ │ │ │ -
1807 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1808#line 263 "charset_lookup.gperf"
│ │ │ │ -
1809 {(int)offsetof(struct stringpool_t, stringpool_str822), 22},
│ │ │ │ -
1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1811#line 246 "charset_lookup.gperf"
│ │ │ │ -
1812 {(int)offsetof(struct stringpool_t, stringpool_str827), 76},
│ │ │ │ -
1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1814 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1815 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1816 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1820#line 305 "charset_lookup.gperf"
│ │ │ │ -
1821 {(int)offsetof(struct stringpool_t, stringpool_str868), 26},
│ │ │ │ -
1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1823 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1824#line 258 "charset_lookup.gperf"
│ │ │ │ -
1825 {(int)offsetof(struct stringpool_t, stringpool_str878), 86},
│ │ │ │ -
1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1829#line 277 "charset_lookup.gperf"
│ │ │ │ -
1830 {(int)offsetof(struct stringpool_t, stringpool_str897), 91},
│ │ │ │ -
1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1833 {-1,-1},
│ │ │ │ -
1834#line 250 "charset_lookup.gperf"
│ │ │ │ -
1835 {(int)offsetof(struct stringpool_t, stringpool_str911), 80},
│ │ │ │ -
1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1844 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1845 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1846 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1847 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1848 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1849 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1850 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1851 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1852 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1853 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1854 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1855 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1856 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1857 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1858 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1859 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1860 {-1,-1},
│ │ │ │ -
1861#line 55 "charset_lookup.gperf"
│ │ │ │ -
1862 {(int)offsetof(struct stringpool_t, stringpool_str1057), 38},
│ │ │ │ -
1863 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1864 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ -
1865#line 251 "charset_lookup.gperf"
│ │ │ │ -
1866 {(int)offsetof(struct stringpool_t, stringpool_str1069), 81}
│ │ │ │ -
1867 };
│ │ │ │ -
1868
│ │ │ │ -
1869 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
│ │ │ │ -
1870 {
│ │ │ │ -
1871 register unsigned int key = hash_charset (str, len);
│ │ │ │ -
1872
│ │ │ │ -
1873 if (key <= MAX_HASH_VALUE)
│ │ │ │ -
1874 {
│ │ │ │ -
1875 register int o = wordlist[key].alias_pos;
│ │ │ │ -
1876 if (o >= 0)
│ │ │ │ -
1877 {
│ │ │ │ -
1878 register const char *s = o + stringpool;
│ │ │ │ -
1879
│ │ │ │ -
1880 if (*str == *s && !strcmp (str + 1, s + 1))
│ │ │ │ -
1881 return &wordlist[key];
│ │ │ │ -
1882 }
│ │ │ │ -
1883 }
│ │ │ │ -
1884 }
│ │ │ │ -
1885 return 0;
│ │ │ │ -
1886}
│ │ │ │ -
1887#line 382 "charset_lookup.gperf"
│ │ │ │ -
1888
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _ctpublic_h_
│ │ │ │ +
21#define _ctpublic_h_
│ │ │ │ +
22
│ │ │ │ +
23#include <cspublic.h>
│ │ │ │ +
24
│ │ │ │ +
25#undef TDS_STATIC_CAST
│ │ │ │ +
26#ifdef __cplusplus
│ │ │ │ +
27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ +
28extern "C"
│ │ │ │ +
29{
│ │ │ │ +
30#if 0
│ │ │ │ +
31}
│ │ │ │ +
32#endif
│ │ │ │ +
33#else
│ │ │ │ +
34#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ +
35#endif
│ │ │ │ +
36
│ │ │ │ +
37/*
│ │ │ │ +
38** define for each CT-Lib API
│ │ │ │ +
39*/
│ │ │ │ +
40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ +
41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ +
42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ +
43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ +
44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ +
45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ +
46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ +
47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ +
48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)
│ │ │ │ +
49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)
│ │ │ │ +
50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)
│ │ │ │ +
51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)
│ │ │ │ +
52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)
│ │ │ │ +
53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)
│ │ │ │ +
54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)
│ │ │ │ +
55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)
│ │ │ │ +
56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)
│ │ │ │ +
57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)
│ │ │ │ +
58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)
│ │ │ │ +
59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)
│ │ │ │ +
60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)
│ │ │ │ +
61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)
│ │ │ │ +
62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)
│ │ │ │ +
63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)
│ │ │ │ +
64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)
│ │ │ │ +
65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)
│ │ │ │ +
66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)
│ │ │ │ +
67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)
│ │ │ │ +
68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)
│ │ │ │ +
69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)
│ │ │ │ +
70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)
│ │ │ │ +
71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)
│ │ │ │ +
72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)
│ │ │ │ +
73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)
│ │ │ │ +
74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)
│ │ │ │ +
75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)
│ │ │ │ +
76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)
│ │ │ │ +
77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)
│ │ │ │ +
78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)
│ │ │ │ +
79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)
│ │ │ │ +
80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)
│ │ │ │ +
81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)
│ │ │ │ +
82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)
│ │ │ │ +
83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)
│ │ │ │ +
84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)
│ │ │ │ +
85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)
│ │ │ │ +
86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)
│ │ │ │ +
87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)
│ │ │ │ +
88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)
│ │ │ │ +
89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)
│ │ │ │ +
90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)
│ │ │ │ +
91
│ │ │ │ +
92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10:48:26 freddy77 Exp $";
│ │ │ │ +
93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, no_unused_ctpublic_h_warn };
│ │ │ │ +
94
│ │ │ │ +
95
│ │ │ │ +
96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);
│ │ │ │ +
97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);
│ │ │ │ +
98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ +
99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT snamelen);
│ │ │ │ +
100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);
│ │ │ │ +
101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);
│ │ │ │ +
102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);
│ │ │ │ +
103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);
│ │ │ │ +
104CS_RETCODE ct_con_drop(CS_CONNECTION * con);
│ │ │ │ +
105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);
│ │ │ │ +
106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, CS_INT buflen, CS_INT option);
│ │ │ │ +
107CS_RETCODE ct_send(CS_COMMAND * cmd);
│ │ │ │ +
108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);
│ │ │ │ +
109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);
│ │ │ │ +
110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read);
│ │ │ │ +
111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ +
112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ +
113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt);
│ │ │ │ +
114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, CS_INT type, CS_VOID * func);
│ │ │ │ +
115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);
│ │ │ │ +
116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);
│ │ │ │ +
117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);
│ │ │ │ +
122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_IODESC * iodesc);
│ │ │ │ +
123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, CS_INT capability, CS_VOID * value);
│ │ │ │ +
124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT idlen, CS_CHAR * buffer, CS_INT buflen);
│ │ │ │ +
125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT datalen, CS_SMALLINT indicator);
│ │ │ │ +
126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT * datalen, CS_SMALLINT * indicator);
│ │ │ │ +
127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_VOID * param, CS_INT paramlen, CS_INT * outlen);
│ │ │ │ +
128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT milliseconds, CS_CONNECTION ** compconn,
│ │ │ │ +
129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);
│ │ │ │ +
130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT namelen, CS_CHAR * text, CS_INT tlen, CS_INT option);
│ │ │ │ +
131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
│ │ │ │ +
132
│ │ │ │ +
133#ifdef __cplusplus
│ │ │ │ +
134#if 0
│ │ │ │ +
135{
│ │ │ │ +
136#endif
│ │ │ │ +
137}
│ │ │ │ +
138#endif
│ │ │ │ +
139
│ │ │ │ +
140#endif
│ │ │ │ +
Definition cstypes.h:102
│ │ │ │ +
Definition cstypes.h:119
│ │ │ │ +
Definition ctlib.h:135
│ │ │ │ +
Definition ctlib.h:188
│ │ │ │ +
Definition ctlib.h:284
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,1901 +1,181 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ - * freetds │ │ │ │ │ -charset_lookup.h │ │ │ │ │ -1/* ANSI-C code produced by gperf version 3.1 */ │ │ │ │ │ -2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P - │ │ │ │ │ -H hash_charset -N charset_lookup -L ANSI-C --enum charset_lookup.gperf */ │ │ │ │ │ -3/* Computed positions: -k'1,3-11,$' */ │ │ │ │ │ -4 │ │ │ │ │ -5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ │ │ │ │ │ -6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ │ │ │ │ │ -7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ │ │ │ │ │ -8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ │ │ │ │ │ -9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ │ │ │ │ │ -10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ │ │ │ │ │ -11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ │ │ │ │ │ -12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ │ │ │ │ │ -13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ │ │ │ │ │ -14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ │ │ │ │ │ -15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ │ │ │ │ │ -16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ │ │ │ │ │ -17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ │ │ │ │ │ -18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ │ │ │ │ │ -19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ │ │ │ │ │ -20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ │ │ │ │ │ -21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ │ │ │ │ │ -22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ │ │ │ │ │ -23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ │ │ │ │ │ -24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ │ │ │ │ │ -25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ │ │ │ │ │ -26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ │ │ │ │ │ -27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) │ │ │ │ │ -28/* The character set is not based on ISO-646. */ │ │ │ │ │ -29#error "gperf generated tables don't work with this execution character set. │ │ │ │ │ -Please report a bug to ." │ │ │ │ │ -30#endif │ │ │ │ │ -31 │ │ │ │ │ -32#line 3 "charset_lookup.gperf" │ │ │ │ │ -33 │ │ │ │ │ -34static const struct charset_alias *charset_lookup(register const char *str, │ │ │ │ │ -register size_t len); │ │ │ │ │ -35#line 2 "charset_lookup.gperf" │ │ │ │ │ -36struct charset_alias { short int alias_pos; short int canonic; }; │ │ │ │ │ -37/* maximum key range = 1038, duplicates = 0 */ │ │ │ │ │ -38 │ │ │ │ │ -39#ifdef __GNUC__ │ │ │ │ │ -40__inline │ │ │ │ │ -41#else │ │ │ │ │ -42#ifdef __cplusplus │ │ │ │ │ -43inline │ │ │ │ │ -44#endif │ │ │ │ │ -45#endif │ │ │ │ │ -46static unsigned int │ │ │ │ │ -47hash_charset (register const char *str, register size_t len) │ │ │ │ │ -48{ │ │ │ │ │ -49 static const unsigned short asso_values[] = │ │ │ │ │ -50 { │ │ │ │ │ -51 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -52 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -53 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -54 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -55 1070, 1070, 1070, 1070, 1070, 8, 113, 1070, 34, 7, │ │ │ │ │ -56 83, 104, 36, 9, 20, 85, 8, 10, 330, 1070, │ │ │ │ │ -57 1070, 1070, 1070, 1070, 1070, 50, 186, 97, 7, 84, │ │ │ │ │ -58 66, 32, 73, 7, 17, 186, 27, 183, 9, 7, │ │ │ │ │ -59 106, 1070, 51, 7, 11, 117, 229, 151, 339, 22, │ │ │ │ │ -60 10, 1070, 1070, 1070, 1070, 24, 1070, 13, 7, 179, │ │ │ │ │ -61 1070, 7, 9, 13, 27, 7, 1070, 7, 1070, 8, │ │ │ │ │ -62 7, 7, 1070, 1070, 8, 8, 7, 10, 1070, 1070, │ │ │ │ │ -63 1070, 12, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -64 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -65 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -66 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -67 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -68 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -69 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -70 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -71 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -72 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -73 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -74 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -75 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ -76 1070, 1070, 1070, 1070, 1070, 1070 │ │ │ │ │ -77 }; │ │ │ │ │ -78 register unsigned int hval = len; │ │ │ │ │ -79 │ │ │ │ │ -80 switch (hval) │ │ │ │ │ -81 { │ │ │ │ │ -82 default: │ │ │ │ │ -83 hval += asso_values[(unsigned char)str[10]]; │ │ │ │ │ -84 /*FALLTHROUGH*/ │ │ │ │ │ -85 case 10: │ │ │ │ │ -86 hval += asso_values[(unsigned char)str[9]]; │ │ │ │ │ -87 /*FALLTHROUGH*/ │ │ │ │ │ -88 case 9: │ │ │ │ │ -89 hval += asso_values[(unsigned char)str[8]]; │ │ │ │ │ -90 /*FALLTHROUGH*/ │ │ │ │ │ -91 case 8: │ │ │ │ │ -92 hval += asso_values[(unsigned char)str[7]]; │ │ │ │ │ -93 /*FALLTHROUGH*/ │ │ │ │ │ -94 case 7: │ │ │ │ │ -95 hval += asso_values[(unsigned char)str[6]]; │ │ │ │ │ -96 /*FALLTHROUGH*/ │ │ │ │ │ -97 case 6: │ │ │ │ │ -98 hval += asso_values[(unsigned char)str[5]]; │ │ │ │ │ -99 /*FALLTHROUGH*/ │ │ │ │ │ -100 case 5: │ │ │ │ │ -101 hval += asso_values[(unsigned char)str[4]]; │ │ │ │ │ -102 /*FALLTHROUGH*/ │ │ │ │ │ -103 case 4: │ │ │ │ │ -104 hval += asso_values[(unsigned char)str[3]]; │ │ │ │ │ -105 /*FALLTHROUGH*/ │ │ │ │ │ -106 case 3: │ │ │ │ │ -107 hval += asso_values[(unsigned char)str[2]]; │ │ │ │ │ -108 /*FALLTHROUGH*/ │ │ │ │ │ -109 case 2: │ │ │ │ │ -110 case 1: │ │ │ │ │ -111 hval += asso_values[(unsigned char)str[0]]; │ │ │ │ │ -112 break; │ │ │ │ │ -113 } │ │ │ │ │ -114 return hval + asso_values[(unsigned char)str[len - 1]]; │ │ │ │ │ -115} │ │ │ │ │ -116 │ │ │ │ │ -117struct stringpool_t │ │ │ │ │ -118 { │ │ │ │ │ -119 char stringpool_str32[sizeof("SJIS")]; │ │ │ │ │ -120 char stringpool_str34[sizeof("koi8")]; │ │ │ │ │ -121 char stringpool_str35[sizeof("sjis")]; │ │ │ │ │ -122 char stringpool_str36[sizeof("L1")]; │ │ │ │ │ -123 char stringpool_str37[sizeof("L8")]; │ │ │ │ │ -124 char stringpool_str38[sizeof("L5")]; │ │ │ │ │ -125 char stringpool_str39[sizeof("utf8")]; │ │ │ │ │ -126 char stringpool_str41[sizeof("iso81")]; │ │ │ │ │ -127 char stringpool_str42[sizeof("big5")]; │ │ │ │ │ -128 char stringpool_str43[sizeof("iso88")]; │ │ │ │ │ -129 char stringpool_str44[sizeof("iso15")]; │ │ │ │ │ -130 char stringpool_str45[sizeof("iso85")]; │ │ │ │ │ -131 char stringpool_str47[sizeof("iso89")]; │ │ │ │ │ -132 char stringpool_str48[sizeof("thai8")]; │ │ │ │ │ -133 char stringpool_str49[sizeof("L6")]; │ │ │ │ │ -134 char stringpool_str50[sizeof("roma8")]; │ │ │ │ │ -135 char stringpool_str51[sizeof("866")]; │ │ │ │ │ -136 char stringpool_str53[sizeof("iso815")]; │ │ │ │ │ -137 char stringpool_str56[sizeof("greek8")]; │ │ │ │ │ -138 char stringpool_str57[sizeof("iso_1")]; │ │ │ │ │ -139 char stringpool_str58[sizeof("roman8")]; │ │ │ │ │ -140 char stringpool_str61[sizeof("R8")]; │ │ │ │ │ -141 char stringpool_str63[sizeof("646")]; │ │ │ │ │ -142 char stringpool_str65[sizeof("L4")]; │ │ │ │ │ -143 char stringpool_str67[sizeof("iso86")]; │ │ │ │ │ -144 char stringpool_str71[sizeof("iso88591")]; │ │ │ │ │ -145 char stringpool_str73[sizeof("iso88598")]; │ │ │ │ │ -146 char stringpool_str74[sizeof("LATIN1")]; │ │ │ │ │ -147 char stringpool_str75[sizeof("iso88595")]; │ │ │ │ │ -148 char stringpool_str76[sizeof("LATIN8")]; │ │ │ │ │ -149 char stringpool_str77[sizeof("iso88599")]; │ │ │ │ │ -150 char stringpool_str78[sizeof("LATIN5")]; │ │ │ │ │ -151 char stringpool_str79[sizeof("850")]; │ │ │ │ │ -152 char stringpool_str80[sizeof("ISO8859-1")]; │ │ │ │ │ -153 char stringpool_str82[sizeof("ISO8859-8")]; │ │ │ │ │ -154 char stringpool_str83[sizeof("iso885915")]; │ │ │ │ │ -155 char stringpool_str84[sizeof("ISO8859-5")]; │ │ │ │ │ -156 char stringpool_str85[sizeof("HZ")]; │ │ │ │ │ -157 char stringpool_str86[sizeof("ISO8859-9")]; │ │ │ │ │ -158 char stringpool_str89[sizeof("ISO-8859-1")]; │ │ │ │ │ -159 char stringpool_str91[sizeof("ISO-8859-8")]; │ │ │ │ │ -160 char stringpool_str92[sizeof("ISO8859-15")]; │ │ │ │ │ -161 char stringpool_str93[sizeof("ISO-8859-5")]; │ │ │ │ │ -162 char stringpool_str94[sizeof("iso10")]; │ │ │ │ │ -163 char stringpool_str95[sizeof("ISO-8859-9")]; │ │ │ │ │ -164 char stringpool_str97[sizeof("iso88596")]; │ │ │ │ │ -165 char stringpool_str98[sizeof("iso14")]; │ │ │ │ │ -166 char stringpool_str99[sizeof("iso84")]; │ │ │ │ │ -167 char stringpool_str100[sizeof("LATIN6")]; │ │ │ │ │ -168 char stringpool_str101[sizeof("ISO-8859-15")]; │ │ │ │ │ -169 char stringpool_str105[sizeof("ISO_8859-1")]; │ │ │ │ │ -170 char stringpool_str106[sizeof("ISO8859-6")]; │ │ │ │ │ -171 char stringpool_str107[sizeof("ISO_8859-8")]; │ │ │ │ │ -172 char stringpool_str108[sizeof("CN")]; │ │ │ │ │ -173 char stringpool_str109[sizeof("ISO_8859-5")]; │ │ │ │ │ -174 char stringpool_str111[sizeof("ISO_8859-9")]; │ │ │ │ │ -175 char stringpool_str112[sizeof("L2")]; │ │ │ │ │ -176 char stringpool_str114[sizeof("L7")]; │ │ │ │ │ -177 char stringpool_str115[sizeof("ISO-8859-6")]; │ │ │ │ │ -178 char stringpool_str116[sizeof("iso646")]; │ │ │ │ │ -179 char stringpool_str117[sizeof("ISO_8859-15")]; │ │ │ │ │ -180 char stringpool_str120[sizeof("C99")]; │ │ │ │ │ -181 char stringpool_str121[sizeof("ISO_8859-15:1998")]; │ │ │ │ │ -182 char stringpool_str122[sizeof("ISO-IR-58")]; │ │ │ │ │ -183 char stringpool_str123[sizeof("ISO-8859-16")]; │ │ │ │ │ -184 char stringpool_str125[sizeof("JP")]; │ │ │ │ │ -185 char stringpool_str126[sizeof("US")]; │ │ │ │ │ -186 char stringpool_str129[sizeof("iso88594")]; │ │ │ │ │ -187 char stringpool_str131[sizeof("ISO_8859-6")]; │ │ │ │ │ -188 char stringpool_str132[sizeof("LATIN4")]; │ │ │ │ │ -189 char stringpool_str133[sizeof("L3")]; │ │ │ │ │ -190 char stringpool_str134[sizeof("ISO-IR-159")]; │ │ │ │ │ -191 char stringpool_str135[sizeof("ISO-IR-199")]; │ │ │ │ │ -192 char stringpool_str136[sizeof("ISO-IR-6")]; │ │ │ │ │ -193 char stringpool_str137[sizeof("CP819")]; │ │ │ │ │ -194 char stringpool_str138[sizeof("ISO8859-4")]; │ │ │ │ │ -195 char stringpool_str139[sizeof("ISO_8859-16")]; │ │ │ │ │ -196 char stringpool_str142[sizeof("ISO8859-10")]; │ │ │ │ │ -197 char stringpool_str143[sizeof("ISO-IR-165")]; │ │ │ │ │ -198 char stringpool_str146[sizeof("SHIFT-JIS")]; │ │ │ │ │ -199 char stringpool_str147[sizeof("ISO-8859-4")]; │ │ │ │ │ -200 char stringpool_str148[sizeof("ISO_8859-14:1998")]; │ │ │ │ │ -201 char stringpool_str151[sizeof("ISO-8859-10")]; │ │ │ │ │ -202 char stringpool_str153[sizeof("ISO-IR-101")]; │ │ │ │ │ -203 char stringpool_str155[sizeof("ISO-8859-14")]; │ │ │ │ │ -204 char stringpool_str157[sizeof("ISO-IR-148")]; │ │ │ │ │ -205 char stringpool_str158[sizeof("ISO_8859-16:2000")]; │ │ │ │ │ -206 char stringpool_str159[sizeof("ISO-IR-109")]; │ │ │ │ │ -207 char stringpool_str161[sizeof("ISO-IR-149")]; │ │ │ │ │ -208 char stringpool_str162[sizeof("SHIFT_JIS")]; │ │ │ │ │ -209 char stringpool_str163[sizeof("ISO_8859-4")]; │ │ │ │ │ -210 char stringpool_str164[sizeof("hp15CN")]; │ │ │ │ │ -211 char stringpool_str165[sizeof("ISO-IR-166")]; │ │ │ │ │ -212 char stringpool_str167[sizeof("ISO_8859-10")]; │ │ │ │ │ -213 char stringpool_str168[sizeof("CP949")]; │ │ │ │ │ -214 char stringpool_str170[sizeof("CP866")]; │ │ │ │ │ -215 char stringpool_str171[sizeof("ISO_8859-14")]; │ │ │ │ │ -216 char stringpool_str173[sizeof("ASCII")]; │ │ │ │ │ -217 char stringpool_str176[sizeof("ISO-IR-14")]; │ │ │ │ │ -218 char stringpool_str177[sizeof("862")]; │ │ │ │ │ -219 char stringpool_str180[sizeof("ISO-IR-110")]; │ │ │ │ │ -220 char stringpool_str183[sizeof("GB_1988-80")]; │ │ │ │ │ -221 char stringpool_str187[sizeof("CP850")]; │ │ │ │ │ -222 char stringpool_str189[sizeof("CP950")]; │ │ │ │ │ -223 char stringpool_str192[sizeof("tis620")]; │ │ │ │ │ -224 char stringpool_str193[sizeof("iso82")]; │ │ │ │ │ -225 char stringpool_str195[sizeof("TIS620")]; │ │ │ │ │ -226 char stringpool_str197[sizeof("iso87")]; │ │ │ │ │ -227 char stringpool_str198[sizeof("JIS0208")]; │ │ │ │ │ -228 char stringpool_str203[sizeof("UTF8")]; │ │ │ │ │ -229 char stringpool_str204[sizeof("TIS-620")]; │ │ │ │ │ -230 char stringpool_str207[sizeof("ISO-IR-100")]; │ │ │ │ │ -231 char stringpool_str210[sizeof("ISO-IR-179")]; │ │ │ │ │ -232 char stringpool_str212[sizeof("UTF-8")]; │ │ │ │ │ -233 char stringpool_str213[sizeof("ISO-IR-144")]; │ │ │ │ │ -234 char stringpool_str215[sizeof("CP65001")]; │ │ │ │ │ -235 char stringpool_str216[sizeof("CP1251")]; │ │ │ │ │ -236 char stringpool_str218[sizeof("CP1258")]; │ │ │ │ │ -237 char stringpool_str220[sizeof("CP1255")]; │ │ │ │ │ -238 char stringpool_str221[sizeof("ISO_8859-10:1992")]; │ │ │ │ │ -239 char stringpool_str222[sizeof("ISO646-CN")]; │ │ │ │ │ -240 char stringpool_str223[sizeof("iso88592")]; │ │ │ │ │ -241 char stringpool_str225[sizeof("ISO-IR-138")]; │ │ │ │ │ -242 char stringpool_str226[sizeof("LATIN2")]; │ │ │ │ │ -243 char stringpool_str227[sizeof("iso88597")]; │ │ │ │ │ -244 char stringpool_str228[sizeof("ISO-IR-126")]; │ │ │ │ │ -245 char stringpool_str229[sizeof("CSISO159JISX02121990")]; │ │ │ │ │ -246 char stringpool_str230[sizeof("LATIN7")]; │ │ │ │ │ -247 char stringpool_str231[sizeof("IBM819")]; │ │ │ │ │ -248 char stringpool_str232[sizeof("ISO8859-2")]; │ │ │ │ │ -249 char stringpool_str233[sizeof("macturk")]; │ │ │ │ │ -250 char stringpool_str234[sizeof("iso13")]; │ │ │ │ │ -251 char stringpool_str235[sizeof("iso83")]; │ │ │ │ │ -252 char stringpool_str236[sizeof("ISO8859-7")]; │ │ │ │ │ -253 char stringpool_str237[sizeof("KOI8-T")]; │ │ │ │ │ -254 char stringpool_str238[sizeof("ISO646-US")]; │ │ │ │ │ -255 char stringpool_str239[sizeof("TIS620-0")]; │ │ │ │ │ -256 char stringpool_str240[sizeof("BIG5")]; │ │ │ │ │ -257 char stringpool_str241[sizeof("ISO-8859-2")]; │ │ │ │ │ -258 char stringpool_str242[sizeof("CP1256")]; │ │ │ │ │ -259 char stringpool_str243[sizeof("ELOT_928")]; │ │ │ │ │ -260 char stringpool_str244[sizeof("macgreek")]; │ │ │ │ │ -261 char stringpool_str245[sizeof("ISO-8859-7")]; │ │ │ │ │ -262 char stringpool_str247[sizeof("CSISOLATIN1")]; │ │ │ │ │ -263 char stringpool_str248[sizeof("CP1361")]; │ │ │ │ │ -264 char stringpool_str249[sizeof("BIG-5")]; │ │ │ │ │ -265 char stringpool_str250[sizeof("cp949")]; │ │ │ │ │ -266 char stringpool_str251[sizeof("CSISOLATIN5")]; │ │ │ │ │ -267 char stringpool_str252[sizeof("cp866")]; │ │ │ │ │ -268 char stringpool_str253[sizeof("ascii_8")]; │ │ │ │ │ -269 char stringpool_str255[sizeof("macthai")]; │ │ │ │ │ -270 char stringpool_str256[sizeof("CP936")]; │ │ │ │ │ -271 char stringpool_str257[sizeof("ISO_8859-2")]; │ │ │ │ │ -272 char stringpool_str260[sizeof("GB18030")]; │ │ │ │ │ -273 char stringpool_str261[sizeof("ISO_8859-7")]; │ │ │ │ │ -274 char stringpool_str262[sizeof("TCVN")]; │ │ │ │ │ -275 char stringpool_str264[sizeof("IBM866")]; │ │ │ │ │ -276 char stringpool_str265[sizeof("iso88593")]; │ │ │ │ │ -277 char stringpool_str267[sizeof("CP874")]; │ │ │ │ │ -278 char stringpool_str268[sizeof("LATIN3")]; │ │ │ │ │ -279 char stringpool_str269[sizeof("cp850")]; │ │ │ │ │ -280 char stringpool_str270[sizeof("CP1250")]; │ │ │ │ │ -281 char stringpool_str271[sizeof("cp950")]; │ │ │ │ │ -282 char stringpool_str273[sizeof("CSISOLATIN6")]; │ │ │ │ │ -283 char stringpool_str274[sizeof("CP1254")]; │ │ │ │ │ -284 char stringpool_str275[sizeof("ISO-IR-87")]; │ │ │ │ │ -285 char stringpool_str276[sizeof("ISO-IR-57")]; │ │ │ │ │ -286 char stringpool_str278[sizeof("MS-ANSI")]; │ │ │ │ │ -287 char stringpool_str279[sizeof("CSASCII")]; │ │ │ │ │ -288 char stringpool_str281[sizeof("IBM850")]; │ │ │ │ │ -289 char stringpool_str283[sizeof("ISO-8859-3")]; │ │ │ │ │ -290 char stringpool_str284[sizeof("ISO-IR-157")]; │ │ │ │ │ -291 char stringpool_str291[sizeof("ISO-8859-13")]; │ │ │ │ │ -292 char stringpool_str296[sizeof("CP862")]; │ │ │ │ │ -293 char stringpool_str298[sizeof("cp1251")]; │ │ │ │ │ -294 char stringpool_str299[sizeof("ISO_8859-3")]; │ │ │ │ │ -295 char stringpool_str300[sizeof("cp1258")]; │ │ │ │ │ -296 char stringpool_str301[sizeof("EUCCN")]; │ │ │ │ │ -297 char stringpool_str302[sizeof("cp1255")]; │ │ │ │ │ -298 char stringpool_str304[sizeof("ISO-IR-226")]; │ │ │ │ │ -299 char stringpool_str305[sizeof("CSISOLATIN4")]; │ │ │ │ │ -300 char stringpool_str307[sizeof("ISO_8859-13")]; │ │ │ │ │ -301 char stringpool_str308[sizeof("US-ASCII")]; │ │ │ │ │ -302 char stringpool_str309[sizeof("CSSHIFTJIS")]; │ │ │ │ │ -303 char stringpool_str310[sizeof("EUC-CN")]; │ │ │ │ │ -304 char stringpool_str313[sizeof("CSISO14JISC6220RO")]; │ │ │ │ │ -305 char stringpool_str314[sizeof("UHC")]; │ │ │ │ │ -306 char stringpool_str315[sizeof("ROMAN8")]; │ │ │ │ │ -307 char stringpool_str317[sizeof("KOI8-R")]; │ │ │ │ │ -308 char stringpool_str324[sizeof("cp1256")]; │ │ │ │ │ -309 char stringpool_str327[sizeof("GEORGIAN-PS")]; │ │ │ │ │ -310 char stringpool_str336[sizeof("ISO646-JP")]; │ │ │ │ │ -311 char stringpool_str338[sizeof("cp936")]; │ │ │ │ │ -312 char stringpool_str346[sizeof("CSBIG5")]; │ │ │ │ │ -313 char stringpool_str349[sizeof("cp874")]; │ │ │ │ │ -314 char stringpool_str350[sizeof("JAVA")]; │ │ │ │ │ -315 char stringpool_str352[sizeof("cp1250")]; │ │ │ │ │ -316 char stringpool_str355[sizeof("CN-BIG5")]; │ │ │ │ │ -317 char stringpool_str356[sizeof("cp1254")]; │ │ │ │ │ -318 char stringpool_str357[sizeof("UTF7")]; │ │ │ │ │ -319 char stringpool_str358[sizeof("ISO-IR-127")]; │ │ │ │ │ -320 char stringpool_str360[sizeof("VISCII")]; │ │ │ │ │ -321 char stringpool_str363[sizeof("ECMA-118")]; │ │ │ │ │ -322 char stringpool_str366[sizeof("UTF-7")]; │ │ │ │ │ -323 char stringpool_str367[sizeof("UNICODE-1-1")]; │ │ │ │ │ -324 char stringpool_str368[sizeof("CP1252")]; │ │ │ │ │ -325 char stringpool_str369[sizeof("mac")]; │ │ │ │ │ -326 char stringpool_str370[sizeof("UCS-4LE")]; │ │ │ │ │ -327 char stringpool_str372[sizeof("CP1257")]; │ │ │ │ │ -328 char stringpool_str378[sizeof("cp862")]; │ │ │ │ │ -329 char stringpool_str379[sizeof("CHINESE")]; │ │ │ │ │ -330 char stringpool_str380[sizeof("MAC")]; │ │ │ │ │ -331 char stringpool_str381[sizeof("GEORGIAN-ACADEMY")]; │ │ │ │ │ -332 char stringpool_str382[sizeof("CP932")]; │ │ │ │ │ -333 char stringpool_str384[sizeof("ARMSCII-8")]; │ │ │ │ │ -334 char stringpool_str385[sizeof("CSISOLATINARABIC")]; │ │ │ │ │ -335 char stringpool_str390[sizeof("IBM862")]; │ │ │ │ │ -336 char stringpool_str391[sizeof("ASMO-708")]; │ │ │ │ │ -337 char stringpool_str392[sizeof("KSC_5601")]; │ │ │ │ │ -338 char stringpool_str395[sizeof("KOREAN")]; │ │ │ │ │ -339 char stringpool_str396[sizeof("CP367")]; │ │ │ │ │ -340 char stringpool_str398[sizeof("GB2312")]; │ │ │ │ │ -341 char stringpool_str399[sizeof("CSISOLATIN2")]; │ │ │ │ │ -342 char stringpool_str404[sizeof("JIS_C6220-1969-RO")]; │ │ │ │ │ -343 char stringpool_str406[sizeof("HP-ROMAN8")]; │ │ │ │ │ -344 char stringpool_str407[sizeof("GBK")]; │ │ │ │ │ -345 char stringpool_str408[sizeof("GREEK8")]; │ │ │ │ │ -346 char stringpool_str409[sizeof("MULELAO-1")]; │ │ │ │ │ -347 char stringpool_str410[sizeof("CP1253")]; │ │ │ │ │ -348 char stringpool_str412[sizeof("CP437")]; │ │ │ │ │ -349 char stringpool_str414[sizeof("CSKOI8R")]; │ │ │ │ │ -350 char stringpool_str415[sizeof("EUCJP")]; │ │ │ │ │ -351 char stringpool_str417[sizeof("UCS-2LE")]; │ │ │ │ │ -352 char stringpool_str418[sizeof("CYRILLIC")]; │ │ │ │ │ -353 char stringpool_str419[sizeof("ECMA-114")]; │ │ │ │ │ -354 char stringpool_str420[sizeof("eucJP")]; │ │ │ │ │ -355 char stringpool_str421[sizeof("UTF-16LE")]; │ │ │ │ │ -356 char stringpool_str422[sizeof("MS-CYRL")]; │ │ │ │ │ -357 char stringpool_str423[sizeof("ISO-IR-203")]; │ │ │ │ │ -358 char stringpool_str424[sizeof("EUC-JP")]; │ │ │ │ │ -359 char stringpool_str425[sizeof("mac_cyr")]; │ │ │ │ │ -360 char stringpool_str427[sizeof("GB_2312-80")]; │ │ │ │ │ -361 char stringpool_str429[sizeof("CP1133")]; │ │ │ │ │ -362 char stringpool_str433[sizeof("CN-GB-ISOIR165")]; │ │ │ │ │ -363 char stringpool_str434[sizeof("CSISOLATINCYRILLIC")]; │ │ │ │ │ -364 char stringpool_str435[sizeof("MACTHAI")]; │ │ │ │ │ -365 char stringpool_str439[sizeof("ISO-2022-CN")]; │ │ │ │ │ -366 char stringpool_str440[sizeof("KS_C_5601-1989")]; │ │ │ │ │ -367 char stringpool_str441[sizeof("CSISOLATIN3")]; │ │ │ │ │ -368 char stringpool_str442[sizeof("ISO_8859-8:1988")]; │ │ │ │ │ -369 char stringpool_str443[sizeof("ISO_8859-5:1988")]; │ │ │ │ │ -370 char stringpool_str445[sizeof("ISO-2022-CN-EXT")]; │ │ │ │ │ -371 char stringpool_str446[sizeof("ISO_8859-9:1989")]; │ │ │ │ │ -372 char stringpool_str448[sizeof("MS-EE")]; │ │ │ │ │ -373 char stringpool_str449[sizeof("KOI8-U")]; │ │ │ │ │ -374 char stringpool_str450[sizeof("cp1252")]; │ │ │ │ │ -375 char stringpool_str451[sizeof("UNICODE-1-1-UTF-7")]; │ │ │ │ │ -376 char stringpool_str452[sizeof("ISO-CELTIC")]; │ │ │ │ │ -377 char stringpool_str454[sizeof("cp1257")]; │ │ │ │ │ -378 char stringpool_str455[sizeof("CSISOLATINGREEK")]; │ │ │ │ │ -379 char stringpool_str456[sizeof("ISO-2022-JP-1")]; │ │ │ │ │ -380 char stringpool_str457[sizeof("CSUNICODE11")]; │ │ │ │ │ -381 char stringpool_str458[sizeof("WINDOWS-1251")]; │ │ │ │ │ -382 char stringpool_str459[sizeof("WINDOWS-1258")]; │ │ │ │ │ -383 char stringpool_str460[sizeof("WINDOWS-1255")]; │ │ │ │ │ -384 char stringpool_str462[sizeof("CSISOLATINHEBREW")]; │ │ │ │ │ -385 char stringpool_str464[sizeof("cp932")]; │ │ │ │ │ -386 char stringpool_str465[sizeof("TCVN5712-1")]; │ │ │ │ │ -387 char stringpool_str466[sizeof("CSVISCII")]; │ │ │ │ │ -388 char stringpool_str468[sizeof("CSISO57GB1988")]; │ │ │ │ │ -389 char stringpool_str470[sizeof("ISO_8859-4:1988")]; │ │ │ │ │ -390 char stringpool_str471[sizeof("WINDOWS-1256")]; │ │ │ │ │ -391 char stringpool_str472[sizeof("UNICODELITTLE")]; │ │ │ │ │ -392 char stringpool_str473[sizeof("TIS620.2529-1")]; │ │ │ │ │ -393 char stringpool_str474[sizeof("EUCKR")]; │ │ │ │ │ -394 char stringpool_str475[sizeof("X0201")]; │ │ │ │ │ -395 char stringpool_str476[sizeof("MACINTOSH")]; │ │ │ │ │ -396 char stringpool_str477[sizeof("X0208")]; │ │ │ │ │ -397 char stringpool_str479[sizeof("eucKR")]; │ │ │ │ │ -398 char stringpool_str483[sizeof("EUC-KR")]; │ │ │ │ │ -399 char stringpool_str484[sizeof("JIS_C6226-1983")]; │ │ │ │ │ -400 char stringpool_str485[sizeof("WINDOWS-1250")]; │ │ │ │ │ -401 char stringpool_str487[sizeof("WINDOWS-1254")]; │ │ │ │ │ -402 char stringpool_str490[sizeof("IBM367")]; │ │ │ │ │ -403 char stringpool_str491[sizeof("MS_KANJI")]; │ │ │ │ │ -404 char stringpool_str492[sizeof("cp1253")]; │ │ │ │ │ -405 char stringpool_str493[sizeof("ARABIC")]; │ │ │ │ │ -406 char stringpool_str494[sizeof("cp437")]; │ │ │ │ │ -407 char stringpool_str499[sizeof("EUCTW")]; │ │ │ │ │ -408 char stringpool_str501[sizeof("KOI8-RU")]; │ │ │ │ │ -409 char stringpool_str504[sizeof("eucTW")]; │ │ │ │ │ -410 char stringpool_str506[sizeof("IBM437")]; │ │ │ │ │ -411 char stringpool_str507[sizeof("VISCII1.1-1")]; │ │ │ │ │ -412 char stringpool_str508[sizeof("EUC-TW")]; │ │ │ │ │ -413 char stringpool_str514[sizeof("CN-GB")]; │ │ │ │ │ -414 char stringpool_str515[sizeof("KS_C_5601-1987")]; │ │ │ │ │ -415 char stringpool_str516[sizeof("WINDOWS-874")]; │ │ │ │ │ -416 char stringpool_str517[sizeof("JOHAB")]; │ │ │ │ │ -417 char stringpool_str518[sizeof("ISO_8859-1:1987")]; │ │ │ │ │ -418 char stringpool_str527[sizeof("CSISO2022CN")]; │ │ │ │ │ -419 char stringpool_str529[sizeof("UCS-4BE")]; │ │ │ │ │ -420 char stringpool_str531[sizeof("ISO_8859-6:1987")]; │ │ │ │ │ -421 char stringpool_str532[sizeof("ISO-2022-JP-2")]; │ │ │ │ │ -422 char stringpool_str533[sizeof("TCVN-5712")]; │ │ │ │ │ -423 char stringpool_str534[sizeof("WINDOWS-1252")]; │ │ │ │ │ -424 char stringpool_str536[sizeof("WINDOWS-1257")]; │ │ │ │ │ -425 char stringpool_str537[sizeof("ISO_646.IRV:1991")]; │ │ │ │ │ -426 char stringpool_str538[sizeof("ISO_8859-3:1988")]; │ │ │ │ │ -427 char stringpool_str539[sizeof("CSUNICODE11UTF7")]; │ │ │ │ │ -428 char stringpool_str549[sizeof("CSIBM866")]; │ │ │ │ │ -429 char stringpool_str553[sizeof("ISO-2022-JP")]; │ │ │ │ │ -430 char stringpool_str555[sizeof("WINDOWS-1253")]; │ │ │ │ │ -431 char stringpool_str561[sizeof("JIS_X0201")]; │ │ │ │ │ -432 char stringpool_str563[sizeof("JIS_X0208")]; │ │ │ │ │ -433 char stringpool_str565[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_ │ │ │ │ │ -JAPANESE")]; │ │ │ │ │ -434 char stringpool_str572[sizeof("CSKSC56011987")]; │ │ │ │ │ -435 char stringpool_str576[sizeof("UCS-2BE")]; │ │ │ │ │ -436 char stringpool_str577[sizeof("GREEK")]; │ │ │ │ │ -437 char stringpool_str578[sizeof("MACICELAND")]; │ │ │ │ │ -438 char stringpool_str579[sizeof("JISX0201-1976")]; │ │ │ │ │ -439 char stringpool_str580[sizeof("UTF-16BE")]; │ │ │ │ │ -440 char stringpool_str581[sizeof("UTF-32LE")]; │ │ │ │ │ -441 char stringpool_str582[sizeof("MACCROATIAN")]; │ │ │ │ │ -442 char stringpool_str586[sizeof("UNICODEBIG")]; │ │ │ │ │ -443 char stringpool_str588[sizeof("TIS620.2533-1")]; │ │ │ │ │ -444 char stringpool_str589[sizeof("CSISO58GB231280")]; │ │ │ │ │ -445 char stringpool_str594[sizeof("ISO_8859-2:1987")]; │ │ │ │ │ -446 char stringpool_str596[sizeof("ISO_8859-7:1987")]; │ │ │ │ │ -447 char stringpool_str597[sizeof("MACROMAN")]; │ │ │ │ │ -448 char stringpool_str600[sizeof("X0212")]; │ │ │ │ │ -449 char stringpool_str602[sizeof("CSHPROMAN8")]; │ │ │ │ │ -450 char stringpool_str604[sizeof("CSISO87JISX0208")]; │ │ │ │ │ -451 char stringpool_str609[sizeof("JIS_X0208-1990")]; │ │ │ │ │ -452 char stringpool_str612[sizeof("ISO-2022-KR")]; │ │ │ │ │ -453 char stringpool_str613[sizeof("BIG5HKSCS")]; │ │ │ │ │ -454 char stringpool_str615[sizeof("TIS620.2533-0")]; │ │ │ │ │ -455 char stringpool_str619[sizeof("CSISO2022JP2")]; │ │ │ │ │ -456 char stringpool_str622[sizeof("BIG5-HKSCS")]; │ │ │ │ │ -457 char stringpool_str625[sizeof("CSMACINTOSH")]; │ │ │ │ │ -458 char stringpool_str631[sizeof("CSHALFWIDTHKATAKANA")]; │ │ │ │ │ -459 char stringpool_str641[sizeof("CSISO2022JP")]; │ │ │ │ │ -460 char stringpool_str643[sizeof("MS-HEBR")]; │ │ │ │ │ -461 char stringpool_str657[sizeof("JIS_X0212-1990")]; │ │ │ │ │ -462 char stringpool_str675[sizeof("CSPC862LATINHEBREW")]; │ │ │ │ │ -463 char stringpool_str677[sizeof("HZ-GB-2312")]; │ │ │ │ │ -464 char stringpool_str679[sizeof("JIS_X0208-1983")]; │ │ │ │ │ -465 char stringpool_str681[sizeof("NEXTSTEP")]; │ │ │ │ │ -466 char stringpool_str683[sizeof("CSGB2312")]; │ │ │ │ │ -467 char stringpool_str686[sizeof("JIS_X0212")]; │ │ │ │ │ -468 char stringpool_str690[sizeof("CSEUCKR")]; │ │ │ │ │ -469 char stringpool_str695[sizeof("BIGFIVE")]; │ │ │ │ │ -470 char stringpool_str697[sizeof("MACROMANIA")]; │ │ │ │ │ -471 char stringpool_str700[sizeof("CSISO2022KR")]; │ │ │ │ │ -472 char stringpool_str702[sizeof("HEBREW")]; │ │ │ │ │ -473 char stringpool_str704[sizeof("BIG-FIVE")]; │ │ │ │ │ -474 char stringpool_str715[sizeof("CSEUCTW")]; │ │ │ │ │ -475 char stringpool_str717[sizeof("ANSI_X3.4-1968")]; │ │ │ │ │ -476 char stringpool_str721[sizeof("MS-ARAB")]; │ │ │ │ │ -477 char stringpool_str723[sizeof("MACCYRILLIC")]; │ │ │ │ │ -478 char stringpool_str729[sizeof("ANSI_X3.4-1986")]; │ │ │ │ │ -479 char stringpool_str735[sizeof("CSPC850MULTILINGUAL")]; │ │ │ │ │ -480 char stringpool_str737[sizeof("IBM-CP1133")]; │ │ │ │ │ -481 char stringpool_str740[sizeof("UTF-32BE")]; │ │ │ │ │ -482 char stringpool_str749[sizeof("MS-TURK")]; │ │ │ │ │ -483 char stringpool_str764[sizeof("JIS_X0212.1990-0")]; │ │ │ │ │ -484 char stringpool_str793[sizeof("MACCENTRALEUROPE")]; │ │ │ │ │ -485 char stringpool_str815[sizeof("MACTURKISH")]; │ │ │ │ │ -486 char stringpool_str822[sizeof("MS-GREEK")]; │ │ │ │ │ -487 char stringpool_str827[sizeof("MACARABIC")]; │ │ │ │ │ -488 char stringpool_str868[sizeof("WINBALTRIM")]; │ │ │ │ │ -489 char stringpool_str878[sizeof("MACUKRAINE")]; │ │ │ │ │ -490 char stringpool_str897[sizeof("TCVN5712-1:1993")]; │ │ │ │ │ -491 char stringpool_str911[sizeof("MACGREEK")]; │ │ │ │ │ -492 char stringpool_str1057[sizeof("CSEUCPKDFMTJAPANESE")]; │ │ │ │ │ -493 char stringpool_str1069[sizeof("MACHEBREW")]; │ │ │ │ │ -494 }; │ │ │ │ │ -495static const struct stringpool_t stringpool_contents = │ │ │ │ │ -496 { │ │ │ │ │ -497 "SJIS", │ │ │ │ │ -498 "koi8", │ │ │ │ │ -499 "sjis", │ │ │ │ │ -500 "L1", │ │ │ │ │ -501 "L8", │ │ │ │ │ -502 "L5", │ │ │ │ │ -503 "utf8", │ │ │ │ │ -504 "iso81", │ │ │ │ │ -505 "big5", │ │ │ │ │ -506 "iso88", │ │ │ │ │ -507 "iso15", │ │ │ │ │ -508 "iso85", │ │ │ │ │ -509 "iso89", │ │ │ │ │ -510 "thai8", │ │ │ │ │ -511 "L6", │ │ │ │ │ -512 "roma8", │ │ │ │ │ -513 "866", │ │ │ │ │ -514 "iso815", │ │ │ │ │ -515 "greek8", │ │ │ │ │ -516 "iso_1", │ │ │ │ │ -517 "roman8", │ │ │ │ │ -518 "R8", │ │ │ │ │ -519 "646", │ │ │ │ │ -520 "L4", │ │ │ │ │ -521 "iso86", │ │ │ │ │ -522 "iso88591", │ │ │ │ │ -523 "iso88598", │ │ │ │ │ -524 "LATIN1", │ │ │ │ │ -525 "iso88595", │ │ │ │ │ -526 "LATIN8", │ │ │ │ │ -527 "iso88599", │ │ │ │ │ -528 "LATIN5", │ │ │ │ │ -529 "850", │ │ │ │ │ -530 "ISO8859-1", │ │ │ │ │ -531 "ISO8859-8", │ │ │ │ │ -532 "iso885915", │ │ │ │ │ -533 "ISO8859-5", │ │ │ │ │ -534 "HZ", │ │ │ │ │ -535 "ISO8859-9", │ │ │ │ │ -536 "ISO-8859-1", │ │ │ │ │ -537 "ISO-8859-8", │ │ │ │ │ -538 "ISO8859-15", │ │ │ │ │ -539 "ISO-8859-5", │ │ │ │ │ -540 "iso10", │ │ │ │ │ -541 "ISO-8859-9", │ │ │ │ │ -542 "iso88596", │ │ │ │ │ -543 "iso14", │ │ │ │ │ -544 "iso84", │ │ │ │ │ -545 "LATIN6", │ │ │ │ │ -546 "ISO-8859-15", │ │ │ │ │ -547 "ISO_8859-1", │ │ │ │ │ -548 "ISO8859-6", │ │ │ │ │ -549 "ISO_8859-8", │ │ │ │ │ -550 "CN", │ │ │ │ │ -551 "ISO_8859-5", │ │ │ │ │ -552 "ISO_8859-9", │ │ │ │ │ -553 "L2", │ │ │ │ │ -554 "L7", │ │ │ │ │ -555 "ISO-8859-6", │ │ │ │ │ -556 "iso646", │ │ │ │ │ -557 "ISO_8859-15", │ │ │ │ │ -558 "C99", │ │ │ │ │ -559 "ISO_8859-15:1998", │ │ │ │ │ -560 "ISO-IR-58", │ │ │ │ │ -561 "ISO-8859-16", │ │ │ │ │ -562 "JP", │ │ │ │ │ -563 "US", │ │ │ │ │ -564 "iso88594", │ │ │ │ │ -565 "ISO_8859-6", │ │ │ │ │ -566 "LATIN4", │ │ │ │ │ -567 "L3", │ │ │ │ │ -568 "ISO-IR-159", │ │ │ │ │ -569 "ISO-IR-199", │ │ │ │ │ -570 "ISO-IR-6", │ │ │ │ │ -571 "CP819", │ │ │ │ │ -572 "ISO8859-4", │ │ │ │ │ -573 "ISO_8859-16", │ │ │ │ │ -574 "ISO8859-10", │ │ │ │ │ -575 "ISO-IR-165", │ │ │ │ │ -576 "SHIFT-JIS", │ │ │ │ │ -577 "ISO-8859-4", │ │ │ │ │ -578 "ISO_8859-14:1998", │ │ │ │ │ -579 "ISO-8859-10", │ │ │ │ │ -580 "ISO-IR-101", │ │ │ │ │ -581 "ISO-8859-14", │ │ │ │ │ -582 "ISO-IR-148", │ │ │ │ │ -583 "ISO_8859-16:2000", │ │ │ │ │ -584 "ISO-IR-109", │ │ │ │ │ -585 "ISO-IR-149", │ │ │ │ │ -586 "SHIFT_JIS", │ │ │ │ │ -587 "ISO_8859-4", │ │ │ │ │ -588 "hp15CN", │ │ │ │ │ -589 "ISO-IR-166", │ │ │ │ │ -590 "ISO_8859-10", │ │ │ │ │ -591 "CP949", │ │ │ │ │ -592 "CP866", │ │ │ │ │ -593 "ISO_8859-14", │ │ │ │ │ -594 "ASCII", │ │ │ │ │ -595 "ISO-IR-14", │ │ │ │ │ -596 "862", │ │ │ │ │ -597 "ISO-IR-110", │ │ │ │ │ -598 "GB_1988-80", │ │ │ │ │ -599 "CP850", │ │ │ │ │ -600 "CP950", │ │ │ │ │ -601 "tis620", │ │ │ │ │ -602 "iso82", │ │ │ │ │ -603 "TIS620", │ │ │ │ │ -604 "iso87", │ │ │ │ │ -605 "JIS0208", │ │ │ │ │ -606 "UTF8", │ │ │ │ │ -607 "TIS-620", │ │ │ │ │ -608 "ISO-IR-100", │ │ │ │ │ -609 "ISO-IR-179", │ │ │ │ │ -610 "UTF-8", │ │ │ │ │ -611 "ISO-IR-144", │ │ │ │ │ -612 "CP65001", │ │ │ │ │ -613 "CP1251", │ │ │ │ │ -614 "CP1258", │ │ │ │ │ -615 "CP1255", │ │ │ │ │ -616 "ISO_8859-10:1992", │ │ │ │ │ -617 "ISO646-CN", │ │ │ │ │ -618 "iso88592", │ │ │ │ │ -619 "ISO-IR-138", │ │ │ │ │ -620 "LATIN2", │ │ │ │ │ -621 "iso88597", │ │ │ │ │ -622 "ISO-IR-126", │ │ │ │ │ -623 "CSISO159JISX02121990", │ │ │ │ │ -624 "LATIN7", │ │ │ │ │ -625 "IBM819", │ │ │ │ │ -626 "ISO8859-2", │ │ │ │ │ -627 "macturk", │ │ │ │ │ -628 "iso13", │ │ │ │ │ -629 "iso83", │ │ │ │ │ -630 "ISO8859-7", │ │ │ │ │ -631 "KOI8-T", │ │ │ │ │ -632 "ISO646-US", │ │ │ │ │ -633 "TIS620-0", │ │ │ │ │ -634 "BIG5", │ │ │ │ │ -635 "ISO-8859-2", │ │ │ │ │ -636 "CP1256", │ │ │ │ │ -637 "ELOT_928", │ │ │ │ │ -638 "macgreek", │ │ │ │ │ -639 "ISO-8859-7", │ │ │ │ │ -640 "CSISOLATIN1", │ │ │ │ │ -641 "CP1361", │ │ │ │ │ -642 "BIG-5", │ │ │ │ │ -643 "cp949", │ │ │ │ │ -644 "CSISOLATIN5", │ │ │ │ │ -645 "cp866", │ │ │ │ │ -646 "ascii_8", │ │ │ │ │ -647 "macthai", │ │ │ │ │ -648 "CP936", │ │ │ │ │ -649 "ISO_8859-2", │ │ │ │ │ -650 "GB18030", │ │ │ │ │ -651 "ISO_8859-7", │ │ │ │ │ -652 "TCVN", │ │ │ │ │ -653 "IBM866", │ │ │ │ │ -654 "iso88593", │ │ │ │ │ -655 "CP874", │ │ │ │ │ -656 "LATIN3", │ │ │ │ │ -657 "cp850", │ │ │ │ │ -658 "CP1250", │ │ │ │ │ -659 "cp950", │ │ │ │ │ -660 "CSISOLATIN6", │ │ │ │ │ -661 "CP1254", │ │ │ │ │ -662 "ISO-IR-87", │ │ │ │ │ -663 "ISO-IR-57", │ │ │ │ │ -664 "MS-ANSI", │ │ │ │ │ -665 "CSASCII", │ │ │ │ │ -666 "IBM850", │ │ │ │ │ -667 "ISO-8859-3", │ │ │ │ │ -668 "ISO-IR-157", │ │ │ │ │ -669 "ISO-8859-13", │ │ │ │ │ -670 "CP862", │ │ │ │ │ -671 "cp1251", │ │ │ │ │ -672 "ISO_8859-3", │ │ │ │ │ -673 "cp1258", │ │ │ │ │ -674 "EUCCN", │ │ │ │ │ -675 "cp1255", │ │ │ │ │ -676 "ISO-IR-226", │ │ │ │ │ -677 "CSISOLATIN4", │ │ │ │ │ -678 "ISO_8859-13", │ │ │ │ │ -679 "US-ASCII", │ │ │ │ │ -680 "CSSHIFTJIS", │ │ │ │ │ -681 "EUC-CN", │ │ │ │ │ -682 "CSISO14JISC6220RO", │ │ │ │ │ -683 "UHC", │ │ │ │ │ -684 "ROMAN8", │ │ │ │ │ -685 "KOI8-R", │ │ │ │ │ -686 "cp1256", │ │ │ │ │ -687 "GEORGIAN-PS", │ │ │ │ │ -688 "ISO646-JP", │ │ │ │ │ -689 "cp936", │ │ │ │ │ -690 "CSBIG5", │ │ │ │ │ -691 "cp874", │ │ │ │ │ -692 "JAVA", │ │ │ │ │ -693 "cp1250", │ │ │ │ │ -694 "CN-BIG5", │ │ │ │ │ -695 "cp1254", │ │ │ │ │ -696 "UTF7", │ │ │ │ │ -697 "ISO-IR-127", │ │ │ │ │ -698 "VISCII", │ │ │ │ │ -699 "ECMA-118", │ │ │ │ │ -700 "UTF-7", │ │ │ │ │ -701 "UNICODE-1-1", │ │ │ │ │ -702 "CP1252", │ │ │ │ │ -703 "mac", │ │ │ │ │ -704 "UCS-4LE", │ │ │ │ │ -705 "CP1257", │ │ │ │ │ -706 "cp862", │ │ │ │ │ -707 "CHINESE", │ │ │ │ │ -708 "MAC", │ │ │ │ │ -709 "GEORGIAN-ACADEMY", │ │ │ │ │ -710 "CP932", │ │ │ │ │ -711 "ARMSCII-8", │ │ │ │ │ -712 "CSISOLATINARABIC", │ │ │ │ │ -713 "IBM862", │ │ │ │ │ -714 "ASMO-708", │ │ │ │ │ -715 "KSC_5601", │ │ │ │ │ -716 "KOREAN", │ │ │ │ │ -717 "CP367", │ │ │ │ │ -718 "GB2312", │ │ │ │ │ -719 "CSISOLATIN2", │ │ │ │ │ -720 "JIS_C6220-1969-RO", │ │ │ │ │ -721 "HP-ROMAN8", │ │ │ │ │ -722 "GBK", │ │ │ │ │ -723 "GREEK8", │ │ │ │ │ -724 "MULELAO-1", │ │ │ │ │ -725 "CP1253", │ │ │ │ │ -726 "CP437", │ │ │ │ │ -727 "CSKOI8R", │ │ │ │ │ -728 "EUCJP", │ │ │ │ │ -729 "UCS-2LE", │ │ │ │ │ -730 "CYRILLIC", │ │ │ │ │ -731 "ECMA-114", │ │ │ │ │ -732 "eucJP", │ │ │ │ │ -733 "UTF-16LE", │ │ │ │ │ -734 "MS-CYRL", │ │ │ │ │ -735 "ISO-IR-203", │ │ │ │ │ -736 "EUC-JP", │ │ │ │ │ -737 "mac_cyr", │ │ │ │ │ -738 "GB_2312-80", │ │ │ │ │ -739 "CP1133", │ │ │ │ │ -740 "CN-GB-ISOIR165", │ │ │ │ │ -741 "CSISOLATINCYRILLIC", │ │ │ │ │ -742 "MACTHAI", │ │ │ │ │ -743 "ISO-2022-CN", │ │ │ │ │ -744 "KS_C_5601-1989", │ │ │ │ │ -745 "CSISOLATIN3", │ │ │ │ │ -746 "ISO_8859-8:1988", │ │ │ │ │ -747 "ISO_8859-5:1988", │ │ │ │ │ -748 "ISO-2022-CN-EXT", │ │ │ │ │ -749 "ISO_8859-9:1989", │ │ │ │ │ -750 "MS-EE", │ │ │ │ │ -751 "KOI8-U", │ │ │ │ │ -752 "cp1252", │ │ │ │ │ -753 "UNICODE-1-1-UTF-7", │ │ │ │ │ -754 "ISO-CELTIC", │ │ │ │ │ -755 "cp1257", │ │ │ │ │ -756 "CSISOLATINGREEK", │ │ │ │ │ -757 "ISO-2022-JP-1", │ │ │ │ │ -758 "CSUNICODE11", │ │ │ │ │ -759 "WINDOWS-1251", │ │ │ │ │ -760 "WINDOWS-1258", │ │ │ │ │ -761 "WINDOWS-1255", │ │ │ │ │ -762 "CSISOLATINHEBREW", │ │ │ │ │ -763 "cp932", │ │ │ │ │ -764 "TCVN5712-1", │ │ │ │ │ -765 "CSVISCII", │ │ │ │ │ -766 "CSISO57GB1988", │ │ │ │ │ -767 "ISO_8859-4:1988", │ │ │ │ │ -768 "WINDOWS-1256", │ │ │ │ │ -769 "UNICODELITTLE", │ │ │ │ │ -770 "TIS620.2529-1", │ │ │ │ │ -771 "EUCKR", │ │ │ │ │ -772 "X0201", │ │ │ │ │ -773 "MACINTOSH", │ │ │ │ │ -774 "X0208", │ │ │ │ │ -775 "eucKR", │ │ │ │ │ -776 "EUC-KR", │ │ │ │ │ -777 "JIS_C6226-1983", │ │ │ │ │ -778 "WINDOWS-1250", │ │ │ │ │ -779 "WINDOWS-1254", │ │ │ │ │ -780 "IBM367", │ │ │ │ │ -781 "MS_KANJI", │ │ │ │ │ -782 "cp1253", │ │ │ │ │ -783 "ARABIC", │ │ │ │ │ -784 "cp437", │ │ │ │ │ -785 "EUCTW", │ │ │ │ │ -786 "KOI8-RU", │ │ │ │ │ -787 "eucTW", │ │ │ │ │ -788 "IBM437", │ │ │ │ │ -789 "VISCII1.1-1", │ │ │ │ │ -790 "EUC-TW", │ │ │ │ │ -791 "CN-GB", │ │ │ │ │ -792 "KS_C_5601-1987", │ │ │ │ │ -793 "WINDOWS-874", │ │ │ │ │ -794 "JOHAB", │ │ │ │ │ -795 "ISO_8859-1:1987", │ │ │ │ │ -796 "CSISO2022CN", │ │ │ │ │ -797 "UCS-4BE", │ │ │ │ │ -798 "ISO_8859-6:1987", │ │ │ │ │ -799 "ISO-2022-JP-2", │ │ │ │ │ -800 "TCVN-5712", │ │ │ │ │ -801 "WINDOWS-1252", │ │ │ │ │ -802 "WINDOWS-1257", │ │ │ │ │ -803 "ISO_646.IRV:1991", │ │ │ │ │ -804 "ISO_8859-3:1988", │ │ │ │ │ -805 "CSUNICODE11UTF7", │ │ │ │ │ -806 "CSIBM866", │ │ │ │ │ -807 "ISO-2022-JP", │ │ │ │ │ -808 "WINDOWS-1253", │ │ │ │ │ -809 "JIS_X0201", │ │ │ │ │ -810 "JIS_X0208", │ │ │ │ │ -811 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", │ │ │ │ │ -812 "CSKSC56011987", │ │ │ │ │ -813 "UCS-2BE", │ │ │ │ │ -814 "GREEK", │ │ │ │ │ -815 "MACICELAND", │ │ │ │ │ -816 "JISX0201-1976", │ │ │ │ │ -817 "UTF-16BE", │ │ │ │ │ -818 "UTF-32LE", │ │ │ │ │ -819 "MACCROATIAN", │ │ │ │ │ -820 "UNICODEBIG", │ │ │ │ │ -821 "TIS620.2533-1", │ │ │ │ │ -822 "CSISO58GB231280", │ │ │ │ │ -823 "ISO_8859-2:1987", │ │ │ │ │ -824 "ISO_8859-7:1987", │ │ │ │ │ -825 "MACROMAN", │ │ │ │ │ -826 "X0212", │ │ │ │ │ -827 "CSHPROMAN8", │ │ │ │ │ -828 "CSISO87JISX0208", │ │ │ │ │ -829 "JIS_X0208-1990", │ │ │ │ │ -830 "ISO-2022-KR", │ │ │ │ │ -831 "BIG5HKSCS", │ │ │ │ │ -832 "TIS620.2533-0", │ │ │ │ │ -833 "CSISO2022JP2", │ │ │ │ │ -834 "BIG5-HKSCS", │ │ │ │ │ -835 "CSMACINTOSH", │ │ │ │ │ -836 "CSHALFWIDTHKATAKANA", │ │ │ │ │ -837 "CSISO2022JP", │ │ │ │ │ -838 "MS-HEBR", │ │ │ │ │ -839 "JIS_X0212-1990", │ │ │ │ │ -840 "CSPC862LATINHEBREW", │ │ │ │ │ -841 "HZ-GB-2312", │ │ │ │ │ -842 "JIS_X0208-1983", │ │ │ │ │ -843 "NEXTSTEP", │ │ │ │ │ -844 "CSGB2312", │ │ │ │ │ -845 "JIS_X0212", │ │ │ │ │ -846 "CSEUCKR", │ │ │ │ │ -847 "BIGFIVE", │ │ │ │ │ -848 "MACROMANIA", │ │ │ │ │ -849 "CSISO2022KR", │ │ │ │ │ -850 "HEBREW", │ │ │ │ │ -851 "BIG-FIVE", │ │ │ │ │ -852 "CSEUCTW", │ │ │ │ │ -853 "ANSI_X3.4-1968", │ │ │ │ │ -854 "MS-ARAB", │ │ │ │ │ -855 "MACCYRILLIC", │ │ │ │ │ -856 "ANSI_X3.4-1986", │ │ │ │ │ -857 "CSPC850MULTILINGUAL", │ │ │ │ │ -858 "IBM-CP1133", │ │ │ │ │ -859 "UTF-32BE", │ │ │ │ │ -860 "MS-TURK", │ │ │ │ │ -861 "JIS_X0212.1990-0", │ │ │ │ │ -862 "MACCENTRALEUROPE", │ │ │ │ │ -863 "MACTURKISH", │ │ │ │ │ -864 "MS-GREEK", │ │ │ │ │ -865 "MACARABIC", │ │ │ │ │ -866 "WINBALTRIM", │ │ │ │ │ -867 "MACUKRAINE", │ │ │ │ │ -868 "TCVN5712-1:1993", │ │ │ │ │ -869 "MACGREEK", │ │ │ │ │ -870 "CSEUCPKDFMTJAPANESE", │ │ │ │ │ -871 "MACHEBREW" │ │ │ │ │ -872 }; │ │ │ │ │ -873#define stringpool ((const char *) &stringpool_contents) │ │ │ │ │ -874const struct charset_alias * │ │ │ │ │ -875charset_lookup (register const char *str, register size_t len) │ │ │ │ │ -876{ │ │ │ │ │ -877 enum │ │ │ │ │ -878 { │ │ │ │ │ -879 TOTAL_KEYWORDS = 375, │ │ │ │ │ -880 MIN_WORD_LENGTH = 2, │ │ │ │ │ -881 MAX_WORD_LENGTH = 45, │ │ │ │ │ -882 MIN_HASH_VALUE = 32, │ │ │ │ │ -883 MAX_HASH_VALUE = 1069 │ │ │ │ │ -884 }; │ │ │ │ │ -885 │ │ │ │ │ -886 static const struct charset_alias wordlist[] = │ │ │ │ │ -887 { │ │ │ │ │ -888 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -889 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -890 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -891 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -893 {-1,-1}, {-1,-1}, │ │ │ │ │ -894#line 273 "charset_lookup.gperf" │ │ │ │ │ -895 {(int)offsetof(struct stringpool_t, stringpool_str32), 90}, │ │ │ │ │ -896 {-1,-1}, │ │ │ │ │ -897#line 376 "charset_lookup.gperf" │ │ │ │ │ -898 {(int)offsetof(struct stringpool_t, stringpool_str34), 71}, │ │ │ │ │ -899#line 360 "charset_lookup.gperf" │ │ │ │ │ -900 {(int)offsetof(struct stringpool_t, stringpool_str35), 90}, │ │ │ │ │ -901#line 229 "charset_lookup.gperf" │ │ │ │ │ -902 {(int)offsetof(struct stringpool_t, stringpool_str36), 0}, │ │ │ │ │ -903#line 236 "charset_lookup.gperf" │ │ │ │ │ -904 {(int)offsetof(struct stringpool_t, stringpool_str37), 53}, │ │ │ │ │ -905#line 233 "charset_lookup.gperf" │ │ │ │ │ -906 {(int)offsetof(struct stringpool_t, stringpool_str38), 63}, │ │ │ │ │ -907#line 363 "charset_lookup.gperf" │ │ │ │ │ -908 {(int)offsetof(struct stringpool_t, stringpool_str39), 1}, │ │ │ │ │ -909 {-1,-1}, │ │ │ │ │ -910#line 338 "charset_lookup.gperf" │ │ │ │ │ -911 {(int)offsetof(struct stringpool_t, stringpool_str41), 0}, │ │ │ │ │ -912#line 319 "charset_lookup.gperf" │ │ │ │ │ -913 {(int)offsetof(struct stringpool_t, stringpool_str42), 11}, │ │ │ │ │ -914#line 346 "charset_lookup.gperf" │ │ │ │ │ -915 {(int)offsetof(struct stringpool_t, stringpool_str43), 62}, │ │ │ │ │ -916#line 373 "charset_lookup.gperf" │ │ │ │ │ -917 {(int)offsetof(struct stringpool_t, stringpool_str44), 54}, │ │ │ │ │ -918#line 343 "charset_lookup.gperf" │ │ │ │ │ -919 {(int)offsetof(struct stringpool_t, stringpool_str45), 59}, │ │ │ │ │ -920 {-1,-1}, │ │ │ │ │ -921#line 357 "charset_lookup.gperf" │ │ │ │ │ -922 {(int)offsetof(struct stringpool_t, stringpool_str47), 63}, │ │ │ │ │ -923#line 361 "charset_lookup.gperf" │ │ │ │ │ -924 {(int)offsetof(struct stringpool_t, stringpool_str48), 67}, │ │ │ │ │ -925#line 234 "charset_lookup.gperf" │ │ │ │ │ -926 {(int)offsetof(struct stringpool_t, stringpool_str49), 51}, │ │ │ │ │ -927#line 358 "charset_lookup.gperf" │ │ │ │ │ -928 {(int)offsetof(struct stringpool_t, stringpool_str50), 89}, │ │ │ │ │ -929#line 10 "charset_lookup.gperf" │ │ │ │ │ -930 {(int)offsetof(struct stringpool_t, stringpool_str51), 32}, │ │ │ │ │ -931 {-1,-1}, │ │ │ │ │ -932#line 339 "charset_lookup.gperf" │ │ │ │ │ -933 {(int)offsetof(struct stringpool_t, stringpool_str53), 54}, │ │ │ │ │ -934 {-1,-1}, {-1,-1}, │ │ │ │ │ -935#line 369 "charset_lookup.gperf" │ │ │ │ │ -936 {(int)offsetof(struct stringpool_t, stringpool_str56), 61}, │ │ │ │ │ -937#line 375 "charset_lookup.gperf" │ │ │ │ │ -938 {(int)offsetof(struct stringpool_t, stringpool_str57), 0}, │ │ │ │ │ -939#line 359 "charset_lookup.gperf" │ │ │ │ │ -940 {(int)offsetof(struct stringpool_t, stringpool_str58), 89}, │ │ │ │ │ -941 {-1,-1}, {-1,-1}, │ │ │ │ │ -942#line 269 "charset_lookup.gperf" │ │ │ │ │ -943 {(int)offsetof(struct stringpool_t, stringpool_str61), 89}, │ │ │ │ │ -944 {-1,-1}, │ │ │ │ │ -945#line 7 "charset_lookup.gperf" │ │ │ │ │ -946 {(int)offsetof(struct stringpool_t, stringpool_str63), 92}, │ │ │ │ │ -947 {-1,-1}, │ │ │ │ │ -948#line 232 "charset_lookup.gperf" │ │ │ │ │ -949 {(int)offsetof(struct stringpool_t, stringpool_str65), 58}, │ │ │ │ │ -950 {-1,-1}, │ │ │ │ │ -951#line 344 "charset_lookup.gperf" │ │ │ │ │ -952 {(int)offsetof(struct stringpool_t, stringpool_str67), 60}, │ │ │ │ │ -953 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -954#line 347 "charset_lookup.gperf" │ │ │ │ │ -955 {(int)offsetof(struct stringpool_t, stringpool_str71), 0}, │ │ │ │ │ -956 {-1,-1}, │ │ │ │ │ -957#line 355 "charset_lookup.gperf" │ │ │ │ │ -958 {(int)offsetof(struct stringpool_t, stringpool_str73), 62}, │ │ │ │ │ -959#line 237 "charset_lookup.gperf" │ │ │ │ │ -960 {(int)offsetof(struct stringpool_t, stringpool_str74), 0}, │ │ │ │ │ -961#line 352 "charset_lookup.gperf" │ │ │ │ │ -962 {(int)offsetof(struct stringpool_t, stringpool_str75), 59}, │ │ │ │ │ -963#line 244 "charset_lookup.gperf" │ │ │ │ │ -964 {(int)offsetof(struct stringpool_t, stringpool_str76), 53}, │ │ │ │ │ -965#line 356 "charset_lookup.gperf" │ │ │ │ │ -966 {(int)offsetof(struct stringpool_t, stringpool_str77), 63}, │ │ │ │ │ -967#line 241 "charset_lookup.gperf" │ │ │ │ │ -968 {(int)offsetof(struct stringpool_t, stringpool_str78), 63}, │ │ │ │ │ -969#line 8 "charset_lookup.gperf" │ │ │ │ │ -970 {(int)offsetof(struct stringpool_t, stringpool_str79), 30}, │ │ │ │ │ -971#line 169 "charset_lookup.gperf" │ │ │ │ │ -972 {(int)offsetof(struct stringpool_t, stringpool_str80), 0}, │ │ │ │ │ -973 {-1,-1}, │ │ │ │ │ -974#line 177 "charset_lookup.gperf" │ │ │ │ │ -975 {(int)offsetof(struct stringpool_t, stringpool_str82), 62}, │ │ │ │ │ -976#line 348 "charset_lookup.gperf" │ │ │ │ │ -977 {(int)offsetof(struct stringpool_t, stringpool_str83), 54}, │ │ │ │ │ -978#line 174 "charset_lookup.gperf" │ │ │ │ │ -979 {(int)offsetof(struct stringpool_t, stringpool_str84), 59}, │ │ │ │ │ -980#line 113 "charset_lookup.gperf" │ │ │ │ │ -981 {(int)offsetof(struct stringpool_t, stringpool_str85), 44}, │ │ │ │ │ -982#line 178 "charset_lookup.gperf" │ │ │ │ │ -983 {(int)offsetof(struct stringpool_t, stringpool_str86), 63}, │ │ │ │ │ -984 {-1,-1}, {-1,-1}, │ │ │ │ │ -985#line 128 "charset_lookup.gperf" │ │ │ │ │ -986 {(int)offsetof(struct stringpool_t, stringpool_str89), 0}, │ │ │ │ │ -987 {-1,-1}, │ │ │ │ │ -988#line 140 "charset_lookup.gperf" │ │ │ │ │ -989 {(int)offsetof(struct stringpool_t, stringpool_str91), 62}, │ │ │ │ │ -990#line 171 "charset_lookup.gperf" │ │ │ │ │ -991 {(int)offsetof(struct stringpool_t, stringpool_str92), 54}, │ │ │ │ │ -992#line 137 "charset_lookup.gperf" │ │ │ │ │ -993 {(int)offsetof(struct stringpool_t, stringpool_str93), 59}, │ │ │ │ │ -994#line 370 "charset_lookup.gperf" │ │ │ │ │ -995 {(int)offsetof(struct stringpool_t, stringpool_str94), 51}, │ │ │ │ │ -996#line 141 "charset_lookup.gperf" │ │ │ │ │ -997 {(int)offsetof(struct stringpool_t, stringpool_str95), 63}, │ │ │ │ │ -998 {-1,-1}, │ │ │ │ │ -999#line 353 "charset_lookup.gperf" │ │ │ │ │ -1000 {(int)offsetof(struct stringpool_t, stringpool_str97), 60}, │ │ │ │ │ -1001#line 372 "charset_lookup.gperf" │ │ │ │ │ -1002 {(int)offsetof(struct stringpool_t, stringpool_str98), 53}, │ │ │ │ │ -1003#line 342 "charset_lookup.gperf" │ │ │ │ │ -1004 {(int)offsetof(struct stringpool_t, stringpool_str99), 58}, │ │ │ │ │ -1005#line 242 "charset_lookup.gperf" │ │ │ │ │ -1006 {(int)offsetof(struct stringpool_t, stringpool_str100), 51}, │ │ │ │ │ -1007#line 132 "charset_lookup.gperf" │ │ │ │ │ -1008 {(int)offsetof(struct stringpool_t, stringpool_str101), 54}, │ │ │ │ │ -1009 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1010#line 180 "charset_lookup.gperf" │ │ │ │ │ -1011 {(int)offsetof(struct stringpool_t, stringpool_str105), 0}, │ │ │ │ │ -1012#line 175 "charset_lookup.gperf" │ │ │ │ │ -1013 {(int)offsetof(struct stringpool_t, stringpool_str106), 60}, │ │ │ │ │ -1014#line 203 "charset_lookup.gperf" │ │ │ │ │ -1015 {(int)offsetof(struct stringpool_t, stringpool_str107), 62}, │ │ │ │ │ -1016#line 25 "charset_lookup.gperf" │ │ │ │ │ -1017 {(int)offsetof(struct stringpool_t, stringpool_str108), 15}, │ │ │ │ │ -1018#line 197 "charset_lookup.gperf" │ │ │ │ │ -1019 {(int)offsetof(struct stringpool_t, stringpool_str109), 59}, │ │ │ │ │ -1020 {-1,-1}, │ │ │ │ │ -1021#line 205 "charset_lookup.gperf" │ │ │ │ │ -1022 {(int)offsetof(struct stringpool_t, stringpool_str111), 63}, │ │ │ │ │ -1023#line 230 "charset_lookup.gperf" │ │ │ │ │ -1024 {(int)offsetof(struct stringpool_t, stringpool_str112), 56}, │ │ │ │ │ -1025 {-1,-1}, │ │ │ │ │ -1026#line 235 "charset_lookup.gperf" │ │ │ │ │ -1027 {(int)offsetof(struct stringpool_t, stringpool_str114), 52}, │ │ │ │ │ -1028#line 138 "charset_lookup.gperf" │ │ │ │ │ -1029 {(int)offsetof(struct stringpool_t, stringpool_str115), 60}, │ │ │ │ │ -1030#line 374 "charset_lookup.gperf" │ │ │ │ │ -1031 {(int)offsetof(struct stringpool_t, stringpool_str116), 92}, │ │ │ │ │ -1032#line 186 "charset_lookup.gperf" │ │ │ │ │ -1033 {(int)offsetof(struct stringpool_t, stringpool_str117), 54}, │ │ │ │ │ -1034 {-1,-1}, {-1,-1}, │ │ │ │ │ -1035#line 23 "charset_lookup.gperf" │ │ │ │ │ -1036 {(int)offsetof(struct stringpool_t, stringpool_str120), 13}, │ │ │ │ │ -1037#line 187 "charset_lookup.gperf" │ │ │ │ │ -1038 {(int)offsetof(struct stringpool_t, stringpool_str121), 54}, │ │ │ │ │ -1039#line 163 "charset_lookup.gperf" │ │ │ │ │ -1040 {(int)offsetof(struct stringpool_t, stringpool_str122), 14}, │ │ │ │ │ -1041#line 133 "charset_lookup.gperf" │ │ │ │ │ -1042 {(int)offsetof(struct stringpool_t, stringpool_str123), 55}, │ │ │ │ │ -1043 {-1,-1}, │ │ │ │ │ -1044#line 220 "charset_lookup.gperf" │ │ │ │ │ -1045 {(int)offsetof(struct stringpool_t, stringpool_str125), 64}, │ │ │ │ │ -1046#line 293 "charset_lookup.gperf" │ │ │ │ │ -1047 {(int)offsetof(struct stringpool_t, stringpool_str126), 92}, │ │ │ │ │ -1048 {-1,-1}, {-1,-1}, │ │ │ │ │ -1049#line 351 "charset_lookup.gperf" │ │ │ │ │ -1050 {(int)offsetof(struct stringpool_t, stringpool_str129), 58}, │ │ │ │ │ -1051 {-1,-1}, │ │ │ │ │ -1052#line 199 "charset_lookup.gperf" │ │ │ │ │ -1053 {(int)offsetof(struct stringpool_t, stringpool_str131), 60}, │ │ │ │ │ -1054#line 240 "charset_lookup.gperf" │ │ │ │ │ -1055 {(int)offsetof(struct stringpool_t, stringpool_str132), 58}, │ │ │ │ │ -1056#line 231 "charset_lookup.gperf" │ │ │ │ │ -1057 {(int)offsetof(struct stringpool_t, stringpool_str133), 57}, │ │ │ │ │ -1058#line 155 "charset_lookup.gperf" │ │ │ │ │ -1059 {(int)offsetof(struct stringpool_t, stringpool_str134), 66}, │ │ │ │ │ -1060#line 159 "charset_lookup.gperf" │ │ │ │ │ -1061 {(int)offsetof(struct stringpool_t, stringpool_str135), 53}, │ │ │ │ │ -1062#line 164 "charset_lookup.gperf" │ │ │ │ │ -1063 {(int)offsetof(struct stringpool_t, stringpool_str136), 92}, │ │ │ │ │ -1064#line 43 "charset_lookup.gperf" │ │ │ │ │ -1065 {(int)offsetof(struct stringpool_t, stringpool_str137), 0}, │ │ │ │ │ -1066#line 173 "charset_lookup.gperf" │ │ │ │ │ -1067 {(int)offsetof(struct stringpool_t, stringpool_str138), 58}, │ │ │ │ │ -1068#line 188 "charset_lookup.gperf" │ │ │ │ │ -1069 {(int)offsetof(struct stringpool_t, stringpool_str139), 55}, │ │ │ │ │ -1070 {-1,-1}, {-1,-1}, │ │ │ │ │ -1071#line 170 "charset_lookup.gperf" │ │ │ │ │ -1072 {(int)offsetof(struct stringpool_t, stringpool_str142), 51}, │ │ │ │ │ -1073#line 156 "charset_lookup.gperf" │ │ │ │ │ -1074 {(int)offsetof(struct stringpool_t, stringpool_str143), 17}, │ │ │ │ │ -1075 {-1,-1}, {-1,-1}, │ │ │ │ │ -1076#line 271 "charset_lookup.gperf" │ │ │ │ │ -1077 {(int)offsetof(struct stringpool_t, stringpool_str146), 90}, │ │ │ │ │ -1078#line 136 "charset_lookup.gperf" │ │ │ │ │ -1079 {(int)offsetof(struct stringpool_t, stringpool_str147), 58}, │ │ │ │ │ -1080#line 185 "charset_lookup.gperf" │ │ │ │ │ -1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 53}, │ │ │ │ │ -1082 {-1,-1}, {-1,-1}, │ │ │ │ │ -1083#line 129 "charset_lookup.gperf" │ │ │ │ │ -1084 {(int)offsetof(struct stringpool_t, stringpool_str151), 51}, │ │ │ │ │ -1085 {-1,-1}, │ │ │ │ │ -1086#line 144 "charset_lookup.gperf" │ │ │ │ │ -1087 {(int)offsetof(struct stringpool_t, stringpool_str153), 56}, │ │ │ │ │ -1088 {-1,-1}, │ │ │ │ │ -1089#line 131 "charset_lookup.gperf" │ │ │ │ │ -1090 {(int)offsetof(struct stringpool_t, stringpool_str155), 53}, │ │ │ │ │ -1091 {-1,-1}, │ │ │ │ │ -1092#line 152 "charset_lookup.gperf" │ │ │ │ │ -1093 {(int)offsetof(struct stringpool_t, stringpool_str157), 63}, │ │ │ │ │ -1094#line 189 "charset_lookup.gperf" │ │ │ │ │ -1095 {(int)offsetof(struct stringpool_t, stringpool_str158), 55}, │ │ │ │ │ -1096#line 145 "charset_lookup.gperf" │ │ │ │ │ -1097 {(int)offsetof(struct stringpool_t, stringpool_str159), 57}, │ │ │ │ │ -1098 {-1,-1}, │ │ │ │ │ -1099#line 153 "charset_lookup.gperf" │ │ │ │ │ -1100 {(int)offsetof(struct stringpool_t, stringpool_str161), 65}, │ │ │ │ │ -1101#line 272 "charset_lookup.gperf" │ │ │ │ │ -1102 {(int)offsetof(struct stringpool_t, stringpool_str162), 90}, │ │ │ │ │ -1103#line 195 "charset_lookup.gperf" │ │ │ │ │ -1104 {(int)offsetof(struct stringpool_t, stringpool_str163), 58}, │ │ │ │ │ -1105#line 337 "charset_lookup.gperf" │ │ │ │ │ -1106 {(int)offsetof(struct stringpool_t, stringpool_str164), 14}, │ │ │ │ │ -1107#line 157 "charset_lookup.gperf" │ │ │ │ │ -1108 {(int)offsetof(struct stringpool_t, stringpool_str165), 67}, │ │ │ │ │ -1109 {-1,-1}, │ │ │ │ │ -1110#line 181 "charset_lookup.gperf" │ │ │ │ │ -1111 {(int)offsetof(struct stringpool_t, stringpool_str167), 51}, │ │ │ │ │ -1112#line 50 "charset_lookup.gperf" │ │ │ │ │ -1113 {(int)offsetof(struct stringpool_t, stringpool_str168), 36}, │ │ │ │ │ -1114 {-1,-1}, │ │ │ │ │ -1115#line 46 "charset_lookup.gperf" │ │ │ │ │ -1116 {(int)offsetof(struct stringpool_t, stringpool_str170), 32}, │ │ │ │ │ -1117#line 184 "charset_lookup.gperf" │ │ │ │ │ -1118 {(int)offsetof(struct stringpool_t, stringpool_str171), 53}, │ │ │ │ │ -1119 {-1,-1}, │ │ │ │ │ -1120#line 15 "charset_lookup.gperf" │ │ │ │ │ -1121 {(int)offsetof(struct stringpool_t, stringpool_str173), 92}, │ │ │ │ │ -1122 {-1,-1}, {-1,-1}, │ │ │ │ │ -1123#line 150 "charset_lookup.gperf" │ │ │ │ │ -1124 {(int)offsetof(struct stringpool_t, stringpool_str176), 64}, │ │ │ │ │ -1125#line 9 "charset_lookup.gperf" │ │ │ │ │ -1126 {(int)offsetof(struct stringpool_t, stringpool_str177), 31}, │ │ │ │ │ -1127 {-1,-1}, {-1,-1}, │ │ │ │ │ -1128#line 146 "charset_lookup.gperf" │ │ │ │ │ -1129 {(int)offsetof(struct stringpool_t, stringpool_str180), 58}, │ │ │ │ │ -1130 {-1,-1}, {-1,-1}, │ │ │ │ │ -1131#line 105 "charset_lookup.gperf" │ │ │ │ │ -1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 15}, │ │ │ │ │ -1133 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1134#line 44 "charset_lookup.gperf" │ │ │ │ │ -1135 {(int)offsetof(struct stringpool_t, stringpool_str187), 30}, │ │ │ │ │ -1136 {-1,-1}, │ │ │ │ │ -1137#line 51 "charset_lookup.gperf" │ │ │ │ │ -1138 {(int)offsetof(struct stringpool_t, stringpool_str189), 37}, │ │ │ │ │ -1139 {-1,-1}, {-1,-1}, │ │ │ │ │ -1140#line 362 "charset_lookup.gperf" │ │ │ │ │ -1141 {(int)offsetof(struct stringpool_t, stringpool_str192), 67}, │ │ │ │ │ -1142#line 340 "charset_lookup.gperf" │ │ │ │ │ -1143 {(int)offsetof(struct stringpool_t, stringpool_str193), 56}, │ │ │ │ │ -1144 {-1,-1}, │ │ │ │ │ -1145#line 279 "charset_lookup.gperf" │ │ │ │ │ -1146 {(int)offsetof(struct stringpool_t, stringpool_str195), 67}, │ │ │ │ │ -1147 {-1,-1}, │ │ │ │ │ -1148#line 345 "charset_lookup.gperf" │ │ │ │ │ -1149 {(int)offsetof(struct stringpool_t, stringpool_str197), 61}, │ │ │ │ │ -1150#line 208 "charset_lookup.gperf" │ │ │ │ │ -1151 {(int)offsetof(struct stringpool_t, stringpool_str198), 68}, │ │ │ │ │ -1152 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1153#line 302 "charset_lookup.gperf" │ │ │ │ │ -1154 {(int)offsetof(struct stringpool_t, stringpool_str203), 1}, │ │ │ │ │ -1155#line 278 "charset_lookup.gperf" │ │ │ │ │ -1156 {(int)offsetof(struct stringpool_t, stringpool_str204), 67}, │ │ │ │ │ -1157 {-1,-1}, {-1,-1}, │ │ │ │ │ -1158#line 143 "charset_lookup.gperf" │ │ │ │ │ -1159 {(int)offsetof(struct stringpool_t, stringpool_str207), 0}, │ │ │ │ │ -1160 {-1,-1}, {-1,-1}, │ │ │ │ │ -1161#line 158 "charset_lookup.gperf" │ │ │ │ │ -1162 {(int)offsetof(struct stringpool_t, stringpool_str210), 52}, │ │ │ │ │ -1163 {-1,-1}, │ │ │ │ │ -1164#line 300 "charset_lookup.gperf" │ │ │ │ │ -1165 {(int)offsetof(struct stringpool_t, stringpool_str212), 1}, │ │ │ │ │ -1166#line 151 "charset_lookup.gperf" │ │ │ │ │ -1167 {(int)offsetof(struct stringpool_t, stringpool_str213), 59}, │ │ │ │ │ -1168 {-1,-1}, │ │ │ │ │ -1169#line 42 "charset_lookup.gperf" │ │ │ │ │ -1170 {(int)offsetof(struct stringpool_t, stringpool_str215), 1}, │ │ │ │ │ -1171#line 31 "charset_lookup.gperf" │ │ │ │ │ -1172 {(int)offsetof(struct stringpool_t, stringpool_str216), 20}, │ │ │ │ │ -1173 {-1,-1}, │ │ │ │ │ -1174#line 38 "charset_lookup.gperf" │ │ │ │ │ -1175 {(int)offsetof(struct stringpool_t, stringpool_str218), 27}, │ │ │ │ │ -1176 {-1,-1}, │ │ │ │ │ -1177#line 35 "charset_lookup.gperf" │ │ │ │ │ -1178 {(int)offsetof(struct stringpool_t, stringpool_str220), 24}, │ │ │ │ │ -1179#line 182 "charset_lookup.gperf" │ │ │ │ │ -1180 {(int)offsetof(struct stringpool_t, stringpool_str221), 51}, │ │ │ │ │ -1181#line 166 "charset_lookup.gperf" │ │ │ │ │ -1182 {(int)offsetof(struct stringpool_t, stringpool_str222), 15}, │ │ │ │ │ -1183#line 349 "charset_lookup.gperf" │ │ │ │ │ -1184 {(int)offsetof(struct stringpool_t, stringpool_str223), 56}, │ │ │ │ │ -1185 {-1,-1}, │ │ │ │ │ -1186#line 149 "charset_lookup.gperf" │ │ │ │ │ -1187 {(int)offsetof(struct stringpool_t, stringpool_str225), 62}, │ │ │ │ │ -1188#line 238 "charset_lookup.gperf" │ │ │ │ │ -1189 {(int)offsetof(struct stringpool_t, stringpool_str226), 56}, │ │ │ │ │ -1190#line 354 "charset_lookup.gperf" │ │ │ │ │ -1191 {(int)offsetof(struct stringpool_t, stringpool_str227), 61}, │ │ │ │ │ -1192#line 147 "charset_lookup.gperf" │ │ │ │ │ -1193 {(int)offsetof(struct stringpool_t, stringpool_str228), 61}, │ │ │ │ │ -1194#line 62 "charset_lookup.gperf" │ │ │ │ │ -1195 {(int)offsetof(struct stringpool_t, stringpool_str229), 66}, │ │ │ │ │ -1196#line 243 "charset_lookup.gperf" │ │ │ │ │ -1197 {(int)offsetof(struct stringpool_t, stringpool_str230), 52}, │ │ │ │ │ -1198#line 118 "charset_lookup.gperf" │ │ │ │ │ -1199 {(int)offsetof(struct stringpool_t, stringpool_str231), 0}, │ │ │ │ │ -1200#line 172 "charset_lookup.gperf" │ │ │ │ │ -1201 {(int)offsetof(struct stringpool_t, stringpool_str232), 56}, │ │ │ │ │ -1202#line 381 "charset_lookup.gperf" │ │ │ │ │ -1203 {(int)offsetof(struct stringpool_t, stringpool_str233), 85}, │ │ │ │ │ -1204#line 371 "charset_lookup.gperf" │ │ │ │ │ -1205 {(int)offsetof(struct stringpool_t, stringpool_str234), 52}, │ │ │ │ │ -1206#line 341 "charset_lookup.gperf" │ │ │ │ │ -1207 {(int)offsetof(struct stringpool_t, stringpool_str235), 57}, │ │ │ │ │ -1208#line 176 "charset_lookup.gperf" │ │ │ │ │ -1209 {(int)offsetof(struct stringpool_t, stringpool_str236), 61}, │ │ │ │ │ -1210#line 223 "charset_lookup.gperf" │ │ │ │ │ -1211 {(int)offsetof(struct stringpool_t, stringpool_str237), 73}, │ │ │ │ │ -1212#line 168 "charset_lookup.gperf" │ │ │ │ │ -1213 {(int)offsetof(struct stringpool_t, stringpool_str238), 92}, │ │ │ │ │ -1214#line 280 "charset_lookup.gperf" │ │ │ │ │ -1215 {(int)offsetof(struct stringpool_t, stringpool_str239), 67}, │ │ │ │ │ -1216#line 19 "charset_lookup.gperf" │ │ │ │ │ -1217 {(int)offsetof(struct stringpool_t, stringpool_str240), 11}, │ │ │ │ │ -1218#line 134 "charset_lookup.gperf" │ │ │ │ │ -1219 {(int)offsetof(struct stringpool_t, stringpool_str241), 56}, │ │ │ │ │ -1220#line 36 "charset_lookup.gperf" │ │ │ │ │ -1221 {(int)offsetof(struct stringpool_t, stringpool_str242), 25}, │ │ │ │ │ -1222#line 92 "charset_lookup.gperf" │ │ │ │ │ -1223 {(int)offsetof(struct stringpool_t, stringpool_str243), 61}, │ │ │ │ │ -1224#line 379 "charset_lookup.gperf" │ │ │ │ │ -1225 {(int)offsetof(struct stringpool_t, stringpool_str244), 80}, │ │ │ │ │ -1226#line 139 "charset_lookup.gperf" │ │ │ │ │ -1227 {(int)offsetof(struct stringpool_t, stringpool_str245), 61}, │ │ │ │ │ -1228 {-1,-1}, │ │ │ │ │ -1229#line 70 "charset_lookup.gperf" │ │ │ │ │ -1230 {(int)offsetof(struct stringpool_t, stringpool_str247), 0}, │ │ │ │ │ -1231#line 39 "charset_lookup.gperf" │ │ │ │ │ -1232 {(int)offsetof(struct stringpool_t, stringpool_str248), 28}, │ │ │ │ │ -1233#line 17 "charset_lookup.gperf" │ │ │ │ │ -1234 {(int)offsetof(struct stringpool_t, stringpool_str249), 11}, │ │ │ │ │ -1235#line 367 "charset_lookup.gperf" │ │ │ │ │ -1236 {(int)offsetof(struct stringpool_t, stringpool_str250), 36}, │ │ │ │ │ -1237#line 74 "charset_lookup.gperf" │ │ │ │ │ -1238 {(int)offsetof(struct stringpool_t, stringpool_str251), 63}, │ │ │ │ │ -1239#line 332 "charset_lookup.gperf" │ │ │ │ │ -1240 {(int)offsetof(struct stringpool_t, stringpool_str252), 32}, │ │ │ │ │ -1241#line 364 "charset_lookup.gperf" │ │ │ │ │ -1242 {(int)offsetof(struct stringpool_t, stringpool_str253), 0}, │ │ │ │ │ -1243 {-1,-1}, │ │ │ │ │ -1244#line 380 "charset_lookup.gperf" │ │ │ │ │ -1245 {(int)offsetof(struct stringpool_t, stringpool_str255), 84}, │ │ │ │ │ -1246#line 49 "charset_lookup.gperf" │ │ │ │ │ -1247 {(int)offsetof(struct stringpool_t, stringpool_str256), 35}, │ │ │ │ │ -1248#line 191 "charset_lookup.gperf" │ │ │ │ │ -1249 {(int)offsetof(struct stringpool_t, stringpool_str257), 56}, │ │ │ │ │ -1250 {-1,-1}, {-1,-1}, │ │ │ │ │ -1251#line 102 "charset_lookup.gperf" │ │ │ │ │ -1252 {(int)offsetof(struct stringpool_t, stringpool_str260), 41}, │ │ │ │ │ -1253#line 201 "charset_lookup.gperf" │ │ │ │ │ -1254 {(int)offsetof(struct stringpool_t, stringpool_str261), 61}, │ │ │ │ │ -1255#line 274 "charset_lookup.gperf" │ │ │ │ │ -1256 {(int)offsetof(struct stringpool_t, stringpool_str262), 91}, │ │ │ │ │ -1257 {-1,-1}, │ │ │ │ │ -1258#line 121 "charset_lookup.gperf" │ │ │ │ │ -1259 {(int)offsetof(struct stringpool_t, stringpool_str264), 32}, │ │ │ │ │ -1260#line 350 "charset_lookup.gperf" │ │ │ │ │ -1261 {(int)offsetof(struct stringpool_t, stringpool_str265), 57}, │ │ │ │ │ -1262 {-1,-1}, │ │ │ │ │ -1263#line 47 "charset_lookup.gperf" │ │ │ │ │ -1264 {(int)offsetof(struct stringpool_t, stringpool_str267), 33}, │ │ │ │ │ -1265#line 239 "charset_lookup.gperf" │ │ │ │ │ -1266 {(int)offsetof(struct stringpool_t, stringpool_str268), 57}, │ │ │ │ │ -1267#line 330 "charset_lookup.gperf" │ │ │ │ │ -1268 {(int)offsetof(struct stringpool_t, stringpool_str269), 30}, │ │ │ │ │ -1269#line 30 "charset_lookup.gperf" │ │ │ │ │ -1270 {(int)offsetof(struct stringpool_t, stringpool_str270), 19}, │ │ │ │ │ -1271#line 368 "charset_lookup.gperf" │ │ │ │ │ -1272 {(int)offsetof(struct stringpool_t, stringpool_str271), 37}, │ │ │ │ │ -1273 {-1,-1}, │ │ │ │ │ -1274#line 75 "charset_lookup.gperf" │ │ │ │ │ -1275 {(int)offsetof(struct stringpool_t, stringpool_str273), 51}, │ │ │ │ │ -1276#line 34 "charset_lookup.gperf" │ │ │ │ │ -1277 {(int)offsetof(struct stringpool_t, stringpool_str274), 23}, │ │ │ │ │ -1278#line 165 "charset_lookup.gperf" │ │ │ │ │ -1279 {(int)offsetof(struct stringpool_t, stringpool_str275), 68}, │ │ │ │ │ -1280#line 162 "charset_lookup.gperf" │ │ │ │ │ -1281 {(int)offsetof(struct stringpool_t, stringpool_str276), 15}, │ │ │ │ │ -1282 {-1,-1}, │ │ │ │ │ -1283#line 259 "charset_lookup.gperf" │ │ │ │ │ -1284 {(int)offsetof(struct stringpool_t, stringpool_str278), 21}, │ │ │ │ │ -1285#line 52 "charset_lookup.gperf" │ │ │ │ │ -1286 {(int)offsetof(struct stringpool_t, stringpool_str279), 92}, │ │ │ │ │ -1287 {-1,-1}, │ │ │ │ │ -1288#line 119 "charset_lookup.gperf" │ │ │ │ │ -1289 {(int)offsetof(struct stringpool_t, stringpool_str281), 30}, │ │ │ │ │ -1290 {-1,-1}, │ │ │ │ │ -1291#line 135 "charset_lookup.gperf" │ │ │ │ │ -1292 {(int)offsetof(struct stringpool_t, stringpool_str283), 57}, │ │ │ │ │ -1293#line 154 "charset_lookup.gperf" │ │ │ │ │ -1294 {(int)offsetof(struct stringpool_t, stringpool_str284), 51}, │ │ │ │ │ -1295 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1296#line 130 "charset_lookup.gperf" │ │ │ │ │ -1297 {(int)offsetof(struct stringpool_t, stringpool_str291), 52}, │ │ │ │ │ -1298 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1299#line 45 "charset_lookup.gperf" │ │ │ │ │ -1300 {(int)offsetof(struct stringpool_t, stringpool_str296), 31}, │ │ │ │ │ -1301 {-1,-1}, │ │ │ │ │ -1302#line 321 "charset_lookup.gperf" │ │ │ │ │ -1303 {(int)offsetof(struct stringpool_t, stringpool_str298), 20}, │ │ │ │ │ -1304#line 193 "charset_lookup.gperf" │ │ │ │ │ -1305 {(int)offsetof(struct stringpool_t, stringpool_str299), 57}, │ │ │ │ │ -1306#line 328 "charset_lookup.gperf" │ │ │ │ │ -1307 {(int)offsetof(struct stringpool_t, stringpool_str300), 27}, │ │ │ │ │ -1308#line 97 "charset_lookup.gperf" │ │ │ │ │ -1309 {(int)offsetof(struct stringpool_t, stringpool_str301), 16}, │ │ │ │ │ -1310#line 325 "charset_lookup.gperf" │ │ │ │ │ -1311 {(int)offsetof(struct stringpool_t, stringpool_str302), 24}, │ │ │ │ │ -1312 {-1,-1}, │ │ │ │ │ -1313#line 161 "charset_lookup.gperf" │ │ │ │ │ -1314 {(int)offsetof(struct stringpool_t, stringpool_str304), 55}, │ │ │ │ │ -1315#line 73 "charset_lookup.gperf" │ │ │ │ │ -1316 {(int)offsetof(struct stringpool_t, stringpool_str305), 58}, │ │ │ │ │ -1317 {-1,-1}, │ │ │ │ │ -1318#line 183 "charset_lookup.gperf" │ │ │ │ │ -1319 {(int)offsetof(struct stringpool_t, stringpool_str307), 52}, │ │ │ │ │ -1320#line 294 "charset_lookup.gperf" │ │ │ │ │ -1321 {(int)offsetof(struct stringpool_t, stringpool_str308), 92}, │ │ │ │ │ -1322#line 85 "charset_lookup.gperf" │ │ │ │ │ -1323 {(int)offsetof(struct stringpool_t, stringpool_str309), 90}, │ │ │ │ │ -1324#line 93 "charset_lookup.gperf" │ │ │ │ │ -1325 {(int)offsetof(struct stringpool_t, stringpool_str310), 16}, │ │ │ │ │ -1326 {-1,-1}, {-1,-1}, │ │ │ │ │ -1327#line 61 "charset_lookup.gperf" │ │ │ │ │ -1328 {(int)offsetof(struct stringpool_t, stringpool_str313), 64}, │ │ │ │ │ -1329#line 288 "charset_lookup.gperf" │ │ │ │ │ -1330 {(int)offsetof(struct stringpool_t, stringpool_str314), 36}, │ │ │ │ │ -1331#line 270 "charset_lookup.gperf" │ │ │ │ │ -1332 {(int)offsetof(struct stringpool_t, stringpool_str315), 89}, │ │ │ │ │ -1333 {-1,-1}, │ │ │ │ │ -1334#line 221 "charset_lookup.gperf" │ │ │ │ │ -1335 {(int)offsetof(struct stringpool_t, stringpool_str317), 71}, │ │ │ │ │ -1336 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1337#line 326 "charset_lookup.gperf" │ │ │ │ │ -1338 {(int)offsetof(struct stringpool_t, stringpool_str324), 25}, │ │ │ │ │ -1339 {-1,-1}, {-1,-1}, │ │ │ │ │ -1340#line 108 "charset_lookup.gperf" │ │ │ │ │ -1341 {(int)offsetof(struct stringpool_t, stringpool_str327), 43}, │ │ │ │ │ -1342 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1343 {-1,-1}, {-1,-1}, │ │ │ │ │ -1344#line 167 "charset_lookup.gperf" │ │ │ │ │ -1345 {(int)offsetof(struct stringpool_t, stringpool_str336), 64}, │ │ │ │ │ -1346 {-1,-1}, │ │ │ │ │ -1347#line 366 "charset_lookup.gperf" │ │ │ │ │ -1348 {(int)offsetof(struct stringpool_t, stringpool_str338), 35}, │ │ │ │ │ -1349 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1350 {-1,-1}, │ │ │ │ │ -1351#line 53 "charset_lookup.gperf" │ │ │ │ │ -1352 {(int)offsetof(struct stringpool_t, stringpool_str346), 11}, │ │ │ │ │ -1353 {-1,-1}, {-1,-1}, │ │ │ │ │ -1354#line 333 "charset_lookup.gperf" │ │ │ │ │ -1355 {(int)offsetof(struct stringpool_t, stringpool_str349), 33}, │ │ │ │ │ -1356#line 207 "charset_lookup.gperf" │ │ │ │ │ -1357 {(int)offsetof(struct stringpool_t, stringpool_str350), 69}, │ │ │ │ │ -1358 {-1,-1}, │ │ │ │ │ -1359#line 320 "charset_lookup.gperf" │ │ │ │ │ -1360 {(int)offsetof(struct stringpool_t, stringpool_str352), 19}, │ │ │ │ │ -1361 {-1,-1}, {-1,-1}, │ │ │ │ │ -1362#line 26 "charset_lookup.gperf" │ │ │ │ │ -1363 {(int)offsetof(struct stringpool_t, stringpool_str355), 11}, │ │ │ │ │ -1364#line 324 "charset_lookup.gperf" │ │ │ │ │ -1365 {(int)offsetof(struct stringpool_t, stringpool_str356), 23}, │ │ │ │ │ -1366#line 301 "charset_lookup.gperf" │ │ │ │ │ -1367 {(int)offsetof(struct stringpool_t, stringpool_str357), 93}, │ │ │ │ │ -1368#line 148 "charset_lookup.gperf" │ │ │ │ │ -1369 {(int)offsetof(struct stringpool_t, stringpool_str358), 60}, │ │ │ │ │ -1370 {-1,-1}, │ │ │ │ │ -1371#line 303 "charset_lookup.gperf" │ │ │ │ │ -1372 {(int)offsetof(struct stringpool_t, stringpool_str360), 94}, │ │ │ │ │ -1373 {-1,-1}, {-1,-1}, │ │ │ │ │ -1374#line 91 "charset_lookup.gperf" │ │ │ │ │ -1375 {(int)offsetof(struct stringpool_t, stringpool_str363), 61}, │ │ │ │ │ -1376 {-1,-1}, {-1,-1}, │ │ │ │ │ -1377#line 299 "charset_lookup.gperf" │ │ │ │ │ -1378 {(int)offsetof(struct stringpool_t, stringpool_str366), 93}, │ │ │ │ │ -1379#line 289 "charset_lookup.gperf" │ │ │ │ │ -1380 {(int)offsetof(struct stringpool_t, stringpool_str367), 3}, │ │ │ │ │ -1381#line 32 "charset_lookup.gperf" │ │ │ │ │ -1382 {(int)offsetof(struct stringpool_t, stringpool_str368), 21}, │ │ │ │ │ -1383#line 377 "charset_lookup.gperf" │ │ │ │ │ -1384 {(int)offsetof(struct stringpool_t, stringpool_str369), 75}, │ │ │ │ │ -1385#line 287 "charset_lookup.gperf" │ │ │ │ │ -1386 {(int)offsetof(struct stringpool_t, stringpool_str370), 6}, │ │ │ │ │ -1387 {-1,-1}, │ │ │ │ │ -1388#line 37 "charset_lookup.gperf" │ │ │ │ │ -1389 {(int)offsetof(struct stringpool_t, stringpool_str372), 26}, │ │ │ │ │ -1390 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1391#line 331 "charset_lookup.gperf" │ │ │ │ │ -1392 {(int)offsetof(struct stringpool_t, stringpool_str378), 31}, │ │ │ │ │ -1393#line 24 "charset_lookup.gperf" │ │ │ │ │ -1394 {(int)offsetof(struct stringpool_t, stringpool_str379), 14}, │ │ │ │ │ -1395#line 245 "charset_lookup.gperf" │ │ │ │ │ -1396 {(int)offsetof(struct stringpool_t, stringpool_str380), 75}, │ │ │ │ │ -1397#line 107 "charset_lookup.gperf" │ │ │ │ │ -1398 {(int)offsetof(struct stringpool_t, stringpool_str381), 42}, │ │ │ │ │ -1399#line 48 "charset_lookup.gperf" │ │ │ │ │ -1400 {(int)offsetof(struct stringpool_t, stringpool_str382), 34}, │ │ │ │ │ -1401 {-1,-1}, │ │ │ │ │ -1402#line 14 "charset_lookup.gperf" │ │ │ │ │ -1403 {(int)offsetof(struct stringpool_t, stringpool_str384), 10}, │ │ │ │ │ -1404#line 76 "charset_lookup.gperf" │ │ │ │ │ -1405 {(int)offsetof(struct stringpool_t, stringpool_str385), 60}, │ │ │ │ │ -1406 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1407#line 120 "charset_lookup.gperf" │ │ │ │ │ -1408 {(int)offsetof(struct stringpool_t, stringpool_str390), 31}, │ │ │ │ │ -1409#line 16 "charset_lookup.gperf" │ │ │ │ │ -1410 {(int)offsetof(struct stringpool_t, stringpool_str391), 60}, │ │ │ │ │ -1411#line 226 "charset_lookup.gperf" │ │ │ │ │ -1412 {(int)offsetof(struct stringpool_t, stringpool_str392), 65}, │ │ │ │ │ -1413 {-1,-1}, {-1,-1}, │ │ │ │ │ -1414#line 225 "charset_lookup.gperf" │ │ │ │ │ -1415 {(int)offsetof(struct stringpool_t, stringpool_str395), 65}, │ │ │ │ │ -1416#line 40 "charset_lookup.gperf" │ │ │ │ │ -1417 {(int)offsetof(struct stringpool_t, stringpool_str396), 92}, │ │ │ │ │ -1418 {-1,-1}, │ │ │ │ │ -1419#line 103 "charset_lookup.gperf" │ │ │ │ │ -1420 {(int)offsetof(struct stringpool_t, stringpool_str398), 16}, │ │ │ │ │ -1421#line 71 "charset_lookup.gperf" │ │ │ │ │ -1422 {(int)offsetof(struct stringpool_t, stringpool_str399), 56}, │ │ │ │ │ -1423 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1424#line 210 "charset_lookup.gperf" │ │ │ │ │ -1425 {(int)offsetof(struct stringpool_t, stringpool_str404), 64}, │ │ │ │ │ -1426 {-1,-1}, │ │ │ │ │ -1427#line 112 "charset_lookup.gperf" │ │ │ │ │ -1428 {(int)offsetof(struct stringpool_t, stringpool_str406), 89}, │ │ │ │ │ -1429#line 104 "charset_lookup.gperf" │ │ │ │ │ -1430 {(int)offsetof(struct stringpool_t, stringpool_str407), 35}, │ │ │ │ │ -1431#line 110 "charset_lookup.gperf" │ │ │ │ │ -1432 {(int)offsetof(struct stringpool_t, stringpool_str408), 61}, │ │ │ │ │ -1433#line 267 "charset_lookup.gperf" │ │ │ │ │ -1434 {(int)offsetof(struct stringpool_t, stringpool_str409), 87}, │ │ │ │ │ -1435#line 33 "charset_lookup.gperf" │ │ │ │ │ -1436 {(int)offsetof(struct stringpool_t, stringpool_str410), 22}, │ │ │ │ │ -1437 {-1,-1}, │ │ │ │ │ -1438#line 41 "charset_lookup.gperf" │ │ │ │ │ -1439 {(int)offsetof(struct stringpool_t, stringpool_str412), 29}, │ │ │ │ │ -1440 {-1,-1}, │ │ │ │ │ -1441#line 80 "charset_lookup.gperf" │ │ │ │ │ -1442 {(int)offsetof(struct stringpool_t, stringpool_str414), 71}, │ │ │ │ │ -1443#line 98 "charset_lookup.gperf" │ │ │ │ │ -1444 {(int)offsetof(struct stringpool_t, stringpool_str415), 38}, │ │ │ │ │ -1445 {-1,-1}, │ │ │ │ │ -1446#line 285 "charset_lookup.gperf" │ │ │ │ │ -1447 {(int)offsetof(struct stringpool_t, stringpool_str417), 2}, │ │ │ │ │ -1448#line 89 "charset_lookup.gperf" │ │ │ │ │ -1449 {(int)offsetof(struct stringpool_t, stringpool_str418), 59}, │ │ │ │ │ -1450#line 90 "charset_lookup.gperf" │ │ │ │ │ -1451 {(int)offsetof(struct stringpool_t, stringpool_str419), 60}, │ │ │ │ │ -1452#line 334 "charset_lookup.gperf" │ │ │ │ │ -1453 {(int)offsetof(struct stringpool_t, stringpool_str420), 38}, │ │ │ │ │ -1454#line 296 "charset_lookup.gperf" │ │ │ │ │ -1455 {(int)offsetof(struct stringpool_t, stringpool_str421), 4}, │ │ │ │ │ -1456#line 261 "charset_lookup.gperf" │ │ │ │ │ -1457 {(int)offsetof(struct stringpool_t, stringpool_str422), 20}, │ │ │ │ │ -1458#line 160 "charset_lookup.gperf" │ │ │ │ │ -1459 {(int)offsetof(struct stringpool_t, stringpool_str423), 54}, │ │ │ │ │ -1460#line 94 "charset_lookup.gperf" │ │ │ │ │ -1461 {(int)offsetof(struct stringpool_t, stringpool_str424), 38}, │ │ │ │ │ -1462#line 378 "charset_lookup.gperf" │ │ │ │ │ -1463 {(int)offsetof(struct stringpool_t, stringpool_str425), 79}, │ │ │ │ │ -1464 {-1,-1}, │ │ │ │ │ -1465#line 106 "charset_lookup.gperf" │ │ │ │ │ -1466 {(int)offsetof(struct stringpool_t, stringpool_str427), 14}, │ │ │ │ │ -1467 {-1,-1}, │ │ │ │ │ -1468#line 29 "charset_lookup.gperf" │ │ │ │ │ -1469 {(int)offsetof(struct stringpool_t, stringpool_str429), 18}, │ │ │ │ │ -1470 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1471#line 28 "charset_lookup.gperf" │ │ │ │ │ -1472 {(int)offsetof(struct stringpool_t, stringpool_str433), 17}, │ │ │ │ │ -1473#line 77 "charset_lookup.gperf" │ │ │ │ │ -1474 {(int)offsetof(struct stringpool_t, stringpool_str434), 59}, │ │ │ │ │ -1475#line 256 "charset_lookup.gperf" │ │ │ │ │ -1476 {(int)offsetof(struct stringpool_t, stringpool_str435), 84}, │ │ │ │ │ -1477 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1478#line 122 "charset_lookup.gperf" │ │ │ │ │ -1479 {(int)offsetof(struct stringpool_t, stringpool_str439), 45}, │ │ │ │ │ -1480#line 228 "charset_lookup.gperf" │ │ │ │ │ -1481 {(int)offsetof(struct stringpool_t, stringpool_str440), 65}, │ │ │ │ │ -1482#line 72 "charset_lookup.gperf" │ │ │ │ │ -1483 {(int)offsetof(struct stringpool_t, stringpool_str441), 57}, │ │ │ │ │ -1484#line 204 "charset_lookup.gperf" │ │ │ │ │ -1485 {(int)offsetof(struct stringpool_t, stringpool_str442), 62}, │ │ │ │ │ -1486#line 198 "charset_lookup.gperf" │ │ │ │ │ -1487 {(int)offsetof(struct stringpool_t, stringpool_str443), 59}, │ │ │ │ │ -1488 {-1,-1}, │ │ │ │ │ -1489#line 123 "charset_lookup.gperf" │ │ │ │ │ -1490 {(int)offsetof(struct stringpool_t, stringpool_str445), 46}, │ │ │ │ │ -1491#line 206 "charset_lookup.gperf" │ │ │ │ │ -1492 {(int)offsetof(struct stringpool_t, stringpool_str446), 63}, │ │ │ │ │ -1493 {-1,-1}, │ │ │ │ │ -1494#line 262 "charset_lookup.gperf" │ │ │ │ │ -1495 {(int)offsetof(struct stringpool_t, stringpool_str448), 19}, │ │ │ │ │ -1496#line 224 "charset_lookup.gperf" │ │ │ │ │ -1497 {(int)offsetof(struct stringpool_t, stringpool_str449), 74}, │ │ │ │ │ -1498#line 322 "charset_lookup.gperf" │ │ │ │ │ -1499 {(int)offsetof(struct stringpool_t, stringpool_str450), 21}, │ │ │ │ │ -1500#line 290 "charset_lookup.gperf" │ │ │ │ │ -1501 {(int)offsetof(struct stringpool_t, stringpool_str451), 93}, │ │ │ │ │ -1502#line 142 "charset_lookup.gperf" │ │ │ │ │ -1503 {(int)offsetof(struct stringpool_t, stringpool_str452), 53}, │ │ │ │ │ -1504 {-1,-1}, │ │ │ │ │ -1505#line 327 "charset_lookup.gperf" │ │ │ │ │ -1506 {(int)offsetof(struct stringpool_t, stringpool_str454), 26}, │ │ │ │ │ -1507#line 78 "charset_lookup.gperf" │ │ │ │ │ -1508 {(int)offsetof(struct stringpool_t, stringpool_str455), 61}, │ │ │ │ │ -1509#line 125 "charset_lookup.gperf" │ │ │ │ │ -1510 {(int)offsetof(struct stringpool_t, stringpool_str456), 48}, │ │ │ │ │ -1511#line 86 "charset_lookup.gperf" │ │ │ │ │ -1512 {(int)offsetof(struct stringpool_t, stringpool_str457), 3}, │ │ │ │ │ -1513#line 307 "charset_lookup.gperf" │ │ │ │ │ -1514 {(int)offsetof(struct stringpool_t, stringpool_str458), 20}, │ │ │ │ │ -1515#line 314 "charset_lookup.gperf" │ │ │ │ │ -1516 {(int)offsetof(struct stringpool_t, stringpool_str459), 27}, │ │ │ │ │ -1517#line 311 "charset_lookup.gperf" │ │ │ │ │ -1518 {(int)offsetof(struct stringpool_t, stringpool_str460), 24}, │ │ │ │ │ -1519 {-1,-1}, │ │ │ │ │ -1520#line 79 "charset_lookup.gperf" │ │ │ │ │ -1521 {(int)offsetof(struct stringpool_t, stringpool_str462), 62}, │ │ │ │ │ -1522 {-1,-1}, │ │ │ │ │ -1523#line 365 "charset_lookup.gperf" │ │ │ │ │ -1524 {(int)offsetof(struct stringpool_t, stringpool_str464), 34}, │ │ │ │ │ -1525#line 276 "charset_lookup.gperf" │ │ │ │ │ -1526 {(int)offsetof(struct stringpool_t, stringpool_str465), 91}, │ │ │ │ │ -1527#line 88 "charset_lookup.gperf" │ │ │ │ │ -1528 {(int)offsetof(struct stringpool_t, stringpool_str466), 94}, │ │ │ │ │ -1529 {-1,-1}, │ │ │ │ │ -1530#line 67 "charset_lookup.gperf" │ │ │ │ │ -1531 {(int)offsetof(struct stringpool_t, stringpool_str468), 15}, │ │ │ │ │ -1532 {-1,-1}, │ │ │ │ │ -1533#line 196 "charset_lookup.gperf" │ │ │ │ │ -1534 {(int)offsetof(struct stringpool_t, stringpool_str470), 58}, │ │ │ │ │ -1535#line 312 "charset_lookup.gperf" │ │ │ │ │ -1536 {(int)offsetof(struct stringpool_t, stringpool_str471), 25}, │ │ │ │ │ -1537#line 292 "charset_lookup.gperf" │ │ │ │ │ -1538 {(int)offsetof(struct stringpool_t, stringpool_str472), 2}, │ │ │ │ │ -1539#line 281 "charset_lookup.gperf" │ │ │ │ │ -1540 {(int)offsetof(struct stringpool_t, stringpool_str473), 67}, │ │ │ │ │ -1541#line 99 "charset_lookup.gperf" │ │ │ │ │ -1542 {(int)offsetof(struct stringpool_t, stringpool_str474), 39}, │ │ │ │ │ -1543#line 316 "charset_lookup.gperf" │ │ │ │ │ -1544 {(int)offsetof(struct stringpool_t, stringpool_str475), 70}, │ │ │ │ │ -1545#line 253 "charset_lookup.gperf" │ │ │ │ │ -1546 {(int)offsetof(struct stringpool_t, stringpool_str476), 75}, │ │ │ │ │ -1547#line 317 "charset_lookup.gperf" │ │ │ │ │ -1548 {(int)offsetof(struct stringpool_t, stringpool_str477), 68}, │ │ │ │ │ -1549 {-1,-1}, │ │ │ │ │ -1550#line 335 "charset_lookup.gperf" │ │ │ │ │ -1551 {(int)offsetof(struct stringpool_t, stringpool_str479), 39}, │ │ │ │ │ -1552 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1553#line 95 "charset_lookup.gperf" │ │ │ │ │ -1554 {(int)offsetof(struct stringpool_t, stringpool_str483), 39}, │ │ │ │ │ -1555#line 211 "charset_lookup.gperf" │ │ │ │ │ -1556 {(int)offsetof(struct stringpool_t, stringpool_str484), 68}, │ │ │ │ │ -1557#line 306 "charset_lookup.gperf" │ │ │ │ │ -1558 {(int)offsetof(struct stringpool_t, stringpool_str485), 19}, │ │ │ │ │ -1559 {-1,-1}, │ │ │ │ │ -1560#line 310 "charset_lookup.gperf" │ │ │ │ │ -1561 {(int)offsetof(struct stringpool_t, stringpool_str487), 23}, │ │ │ │ │ -1562 {-1,-1}, {-1,-1}, │ │ │ │ │ -1563#line 116 "charset_lookup.gperf" │ │ │ │ │ -1564 {(int)offsetof(struct stringpool_t, stringpool_str490), 92}, │ │ │ │ │ -1565#line 266 "charset_lookup.gperf" │ │ │ │ │ -1566 {(int)offsetof(struct stringpool_t, stringpool_str491), 90}, │ │ │ │ │ -1567#line 323 "charset_lookup.gperf" │ │ │ │ │ -1568 {(int)offsetof(struct stringpool_t, stringpool_str492), 22}, │ │ │ │ │ -1569#line 13 "charset_lookup.gperf" │ │ │ │ │ -1570 {(int)offsetof(struct stringpool_t, stringpool_str493), 60}, │ │ │ │ │ -1571#line 329 "charset_lookup.gperf" │ │ │ │ │ -1572 {(int)offsetof(struct stringpool_t, stringpool_str494), 29}, │ │ │ │ │ -1573 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1574#line 100 "charset_lookup.gperf" │ │ │ │ │ -1575 {(int)offsetof(struct stringpool_t, stringpool_str499), 40}, │ │ │ │ │ -1576 {-1,-1}, │ │ │ │ │ -1577#line 222 "charset_lookup.gperf" │ │ │ │ │ -1578 {(int)offsetof(struct stringpool_t, stringpool_str501), 72}, │ │ │ │ │ -1579 {-1,-1}, {-1,-1}, │ │ │ │ │ -1580#line 336 "charset_lookup.gperf" │ │ │ │ │ -1581 {(int)offsetof(struct stringpool_t, stringpool_str504), 40}, │ │ │ │ │ -1582 {-1,-1}, │ │ │ │ │ -1583#line 117 "charset_lookup.gperf" │ │ │ │ │ -1584 {(int)offsetof(struct stringpool_t, stringpool_str506), 29}, │ │ │ │ │ -1585#line 304 "charset_lookup.gperf" │ │ │ │ │ -1586 {(int)offsetof(struct stringpool_t, stringpool_str507), 94}, │ │ │ │ │ -1587#line 96 "charset_lookup.gperf" │ │ │ │ │ -1588 {(int)offsetof(struct stringpool_t, stringpool_str508), 40}, │ │ │ │ │ -1589 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1590#line 27 "charset_lookup.gperf" │ │ │ │ │ -1591 {(int)offsetof(struct stringpool_t, stringpool_str514), 16}, │ │ │ │ │ -1592#line 227 "charset_lookup.gperf" │ │ │ │ │ -1593 {(int)offsetof(struct stringpool_t, stringpool_str515), 65}, │ │ │ │ │ -1594#line 315 "charset_lookup.gperf" │ │ │ │ │ -1595 {(int)offsetof(struct stringpool_t, stringpool_str516), 33}, │ │ │ │ │ -1596#line 219 "charset_lookup.gperf" │ │ │ │ │ -1597 {(int)offsetof(struct stringpool_t, stringpool_str517), 28}, │ │ │ │ │ -1598#line 190 "charset_lookup.gperf" │ │ │ │ │ -1599 {(int)offsetof(struct stringpool_t, stringpool_str518), 0}, │ │ │ │ │ -1600 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1601 {-1,-1}, {-1,-1}, │ │ │ │ │ -1602#line 63 "charset_lookup.gperf" │ │ │ │ │ -1603 {(int)offsetof(struct stringpool_t, stringpool_str527), 45}, │ │ │ │ │ -1604 {-1,-1}, │ │ │ │ │ -1605#line 286 "charset_lookup.gperf" │ │ │ │ │ -1606 {(int)offsetof(struct stringpool_t, stringpool_str529), 7}, │ │ │ │ │ -1607 {-1,-1}, │ │ │ │ │ -1608#line 200 "charset_lookup.gperf" │ │ │ │ │ -1609 {(int)offsetof(struct stringpool_t, stringpool_str531), 60}, │ │ │ │ │ -1610#line 126 "charset_lookup.gperf" │ │ │ │ │ -1611 {(int)offsetof(struct stringpool_t, stringpool_str532), 49}, │ │ │ │ │ -1612#line 275 "charset_lookup.gperf" │ │ │ │ │ -1613 {(int)offsetof(struct stringpool_t, stringpool_str533), 91}, │ │ │ │ │ -1614#line 308 "charset_lookup.gperf" │ │ │ │ │ -1615 {(int)offsetof(struct stringpool_t, stringpool_str534), 21}, │ │ │ │ │ -1616 {-1,-1}, │ │ │ │ │ -1617#line 313 "charset_lookup.gperf" │ │ │ │ │ -1618 {(int)offsetof(struct stringpool_t, stringpool_str536), 26}, │ │ │ │ │ -1619#line 179 "charset_lookup.gperf" │ │ │ │ │ -1620 {(int)offsetof(struct stringpool_t, stringpool_str537), 92}, │ │ │ │ │ -1621#line 194 "charset_lookup.gperf" │ │ │ │ │ -1622 {(int)offsetof(struct stringpool_t, stringpool_str538), 57}, │ │ │ │ │ -1623#line 87 "charset_lookup.gperf" │ │ │ │ │ -1624 {(int)offsetof(struct stringpool_t, stringpool_str539), 93}, │ │ │ │ │ -1625 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1626 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1627#line 60 "charset_lookup.gperf" │ │ │ │ │ -1628 {(int)offsetof(struct stringpool_t, stringpool_str549), 32}, │ │ │ │ │ -1629 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1630#line 124 "charset_lookup.gperf" │ │ │ │ │ -1631 {(int)offsetof(struct stringpool_t, stringpool_str553), 47}, │ │ │ │ │ -1632 {-1,-1}, │ │ │ │ │ -1633#line 309 "charset_lookup.gperf" │ │ │ │ │ -1634 {(int)offsetof(struct stringpool_t, stringpool_str555), 22}, │ │ │ │ │ -1635 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1636#line 212 "charset_lookup.gperf" │ │ │ │ │ -1637 {(int)offsetof(struct stringpool_t, stringpool_str561), 70}, │ │ │ │ │ -1638 {-1,-1}, │ │ │ │ │ -1639#line 213 "charset_lookup.gperf" │ │ │ │ │ -1640 {(int)offsetof(struct stringpool_t, stringpool_str563), 68}, │ │ │ │ │ -1641 {-1,-1}, │ │ │ │ │ -1642#line 101 "charset_lookup.gperf" │ │ │ │ │ -1643 {(int)offsetof(struct stringpool_t, stringpool_str565), 38}, │ │ │ │ │ -1644 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1645#line 81 "charset_lookup.gperf" │ │ │ │ │ -1646 {(int)offsetof(struct stringpool_t, stringpool_str572), 65}, │ │ │ │ │ -1647 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1648#line 284 "charset_lookup.gperf" │ │ │ │ │ -1649 {(int)offsetof(struct stringpool_t, stringpool_str576), 3}, │ │ │ │ │ -1650#line 109 "charset_lookup.gperf" │ │ │ │ │ -1651 {(int)offsetof(struct stringpool_t, stringpool_str577), 61}, │ │ │ │ │ -1652#line 252 "charset_lookup.gperf" │ │ │ │ │ -1653 {(int)offsetof(struct stringpool_t, stringpool_str578), 82}, │ │ │ │ │ -1654#line 209 "charset_lookup.gperf" │ │ │ │ │ -1655 {(int)offsetof(struct stringpool_t, stringpool_str579), 70}, │ │ │ │ │ -1656#line 295 "charset_lookup.gperf" │ │ │ │ │ -1657 {(int)offsetof(struct stringpool_t, stringpool_str580), 5}, │ │ │ │ │ -1658#line 298 "charset_lookup.gperf" │ │ │ │ │ -1659 {(int)offsetof(struct stringpool_t, stringpool_str581), 8}, │ │ │ │ │ -1660#line 248 "charset_lookup.gperf" │ │ │ │ │ -1661 {(int)offsetof(struct stringpool_t, stringpool_str582), 78}, │ │ │ │ │ -1662 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1663#line 291 "charset_lookup.gperf" │ │ │ │ │ -1664 {(int)offsetof(struct stringpool_t, stringpool_str586), 3}, │ │ │ │ │ -1665 {-1,-1}, │ │ │ │ │ -1666#line 283 "charset_lookup.gperf" │ │ │ │ │ -1667 {(int)offsetof(struct stringpool_t, stringpool_str588), 67}, │ │ │ │ │ -1668#line 68 "charset_lookup.gperf" │ │ │ │ │ -1669 {(int)offsetof(struct stringpool_t, stringpool_str589), 14}, │ │ │ │ │ -1670 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1671#line 192 "charset_lookup.gperf" │ │ │ │ │ -1672 {(int)offsetof(struct stringpool_t, stringpool_str594), 56}, │ │ │ │ │ -1673 {-1,-1}, │ │ │ │ │ -1674#line 202 "charset_lookup.gperf" │ │ │ │ │ -1675 {(int)offsetof(struct stringpool_t, stringpool_str596), 61}, │ │ │ │ │ -1676#line 254 "charset_lookup.gperf" │ │ │ │ │ -1677 {(int)offsetof(struct stringpool_t, stringpool_str597), 75}, │ │ │ │ │ -1678 {-1,-1}, {-1,-1}, │ │ │ │ │ -1679#line 318 "charset_lookup.gperf" │ │ │ │ │ -1680 {(int)offsetof(struct stringpool_t, stringpool_str600), 66}, │ │ │ │ │ -1681 {-1,-1}, │ │ │ │ │ -1682#line 59 "charset_lookup.gperf" │ │ │ │ │ -1683 {(int)offsetof(struct stringpool_t, stringpool_str602), 89}, │ │ │ │ │ -1684 {-1,-1}, │ │ │ │ │ -1685#line 69 "charset_lookup.gperf" │ │ │ │ │ -1686 {(int)offsetof(struct stringpool_t, stringpool_str604), 68}, │ │ │ │ │ -1687 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1688#line 215 "charset_lookup.gperf" │ │ │ │ │ -1689 {(int)offsetof(struct stringpool_t, stringpool_str609), 68}, │ │ │ │ │ -1690 {-1,-1}, {-1,-1}, │ │ │ │ │ -1691#line 127 "charset_lookup.gperf" │ │ │ │ │ -1692 {(int)offsetof(struct stringpool_t, stringpool_str612), 50}, │ │ │ │ │ -1693#line 21 "charset_lookup.gperf" │ │ │ │ │ -1694 {(int)offsetof(struct stringpool_t, stringpool_str613), 12}, │ │ │ │ │ -1695 {-1,-1}, │ │ │ │ │ -1696#line 282 "charset_lookup.gperf" │ │ │ │ │ -1697 {(int)offsetof(struct stringpool_t, stringpool_str615), 67}, │ │ │ │ │ -1698 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1699#line 65 "charset_lookup.gperf" │ │ │ │ │ -1700 {(int)offsetof(struct stringpool_t, stringpool_str619), 49}, │ │ │ │ │ -1701 {-1,-1}, {-1,-1}, │ │ │ │ │ -1702#line 20 "charset_lookup.gperf" │ │ │ │ │ -1703 {(int)offsetof(struct stringpool_t, stringpool_str622), 12}, │ │ │ │ │ -1704 {-1,-1}, {-1,-1}, │ │ │ │ │ -1705#line 82 "charset_lookup.gperf" │ │ │ │ │ -1706 {(int)offsetof(struct stringpool_t, stringpool_str625), 75}, │ │ │ │ │ -1707 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1708#line 58 "charset_lookup.gperf" │ │ │ │ │ -1709 {(int)offsetof(struct stringpool_t, stringpool_str631), 70}, │ │ │ │ │ -1710 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1711 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1712#line 64 "charset_lookup.gperf" │ │ │ │ │ -1713 {(int)offsetof(struct stringpool_t, stringpool_str641), 47}, │ │ │ │ │ -1714 {-1,-1}, │ │ │ │ │ -1715#line 264 "charset_lookup.gperf" │ │ │ │ │ -1716 {(int)offsetof(struct stringpool_t, stringpool_str643), 24}, │ │ │ │ │ -1717 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1718 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1719 {-1,-1}, │ │ │ │ │ -1720#line 217 "charset_lookup.gperf" │ │ │ │ │ -1721 {(int)offsetof(struct stringpool_t, stringpool_str657), 66}, │ │ │ │ │ -1722 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1723 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1725#line 84 "charset_lookup.gperf" │ │ │ │ │ -1726 {(int)offsetof(struct stringpool_t, stringpool_str675), 31}, │ │ │ │ │ -1727 {-1,-1}, │ │ │ │ │ -1728#line 114 "charset_lookup.gperf" │ │ │ │ │ -1729 {(int)offsetof(struct stringpool_t, stringpool_str677), 44}, │ │ │ │ │ -1730 {-1,-1}, │ │ │ │ │ -1731#line 214 "charset_lookup.gperf" │ │ │ │ │ -1732 {(int)offsetof(struct stringpool_t, stringpool_str679), 68}, │ │ │ │ │ -1733 {-1,-1}, │ │ │ │ │ -1734#line 268 "charset_lookup.gperf" │ │ │ │ │ -1735 {(int)offsetof(struct stringpool_t, stringpool_str681), 88}, │ │ │ │ │ -1736 {-1,-1}, │ │ │ │ │ -1737#line 57 "charset_lookup.gperf" │ │ │ │ │ -1738 {(int)offsetof(struct stringpool_t, stringpool_str683), 16}, │ │ │ │ │ -1739 {-1,-1}, {-1,-1}, │ │ │ │ │ -1740#line 216 "charset_lookup.gperf" │ │ │ │ │ -1741 {(int)offsetof(struct stringpool_t, stringpool_str686), 66}, │ │ │ │ │ -1742 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1743#line 54 "charset_lookup.gperf" │ │ │ │ │ -1744 {(int)offsetof(struct stringpool_t, stringpool_str690), 39}, │ │ │ │ │ -1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1746#line 22 "charset_lookup.gperf" │ │ │ │ │ -1747 {(int)offsetof(struct stringpool_t, stringpool_str695), 11}, │ │ │ │ │ -1748 {-1,-1}, │ │ │ │ │ -1749#line 255 "charset_lookup.gperf" │ │ │ │ │ -1750 {(int)offsetof(struct stringpool_t, stringpool_str697), 83}, │ │ │ │ │ -1751 {-1,-1}, {-1,-1}, │ │ │ │ │ -1752#line 66 "charset_lookup.gperf" │ │ │ │ │ -1753 {(int)offsetof(struct stringpool_t, stringpool_str700), 50}, │ │ │ │ │ -1754 {-1,-1}, │ │ │ │ │ -1755#line 111 "charset_lookup.gperf" │ │ │ │ │ -1756 {(int)offsetof(struct stringpool_t, stringpool_str702), 62}, │ │ │ │ │ -1757 {-1,-1}, │ │ │ │ │ -1758#line 18 "charset_lookup.gperf" │ │ │ │ │ -1759 {(int)offsetof(struct stringpool_t, stringpool_str704), 11}, │ │ │ │ │ -1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1762#line 56 "charset_lookup.gperf" │ │ │ │ │ -1763 {(int)offsetof(struct stringpool_t, stringpool_str715), 40}, │ │ │ │ │ -1764 {-1,-1}, │ │ │ │ │ -1765#line 11 "charset_lookup.gperf" │ │ │ │ │ -1766 {(int)offsetof(struct stringpool_t, stringpool_str717), 92}, │ │ │ │ │ -1767 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1768#line 260 "charset_lookup.gperf" │ │ │ │ │ -1769 {(int)offsetof(struct stringpool_t, stringpool_str721), 25}, │ │ │ │ │ -1770 {-1,-1}, │ │ │ │ │ -1771#line 249 "charset_lookup.gperf" │ │ │ │ │ -1772 {(int)offsetof(struct stringpool_t, stringpool_str723), 79}, │ │ │ │ │ -1773 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1774#line 12 "charset_lookup.gperf" │ │ │ │ │ -1775 {(int)offsetof(struct stringpool_t, stringpool_str729), 92}, │ │ │ │ │ -1776 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1777#line 83 "charset_lookup.gperf" │ │ │ │ │ -1778 {(int)offsetof(struct stringpool_t, stringpool_str735), 30}, │ │ │ │ │ -1779 {-1,-1}, │ │ │ │ │ -1780#line 115 "charset_lookup.gperf" │ │ │ │ │ -1781 {(int)offsetof(struct stringpool_t, stringpool_str737), 18}, │ │ │ │ │ -1782 {-1,-1}, {-1,-1}, │ │ │ │ │ -1783#line 297 "charset_lookup.gperf" │ │ │ │ │ -1784 {(int)offsetof(struct stringpool_t, stringpool_str740), 9}, │ │ │ │ │ -1785 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1786 {-1,-1}, {-1,-1}, │ │ │ │ │ -1787#line 265 "charset_lookup.gperf" │ │ │ │ │ -1788 {(int)offsetof(struct stringpool_t, stringpool_str749), 23}, │ │ │ │ │ -1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1791 {-1,-1}, {-1,-1}, │ │ │ │ │ -1792#line 218 "charset_lookup.gperf" │ │ │ │ │ -1793 {(int)offsetof(struct stringpool_t, stringpool_str764), 66}, │ │ │ │ │ -1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1799#line 247 "charset_lookup.gperf" │ │ │ │ │ -1800 {(int)offsetof(struct stringpool_t, stringpool_str793), 77}, │ │ │ │ │ -1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1803 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1804 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1805#line 257 "charset_lookup.gperf" │ │ │ │ │ -1806 {(int)offsetof(struct stringpool_t, stringpool_str815), 85}, │ │ │ │ │ -1807 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1808#line 263 "charset_lookup.gperf" │ │ │ │ │ -1809 {(int)offsetof(struct stringpool_t, stringpool_str822), 22}, │ │ │ │ │ -1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1811#line 246 "charset_lookup.gperf" │ │ │ │ │ -1812 {(int)offsetof(struct stringpool_t, stringpool_str827), 76}, │ │ │ │ │ -1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1814 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1815 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1816 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1820#line 305 "charset_lookup.gperf" │ │ │ │ │ -1821 {(int)offsetof(struct stringpool_t, stringpool_str868), 26}, │ │ │ │ │ -1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1823 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1824#line 258 "charset_lookup.gperf" │ │ │ │ │ -1825 {(int)offsetof(struct stringpool_t, stringpool_str878), 86}, │ │ │ │ │ -1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1829#line 277 "charset_lookup.gperf" │ │ │ │ │ -1830 {(int)offsetof(struct stringpool_t, stringpool_str897), 91}, │ │ │ │ │ -1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1833 {-1,-1}, │ │ │ │ │ -1834#line 250 "charset_lookup.gperf" │ │ │ │ │ -1835 {(int)offsetof(struct stringpool_t, stringpool_str911), 80}, │ │ │ │ │ -1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1844 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1845 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1846 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1847 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1848 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1849 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1850 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1851 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1852 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1853 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1854 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1855 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1856 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1857 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1858 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1859 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1860 {-1,-1}, │ │ │ │ │ -1861#line 55 "charset_lookup.gperf" │ │ │ │ │ -1862 {(int)offsetof(struct stringpool_t, stringpool_str1057), 38}, │ │ │ │ │ -1863 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1864 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ -1865#line 251 "charset_lookup.gperf" │ │ │ │ │ -1866 {(int)offsetof(struct stringpool_t, stringpool_str1069), 81} │ │ │ │ │ -1867 }; │ │ │ │ │ -1868 │ │ │ │ │ -1869 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) │ │ │ │ │ -1870 { │ │ │ │ │ -1871 register unsigned int key = hash_charset (str, len); │ │ │ │ │ -1872 │ │ │ │ │ -1873 if (key <= MAX_HASH_VALUE) │ │ │ │ │ -1874 { │ │ │ │ │ -1875 register int o = wordlist[key].alias_pos; │ │ │ │ │ -1876 if (o >= 0) │ │ │ │ │ -1877 { │ │ │ │ │ -1878 register const char *s = o + stringpool; │ │ │ │ │ -1879 │ │ │ │ │ -1880 if (*str == *s && !strcmp (str + 1, s + 1)) │ │ │ │ │ -1881 return &wordlist[key]; │ │ │ │ │ -1882 } │ │ │ │ │ -1883 } │ │ │ │ │ -1884 } │ │ │ │ │ -1885 return 0; │ │ │ │ │ -1886} │ │ │ │ │ -1887#line 382 "charset_lookup.gperf" │ │ │ │ │ -1888 │ │ │ │ │ +ctpublic.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _ctpublic_h_ │ │ │ │ │ +21#define _ctpublic_h_ │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#undef TDS_STATIC_CAST │ │ │ │ │ +26#ifdef __cplusplus │ │ │ │ │ +27#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ +28extern "C" │ │ │ │ │ +29{ │ │ │ │ │ +30#if 0 │ │ │ │ │ +31} │ │ │ │ │ +32#endif │ │ │ │ │ +33#else │ │ │ │ │ +34#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ +35#endif │ │ │ │ │ +36 │ │ │ │ │ +37/* │ │ │ │ │ +38** define for each CT-Lib API │ │ │ │ │ +39*/ │ │ │ │ │ +40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ +41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ +42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ +43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ +44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ +45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ +46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ +47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ +48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8) │ │ │ │ │ +49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9) │ │ │ │ │ +50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10) │ │ │ │ │ +51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11) │ │ │ │ │ +52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12) │ │ │ │ │ +53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13) │ │ │ │ │ +54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14) │ │ │ │ │ +55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15) │ │ │ │ │ +56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16) │ │ │ │ │ +57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17) │ │ │ │ │ +58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18) │ │ │ │ │ +59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19) │ │ │ │ │ +60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20) │ │ │ │ │ +61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21) │ │ │ │ │ +62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22) │ │ │ │ │ +63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23) │ │ │ │ │ +64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24) │ │ │ │ │ +65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25) │ │ │ │ │ +66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26) │ │ │ │ │ +67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27) │ │ │ │ │ +68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28) │ │ │ │ │ +69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29) │ │ │ │ │ +70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30) │ │ │ │ │ +71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31) │ │ │ │ │ +72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32) │ │ │ │ │ +73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33) │ │ │ │ │ +74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34) │ │ │ │ │ +75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35) │ │ │ │ │ +76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36) │ │ │ │ │ +77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37) │ │ │ │ │ +78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38) │ │ │ │ │ +79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39) │ │ │ │ │ +80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40) │ │ │ │ │ +81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41) │ │ │ │ │ +82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42) │ │ │ │ │ +83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43) │ │ │ │ │ +84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44) │ │ │ │ │ +85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45) │ │ │ │ │ +86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46) │ │ │ │ │ +87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47) │ │ │ │ │ +88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48) │ │ │ │ │ +89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49) │ │ │ │ │ +90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000) │ │ │ │ │ +91 │ │ │ │ │ +92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10: │ │ │ │ │ +48:26 freddy77 Exp $"; │ │ │ │ │ +93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, │ │ │ │ │ +no_unused_ctpublic_h_warn }; │ │ │ │ │ +94 │ │ │ │ │ +95 │ │ │ │ │ +96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version); │ │ │ │ │ +97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con); │ │ │ │ │ +98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, │ │ │ │ │ +CS_VOID * buffer, CS_INT buflen, CS_INT * out_len); │ │ │ │ │ +99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT │ │ │ │ │ +snamelen); │ │ │ │ │ +100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd); │ │ │ │ │ +101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type); │ │ │ │ │ +102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd); │ │ │ │ │ +103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option); │ │ │ │ │ +104CS_RETCODE ct_con_drop(CS_CONNECTION * con); │ │ │ │ │ +105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused); │ │ │ │ │ +106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, │ │ │ │ │ +CS_INT buflen, CS_INT option); │ │ │ │ │ +107CS_RETCODE ct_send(CS_COMMAND * cmd); │ │ │ │ │ +108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type); │ │ │ │ │ +109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_ │ │ │ │ │ +VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator); │ │ │ │ │ +110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT │ │ │ │ │ +option, CS_INT * rows_read); │ │ │ │ │ +111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, │ │ │ │ │ +CS_INT buflen, CS_INT * out_len); │ │ │ │ │ +112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_ │ │ │ │ │ +INT buflen, CS_INT * out_len); │ │ │ │ │ +113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt); │ │ │ │ │ +114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, │ │ │ │ │ +CS_INT type, CS_VOID * func); │ │ │ │ │ +115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd); │ │ │ │ │ +116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type); │ │ │ │ │ +117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_ │ │ │ │ │ +VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, │ │ │ │ │ +CS_VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_ │ │ │ │ │ +VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_ │ │ │ │ │ +INT buflen, CS_INT * outlen); │ │ │ │ │ +121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen); │ │ │ │ │ +122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_ │ │ │ │ │ +IODESC * iodesc); │ │ │ │ │ +123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, │ │ │ │ │ +CS_INT capability, CS_VOID * value); │ │ │ │ │ +124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT │ │ │ │ │ +idlen, CS_CHAR * buffer, CS_INT buflen); │ │ │ │ │ +125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, │ │ │ │ │ +CS_INT datalen, CS_SMALLINT indicator); │ │ │ │ │ +126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * │ │ │ │ │ +data, CS_INT * datalen, CS_SMALLINT * indicator); │ │ │ │ │ +127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_ │ │ │ │ │ +VOID * param, CS_INT paramlen, CS_INT * outlen); │ │ │ │ │ +128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT │ │ │ │ │ +milliseconds, CS_CONNECTION ** compconn, │ │ │ │ │ +129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus); │ │ │ │ │ +130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT │ │ │ │ │ +namelen, CS_CHAR * text, CS_INT tlen, CS_INT option); │ │ │ │ │ +131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_ │ │ │ │ │ +INT idx, CS_VOID * buffer); │ │ │ │ │ +132 │ │ │ │ │ +133#ifdef __cplusplus │ │ │ │ │ +134#if 0 │ │ │ │ │ +135{ │ │ │ │ │ +136#endif │ │ │ │ │ +137} │ │ │ │ │ +138#endif │ │ │ │ │ +139 │ │ │ │ │ +140#endif │ │ │ │ │ +_cs_iodesc │ │ │ │ │ +Definition cstypes.h:102 │ │ │ │ │ +_cs_datafmt │ │ │ │ │ +Definition cstypes.h:119 │ │ │ │ │ +_cs_context │ │ │ │ │ +Definition ctlib.h:135 │ │ │ │ │ +_cs_connection │ │ │ │ │ +Definition ctlib.h:188 │ │ │ │ │ +_cs_command │ │ │ │ │ +Definition ctlib.h:284 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00395_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/alloca.h Source File │ │ │ │ +FreeTDS API: include/bkpublic.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,39 +70,94 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
alloca.h
│ │ │ │ +
bkpublic.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* Cfr https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Particular-Functions.html */
│ │ │ │ -
2#include <stdlib.h>
│ │ │ │ -
3#include <stddef.h>
│ │ │ │ -
4#ifdef HAVE_ALLOCA_H
│ │ │ │ -
5# include <alloca.h>
│ │ │ │ -
6#elif !defined alloca
│ │ │ │ -
7# ifdef __GNUC__
│ │ │ │ -
8# define alloca __builtin_alloca
│ │ │ │ -
9# elif defined _MSC_VER
│ │ │ │ -
10# include <malloc.h>
│ │ │ │ -
11# define alloca _alloca
│ │ │ │ -
12# elif !defined HAVE_ALLOCA
│ │ │ │ -
13# ifdef __cplusplus
│ │ │ │ -
14extern "C"
│ │ │ │ -
15# endif
│ │ │ │ -
16void *alloca (size_t);
│ │ │ │ -
17# endif
│ │ │ │ -
18#endif
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2024 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21#ifndef _bkpublic_h_
│ │ │ │ +
22#define _bkpublic_h_
│ │ │ │ +
23
│ │ │ │ +
24/* seperate this stuff out later */
│ │ │ │ +
25#include <cspublic.h>
│ │ │ │ +
26
│ │ │ │ +
27#ifdef __cplusplus
│ │ │ │ +
28extern "C"
│ │ │ │ +
29{
│ │ │ │ +
30#if 0
│ │ │ │ +
31}
│ │ │ │ +
32#endif
│ │ │ │ +
33#endif
│ │ │ │ +
34
│ │ │ │ +
35/* bulk properties start with 1 */
│ │ │ │ +
36#define BLK_IDENTITY 1
│ │ │ │ +
37
│ │ │ │ +
38/* FreeTDS extention, set MS bulk hints */
│ │ │ │ +
39#define BLK_HINTS 1001
│ │ │ │ +
40
│ │ │ │ +
41CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC ** blk_pointer);
│ │ │ │ +
42CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * datalen,
│ │ │ │ +
43 CS_SMALLINT * indicator);
│ │ │ │ +
44CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT colnum, CS_VOID * valuep,
│ │ │ │ +
45 CS_INT valuelen, CS_INT * outlenp);
│ │ │ │ +
46CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
47CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt);
│ │ │ │ +
48CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);
│ │ │ │ +
49CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);
│ │ │ │ +
50CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp);
│ │ │ │ +
51CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT bufsize, CS_INT * outlenp);
│ │ │ │ +
52CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * tablename, CS_INT tnamelen);
│ │ │ │ +
53CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
54CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);
│ │ │ │ +
55CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);
│ │ │ │ +
56CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);
│ │ │ │ +
57CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);
│ │ │ │ +
58CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);
│ │ │ │ +
59CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * buffer, CS_INT buflen);
│ │ │ │ +
60CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);
│ │ │ │ +
61CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ +
62
│ │ │ │ +
63#ifdef __cplusplus
│ │ │ │ +
64#if 0
│ │ │ │ +
65{
│ │ │ │ +
66#endif
│ │ │ │ +
67}
│ │ │ │ +
68#endif
│ │ │ │ +
69
│ │ │ │ +
70#endif
│ │ │ │ +
Definition cstypes.h:119
│ │ │ │ +
Definition ctlib.h:188
│ │ │ │ +
Definition ctlib.h:311
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,28 +1,95 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ - * freetds │ │ │ │ │ -alloca.h │ │ │ │ │ -1/* Cfr https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf- │ │ │ │ │ -2.71/html_node/Particular-Functions.html */ │ │ │ │ │ -2#include │ │ │ │ │ -3#include │ │ │ │ │ -4#ifdef HAVE_ALLOCA_H │ │ │ │ │ -5# include │ │ │ │ │ -6#elif !defined alloca │ │ │ │ │ -7# ifdef __GNUC__ │ │ │ │ │ -8# define alloca __builtin_alloca │ │ │ │ │ -9# elif defined _MSC_VER │ │ │ │ │ -10# include │ │ │ │ │ -11# define alloca _alloca │ │ │ │ │ -12# elif !defined HAVE_ALLOCA │ │ │ │ │ -13# ifdef __cplusplus │ │ │ │ │ -14extern "C" │ │ │ │ │ -15# endif │ │ │ │ │ -16void *alloca (size_t); │ │ │ │ │ -17# endif │ │ │ │ │ -18#endif │ │ │ │ │ +bkpublic.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2024 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21#ifndef _bkpublic_h_ │ │ │ │ │ +22#define _bkpublic_h_ │ │ │ │ │ +23 │ │ │ │ │ +24/* seperate this stuff out later */ │ │ │ │ │ +25#include │ │ │ │ │ +26 │ │ │ │ │ +27#ifdef __cplusplus │ │ │ │ │ +28extern "C" │ │ │ │ │ +29{ │ │ │ │ │ +30#if 0 │ │ │ │ │ +31} │ │ │ │ │ +32#endif │ │ │ │ │ +33#endif │ │ │ │ │ +34 │ │ │ │ │ +35/* bulk properties start with 1 */ │ │ │ │ │ +36#define BLK_IDENTITY 1 │ │ │ │ │ +37 │ │ │ │ │ +38/* FreeTDS extention, set MS bulk hints */ │ │ │ │ │ +39#define BLK_HINTS 1001 │ │ │ │ │ +40 │ │ │ │ │ +41CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC │ │ │ │ │ +** blk_pointer); │ │ │ │ │ +42CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * │ │ │ │ │ +datafmt, CS_VOID * buffer, CS_INT * datalen, │ │ │ │ │ +43 CS_SMALLINT * indicator); │ │ │ │ │ +44CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * │ │ │ │ │ +rowp, CS_INT colnum, CS_VOID * valuep, │ │ │ │ │ +45 CS_INT valuelen, CS_INT * outlenp); │ │ │ │ │ +46CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, │ │ │ │ │ +CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +47CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * │ │ │ │ │ +datafmt); │ │ │ │ │ +48CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow); │ │ │ │ │ +49CS_RETCODE blk_drop(CS_BLKDESC * blkdesc); │ │ │ │ │ +50CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * │ │ │ │ │ +rowp); │ │ │ │ │ +51CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW │ │ │ │ │ +* rowp, CS_INT bufsize, CS_INT * outlenp); │ │ │ │ │ +52CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * │ │ │ │ │ +tablename, CS_INT tnamelen); │ │ │ │ │ +53CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, │ │ │ │ │ +CS_VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ +54CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row); │ │ │ │ │ +55CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row); │ │ │ │ │ +56CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc); │ │ │ │ │ +57CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count); │ │ │ │ │ +58CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row); │ │ │ │ │ +59CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * │ │ │ │ │ +buffer, CS_INT buflen); │ │ │ │ │ +60CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp); │ │ │ │ │ +61CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT │ │ │ │ │ +buflen, CS_INT * outlen); │ │ │ │ │ +62 │ │ │ │ │ +63#ifdef __cplusplus │ │ │ │ │ +64#if 0 │ │ │ │ │ +65{ │ │ │ │ │ +66#endif │ │ │ │ │ +67} │ │ │ │ │ +68#endif │ │ │ │ │ +69 │ │ │ │ │ +70#endif │ │ │ │ │ +_cs_datafmt │ │ │ │ │ +Definition cstypes.h:119 │ │ │ │ │ +_cs_connection │ │ │ │ │ +Definition ctlib.h:188 │ │ │ │ │ +_cs_blkdesc │ │ │ │ │ +Definition ctlib.h:311 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00398_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/version.h Source File │ │ │ │ +FreeTDS API: include/freetds/thread.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,49 +74,459 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
version.h
│ │ │ │ +
thread.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_fWmaUBUxPCWj6BPyET5377_
│ │ │ │ -
21#define _tdsguard_fWmaUBUxPCWj6BPyET5377_
│ │ │ │ -
22
│ │ │ │ -
23/* $Id: c69b1270e9bbde50d3708cbfbf8921f8e849c928 $ */
│ │ │ │ +
2 *
│ │ │ │ +
3 * Copyright (C) 2005 Liam Widdowson
│ │ │ │ +
4 * Copyright (C) 2010-2012 Frediano Ziglio
│ │ │ │ +
5 *
│ │ │ │ +
6 * This library is free software; you can redistribute it and/or
│ │ │ │ +
7 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
8 * License as published by the Free Software Foundation; either
│ │ │ │ +
9 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
10 *
│ │ │ │ +
11 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
14 * Library General Public License for more details.
│ │ │ │ +
15 *
│ │ │ │ +
16 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
17 * License along with this library; if not, write to the
│ │ │ │ +
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
19 * Boston, MA 02111-1307, USA.
│ │ │ │ +
20 */
│ │ │ │ +
21
│ │ │ │ +
22#ifndef _tdsguard_cIfZP7JZiHtLLfanwl7ubP_
│ │ │ │ +
23#define _tdsguard_cIfZP7JZiHtLLfanwl7ubP_
│ │ │ │
24
│ │ │ │ -
25#define TDS_VERSION_NO "freetds v1.5.5"
│ │ │ │ +
25#undef TDS_HAVE_MUTEX
│ │ │ │
26
│ │ │ │ -
27#define TDS_VERSION_MAJOR 1
│ │ │ │ -
28#define TDS_VERSION_MINOR 5
│ │ │ │ -
29#define TDS_VERSION_SUBVERSION 5
│ │ │ │ -
30#define TDS_VERSION_BUILD_NUMBER 1756608049
│ │ │ │ -
31
│ │ │ │ -
32#endif
│ │ │ │ +
27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
│ │ │ │ +
28
│ │ │ │ +
29#include <tds_sysdep_public.h>
│ │ │ │ +
30#include <freetds/sysdep_private.h>
│ │ │ │ +
31#include <pthread.h>
│ │ │ │ +
32#include <errno.h>
│ │ │ │ +
33
│ │ │ │ +
34#include <freetds/pushvis.h>
│ │ │ │ +
35
│ │ │ │ +
36typedef pthread_mutex_t tds_raw_mutex;
│ │ │ │ +
37#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
│ │ │ │ +
38
│ │ │ │ +
39static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ +
40{
│ │ │ │ +
41 pthread_mutex_lock(mtx);
│ │ │ │ +
42}
│ │ │ │ +
43
│ │ │ │ +
44static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
│ │ │ │ +
45{
│ │ │ │ +
46 return pthread_mutex_trylock(mtx);
│ │ │ │ +
47}
│ │ │ │ +
48
│ │ │ │ +
49static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ +
50{
│ │ │ │ +
51 pthread_mutex_unlock(mtx);
│ │ │ │ +
52}
│ │ │ │ +
53
│ │ │ │ +
54static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ +
55{
│ │ │ │ +
56 return pthread_mutex_init(mtx, NULL);
│ │ │ │ +
57}
│ │ │ │ +
58
│ │ │ │ +
59static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ +
60{
│ │ │ │ +
61 pthread_mutex_destroy(mtx);
│ │ │ │ +
62}
│ │ │ │ +
63
│ │ │ │ +
64typedef pthread_cond_t tds_condition;
│ │ │ │ +
65
│ │ │ │ +
66int tds_raw_cond_init(tds_condition *cond);
│ │ │ │ +
67static inline int tds_raw_cond_destroy(tds_condition *cond)
│ │ │ │ +
68{
│ │ │ │ +
69 return pthread_cond_destroy(cond);
│ │ │ │ +
70}
│ │ │ │ +
71static inline int tds_raw_cond_signal(tds_condition *cond)
│ │ │ │ +
72{
│ │ │ │ +
73 return pthread_cond_signal(cond);
│ │ │ │ +
74}
│ │ │ │ +
75static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
│ │ │ │ +
76{
│ │ │ │ +
77 return pthread_cond_wait(cond, mtx);
│ │ │ │ +
78}
│ │ │ │ +
79int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
│ │ │ │ +
80
│ │ │ │ +
81#define TDS_HAVE_MUTEX 1
│ │ │ │ +
82
│ │ │ │ +
83typedef pthread_t tds_thread;
│ │ │ │ +
84typedef pthread_t tds_thread_id;
│ │ │ │ +
85typedef void *(*tds_thread_proc)(void *arg);
│ │ │ │ +
86#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ +
87 void *name(void *arg)
│ │ │ │ +
88#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n))
│ │ │ │ +
89
│ │ │ │ +
90static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
│ │ │ │ +
91{
│ │ │ │ +
92 return pthread_create(ret, NULL, proc, arg);
│ │ │ │ +
93}
│ │ │ │ +
94
│ │ │ │ +
95static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
│ │ │ │ +
96{
│ │ │ │ +
97 tds_thread th;
│ │ │ │ +
98 int ret = pthread_create(&th, NULL, proc, arg);
│ │ │ │ +
99 if (!ret)
│ │ │ │ +
100 pthread_detach(th);
│ │ │ │ +
101 return ret;
│ │ │ │ +
102}
│ │ │ │ +
103
│ │ │ │ +
104static inline int tds_thread_join(tds_thread th, void **ret)
│ │ │ │ +
105{
│ │ │ │ +
106 return pthread_join(th, ret);
│ │ │ │ +
107}
│ │ │ │ +
108
│ │ │ │ +
109static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ +
110{
│ │ │ │ +
111 return pthread_self();
│ │ │ │ +
112}
│ │ │ │ +
113
│ │ │ │ +
114static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ +
115{
│ │ │ │ +
116 return pthread_equal(th, pthread_self());
│ │ │ │ +
117}
│ │ │ │ +
118
│ │ │ │ +
119#include <freetds/popvis.h>
│ │ │ │ +
120
│ │ │ │ +
121#elif defined(_WIN32)
│ │ │ │ +
122
│ │ │ │ +
123#include <freetds/windows.h>
│ │ │ │ +
124#include <errno.h>
│ │ │ │ +
125
│ │ │ │ +
126/* old version of Windows do not define this constant */
│ │ │ │ +
127#ifndef ETIMEDOUT
│ │ │ │ +
128#define ETIMEDOUT 138
│ │ │ │ +
129#endif
│ │ │ │ +
130
│ │ │ │ +
131struct ptw32_mcs_node_t_;
│ │ │ │ +
132
│ │ │ │ +
133typedef struct {
│ │ │ │ +
134 struct ptw32_mcs_node_t_ *lock;
│ │ │ │ +
135 LONG done;
│ │ │ │ +
136 DWORD thread_id;
│ │ │ │ +
137 CRITICAL_SECTION crit;
│ │ │ │ + │ │ │ │ +
139
│ │ │ │ +
140#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }
│ │ │ │ +
141
│ │ │ │ +
142static inline int
│ │ │ │ +
143tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ +
144{
│ │ │ │ +
145 mtx->lock = NULL;
│ │ │ │ +
146 mtx->done = 0;
│ │ │ │ +
147 mtx->thread_id = 0;
│ │ │ │ +
148 return 0;
│ │ │ │ +
149}
│ │ │ │ +
150
│ │ │ │ +
151void tds_win_mutex_lock(tds_raw_mutex *mutex);
│ │ │ │ +
152
│ │ │ │ +
153static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ +
154{
│ │ │ │ +
155 if (mtx->done) {
│ │ │ │ +
156 EnterCriticalSection(&mtx->crit);
│ │ │ │ +
157 mtx->thread_id = GetCurrentThreadId();
│ │ │ │ +
158 } else {
│ │ │ │ +
159 tds_win_mutex_lock(mtx);
│ │ │ │ +
160 }
│ │ │ │ +
161}
│ │ │ │ +
162
│ │ │ │ +
163int tds_raw_mutex_trylock(tds_raw_mutex *mtx);
│ │ │ │ +
164
│ │ │ │ +
165static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ +
166{
│ │ │ │ +
167 mtx->thread_id = 0;
│ │ │ │ +
168 LeaveCriticalSection(&mtx->crit);
│ │ │ │ +
169}
│ │ │ │ +
170
│ │ │ │ +
171static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ +
172{
│ │ │ │ +
173 if (mtx->done) {
│ │ │ │ +
174 DeleteCriticalSection(&mtx->crit);
│ │ │ │ +
175 mtx->done = 0;
│ │ │ │ +
176 }
│ │ │ │ +
177}
│ │ │ │ +
178
│ │ │ │ +
179#define TDS_HAVE_MUTEX 1
│ │ │ │ +
180
│ │ │ │ +
181/* easy way, only single signal supported */
│ │ │ │ +
182typedef void *TDS_CONDITION_VARIABLE;
│ │ │ │ +
183typedef union {
│ │ │ │ +
184 HANDLE ev;
│ │ │ │ +
185 TDS_CONDITION_VARIABLE cv;
│ │ │ │ + │ │ │ │ +
187
│ │ │ │ +
188extern int (*tds_raw_cond_init)(tds_condition *cond);
│ │ │ │ +
189extern int (*tds_raw_cond_destroy)(tds_condition *cond);
│ │ │ │ +
190extern int (*tds_raw_cond_signal)(tds_condition *cond);
│ │ │ │ +
191extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
│ │ │ │ +
192static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
│ │ │ │ +
193{
│ │ │ │ +
194 return tds_raw_cond_timedwait(cond, mtx, -1);
│ │ │ │ +
195}
│ │ │ │ +
196
│ │ │ │ +
197typedef HANDLE tds_thread;
│ │ │ │ +
198typedef DWORD tds_thread_id;
│ │ │ │ +
199typedef DWORD (WINAPI *tds_thread_proc)(void *arg);
│ │ │ │ +
200#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ +
201 DWORD WINAPI name(void *arg)
│ │ │ │ +
202#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))
│ │ │ │ +
203
│ │ │ │ +
204static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
│ │ │ │ +
205{
│ │ │ │ +
206 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);
│ │ │ │ +
207 return *ret != NULL ? 0 : 11 /* EAGAIN */;
│ │ │ │ +
208}
│ │ │ │ +
209
│ │ │ │ +
210static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
│ │ │ │ +
211{
│ │ │ │ +
212 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);
│ │ │ │ +
213 if (h)
│ │ │ │ +
214 return 0;
│ │ │ │ +
215 CloseHandle(h);
│ │ │ │ +
216 return 11 /* EAGAIN */;
│ │ │ │ +
217}
│ │ │ │ +
218
│ │ │ │ +
219static inline int tds_thread_join(tds_thread th, void **ret)
│ │ │ │ +
220{
│ │ │ │ +
221 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {
│ │ │ │ +
222 if (ret) {
│ │ │ │ +
223 DWORD r;
│ │ │ │ +
224 if (!GetExitCodeThread(th, &r))
│ │ │ │ +
225 r = 0xffffffffu;
│ │ │ │ +
226 *ret = (void*) (((char*)0) + r);
│ │ │ │ +
227 }
│ │ │ │ +
228
│ │ │ │ +
229 CloseHandle(th);
│ │ │ │ +
230 return 0;
│ │ │ │ +
231 }
│ │ │ │ +
232 CloseHandle(th);
│ │ │ │ +
233 return 22 /* EINVAL */;
│ │ │ │ +
234}
│ │ │ │ +
235
│ │ │ │ +
236static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ +
237{
│ │ │ │ +
238 return GetCurrentThreadId();
│ │ │ │ +
239}
│ │ │ │ +
240
│ │ │ │ +
241static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ +
242{
│ │ │ │ +
243 return th == GetCurrentThreadId();
│ │ │ │ +
244}
│ │ │ │ +
245
│ │ │ │ +
246#else
│ │ │ │ +
247
│ │ │ │ +
248#include <tds_sysdep_public.h>
│ │ │ │ +
249
│ │ │ │ +
250/* define noops as "successful" */
│ │ │ │ +
│ │ │ │ +
251typedef struct {
│ │ │ │ +
252 char dummy[0]; /* compiler compatibility */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
254
│ │ │ │ +
255#define TDS_RAW_MUTEX_INITIALIZER {}
│ │ │ │ +
256
│ │ │ │ +
257static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ +
258{
│ │ │ │ +
259}
│ │ │ │ +
260
│ │ │ │ +
261static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
│ │ │ │ +
262{
│ │ │ │ +
263 return 0;
│ │ │ │ +
264}
│ │ │ │ +
265
│ │ │ │ +
266static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ +
267{
│ │ │ │ +
268}
│ │ │ │ +
269
│ │ │ │ +
270static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ +
271{
│ │ │ │ +
272 return 0;
│ │ │ │ +
273}
│ │ │ │ +
274
│ │ │ │ +
275static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ +
276{
│ │ │ │ +
277}
│ │ │ │ +
278
│ │ │ │ +
│ │ │ │ +
279typedef struct {
│ │ │ │ +
280 char dummy[0]; /* compiler compatibility */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
282
│ │ │ │ +
283static inline int tds_raw_cond_init(tds_condition *cond)
│ │ │ │ +
284{
│ │ │ │ +
285 return 0;
│ │ │ │ +
286}
│ │ │ │ +
287static inline int tds_raw_cond_destroy(tds_condition *cond)
│ │ │ │ +
288{
│ │ │ │ +
289 return 0;
│ │ │ │ +
290}
│ │ │ │ +
291#define tds_raw_cond_signal(cond) \
│ │ │ │ +
292 FreeTDS_Condition_not_compiled
│ │ │ │ +
293
│ │ │ │ +
294#define tds_raw_cond_wait(cond, mtx) \
│ │ │ │ +
295 FreeTDS_Condition_not_compiled
│ │ │ │ +
296
│ │ │ │ +
297#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \
│ │ │ │ +
298 FreeTDS_Condition_not_compiled
│ │ │ │ +
299
│ │ │ │ +
│ │ │ │ +
300typedef struct {
│ │ │ │ +
301 char dummy[0]; /* compiler compatibility */
│ │ │ │ +
302} tds_thread;
│ │ │ │ +
│ │ │ │ +
303typedef int tds_thread_id;
│ │ │ │ +
304
│ │ │ │ +
305typedef void *(*tds_thread_proc)(void *arg);
│ │ │ │ +
306#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ +
307 void *name(void *arg)
│ │ │ │ +
308#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n))
│ │ │ │ +
309
│ │ │ │ +
310#define tds_thread_create(ret, proc, arg) \
│ │ │ │ +
311 FreeTDS_Thread_not_compiled
│ │ │ │ +
312
│ │ │ │ +
313#define tds_thread_create_detached(proc, arg) \
│ │ │ │ +
314 FreeTDS_Thread_not_compiled
│ │ │ │ +
315
│ │ │ │ +
316#define tds_thread_join(th, ret) \
│ │ │ │ +
317 FreeTDS_Thread_not_compiled
│ │ │ │ +
318
│ │ │ │ +
319static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ +
320{
│ │ │ │ +
321 return 0;
│ │ │ │ +
322}
│ │ │ │ +
323
│ │ │ │ +
324static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ +
325{
│ │ │ │ +
326 return 1;
│ │ │ │ +
327}
│ │ │ │ +
328
│ │ │ │ +
329#endif
│ │ │ │ +
330
│ │ │ │ +
331# define tds_cond_init tds_raw_cond_init
│ │ │ │ +
332# define tds_cond_destroy tds_raw_cond_destroy
│ │ │ │ +
333# define tds_cond_signal tds_raw_cond_signal
│ │ │ │ +
334# if !ENABLE_EXTRA_CHECKS
│ │ │ │ +
335# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER
│ │ │ │ +
336# define tds_mutex tds_raw_mutex
│ │ │ │ +
337# define tds_mutex_lock tds_raw_mutex_lock
│ │ │ │ +
338# define tds_mutex_trylock tds_raw_mutex_trylock
│ │ │ │ +
339# define tds_mutex_unlock tds_raw_mutex_unlock
│ │ │ │ +
340# define tds_mutex_check_owned(mtx) do {} while(0)
│ │ │ │ +
341# define tds_mutex_init tds_raw_mutex_init
│ │ │ │ +
342# define tds_mutex_free tds_raw_mutex_free
│ │ │ │ +
343# define tds_cond_wait tds_raw_cond_wait
│ │ │ │ +
344# define tds_cond_timedwait tds_raw_cond_timedwait
│ │ │ │ +
345# else
│ │ │ │ +
346# include <assert.h>
│ │ │ │ +
347
│ │ │ │ +
348typedef struct tds_mutex
│ │ │ │ +
349{
│ │ │ │ +
350 tds_raw_mutex mtx;
│ │ │ │ +
351 volatile int locked;
│ │ │ │ +
352 volatile tds_thread_id locked_by;
│ │ │ │ +
353} tds_mutex;
│ │ │ │ +
354
│ │ │ │ +
355# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }
│ │ │ │ +
356
│ │ │ │ +
357static inline void tds_mutex_lock(tds_mutex *mtx)
│ │ │ │ +
358{
│ │ │ │ +
359 assert(mtx);
│ │ │ │ +
360 tds_raw_mutex_lock(&mtx->mtx);
│ │ │ │ +
361 assert(!mtx->locked);
│ │ │ │ +
362 mtx->locked = 1;
│ │ │ │ +
363 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ +
364}
│ │ │ │ +
365
│ │ │ │ +
366static inline int tds_mutex_trylock(tds_mutex *mtx)
│ │ │ │ +
367{
│ │ │ │ +
368 int ret;
│ │ │ │ +
369 assert(mtx);
│ │ │ │ +
370 ret = tds_raw_mutex_trylock(&mtx->mtx);
│ │ │ │ +
371 if (!ret) {
│ │ │ │ +
372 assert(!mtx->locked);
│ │ │ │ +
373 mtx->locked = 1;
│ │ │ │ +
374 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ +
375 }
│ │ │ │ +
376 return ret;
│ │ │ │ +
377}
│ │ │ │ +
378
│ │ │ │ +
379static inline void tds_mutex_unlock(tds_mutex *mtx)
│ │ │ │ +
380{
│ │ │ │ +
381 assert(mtx && mtx->locked);
│ │ │ │ +
382 mtx->locked = 0;
│ │ │ │ +
383 tds_raw_mutex_unlock(&mtx->mtx);
│ │ │ │ +
384}
│ │ │ │ +
385
│ │ │ │ +
386static inline void tds_mutex_check_owned(tds_mutex *mtx)
│ │ │ │ +
387{
│ │ │ │ +
388 int ret;
│ │ │ │ +
389 assert(mtx);
│ │ │ │ +
390 ret = tds_raw_mutex_trylock(&mtx->mtx);
│ │ │ │ +
391 assert(ret);
│ │ │ │ +
392 assert(mtx->locked);
│ │ │ │ +
393 assert(tds_thread_is_current(mtx->locked_by));
│ │ │ │ +
394}
│ │ │ │ +
395
│ │ │ │ +
396static inline int tds_mutex_init(tds_mutex *mtx)
│ │ │ │ +
397{
│ │ │ │ +
398 mtx->locked = 0;
│ │ │ │ +
399 return tds_raw_mutex_init(&mtx->mtx);
│ │ │ │ +
400}
│ │ │ │ +
401
│ │ │ │ +
402static inline void tds_mutex_free(tds_mutex *mtx)
│ │ │ │ +
403{
│ │ │ │ +
404 assert(mtx && !mtx->locked);
│ │ │ │ +
405 tds_raw_mutex_free(&mtx->mtx);
│ │ │ │ +
406}
│ │ │ │ +
407
│ │ │ │ +
408static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)
│ │ │ │ +
409{
│ │ │ │ +
410 int ret;
│ │ │ │ +
411 assert(mtx && mtx->locked);
│ │ │ │ +
412 mtx->locked = 0;
│ │ │ │ +
413 ret = tds_raw_cond_wait(cond, &mtx->mtx);
│ │ │ │ +
414 mtx->locked = 1;
│ │ │ │ +
415 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ +
416 return ret;
│ │ │ │ +
417}
│ │ │ │ +
418
│ │ │ │ +
419static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, int timeout_sec)
│ │ │ │ +
420{
│ │ │ │ +
421 int ret;
│ │ │ │ +
422 assert(mtx && mtx->locked);
│ │ │ │ +
423 mtx->locked = 0;
│ │ │ │ +
424 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);
│ │ │ │ +
425 mtx->locked = 1;
│ │ │ │ +
426 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ +
427 return ret;
│ │ │ │ +
428}
│ │ │ │ +
429
│ │ │ │ +
430# endif
│ │ │ │ +
431
│ │ │ │ +
432#endif
│ │ │ │ +
Definition ptw32_MCS_lock.c:98
│ │ │ │ +
Definition thread.h:251
│ │ │ │ +
Definition thread.h:279
│ │ │ │ +
Definition thread.h:300
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,41 +1,455 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -version.h │ │ │ │ │ +thread.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_fWmaUBUxPCWj6BPyET5377_ │ │ │ │ │ -21#define _tdsguard_fWmaUBUxPCWj6BPyET5377_ │ │ │ │ │ -22 │ │ │ │ │ -23/* $Id: c69b1270e9bbde50d3708cbfbf8921f8e849c928 $ */ │ │ │ │ │ +2 * │ │ │ │ │ +3 * Copyright (C) 2005 Liam Widdowson │ │ │ │ │ +4 * Copyright (C) 2010-2012 Frediano Ziglio │ │ │ │ │ +5 * │ │ │ │ │ +6 * This library is free software; you can redistribute it and/or │ │ │ │ │ +7 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +8 * License as published by the Free Software Foundation; either │ │ │ │ │ +9 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +10 * │ │ │ │ │ +11 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +12 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +14 * Library General Public License for more details. │ │ │ │ │ +15 * │ │ │ │ │ +16 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +17 * License along with this library; if not, write to the │ │ │ │ │ +18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +19 * Boston, MA 02111-1307, USA. │ │ │ │ │ +20 */ │ │ │ │ │ +21 │ │ │ │ │ +22#ifndef _tdsguard_cIfZP7JZiHtLLfanwl7ubP_ │ │ │ │ │ +23#define _tdsguard_cIfZP7JZiHtLLfanwl7ubP_ │ │ │ │ │ 24 │ │ │ │ │ -25#define TDS_VERSION_NO "freetds v1.5.5" │ │ │ │ │ +25#undef TDS_HAVE_MUTEX │ │ │ │ │ 26 │ │ │ │ │ -27#define TDS_VERSION_MAJOR 1 │ │ │ │ │ -28#define TDS_VERSION_MINOR 5 │ │ │ │ │ -29#define TDS_VERSION_SUBVERSION 5 │ │ │ │ │ -30#define TDS_VERSION_BUILD_NUMBER 1756608049 │ │ │ │ │ -31 │ │ │ │ │ -32#endif │ │ │ │ │ +27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX) │ │ │ │ │ +28 │ │ │ │ │ +29#include │ │ │ │ │ +30#include │ │ │ │ │ +31#include │ │ │ │ │ +32#include │ │ │ │ │ +33 │ │ │ │ │ +34#include │ │ │ │ │ +35 │ │ │ │ │ +36typedef pthread_mutex_t tds_raw_mutex; │ │ │ │ │ +37#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER │ │ │ │ │ +38 │ │ │ │ │ +39static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ +40{ │ │ │ │ │ +41 pthread_mutex_lock(mtx); │ │ │ │ │ +42} │ │ │ │ │ +43 │ │ │ │ │ +44static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx) │ │ │ │ │ +45{ │ │ │ │ │ +46 return pthread_mutex_trylock(mtx); │ │ │ │ │ +47} │ │ │ │ │ +48 │ │ │ │ │ +49static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ +50{ │ │ │ │ │ +51 pthread_mutex_unlock(mtx); │ │ │ │ │ +52} │ │ │ │ │ +53 │ │ │ │ │ +54static inline int tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ +55{ │ │ │ │ │ +56 return pthread_mutex_init(mtx, NULL); │ │ │ │ │ +57} │ │ │ │ │ +58 │ │ │ │ │ +59static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ +60{ │ │ │ │ │ +61 pthread_mutex_destroy(mtx); │ │ │ │ │ +62} │ │ │ │ │ +63 │ │ │ │ │ +64typedef pthread_cond_t tds_condition; │ │ │ │ │ +65 │ │ │ │ │ +66int tds_raw_cond_init(tds_condition *cond); │ │ │ │ │ +67static inline int tds_raw_cond_destroy(tds_condition *cond) │ │ │ │ │ +68{ │ │ │ │ │ +69 return pthread_cond_destroy(cond); │ │ │ │ │ +70} │ │ │ │ │ +71static inline int tds_raw_cond_signal(tds_condition *cond) │ │ │ │ │ +72{ │ │ │ │ │ +73 return pthread_cond_signal(cond); │ │ │ │ │ +74} │ │ │ │ │ +75static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx) │ │ │ │ │ +76{ │ │ │ │ │ +77 return pthread_cond_wait(cond, mtx); │ │ │ │ │ +78} │ │ │ │ │ +79int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int │ │ │ │ │ +timeout_sec); │ │ │ │ │ +80 │ │ │ │ │ +81#define TDS_HAVE_MUTEX 1 │ │ │ │ │ +82 │ │ │ │ │ +83typedef pthread_t tds_thread; │ │ │ │ │ +84typedef pthread_t tds_thread_id; │ │ │ │ │ +85typedef void *(*tds_thread_proc)(void *arg); │ │ │ │ │ +86#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ +87 void *name(void *arg) │ │ │ │ │ +88#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n)) │ │ │ │ │ +89 │ │ │ │ │ +90static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, │ │ │ │ │ +void *arg) │ │ │ │ │ +91{ │ │ │ │ │ +92 return pthread_create(ret, NULL, proc, arg); │ │ │ │ │ +93} │ │ │ │ │ +94 │ │ │ │ │ +95static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg) │ │ │ │ │ +96{ │ │ │ │ │ +97 tds_thread th; │ │ │ │ │ +98 int ret = pthread_create(&th, NULL, proc, arg); │ │ │ │ │ +99 if (!ret) │ │ │ │ │ +100 pthread_detach(th); │ │ │ │ │ +101 return ret; │ │ │ │ │ +102} │ │ │ │ │ +103 │ │ │ │ │ +104static inline int tds_thread_join(tds_thread th, void **ret) │ │ │ │ │ +105{ │ │ │ │ │ +106 return pthread_join(th, ret); │ │ │ │ │ +107} │ │ │ │ │ +108 │ │ │ │ │ +109static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ +110{ │ │ │ │ │ +111 return pthread_self(); │ │ │ │ │ +112} │ │ │ │ │ +113 │ │ │ │ │ +114static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ +115{ │ │ │ │ │ +116 return pthread_equal(th, pthread_self()); │ │ │ │ │ +117} │ │ │ │ │ +118 │ │ │ │ │ +119#include │ │ │ │ │ +120 │ │ │ │ │ +121#elif defined(_WIN32) │ │ │ │ │ +122 │ │ │ │ │ +123#include │ │ │ │ │ +124#include │ │ │ │ │ +125 │ │ │ │ │ +126/* old version of Windows do not define this constant */ │ │ │ │ │ +127#ifndef ETIMEDOUT │ │ │ │ │ +128#define ETIMEDOUT 138 │ │ │ │ │ +129#endif │ │ │ │ │ +130 │ │ │ │ │ +131struct ptw32_mcs_node_t_; │ │ │ │ │ +132 │ │ │ │ │ +133typedef struct { │ │ │ │ │ +134 struct ptw32_mcs_node_t_ *lock; │ │ │ │ │ +135 LONG done; │ │ │ │ │ +136 DWORD thread_id; │ │ │ │ │ +137 CRITICAL_SECTION crit; │ │ │ │ │ +138} tds_raw_mutex; │ │ │ │ │ +139 │ │ │ │ │ +140#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 } │ │ │ │ │ +141 │ │ │ │ │ +142static inline int │ │ │ │ │ +143tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ +144{ │ │ │ │ │ +145 mtx->lock = NULL; │ │ │ │ │ +146 mtx->done = 0; │ │ │ │ │ +147 mtx->thread_id = 0; │ │ │ │ │ +148 return 0; │ │ │ │ │ +149} │ │ │ │ │ +150 │ │ │ │ │ +151void tds_win_mutex_lock(tds_raw_mutex *mutex); │ │ │ │ │ +152 │ │ │ │ │ +153static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ +154{ │ │ │ │ │ +155 if (mtx->done) { │ │ │ │ │ +156 EnterCriticalSection(&mtx->crit); │ │ │ │ │ +157 mtx->thread_id = GetCurrentThreadId(); │ │ │ │ │ +158 } else { │ │ │ │ │ +159 tds_win_mutex_lock(mtx); │ │ │ │ │ +160 } │ │ │ │ │ +161} │ │ │ │ │ +162 │ │ │ │ │ +163int tds_raw_mutex_trylock(tds_raw_mutex *mtx); │ │ │ │ │ +164 │ │ │ │ │ +165static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ +166{ │ │ │ │ │ +167 mtx->thread_id = 0; │ │ │ │ │ +168 LeaveCriticalSection(&mtx->crit); │ │ │ │ │ +169} │ │ │ │ │ +170 │ │ │ │ │ +171static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ +172{ │ │ │ │ │ +173 if (mtx->done) { │ │ │ │ │ +174 DeleteCriticalSection(&mtx->crit); │ │ │ │ │ +175 mtx->done = 0; │ │ │ │ │ +176 } │ │ │ │ │ +177} │ │ │ │ │ +178 │ │ │ │ │ +179#define TDS_HAVE_MUTEX 1 │ │ │ │ │ +180 │ │ │ │ │ +181/* easy way, only single signal supported */ │ │ │ │ │ +182typedef void *TDS_CONDITION_VARIABLE; │ │ │ │ │ +183typedef union { │ │ │ │ │ +184 HANDLE ev; │ │ │ │ │ +185 TDS_CONDITION_VARIABLE cv; │ │ │ │ │ +186} tds_condition; │ │ │ │ │ +187 │ │ │ │ │ +188extern int (*tds_raw_cond_init)(tds_condition *cond); │ │ │ │ │ +189extern int (*tds_raw_cond_destroy)(tds_condition *cond); │ │ │ │ │ +190extern int (*tds_raw_cond_signal)(tds_condition *cond); │ │ │ │ │ +191extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex │ │ │ │ │ +*mtx, int timeout_sec); │ │ │ │ │ +192static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx) │ │ │ │ │ +193{ │ │ │ │ │ +194 return tds_raw_cond_timedwait(cond, mtx, -1); │ │ │ │ │ +195} │ │ │ │ │ +196 │ │ │ │ │ +197typedef HANDLE tds_thread; │ │ │ │ │ +198typedef DWORD tds_thread_id; │ │ │ │ │ +199typedef DWORD (WINAPI *tds_thread_proc)(void *arg); │ │ │ │ │ +200#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ +201 DWORD WINAPI name(void *arg) │ │ │ │ │ +202#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n)) │ │ │ │ │ +203 │ │ │ │ │ +204static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, │ │ │ │ │ +void *arg) │ │ │ │ │ +205{ │ │ │ │ │ +206 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL); │ │ │ │ │ +207 return *ret != NULL ? 0 : 11 /* EAGAIN */; │ │ │ │ │ +208} │ │ │ │ │ +209 │ │ │ │ │ +210static inline int tds_thread_create_detached(tds_thread_proc proc, void │ │ │ │ │ +*arg) │ │ │ │ │ +211{ │ │ │ │ │ +212 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL); │ │ │ │ │ +213 if (h) │ │ │ │ │ +214 return 0; │ │ │ │ │ +215 CloseHandle(h); │ │ │ │ │ +216 return 11 /* EAGAIN */; │ │ │ │ │ +217} │ │ │ │ │ +218 │ │ │ │ │ +219static inline int tds_thread_join(tds_thread th, void **ret) │ │ │ │ │ +220{ │ │ │ │ │ +221 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) { │ │ │ │ │ +222 if (ret) { │ │ │ │ │ +223 DWORD r; │ │ │ │ │ +224 if (!GetExitCodeThread(th, &r)) │ │ │ │ │ +225 r = 0xffffffffu; │ │ │ │ │ +226 *ret = (void*) (((char*)0) + r); │ │ │ │ │ +227 } │ │ │ │ │ +228 │ │ │ │ │ +229 CloseHandle(th); │ │ │ │ │ +230 return 0; │ │ │ │ │ +231 } │ │ │ │ │ +232 CloseHandle(th); │ │ │ │ │ +233 return 22 /* EINVAL */; │ │ │ │ │ +234} │ │ │ │ │ +235 │ │ │ │ │ +236static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ +237{ │ │ │ │ │ +238 return GetCurrentThreadId(); │ │ │ │ │ +239} │ │ │ │ │ +240 │ │ │ │ │ +241static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ +242{ │ │ │ │ │ +243 return th == GetCurrentThreadId(); │ │ │ │ │ +244} │ │ │ │ │ +245 │ │ │ │ │ +246#else │ │ │ │ │ +247 │ │ │ │ │ +248#include │ │ │ │ │ +249 │ │ │ │ │ +250/* define noops as "successful" */ │ │ │ │ │ +251typedef struct { │ │ │ │ │ +252 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ +253} tds_raw_mutex; │ │ │ │ │ +254 │ │ │ │ │ +255#define TDS_RAW_MUTEX_INITIALIZER {} │ │ │ │ │ +256 │ │ │ │ │ +257static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ +258{ │ │ │ │ │ +259} │ │ │ │ │ +260 │ │ │ │ │ +261static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx) │ │ │ │ │ +262{ │ │ │ │ │ +263 return 0; │ │ │ │ │ +264} │ │ │ │ │ +265 │ │ │ │ │ +266static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ +267{ │ │ │ │ │ +268} │ │ │ │ │ +269 │ │ │ │ │ +270static inline int tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ +271{ │ │ │ │ │ +272 return 0; │ │ │ │ │ +273} │ │ │ │ │ +274 │ │ │ │ │ +275static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ +276{ │ │ │ │ │ +277} │ │ │ │ │ +278 │ │ │ │ │ +279typedef struct { │ │ │ │ │ +280 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ +281} tds_condition; │ │ │ │ │ +282 │ │ │ │ │ +283static inline int tds_raw_cond_init(tds_condition *cond) │ │ │ │ │ +284{ │ │ │ │ │ +285 return 0; │ │ │ │ │ +286} │ │ │ │ │ +287static inline int tds_raw_cond_destroy(tds_condition *cond) │ │ │ │ │ +288{ │ │ │ │ │ +289 return 0; │ │ │ │ │ +290} │ │ │ │ │ +291#define tds_raw_cond_signal(cond) \ │ │ │ │ │ +292 FreeTDS_Condition_not_compiled │ │ │ │ │ +293 │ │ │ │ │ +294#define tds_raw_cond_wait(cond, mtx) \ │ │ │ │ │ +295 FreeTDS_Condition_not_compiled │ │ │ │ │ +296 │ │ │ │ │ +297#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \ │ │ │ │ │ +298 FreeTDS_Condition_not_compiled │ │ │ │ │ +299 │ │ │ │ │ +300typedef struct { │ │ │ │ │ +301 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ +302} tds_thread; │ │ │ │ │ +303typedef int tds_thread_id; │ │ │ │ │ +304 │ │ │ │ │ +305typedef void *(*tds_thread_proc)(void *arg); │ │ │ │ │ +306#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ +307 void *name(void *arg) │ │ │ │ │ +308#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n)) │ │ │ │ │ +309 │ │ │ │ │ +310#define tds_thread_create(ret, proc, arg) \ │ │ │ │ │ +311 FreeTDS_Thread_not_compiled │ │ │ │ │ +312 │ │ │ │ │ +313#define tds_thread_create_detached(proc, arg) \ │ │ │ │ │ +314 FreeTDS_Thread_not_compiled │ │ │ │ │ +315 │ │ │ │ │ +316#define tds_thread_join(th, ret) \ │ │ │ │ │ +317 FreeTDS_Thread_not_compiled │ │ │ │ │ +318 │ │ │ │ │ +319static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ +320{ │ │ │ │ │ +321 return 0; │ │ │ │ │ +322} │ │ │ │ │ +323 │ │ │ │ │ +324static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ +325{ │ │ │ │ │ +326 return 1; │ │ │ │ │ +327} │ │ │ │ │ +328 │ │ │ │ │ +329#endif │ │ │ │ │ +330 │ │ │ │ │ +331# define tds_cond_init tds_raw_cond_init │ │ │ │ │ +332# define tds_cond_destroy tds_raw_cond_destroy │ │ │ │ │ +333# define tds_cond_signal tds_raw_cond_signal │ │ │ │ │ +334# if !ENABLE_EXTRA_CHECKS │ │ │ │ │ +335# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER │ │ │ │ │ +336# define tds_mutex tds_raw_mutex │ │ │ │ │ +337# define tds_mutex_lock tds_raw_mutex_lock │ │ │ │ │ +338# define tds_mutex_trylock tds_raw_mutex_trylock │ │ │ │ │ +339# define tds_mutex_unlock tds_raw_mutex_unlock │ │ │ │ │ +340# define tds_mutex_check_owned(mtx) do {} while(0) │ │ │ │ │ +341# define tds_mutex_init tds_raw_mutex_init │ │ │ │ │ +342# define tds_mutex_free tds_raw_mutex_free │ │ │ │ │ +343# define tds_cond_wait tds_raw_cond_wait │ │ │ │ │ +344# define tds_cond_timedwait tds_raw_cond_timedwait │ │ │ │ │ +345# else │ │ │ │ │ +346# include │ │ │ │ │ +347 │ │ │ │ │ +348typedef struct tds_mutex │ │ │ │ │ +349{ │ │ │ │ │ +350 tds_raw_mutex mtx; │ │ │ │ │ +351 volatile int locked; │ │ │ │ │ +352 volatile tds_thread_id locked_by; │ │ │ │ │ +353} tds_mutex; │ │ │ │ │ +354 │ │ │ │ │ +355# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 } │ │ │ │ │ +356 │ │ │ │ │ +357static inline void tds_mutex_lock(tds_mutex *mtx) │ │ │ │ │ +358{ │ │ │ │ │ +359 assert(mtx); │ │ │ │ │ +360 tds_raw_mutex_lock(&mtx->mtx); │ │ │ │ │ +361 assert(!mtx->locked); │ │ │ │ │ +362 mtx->locked = 1; │ │ │ │ │ +363 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ +364} │ │ │ │ │ +365 │ │ │ │ │ +366static inline int tds_mutex_trylock(tds_mutex *mtx) │ │ │ │ │ +367{ │ │ │ │ │ +368 int ret; │ │ │ │ │ +369 assert(mtx); │ │ │ │ │ +370 ret = tds_raw_mutex_trylock(&mtx->mtx); │ │ │ │ │ +371 if (!ret) { │ │ │ │ │ +372 assert(!mtx->locked); │ │ │ │ │ +373 mtx->locked = 1; │ │ │ │ │ +374 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ +375 } │ │ │ │ │ +376 return ret; │ │ │ │ │ +377} │ │ │ │ │ +378 │ │ │ │ │ +379static inline void tds_mutex_unlock(tds_mutex *mtx) │ │ │ │ │ +380{ │ │ │ │ │ +381 assert(mtx && mtx->locked); │ │ │ │ │ +382 mtx->locked = 0; │ │ │ │ │ +383 tds_raw_mutex_unlock(&mtx->mtx); │ │ │ │ │ +384} │ │ │ │ │ +385 │ │ │ │ │ +386static inline void tds_mutex_check_owned(tds_mutex *mtx) │ │ │ │ │ +387{ │ │ │ │ │ +388 int ret; │ │ │ │ │ +389 assert(mtx); │ │ │ │ │ +390 ret = tds_raw_mutex_trylock(&mtx->mtx); │ │ │ │ │ +391 assert(ret); │ │ │ │ │ +392 assert(mtx->locked); │ │ │ │ │ +393 assert(tds_thread_is_current(mtx->locked_by)); │ │ │ │ │ +394} │ │ │ │ │ +395 │ │ │ │ │ +396static inline int tds_mutex_init(tds_mutex *mtx) │ │ │ │ │ +397{ │ │ │ │ │ +398 mtx->locked = 0; │ │ │ │ │ +399 return tds_raw_mutex_init(&mtx->mtx); │ │ │ │ │ +400} │ │ │ │ │ +401 │ │ │ │ │ +402static inline void tds_mutex_free(tds_mutex *mtx) │ │ │ │ │ +403{ │ │ │ │ │ +404 assert(mtx && !mtx->locked); │ │ │ │ │ +405 tds_raw_mutex_free(&mtx->mtx); │ │ │ │ │ +406} │ │ │ │ │ +407 │ │ │ │ │ +408static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx) │ │ │ │ │ +409{ │ │ │ │ │ +410 int ret; │ │ │ │ │ +411 assert(mtx && mtx->locked); │ │ │ │ │ +412 mtx->locked = 0; │ │ │ │ │ +413 ret = tds_raw_cond_wait(cond, &mtx->mtx); │ │ │ │ │ +414 mtx->locked = 1; │ │ │ │ │ +415 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ +416 return ret; │ │ │ │ │ +417} │ │ │ │ │ +418 │ │ │ │ │ +419static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, │ │ │ │ │ +int timeout_sec) │ │ │ │ │ +420{ │ │ │ │ │ +421 int ret; │ │ │ │ │ +422 assert(mtx && mtx->locked); │ │ │ │ │ +423 mtx->locked = 0; │ │ │ │ │ +424 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec); │ │ │ │ │ +425 mtx->locked = 1; │ │ │ │ │ +426 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ +427 return ret; │ │ │ │ │ +428} │ │ │ │ │ +429 │ │ │ │ │ +430# endif │ │ │ │ │ +431 │ │ │ │ │ +432#endif │ │ │ │ │ +ptw32_mcs_node_t_ │ │ │ │ │ +Definition ptw32_MCS_lock.c:98 │ │ │ │ │ +tds_raw_mutex │ │ │ │ │ +Definition thread.h:251 │ │ │ │ │ +tds_condition │ │ │ │ │ +Definition thread.h:279 │ │ │ │ │ +tds_thread │ │ │ │ │ +Definition thread.h:300 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00401_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/convert.h Source File │ │ │ │ +FreeTDS API: include/freetds/macros.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,142 +74,102 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
convert.h
│ │ │ │ +
macros.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_cXIvgxMqCzaBT7f54eQeMp_
│ │ │ │ -
21#define _tdsguard_cXIvgxMqCzaBT7f54eQeMp_
│ │ │ │ -
22
│ │ │ │ -
23#include <freetds/pushvis.h>
│ │ │ │ -
24
│ │ │ │ -
25#ifdef __cplusplus
│ │ │ │ -
26extern "C"
│ │ │ │ -
27{
│ │ │ │ -
28#if 0
│ │ │ │ -
29}
│ │ │ │ -
30#endif
│ │ │ │ -
31#endif
│ │ │ │ -
32
│ │ │ │ -
│ │ │ │ -
33typedef union conv_result
│ │ │ │ -
34{
│ │ │ │ -
35 /* fixed */
│ │ │ │ -
36 TDS_TINYINT ti;
│ │ │ │ -
37 TDS_SMALLINT si;
│ │ │ │ -
38 TDS_USMALLINT usi;
│ │ │ │ -
39 TDS_INT i;
│ │ │ │ -
40 TDS_UINT ui;
│ │ │ │ -
41 TDS_INT8 bi;
│ │ │ │ -
42 TDS_UINT8 ubi;
│ │ │ │ -
43 TDS_FLOAT f;
│ │ │ │ -
44 TDS_REAL r;
│ │ │ │ -
45 TDS_MONEY m;
│ │ │ │ -
46 TDS_MONEY4 m4;
│ │ │ │ -
47 TDS_DATETIME dt;
│ │ │ │ -
48 TDS_DATETIME4 dt4;
│ │ │ │ - │ │ │ │ -
50 TDS_TIME time;
│ │ │ │ -
51 TDS_DATE date;
│ │ │ │ -
52 TDS_BIGTIME bigtime;
│ │ │ │ -
53 TDS_BIGDATETIME bigdatetime;
│ │ │ │ - │ │ │ │ -
55 TDS_UNIQUE u;
│ │ │ │ -
56
│ │ │ │ -
57 /* variable */
│ │ │ │ -
58 TDS_CHAR *c;
│ │ │ │ -
59 TDS_CHAR *ib;
│ │ │ │ -
60
│ │ │ │ -
61 /* sized buffer types */
│ │ │ │ -
│ │ │ │ -
62 struct cc_t {
│ │ │ │ -
63 TDS_CHAR *c;
│ │ │ │ -
64 TDS_UINT len;
│ │ │ │ -
65 } cc;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
66 struct cb_t {
│ │ │ │ -
67 TDS_CHAR *ib;
│ │ │ │ -
68 TDS_UINT len;
│ │ │ │ -
69 } cb;
│ │ │ │ -
│ │ │ │ -
70}
│ │ │ │ -
│ │ │ │ - │ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2010-2017 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21#ifndef _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_
│ │ │ │ +
22#define _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_
│ │ │ │ +
23
│ │ │ │ +
24#ifndef _freetds_config_h_
│ │ │ │ +
25#error should include config.h before
│ │ │ │ +
26#endif
│ │ │ │ +
27
│ │ │ │ +
28#if HAVE_STDDEF_H
│ │ │ │ +
29#include <stddef.h>
│ │ │ │ +
30#endif /* HAVE_STDDEF_H */
│ │ │ │ +
31
│ │ │ │ +
32#include "tds_sysdep_public.h"
│ │ │ │ +
33#include <freetds/sysdep_private.h>
│ │ │ │ +
34
│ │ │ │ +
35#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)
│ │ │ │ +
36#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))
│ │ │ │ +
37
│ │ │ │ +
38#ifdef offsetof
│ │ │ │ +
39#define TDS_OFFSET(type, field) offsetof(type, field)
│ │ │ │ +
40#else
│ │ │ │ +
41#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))
│ │ │ │ +
42#endif
│ │ │ │ +
43
│ │ │ │ +
44#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
45# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
│ │ │ │ +
46# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ +
47 _Static_assert(check,#name)
│ │ │ │ +
48# else
│ │ │ │ +
49# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ +
50 extern int name[(check)?1:-1] TDS_UNUSED
│ │ │ │ +
51# endif
│ │ │ │ +
52# define TDS_EXTRA_CHECK(stmt) stmt
│ │ │ │ +
53#else
│ │ │ │ +
54# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ +
55 extern int disabled_check_##name TDS_UNUSED
│ │ │ │ +
56# define TDS_EXTRA_CHECK(stmt)
│ │ │ │ +
57#endif
│ │ │ │ +
58
│ │ │ │ +
59#if defined(__GNUC__) && __GNUC__ >= 3
│ │ │ │ +
60# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)
│ │ │ │ +
61# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)
│ │ │ │ +
62#else
│ │ │ │ +
63# define TDS_LIKELY(x) (x)
│ │ │ │ +
64# define TDS_UNLIKELY(x) (x)
│ │ │ │ +
65#endif
│ │ │ │ +
66
│ │ │ │ +
67#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4
│ │ │ │ +
68#define TDS_WUR __attribute__ ((__warn_unused_result__))
│ │ │ │ +
69#else
│ │ │ │ +
70#define TDS_WUR
│ │ │ │ +
71#endif
│ │ │ │
72
│ │ │ │ -
73/*
│ │ │ │ -
74 * Failure return codes for tds_convert()
│ │ │ │ -
75 */
│ │ │ │ -
76#define TDS_CONVERT_FAIL -1 /* unspecified failure */
│ │ │ │ -
77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */
│ │ │ │ -
78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */
│ │ │ │ -
79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */
│ │ │ │ -
80#define TDS_CONVERT_OVERFLOW -5 /* result too large */
│ │ │ │ +
73#if defined(__GNUC__) && __GNUC__ >= 2
│ │ │ │ +
74#define TDS_UNUSED __attribute__ ((unused))
│ │ │ │ +
75#else
│ │ │ │ +
76#define TDS_UNUSED
│ │ │ │ +
77#endif
│ │ │ │ +
78
│ │ │ │ +
79#define TDS_INT2PTR(i) ((void*)(((char*)0)+((TDS_INTPTR)(i))))
│ │ │ │ +
80#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))
│ │ │ │
81
│ │ │ │ -
82/* sized types */
│ │ │ │ -
83#define TDS_CONVERT_CHAR 256
│ │ │ │ -
84#define TDS_CONVERT_BINARY 257
│ │ │ │ -
85
│ │ │ │ -
86unsigned char tds_willconvert(int srctype, int desttype);
│ │ │ │ -
87
│ │ │ │ -
88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);
│ │ │ │ -
89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, TDS_UINT srclen);
│ │ │ │ -
90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr);
│ │ │ │ -
91
│ │ │ │ -
92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC * timeptr, int prec);
│ │ │ │ -
93
│ │ │ │ -
94#ifdef __cplusplus
│ │ │ │ -
95#if 0
│ │ │ │ -
96{
│ │ │ │ -
97#endif
│ │ │ │ -
98}
│ │ │ │ -
99#endif
│ │ │ │ -
100
│ │ │ │ -
101#include <freetds/popvis.h>
│ │ │ │ -
102
│ │ │ │ -
103#endif /* _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ */
│ │ │ │ -
TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)
Get same type but nullable.
Definition convert.c:3009
│ │ │ │ -
unsigned char tds_willconvert(int srctype, int desttype)
Test if a conversion is possible.
Definition convert.c:3192
│ │ │ │ -
size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *timeptr, int prec)
format a date string according to an "extended" strftime(3) formatting definition.
Definition convert.c:3076
│ │ │ │ -
TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr)
tds_convert convert a type to another.
Definition convert.c:1970
│ │ │ │ -
Definition convert.h:34
│ │ │ │ -
Definition convert.h:62
│ │ │ │ -
Definition convert.h:66
│ │ │ │ -
Definition proto.h:26
│ │ │ │ -
Definition proto.h:39
│ │ │ │ -
Definition proto.h:45
│ │ │ │ -
Definition proto.h:50
│ │ │ │ -
Definition proto.h:56
│ │ │ │ -
Definition proto.h:62
│ │ │ │ -
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ -
Used by tds_datecrack.
Definition tds.h:158
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ +
82#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))
│ │ │ │ +
83#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))
│ │ │ │ +
84
│ │ │ │ +
85#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,161 +1,95 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -convert.h │ │ │ │ │ +macros.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ │ │ │ │ │ -21#define _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ │ │ │ │ │ -22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#ifdef __cplusplus │ │ │ │ │ -26extern "C" │ │ │ │ │ -27{ │ │ │ │ │ -28#if 0 │ │ │ │ │ -29} │ │ │ │ │ -30#endif │ │ │ │ │ -31#endif │ │ │ │ │ -32 │ │ │ │ │ -33typedef union conv_result │ │ │ │ │ -34{ │ │ │ │ │ -35 /* fixed */ │ │ │ │ │ -36 TDS_TINYINT ti; │ │ │ │ │ -37 TDS_SMALLINT si; │ │ │ │ │ -38 TDS_USMALLINT usi; │ │ │ │ │ -39 TDS_INT i; │ │ │ │ │ -40 TDS_UINT ui; │ │ │ │ │ -41 TDS_INT8 bi; │ │ │ │ │ -42 TDS_UINT8 ubi; │ │ │ │ │ -43 TDS_FLOAT f; │ │ │ │ │ -44 TDS_REAL r; │ │ │ │ │ -45 TDS_MONEY m; │ │ │ │ │ -46 TDS_MONEY4 m4; │ │ │ │ │ -47 TDS_DATETIME dt; │ │ │ │ │ -48 TDS_DATETIME4 dt4; │ │ │ │ │ -49 TDS_DATETIMEALL dta; │ │ │ │ │ -50 TDS_TIME time; │ │ │ │ │ -51 TDS_DATE date; │ │ │ │ │ -52 TDS_BIGTIME bigtime; │ │ │ │ │ -53 TDS_BIGDATETIME bigdatetime; │ │ │ │ │ -54 TDS_NUMERIC n; │ │ │ │ │ -55 TDS_UNIQUE u; │ │ │ │ │ -56 │ │ │ │ │ -57 /* variable */ │ │ │ │ │ -58 TDS_CHAR *c; │ │ │ │ │ -59 TDS_CHAR *ib; │ │ │ │ │ -60 │ │ │ │ │ -61 /* sized buffer types */ │ │ │ │ │ -62 struct cc_t { │ │ │ │ │ -63 TDS_CHAR *c; │ │ │ │ │ -64 TDS_UINT len; │ │ │ │ │ -65 } cc; │ │ │ │ │ -66 struct cb_t { │ │ │ │ │ -67 TDS_CHAR *ib; │ │ │ │ │ -68 TDS_UINT len; │ │ │ │ │ -69 } cb; │ │ │ │ │ -70} │ │ │ │ │ -71CONV_RESULT; │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2010-2017 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21#ifndef _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_ │ │ │ │ │ +22#define _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_ │ │ │ │ │ +23 │ │ │ │ │ +24#ifndef _freetds_config_h_ │ │ │ │ │ +25#error should include config.h before │ │ │ │ │ +26#endif │ │ │ │ │ +27 │ │ │ │ │ +28#if HAVE_STDDEF_H │ │ │ │ │ +29#include │ │ │ │ │ +30#endif /* HAVE_STDDEF_H */ │ │ │ │ │ +31 │ │ │ │ │ +32#include "tds_sysdep_public.h" │ │ │ │ │ +33#include │ │ │ │ │ +34 │ │ │ │ │ +35#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0) │ │ │ │ │ +36#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0])) │ │ │ │ │ +37 │ │ │ │ │ +38#ifdef offsetof │ │ │ │ │ +39#define TDS_OFFSET(type, field) offsetof(type, field) │ │ │ │ │ +40#else │ │ │ │ │ +41#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0)) │ │ │ │ │ +42#endif │ │ │ │ │ +43 │ │ │ │ │ +44#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +45# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == │ │ │ │ │ +4 && __GNUC_MINOR__ >= 6))) │ │ │ │ │ +46# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ +47 _Static_assert(check,#name) │ │ │ │ │ +48# else │ │ │ │ │ +49# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ +50 extern int name[(check)?1:-1] TDS_UNUSED │ │ │ │ │ +51# endif │ │ │ │ │ +52# define TDS_EXTRA_CHECK(stmt) stmt │ │ │ │ │ +53#else │ │ │ │ │ +54# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ +55 extern int disabled_check_##name TDS_UNUSED │ │ │ │ │ +56# define TDS_EXTRA_CHECK(stmt) │ │ │ │ │ +57#endif │ │ │ │ │ +58 │ │ │ │ │ +59#if defined(__GNUC__) && __GNUC__ >= 3 │ │ │ │ │ +60# define TDS_LIKELY(x) __builtin_expect(!!(x), 1) │ │ │ │ │ +61# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0) │ │ │ │ │ +62#else │ │ │ │ │ +63# define TDS_LIKELY(x) (x) │ │ │ │ │ +64# define TDS_UNLIKELY(x) (x) │ │ │ │ │ +65#endif │ │ │ │ │ +66 │ │ │ │ │ +67#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4 │ │ │ │ │ +68#define TDS_WUR __attribute__ ((__warn_unused_result__)) │ │ │ │ │ +69#else │ │ │ │ │ +70#define TDS_WUR │ │ │ │ │ +71#endif │ │ │ │ │ 72 │ │ │ │ │ -73/* │ │ │ │ │ -74 * Failure return codes for tds_convert() │ │ │ │ │ -75 */ │ │ │ │ │ -76#define TDS_CONVERT_FAIL -1 /* unspecified failure */ │ │ │ │ │ -77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */ │ │ │ │ │ -78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */ │ │ │ │ │ -79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */ │ │ │ │ │ -80#define TDS_CONVERT_OVERFLOW -5 /* result too large */ │ │ │ │ │ +73#if defined(__GNUC__) && __GNUC__ >= 2 │ │ │ │ │ +74#define TDS_UNUSED __attribute__ ((unused)) │ │ │ │ │ +75#else │ │ │ │ │ +76#define TDS_UNUSED │ │ │ │ │ +77#endif │ │ │ │ │ +78 │ │ │ │ │ +79#define TDS_INT2PTR(i) ((void*)(((char*)0)+((TDS_INTPTR)(i)))) │ │ │ │ │ +80#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0))) │ │ │ │ │ 81 │ │ │ │ │ -82/* sized types */ │ │ │ │ │ -83#define TDS_CONVERT_CHAR 256 │ │ │ │ │ -84#define TDS_CONVERT_BINARY 257 │ │ │ │ │ -85 │ │ │ │ │ -86unsigned char tds_willconvert(int srctype, int desttype); │ │ │ │ │ -87 │ │ │ │ │ -88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype); │ │ │ │ │ -89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, │ │ │ │ │ -TDS_UINT srclen); │ │ │ │ │ -90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, │ │ │ │ │ -TDS_UINT srclen, int desttype, CONV_RESULT *cr); │ │ │ │ │ -91 │ │ │ │ │ -92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const │ │ │ │ │ -TDSDATEREC * timeptr, int prec); │ │ │ │ │ -93 │ │ │ │ │ -94#ifdef __cplusplus │ │ │ │ │ -95#if 0 │ │ │ │ │ -96{ │ │ │ │ │ -97#endif │ │ │ │ │ -98} │ │ │ │ │ -99#endif │ │ │ │ │ -100 │ │ │ │ │ -101#include │ │ │ │ │ -102 │ │ │ │ │ -103#endif /* _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ */ │ │ │ │ │ -tds_get_null_type │ │ │ │ │ -TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype) │ │ │ │ │ -Get same type but nullable. │ │ │ │ │ -Definition convert.c:3009 │ │ │ │ │ -tds_willconvert │ │ │ │ │ -unsigned char tds_willconvert(int srctype, int desttype) │ │ │ │ │ -Test if a conversion is possible. │ │ │ │ │ -Definition convert.c:3192 │ │ │ │ │ -tds_strftime │ │ │ │ │ -size_t tds_strftime(char *buf, size_t maxsize, const char *format, const │ │ │ │ │ -TDSDATEREC *timeptr, int prec) │ │ │ │ │ -format a date string according to an "extended" strftime(3) formatting │ │ │ │ │ -definition. │ │ │ │ │ -Definition convert.c:3076 │ │ │ │ │ -tds_convert │ │ │ │ │ -TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, │ │ │ │ │ -TDS_UINT srclen, int desttype, CONV_RESULT *cr) │ │ │ │ │ -tds_convert convert a type to another. │ │ │ │ │ -Definition convert.c:1970 │ │ │ │ │ -conv_result │ │ │ │ │ -Definition convert.h:34 │ │ │ │ │ -conv_result::cc_t │ │ │ │ │ -Definition convert.h:62 │ │ │ │ │ -conv_result::cb_t │ │ │ │ │ -Definition convert.h:66 │ │ │ │ │ -tdsnumeric │ │ │ │ │ -Definition proto.h:26 │ │ │ │ │ -tdsmoney │ │ │ │ │ -Definition proto.h:39 │ │ │ │ │ -tdsmoney4 │ │ │ │ │ -Definition proto.h:45 │ │ │ │ │ -tdsdatetime │ │ │ │ │ -Definition proto.h:50 │ │ │ │ │ -tdsdatetime4 │ │ │ │ │ -Definition proto.h:56 │ │ │ │ │ -tdsunique │ │ │ │ │ -Definition proto.h:62 │ │ │ │ │ -TDS_DATETIMEALL │ │ │ │ │ -This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ -TIME information. │ │ │ │ │ -Definition tds.h:145 │ │ │ │ │ -tdsdaterec │ │ │ │ │ -Used by tds_datecrack. │ │ │ │ │ -Definition tds.h:158 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ +82#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n))) │ │ │ │ │ +83#define tds_new0(type, n) ((type *) calloc(n, sizeof(type))) │ │ │ │ │ +84 │ │ │ │ │ +85#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00404_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/pushvis.h Source File │ │ │ │ +FreeTDS API: include/freetds/time.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,20 +74,22 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
pushvis.h
│ │ │ │ +
time.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ -
2#pragma GCC visibility push(hidden)
│ │ │ │ +
1#if HAVE_SYS_TIME_H
│ │ │ │ +
2# include <sys/time.h>
│ │ │ │
3#endif
│ │ │ │ +
4
│ │ │ │ +
5#include <time.h>
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,14 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -pushvis.h │ │ │ │ │ -1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ -2#pragma GCC visibility push(hidden) │ │ │ │ │ +time.h │ │ │ │ │ +1#if HAVE_SYS_TIME_H │ │ │ │ │ +2# include │ │ │ │ │ 3#endif │ │ │ │ │ +4 │ │ │ │ │ +5#include │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00407_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/data.h Source File │ │ │ │ +FreeTDS API: include/freetds/tls.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,19 +74,19 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
data.h
│ │ │ │ +
tls.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2014 Frediano Ziglio
│ │ │ │ +
2 * Copyright (C) 2015 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,106 +96,122 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_gGNZG1PGQbnTbRweOYXD8U_
│ │ │ │ -
21#define _tdsguard_gGNZG1PGQbnTbRweOYXD8U_
│ │ │ │ +
20#ifndef _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
│ │ │ │ +
21#define _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
│ │ │ │
22
│ │ │ │
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ -
24# error Include tds.h before data.h
│ │ │ │ +
24#error tds.h must be included before tls.h
│ │ │ │
25#endif
│ │ │ │
26
│ │ │ │ -
27#include <freetds/pushvis.h>
│ │ │ │ -
28
│ │ │ │ -
29#define TDS_COMMON_FUNCS(name) \
│ │ │ │ -
30{ \
│ │ │ │ -
31 tds_ ## name ## _get_info, \
│ │ │ │ -
32 tds_ ## name ## _get, \
│ │ │ │ -
33 tds_ ## name ## _row_len, \
│ │ │ │ -
34 tds_ ## name ## _put_info, \
│ │ │ │ -
35 tds_ ## name ## _put, \
│ │ │ │ -
36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \
│ │ │ │ -
37}
│ │ │ │ -
38
│ │ │ │ -
39tds_func_get_info tds_invalid_get_info;
│ │ │ │ -
40tds_func_row_len tds_invalid_row_len;
│ │ │ │ -
41tds_func_get_data tds_invalid_get;
│ │ │ │ -
42tds_func_put_info tds_invalid_put_info;
│ │ │ │ -
43tds_func_put_data tds_invalid_put;
│ │ │ │ -
44tds_func_check tds_invalid_check;
│ │ │ │ -
45
│ │ │ │ -
46tds_func_get_info tds_generic_get_info;
│ │ │ │ -
47tds_func_row_len tds_generic_row_len;
│ │ │ │ -
48tds_func_get_data tds_generic_get;
│ │ │ │ -
49tds_func_put_info tds_generic_put_info;
│ │ │ │ -
50tds_func_put_data tds_generic_put;
│ │ │ │ -
51tds_func_check tds_generic_check;
│ │ │ │ -
52
│ │ │ │ -
53tds_func_get_info tds_numeric_get_info;
│ │ │ │ -
54tds_func_row_len tds_numeric_row_len;
│ │ │ │ -
55tds_func_get_data tds_numeric_get;
│ │ │ │ -
56tds_func_put_info tds_numeric_put_info;
│ │ │ │ -
57tds_func_put_data tds_numeric_put;
│ │ │ │ -
58tds_func_check tds_numeric_check;
│ │ │ │ -
59
│ │ │ │ -
60#define tds_variant_get_info tds_generic_get_info
│ │ │ │ -
61#define tds_variant_row_len tds_generic_row_len
│ │ │ │ -
62tds_func_get_data tds_variant_get;
│ │ │ │ -
63tds_func_put_info tds_variant_put_info;
│ │ │ │ -
64tds_func_put_data tds_variant_put;
│ │ │ │ -
65tds_func_check tds_variant_check;
│ │ │ │ -
66
│ │ │ │ -
67tds_func_get_info tds_msdatetime_get_info;
│ │ │ │ -
68tds_func_row_len tds_msdatetime_row_len;
│ │ │ │ -
69tds_func_get_data tds_msdatetime_get;
│ │ │ │ -
70tds_func_put_info tds_msdatetime_put_info;
│ │ │ │ -
71tds_func_put_data tds_msdatetime_put;
│ │ │ │ -
72tds_func_check tds_msdatetime_check;
│ │ │ │ +
27#ifdef HAVE_GNUTLS
│ │ │ │ +
28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
│ │ │ │ +
29# include <freetds/thread.h>
│ │ │ │ +
30# ifndef GNUTLS_USE_NETTLE
│ │ │ │ +
31# include <gcrypt.h>
│ │ │ │ +
32# endif
│ │ │ │ +
33# endif
│ │ │ │ +
34# include <gnutls/gnutls.h>
│ │ │ │ +
35# include <gnutls/x509.h>
│ │ │ │ +
36#elif defined(HAVE_OPENSSL)
│ │ │ │ +
37# include <openssl/ssl.h>
│ │ │ │ +
38# include <openssl/x509v3.h>
│ │ │ │ +
39# include <openssl/err.h>
│ │ │ │ +
40#endif
│ │ │ │ +
41
│ │ │ │ +
42#include <freetds/pushvis.h>
│ │ │ │ +
43
│ │ │ │ +
44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
│ │ │ │ +
45TDSRET tds_ssl_init(TDSSOCKET *tds, bool full);
│ │ │ │ +
46void tds_ssl_deinit(TDSCONNECTION *conn);
│ │ │ │ +
47
│ │ │ │ +
48# ifdef HAVE_GNUTLS
│ │ │ │ +
49
│ │ │ │ +
50static inline int
│ │ │ │ +
51tds_ssl_pending(TDSCONNECTION *conn)
│ │ │ │ +
52{
│ │ │ │ +
53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);
│ │ │ │ +
54}
│ │ │ │ +
55
│ │ │ │ +
56static inline int
│ │ │ │ +
57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
│ │ │ │ +
58{
│ │ │ │ +
59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, buflen);
│ │ │ │ +
60}
│ │ │ │ +
61
│ │ │ │ +
62static inline int
│ │ │ │ +
63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
│ │ │ │ +
64{
│ │ │ │ +
65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, buflen);
│ │ │ │ +
66}
│ │ │ │ +
67# else
│ │ │ │ +
68
│ │ │ │ +
69/* compatibility for LibreSSL 2.7 */
│ │ │ │ +
70#ifdef LIBRESSL_VERSION_NUMBER
│ │ │ │ +
71#define TLS_ST_OK SSL_ST_OK
│ │ │ │ +
72#endif
│ │ │ │
73
│ │ │ │ -
74tds_func_get_info tds_clrudt_get_info;
│ │ │ │ -
75tds_func_row_len tds_clrudt_row_len;
│ │ │ │ -
76#define tds_clrudt_get tds_generic_get
│ │ │ │ -
77tds_func_put_info tds_clrudt_put_info;
│ │ │ │ -
78#define tds_clrudt_put tds_generic_put
│ │ │ │ -
79tds_func_check tds_clrudt_check;
│ │ │ │ -
80
│ │ │ │ -
81tds_func_get_info tds_sybbigtime_get_info;
│ │ │ │ -
82tds_func_row_len tds_sybbigtime_row_len;
│ │ │ │ -
83tds_func_get_data tds_sybbigtime_get;
│ │ │ │ -
84tds_func_put_info tds_sybbigtime_put_info;
│ │ │ │ -
85tds_func_put_data tds_sybbigtime_put;
│ │ │ │ -
86tds_func_check tds_sybbigtime_check;
│ │ │ │ -
87
│ │ │ │ -
88tds_func_get_info tds_mstabletype_get_info;
│ │ │ │ -
89tds_func_row_len tds_mstabletype_row_len;
│ │ │ │ -
90tds_func_get_data tds_mstabletype_get;
│ │ │ │ -
91tds_func_put_info tds_mstabletype_put_info;
│ │ │ │ -
92tds_func_put_data tds_mstabletype_put;
│ │ │ │ -
93tds_func_check tds_mstabletype_check;
│ │ │ │ -
94
│ │ │ │ -
99#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
│ │ │ │ -
100# define TDS_DEFINE_DEFAULT_FUNCS(name) \
│ │ │ │ -
101 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)
│ │ │ │ -
102
│ │ │ │ -
103TDS_DEFINE_DEFAULT_FUNCS(invalid);
│ │ │ │ -
104TDS_DEFINE_DEFAULT_FUNCS(generic);
│ │ │ │ -
105TDS_DEFINE_DEFAULT_FUNCS(numeric);
│ │ │ │ -
106TDS_DEFINE_DEFAULT_FUNCS(variant);
│ │ │ │ -
107TDS_DEFINE_DEFAULT_FUNCS(msdatetime);
│ │ │ │ -
108TDS_DEFINE_DEFAULT_FUNCS(clrudt);
│ │ │ │ -
109TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);
│ │ │ │ -
110TDS_DEFINE_DEFAULT_FUNCS(mstabletype);
│ │ │ │ -
111#endif
│ │ │ │ -
112
│ │ │ │ -
113#include <freetds/popvis.h>
│ │ │ │ -
114
│ │ │ │ -
115#endif
│ │ │ │ +
74static inline int
│ │ │ │ +
75tds_ssl_pending(TDSCONNECTION *conn)
│ │ │ │ +
76{
│ │ │ │ +
77 return SSL_pending((SSL *) conn->tls_session);
│ │ │ │ +
78}
│ │ │ │ +
79
│ │ │ │ +
80static inline int
│ │ │ │ +
81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
│ │ │ │ +
82{
│ │ │ │ +
83 return SSL_read((SSL *) conn->tls_session, buf, buflen);
│ │ │ │ +
84}
│ │ │ │ +
85
│ │ │ │ +
86static inline int
│ │ │ │ +
87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
│ │ │ │ +
88{
│ │ │ │ +
89 return SSL_write((SSL *) conn->tls_session, buf, buflen);
│ │ │ │ +
90}
│ │ │ │ +
91# endif
│ │ │ │ +
92#else
│ │ │ │ +
93static inline TDSRET
│ │ │ │ +
94tds_ssl_init(TDSSOCKET *tds TDS_UNUSED, bool full TDS_UNUSED)
│ │ │ │ +
95{
│ │ │ │ +
96 return TDS_FAIL;
│ │ │ │ +
97}
│ │ │ │ +
98
│ │ │ │ +
99static inline void
│ │ │ │ +
100tds_ssl_deinit(TDSCONNECTION *conn TDS_UNUSED)
│ │ │ │ +
101{
│ │ │ │ +
102}
│ │ │ │ +
103
│ │ │ │ +
104static inline int
│ │ │ │ +
105tds_ssl_pending(TDSCONNECTION *conn TDS_UNUSED)
│ │ │ │ +
106{
│ │ │ │ +
107 return 0;
│ │ │ │ +
108}
│ │ │ │ +
109
│ │ │ │ +
110static inline int
│ │ │ │ +
111tds_ssl_read(TDSCONNECTION *conn TDS_UNUSED, unsigned char *buf TDS_UNUSED, int buflen TDS_UNUSED)
│ │ │ │ +
112{
│ │ │ │ +
113 return -1;
│ │ │ │ +
114}
│ │ │ │ +
115
│ │ │ │ +
116static inline int
│ │ │ │ +
117tds_ssl_write(TDSCONNECTION *conn TDS_UNUSED, const unsigned char *buf TDS_UNUSED, int buflen TDS_UNUSED)
│ │ │ │ +
118{
│ │ │ │ +
119 return -1;
│ │ │ │ +
120}
│ │ │ │ +
121#endif
│ │ │ │ +
122
│ │ │ │ +
123#include <freetds/popvis.h>
│ │ │ │ +
124
│ │ │ │ +
125#endif /* _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ */
│ │ │ │ +
Definition tds.h:1077
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -data.h │ │ │ │ │ +tls.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2014 Frediano Ziglio │ │ │ │ │ +2 * Copyright (C) 2015 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,101 +20,124 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_gGNZG1PGQbnTbRweOYXD8U_ │ │ │ │ │ -21#define _tdsguard_gGNZG1PGQbnTbRweOYXD8U_ │ │ │ │ │ +20#ifndef _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ │ │ │ │ │ +21#define _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ │ │ │ │ │ 22 │ │ │ │ │ 23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ -24# error Include tds.h before data.h │ │ │ │ │ +24#error tds.h must be included before tls.h │ │ │ │ │ 25#endif │ │ │ │ │ 26 │ │ │ │ │ -27#include │ │ │ │ │ -28 │ │ │ │ │ -29#define TDS_COMMON_FUNCS(name) \ │ │ │ │ │ -30{ \ │ │ │ │ │ -31 tds_ ## name ## _get_info, \ │ │ │ │ │ -32 tds_ ## name ## _get, \ │ │ │ │ │ -33 tds_ ## name ## _row_len, \ │ │ │ │ │ -34 tds_ ## name ## _put_info, \ │ │ │ │ │ -35 tds_ ## name ## _put, \ │ │ │ │ │ -36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \ │ │ │ │ │ -37} │ │ │ │ │ -38 │ │ │ │ │ -39tds_func_get_info tds_invalid_get_info; │ │ │ │ │ -40tds_func_row_len tds_invalid_row_len; │ │ │ │ │ -41tds_func_get_data tds_invalid_get; │ │ │ │ │ -42tds_func_put_info tds_invalid_put_info; │ │ │ │ │ -43tds_func_put_data tds_invalid_put; │ │ │ │ │ -44tds_func_check tds_invalid_check; │ │ │ │ │ -45 │ │ │ │ │ -46tds_func_get_info tds_generic_get_info; │ │ │ │ │ -47tds_func_row_len tds_generic_row_len; │ │ │ │ │ -48tds_func_get_data tds_generic_get; │ │ │ │ │ -49tds_func_put_info tds_generic_put_info; │ │ │ │ │ -50tds_func_put_data tds_generic_put; │ │ │ │ │ -51tds_func_check tds_generic_check; │ │ │ │ │ -52 │ │ │ │ │ -53tds_func_get_info tds_numeric_get_info; │ │ │ │ │ -54tds_func_row_len tds_numeric_row_len; │ │ │ │ │ -55tds_func_get_data tds_numeric_get; │ │ │ │ │ -56tds_func_put_info tds_numeric_put_info; │ │ │ │ │ -57tds_func_put_data tds_numeric_put; │ │ │ │ │ -58tds_func_check tds_numeric_check; │ │ │ │ │ -59 │ │ │ │ │ -60#define tds_variant_get_info tds_generic_get_info │ │ │ │ │ -61#define tds_variant_row_len tds_generic_row_len │ │ │ │ │ -62tds_func_get_data tds_variant_get; │ │ │ │ │ -63tds_func_put_info tds_variant_put_info; │ │ │ │ │ -64tds_func_put_data tds_variant_put; │ │ │ │ │ -65tds_func_check tds_variant_check; │ │ │ │ │ -66 │ │ │ │ │ -67tds_func_get_info tds_msdatetime_get_info; │ │ │ │ │ -68tds_func_row_len tds_msdatetime_row_len; │ │ │ │ │ -69tds_func_get_data tds_msdatetime_get; │ │ │ │ │ -70tds_func_put_info tds_msdatetime_put_info; │ │ │ │ │ -71tds_func_put_data tds_msdatetime_put; │ │ │ │ │ -72tds_func_check tds_msdatetime_check; │ │ │ │ │ +27#ifdef HAVE_GNUTLS │ │ │ │ │ +28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX) │ │ │ │ │ +29# include │ │ │ │ │ +30# ifndef GNUTLS_USE_NETTLE │ │ │ │ │ +31# include │ │ │ │ │ +32# endif │ │ │ │ │ +33# endif │ │ │ │ │ +34# include │ │ │ │ │ +35# include │ │ │ │ │ +36#elif defined(HAVE_OPENSSL) │ │ │ │ │ +37# include │ │ │ │ │ +38# include │ │ │ │ │ +39# include │ │ │ │ │ +40#endif │ │ │ │ │ +41 │ │ │ │ │ +42#include │ │ │ │ │ +43 │ │ │ │ │ +44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) │ │ │ │ │ +45TDSRET tds_ssl_init(TDSSOCKET *tds, bool full); │ │ │ │ │ +46void tds_ssl_deinit(TDSCONNECTION *conn); │ │ │ │ │ +47 │ │ │ │ │ +48# ifdef HAVE_GNUTLS │ │ │ │ │ +49 │ │ │ │ │ +50static inline int │ │ │ │ │ +51tds_ssl_pending(TDSCONNECTION *conn) │ │ │ │ │ +52{ │ │ │ │ │ +53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session); │ │ │ │ │ +54} │ │ │ │ │ +55 │ │ │ │ │ +56static inline int │ │ │ │ │ +57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen) │ │ │ │ │ +58{ │ │ │ │ │ +59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, │ │ │ │ │ +buflen); │ │ │ │ │ +60} │ │ │ │ │ +61 │ │ │ │ │ +62static inline int │ │ │ │ │ +63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen) │ │ │ │ │ +64{ │ │ │ │ │ +65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, │ │ │ │ │ +buflen); │ │ │ │ │ +66} │ │ │ │ │ +67# else │ │ │ │ │ +68 │ │ │ │ │ +69/* compatibility for LibreSSL 2.7 */ │ │ │ │ │ +70#ifdef LIBRESSL_VERSION_NUMBER │ │ │ │ │ +71#define TLS_ST_OK SSL_ST_OK │ │ │ │ │ +72#endif │ │ │ │ │ 73 │ │ │ │ │ -74tds_func_get_info tds_clrudt_get_info; │ │ │ │ │ -75tds_func_row_len tds_clrudt_row_len; │ │ │ │ │ -76#define tds_clrudt_get tds_generic_get │ │ │ │ │ -77tds_func_put_info tds_clrudt_put_info; │ │ │ │ │ -78#define tds_clrudt_put tds_generic_put │ │ │ │ │ -79tds_func_check tds_clrudt_check; │ │ │ │ │ -80 │ │ │ │ │ -81tds_func_get_info tds_sybbigtime_get_info; │ │ │ │ │ -82tds_func_row_len tds_sybbigtime_row_len; │ │ │ │ │ -83tds_func_get_data tds_sybbigtime_get; │ │ │ │ │ -84tds_func_put_info tds_sybbigtime_put_info; │ │ │ │ │ -85tds_func_put_data tds_sybbigtime_put; │ │ │ │ │ -86tds_func_check tds_sybbigtime_check; │ │ │ │ │ -87 │ │ │ │ │ -88tds_func_get_info tds_mstabletype_get_info; │ │ │ │ │ -89tds_func_row_len tds_mstabletype_row_len; │ │ │ │ │ -90tds_func_get_data tds_mstabletype_get; │ │ │ │ │ -91tds_func_put_info tds_mstabletype_put_info; │ │ │ │ │ -92tds_func_put_data tds_mstabletype_put; │ │ │ │ │ -93tds_func_check tds_mstabletype_check; │ │ │ │ │ -94 │ │ │ │ │ -99#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS │ │ │ │ │ -100# define TDS_DEFINE_DEFAULT_FUNCS(name) \ │ │ │ │ │ -101 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name) │ │ │ │ │ -102 │ │ │ │ │ -103TDS_DEFINE_DEFAULT_FUNCS(invalid); │ │ │ │ │ -104TDS_DEFINE_DEFAULT_FUNCS(generic); │ │ │ │ │ -105TDS_DEFINE_DEFAULT_FUNCS(numeric); │ │ │ │ │ -106TDS_DEFINE_DEFAULT_FUNCS(variant); │ │ │ │ │ -107TDS_DEFINE_DEFAULT_FUNCS(msdatetime); │ │ │ │ │ -108TDS_DEFINE_DEFAULT_FUNCS(clrudt); │ │ │ │ │ -109TDS_DEFINE_DEFAULT_FUNCS(sybbigtime); │ │ │ │ │ -110TDS_DEFINE_DEFAULT_FUNCS(mstabletype); │ │ │ │ │ -111#endif │ │ │ │ │ -112 │ │ │ │ │ -113#include │ │ │ │ │ -114 │ │ │ │ │ -115#endif │ │ │ │ │ +74static inline int │ │ │ │ │ +75tds_ssl_pending(TDSCONNECTION *conn) │ │ │ │ │ +76{ │ │ │ │ │ +77 return SSL_pending((SSL *) conn->tls_session); │ │ │ │ │ +78} │ │ │ │ │ +79 │ │ │ │ │ +80static inline int │ │ │ │ │ +81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen) │ │ │ │ │ +82{ │ │ │ │ │ +83 return SSL_read((SSL *) conn->tls_session, buf, buflen); │ │ │ │ │ +84} │ │ │ │ │ +85 │ │ │ │ │ +86static inline int │ │ │ │ │ +87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen) │ │ │ │ │ +88{ │ │ │ │ │ +89 return SSL_write((SSL *) conn->tls_session, buf, buflen); │ │ │ │ │ +90} │ │ │ │ │ +91# endif │ │ │ │ │ +92#else │ │ │ │ │ +93static inline TDSRET │ │ │ │ │ +94tds_ssl_init(TDSSOCKET *tds TDS_UNUSED, bool full TDS_UNUSED) │ │ │ │ │ +95{ │ │ │ │ │ +96 return TDS_FAIL; │ │ │ │ │ +97} │ │ │ │ │ +98 │ │ │ │ │ +99static inline void │ │ │ │ │ +100tds_ssl_deinit(TDSCONNECTION *conn TDS_UNUSED) │ │ │ │ │ +101{ │ │ │ │ │ +102} │ │ │ │ │ +103 │ │ │ │ │ +104static inline int │ │ │ │ │ +105tds_ssl_pending(TDSCONNECTION *conn TDS_UNUSED) │ │ │ │ │ +106{ │ │ │ │ │ +107 return 0; │ │ │ │ │ +108} │ │ │ │ │ +109 │ │ │ │ │ +110static inline int │ │ │ │ │ +111tds_ssl_read(TDSCONNECTION *conn TDS_UNUSED, unsigned char *buf TDS_UNUSED, │ │ │ │ │ +int buflen TDS_UNUSED) │ │ │ │ │ +112{ │ │ │ │ │ +113 return -1; │ │ │ │ │ +114} │ │ │ │ │ +115 │ │ │ │ │ +116static inline int │ │ │ │ │ +117tds_ssl_write(TDSCONNECTION *conn TDS_UNUSED, const unsigned char *buf TDS_ │ │ │ │ │ +UNUSED, int buflen TDS_UNUSED) │ │ │ │ │ +118{ │ │ │ │ │ +119 return -1; │ │ │ │ │ +120} │ │ │ │ │ +121#endif │ │ │ │ │ +122 │ │ │ │ │ +123#include │ │ │ │ │ +124 │ │ │ │ │ +125#endif /* _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ */ │ │ │ │ │ +tds_connection │ │ │ │ │ +Definition tds.h:1077 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00410_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/popvis.h Source File │ │ │ │ +FreeTDS API: include/freetds/sysdep_private.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,20 +74,314 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
popvis.h
│ │ │ │ +
sysdep_private.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ -
2#pragma GCC visibility pop
│ │ │ │ -
3#endif
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2010 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ +
22#define _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ +
23
│ │ │ │ +
24#define TDS_ADDITIONAL_SPACE 16
│ │ │ │ +
25
│ │ │ │ +
26#ifdef MSG_NOSIGNAL
│ │ │ │ +
27# define TDS_NOSIGNAL MSG_NOSIGNAL
│ │ │ │ +
28#else
│ │ │ │ +
29# define TDS_NOSIGNAL 0L
│ │ │ │ +
30#endif
│ │ │ │ +
31
│ │ │ │ +
32#ifdef __cplusplus
│ │ │ │ +
33#define TDS_EXTERN_C extern "C"
│ │ │ │ +
34#else
│ │ │ │ +
35#define TDS_EXTERN_C
│ │ │ │ +
36#endif
│ │ │ │ +
37
│ │ │ │ +
38#ifdef __INCvxWorksh
│ │ │ │ +
39#include <ioLib.h> /* for FIONBIO */
│ │ │ │ +
40#endif /* __INCvxWorksh */
│ │ │ │ +
41
│ │ │ │ +
42#if defined(DOS32X)
│ │ │ │ +
43#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
│ │ │ │ +
44#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
│ │ │ │ +
45#define CLOSESOCKET(a) closesocket((a))
│ │ │ │ +
46#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
│ │ │ │ +
47#define SOCKLEN_T int
│ │ │ │ +
48#define select select_s
│ │ │ │ +
49typedef int pid_t;
│ │ │ │ +
50#define strcasecmp stricmp
│ │ │ │ +
51#define strncasecmp strnicmp
│ │ │ │ +
52/* TODO this has nothing to do with ip ... */
│ │ │ │ +
53#define getpid() _gethostid()
│ │ │ │ +
54#endif /* defined(DOS32X) */
│ │ │ │ +
55
│ │ │ │ +
56#ifdef _WIN32
│ │ │ │ +
57#include <freetds/windows.h>
│ │ │ │ +
58#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
│ │ │ │ +
59#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
│ │ │ │ +
60#define CLOSESOCKET(a) closesocket((a))
│ │ │ │ +
61#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
│ │ │ │ +
62#define SOCKLEN_T int
│ │ │ │ +
63static inline int
│ │ │ │ +
64tds_socket_init(void)
│ │ │ │ +
65{
│ │ │ │ +
66 WSADATA wsadata;
│ │ │ │ +
67
│ │ │ │ +
68 return WSAStartup(MAKEWORD(2, 2), &wsadata);
│ │ │ │ +
69}
│ │ │ │ +
70
│ │ │ │ +
71static inline void
│ │ │ │ +
72tds_socket_done(void)
│ │ │ │ +
73{
│ │ │ │ +
74 WSACleanup();
│ │ │ │ +
75}
│ │ │ │ +
76#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */
│ │ │ │ +
77
│ │ │ │ +
78#define TDSSOCK_EINTR WSAEINTR
│ │ │ │ +
79#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
│ │ │ │ +
80#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
│ │ │ │ +
81#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
│ │ │ │ +
82#define TDSSOCK_ECONNRESET WSAECONNRESET
│ │ │ │ +
83#define sock_errno WSAGetLastError()
│ │ │ │ +
84#define set_sock_errno(err) WSASetLastError(err)
│ │ │ │ +
85#define sock_strerror(n) tds_prwsaerror(n)
│ │ │ │ +
86#define sock_strerror_free(s) tds_prwsaerror_free(s)
│ │ │ │ +
87#ifndef __MINGW32__
│ │ │ │ +
88typedef DWORD pid_t;
│ │ │ │ +
89#endif
│ │ │ │ +
90#undef strcasecmp
│ │ │ │ +
91#define strcasecmp stricmp
│ │ │ │ +
92#undef strncasecmp
│ │ │ │ +
93#define strncasecmp strnicmp
│ │ │ │ +
94#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
│ │ │ │ +
95#define snprintf _snprintf
│ │ │ │ +
96#endif
│ │ │ │ +
97
│ │ │ │ +
98#ifndef WIN32
│ │ │ │ +
99#define WIN32 1
│ │ │ │ +
100#endif
│ │ │ │ +
101
│ │ │ │ +
102#if defined(_WIN64) && !defined(WIN64)
│ │ │ │ +
103#define WIN64 1
│ │ │ │ +
104#endif
│ │ │ │ +
105
│ │ │ │ +
106/* use macros to use new style names */
│ │ │ │ +
107#if defined(__MSVCRT__) || defined(_MSC_VER)
│ │ │ │ +
108/* Use API as always present and not causing problems */
│ │ │ │ +
109#undef getpid
│ │ │ │ +
110#define getpid() GetCurrentProcessId()
│ │ │ │ +
111#define strdup(s) _strdup(s)
│ │ │ │ +
112#define unlink(f) _unlink(f)
│ │ │ │ +
113#define putenv(s) _putenv(s)
│ │ │ │ +
114#undef fileno
│ │ │ │ +
115#define fileno(f) _fileno(f)
│ │ │ │ +
116#undef close
│ │ │ │ +
117#define close(f) _close(f)
│ │ │ │ +
118#undef open
│ │ │ │ +
119#define open(fn,...) _open(fn,__VA_ARGS__)
│ │ │ │ +
120#undef dup2
│ │ │ │ +
121#define dup2(o,n) _dup2(o,n)
│ │ │ │ +
122#define stricmp(s1,s2) _stricmp(s1,s2)
│ │ │ │ +
123#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
│ │ │ │ +
124#endif
│ │ │ │ +
125
│ │ │ │ +
126#endif /* defined(_WIN32) */
│ │ │ │ +
127
│ │ │ │ +
128#ifndef sock_errno
│ │ │ │ +
129#define sock_errno errno
│ │ │ │ +
130#endif
│ │ │ │ +
131
│ │ │ │ +
132#ifndef set_sock_errno
│ │ │ │ +
133#define set_sock_errno(err) do { errno = (err); } while(0)
│ │ │ │ +
134#endif
│ │ │ │ +
135
│ │ │ │ +
136#ifndef sock_strerror
│ │ │ │ +
137#define sock_strerror(n) strerror(n)
│ │ │ │ +
138#define sock_strerror_free(s) do {} while(0)
│ │ │ │ +
139#endif
│ │ │ │ +
140
│ │ │ │ +
141#ifndef TDSSOCK_EINTR
│ │ │ │ +
142#define TDSSOCK_EINTR EINTR
│ │ │ │ +
143#endif
│ │ │ │ +
144
│ │ │ │ +
145#ifndef TDSSOCK_EINPROGRESS
│ │ │ │ +
146#define TDSSOCK_EINPROGRESS EINPROGRESS
│ │ │ │ +
147#endif
│ │ │ │ +
148
│ │ │ │ +
149#ifndef TDSSOCK_ETIMEDOUT
│ │ │ │ +
150#define TDSSOCK_ETIMEDOUT ETIMEDOUT
│ │ │ │ +
151#endif
│ │ │ │ +
152
│ │ │ │ +
153#ifndef TDSSOCK_WOULDBLOCK
│ │ │ │ +
154# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
│ │ │ │ +
155# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
│ │ │ │ +
156# else
│ │ │ │ +
157# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
│ │ │ │ +
158# endif
│ │ │ │ +
159#endif
│ │ │ │ +
160
│ │ │ │ +
161#ifndef TDSSOCK_ECONNRESET
│ │ │ │ +
162#define TDSSOCK_ECONNRESET ECONNRESET
│ │ │ │ +
163#endif
│ │ │ │ +
164
│ │ │ │ +
165#ifndef _WIN32
│ │ │ │ +
166static inline int
│ │ │ │ +
167tds_socket_init(void)
│ │ │ │ +
168{
│ │ │ │ +
169 return 0;
│ │ │ │ +
170}
│ │ │ │ +
171
│ │ │ │ +
172static inline void
│ │ │ │ +
173tds_socket_done(void)
│ │ │ │ +
174{
│ │ │ │ +
175}
│ │ │ │ +
176#endif
│ │ │ │ +
177
│ │ │ │ +
178#ifndef READSOCKET
│ │ │ │ +
179# ifdef MSG_NOSIGNAL
│ │ │ │ +
180# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
│ │ │ │ +
181# else
│ │ │ │ +
182# define READSOCKET(s,b,l) read((s), (b), (l))
│ │ │ │ +
183# endif
│ │ │ │ +
184#endif /* !READSOCKET */
│ │ │ │ +
185
│ │ │ │ +
186#ifndef WRITESOCKET
│ │ │ │ +
187# ifdef MSG_NOSIGNAL
│ │ │ │ +
188# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
│ │ │ │ +
189# else
│ │ │ │ +
190# define WRITESOCKET(s,b,l) write((s), (b), (l))
│ │ │ │ +
191# endif
│ │ │ │ +
192#endif /* !WRITESOCKET */
│ │ │ │ +
193
│ │ │ │ +
194#ifndef CLOSESOCKET
│ │ │ │ +
195#define CLOSESOCKET(s) close((s))
│ │ │ │ +
196#endif /* !CLOSESOCKET */
│ │ │ │ +
197
│ │ │ │ +
198#ifndef IOCTLSOCKET
│ │ │ │ +
199#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
│ │ │ │ +
200#endif /* !IOCTLSOCKET */
│ │ │ │ +
201
│ │ │ │ +
202#ifndef SOCKLEN_T
│ │ │ │ +
203# define SOCKLEN_T socklen_t
│ │ │ │ +
204#endif
│ │ │ │ +
205
│ │ │ │ +
206#ifndef _WIN32
│ │ │ │ +
207typedef int TDS_SYS_SOCKET;
│ │ │ │ +
208#define INVALID_SOCKET -1
│ │ │ │ +
209#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
│ │ │ │ +
210#else
│ │ │ │ +
211typedef SOCKET TDS_SYS_SOCKET;
│ │ │ │ +
212#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
│ │ │ │ +
213#endif
│ │ │ │ +
214
│ │ │ │ +
215#define tds_accept accept
│ │ │ │ +
216#define tds_getpeername getpeername
│ │ │ │ +
217#define tds_getsockopt getsockopt
│ │ │ │ +
218#define tds_getsockname getsockname
│ │ │ │ +
219#define tds_recvfrom recvfrom
│ │ │ │ +
220
│ │ │ │ +
221#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
│ │ │ │ +
222# if HAVE__XPG_ACCEPT
│ │ │ │ +
223# undef tds_accept
│ │ │ │ +
224# define tds_accept _xpg_accept
│ │ │ │ +
225# elif HAVE___ACCEPT
│ │ │ │ +
226# undef tds_accept
│ │ │ │ +
227# define tds_accept __accept
│ │ │ │ +
228# endif
│ │ │ │ +
229# if HAVE__XPG_GETPEERNAME
│ │ │ │ +
230# undef tds_getpeername
│ │ │ │ +
231# define tds_getpeername _xpg_getpeername
│ │ │ │ +
232# elif HAVE___GETPEERNAME
│ │ │ │ +
233# undef tds_getpeername
│ │ │ │ +
234# define tds_getpeername __getpeername
│ │ │ │ +
235# endif
│ │ │ │ +
236# if HAVE__XPG_GETSOCKOPT
│ │ │ │ +
237# undef tds_getsockopt
│ │ │ │ +
238# define tds_getsockopt _xpg_getsockopt
│ │ │ │ +
239# elif HAVE___GETSOCKOPT
│ │ │ │ +
240# undef tds_getsockopt
│ │ │ │ +
241# define tds_getsockopt __getsockopt
│ │ │ │ +
242# endif
│ │ │ │ +
243# if HAVE__XPG_GETSOCKNAME
│ │ │ │ +
244# undef tds_getsockname
│ │ │ │ +
245# define tds_getsockname _xpg_getsockname
│ │ │ │ +
246# elif HAVE___GETSOCKNAME
│ │ │ │ +
247# undef tds_getsockname
│ │ │ │ +
248# define tds_getsockname __getsockname
│ │ │ │ +
249# endif
│ │ │ │ +
250# if HAVE__XPG_RECVFROM
│ │ │ │ +
251# undef tds_recvfrom
│ │ │ │ +
252# define tds_recvfrom _xpg_recvfrom
│ │ │ │ +
253# elif HAVE___RECVFROM
│ │ │ │ +
254# undef tds_recvfrom
│ │ │ │ +
255# define tds_recvfrom __recvfrom
│ │ │ │ +
256# endif
│ │ │ │ +
257#endif
│ │ │ │ +
258
│ │ │ │ +
259#ifdef HAVE_STDINT_H
│ │ │ │ +
260#include <stdint.h>
│ │ │ │ +
261#endif
│ │ │ │ +
262
│ │ │ │ +
263#ifdef HAVE_INTTYPES_H
│ │ │ │ +
264#include <inttypes.h>
│ │ │ │ +
265#endif
│ │ │ │ +
266
│ │ │ │ +
267#ifndef PRId64
│ │ │ │ +
268#define PRId64 TDS_I64_PREFIX "d"
│ │ │ │ +
269#endif
│ │ │ │ +
270#ifndef PRIu64
│ │ │ │ +
271#define PRIu64 TDS_I64_PREFIX "u"
│ │ │ │ +
272#endif
│ │ │ │ +
273#ifndef PRIx64
│ │ │ │ +
274#define PRIx64 TDS_I64_PREFIX "x"
│ │ │ │ +
275#endif
│ │ │ │ +
276
│ │ │ │ +
277#ifndef UINT64_C
│ │ │ │ +
278# if SIZEOF_INT >= 8
│ │ │ │ +
279# define UINT64_C(c) c ## U
│ │ │ │ +
280# define INT64_C(c) c
│ │ │ │ +
281# elif SIZEOF_LONG >= 8
│ │ │ │ +
282# define UINT64_C(c) c ## UL
│ │ │ │ +
283# define INT64_C(c) c ## L
│ │ │ │ +
284# elif SIZEOF_LONG_LONG >= 8
│ │ │ │ +
285# define UINT64_C(c) c ## ULL
│ │ │ │ +
286# define INT64_C(c) c ## LL
│ │ │ │ +
287# elif SIZEOF___INT64 >= 8
│ │ │ │ +
288# define UINT64_C(c) c ## ui64
│ │ │ │ +
289# define INT64_C(c) c ## i64
│ │ │ │ +
290# else
│ │ │ │ +
291# error Unable to understand how to define 64 bit constants
│ │ │ │ +
292# endif
│ │ │ │ +
293#endif
│ │ │ │ +
294
│ │ │ │ +
295#include <freetds/sysdep_types.h>
│ │ │ │ +
296
│ │ │ │ +
297#endif /* _tdsguard_gbdINUKdHN7rAOavGyKkWw_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,306 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -popvis.h │ │ │ │ │ -1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ -2#pragma GCC visibility pop │ │ │ │ │ -3#endif │ │ │ │ │ +sysdep_private.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2010 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ +22#define _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ +23 │ │ │ │ │ +24#define TDS_ADDITIONAL_SPACE 16 │ │ │ │ │ +25 │ │ │ │ │ +26#ifdef MSG_NOSIGNAL │ │ │ │ │ +27# define TDS_NOSIGNAL MSG_NOSIGNAL │ │ │ │ │ +28#else │ │ │ │ │ +29# define TDS_NOSIGNAL 0L │ │ │ │ │ +30#endif │ │ │ │ │ +31 │ │ │ │ │ +32#ifdef __cplusplus │ │ │ │ │ +33#define TDS_EXTERN_C extern "C" │ │ │ │ │ +34#else │ │ │ │ │ +35#define TDS_EXTERN_C │ │ │ │ │ +36#endif │ │ │ │ │ +37 │ │ │ │ │ +38#ifdef __INCvxWorksh │ │ │ │ │ +39#include /* for FIONBIO */ │ │ │ │ │ +40#endif /* __INCvxWorksh */ │ │ │ │ │ +41 │ │ │ │ │ +42#if defined(DOS32X) │ │ │ │ │ +43#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL) │ │ │ │ │ +44#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL) │ │ │ │ │ +45#define CLOSESOCKET(a) closesocket((a)) │ │ │ │ │ +46#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c)) │ │ │ │ │ +47#define SOCKLEN_T int │ │ │ │ │ +48#define select select_s │ │ │ │ │ +49typedef int pid_t; │ │ │ │ │ +50#define strcasecmp stricmp │ │ │ │ │ +51#define strncasecmp strnicmp │ │ │ │ │ +52/* TODO this has nothing to do with ip ... */ │ │ │ │ │ +53#define getpid() _gethostid() │ │ │ │ │ +54#endif /* defined(DOS32X) */ │ │ │ │ │ +55 │ │ │ │ │ +56#ifdef _WIN32 │ │ │ │ │ +57#include │ │ │ │ │ +58#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL) │ │ │ │ │ +59#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL) │ │ │ │ │ +60#define CLOSESOCKET(a) closesocket((a)) │ │ │ │ │ +61#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c)) │ │ │ │ │ +62#define SOCKLEN_T int │ │ │ │ │ +63static inline int │ │ │ │ │ +64tds_socket_init(void) │ │ │ │ │ +65{ │ │ │ │ │ +66 WSADATA wsadata; │ │ │ │ │ +67 │ │ │ │ │ +68 return WSAStartup(MAKEWORD(2, 2), &wsadata); │ │ │ │ │ +69} │ │ │ │ │ +70 │ │ │ │ │ +71static inline void │ │ │ │ │ +72tds_socket_done(void) │ │ │ │ │ +73{ │ │ │ │ │ +74 WSACleanup(); │ │ │ │ │ +75} │ │ │ │ │ +76#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */ │ │ │ │ │ +77 │ │ │ │ │ +78#define TDSSOCK_EINTR WSAEINTR │ │ │ │ │ +79#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK │ │ │ │ │ +80#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT │ │ │ │ │ +81#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK) │ │ │ │ │ +82#define TDSSOCK_ECONNRESET WSAECONNRESET │ │ │ │ │ +83#define sock_errno WSAGetLastError() │ │ │ │ │ +84#define set_sock_errno(err) WSASetLastError(err) │ │ │ │ │ +85#define sock_strerror(n) tds_prwsaerror(n) │ │ │ │ │ +86#define sock_strerror_free(s) tds_prwsaerror_free(s) │ │ │ │ │ +87#ifndef __MINGW32__ │ │ │ │ │ +88typedef DWORD pid_t; │ │ │ │ │ +89#endif │ │ │ │ │ +90#undef strcasecmp │ │ │ │ │ +91#define strcasecmp stricmp │ │ │ │ │ +92#undef strncasecmp │ │ │ │ │ +93#define strncasecmp strnicmp │ │ │ │ │ +94#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF) │ │ │ │ │ +95#define snprintf _snprintf │ │ │ │ │ +96#endif │ │ │ │ │ +97 │ │ │ │ │ +98#ifndef WIN32 │ │ │ │ │ +99#define WIN32 1 │ │ │ │ │ +100#endif │ │ │ │ │ +101 │ │ │ │ │ +102#if defined(_WIN64) && !defined(WIN64) │ │ │ │ │ +103#define WIN64 1 │ │ │ │ │ +104#endif │ │ │ │ │ +105 │ │ │ │ │ +106/* use macros to use new style names */ │ │ │ │ │ +107#if defined(__MSVCRT__) || defined(_MSC_VER) │ │ │ │ │ +108/* Use API as always present and not causing problems */ │ │ │ │ │ +109#undef getpid │ │ │ │ │ +110#define getpid() GetCurrentProcessId() │ │ │ │ │ +111#define strdup(s) _strdup(s) │ │ │ │ │ +112#define unlink(f) _unlink(f) │ │ │ │ │ +113#define putenv(s) _putenv(s) │ │ │ │ │ +114#undef fileno │ │ │ │ │ +115#define fileno(f) _fileno(f) │ │ │ │ │ +116#undef close │ │ │ │ │ +117#define close(f) _close(f) │ │ │ │ │ +118#undef open │ │ │ │ │ +119#define open(fn,...) _open(fn,__VA_ARGS__) │ │ │ │ │ +120#undef dup2 │ │ │ │ │ +121#define dup2(o,n) _dup2(o,n) │ │ │ │ │ +122#define stricmp(s1,s2) _stricmp(s1,s2) │ │ │ │ │ +123#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n) │ │ │ │ │ +124#endif │ │ │ │ │ +125 │ │ │ │ │ +126#endif /* defined(_WIN32) */ │ │ │ │ │ +127 │ │ │ │ │ +128#ifndef sock_errno │ │ │ │ │ +129#define sock_errno errno │ │ │ │ │ +130#endif │ │ │ │ │ +131 │ │ │ │ │ +132#ifndef set_sock_errno │ │ │ │ │ +133#define set_sock_errno(err) do { errno = (err); } while(0) │ │ │ │ │ +134#endif │ │ │ │ │ +135 │ │ │ │ │ +136#ifndef sock_strerror │ │ │ │ │ +137#define sock_strerror(n) strerror(n) │ │ │ │ │ +138#define sock_strerror_free(s) do {} while(0) │ │ │ │ │ +139#endif │ │ │ │ │ +140 │ │ │ │ │ +141#ifndef TDSSOCK_EINTR │ │ │ │ │ +142#define TDSSOCK_EINTR EINTR │ │ │ │ │ +143#endif │ │ │ │ │ +144 │ │ │ │ │ +145#ifndef TDSSOCK_EINPROGRESS │ │ │ │ │ +146#define TDSSOCK_EINPROGRESS EINPROGRESS │ │ │ │ │ +147#endif │ │ │ │ │ +148 │ │ │ │ │ +149#ifndef TDSSOCK_ETIMEDOUT │ │ │ │ │ +150#define TDSSOCK_ETIMEDOUT ETIMEDOUT │ │ │ │ │ +151#endif │ │ │ │ │ +152 │ │ │ │ │ +153#ifndef TDSSOCK_WOULDBLOCK │ │ │ │ │ +154# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK │ │ │ │ │ +155# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK) │ │ │ │ │ +156# else │ │ │ │ │ +157# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN) │ │ │ │ │ +158# endif │ │ │ │ │ +159#endif │ │ │ │ │ +160 │ │ │ │ │ +161#ifndef TDSSOCK_ECONNRESET │ │ │ │ │ +162#define TDSSOCK_ECONNRESET ECONNRESET │ │ │ │ │ +163#endif │ │ │ │ │ +164 │ │ │ │ │ +165#ifndef _WIN32 │ │ │ │ │ +166static inline int │ │ │ │ │ +167tds_socket_init(void) │ │ │ │ │ +168{ │ │ │ │ │ +169 return 0; │ │ │ │ │ +170} │ │ │ │ │ +171 │ │ │ │ │ +172static inline void │ │ │ │ │ +173tds_socket_done(void) │ │ │ │ │ +174{ │ │ │ │ │ +175} │ │ │ │ │ +176#endif │ │ │ │ │ +177 │ │ │ │ │ +178#ifndef READSOCKET │ │ │ │ │ +179# ifdef MSG_NOSIGNAL │ │ │ │ │ +180# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL) │ │ │ │ │ +181# else │ │ │ │ │ +182# define READSOCKET(s,b,l) read((s), (b), (l)) │ │ │ │ │ +183# endif │ │ │ │ │ +184#endif /* !READSOCKET */ │ │ │ │ │ +185 │ │ │ │ │ +186#ifndef WRITESOCKET │ │ │ │ │ +187# ifdef MSG_NOSIGNAL │ │ │ │ │ +188# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL) │ │ │ │ │ +189# else │ │ │ │ │ +190# define WRITESOCKET(s,b,l) write((s), (b), (l)) │ │ │ │ │ +191# endif │ │ │ │ │ +192#endif /* !WRITESOCKET */ │ │ │ │ │ +193 │ │ │ │ │ +194#ifndef CLOSESOCKET │ │ │ │ │ +195#define CLOSESOCKET(s) close((s)) │ │ │ │ │ +196#endif /* !CLOSESOCKET */ │ │ │ │ │ +197 │ │ │ │ │ +198#ifndef IOCTLSOCKET │ │ │ │ │ +199#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l)) │ │ │ │ │ +200#endif /* !IOCTLSOCKET */ │ │ │ │ │ +201 │ │ │ │ │ +202#ifndef SOCKLEN_T │ │ │ │ │ +203# define SOCKLEN_T socklen_t │ │ │ │ │ +204#endif │ │ │ │ │ +205 │ │ │ │ │ +206#ifndef _WIN32 │ │ │ │ │ +207typedef int TDS_SYS_SOCKET; │ │ │ │ │ +208#define INVALID_SOCKET -1 │ │ │ │ │ +209#define TDS_IS_SOCKET_INVALID(s) ((s) < 0) │ │ │ │ │ +210#else │ │ │ │ │ +211typedef SOCKET TDS_SYS_SOCKET; │ │ │ │ │ +212#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET) │ │ │ │ │ +213#endif │ │ │ │ │ +214 │ │ │ │ │ +215#define tds_accept accept │ │ │ │ │ +216#define tds_getpeername getpeername │ │ │ │ │ +217#define tds_getsockopt getsockopt │ │ │ │ │ +218#define tds_getsockname getsockname │ │ │ │ │ +219#define tds_recvfrom recvfrom │ │ │ │ │ +220 │ │ │ │ │ +221#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4 │ │ │ │ │ +222# if HAVE__XPG_ACCEPT │ │ │ │ │ +223# undef tds_accept │ │ │ │ │ +224# define tds_accept _xpg_accept │ │ │ │ │ +225# elif HAVE___ACCEPT │ │ │ │ │ +226# undef tds_accept │ │ │ │ │ +227# define tds_accept __accept │ │ │ │ │ +228# endif │ │ │ │ │ +229# if HAVE__XPG_GETPEERNAME │ │ │ │ │ +230# undef tds_getpeername │ │ │ │ │ +231# define tds_getpeername _xpg_getpeername │ │ │ │ │ +232# elif HAVE___GETPEERNAME │ │ │ │ │ +233# undef tds_getpeername │ │ │ │ │ +234# define tds_getpeername __getpeername │ │ │ │ │ +235# endif │ │ │ │ │ +236# if HAVE__XPG_GETSOCKOPT │ │ │ │ │ +237# undef tds_getsockopt │ │ │ │ │ +238# define tds_getsockopt _xpg_getsockopt │ │ │ │ │ +239# elif HAVE___GETSOCKOPT │ │ │ │ │ +240# undef tds_getsockopt │ │ │ │ │ +241# define tds_getsockopt __getsockopt │ │ │ │ │ +242# endif │ │ │ │ │ +243# if HAVE__XPG_GETSOCKNAME │ │ │ │ │ +244# undef tds_getsockname │ │ │ │ │ +245# define tds_getsockname _xpg_getsockname │ │ │ │ │ +246# elif HAVE___GETSOCKNAME │ │ │ │ │ +247# undef tds_getsockname │ │ │ │ │ +248# define tds_getsockname __getsockname │ │ │ │ │ +249# endif │ │ │ │ │ +250# if HAVE__XPG_RECVFROM │ │ │ │ │ +251# undef tds_recvfrom │ │ │ │ │ +252# define tds_recvfrom _xpg_recvfrom │ │ │ │ │ +253# elif HAVE___RECVFROM │ │ │ │ │ +254# undef tds_recvfrom │ │ │ │ │ +255# define tds_recvfrom __recvfrom │ │ │ │ │ +256# endif │ │ │ │ │ +257#endif │ │ │ │ │ +258 │ │ │ │ │ +259#ifdef HAVE_STDINT_H │ │ │ │ │ +260#include │ │ │ │ │ +261#endif │ │ │ │ │ +262 │ │ │ │ │ +263#ifdef HAVE_INTTYPES_H │ │ │ │ │ +264#include │ │ │ │ │ +265#endif │ │ │ │ │ +266 │ │ │ │ │ +267#ifndef PRId64 │ │ │ │ │ +268#define PRId64 TDS_I64_PREFIX "d" │ │ │ │ │ +269#endif │ │ │ │ │ +270#ifndef PRIu64 │ │ │ │ │ +271#define PRIu64 TDS_I64_PREFIX "u" │ │ │ │ │ +272#endif │ │ │ │ │ +273#ifndef PRIx64 │ │ │ │ │ +274#define PRIx64 TDS_I64_PREFIX "x" │ │ │ │ │ +275#endif │ │ │ │ │ +276 │ │ │ │ │ +277#ifndef UINT64_C │ │ │ │ │ +278# if SIZEOF_INT >= 8 │ │ │ │ │ +279# define UINT64_C(c) c ## U │ │ │ │ │ +280# define INT64_C(c) c │ │ │ │ │ +281# elif SIZEOF_LONG >= 8 │ │ │ │ │ +282# define UINT64_C(c) c ## UL │ │ │ │ │ +283# define INT64_C(c) c ## L │ │ │ │ │ +284# elif SIZEOF_LONG_LONG >= 8 │ │ │ │ │ +285# define UINT64_C(c) c ## ULL │ │ │ │ │ +286# define INT64_C(c) c ## LL │ │ │ │ │ +287# elif SIZEOF___INT64 >= 8 │ │ │ │ │ +288# define UINT64_C(c) c ## ui64 │ │ │ │ │ +289# define INT64_C(c) c ## i64 │ │ │ │ │ +290# else │ │ │ │ │ +291# error Unable to understand how to define 64 bit constants │ │ │ │ │ +292# endif │ │ │ │ │ +293#endif │ │ │ │ │ +294 │ │ │ │ │ +295#include │ │ │ │ │ +296 │ │ │ │ │ +297#endif /* _tdsguard_gbdINUKdHN7rAOavGyKkWw_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00413_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/sysdep_private.h Source File │ │ │ │ +FreeTDS API: include/freetds/odbc.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,20 +74,20 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
sysdep_private.h
│ │ │ │ +
odbc.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2010 Frediano Ziglio
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2004-2010 Frediano Ziglio
│ │ │ │
4 *
│ │ │ │
5 * This library is free software; you can redistribute it and/or
│ │ │ │
6 * modify it under the terms of the GNU Library General Public
│ │ │ │
7 * License as published by the Free Software Foundation; either
│ │ │ │
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │
9 *
│ │ │ │
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -97,291 +97,819 @@ │ │ │ │
14 *
│ │ │ │
15 * You should have received a copy of the GNU Library General Public
│ │ │ │
16 * License along with this library; if not, write to the
│ │ │ │
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
18 * Boston, MA 02111-1307, USA.
│ │ │ │
19 */
│ │ │ │
20
│ │ │ │ -
21#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ -
22#define _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ +
21#ifndef _tdsguard_gQHaPEvp2dAAa45TAutROb_
│ │ │ │ +
22#define _tdsguard_gQHaPEvp2dAAa45TAutROb_
│ │ │ │
23
│ │ │ │ -
24#define TDS_ADDITIONAL_SPACE 16
│ │ │ │ -
25
│ │ │ │ -
26#ifdef MSG_NOSIGNAL
│ │ │ │ -
27# define TDS_NOSIGNAL MSG_NOSIGNAL
│ │ │ │ -
28#else
│ │ │ │ -
29# define TDS_NOSIGNAL 0L
│ │ │ │ -
30#endif
│ │ │ │ -
31
│ │ │ │ -
32#ifdef __cplusplus
│ │ │ │ -
33#define TDS_EXTERN_C extern "C"
│ │ │ │ -
34#else
│ │ │ │ -
35#define TDS_EXTERN_C
│ │ │ │ -
36#endif
│ │ │ │ -
37
│ │ │ │ -
38#ifdef __INCvxWorksh
│ │ │ │ -
39#include <ioLib.h> /* for FIONBIO */
│ │ │ │ -
40#endif /* __INCvxWorksh */
│ │ │ │ -
41
│ │ │ │ -
42#if defined(DOS32X)
│ │ │ │ -
43#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
│ │ │ │ -
44#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
│ │ │ │ -
45#define CLOSESOCKET(a) closesocket((a))
│ │ │ │ -
46#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
│ │ │ │ -
47#define SOCKLEN_T int
│ │ │ │ -
48#define select select_s
│ │ │ │ -
49typedef int pid_t;
│ │ │ │ -
50#define strcasecmp stricmp
│ │ │ │ -
51#define strncasecmp strnicmp
│ │ │ │ -
52/* TODO this has nothing to do with ip ... */
│ │ │ │ -
53#define getpid() _gethostid()
│ │ │ │ -
54#endif /* defined(DOS32X) */
│ │ │ │ +
24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
│ │ │ │ +
25#include <freetds/tds.h>
│ │ │ │ +
26#include <freetds/thread.h>
│ │ │ │ +
27#include <freetds/data.h>
│ │ │ │ +
28
│ │ │ │ +
29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)
│ │ │ │ +
30#include <sql.h>
│ │ │ │ +
31#include <sqlext.h>
│ │ │ │ +
32#if defined(UNIXODBC) || defined(_WIN32)
│ │ │ │ +
33#include <odbcinst.h>
│ │ │ │ +
34#endif
│ │ │ │ +
35#else /* IODBC */
│ │ │ │ +
36#include <isql.h>
│ │ │ │ +
37#include <isqlext.h>
│ │ │ │ +
38#ifdef HAVE_IODBCINST_H
│ │ │ │ +
39#include <iodbcinst.h>
│ │ │ │ +
40#endif /* HAVE_IODBCINST_H */
│ │ │ │ +
41#endif
│ │ │ │ +
42
│ │ │ │ +
43#ifdef HAVE_WCHAR_H
│ │ │ │ +
44#include <wchar.h>
│ │ │ │ +
45#endif
│ │ │ │ +
46
│ │ │ │ +
47#ifndef HAVE_SQLLEN
│ │ │ │ +
48#ifndef SQLULEN
│ │ │ │ +
49#define SQLULEN SQLUINTEGER
│ │ │ │ +
50#endif
│ │ │ │ +
51#ifndef SQLLEN
│ │ │ │ +
52#define SQLLEN SQLINTEGER
│ │ │ │ +
53#endif
│ │ │ │ +
54#endif
│ │ │ │
55
│ │ │ │ -
56#ifdef _WIN32
│ │ │ │ -
57#include <freetds/windows.h>
│ │ │ │ -
58#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
│ │ │ │ -
59#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
│ │ │ │ -
60#define CLOSESOCKET(a) closesocket((a))
│ │ │ │ -
61#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
│ │ │ │ -
62#define SOCKLEN_T int
│ │ │ │ -
63static inline int
│ │ │ │ -
64tds_socket_init(void)
│ │ │ │ -
65{
│ │ │ │ -
66 WSADATA wsadata;
│ │ │ │ +
56#ifndef HAVE_SQLSETPOSIROW
│ │ │ │ +
57#define SQLSETPOSIROW SQLUSMALLINT
│ │ │ │ +
58#endif
│ │ │ │ +
59
│ │ │ │ +
60#ifndef HAVE_SQLROWOFFSET
│ │ │ │ +
61#define SQLROWOFFSET SQLLEN
│ │ │ │ +
62#endif
│ │ │ │ +
63
│ │ │ │ +
64#ifndef HAVE_SQLROWSETSIZE
│ │ │ │ +
65#define SQLROWSETSIZE SQLULEN
│ │ │ │ +
66#endif
│ │ │ │
67
│ │ │ │ -
68 return WSAStartup(MAKEWORD(2, 2), &wsadata);
│ │ │ │ -
69}
│ │ │ │ -
70
│ │ │ │ -
71static inline void
│ │ │ │ -
72tds_socket_done(void)
│ │ │ │ -
73{
│ │ │ │ -
74 WSACleanup();
│ │ │ │ -
75}
│ │ │ │ -
76#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */
│ │ │ │ -
77
│ │ │ │ -
78#define TDSSOCK_EINTR WSAEINTR
│ │ │ │ -
79#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
│ │ │ │ -
80#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
│ │ │ │ -
81#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
│ │ │ │ -
82#define TDSSOCK_ECONNRESET WSAECONNRESET
│ │ │ │ -
83#define sock_errno WSAGetLastError()
│ │ │ │ -
84#define set_sock_errno(err) WSASetLastError(err)
│ │ │ │ -
85#define sock_strerror(n) tds_prwsaerror(n)
│ │ │ │ -
86#define sock_strerror_free(s) tds_prwsaerror_free(s)
│ │ │ │ -
87#ifndef __MINGW32__
│ │ │ │ -
88typedef DWORD pid_t;
│ │ │ │ +
68#ifdef __cplusplus
│ │ │ │ +
69extern "C"
│ │ │ │ +
70{
│ │ │ │ +
71#if 0
│ │ │ │ +
72}
│ │ │ │ +
73#endif
│ │ │ │ +
74#endif
│ │ │ │ +
75
│ │ │ │ +
76#include <freetds/pushvis.h>
│ │ │ │ +
77#ifdef __clang__
│ │ │ │ +
78#define ODBC_API SQL_API __attribute__((visibility("default")))
│ │ │ │ +
79#elif defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ +
80#define ODBC_API SQL_API __attribute__((externally_visible))
│ │ │ │ +
81#else
│ │ │ │ +
82#define ODBC_API SQL_API
│ │ │ │ +
83#endif
│ │ │ │ +
84
│ │ │ │ +
85#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)
│ │ │ │ +
86# define ODBC_PUBLIC __attribute__((dllexport))
│ │ │ │ +
87#else
│ │ │ │ +
88# define ODBC_PUBLIC
│ │ │ │
89#endif
│ │ │ │ -
90#undef strcasecmp
│ │ │ │ -
91#define strcasecmp stricmp
│ │ │ │ -
92#undef strncasecmp
│ │ │ │ -
93#define strncasecmp strnicmp
│ │ │ │ -
94#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
│ │ │ │ -
95#define snprintf _snprintf
│ │ │ │ -
96#endif
│ │ │ │ -
97
│ │ │ │ -
98#ifndef WIN32
│ │ │ │ -
99#define WIN32 1
│ │ │ │ -
100#endif
│ │ │ │ -
101
│ │ │ │ -
102#if defined(_WIN64) && !defined(WIN64)
│ │ │ │ -
103#define WIN64 1
│ │ │ │ -
104#endif
│ │ │ │ -
105
│ │ │ │ -
106/* use macros to use new style names */
│ │ │ │ -
107#if defined(__MSVCRT__) || defined(_MSC_VER)
│ │ │ │ -
108/* Use API as always present and not causing problems */
│ │ │ │ -
109#undef getpid
│ │ │ │ -
110#define getpid() GetCurrentProcessId()
│ │ │ │ -
111#define strdup(s) _strdup(s)
│ │ │ │ -
112#define unlink(f) _unlink(f)
│ │ │ │ -
113#define putenv(s) _putenv(s)
│ │ │ │ -
114#undef fileno
│ │ │ │ -
115#define fileno(f) _fileno(f)
│ │ │ │ -
116#undef close
│ │ │ │ -
117#define close(f) _close(f)
│ │ │ │ -
118#undef open
│ │ │ │ -
119#define open(fn,...) _open(fn,__VA_ARGS__)
│ │ │ │ -
120#undef dup2
│ │ │ │ -
121#define dup2(o,n) _dup2(o,n)
│ │ │ │ -
122#define stricmp(s1,s2) _stricmp(s1,s2)
│ │ │ │ -
123#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
│ │ │ │ -
124#endif
│ │ │ │ -
125
│ │ │ │ -
126#endif /* defined(_WIN32) */
│ │ │ │ -
127
│ │ │ │ -
128#ifndef sock_errno
│ │ │ │ -
129#define sock_errno errno
│ │ │ │ -
130#endif
│ │ │ │ -
131
│ │ │ │ -
132#ifndef set_sock_errno
│ │ │ │ -
133#define set_sock_errno(err) do { errno = (err); } while(0)
│ │ │ │ -
134#endif
│ │ │ │ -
135
│ │ │ │ -
136#ifndef sock_strerror
│ │ │ │ -
137#define sock_strerror(n) strerror(n)
│ │ │ │ -
138#define sock_strerror_free(s) do {} while(0)
│ │ │ │ -
139#endif
│ │ │ │ -
140
│ │ │ │ -
141#ifndef TDSSOCK_EINTR
│ │ │ │ -
142#define TDSSOCK_EINTR EINTR
│ │ │ │ -
143#endif
│ │ │ │ -
144
│ │ │ │ -
145#ifndef TDSSOCK_EINPROGRESS
│ │ │ │ -
146#define TDSSOCK_EINPROGRESS EINPROGRESS
│ │ │ │ -
147#endif
│ │ │ │ +
90
│ │ │ │ +
91#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )
│ │ │ │ +
92#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )
│ │ │ │ +
93#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )
│ │ │ │ +
94
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
96{
│ │ │ │ +
97 const char *msg;
│ │ │ │ +
98 char state2[6];
│ │ │ │ +
99 char state3[6];
│ │ │ │ +
100 TDS_UINT native;
│ │ │ │ +
101 char *server;
│ │ │ │ +
102 int linenum;
│ │ │ │ +
103 int msgstate;
│ │ │ │ +
104 int row;
│ │ │ │ +
105 bool msg_is_static;
│ │ │ │ +
106};
│ │ │ │ +
│ │ │ │ +
107
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
109{
│ │ │ │ +
110 struct _sql_error *errs;
│ │ │ │ +
111 int num_errors;
│ │ │ │ +
112 SQLRETURN lastrc;
│ │ │ │ +
113 char ranked;
│ │ │ │ +
114};
│ │ │ │ +
│ │ │ │ +
115
│ │ │ │ +
116typedef struct _sql_errors TDS_ERRS;
│ │ │ │ +
117
│ │ │ │ +
118#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
119void odbc_check_struct_extra(void *p);
│ │ │ │ +
120#else
│ │ │ │ +
121static inline void odbc_check_struct_extra(void *p TDS_UNUSED) {}
│ │ │ │ +
122#endif
│ │ │ │ +
123
│ │ │ │ +
124#define ODBC_RETURN(handle, rc) \
│ │ │ │ +
125 do { odbc_check_struct_extra(handle); \
│ │ │ │ +
126 return handle->errs.lastrc = (rc); } while(0)
│ │ │ │ +
127#define ODBC_RETURN_(handle) \
│ │ │ │ +
128 do { odbc_check_struct_extra(handle); \
│ │ │ │ +
129 return handle->errs.lastrc; } while(0)
│ │ │ │ +
130
│ │ │ │ +
131#define ODBC_EXIT(handle, rc) \
│ │ │ │ +
132 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \
│ │ │ │ +
133 odbc_check_struct_extra(handle); \
│ │ │ │ +
134 tds_mutex_unlock(&handle->mtx); \
│ │ │ │ +
135 return _odbc_rc; } while(0)
│ │ │ │ +
136#define ODBC_EXIT_(handle) \
│ │ │ │ +
137 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \
│ │ │ │ +
138 odbc_check_struct_extra(handle); \
│ │ │ │ +
139 tds_mutex_unlock(&handle->mtx); \
│ │ │ │ +
140 return _odbc_rc; } while(0)
│ │ │ │ +
141
│ │ │ │ +
142
│ │ │ │ +
144void odbc_errs_reset(struct _sql_errors *errs);
│ │ │ │ +
145
│ │ │ │ +
147void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const char *msg);
│ │ │ │
148
│ │ │ │ -
149#ifndef TDSSOCK_ETIMEDOUT
│ │ │ │ -
150#define TDSSOCK_ETIMEDOUT ETIMEDOUT
│ │ │ │ -
151#endif
│ │ │ │ +
150void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const char *sqlstate, const char *msg, int linenum,
│ │ │ │ +
151 int msgstate, const char *server, int row);
│ │ │ │
152
│ │ │ │ -
153#ifndef TDSSOCK_WOULDBLOCK
│ │ │ │ -
154# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
│ │ │ │ -
155# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
│ │ │ │ -
156# else
│ │ │ │ -
157# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
│ │ │ │ -
158# endif
│ │ │ │ -
159#endif
│ │ │ │ -
160
│ │ │ │ -
161#ifndef TDSSOCK_ECONNRESET
│ │ │ │ -
162#define TDSSOCK_ECONNRESET ECONNRESET
│ │ │ │ -
163#endif
│ │ │ │ -
164
│ │ │ │ -
165#ifndef _WIN32
│ │ │ │ -
166static inline int
│ │ │ │ -
167tds_socket_init(void)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
155{
│ │ │ │ +
156 SQLSMALLINT sql_desc_alloc_type;
│ │ │ │ +
157 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en-us;298678 */
│ │ │ │ +
158 SQLSMALLINT sql_desc_count;
│ │ │ │ +
159 SQLINTEGER sql_desc_bind_type;
│ │ │ │ +
160 SQLULEN sql_desc_array_size;
│ │ │ │ +
161 SQLUSMALLINT *sql_desc_array_status_ptr;
│ │ │ │ +
162 SQLULEN *sql_desc_rows_processed_ptr;
│ │ │ │ +
163 SQLLEN *sql_desc_bind_offset_ptr;
│ │ │ │ +
164};
│ │ │ │ +
│ │ │ │ +
165
│ │ │ │ +
│ │ │ │ + │ │ │ │
168{
│ │ │ │ -
169 return 0;
│ │ │ │ -
170}
│ │ │ │ -
171
│ │ │ │ -
172static inline void
│ │ │ │ -
173tds_socket_done(void)
│ │ │ │ -
174{
│ │ │ │ -
175}
│ │ │ │ -
176#endif
│ │ │ │ -
177
│ │ │ │ -
178#ifndef READSOCKET
│ │ │ │ -
179# ifdef MSG_NOSIGNAL
│ │ │ │ -
180# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
│ │ │ │ -
181# else
│ │ │ │ -
182# define READSOCKET(s,b,l) read((s), (b), (l))
│ │ │ │ -
183# endif
│ │ │ │ -
184#endif /* !READSOCKET */
│ │ │ │ -
185
│ │ │ │ -
186#ifndef WRITESOCKET
│ │ │ │ -
187# ifdef MSG_NOSIGNAL
│ │ │ │ -
188# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
│ │ │ │ -
189# else
│ │ │ │ -
190# define WRITESOCKET(s,b,l) write((s), (b), (l))
│ │ │ │ -
191# endif
│ │ │ │ -
192#endif /* !WRITESOCKET */
│ │ │ │ -
193
│ │ │ │ -
194#ifndef CLOSESOCKET
│ │ │ │ -
195#define CLOSESOCKET(s) close((s))
│ │ │ │ -
196#endif /* !CLOSESOCKET */
│ │ │ │ -
197
│ │ │ │ -
198#ifndef IOCTLSOCKET
│ │ │ │ -
199#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
│ │ │ │ -
200#endif /* !IOCTLSOCKET */
│ │ │ │ -
201
│ │ │ │ -
202#ifndef SOCKLEN_T
│ │ │ │ -
203# define SOCKLEN_T socklen_t
│ │ │ │ -
204#endif
│ │ │ │ -
205
│ │ │ │ -
206#ifndef _WIN32
│ │ │ │ -
207typedef int TDS_SYS_SOCKET;
│ │ │ │ -
208#define INVALID_SOCKET -1
│ │ │ │ -
209#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
│ │ │ │ -
210#else
│ │ │ │ -
211typedef SOCKET TDS_SYS_SOCKET;
│ │ │ │ -
212#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
│ │ │ │ -
213#endif
│ │ │ │ -
214
│ │ │ │ -
215#define tds_accept accept
│ │ │ │ -
216#define tds_getpeername getpeername
│ │ │ │ -
217#define tds_getsockopt getsockopt
│ │ │ │ -
218#define tds_getsockname getsockname
│ │ │ │ -
219#define tds_recvfrom recvfrom
│ │ │ │ -
220
│ │ │ │ -
221#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
│ │ │ │ -
222# if HAVE__XPG_ACCEPT
│ │ │ │ -
223# undef tds_accept
│ │ │ │ -
224# define tds_accept _xpg_accept
│ │ │ │ -
225# elif HAVE___ACCEPT
│ │ │ │ -
226# undef tds_accept
│ │ │ │ -
227# define tds_accept __accept
│ │ │ │ -
228# endif
│ │ │ │ -
229# if HAVE__XPG_GETPEERNAME
│ │ │ │ -
230# undef tds_getpeername
│ │ │ │ -
231# define tds_getpeername _xpg_getpeername
│ │ │ │ -
232# elif HAVE___GETPEERNAME
│ │ │ │ -
233# undef tds_getpeername
│ │ │ │ -
234# define tds_getpeername __getpeername
│ │ │ │ -
235# endif
│ │ │ │ -
236# if HAVE__XPG_GETSOCKOPT
│ │ │ │ -
237# undef tds_getsockopt
│ │ │ │ -
238# define tds_getsockopt _xpg_getsockopt
│ │ │ │ -
239# elif HAVE___GETSOCKOPT
│ │ │ │ -
240# undef tds_getsockopt
│ │ │ │ -
241# define tds_getsockopt __getsockopt
│ │ │ │ -
242# endif
│ │ │ │ -
243# if HAVE__XPG_GETSOCKNAME
│ │ │ │ -
244# undef tds_getsockname
│ │ │ │ -
245# define tds_getsockname _xpg_getsockname
│ │ │ │ -
246# elif HAVE___GETSOCKNAME
│ │ │ │ -
247# undef tds_getsockname
│ │ │ │ -
248# define tds_getsockname __getsockname
│ │ │ │ -
249# endif
│ │ │ │ -
250# if HAVE__XPG_RECVFROM
│ │ │ │ -
251# undef tds_recvfrom
│ │ │ │ -
252# define tds_recvfrom _xpg_recvfrom
│ │ │ │ -
253# elif HAVE___RECVFROM
│ │ │ │ -
254# undef tds_recvfrom
│ │ │ │ -
255# define tds_recvfrom __recvfrom
│ │ │ │ -
256# endif
│ │ │ │ -
257#endif
│ │ │ │ -
258
│ │ │ │ -
259#ifdef HAVE_STDINT_H
│ │ │ │ -
260#include <stdint.h>
│ │ │ │ -
261#endif
│ │ │ │ -
262
│ │ │ │ -
263#ifdef HAVE_INTTYPES_H
│ │ │ │ -
264#include <inttypes.h>
│ │ │ │ -
265#endif
│ │ │ │ -
266
│ │ │ │ -
267#ifndef PRId64
│ │ │ │ -
268#define PRId64 TDS_I64_PREFIX "d"
│ │ │ │ -
269#endif
│ │ │ │ -
270#ifndef PRIu64
│ │ │ │ -
271#define PRIu64 TDS_I64_PREFIX "u"
│ │ │ │ -
272#endif
│ │ │ │ -
273#ifndef PRIx64
│ │ │ │ -
274#define PRIx64 TDS_I64_PREFIX "x"
│ │ │ │ -
275#endif
│ │ │ │ -
276
│ │ │ │ -
277#ifndef UINT64_C
│ │ │ │ -
278# if SIZEOF_INT >= 8
│ │ │ │ -
279# define UINT64_C(c) c ## U
│ │ │ │ -
280# define INT64_C(c) c
│ │ │ │ -
281# elif SIZEOF_LONG >= 8
│ │ │ │ -
282# define UINT64_C(c) c ## UL
│ │ │ │ -
283# define INT64_C(c) c ## L
│ │ │ │ -
284# elif SIZEOF_LONG_LONG >= 8
│ │ │ │ -
285# define UINT64_C(c) c ## ULL
│ │ │ │ -
286# define INT64_C(c) c ## LL
│ │ │ │ -
287# elif SIZEOF___INT64 >= 8
│ │ │ │ -
288# define UINT64_C(c) c ## ui64
│ │ │ │ -
289# define INT64_C(c) c ## i64
│ │ │ │ -
290# else
│ │ │ │ -
291# error Unable to understand how to define 64 bit constants
│ │ │ │ -
292# endif
│ │ │ │ -
293#endif
│ │ │ │ -
294
│ │ │ │ -
295#include <freetds/sysdep_types.h>
│ │ │ │ -
296
│ │ │ │ -
297#endif /* _tdsguard_gbdINUKdHN7rAOavGyKkWw_ */
│ │ │ │ +
169 DSTR sql_desc_base_column_name;
│ │ │ │ +
170 DSTR sql_desc_base_table_name;
│ │ │ │ +
171 SQLUINTEGER sql_desc_auto_unique_value;
│ │ │ │ +
172 SQLINTEGER sql_desc_case_sensitive;
│ │ │ │ +
173 DSTR sql_desc_catalog_name;
│ │ │ │ +
174 SQLPOINTER sql_desc_data_ptr;
│ │ │ │ +
175 SQLSMALLINT sql_desc_concise_type;
│ │ │ │ +
176 SQLSMALLINT sql_desc_datetime_interval_code;
│ │ │ │ +
177 SQLINTEGER sql_desc_datetime_interval_precision;
│ │ │ │ +
178 SQLLEN sql_desc_display_size;
│ │ │ │ +
179 SQLLEN *sql_desc_indicator_ptr;
│ │ │ │ +
180 DSTR sql_desc_label;
│ │ │ │ +
181 SQLULEN sql_desc_length;
│ │ │ │ +
182 /* this point to a constant buffer, do not free or modify */
│ │ │ │ +
183 const char *sql_desc_literal_prefix;
│ │ │ │ +
184 /* this point to a constant buffer, do not free or modify */
│ │ │ │ +
185 const char *sql_desc_literal_suffix;
│ │ │ │ +
186 DSTR sql_desc_local_type_name;
│ │ │ │ +
187 DSTR sql_desc_name;
│ │ │ │ +
188 SQLSMALLINT sql_desc_fixed_prec_scale;
│ │ │ │ +
189 SQLSMALLINT sql_desc_nullable;
│ │ │ │ +
190 SQLINTEGER sql_desc_num_prec_radix;
│ │ │ │ +
191 SQLLEN sql_desc_octet_length;
│ │ │ │ +
192 SQLLEN *sql_desc_octet_length_ptr;
│ │ │ │ +
193 SQLSMALLINT sql_desc_parameter_type;
│ │ │ │ +
194 SQLSMALLINT sql_desc_precision;
│ │ │ │ +
195 SQLSMALLINT sql_desc_rowver;
│ │ │ │ +
196 SQLSMALLINT sql_desc_scale;
│ │ │ │ +
197 DSTR sql_desc_schema_name;
│ │ │ │ +
198 DSTR sql_desc_table_name;
│ │ │ │ +
199 SQLSMALLINT sql_desc_searchable;
│ │ │ │ +
200 SQLSMALLINT sql_desc_type;
│ │ │ │ +
201 /* this point to a constant buffer, do not free or modify */
│ │ │ │ +
202 const char *sql_desc_type_name;
│ │ │ │ +
203 SQLSMALLINT sql_desc_unnamed;
│ │ │ │ +
204 SQLSMALLINT sql_desc_unsigned;
│ │ │ │ +
205 SQLSMALLINT sql_desc_updatable;
│ │ │ │ +
206};
│ │ │ │ +
│ │ │ │ +
207
│ │ │ │ +
│ │ │ │ +
208struct _hdesc
│ │ │ │ +
209{
│ │ │ │ +
210 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ +
211 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ +
212 tds_mutex mtx;
│ │ │ │ +
213 int type;
│ │ │ │ +
220 int focus;
│ │ │ │ +
221 SQLHANDLE parent;
│ │ │ │ +
222 struct _dheader header;
│ │ │ │ +
223 struct _drecord *records;
│ │ │ │ +
224};
│ │ │ │ +
│ │ │ │ +
225
│ │ │ │ +
226typedef struct _hdesc TDS_DESC;
│ │ │ │ +
227
│ │ │ │ +
228#define DESC_IRD 1
│ │ │ │ +
229#define DESC_IPD 2
│ │ │ │ +
230#define DESC_ARD 3
│ │ │ │ +
231#define DESC_APD 4
│ │ │ │ +
232
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
234{
│ │ │ │ +
235 SQLUINTEGER connection_pooling;
│ │ │ │ +
236 SQLUINTEGER cp_match;
│ │ │ │ +
237 SQLINTEGER odbc_version;
│ │ │ │ +
238 SQLINTEGER output_nts;
│ │ │ │ +
239};
│ │ │ │ +
│ │ │ │ +
240
│ │ │ │ +
│ │ │ │ +
241struct _hchk
│ │ │ │ +
242{
│ │ │ │ +
243 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ +
244 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ +
245 tds_mutex mtx;
│ │ │ │ +
246};
│ │ │ │ +
│ │ │ │ +
247
│ │ │ │ +
│ │ │ │ +
248struct _henv
│ │ │ │ +
249{
│ │ │ │ +
250 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ +
251 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ +
252 tds_mutex mtx;
│ │ │ │ +
253 TDSCONTEXT *tds_ctx;
│ │ │ │ +
254 struct _heattr attr;
│ │ │ │ +
255};
│ │ │ │ +
│ │ │ │ +
256
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
258{
│ │ │ │ +
259 SQLUINTEGER access_mode;
│ │ │ │ +
260 SQLUINTEGER async_enable;
│ │ │ │ +
261 SQLUINTEGER auto_ipd;
│ │ │ │ +
262 SQLUINTEGER autocommit;
│ │ │ │ +
263 SQLUINTEGER connection_dead;
│ │ │ │ +
264 SQLUINTEGER connection_timeout;
│ │ │ │ +
265 DSTR current_catalog;
│ │ │ │ +
266 SQLUINTEGER login_timeout;
│ │ │ │ +
267 SQLUINTEGER metadata_id;
│ │ │ │ +
268 SQLUINTEGER odbc_cursors;
│ │ │ │ +
269 SQLUINTEGER packet_size;
│ │ │ │ +
270 SQLHWND quite_mode;
│ │ │ │ +
271 DSTR translate_lib;
│ │ │ │ +
272 SQLUINTEGER translate_option;
│ │ │ │ +
273 SQLUINTEGER txn_isolation;
│ │ │ │ +
274 SQLUINTEGER mars_enabled;
│ │ │ │ +
275 SQLUINTEGER cursor_type;
│ │ │ │ +
276 SQLUINTEGER bulk_enabled;
│ │ │ │ +
277#ifdef TDS_NO_DM
│ │ │ │ +
278 SQLUINTEGER trace;
│ │ │ │ +
279 DSTR tracefile;
│ │ │ │ +
280#endif
│ │ │ │ +
281};
│ │ │ │ +
│ │ │ │ +
282
│ │ │ │ +
283#define TDS_MAX_APP_DESC 100
│ │ │ │ +
284
│ │ │ │ +
285struct _hstmt;
│ │ │ │ +
│ │ │ │ +
286struct _hdbc
│ │ │ │ +
287{
│ │ │ │ +
288 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ +
289 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ +
290 tds_mutex mtx;
│ │ │ │ +
291 struct _henv *env;
│ │ │ │ + │ │ │ │ +
293 DSTR dsn;
│ │ │ │ +
294 DSTR oldpwd;
│ │ │ │ +
295#ifdef ENABLE_ODBC_WIDE
│ │ │ │ +
296 int original_charset_num;
│ │ │ │ +
297 TDSICONV *mb_conv;
│ │ │ │ +
298#endif
│ │ │ │ +
299
│ │ │ │ + │ │ │ │ + │ │ │ │ +
308 struct _hcattr attr;
│ │ │ │ +
310 TDS_DESC *uad[TDS_MAX_APP_DESC];
│ │ │ │ +
312 unsigned int cursor_support:1;
│ │ │ │ +
313 unsigned int use_oldpwd:1;
│ │ │ │ +
314 TDS_INT default_query_timeout;
│ │ │ │ +
315
│ │ │ │ +
316 TDSBCPINFO *bcpinfo;
│ │ │ │ +
317};
│ │ │ │ +
│ │ │ │ +
318
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
320{
│ │ │ │ +
321 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */
│ │ │ │ +
322/* TDS_DESC *app_row_desc; */
│ │ │ │ +
323/* TDS_DESC *app_param_desc; */
│ │ │ │ +
324 SQLUINTEGER async_enable;
│ │ │ │ +
325 SQLUINTEGER concurrency;
│ │ │ │ +
326 SQLUINTEGER cursor_scrollable;
│ │ │ │ +
327 SQLUINTEGER cursor_sensitivity;
│ │ │ │ +
328 SQLUINTEGER cursor_type;
│ │ │ │ +
329 SQLUINTEGER enable_auto_ipd;
│ │ │ │ +
330 SQLPOINTER fetch_bookmark_ptr;
│ │ │ │ +
331 SQLULEN keyset_size;
│ │ │ │ +
332 SQLULEN max_length;
│ │ │ │ +
333 SQLULEN max_rows;
│ │ │ │ +
334 SQLUINTEGER metadata_id;
│ │ │ │ +
335 SQLUINTEGER noscan;
│ │ │ │ +
336 /* apd->sql_desc_bind_offset_ptr */
│ │ │ │ +
337 /* SQLUINTEGER *param_bind_offset_ptr; */
│ │ │ │ +
338 /* apd->sql_desc_bind_type */
│ │ │ │ +
339 /* SQLUINTEGER param_bind_type; */
│ │ │ │ +
340 /* apd->sql_desc_array_status_ptr */
│ │ │ │ +
341 /* SQLUSMALLINT *param_operation_ptr; */
│ │ │ │ +
342 /* ipd->sql_desc_array_status_ptr */
│ │ │ │ +
343 /* SQLUSMALLINT *param_status_ptr; */
│ │ │ │ +
344 /* ipd->sql_desc_rows_processed_ptr */
│ │ │ │ +
345 /* SQLUSMALLINT *params_processed_ptr; */
│ │ │ │ +
346 /* apd->sql_desc_array_size */
│ │ │ │ +
347 /* SQLUINTEGER paramset_size; */
│ │ │ │ +
348 SQLUINTEGER query_timeout;
│ │ │ │ +
349 SQLUINTEGER retrieve_data;
│ │ │ │ +
350 /* ard->sql_desc_bind_offset_ptr */
│ │ │ │ +
351 /* SQLUINTEGER *row_bind_offset_ptr; */
│ │ │ │ +
352 /* ard->sql_desc_array_size */
│ │ │ │ +
353 /* SQLUINTEGER row_array_size; */
│ │ │ │ +
354 /* ard->sql_desc_bind_type */
│ │ │ │ +
355 /* SQLUINTEGER row_bind_type; */
│ │ │ │ +
356 SQLULEN row_number;
│ │ │ │ +
357 /* ard->sql_desc_array_status_ptr */
│ │ │ │ +
358 /* SQLUINTEGER *row_operation_ptr; */
│ │ │ │ +
359 /* ird->sql_desc_array_status_ptr */
│ │ │ │ +
360 /* SQLUINTEGER *row_status_ptr; */
│ │ │ │ +
361 /* ird->sql_desc_rows_processed_ptr */
│ │ │ │ +
362 /* SQLUINTEGER *rows_fetched_ptr; */
│ │ │ │ +
363 SQLUINTEGER simulate_cursor;
│ │ │ │ +
364 SQLUINTEGER use_bookmarks;
│ │ │ │ +
365 /* SQLGetStmtAttr only */
│ │ │ │ +
366/* TDS_DESC *imp_row_desc; */
│ │ │ │ +
367/* TDS_DESC *imp_param_desc; */
│ │ │ │ +
368 DSTR qn_msgtext;
│ │ │ │ +
369 DSTR qn_options;
│ │ │ │ +
370 SQLUINTEGER qn_timeout;
│ │ │ │ +
371 SQLUINTEGER param_focus;
│ │ │ │ +
372};
│ │ │ │ +
│ │ │ │ +
373
│ │ │ │ +
374typedef enum
│ │ │ │ +
375{
│ │ │ │ +
376 NOT_IN_ROW,
│ │ │ │ +
377 IN_NORMAL_ROW,
│ │ │ │ +
378 IN_COMPUTE_ROW,
│ │ │ │ +
379 AFTER_COMPUTE_ROW,
│ │ │ │ +
380 PRE_NORMAL_ROW
│ │ │ │ +
381} TDS_ODBC_ROW_STATUS;
│ │ │ │ +
382
│ │ │ │ +
383typedef enum
│ │ │ │ +
384{
│ │ │ │ +
385 ODBC_SPECIAL_NONE = 0,
│ │ │ │ +
386 ODBC_SPECIAL_GETTYPEINFO = 1,
│ │ │ │ +
387 ODBC_SPECIAL_COLUMNS = 2,
│ │ │ │ +
388 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,
│ │ │ │ +
389 ODBC_SPECIAL_SPECIALCOLUMNS = 4
│ │ │ │ +
390} TDS_ODBC_SPECIAL_ROWS;
│ │ │ │ +
391
│ │ │ │ +
│ │ │ │ +
392struct _hstmt
│ │ │ │ +
393{
│ │ │ │ +
394 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ +
395 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ +
396 tds_mutex mtx;
│ │ │ │ +
397 struct _hdbc *dbc;
│ │ │ │ + │ │ │ │ + │ │ │ │ +
402
│ │ │ │ +
404 struct _hstmt *next;
│ │ │ │ +
406 struct _hstmt *prev;
│ │ │ │ +
407
│ │ │ │ +
408 /* begin prepared query stuff */
│ │ │ │ +
409 unsigned is_prepared_query:1;
│ │ │ │ +
410 unsigned prepared_query_is_func:1;
│ │ │ │ +
411 unsigned prepared_query_is_rpc:1;
│ │ │ │ +
416 unsigned need_reprepare:1;
│ │ │ │ +
417 unsigned param_data_called:1;
│ │ │ │ +
418 unsigned params_queried:1;
│ │ │ │ +
419 unsigned params_set:1;
│ │ │ │ +
420 /* end prepared query stuff */
│ │ │ │ +
421
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
428
│ │ │ │ +
429 unsigned int curr_param_row, num_param_rows;
│ │ │ │ +
430
│ │ │ │ +
432 unsigned int param_count;
│ │ │ │ +
433 int row;
│ │ │ │ +
435 TDS_INT8 row_count;
│ │ │ │ +
437 TDS_ODBC_ROW_STATUS row_status;
│ │ │ │ +
438 /* do NOT free dynamic, free from socket or attach to connection */
│ │ │ │ +
439 TDSDYNAMIC *dyn;
│ │ │ │ +
440 TDS_DESC *ard, *ird, *apd, *ipd;
│ │ │ │ +
441 TDS_DESC *orig_ard, *orig_apd;
│ │ │ │ +
442 SQLULEN sql_rowset_size;
│ │ │ │ +
443 struct _hsattr attr;
│ │ │ │ +
444 DSTR cursor_name; /* auto generated cursor name */
│ │ │ │ +
445 TDS_ODBC_SPECIAL_ROWS special_row;
│ │ │ │ +
446 /* do NOT free cursor, free from socket or attach to connection */
│ │ │ │ +
447 TDSCURSOR *cursor;
│ │ │ │ +
448};
│ │ │ │ +
│ │ │ │ +
449
│ │ │ │ +
450typedef struct _henv TDS_ENV;
│ │ │ │ +
451typedef struct _hdbc TDS_DBC;
│ │ │ │ +
452typedef struct _hstmt TDS_STMT;
│ │ │ │ +
453typedef struct _hchk TDS_CHK;
│ │ │ │ +
454
│ │ │ │ +
│ │ │ │ +
455typedef struct {
│ │ │ │ +
456 /* this must be the first member */
│ │ │ │ +
457 TDSCOLUMNFUNCS common;
│ │ │ │ +
458 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver);
│ │ │ │ +
459} TDS_FUNCS;
│ │ │ │ +
│ │ │ │ +
460
│ │ │ │ +
461#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)
│ │ │ │ +
462#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)
│ │ │ │ +
463#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)
│ │ │ │ +
464#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)
│ │ │ │ +
465
│ │ │ │ +
466/* fix a bug in MingW headers */
│ │ │ │ +
467#ifdef __MINGW32__
│ │ │ │ +
468#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)
│ │ │ │ +
469
│ │ │ │ +
470#undef SQL_INTERVAL_YEAR
│ │ │ │ +
471#undef SQL_INTERVAL_MONTH
│ │ │ │ +
472#undef SQL_INTERVAL_DAY
│ │ │ │ +
473#undef SQL_INTERVAL_HOUR
│ │ │ │ +
474#undef SQL_INTERVAL_MINUTE
│ │ │ │ +
475#undef SQL_INTERVAL_SECOND
│ │ │ │ +
476#undef SQL_INTERVAL_YEAR_TO_MONTH
│ │ │ │ +
477#undef SQL_INTERVAL_DAY_TO_HOUR
│ │ │ │ +
478#undef SQL_INTERVAL_DAY_TO_MINUTE
│ │ │ │ +
479#undef SQL_INTERVAL_DAY_TO_SECOND
│ │ │ │ +
480#undef SQL_INTERVAL_HOUR_TO_MINUTE
│ │ │ │ +
481#undef SQL_INTERVAL_HOUR_TO_SECOND
│ │ │ │ +
482#undef SQL_INTERVAL_MINUTE_TO_SECOND
│ │ │ │ +
483
│ │ │ │ +
484#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)
│ │ │ │ +
485#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)
│ │ │ │ +
486#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)
│ │ │ │ +
487#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)
│ │ │ │ +
488#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)
│ │ │ │ +
489#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)
│ │ │ │ +
490#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)
│ │ │ │ +
491#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)
│ │ │ │ +
492#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)
│ │ │ │ +
493#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)
│ │ │ │ +
494#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)
│ │ │ │ +
495#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)
│ │ │ │ +
496#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)
│ │ │ │ +
497
│ │ │ │ +
498#endif
│ │ │ │ +
499#endif
│ │ │ │ +
500
│ │ │ │ +
501#ifdef _WIN32
│ │ │ │ +
502bool get_login_info(HWND hwndParent, TDSLOGIN * login);
│ │ │ │ +
503#endif
│ │ │ │ +
504
│ │ │ │ +
505#define ODBC_PARAM_LIST \
│ │ │ │ +
506 ODBC_PARAM(Servername) \
│ │ │ │ +
507 ODBC_PARAM(Server) \
│ │ │ │ +
508 ODBC_PARAM(DSN) \
│ │ │ │ +
509 ODBC_PARAM(UID) \
│ │ │ │ +
510 ODBC_PARAM(PWD) \
│ │ │ │ +
511 ODBC_PARAM(Address) \
│ │ │ │ +
512 ODBC_PARAM(Port) \
│ │ │ │ +
513 ODBC_PARAM(TDS_Version) \
│ │ │ │ +
514 ODBC_PARAM(Language) \
│ │ │ │ +
515 ODBC_PARAM(Database) \
│ │ │ │ +
516 ODBC_PARAM(TextSize) \
│ │ │ │ +
517 ODBC_PARAM(PacketSize) \
│ │ │ │ +
518 ODBC_PARAM(ClientCharset) \
│ │ │ │ +
519 ODBC_PARAM(DumpFile) \
│ │ │ │ +
520 ODBC_PARAM(DumpFileAppend) \
│ │ │ │ +
521 ODBC_PARAM(DebugFlags) \
│ │ │ │ +
522 ODBC_PARAM(Encryption) \
│ │ │ │ +
523 ODBC_PARAM(Trusted_Connection) \
│ │ │ │ +
524 ODBC_PARAM(APP) \
│ │ │ │ +
525 ODBC_PARAM(WSID) \
│ │ │ │ +
526 ODBC_PARAM(UseNTLMv2) \
│ │ │ │ +
527 ODBC_PARAM(MARS_Connection) \
│ │ │ │ +
528 ODBC_PARAM(REALM) \
│ │ │ │ +
529 ODBC_PARAM(ServerSPN) \
│ │ │ │ +
530 ODBC_PARAM(AttachDbFilename) \
│ │ │ │ +
531 ODBC_PARAM(ApplicationIntent) \
│ │ │ │ +
532 ODBC_PARAM(Timeout) \
│ │ │ │ +
533 ODBC_PARAM(Encrypt) \
│ │ │ │ +
534 ODBC_PARAM(HostNameInCertificate)
│ │ │ │ +
535
│ │ │ │ +
536#define ODBC_PARAM(p) ODBC_PARAM_##p,
│ │ │ │ +
537enum {
│ │ │ │ +
538 ODBC_PARAM_LIST
│ │ │ │ +
539 ODBC_PARAM_SIZE
│ │ │ │ +
540};
│ │ │ │ +
541#undef ODBC_PARAM
│ │ │ │ +
542
│ │ │ │ +
543#define ODBC_PARAM(p) extern const char odbc_param_##p[];
│ │ │ │ +
544ODBC_PARAM_LIST
│ │ │ │ +
545#undef ODBC_PARAM
│ │ │ │ +
546
│ │ │ │ +
547/*
│ │ │ │ +
548 * connectparams.h
│ │ │ │ +
549 */
│ │ │ │ +
550
│ │ │ │ +
│ │ │ │ +
551typedef struct {
│ │ │ │ +
552 const char *p;
│ │ │ │ +
553 size_t len;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
555
│ │ │ │ +
563bool odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, const char *connect_string_end,
│ │ │ │ +
564 TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params);
│ │ │ │ +
565bool odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);
│ │ │ │ +
566#ifdef _WIN32
│ │ │ │ +
567int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char **out);
│ │ │ │ +
568#endif
│ │ │ │ +
569
│ │ │ │ +
570/*
│ │ │ │ +
571 * convert_tds2sql.c
│ │ │ │ +
572 */
│ │ │ │ +
573SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype,
│ │ │ │ +
574 TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);
│ │ │ │ +
575SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_CHAR * dest, SQLULEN destlen);
│ │ │ │ +
576
│ │ │ │ +
577
│ │ │ │ +
578
│ │ │ │ +
579/*
│ │ │ │ +
580 * descriptor.c
│ │ │ │ +
581 */
│ │ │ │ +
│ │ │ │ +
582typedef struct {
│ │ │ │ +
583 DSTR type_name;
│ │ │ │ +
584 TDS_DESC *apd;
│ │ │ │ +
585 TDS_DESC *ipd;
│ │ │ │ +
586} SQLTVP;
│ │ │ │ +
│ │ │ │ +
587
│ │ │ │ +
588TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, SQLSMALLINT alloc_type);
│ │ │ │ +
589SQLRETURN desc_free(TDS_DESC * desc);
│ │ │ │ +
590SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);
│ │ │ │ +
591SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);
│ │ │ │ +
592SQLRETURN desc_free_records(TDS_DESC * desc);
│ │ │ │ +
593TDS_DBC *desc_get_dbc(TDS_DESC *desc);
│ │ │ │ +
594SQLTVP *tvp_alloc(TDS_STMT *stmt);
│ │ │ │ +
595void tvp_free(SQLTVP *tvp);
│ │ │ │ +
596
│ │ │ │ +
597/*
│ │ │ │ +
598 * odbc.c
│ │ │ │ +
599 */
│ │ │ │ +
600
│ │ │ │ +
601SQLRETURN odbc_SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);
│ │ │ │ +
602
│ │ │ │ +
603/*
│ │ │ │ +
604 * odbc_checks.h
│ │ │ │ +
605 */
│ │ │ │ +
606#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
607/* macro */
│ │ │ │ +
608#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)
│ │ │ │ +
609#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)
│ │ │ │ +
610#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)
│ │ │ │ +
611#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)
│ │ │ │ +
612/* declarations*/
│ │ │ │ +
613void odbc_check_env_extra(TDS_ENV * env);
│ │ │ │ +
614void odbc_check_dbc_extra(TDS_DBC * dbc);
│ │ │ │ +
615void odbc_check_stmt_extra(TDS_STMT * stmt);
│ │ │ │ +
616void odbc_check_desc_extra(TDS_DESC * desc);
│ │ │ │ +
617#else
│ │ │ │ +
618/* macro */
│ │ │ │ +
619#define CHECK_ENV_EXTRA(env)
│ │ │ │ +
620#define CHECK_DBC_EXTRA(dbc)
│ │ │ │ +
621#define CHECK_STMT_EXTRA(stmt)
│ │ │ │ +
622#define CHECK_DESC_EXTRA(desc)
│ │ │ │ +
623#endif
│ │ │ │ +
624
│ │ │ │ +
625/*
│ │ │ │ +
626 * odbc_util.h
│ │ │ │ +
627 */
│ │ │ │ +
628
│ │ │ │ +
629/* helpers for ODBC wide string support */
│ │ │ │ +
630#undef _wide
│ │ │ │ +
631#undef _WIDE
│ │ │ │ +
632#ifdef ENABLE_ODBC_WIDE
│ │ │ │ +
633typedef union {
│ │ │ │ +
634 char mb[1];
│ │ │ │ +
635 SQLWCHAR wide[1];
│ │ │ │ +
636} ODBC_CHAR;
│ │ │ │ +
637# define _wide ,wide
│ │ │ │ +
638# define _wide0 ,0
│ │ │ │ +
639# define _WIDE ,int wide
│ │ │ │ +
640#else
│ │ │ │ +
641# define _wide
│ │ │ │ +
642# define _wide0
│ │ │ │ +
643# define _WIDE
│ │ │ │ +
644# define ODBC_CHAR SQLCHAR
│ │ │ │ +
645#endif
│ │ │ │ +
646SQLRETURN odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int sql_len _WIDE);
│ │ │ │ +
647void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);
│ │ │ │ +
648void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);
│ │ │ │ +
649
│ │ │ │ +
650void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, SQLINTEGER odbc_ver);
│ │ │ │ +
651
│ │ │ │ +
652int odbc_sql_to_c_type_default(int sql_type);
│ │ │ │ +
653TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, int sql_unsigned);
│ │ │ │ +
654TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);
│ │ │ │ +
655
│ │ │ │ +
656unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);
│ │ │ │ +
657void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);
│ │ │ │ +
658SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd,
│ │ │ │ +
659 const TDS_DESC* axd, unsigned int n_row);
│ │ │ │ +
660
│ │ │ │ +
661#ifdef ENABLE_ODBC_WIDE
│ │ │ │ +
662DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str, int flag);
│ │ │ │ +
663#define odbc_dstr_copy(dbc, s, len, out) \
│ │ │ │ +
664 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)
│ │ │ │ +
665#define odbc_dstr_copy_oct(dbc, s, len, out) \
│ │ │ │ +
666 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)
│ │ │ │ +
667#else
│ │ │ │ +
668DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str);
│ │ │ │ +
669#define odbc_dstr_copy_oct odbc_dstr_copy
│ │ │ │ +
670#endif
│ │ │ │ +
671
│ │ │ │ +
672
│ │ │ │ +
673SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR * pcbBuffer,
│ │ │ │ +
674 const char *s, int len, int flag);
│ │ │ │ +
675#ifdef ENABLE_ODBC_WIDE
│ │ │ │ +
676#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ +
677 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_len, s, s_len, \
│ │ │ │ +
678 (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
│ │ │ │ +
679#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ +
680 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
│ │ │ │ +
681#else
│ │ │ │ +
682#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ +
683 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
│ │ │ │ +
684#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ +
685 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
│ │ │ │ +
686#endif
│ │ │ │ +
687
│ │ │ │ +
688#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) \
│ │ │ │ +
689 odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
│ │ │ │ +
690#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
│ │ │ │ +
691
│ │ │ │ +
692SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT interval);
│ │ │ │ +
693SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
│ │ │ │ +
694SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval);
│ │ │ │ +
695SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
│ │ │ │ +
696
│ │ │ │ +
697SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);
│ │ │ │ +
698void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);
│ │ │ │ +
699
│ │ │ │ +
700/*
│ │ │ │ +
701 * prepare_query.c
│ │ │ │ +
702 */
│ │ │ │ +
703SQLRETURN prepare_call(struct _hstmt *stmt);
│ │ │ │ +
704SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);
│ │ │ │ +
705int parse_prepared_query(struct _hstmt *stmt, bool compute_row);
│ │ │ │ +
706int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);
│ │ │ │ +
707int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, SQLLEN StrLen_or_Ind);
│ │ │ │ +
708const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);
│ │ │ │ +
709const char *odbc_skip_rpc_name(const char *s);
│ │ │ │ +
710
│ │ │ │ +
711/*
│ │ │ │ +
712 * sql2tds.c
│ │ │ │ +
713 */
│ │ │ │ +
714SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, const struct _drecord *drec_axd, TDSCOLUMN *curcol,
│ │ │ │ +
715 bool compute_row, const TDS_DESC* axd, unsigned int n_row);
│ │ │ │ +
716TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_DATETIMEALL * dta);
│ │ │ │ +
717
│ │ │ │ +
718/*
│ │ │ │ +
719 * bcp.c
│ │ │ │ +
720 */
│ │ │ │ +
721void odbc_bcp_free_storage(TDS_DBC *dbc);
│ │ │ │ +
722void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR *hfile, const ODBC_CHAR *errfile, int direction _WIDE);
│ │ │ │ +
723void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);
│ │ │ │ +
724void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);
│ │ │ │ +
725void odbc_bcp_sendrow(TDS_DBC *dbc);
│ │ │ │ +
726int odbc_bcp_batch(TDS_DBC *dbc);
│ │ │ │ +
727int odbc_bcp_done(TDS_DBC *dbc);
│ │ │ │ +
728void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int varlen, const void * terminator, int termlen,
│ │ │ │ +
729 int vartype, int table_column);
│ │ │ │ +
730
│ │ │ │ +
731/*
│ │ │ │ +
732 * sqlwchar.c
│ │ │ │ +
733 */
│ │ │ │ +
734#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T
│ │ │ │ +
735size_t sqlwcslen(const SQLWCHAR * s);
│ │ │ │ +
736
│ │ │ │ +
737typedef struct sqlwstr_buf {
│ │ │ │ +
738 struct sqlwstr_buf *next;
│ │ │ │ +
739 wchar_t buf[256];
│ │ │ │ +
740} SQLWSTRBUF;
│ │ │ │ +
741const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);
│ │ │ │ +
742void sqlwstr_free(SQLWSTRBUF *bufs);
│ │ │ │ +
743#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL
│ │ │ │ +
744#define SQLWSTR(s) sqlwstr(s, &bufs)
│ │ │ │ +
745#define SQLWSTR_FREE() sqlwstr_free(bufs)
│ │ │ │ +
746#else
│ │ │ │ +
747#define sqlwcslen(s) wcslen(s)
│ │ │ │ +
748
│ │ │ │ +
749#define SQLWSTR_BUFS(n) do {} while(0)
│ │ │ │ +
750#define SQLWSTR(s) ((const wchar_t*)(s))
│ │ │ │ +
751#define SQLWSTR_FREE() do {} while(0)
│ │ │ │ +
752#endif
│ │ │ │ +
753
│ │ │ │ +
754int odbc_get_wide_canonic(TDSCONNECTION *conn);
│ │ │ │ +
755
│ │ │ │ +
756/* compatibility with old BCP implementation */
│ │ │ │ +
757#define BCPHINTS_OLD 6
│ │ │ │ +
758#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL_OLD (SQL_COPT_TDSODBC_IMPL_BASE+1)
│ │ │ │ +
759
│ │ │ │ +
760/* iODBC extensions used by our driver */
│ │ │ │ +
761#ifndef SQL_ATTR_DRIVER_UNICODE_TYPE
│ │ │ │ +
762#define SQL_ATTR_DRIVER_UNICODE_TYPE 1065
│ │ │ │ +
763#endif
│ │ │ │ +
764
│ │ │ │ +
765#ifndef SQL_DM_CP_UTF16
│ │ │ │ +
766#define SQL_DM_CP_UTF16 1
│ │ │ │ +
767#endif
│ │ │ │ +
768#ifndef SQL_DM_CP_UTF8
│ │ │ │ +
769#define SQL_DM_CP_UTF8 2
│ │ │ │ +
770#endif
│ │ │ │ +
771#ifndef SQL_DM_CP_UCS4
│ │ │ │ +
772#define SQL_DM_CP_UCS4 3
│ │ │ │ +
773#endif
│ │ │ │ +
774
│ │ │ │ +
775#include <freetds/popvis.h>
│ │ │ │ +
776
│ │ │ │ +
777#ifdef __cplusplus
│ │ │ │ +
778#if 0
│ │ │ │ +
779{
│ │ │ │ +
780#endif
│ │ │ │ +
781}
│ │ │ │ +
782#endif
│ │ │ │ +
783
│ │ │ │ +
784#endif
│ │ │ │ +
Main include file for libtds.
│ │ │ │ +
SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only)
Set concise type and all cascading field.
Definition odbc_util.c:985
│ │ │ │ +
SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only)
Set concise type and all cascading field.
Definition odbc_util.c:1112
│ │ │ │ +
SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row)
Return length of parameter from parameter information.
Definition odbc_util.c:867
│ │ │ │ +
TDS_SERVER_TYPE odbc_c_to_server_type(int c_type)
Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to the SQL_C_* type.
Definition odbc_util.c:602
│ │ │ │ +
SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag)
Copy a string to client setting size according to ODBC convenction.
Definition odbc_util.c:302
│ │ │ │ +
void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)
Returns the version of the RDBMS in the ODBC format.
Definition odbc_util.c:858
│ │ │ │ +
Definition iconv.h:92
│ │ │ │ +
Definition odbc.h:96
│ │ │ │ +
Definition odbc.h:109
│ │ │ │ +
Descriptor header.
Definition odbc.h:155
│ │ │ │ +
Descriptor record.
Definition odbc.h:168
│ │ │ │ +
Definition odbc.h:209
│ │ │ │ +
int focus
Nested descriptor to use.
Definition odbc.h:220
│ │ │ │ +
Definition odbc.h:234
│ │ │ │ +
Definition odbc.h:242
│ │ │ │ +
Definition odbc.h:249
│ │ │ │ +
Definition odbc.h:258
│ │ │ │ +
Definition odbc.h:287
│ │ │ │ +
struct _hstmt * stmt_list
list of all statements allocated from this connection
Definition odbc.h:307
│ │ │ │ +
TDS_DESC * uad[TDS_MAX_APP_DESC]
descriptors associated to connection
Definition odbc.h:310
│ │ │ │ +
struct _hstmt * current_statement
Statement executing.
Definition odbc.h:305
│ │ │ │ +
unsigned int cursor_support
<>0 if server handle cursors
Definition odbc.h:312
│ │ │ │ +
Definition odbc.h:320
│ │ │ │ +
Definition odbc.h:393
│ │ │ │ +
unsigned int param_count
number of parameter in current query
Definition odbc.h:432
│ │ │ │ +
TDS_ODBC_ROW_STATUS row_status
status of row, it can happen that this flag mark that we are still parsing row, this it's normal
Definition odbc.h:437
│ │ │ │ +
size_t prepared_pos
position in prepared query to check parameters, used only in RPC
Definition odbc.h:427
│ │ │ │ +
TDS_INT8 row_count
row count to return
Definition odbc.h:435
│ │ │ │ +
int param_num
last valid parameter in params, it's a ODBC index (from 1 relative to descriptor)
Definition odbc.h:425
│ │ │ │ +
DSTR query
query to execute
Definition odbc.h:399
│ │ │ │ +
unsigned need_reprepare
Prepared statement needs to be prepared again.
Definition odbc.h:416
│ │ │ │ +
struct _hstmt * next
next in list
Definition odbc.h:404
│ │ │ │ +
TDSSOCKET * tds
socket (only if active)
Definition odbc.h:401
│ │ │ │ +
struct _hstmt * prev
previous in list
Definition odbc.h:406
│ │ │ │ +
TDSPARAMINFO * params
parameters saved
Definition odbc.h:423
│ │ │ │ +
Definition odbc.h:455
│ │ │ │ +
Definition odbc.h:551
│ │ │ │ +
Definition odbc.h:582
│ │ │ │ +
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ +
Definition tds.h:498
│ │ │ │ +
Definition tds.h:628
│ │ │ │ +
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ +
Hold information for any results.
Definition tds.h:754
│ │ │ │ +
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ +
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ +
Definition tds.h:1015
│ │ │ │ +
Definition tds.h:1077
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
Definition tds.h:1684
│ │ │ │ +
Structure to hold a string.
Definition string.h:36
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,17 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -sysdep_private.h │ │ │ │ │ +odbc.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2010 Frediano Ziglio │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2004-2010 Frediano Ziglio │ │ │ │ │ 4 * │ │ │ │ │ 5 * This library is free software; you can redistribute it and/or │ │ │ │ │ 6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 7 * License as published by the Free Software Foundation; either │ │ │ │ │ 8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 9 * │ │ │ │ │ 10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,286 +21,925 @@ │ │ │ │ │ 14 * │ │ │ │ │ 15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 16 * License along with this library; if not, write to the │ │ │ │ │ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 18 * Boston, MA 02111-1307, USA. │ │ │ │ │ 19 */ │ │ │ │ │ 20 │ │ │ │ │ -21#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ -22#define _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ +21#ifndef _tdsguard_gQHaPEvp2dAAa45TAutROb_ │ │ │ │ │ +22#define _tdsguard_gQHaPEvp2dAAa45TAutROb_ │ │ │ │ │ 23 │ │ │ │ │ -24#define TDS_ADDITIONAL_SPACE 16 │ │ │ │ │ -25 │ │ │ │ │ -26#ifdef MSG_NOSIGNAL │ │ │ │ │ -27# define TDS_NOSIGNAL MSG_NOSIGNAL │ │ │ │ │ -28#else │ │ │ │ │ -29# define TDS_NOSIGNAL 0L │ │ │ │ │ -30#endif │ │ │ │ │ -31 │ │ │ │ │ -32#ifdef __cplusplus │ │ │ │ │ -33#define TDS_EXTERN_C extern "C" │ │ │ │ │ -34#else │ │ │ │ │ -35#define TDS_EXTERN_C │ │ │ │ │ -36#endif │ │ │ │ │ -37 │ │ │ │ │ -38#ifdef __INCvxWorksh │ │ │ │ │ -39#include /* for FIONBIO */ │ │ │ │ │ -40#endif /* __INCvxWorksh */ │ │ │ │ │ -41 │ │ │ │ │ -42#if defined(DOS32X) │ │ │ │ │ -43#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL) │ │ │ │ │ -44#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL) │ │ │ │ │ -45#define CLOSESOCKET(a) closesocket((a)) │ │ │ │ │ -46#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c)) │ │ │ │ │ -47#define SOCKLEN_T int │ │ │ │ │ -48#define select select_s │ │ │ │ │ -49typedef int pid_t; │ │ │ │ │ -50#define strcasecmp stricmp │ │ │ │ │ -51#define strncasecmp strnicmp │ │ │ │ │ -52/* TODO this has nothing to do with ip ... */ │ │ │ │ │ -53#define getpid() _gethostid() │ │ │ │ │ -54#endif /* defined(DOS32X) */ │ │ │ │ │ +24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS │ │ │ │ │ +25#include │ │ │ │ │ +26#include │ │ │ │ │ +27#include │ │ │ │ │ +28 │ │ │ │ │ +29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM) │ │ │ │ │ +30#include │ │ │ │ │ +31#include │ │ │ │ │ +32#if defined(UNIXODBC) || defined(_WIN32) │ │ │ │ │ +33#include │ │ │ │ │ +34#endif │ │ │ │ │ +35#else /* IODBC */ │ │ │ │ │ +36#include │ │ │ │ │ +37#include │ │ │ │ │ +38#ifdef HAVE_IODBCINST_H │ │ │ │ │ +39#include │ │ │ │ │ +40#endif /* HAVE_IODBCINST_H */ │ │ │ │ │ +41#endif │ │ │ │ │ +42 │ │ │ │ │ +43#ifdef HAVE_WCHAR_H │ │ │ │ │ +44#include │ │ │ │ │ +45#endif │ │ │ │ │ +46 │ │ │ │ │ +47#ifndef HAVE_SQLLEN │ │ │ │ │ +48#ifndef SQLULEN │ │ │ │ │ +49#define SQLULEN SQLUINTEGER │ │ │ │ │ +50#endif │ │ │ │ │ +51#ifndef SQLLEN │ │ │ │ │ +52#define SQLLEN SQLINTEGER │ │ │ │ │ +53#endif │ │ │ │ │ +54#endif │ │ │ │ │ 55 │ │ │ │ │ -56#ifdef _WIN32 │ │ │ │ │ -57#include │ │ │ │ │ -58#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL) │ │ │ │ │ -59#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL) │ │ │ │ │ -60#define CLOSESOCKET(a) closesocket((a)) │ │ │ │ │ -61#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c)) │ │ │ │ │ -62#define SOCKLEN_T int │ │ │ │ │ -63static inline int │ │ │ │ │ -64tds_socket_init(void) │ │ │ │ │ -65{ │ │ │ │ │ -66 WSADATA wsadata; │ │ │ │ │ +56#ifndef HAVE_SQLSETPOSIROW │ │ │ │ │ +57#define SQLSETPOSIROW SQLUSMALLINT │ │ │ │ │ +58#endif │ │ │ │ │ +59 │ │ │ │ │ +60#ifndef HAVE_SQLROWOFFSET │ │ │ │ │ +61#define SQLROWOFFSET SQLLEN │ │ │ │ │ +62#endif │ │ │ │ │ +63 │ │ │ │ │ +64#ifndef HAVE_SQLROWSETSIZE │ │ │ │ │ +65#define SQLROWSETSIZE SQLULEN │ │ │ │ │ +66#endif │ │ │ │ │ 67 │ │ │ │ │ -68 return WSAStartup(MAKEWORD(2, 2), &wsadata); │ │ │ │ │ -69} │ │ │ │ │ -70 │ │ │ │ │ -71static inline void │ │ │ │ │ -72tds_socket_done(void) │ │ │ │ │ -73{ │ │ │ │ │ -74 WSACleanup(); │ │ │ │ │ -75} │ │ │ │ │ -76#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */ │ │ │ │ │ -77 │ │ │ │ │ -78#define TDSSOCK_EINTR WSAEINTR │ │ │ │ │ -79#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK │ │ │ │ │ -80#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT │ │ │ │ │ -81#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK) │ │ │ │ │ -82#define TDSSOCK_ECONNRESET WSAECONNRESET │ │ │ │ │ -83#define sock_errno WSAGetLastError() │ │ │ │ │ -84#define set_sock_errno(err) WSASetLastError(err) │ │ │ │ │ -85#define sock_strerror(n) tds_prwsaerror(n) │ │ │ │ │ -86#define sock_strerror_free(s) tds_prwsaerror_free(s) │ │ │ │ │ -87#ifndef __MINGW32__ │ │ │ │ │ -88typedef DWORD pid_t; │ │ │ │ │ +68#ifdef __cplusplus │ │ │ │ │ +69extern "C" │ │ │ │ │ +70{ │ │ │ │ │ +71#if 0 │ │ │ │ │ +72} │ │ │ │ │ +73#endif │ │ │ │ │ +74#endif │ │ │ │ │ +75 │ │ │ │ │ +76#include │ │ │ │ │ +77#ifdef __clang__ │ │ │ │ │ +78#define ODBC_API SQL_API __attribute__((visibility("default"))) │ │ │ │ │ +79#elif defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ +80#define ODBC_API SQL_API __attribute__((externally_visible)) │ │ │ │ │ +81#else │ │ │ │ │ +82#define ODBC_API SQL_API │ │ │ │ │ +83#endif │ │ │ │ │ +84 │ │ │ │ │ +85#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__) │ │ │ │ │ +86# define ODBC_PUBLIC __attribute__((dllexport)) │ │ │ │ │ +87#else │ │ │ │ │ +88# define ODBC_PUBLIC │ │ │ │ │ 89#endif │ │ │ │ │ -90#undef strcasecmp │ │ │ │ │ -91#define strcasecmp stricmp │ │ │ │ │ -92#undef strncasecmp │ │ │ │ │ -93#define strncasecmp strnicmp │ │ │ │ │ -94#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF) │ │ │ │ │ -95#define snprintf _snprintf │ │ │ │ │ -96#endif │ │ │ │ │ -97 │ │ │ │ │ -98#ifndef WIN32 │ │ │ │ │ -99#define WIN32 1 │ │ │ │ │ -100#endif │ │ │ │ │ -101 │ │ │ │ │ -102#if defined(_WIN64) && !defined(WIN64) │ │ │ │ │ -103#define WIN64 1 │ │ │ │ │ -104#endif │ │ │ │ │ -105 │ │ │ │ │ -106/* use macros to use new style names */ │ │ │ │ │ -107#if defined(__MSVCRT__) || defined(_MSC_VER) │ │ │ │ │ -108/* Use API as always present and not causing problems */ │ │ │ │ │ -109#undef getpid │ │ │ │ │ -110#define getpid() GetCurrentProcessId() │ │ │ │ │ -111#define strdup(s) _strdup(s) │ │ │ │ │ -112#define unlink(f) _unlink(f) │ │ │ │ │ -113#define putenv(s) _putenv(s) │ │ │ │ │ -114#undef fileno │ │ │ │ │ -115#define fileno(f) _fileno(f) │ │ │ │ │ -116#undef close │ │ │ │ │ -117#define close(f) _close(f) │ │ │ │ │ -118#undef open │ │ │ │ │ -119#define open(fn,...) _open(fn,__VA_ARGS__) │ │ │ │ │ -120#undef dup2 │ │ │ │ │ -121#define dup2(o,n) _dup2(o,n) │ │ │ │ │ -122#define stricmp(s1,s2) _stricmp(s1,s2) │ │ │ │ │ -123#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n) │ │ │ │ │ -124#endif │ │ │ │ │ -125 │ │ │ │ │ -126#endif /* defined(_WIN32) */ │ │ │ │ │ -127 │ │ │ │ │ -128#ifndef sock_errno │ │ │ │ │ -129#define sock_errno errno │ │ │ │ │ -130#endif │ │ │ │ │ -131 │ │ │ │ │ -132#ifndef set_sock_errno │ │ │ │ │ -133#define set_sock_errno(err) do { errno = (err); } while(0) │ │ │ │ │ -134#endif │ │ │ │ │ -135 │ │ │ │ │ -136#ifndef sock_strerror │ │ │ │ │ -137#define sock_strerror(n) strerror(n) │ │ │ │ │ -138#define sock_strerror_free(s) do {} while(0) │ │ │ │ │ -139#endif │ │ │ │ │ -140 │ │ │ │ │ -141#ifndef TDSSOCK_EINTR │ │ │ │ │ -142#define TDSSOCK_EINTR EINTR │ │ │ │ │ -143#endif │ │ │ │ │ -144 │ │ │ │ │ -145#ifndef TDSSOCK_EINPROGRESS │ │ │ │ │ -146#define TDSSOCK_EINPROGRESS EINPROGRESS │ │ │ │ │ -147#endif │ │ │ │ │ +90 │ │ │ │ │ +91#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) ) │ │ │ │ │ +92#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) ) │ │ │ │ │ +93#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) ) │ │ │ │ │ +94 │ │ │ │ │ +95struct _sql_error │ │ │ │ │ +96{ │ │ │ │ │ +97 const char *msg; │ │ │ │ │ +98 char state2[6]; │ │ │ │ │ +99 char state3[6]; │ │ │ │ │ +100 TDS_UINT native; │ │ │ │ │ +101 char *server; │ │ │ │ │ +102 int linenum; │ │ │ │ │ +103 int msgstate; │ │ │ │ │ +104 int row; │ │ │ │ │ +105 bool msg_is_static; │ │ │ │ │ +106}; │ │ │ │ │ +107 │ │ │ │ │ +108struct _sql_errors │ │ │ │ │ +109{ │ │ │ │ │ +110 struct _sql_error *errs; │ │ │ │ │ +111 int num_errors; │ │ │ │ │ +112 SQLRETURN lastrc; │ │ │ │ │ +113 char ranked; │ │ │ │ │ +114}; │ │ │ │ │ +115 │ │ │ │ │ +116typedef struct _sql_errors TDS_ERRS; │ │ │ │ │ +117 │ │ │ │ │ +118#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +119void odbc_check_struct_extra(void *p); │ │ │ │ │ +120#else │ │ │ │ │ +121static inline void odbc_check_struct_extra(void *p TDS_UNUSED) {} │ │ │ │ │ +122#endif │ │ │ │ │ +123 │ │ │ │ │ +124#define ODBC_RETURN(handle, rc) \ │ │ │ │ │ +125 do { odbc_check_struct_extra(handle); \ │ │ │ │ │ +126 return handle->errs.lastrc = (rc); } while(0) │ │ │ │ │ +127#define ODBC_RETURN_(handle) \ │ │ │ │ │ +128 do { odbc_check_struct_extra(handle); \ │ │ │ │ │ +129 return handle->errs.lastrc; } while(0) │ │ │ │ │ +130 │ │ │ │ │ +131#define ODBC_EXIT(handle, rc) \ │ │ │ │ │ +132 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \ │ │ │ │ │ +133 odbc_check_struct_extra(handle); \ │ │ │ │ │ +134 tds_mutex_unlock(&handle->mtx); \ │ │ │ │ │ +135 return _odbc_rc; } while(0) │ │ │ │ │ +136#define ODBC_EXIT_(handle) \ │ │ │ │ │ +137 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \ │ │ │ │ │ +138 odbc_check_struct_extra(handle); \ │ │ │ │ │ +139 tds_mutex_unlock(&handle->mtx); \ │ │ │ │ │ +140 return _odbc_rc; } while(0) │ │ │ │ │ +141 │ │ │ │ │ +142 │ │ │ │ │ +144void odbc_errs_reset(struct _sql_errors *errs); │ │ │ │ │ +145 │ │ │ │ │ +147void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const │ │ │ │ │ +char *msg); │ │ │ │ │ 148 │ │ │ │ │ -149#ifndef TDSSOCK_ETIMEDOUT │ │ │ │ │ -150#define TDSSOCK_ETIMEDOUT ETIMEDOUT │ │ │ │ │ -151#endif │ │ │ │ │ +150void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const │ │ │ │ │ +char *sqlstate, const char *msg, int linenum, │ │ │ │ │ +151 int msgstate, const char *server, int row); │ │ │ │ │ 152 │ │ │ │ │ -153#ifndef TDSSOCK_WOULDBLOCK │ │ │ │ │ -154# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK │ │ │ │ │ -155# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK) │ │ │ │ │ -156# else │ │ │ │ │ -157# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN) │ │ │ │ │ -158# endif │ │ │ │ │ -159#endif │ │ │ │ │ -160 │ │ │ │ │ -161#ifndef TDSSOCK_ECONNRESET │ │ │ │ │ -162#define TDSSOCK_ECONNRESET ECONNRESET │ │ │ │ │ -163#endif │ │ │ │ │ -164 │ │ │ │ │ -165#ifndef _WIN32 │ │ │ │ │ -166static inline int │ │ │ │ │ -167tds_socket_init(void) │ │ │ │ │ +154struct _dheader │ │ │ │ │ +155{ │ │ │ │ │ +156 SQLSMALLINT sql_desc_alloc_type; │ │ │ │ │ +157 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en- │ │ │ │ │ +us;298678 */ │ │ │ │ │ +158 SQLSMALLINT sql_desc_count; │ │ │ │ │ +159 SQLINTEGER sql_desc_bind_type; │ │ │ │ │ +160 SQLULEN sql_desc_array_size; │ │ │ │ │ +161 SQLUSMALLINT *sql_desc_array_status_ptr; │ │ │ │ │ +162 SQLULEN *sql_desc_rows_processed_ptr; │ │ │ │ │ +163 SQLLEN *sql_desc_bind_offset_ptr; │ │ │ │ │ +164}; │ │ │ │ │ +165 │ │ │ │ │ +167struct _drecord │ │ │ │ │ 168{ │ │ │ │ │ -169 return 0; │ │ │ │ │ -170} │ │ │ │ │ -171 │ │ │ │ │ -172static inline void │ │ │ │ │ -173tds_socket_done(void) │ │ │ │ │ -174{ │ │ │ │ │ -175} │ │ │ │ │ -176#endif │ │ │ │ │ -177 │ │ │ │ │ -178#ifndef READSOCKET │ │ │ │ │ -179# ifdef MSG_NOSIGNAL │ │ │ │ │ -180# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL) │ │ │ │ │ -181# else │ │ │ │ │ -182# define READSOCKET(s,b,l) read((s), (b), (l)) │ │ │ │ │ -183# endif │ │ │ │ │ -184#endif /* !READSOCKET */ │ │ │ │ │ -185 │ │ │ │ │ -186#ifndef WRITESOCKET │ │ │ │ │ -187# ifdef MSG_NOSIGNAL │ │ │ │ │ -188# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL) │ │ │ │ │ -189# else │ │ │ │ │ -190# define WRITESOCKET(s,b,l) write((s), (b), (l)) │ │ │ │ │ -191# endif │ │ │ │ │ -192#endif /* !WRITESOCKET */ │ │ │ │ │ -193 │ │ │ │ │ -194#ifndef CLOSESOCKET │ │ │ │ │ -195#define CLOSESOCKET(s) close((s)) │ │ │ │ │ -196#endif /* !CLOSESOCKET */ │ │ │ │ │ -197 │ │ │ │ │ -198#ifndef IOCTLSOCKET │ │ │ │ │ -199#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l)) │ │ │ │ │ -200#endif /* !IOCTLSOCKET */ │ │ │ │ │ -201 │ │ │ │ │ -202#ifndef SOCKLEN_T │ │ │ │ │ -203# define SOCKLEN_T socklen_t │ │ │ │ │ -204#endif │ │ │ │ │ -205 │ │ │ │ │ -206#ifndef _WIN32 │ │ │ │ │ -207typedef int TDS_SYS_SOCKET; │ │ │ │ │ -208#define INVALID_SOCKET -1 │ │ │ │ │ -209#define TDS_IS_SOCKET_INVALID(s) ((s) < 0) │ │ │ │ │ -210#else │ │ │ │ │ -211typedef SOCKET TDS_SYS_SOCKET; │ │ │ │ │ -212#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET) │ │ │ │ │ -213#endif │ │ │ │ │ -214 │ │ │ │ │ -215#define tds_accept accept │ │ │ │ │ -216#define tds_getpeername getpeername │ │ │ │ │ -217#define tds_getsockopt getsockopt │ │ │ │ │ -218#define tds_getsockname getsockname │ │ │ │ │ -219#define tds_recvfrom recvfrom │ │ │ │ │ -220 │ │ │ │ │ -221#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4 │ │ │ │ │ -222# if HAVE__XPG_ACCEPT │ │ │ │ │ -223# undef tds_accept │ │ │ │ │ -224# define tds_accept _xpg_accept │ │ │ │ │ -225# elif HAVE___ACCEPT │ │ │ │ │ -226# undef tds_accept │ │ │ │ │ -227# define tds_accept __accept │ │ │ │ │ -228# endif │ │ │ │ │ -229# if HAVE__XPG_GETPEERNAME │ │ │ │ │ -230# undef tds_getpeername │ │ │ │ │ -231# define tds_getpeername _xpg_getpeername │ │ │ │ │ -232# elif HAVE___GETPEERNAME │ │ │ │ │ -233# undef tds_getpeername │ │ │ │ │ -234# define tds_getpeername __getpeername │ │ │ │ │ -235# endif │ │ │ │ │ -236# if HAVE__XPG_GETSOCKOPT │ │ │ │ │ -237# undef tds_getsockopt │ │ │ │ │ -238# define tds_getsockopt _xpg_getsockopt │ │ │ │ │ -239# elif HAVE___GETSOCKOPT │ │ │ │ │ -240# undef tds_getsockopt │ │ │ │ │ -241# define tds_getsockopt __getsockopt │ │ │ │ │ -242# endif │ │ │ │ │ -243# if HAVE__XPG_GETSOCKNAME │ │ │ │ │ -244# undef tds_getsockname │ │ │ │ │ -245# define tds_getsockname _xpg_getsockname │ │ │ │ │ -246# elif HAVE___GETSOCKNAME │ │ │ │ │ -247# undef tds_getsockname │ │ │ │ │ -248# define tds_getsockname __getsockname │ │ │ │ │ -249# endif │ │ │ │ │ -250# if HAVE__XPG_RECVFROM │ │ │ │ │ -251# undef tds_recvfrom │ │ │ │ │ -252# define tds_recvfrom _xpg_recvfrom │ │ │ │ │ -253# elif HAVE___RECVFROM │ │ │ │ │ -254# undef tds_recvfrom │ │ │ │ │ -255# define tds_recvfrom __recvfrom │ │ │ │ │ -256# endif │ │ │ │ │ -257#endif │ │ │ │ │ -258 │ │ │ │ │ -259#ifdef HAVE_STDINT_H │ │ │ │ │ -260#include │ │ │ │ │ -261#endif │ │ │ │ │ -262 │ │ │ │ │ -263#ifdef HAVE_INTTYPES_H │ │ │ │ │ -264#include │ │ │ │ │ -265#endif │ │ │ │ │ -266 │ │ │ │ │ -267#ifndef PRId64 │ │ │ │ │ -268#define PRId64 TDS_I64_PREFIX "d" │ │ │ │ │ -269#endif │ │ │ │ │ -270#ifndef PRIu64 │ │ │ │ │ -271#define PRIu64 TDS_I64_PREFIX "u" │ │ │ │ │ -272#endif │ │ │ │ │ -273#ifndef PRIx64 │ │ │ │ │ -274#define PRIx64 TDS_I64_PREFIX "x" │ │ │ │ │ -275#endif │ │ │ │ │ -276 │ │ │ │ │ -277#ifndef UINT64_C │ │ │ │ │ -278# if SIZEOF_INT >= 8 │ │ │ │ │ -279# define UINT64_C(c) c ## U │ │ │ │ │ -280# define INT64_C(c) c │ │ │ │ │ -281# elif SIZEOF_LONG >= 8 │ │ │ │ │ -282# define UINT64_C(c) c ## UL │ │ │ │ │ -283# define INT64_C(c) c ## L │ │ │ │ │ -284# elif SIZEOF_LONG_LONG >= 8 │ │ │ │ │ -285# define UINT64_C(c) c ## ULL │ │ │ │ │ -286# define INT64_C(c) c ## LL │ │ │ │ │ -287# elif SIZEOF___INT64 >= 8 │ │ │ │ │ -288# define UINT64_C(c) c ## ui64 │ │ │ │ │ -289# define INT64_C(c) c ## i64 │ │ │ │ │ -290# else │ │ │ │ │ -291# error Unable to understand how to define 64 bit constants │ │ │ │ │ -292# endif │ │ │ │ │ -293#endif │ │ │ │ │ -294 │ │ │ │ │ -295#include │ │ │ │ │ -296 │ │ │ │ │ -297#endif /* _tdsguard_gbdINUKdHN7rAOavGyKkWw_ */ │ │ │ │ │ +169 DSTR sql_desc_base_column_name; │ │ │ │ │ +170 DSTR sql_desc_base_table_name; │ │ │ │ │ +171 SQLUINTEGER sql_desc_auto_unique_value; │ │ │ │ │ +172 SQLINTEGER sql_desc_case_sensitive; │ │ │ │ │ +173 DSTR sql_desc_catalog_name; │ │ │ │ │ +174 SQLPOINTER sql_desc_data_ptr; │ │ │ │ │ +175 SQLSMALLINT sql_desc_concise_type; │ │ │ │ │ +176 SQLSMALLINT sql_desc_datetime_interval_code; │ │ │ │ │ +177 SQLINTEGER sql_desc_datetime_interval_precision; │ │ │ │ │ +178 SQLLEN sql_desc_display_size; │ │ │ │ │ +179 SQLLEN *sql_desc_indicator_ptr; │ │ │ │ │ +180 DSTR sql_desc_label; │ │ │ │ │ +181 SQLULEN sql_desc_length; │ │ │ │ │ +182 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ +183 const char *sql_desc_literal_prefix; │ │ │ │ │ +184 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ +185 const char *sql_desc_literal_suffix; │ │ │ │ │ +186 DSTR sql_desc_local_type_name; │ │ │ │ │ +187 DSTR sql_desc_name; │ │ │ │ │ +188 SQLSMALLINT sql_desc_fixed_prec_scale; │ │ │ │ │ +189 SQLSMALLINT sql_desc_nullable; │ │ │ │ │ +190 SQLINTEGER sql_desc_num_prec_radix; │ │ │ │ │ +191 SQLLEN sql_desc_octet_length; │ │ │ │ │ +192 SQLLEN *sql_desc_octet_length_ptr; │ │ │ │ │ +193 SQLSMALLINT sql_desc_parameter_type; │ │ │ │ │ +194 SQLSMALLINT sql_desc_precision; │ │ │ │ │ +195 SQLSMALLINT sql_desc_rowver; │ │ │ │ │ +196 SQLSMALLINT sql_desc_scale; │ │ │ │ │ +197 DSTR sql_desc_schema_name; │ │ │ │ │ +198 DSTR sql_desc_table_name; │ │ │ │ │ +199 SQLSMALLINT sql_desc_searchable; │ │ │ │ │ +200 SQLSMALLINT sql_desc_type; │ │ │ │ │ +201 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ +202 const char *sql_desc_type_name; │ │ │ │ │ +203 SQLSMALLINT sql_desc_unnamed; │ │ │ │ │ +204 SQLSMALLINT sql_desc_unsigned; │ │ │ │ │ +205 SQLSMALLINT sql_desc_updatable; │ │ │ │ │ +206}; │ │ │ │ │ +207 │ │ │ │ │ +208struct _hdesc │ │ │ │ │ +209{ │ │ │ │ │ +210 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ +211 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ +212 tds_mutex mtx; │ │ │ │ │ +213 int type; │ │ │ │ │ +220 int focus; │ │ │ │ │ +221 SQLHANDLE parent; │ │ │ │ │ +222 struct _dheader header; │ │ │ │ │ +223 struct _drecord *records; │ │ │ │ │ +224}; │ │ │ │ │ +225 │ │ │ │ │ +226typedef struct _hdesc TDS_DESC; │ │ │ │ │ +227 │ │ │ │ │ +228#define DESC_IRD 1 │ │ │ │ │ +229#define DESC_IPD 2 │ │ │ │ │ +230#define DESC_ARD 3 │ │ │ │ │ +231#define DESC_APD 4 │ │ │ │ │ +232 │ │ │ │ │ +233struct _heattr │ │ │ │ │ +234{ │ │ │ │ │ +235 SQLUINTEGER connection_pooling; │ │ │ │ │ +236 SQLUINTEGER cp_match; │ │ │ │ │ +237 SQLINTEGER odbc_version; │ │ │ │ │ +238 SQLINTEGER output_nts; │ │ │ │ │ +239}; │ │ │ │ │ +240 │ │ │ │ │ +241struct _hchk │ │ │ │ │ +242{ │ │ │ │ │ +243 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ +244 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ +245 tds_mutex mtx; │ │ │ │ │ +246}; │ │ │ │ │ +247 │ │ │ │ │ +248struct _henv │ │ │ │ │ +249{ │ │ │ │ │ +250 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ +251 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ +252 tds_mutex mtx; │ │ │ │ │ +253 TDSCONTEXT *tds_ctx; │ │ │ │ │ +254 struct _heattr attr; │ │ │ │ │ +255}; │ │ │ │ │ +256 │ │ │ │ │ +257struct _hcattr │ │ │ │ │ +258{ │ │ │ │ │ +259 SQLUINTEGER access_mode; │ │ │ │ │ +260 SQLUINTEGER async_enable; │ │ │ │ │ +261 SQLUINTEGER auto_ipd; │ │ │ │ │ +262 SQLUINTEGER autocommit; │ │ │ │ │ +263 SQLUINTEGER connection_dead; │ │ │ │ │ +264 SQLUINTEGER connection_timeout; │ │ │ │ │ +265 DSTR current_catalog; │ │ │ │ │ +266 SQLUINTEGER login_timeout; │ │ │ │ │ +267 SQLUINTEGER metadata_id; │ │ │ │ │ +268 SQLUINTEGER odbc_cursors; │ │ │ │ │ +269 SQLUINTEGER packet_size; │ │ │ │ │ +270 SQLHWND quite_mode; │ │ │ │ │ +271 DSTR translate_lib; │ │ │ │ │ +272 SQLUINTEGER translate_option; │ │ │ │ │ +273 SQLUINTEGER txn_isolation; │ │ │ │ │ +274 SQLUINTEGER mars_enabled; │ │ │ │ │ +275 SQLUINTEGER cursor_type; │ │ │ │ │ +276 SQLUINTEGER bulk_enabled; │ │ │ │ │ +277#ifdef TDS_NO_DM │ │ │ │ │ +278 SQLUINTEGER trace; │ │ │ │ │ +279 DSTR tracefile; │ │ │ │ │ +280#endif │ │ │ │ │ +281}; │ │ │ │ │ +282 │ │ │ │ │ +283#define TDS_MAX_APP_DESC 100 │ │ │ │ │ +284 │ │ │ │ │ +285struct _hstmt; │ │ │ │ │ +286struct _hdbc │ │ │ │ │ +287{ │ │ │ │ │ +288 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ +289 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ +290 tds_mutex mtx; │ │ │ │ │ +291 struct _henv *env; │ │ │ │ │ +292 TDSSOCKET *tds_socket; │ │ │ │ │ +293 DSTR dsn; │ │ │ │ │ +294 DSTR oldpwd; │ │ │ │ │ +295#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ +296 int original_charset_num; │ │ │ │ │ +297 TDSICONV *mb_conv; │ │ │ │ │ +298#endif │ │ │ │ │ +299 │ │ │ │ │ +305 struct _hstmt *current_statement; │ │ │ │ │ +307 struct _hstmt *stmt_list; │ │ │ │ │ +308 struct _hcattr attr; │ │ │ │ │ +310 TDS_DESC *uad[TDS_MAX_APP_DESC]; │ │ │ │ │ +312 unsigned int cursor_support:1; │ │ │ │ │ +313 unsigned int use_oldpwd:1; │ │ │ │ │ +314 TDS_INT default_query_timeout; │ │ │ │ │ +315 │ │ │ │ │ +316 TDSBCPINFO *bcpinfo; │ │ │ │ │ +317}; │ │ │ │ │ +318 │ │ │ │ │ +319struct _hsattr │ │ │ │ │ +320{ │ │ │ │ │ +321 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */ │ │ │ │ │ +322/* TDS_DESC *app_row_desc; */ │ │ │ │ │ +323/* TDS_DESC *app_param_desc; */ │ │ │ │ │ +324 SQLUINTEGER async_enable; │ │ │ │ │ +325 SQLUINTEGER concurrency; │ │ │ │ │ +326 SQLUINTEGER cursor_scrollable; │ │ │ │ │ +327 SQLUINTEGER cursor_sensitivity; │ │ │ │ │ +328 SQLUINTEGER cursor_type; │ │ │ │ │ +329 SQLUINTEGER enable_auto_ipd; │ │ │ │ │ +330 SQLPOINTER fetch_bookmark_ptr; │ │ │ │ │ +331 SQLULEN keyset_size; │ │ │ │ │ +332 SQLULEN max_length; │ │ │ │ │ +333 SQLULEN max_rows; │ │ │ │ │ +334 SQLUINTEGER metadata_id; │ │ │ │ │ +335 SQLUINTEGER noscan; │ │ │ │ │ +336 /* apd->sql_desc_bind_offset_ptr */ │ │ │ │ │ +337 /* SQLUINTEGER *param_bind_offset_ptr; */ │ │ │ │ │ +338 /* apd->sql_desc_bind_type */ │ │ │ │ │ +339 /* SQLUINTEGER param_bind_type; */ │ │ │ │ │ +340 /* apd->sql_desc_array_status_ptr */ │ │ │ │ │ +341 /* SQLUSMALLINT *param_operation_ptr; */ │ │ │ │ │ +342 /* ipd->sql_desc_array_status_ptr */ │ │ │ │ │ +343 /* SQLUSMALLINT *param_status_ptr; */ │ │ │ │ │ +344 /* ipd->sql_desc_rows_processed_ptr */ │ │ │ │ │ +345 /* SQLUSMALLINT *params_processed_ptr; */ │ │ │ │ │ +346 /* apd->sql_desc_array_size */ │ │ │ │ │ +347 /* SQLUINTEGER paramset_size; */ │ │ │ │ │ +348 SQLUINTEGER query_timeout; │ │ │ │ │ +349 SQLUINTEGER retrieve_data; │ │ │ │ │ +350 /* ard->sql_desc_bind_offset_ptr */ │ │ │ │ │ +351 /* SQLUINTEGER *row_bind_offset_ptr; */ │ │ │ │ │ +352 /* ard->sql_desc_array_size */ │ │ │ │ │ +353 /* SQLUINTEGER row_array_size; */ │ │ │ │ │ +354 /* ard->sql_desc_bind_type */ │ │ │ │ │ +355 /* SQLUINTEGER row_bind_type; */ │ │ │ │ │ +356 SQLULEN row_number; │ │ │ │ │ +357 /* ard->sql_desc_array_status_ptr */ │ │ │ │ │ +358 /* SQLUINTEGER *row_operation_ptr; */ │ │ │ │ │ +359 /* ird->sql_desc_array_status_ptr */ │ │ │ │ │ +360 /* SQLUINTEGER *row_status_ptr; */ │ │ │ │ │ +361 /* ird->sql_desc_rows_processed_ptr */ │ │ │ │ │ +362 /* SQLUINTEGER *rows_fetched_ptr; */ │ │ │ │ │ +363 SQLUINTEGER simulate_cursor; │ │ │ │ │ +364 SQLUINTEGER use_bookmarks; │ │ │ │ │ +365 /* SQLGetStmtAttr only */ │ │ │ │ │ +366/* TDS_DESC *imp_row_desc; */ │ │ │ │ │ +367/* TDS_DESC *imp_param_desc; */ │ │ │ │ │ +368 DSTR qn_msgtext; │ │ │ │ │ +369 DSTR qn_options; │ │ │ │ │ +370 SQLUINTEGER qn_timeout; │ │ │ │ │ +371 SQLUINTEGER param_focus; │ │ │ │ │ +372}; │ │ │ │ │ +373 │ │ │ │ │ +374typedef enum │ │ │ │ │ +375{ │ │ │ │ │ +376 NOT_IN_ROW, │ │ │ │ │ +377 IN_NORMAL_ROW, │ │ │ │ │ +378 IN_COMPUTE_ROW, │ │ │ │ │ +379 AFTER_COMPUTE_ROW, │ │ │ │ │ +380 PRE_NORMAL_ROW │ │ │ │ │ +381} TDS_ODBC_ROW_STATUS; │ │ │ │ │ +382 │ │ │ │ │ +383typedef enum │ │ │ │ │ +384{ │ │ │ │ │ +385 ODBC_SPECIAL_NONE = 0, │ │ │ │ │ +386 ODBC_SPECIAL_GETTYPEINFO = 1, │ │ │ │ │ +387 ODBC_SPECIAL_COLUMNS = 2, │ │ │ │ │ +388 ODBC_SPECIAL_PROCEDURECOLUMNS = 3, │ │ │ │ │ +389 ODBC_SPECIAL_SPECIALCOLUMNS = 4 │ │ │ │ │ +390} TDS_ODBC_SPECIAL_ROWS; │ │ │ │ │ +391 │ │ │ │ │ +392struct _hstmt │ │ │ │ │ +393{ │ │ │ │ │ +394 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ +395 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ +396 tds_mutex mtx; │ │ │ │ │ +397 struct _hdbc *dbc; │ │ │ │ │ +399 DSTR query; │ │ │ │ │ +401 TDSSOCKET *tds; │ │ │ │ │ +402 │ │ │ │ │ +404 struct _hstmt *next; │ │ │ │ │ +406 struct _hstmt *prev; │ │ │ │ │ +407 │ │ │ │ │ +408 /* begin prepared query stuff */ │ │ │ │ │ +409 unsigned is_prepared_query:1; │ │ │ │ │ +410 unsigned prepared_query_is_func:1; │ │ │ │ │ +411 unsigned prepared_query_is_rpc:1; │ │ │ │ │ +416 unsigned need_reprepare:1; │ │ │ │ │ +417 unsigned param_data_called:1; │ │ │ │ │ +418 unsigned params_queried:1; │ │ │ │ │ +419 unsigned params_set:1; │ │ │ │ │ +420 /* end prepared query stuff */ │ │ │ │ │ +421 │ │ │ │ │ +423 TDSPARAMINFO *params; │ │ │ │ │ +425 int param_num; │ │ │ │ │ +427 size_t prepared_pos; │ │ │ │ │ +428 │ │ │ │ │ +429 unsigned int curr_param_row, num_param_rows; │ │ │ │ │ +430 │ │ │ │ │ +432 unsigned int param_count; │ │ │ │ │ +433 int row; │ │ │ │ │ +435 TDS_INT8 row_count; │ │ │ │ │ +437 TDS_ODBC_ROW_STATUS row_status; │ │ │ │ │ +438 /* do NOT free dynamic, free from socket or attach to connection */ │ │ │ │ │ +439 TDSDYNAMIC *dyn; │ │ │ │ │ +440 TDS_DESC *ard, *ird, *apd, *ipd; │ │ │ │ │ +441 TDS_DESC *orig_ard, *orig_apd; │ │ │ │ │ +442 SQLULEN sql_rowset_size; │ │ │ │ │ +443 struct _hsattr attr; │ │ │ │ │ +444 DSTR cursor_name; /* auto generated cursor name */ │ │ │ │ │ +445 TDS_ODBC_SPECIAL_ROWS special_row; │ │ │ │ │ +446 /* do NOT free cursor, free from socket or attach to connection */ │ │ │ │ │ +447 TDSCURSOR *cursor; │ │ │ │ │ +448}; │ │ │ │ │ +449 │ │ │ │ │ +450typedef struct _henv TDS_ENV; │ │ │ │ │ +451typedef struct _hdbc TDS_DBC; │ │ │ │ │ +452typedef struct _hstmt TDS_STMT; │ │ │ │ │ +453typedef struct _hchk TDS_CHK; │ │ │ │ │ +454 │ │ │ │ │ +455typedef struct { │ │ │ │ │ +456 /* this must be the first member */ │ │ │ │ │ +457 TDSCOLUMNFUNCS common; │ │ │ │ │ +458 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER │ │ │ │ │ +odbc_ver); │ │ │ │ │ +459} TDS_FUNCS; │ │ │ │ │ +460 │ │ │ │ │ +461#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV) │ │ │ │ │ +462#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC) │ │ │ │ │ +463#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT) │ │ │ │ │ +464#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC) │ │ │ │ │ +465 │ │ │ │ │ +466/* fix a bug in MingW headers */ │ │ │ │ │ +467#ifdef __MINGW32__ │ │ │ │ │ +468#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND) │ │ │ │ │ +469 │ │ │ │ │ +470#undef SQL_INTERVAL_YEAR │ │ │ │ │ +471#undef SQL_INTERVAL_MONTH │ │ │ │ │ +472#undef SQL_INTERVAL_DAY │ │ │ │ │ +473#undef SQL_INTERVAL_HOUR │ │ │ │ │ +474#undef SQL_INTERVAL_MINUTE │ │ │ │ │ +475#undef SQL_INTERVAL_SECOND │ │ │ │ │ +476#undef SQL_INTERVAL_YEAR_TO_MONTH │ │ │ │ │ +477#undef SQL_INTERVAL_DAY_TO_HOUR │ │ │ │ │ +478#undef SQL_INTERVAL_DAY_TO_MINUTE │ │ │ │ │ +479#undef SQL_INTERVAL_DAY_TO_SECOND │ │ │ │ │ +480#undef SQL_INTERVAL_HOUR_TO_MINUTE │ │ │ │ │ +481#undef SQL_INTERVAL_HOUR_TO_SECOND │ │ │ │ │ +482#undef SQL_INTERVAL_MINUTE_TO_SECOND │ │ │ │ │ +483 │ │ │ │ │ +484#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR) │ │ │ │ │ +485#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH) │ │ │ │ │ +486#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY) │ │ │ │ │ +487#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR) │ │ │ │ │ +488#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE) │ │ │ │ │ +489#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND) │ │ │ │ │ +490#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH) │ │ │ │ │ +491#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR) │ │ │ │ │ +492#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE) │ │ │ │ │ +493#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND) │ │ │ │ │ +494#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE) │ │ │ │ │ +495#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND) │ │ │ │ │ +496#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND) │ │ │ │ │ +497 │ │ │ │ │ +498#endif │ │ │ │ │ +499#endif │ │ │ │ │ +500 │ │ │ │ │ +501#ifdef _WIN32 │ │ │ │ │ +502bool get_login_info(HWND hwndParent, TDSLOGIN * login); │ │ │ │ │ +503#endif │ │ │ │ │ +504 │ │ │ │ │ +505#define ODBC_PARAM_LIST \ │ │ │ │ │ +506 ODBC_PARAM(Servername) \ │ │ │ │ │ +507 ODBC_PARAM(Server) \ │ │ │ │ │ +508 ODBC_PARAM(DSN) \ │ │ │ │ │ +509 ODBC_PARAM(UID) \ │ │ │ │ │ +510 ODBC_PARAM(PWD) \ │ │ │ │ │ +511 ODBC_PARAM(Address) \ │ │ │ │ │ +512 ODBC_PARAM(Port) \ │ │ │ │ │ +513 ODBC_PARAM(TDS_Version) \ │ │ │ │ │ +514 ODBC_PARAM(Language) \ │ │ │ │ │ +515 ODBC_PARAM(Database) \ │ │ │ │ │ +516 ODBC_PARAM(TextSize) \ │ │ │ │ │ +517 ODBC_PARAM(PacketSize) \ │ │ │ │ │ +518 ODBC_PARAM(ClientCharset) \ │ │ │ │ │ +519 ODBC_PARAM(DumpFile) \ │ │ │ │ │ +520 ODBC_PARAM(DumpFileAppend) \ │ │ │ │ │ +521 ODBC_PARAM(DebugFlags) \ │ │ │ │ │ +522 ODBC_PARAM(Encryption) \ │ │ │ │ │ +523 ODBC_PARAM(Trusted_Connection) \ │ │ │ │ │ +524 ODBC_PARAM(APP) \ │ │ │ │ │ +525 ODBC_PARAM(WSID) \ │ │ │ │ │ +526 ODBC_PARAM(UseNTLMv2) \ │ │ │ │ │ +527 ODBC_PARAM(MARS_Connection) \ │ │ │ │ │ +528 ODBC_PARAM(REALM) \ │ │ │ │ │ +529 ODBC_PARAM(ServerSPN) \ │ │ │ │ │ +530 ODBC_PARAM(AttachDbFilename) \ │ │ │ │ │ +531 ODBC_PARAM(ApplicationIntent) \ │ │ │ │ │ +532 ODBC_PARAM(Timeout) \ │ │ │ │ │ +533 ODBC_PARAM(Encrypt) \ │ │ │ │ │ +534 ODBC_PARAM(HostNameInCertificate) │ │ │ │ │ +535 │ │ │ │ │ +536#define ODBC_PARAM(p) ODBC_PARAM_##p, │ │ │ │ │ +537enum { │ │ │ │ │ +538 ODBC_PARAM_LIST │ │ │ │ │ +539 ODBC_PARAM_SIZE │ │ │ │ │ +540}; │ │ │ │ │ +541#undef ODBC_PARAM │ │ │ │ │ +542 │ │ │ │ │ +543#define ODBC_PARAM(p) extern const char odbc_param_##p[]; │ │ │ │ │ +544ODBC_PARAM_LIST │ │ │ │ │ +545#undef ODBC_PARAM │ │ │ │ │ +546 │ │ │ │ │ +547/* │ │ │ │ │ +548 * connectparams.h │ │ │ │ │ +549 */ │ │ │ │ │ +550 │ │ │ │ │ +551typedef struct { │ │ │ │ │ +552 const char *p; │ │ │ │ │ +553 size_t len; │ │ │ │ │ +554} TDS_PARSED_PARAM; │ │ │ │ │ +555 │ │ │ │ │ +563bool odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, │ │ │ │ │ +const char *connect_string_end, │ │ │ │ │ +564 TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params); │ │ │ │ │ +565bool odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login); │ │ │ │ │ +566#ifdef _WIN32 │ │ │ │ │ +567int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char │ │ │ │ │ +**out); │ │ │ │ │ +568#endif │ │ │ │ │ +569 │ │ │ │ │ +570/* │ │ │ │ │ +571 * convert_tds2sql.c │ │ │ │ │ +572 */ │ │ │ │ │ +573SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype, │ │ │ │ │ +574 TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd); │ │ │ │ │ +575SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_ │ │ │ │ │ +CHAR * dest, SQLULEN destlen); │ │ │ │ │ +576 │ │ │ │ │ +577 │ │ │ │ │ +578 │ │ │ │ │ +579/* │ │ │ │ │ +580 * descriptor.c │ │ │ │ │ +581 */ │ │ │ │ │ +582typedef struct { │ │ │ │ │ +583 DSTR type_name; │ │ │ │ │ +584 TDS_DESC *apd; │ │ │ │ │ +585 TDS_DESC *ipd; │ │ │ │ │ +586} SQLTVP; │ │ │ │ │ +587 │ │ │ │ │ +588TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, SQLSMALLINT alloc_ │ │ │ │ │ +type); │ │ │ │ │ +589SQLRETURN desc_free(TDS_DESC * desc); │ │ │ │ │ +590SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count); │ │ │ │ │ +591SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src); │ │ │ │ │ +592SQLRETURN desc_free_records(TDS_DESC * desc); │ │ │ │ │ +593TDS_DBC *desc_get_dbc(TDS_DESC *desc); │ │ │ │ │ +594SQLTVP *tvp_alloc(TDS_STMT *stmt); │ │ │ │ │ +595void tvp_free(SQLTVP *tvp); │ │ │ │ │ +596 │ │ │ │ │ +597/* │ │ │ │ │ +598 * odbc.c │ │ │ │ │ +599 */ │ │ │ │ │ +600 │ │ │ │ │ +601SQLRETURN odbc_SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow); │ │ │ │ │ +602 │ │ │ │ │ +603/* │ │ │ │ │ +604 * odbc_checks.h │ │ │ │ │ +605 */ │ │ │ │ │ +606#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +607/* macro */ │ │ │ │ │ +608#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env) │ │ │ │ │ +609#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc) │ │ │ │ │ +610#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt) │ │ │ │ │ +611#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc) │ │ │ │ │ +612/* declarations*/ │ │ │ │ │ +613void odbc_check_env_extra(TDS_ENV * env); │ │ │ │ │ +614void odbc_check_dbc_extra(TDS_DBC * dbc); │ │ │ │ │ +615void odbc_check_stmt_extra(TDS_STMT * stmt); │ │ │ │ │ +616void odbc_check_desc_extra(TDS_DESC * desc); │ │ │ │ │ +617#else │ │ │ │ │ +618/* macro */ │ │ │ │ │ +619#define CHECK_ENV_EXTRA(env) │ │ │ │ │ +620#define CHECK_DBC_EXTRA(dbc) │ │ │ │ │ +621#define CHECK_STMT_EXTRA(stmt) │ │ │ │ │ +622#define CHECK_DESC_EXTRA(desc) │ │ │ │ │ +623#endif │ │ │ │ │ +624 │ │ │ │ │ +625/* │ │ │ │ │ +626 * odbc_util.h │ │ │ │ │ +627 */ │ │ │ │ │ +628 │ │ │ │ │ +629/* helpers for ODBC wide string support */ │ │ │ │ │ +630#undef _wide │ │ │ │ │ +631#undef _WIDE │ │ │ │ │ +632#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ +633typedef union { │ │ │ │ │ +634 char mb[1]; │ │ │ │ │ +635 SQLWCHAR wide[1]; │ │ │ │ │ +636} ODBC_CHAR; │ │ │ │ │ +637# define _wide ,wide │ │ │ │ │ +638# define _wide0 ,0 │ │ │ │ │ +639# define _WIDE ,int wide │ │ │ │ │ +640#else │ │ │ │ │ +641# define _wide │ │ │ │ │ +642# define _wide0 │ │ │ │ │ +643# define _WIDE │ │ │ │ │ +644# define ODBC_CHAR SQLCHAR │ │ │ │ │ +645#endif │ │ │ │ │ +646SQLRETURN odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int │ │ │ │ │ +sql_len _WIDE); │ │ │ │ │ +647void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row); │ │ │ │ │ +648void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row); │ │ │ │ │ +649 │ │ │ │ │ +650void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, │ │ │ │ │ +SQLINTEGER odbc_ver); │ │ │ │ │ +651 │ │ │ │ │ +652int odbc_sql_to_c_type_default(int sql_type); │ │ │ │ │ +653TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, │ │ │ │ │ +int sql_unsigned); │ │ │ │ │ +654TDS_SERVER_TYPE odbc_c_to_server_type(int c_type); │ │ │ │ │ +655 │ │ │ │ │ +656unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE); │ │ │ │ │ +657void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string); │ │ │ │ │ +658SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct │ │ │ │ │ +_drecord *drec_ixd, │ │ │ │ │ +659 const TDS_DESC* axd, unsigned int n_row); │ │ │ │ │ +660 │ │ │ │ │ +661#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ +662DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * │ │ │ │ │ +str, int flag); │ │ │ │ │ +663#define odbc_dstr_copy(dbc, s, len, out) \ │ │ │ │ │ +664 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide) │ │ │ │ │ +665#define odbc_dstr_copy_oct(dbc, s, len, out) \ │ │ │ │ │ +666 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20) │ │ │ │ │ +667#else │ │ │ │ │ +668DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * │ │ │ │ │ +str); │ │ │ │ │ +669#define odbc_dstr_copy_oct odbc_dstr_copy │ │ │ │ │ +670#endif │ │ │ │ │ +671 │ │ │ │ │ +672 │ │ │ │ │ +673SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER │ │ │ │ │ +cbBuffer, void FAR * pcbBuffer, │ │ │ │ │ +674 const char *s, int len, int flag); │ │ │ │ │ +675#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ +676#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ +677 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_ │ │ │ │ │ +len, s, s_len, \ │ │ │ │ │ +678 (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10)) │ │ │ │ │ +679#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ +680 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof │ │ │ │ │ +(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30)) │ │ │ │ │ +681#else │ │ │ │ │ +682#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ +683 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_ │ │ │ │ │ +len)) == sizeof(SQLSMALLINT)?0:0x10)) │ │ │ │ │ +684#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ +685 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_ │ │ │ │ │ +len)) == sizeof(SQLSMALLINT)?0x20:0x30)) │ │ │ │ │ +686#endif │ │ │ │ │ +687 │ │ │ │ │ +688#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) \ │ │ │ │ │ +689 odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_ │ │ │ │ │ +len(s)) │ │ │ │ │ +690#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc, │ │ │ │ │ +buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s)) │ │ │ │ │ +691 │ │ │ │ │ +692SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT │ │ │ │ │ +interval); │ │ │ │ │ +693SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _ │ │ │ │ │ +drecord *drec, int check_only); │ │ │ │ │ +694SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval); │ │ │ │ │ +695SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ +*drec, int check_only); │ │ │ │ │ +696 │ │ │ │ │ +697SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec); │ │ │ │ │ +698void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err); │ │ │ │ │ +699 │ │ │ │ │ +700/* │ │ │ │ │ +701 * prepare_query.c │ │ │ │ │ +702 */ │ │ │ │ │ +703SQLRETURN prepare_call(struct _hstmt *stmt); │ │ │ │ │ +704SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s); │ │ │ │ │ +705int parse_prepared_query(struct _hstmt *stmt, bool compute_row); │ │ │ │ │ +706int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row); │ │ │ │ │ +707int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, │ │ │ │ │ +SQLLEN StrLen_or_Ind); │ │ │ │ │ +708const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type); │ │ │ │ │ +709const char *odbc_skip_rpc_name(const char *s); │ │ │ │ │ +710 │ │ │ │ │ +711/* │ │ │ │ │ +712 * sql2tds.c │ │ │ │ │ +713 */ │ │ │ │ │ +714SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, │ │ │ │ │ +const struct _drecord *drec_axd, TDSCOLUMN *curcol, │ │ │ │ │ +715 bool compute_row, const TDS_DESC* axd, unsigned int n_row); │ │ │ │ │ +716TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_ │ │ │ │ │ +DATETIMEALL * dta); │ │ │ │ │ +717 │ │ │ │ │ +718/* │ │ │ │ │ +719 * bcp.c │ │ │ │ │ +720 */ │ │ │ │ │ +721void odbc_bcp_free_storage(TDS_DBC *dbc); │ │ │ │ │ +722void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR │ │ │ │ │ +*hfile, const ODBC_CHAR *errfile, int direction _WIDE); │ │ │ │ │ +723void odbc_bcp_control(TDS_DBC *dbc, int field, void *value); │ │ │ │ │ +724void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column); │ │ │ │ │ +725void odbc_bcp_sendrow(TDS_DBC *dbc); │ │ │ │ │ +726int odbc_bcp_batch(TDS_DBC *dbc); │ │ │ │ │ +727int odbc_bcp_done(TDS_DBC *dbc); │ │ │ │ │ +728void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int │ │ │ │ │ +varlen, const void * terminator, int termlen, │ │ │ │ │ +729 int vartype, int table_column); │ │ │ │ │ +730 │ │ │ │ │ +731/* │ │ │ │ │ +732 * sqlwchar.c │ │ │ │ │ +733 */ │ │ │ │ │ +734#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T │ │ │ │ │ +735size_t sqlwcslen(const SQLWCHAR * s); │ │ │ │ │ +736 │ │ │ │ │ +737typedef struct sqlwstr_buf { │ │ │ │ │ +738 struct sqlwstr_buf *next; │ │ │ │ │ +739 wchar_t buf[256]; │ │ │ │ │ +740} SQLWSTRBUF; │ │ │ │ │ +741const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs); │ │ │ │ │ +742void sqlwstr_free(SQLWSTRBUF *bufs); │ │ │ │ │ +743#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL │ │ │ │ │ +744#define SQLWSTR(s) sqlwstr(s, &bufs) │ │ │ │ │ +745#define SQLWSTR_FREE() sqlwstr_free(bufs) │ │ │ │ │ +746#else │ │ │ │ │ +747#define sqlwcslen(s) wcslen(s) │ │ │ │ │ +748 │ │ │ │ │ +749#define SQLWSTR_BUFS(n) do {} while(0) │ │ │ │ │ +750#define SQLWSTR(s) ((const wchar_t*)(s)) │ │ │ │ │ +751#define SQLWSTR_FREE() do {} while(0) │ │ │ │ │ +752#endif │ │ │ │ │ +753 │ │ │ │ │ +754int odbc_get_wide_canonic(TDSCONNECTION *conn); │ │ │ │ │ +755 │ │ │ │ │ +756/* compatibility with old BCP implementation */ │ │ │ │ │ +757#define BCPHINTS_OLD 6 │ │ │ │ │ +758#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL_OLD (SQL_COPT_TDSODBC_IMPL_BASE+1) │ │ │ │ │ +759 │ │ │ │ │ +760/* iODBC extensions used by our driver */ │ │ │ │ │ +761#ifndef SQL_ATTR_DRIVER_UNICODE_TYPE │ │ │ │ │ +762#define SQL_ATTR_DRIVER_UNICODE_TYPE 1065 │ │ │ │ │ +763#endif │ │ │ │ │ +764 │ │ │ │ │ +765#ifndef SQL_DM_CP_UTF16 │ │ │ │ │ +766#define SQL_DM_CP_UTF16 1 │ │ │ │ │ +767#endif │ │ │ │ │ +768#ifndef SQL_DM_CP_UTF8 │ │ │ │ │ +769#define SQL_DM_CP_UTF8 2 │ │ │ │ │ +770#endif │ │ │ │ │ +771#ifndef SQL_DM_CP_UCS4 │ │ │ │ │ +772#define SQL_DM_CP_UCS4 3 │ │ │ │ │ +773#endif │ │ │ │ │ +774 │ │ │ │ │ +775#include │ │ │ │ │ +776 │ │ │ │ │ +777#ifdef __cplusplus │ │ │ │ │ +778#if 0 │ │ │ │ │ +779{ │ │ │ │ │ +780#endif │ │ │ │ │ +781} │ │ │ │ │ +782#endif │ │ │ │ │ +783 │ │ │ │ │ +784#endif │ │ │ │ │ +tds.h │ │ │ │ │ +Main include file for libtds. │ │ │ │ │ +odbc_set_concise_sql_type │ │ │ │ │ +SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ +*drec, int check_only) │ │ │ │ │ +Set concise type and all cascading field. │ │ │ │ │ +Definition odbc_util.c:985 │ │ │ │ │ +odbc_set_concise_c_type │ │ │ │ │ +SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ +*drec, int check_only) │ │ │ │ │ +Set concise type and all cascading field. │ │ │ │ │ +Definition odbc_util.c:1112 │ │ │ │ │ +odbc_get_param_len │ │ │ │ │ +SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _ │ │ │ │ │ +drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row) │ │ │ │ │ +Return length of parameter from parameter information. │ │ │ │ │ +Definition odbc_util.c:867 │ │ │ │ │ +odbc_c_to_server_type │ │ │ │ │ +TDS_SERVER_TYPE odbc_c_to_server_type(int c_type) │ │ │ │ │ +Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to │ │ │ │ │ +the SQL_C_* type. │ │ │ │ │ +Definition odbc_util.c:602 │ │ │ │ │ +odbc_set_string_flag │ │ │ │ │ +SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER │ │ │ │ │ +cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag) │ │ │ │ │ +Copy a string to client setting size according to ODBC convenction. │ │ │ │ │ +Definition odbc_util.c:302 │ │ │ │ │ +odbc_rdbms_version │ │ │ │ │ +void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string) │ │ │ │ │ +Returns the version of the RDBMS in the ODBC format. │ │ │ │ │ +Definition odbc_util.c:858 │ │ │ │ │ +tdsiconvinfo │ │ │ │ │ +Definition iconv.h:92 │ │ │ │ │ +_sql_error │ │ │ │ │ +Definition odbc.h:96 │ │ │ │ │ +_sql_errors │ │ │ │ │ +Definition odbc.h:109 │ │ │ │ │ +_dheader │ │ │ │ │ +Descriptor header. │ │ │ │ │ +Definition odbc.h:155 │ │ │ │ │ +_drecord │ │ │ │ │ +Descriptor record. │ │ │ │ │ +Definition odbc.h:168 │ │ │ │ │ +_hdesc │ │ │ │ │ +Definition odbc.h:209 │ │ │ │ │ +_hdesc::focus │ │ │ │ │ +int focus │ │ │ │ │ +Nested descriptor to use. │ │ │ │ │ +Definition odbc.h:220 │ │ │ │ │ +_heattr │ │ │ │ │ +Definition odbc.h:234 │ │ │ │ │ +_hchk │ │ │ │ │ +Definition odbc.h:242 │ │ │ │ │ +_henv │ │ │ │ │ +Definition odbc.h:249 │ │ │ │ │ +_hcattr │ │ │ │ │ +Definition odbc.h:258 │ │ │ │ │ +_hdbc │ │ │ │ │ +Definition odbc.h:287 │ │ │ │ │ +_hdbc::stmt_list │ │ │ │ │ +struct _hstmt * stmt_list │ │ │ │ │ +list of all statements allocated from this connection │ │ │ │ │ +Definition odbc.h:307 │ │ │ │ │ +_hdbc::uad │ │ │ │ │ +TDS_DESC * uad[TDS_MAX_APP_DESC] │ │ │ │ │ +descriptors associated to connection │ │ │ │ │ +Definition odbc.h:310 │ │ │ │ │ +_hdbc::current_statement │ │ │ │ │ +struct _hstmt * current_statement │ │ │ │ │ +Statement executing. │ │ │ │ │ +Definition odbc.h:305 │ │ │ │ │ +_hdbc::cursor_support │ │ │ │ │ +unsigned int cursor_support │ │ │ │ │ +<>0 if server handle cursors │ │ │ │ │ +Definition odbc.h:312 │ │ │ │ │ +_hsattr │ │ │ │ │ +Definition odbc.h:320 │ │ │ │ │ +_hstmt │ │ │ │ │ +Definition odbc.h:393 │ │ │ │ │ +_hstmt::param_count │ │ │ │ │ +unsigned int param_count │ │ │ │ │ +number of parameter in current query │ │ │ │ │ +Definition odbc.h:432 │ │ │ │ │ +_hstmt::row_status │ │ │ │ │ +TDS_ODBC_ROW_STATUS row_status │ │ │ │ │ +status of row, it can happen that this flag mark that we are still parsing row, │ │ │ │ │ +this it's normal │ │ │ │ │ +Definition odbc.h:437 │ │ │ │ │ +_hstmt::prepared_pos │ │ │ │ │ +size_t prepared_pos │ │ │ │ │ +position in prepared query to check parameters, used only in RPC │ │ │ │ │ +Definition odbc.h:427 │ │ │ │ │ +_hstmt::row_count │ │ │ │ │ +TDS_INT8 row_count │ │ │ │ │ +row count to return │ │ │ │ │ +Definition odbc.h:435 │ │ │ │ │ +_hstmt::param_num │ │ │ │ │ +int param_num │ │ │ │ │ +last valid parameter in params, it's a ODBC index (from 1 relative to │ │ │ │ │ +descriptor) │ │ │ │ │ +Definition odbc.h:425 │ │ │ │ │ +_hstmt::query │ │ │ │ │ +DSTR query │ │ │ │ │ +query to execute │ │ │ │ │ +Definition odbc.h:399 │ │ │ │ │ +_hstmt::need_reprepare │ │ │ │ │ +unsigned need_reprepare │ │ │ │ │ +Prepared statement needs to be prepared again. │ │ │ │ │ +Definition odbc.h:416 │ │ │ │ │ +_hstmt::next │ │ │ │ │ +struct _hstmt * next │ │ │ │ │ +next in list │ │ │ │ │ +Definition odbc.h:404 │ │ │ │ │ +_hstmt::tds │ │ │ │ │ +TDSSOCKET * tds │ │ │ │ │ +socket (only if active) │ │ │ │ │ +Definition odbc.h:401 │ │ │ │ │ +_hstmt::prev │ │ │ │ │ +struct _hstmt * prev │ │ │ │ │ +previous in list │ │ │ │ │ +Definition odbc.h:406 │ │ │ │ │ +_hstmt::params │ │ │ │ │ +TDSPARAMINFO * params │ │ │ │ │ +parameters saved │ │ │ │ │ +Definition odbc.h:423 │ │ │ │ │ +TDS_FUNCS │ │ │ │ │ +Definition odbc.h:455 │ │ │ │ │ +TDS_PARSED_PARAM │ │ │ │ │ +Definition odbc.h:551 │ │ │ │ │ +SQLTVP │ │ │ │ │ +Definition odbc.h:582 │ │ │ │ │ +TDS_DATETIMEALL │ │ │ │ │ +This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ +TIME information. │ │ │ │ │ +Definition tds.h:145 │ │ │ │ │ +tds_login │ │ │ │ │ +Definition tds.h:498 │ │ │ │ │ +tds_column_funcs │ │ │ │ │ +Definition tds.h:628 │ │ │ │ │ +tds_column │ │ │ │ │ +Metadata about columns in regular and compute rows. │ │ │ │ │ +Definition tds.h:674 │ │ │ │ │ +tds_result_info │ │ │ │ │ +Hold information for any results. │ │ │ │ │ +Definition tds.h:754 │ │ │ │ │ +tds_cursor │ │ │ │ │ +Holds information about a cursor. │ │ │ │ │ +Definition tds.h:922 │ │ │ │ │ +tds_dynamic │ │ │ │ │ +Holds information for a dynamic (also called prepared) query. │ │ │ │ │ +Definition tds.h:962 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ +tds_connection │ │ │ │ │ +Definition tds.h:1077 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ +tds_bcpinfo │ │ │ │ │ +Definition tds.h:1684 │ │ │ │ │ +tds_dstr │ │ │ │ │ +Structure to hold a string. │ │ │ │ │ +Definition string.h:36 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00416_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/encodings.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/dlist.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,588 +70,72 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
encodings.h
│ │ │ │ +
dlist.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/*
│ │ │ │ -
2 * This file produced from ./encodings.pl on Sat Aug 30 09:01:31 2025
│ │ │ │ -
3 */
│ │ │ │ -
4#ifdef TDS_ICONV_ENCODING_TABLES
│ │ │ │ -
5
│ │ │ │ -
6static const TDS_ENCODING canonic_charsets[] = {
│ │ │ │ -
7 { "ISO-8859-1", 1, 1, 0}, /* 0 */
│ │ │ │ -
8 { "UTF-8", 1, 4, 1}, /* 1 */
│ │ │ │ -
9 { "UCS-2LE", 2, 2, 2}, /* 2 */
│ │ │ │ -
10 { "UCS-2BE", 2, 2, 3}, /* 3 */
│ │ │ │ -
11 { "UTF-16LE", 2, 4, 4}, /* 4 */
│ │ │ │ -
12 { "UTF-16BE", 2, 4, 5}, /* 5 */
│ │ │ │ -
13 { "UCS-4LE", 4, 4, 6}, /* 6 */
│ │ │ │ -
14 { "UCS-4BE", 4, 4, 7}, /* 7 */
│ │ │ │ -
15 { "UTF-32LE", 4, 4, 8}, /* 8 */
│ │ │ │ -
16 { "UTF-32BE", 4, 4, 9}, /* 9 */
│ │ │ │ -
17 { "ARMSCII-8", 1, 1, 10}, /* 10 */
│ │ │ │ -
18 { "BIG-5", 1, 2, 11}, /* 11 */
│ │ │ │ -
19 { "BIG5-HKSCS", 1, 2, 12}, /* 12 */
│ │ │ │ -
20 { "C99", 1, 1, 13}, /* 13 */
│ │ │ │ -
21 { "CHINESE", 1, 1, 14}, /* 14 */
│ │ │ │ -
22 { "CN", 1, 1, 15}, /* 15 */
│ │ │ │ -
23 { "CN-GB", 1, 2, 16}, /* 16 */
│ │ │ │ -
24 { "CN-GB-ISOIR165", 1, 1, 17}, /* 17 */
│ │ │ │ -
25 { "CP1133", 1, 1, 18}, /* 18 */
│ │ │ │ -
26 { "CP1250", 1, 1, 19}, /* 19 */
│ │ │ │ -
27 { "CP1251", 1, 1, 20}, /* 20 */
│ │ │ │ -
28 { "CP1252", 1, 1, 21}, /* 21 */
│ │ │ │ -
29 { "CP1253", 1, 1, 22}, /* 22 */
│ │ │ │ -
30 { "CP1254", 1, 1, 23}, /* 23 */
│ │ │ │ -
31 { "CP1255", 1, 1, 24}, /* 24 */
│ │ │ │ -
32 { "CP1256", 1, 1, 25}, /* 25 */
│ │ │ │ -
33 { "CP1257", 1, 1, 26}, /* 26 */
│ │ │ │ -
34 { "CP1258", 1, 1, 27}, /* 27 */
│ │ │ │ -
35 { "CP1361", 1, 2, 28}, /* 28 */
│ │ │ │ -
36 { "CP437", 1, 1, 29}, /* 29 */
│ │ │ │ -
37 { "CP850", 1, 1, 30}, /* 30 */
│ │ │ │ -
38 { "CP862", 1, 1, 31}, /* 31 */
│ │ │ │ -
39 { "CP866", 1, 1, 32}, /* 32 */
│ │ │ │ -
40 { "CP874", 1, 1, 33}, /* 33 */
│ │ │ │ -
41 { "CP932", 1, 2, 34}, /* 34 */
│ │ │ │ -
42 { "CP936", 1, 2, 35}, /* 35 */
│ │ │ │ -
43 { "CP949", 1, 2, 36}, /* 36 */
│ │ │ │ -
44 { "CP950", 1, 2, 37}, /* 37 */
│ │ │ │ -
45 { "EUC-JP", 1, 3, 38}, /* 38 */
│ │ │ │ -
46 { "EUC-KR", 1, 2, 39}, /* 39 */
│ │ │ │ -
47 { "EUC-TW", 1, 4, 40}, /* 40 */
│ │ │ │ -
48 { "GB18030", 1, 4, 41}, /* 41 */
│ │ │ │ -
49 { "GEORGIAN-ACADEMY", 1, 1, 42}, /* 42 */
│ │ │ │ -
50 { "GEORGIAN-PS", 1, 1, 43}, /* 43 */
│ │ │ │ -
51 { "HZ", 1, 1, 44}, /* 44 */
│ │ │ │ -
52 { "ISO-2022-CN", 1, 4, 45}, /* 45 */
│ │ │ │ -
53 { "ISO-2022-CN-EXT", 1, 4, 46}, /* 46 */
│ │ │ │ -
54 { "ISO-2022-JP", 1, 1, 47}, /* 47 */
│ │ │ │ -
55 { "ISO-2022-JP-1", 1, 1, 48}, /* 48 */
│ │ │ │ -
56 { "ISO-2022-JP-2", 1, 1, 49}, /* 49 */
│ │ │ │ -
57 { "ISO-2022-KR", 1, 2, 50}, /* 50 */
│ │ │ │ -
58 { "ISO-8859-10", 1, 1, 51}, /* 51 */
│ │ │ │ -
59 { "ISO-8859-13", 1, 1, 52}, /* 52 */
│ │ │ │ -
60 { "ISO-8859-14", 1, 1, 53}, /* 53 */
│ │ │ │ -
61 { "ISO-8859-15", 1, 1, 54}, /* 54 */
│ │ │ │ -
62 { "ISO-8859-16", 1, 1, 55}, /* 55 */
│ │ │ │ -
63 { "ISO-8859-2", 1, 1, 56}, /* 56 */
│ │ │ │ -
64 { "ISO-8859-3", 1, 1, 57}, /* 57 */
│ │ │ │ -
65 { "ISO-8859-4", 1, 1, 58}, /* 58 */
│ │ │ │ -
66 { "ISO-8859-5", 1, 1, 59}, /* 59 */
│ │ │ │ -
67 { "ISO-8859-6", 1, 1, 60}, /* 60 */
│ │ │ │ -
68 { "ISO-8859-7", 1, 1, 61}, /* 61 */
│ │ │ │ -
69 { "ISO-8859-8", 1, 1, 62}, /* 62 */
│ │ │ │ -
70 { "ISO-8859-9", 1, 1, 63}, /* 63 */
│ │ │ │ -
71 { "ISO-IR-14", 1, 1, 64}, /* 64 */
│ │ │ │ -
72 { "ISO-IR-149", 1, 1, 65}, /* 65 */
│ │ │ │ -
73 { "ISO-IR-159", 1, 1, 66}, /* 66 */
│ │ │ │ -
74 { "ISO-IR-166", 1, 1, 67}, /* 67 */
│ │ │ │ -
75 { "ISO-IR-87", 1, 1, 68}, /* 68 */
│ │ │ │ -
76 { "JAVA", 1, 1, 69}, /* 69 */
│ │ │ │ -
77 { "JISX0201-1976", 1, 1, 70}, /* 70 */
│ │ │ │ -
78 { "KOI8-R", 1, 1, 71}, /* 71 */
│ │ │ │ -
79 { "KOI8-RU", 1, 1, 72}, /* 72 */
│ │ │ │ -
80 { "KOI8-T", 1, 1, 73}, /* 73 */
│ │ │ │ -
81 { "KOI8-U", 1, 1, 74}, /* 74 */
│ │ │ │ -
82 { "MAC", 1, 1, 75}, /* 75 */
│ │ │ │ -
83 { "MACARABIC", 1, 1, 76}, /* 76 */
│ │ │ │ -
84 { "MACCENTRALEUROPE", 1, 1, 77}, /* 77 */
│ │ │ │ -
85 { "MACCROATIAN", 1, 1, 78}, /* 78 */
│ │ │ │ -
86 { "MACCYRILLIC", 1, 1, 79}, /* 79 */
│ │ │ │ -
87 { "MACGREEK", 1, 1, 80}, /* 80 */
│ │ │ │ -
88 { "MACHEBREW", 1, 1, 81}, /* 81 */
│ │ │ │ -
89 { "MACICELAND", 1, 1, 82}, /* 82 */
│ │ │ │ -
90 { "MACROMANIA", 1, 1, 83}, /* 83 */
│ │ │ │ -
91 { "MACTHAI", 1, 1, 84}, /* 84 */
│ │ │ │ -
92 { "MACTURKISH", 1, 1, 85}, /* 85 */
│ │ │ │ -
93 { "MACUKRAINE", 1, 1, 86}, /* 86 */
│ │ │ │ -
94 { "MULELAO-1", 1, 1, 87}, /* 87 */
│ │ │ │ -
95 { "NEXTSTEP", 1, 1, 88}, /* 88 */
│ │ │ │ -
96 { "ROMAN8", 1, 1, 89}, /* 89 */
│ │ │ │ -
97 { "SJIS", 1, 2, 90}, /* 90 */
│ │ │ │ -
98 { "TCVN", 1, 1, 91}, /* 91 */
│ │ │ │ -
99 { "US-ASCII", 1, 1, 92}, /* 92 */
│ │ │ │ -
100 { "UTF-7", 1, 4, 93}, /* 93 */
│ │ │ │ -
101 { "VISCII", 1, 1, 94}, /* 94 */
│ │ │ │ -
102};
│ │ │ │ -
103
│ │ │ │ -
104static const CHARACTER_SET_ALIAS iconv_aliases[] = {
│ │ │ │ -
105 { "646", 92 },
│ │ │ │ -
106 { "850", 30 },
│ │ │ │ -
107 { "862", 31 },
│ │ │ │ -
108 { "866", 32 },
│ │ │ │ -
109 { "ANSI_X3.4-1968", 92 },
│ │ │ │ -
110 { "ANSI_X3.4-1986", 92 },
│ │ │ │ -
111 { "ARABIC", 60 },
│ │ │ │ -
112 { "ARMSCII-8", 10 },
│ │ │ │ -
113 { "ASCII", 92 },
│ │ │ │ -
114 { "ASMO-708", 60 },
│ │ │ │ -
115 { "BIG-5", 11 },
│ │ │ │ -
116 { "BIG-FIVE", 11 },
│ │ │ │ -
117 { "BIG5", 11 },
│ │ │ │ -
118 { "BIG5-HKSCS", 12 },
│ │ │ │ -
119 { "BIG5HKSCS", 12 },
│ │ │ │ -
120 { "BIGFIVE", 11 },
│ │ │ │ -
121 { "C99", 13 },
│ │ │ │ -
122 { "CHINESE", 14 },
│ │ │ │ -
123 { "CN", 15 },
│ │ │ │ -
124 { "CN-BIG5", 11 },
│ │ │ │ -
125 { "CN-GB", 16 },
│ │ │ │ -
126 { "CN-GB-ISOIR165", 17 },
│ │ │ │ -
127 { "CP1133", 18 },
│ │ │ │ -
128 { "CP1250", 19 },
│ │ │ │ -
129 { "CP1251", 20 },
│ │ │ │ -
130 { "CP1252", 21 },
│ │ │ │ -
131 { "CP1253", 22 },
│ │ │ │ -
132 { "CP1254", 23 },
│ │ │ │ -
133 { "CP1255", 24 },
│ │ │ │ -
134 { "CP1256", 25 },
│ │ │ │ -
135 { "CP1257", 26 },
│ │ │ │ -
136 { "CP1258", 27 },
│ │ │ │ -
137 { "CP1361", 28 },
│ │ │ │ -
138 { "CP367", 92 },
│ │ │ │ -
139 { "CP437", 29 },
│ │ │ │ -
140 { "CP65001", 1 },
│ │ │ │ -
141 { "CP819", 0 },
│ │ │ │ -
142 { "CP850", 30 },
│ │ │ │ -
143 { "CP862", 31 },
│ │ │ │ -
144 { "CP866", 32 },
│ │ │ │ -
145 { "CP874", 33 },
│ │ │ │ -
146 { "CP932", 34 },
│ │ │ │ -
147 { "CP936", 35 },
│ │ │ │ -
148 { "CP949", 36 },
│ │ │ │ -
149 { "CP950", 37 },
│ │ │ │ -
150 { "CSASCII", 92 },
│ │ │ │ -
151 { "CSBIG5", 11 },
│ │ │ │ -
152 { "CSEUCKR", 39 },
│ │ │ │ -
153 { "CSEUCPKDFMTJAPANESE", 38 },
│ │ │ │ -
154 { "CSEUCTW", 40 },
│ │ │ │ -
155 { "CSGB2312", 16 },
│ │ │ │ -
156 { "CSHALFWIDTHKATAKANA", 70 },
│ │ │ │ -
157 { "CSHPROMAN8", 89 },
│ │ │ │ -
158 { "CSIBM866", 32 },
│ │ │ │ -
159 { "CSISO14JISC6220RO", 64 },
│ │ │ │ -
160 { "CSISO159JISX02121990", 66 },
│ │ │ │ -
161 { "CSISO2022CN", 45 },
│ │ │ │ -
162 { "CSISO2022JP", 47 },
│ │ │ │ -
163 { "CSISO2022JP2", 49 },
│ │ │ │ -
164 { "CSISO2022KR", 50 },
│ │ │ │ -
165 { "CSISO57GB1988", 15 },
│ │ │ │ -
166 { "CSISO58GB231280", 14 },
│ │ │ │ -
167 { "CSISO87JISX0208", 68 },
│ │ │ │ -
168 { "CSISOLATIN1", 0 },
│ │ │ │ -
169 { "CSISOLATIN2", 56 },
│ │ │ │ -
170 { "CSISOLATIN3", 57 },
│ │ │ │ -
171 { "CSISOLATIN4", 58 },
│ │ │ │ -
172 { "CSISOLATIN5", 63 },
│ │ │ │ -
173 { "CSISOLATIN6", 51 },
│ │ │ │ -
174 { "CSISOLATINARABIC", 60 },
│ │ │ │ -
175 { "CSISOLATINCYRILLIC", 59 },
│ │ │ │ -
176 { "CSISOLATINGREEK", 61 },
│ │ │ │ -
177 { "CSISOLATINHEBREW", 62 },
│ │ │ │ -
178 { "CSKOI8R", 71 },
│ │ │ │ -
179 { "CSKSC56011987", 65 },
│ │ │ │ -
180 { "CSMACINTOSH", 75 },
│ │ │ │ -
181 { "CSPC850MULTILINGUAL", 30 },
│ │ │ │ -
182 { "CSPC862LATINHEBREW", 31 },
│ │ │ │ -
183 { "CSSHIFTJIS", 90 },
│ │ │ │ -
184 { "CSUNICODE11", 3 },
│ │ │ │ -
185 { "CSUNICODE11UTF7", 93 },
│ │ │ │ -
186 { "CSVISCII", 94 },
│ │ │ │ -
187 { "CYRILLIC", 59 },
│ │ │ │ -
188 { "ECMA-114", 60 },
│ │ │ │ -
189 { "ECMA-118", 61 },
│ │ │ │ -
190 { "ELOT_928", 61 },
│ │ │ │ -
191 { "EUC-CN", 16 },
│ │ │ │ -
192 { "EUC-JP", 38 },
│ │ │ │ -
193 { "EUC-KR", 39 },
│ │ │ │ -
194 { "EUC-TW", 40 },
│ │ │ │ -
195 { "EUCCN", 16 },
│ │ │ │ -
196 { "EUCJP", 38 },
│ │ │ │ -
197 { "EUCKR", 39 },
│ │ │ │ -
198 { "EUCTW", 40 },
│ │ │ │ -
199 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 38 },
│ │ │ │ -
200 { "GB18030", 41 },
│ │ │ │ -
201 { "GB2312", 16 },
│ │ │ │ -
202 { "GBK", 35 },
│ │ │ │ -
203 { "GB_1988-80", 15 },
│ │ │ │ -
204 { "GB_2312-80", 14 },
│ │ │ │ -
205 { "GEORGIAN-ACADEMY", 42 },
│ │ │ │ -
206 { "GEORGIAN-PS", 43 },
│ │ │ │ -
207 { "GREEK", 61 },
│ │ │ │ -
208 { "GREEK8", 61 },
│ │ │ │ -
209 { "HEBREW", 62 },
│ │ │ │ -
210 { "HP-ROMAN8", 89 },
│ │ │ │ -
211 { "HZ", 44 },
│ │ │ │ -
212 { "HZ-GB-2312", 44 },
│ │ │ │ -
213 { "IBM-CP1133", 18 },
│ │ │ │ -
214 { "IBM367", 92 },
│ │ │ │ -
215 { "IBM437", 29 },
│ │ │ │ -
216 { "IBM819", 0 },
│ │ │ │ -
217 { "IBM850", 30 },
│ │ │ │ -
218 { "IBM862", 31 },
│ │ │ │ -
219 { "IBM866", 32 },
│ │ │ │ -
220 { "ISO-2022-CN", 45 },
│ │ │ │ -
221 { "ISO-2022-CN-EXT", 46 },
│ │ │ │ -
222 { "ISO-2022-JP", 47 },
│ │ │ │ -
223 { "ISO-2022-JP-1", 48 },
│ │ │ │ -
224 { "ISO-2022-JP-2", 49 },
│ │ │ │ -
225 { "ISO-2022-KR", 50 },
│ │ │ │ -
226 { "ISO-8859-1", 0 },
│ │ │ │ -
227 { "ISO-8859-10", 51 },
│ │ │ │ -
228 { "ISO-8859-13", 52 },
│ │ │ │ -
229 { "ISO-8859-14", 53 },
│ │ │ │ -
230 { "ISO-8859-15", 54 },
│ │ │ │ -
231 { "ISO-8859-16", 55 },
│ │ │ │ -
232 { "ISO-8859-2", 56 },
│ │ │ │ -
233 { "ISO-8859-3", 57 },
│ │ │ │ -
234 { "ISO-8859-4", 58 },
│ │ │ │ -
235 { "ISO-8859-5", 59 },
│ │ │ │ -
236 { "ISO-8859-6", 60 },
│ │ │ │ -
237 { "ISO-8859-7", 61 },
│ │ │ │ -
238 { "ISO-8859-8", 62 },
│ │ │ │ -
239 { "ISO-8859-9", 63 },
│ │ │ │ -
240 { "ISO-CELTIC", 53 },
│ │ │ │ -
241 { "ISO-IR-100", 0 },
│ │ │ │ -
242 { "ISO-IR-101", 56 },
│ │ │ │ -
243 { "ISO-IR-109", 57 },
│ │ │ │ -
244 { "ISO-IR-110", 58 },
│ │ │ │ -
245 { "ISO-IR-126", 61 },
│ │ │ │ -
246 { "ISO-IR-127", 60 },
│ │ │ │ -
247 { "ISO-IR-138", 62 },
│ │ │ │ -
248 { "ISO-IR-14", 64 },
│ │ │ │ -
249 { "ISO-IR-144", 59 },
│ │ │ │ -
250 { "ISO-IR-148", 63 },
│ │ │ │ -
251 { "ISO-IR-149", 65 },
│ │ │ │ -
252 { "ISO-IR-157", 51 },
│ │ │ │ -
253 { "ISO-IR-159", 66 },
│ │ │ │ -
254 { "ISO-IR-165", 17 },
│ │ │ │ -
255 { "ISO-IR-166", 67 },
│ │ │ │ -
256 { "ISO-IR-179", 52 },
│ │ │ │ -
257 { "ISO-IR-199", 53 },
│ │ │ │ -
258 { "ISO-IR-203", 54 },
│ │ │ │ -
259 { "ISO-IR-226", 55 },
│ │ │ │ -
260 { "ISO-IR-57", 15 },
│ │ │ │ -
261 { "ISO-IR-58", 14 },
│ │ │ │ -
262 { "ISO-IR-6", 92 },
│ │ │ │ -
263 { "ISO-IR-87", 68 },
│ │ │ │ -
264 { "ISO646-CN", 15 },
│ │ │ │ -
265 { "ISO646-JP", 64 },
│ │ │ │ -
266 { "ISO646-US", 92 },
│ │ │ │ -
267 { "ISO8859-1", 0 },
│ │ │ │ -
268 { "ISO8859-10", 51 },
│ │ │ │ -
269 { "ISO8859-15", 54 },
│ │ │ │ -
270 { "ISO8859-2", 56 },
│ │ │ │ -
271 { "ISO8859-4", 58 },
│ │ │ │ -
272 { "ISO8859-5", 59 },
│ │ │ │ -
273 { "ISO8859-6", 60 },
│ │ │ │ -
274 { "ISO8859-7", 61 },
│ │ │ │ -
275 { "ISO8859-8", 62 },
│ │ │ │ -
276 { "ISO8859-9", 63 },
│ │ │ │ -
277 { "ISO_646.IRV:1991", 92 },
│ │ │ │ -
278 { "ISO_8859-1", 0 },
│ │ │ │ -
279 { "ISO_8859-10", 51 },
│ │ │ │ -
280 { "ISO_8859-10:1992", 51 },
│ │ │ │ -
281 { "ISO_8859-13", 52 },
│ │ │ │ -
282 { "ISO_8859-14", 53 },
│ │ │ │ -
283 { "ISO_8859-14:1998", 53 },
│ │ │ │ -
284 { "ISO_8859-15", 54 },
│ │ │ │ -
285 { "ISO_8859-15:1998", 54 },
│ │ │ │ -
286 { "ISO_8859-16", 55 },
│ │ │ │ -
287 { "ISO_8859-16:2000", 55 },
│ │ │ │ -
288 { "ISO_8859-1:1987", 0 },
│ │ │ │ -
289 { "ISO_8859-2", 56 },
│ │ │ │ -
290 { "ISO_8859-2:1987", 56 },
│ │ │ │ -
291 { "ISO_8859-3", 57 },
│ │ │ │ -
292 { "ISO_8859-3:1988", 57 },
│ │ │ │ -
293 { "ISO_8859-4", 58 },
│ │ │ │ -
294 { "ISO_8859-4:1988", 58 },
│ │ │ │ -
295 { "ISO_8859-5", 59 },
│ │ │ │ -
296 { "ISO_8859-5:1988", 59 },
│ │ │ │ -
297 { "ISO_8859-6", 60 },
│ │ │ │ -
298 { "ISO_8859-6:1987", 60 },
│ │ │ │ -
299 { "ISO_8859-7", 61 },
│ │ │ │ -
300 { "ISO_8859-7:1987", 61 },
│ │ │ │ -
301 { "ISO_8859-8", 62 },
│ │ │ │ -
302 { "ISO_8859-8:1988", 62 },
│ │ │ │ -
303 { "ISO_8859-9", 63 },
│ │ │ │ -
304 { "ISO_8859-9:1989", 63 },
│ │ │ │ -
305 { "JAVA", 69 },
│ │ │ │ -
306 { "JIS0208", 68 },
│ │ │ │ -
307 { "JISX0201-1976", 70 },
│ │ │ │ -
308 { "JIS_C6220-1969-RO", 64 },
│ │ │ │ -
309 { "JIS_C6226-1983", 68 },
│ │ │ │ -
310 { "JIS_X0201", 70 },
│ │ │ │ -
311 { "JIS_X0208", 68 },
│ │ │ │ -
312 { "JIS_X0208-1983", 68 },
│ │ │ │ -
313 { "JIS_X0208-1990", 68 },
│ │ │ │ -
314 { "JIS_X0212", 66 },
│ │ │ │ -
315 { "JIS_X0212-1990", 66 },
│ │ │ │ -
316 { "JIS_X0212.1990-0", 66 },
│ │ │ │ -
317 { "JOHAB", 28 },
│ │ │ │ -
318 { "JP", 64 },
│ │ │ │ -
319 { "KOI8-R", 71 },
│ │ │ │ -
320 { "KOI8-RU", 72 },
│ │ │ │ -
321 { "KOI8-T", 73 },
│ │ │ │ -
322 { "KOI8-U", 74 },
│ │ │ │ -
323 { "KOREAN", 65 },
│ │ │ │ -
324 { "KSC_5601", 65 },
│ │ │ │ -
325 { "KS_C_5601-1987", 65 },
│ │ │ │ -
326 { "KS_C_5601-1989", 65 },
│ │ │ │ -
327 { "L1", 0 },
│ │ │ │ -
328 { "L2", 56 },
│ │ │ │ -
329 { "L3", 57 },
│ │ │ │ -
330 { "L4", 58 },
│ │ │ │ -
331 { "L5", 63 },
│ │ │ │ -
332 { "L6", 51 },
│ │ │ │ -
333 { "L7", 52 },
│ │ │ │ -
334 { "L8", 53 },
│ │ │ │ -
335 { "LATIN1", 0 },
│ │ │ │ -
336 { "LATIN2", 56 },
│ │ │ │ -
337 { "LATIN3", 57 },
│ │ │ │ -
338 { "LATIN4", 58 },
│ │ │ │ -
339 { "LATIN5", 63 },
│ │ │ │ -
340 { "LATIN6", 51 },
│ │ │ │ -
341 { "LATIN7", 52 },
│ │ │ │ -
342 { "LATIN8", 53 },
│ │ │ │ -
343 { "MAC", 75 },
│ │ │ │ -
344 { "MACARABIC", 76 },
│ │ │ │ -
345 { "MACCENTRALEUROPE", 77 },
│ │ │ │ -
346 { "MACCROATIAN", 78 },
│ │ │ │ -
347 { "MACCYRILLIC", 79 },
│ │ │ │ -
348 { "MACGREEK", 80 },
│ │ │ │ -
349 { "MACHEBREW", 81 },
│ │ │ │ -
350 { "MACICELAND", 82 },
│ │ │ │ -
351 { "MACINTOSH", 75 },
│ │ │ │ -
352 { "MACROMAN", 75 },
│ │ │ │ -
353 { "MACROMANIA", 83 },
│ │ │ │ -
354 { "MACTHAI", 84 },
│ │ │ │ -
355 { "MACTURKISH", 85 },
│ │ │ │ -
356 { "MACUKRAINE", 86 },
│ │ │ │ -
357 { "MS-ANSI", 21 },
│ │ │ │ -
358 { "MS-ARAB", 25 },
│ │ │ │ -
359 { "MS-CYRL", 20 },
│ │ │ │ -
360 { "MS-EE", 19 },
│ │ │ │ -
361 { "MS-GREEK", 22 },
│ │ │ │ -
362 { "MS-HEBR", 24 },
│ │ │ │ -
363 { "MS-TURK", 23 },
│ │ │ │ -
364 { "MS_KANJI", 90 },
│ │ │ │ -
365 { "MULELAO-1", 87 },
│ │ │ │ -
366 { "NEXTSTEP", 88 },
│ │ │ │ -
367 { "R8", 89 },
│ │ │ │ -
368 { "ROMAN8", 89 },
│ │ │ │ -
369 { "SHIFT-JIS", 90 },
│ │ │ │ -
370 { "SHIFT_JIS", 90 },
│ │ │ │ -
371 { "SJIS", 90 },
│ │ │ │ -
372 { "TCVN", 91 },
│ │ │ │ -
373 { "TCVN-5712", 91 },
│ │ │ │ -
374 { "TCVN5712-1", 91 },
│ │ │ │ -
375 { "TCVN5712-1:1993", 91 },
│ │ │ │ -
376 { "TIS-620", 67 },
│ │ │ │ -
377 { "TIS620", 67 },
│ │ │ │ -
378 { "TIS620-0", 67 },
│ │ │ │ -
379 { "TIS620.2529-1", 67 },
│ │ │ │ -
380 { "TIS620.2533-0", 67 },
│ │ │ │ -
381 { "TIS620.2533-1", 67 },
│ │ │ │ -
382 { "UCS-2BE", 3 },
│ │ │ │ -
383 { "UCS-2LE", 2 },
│ │ │ │ -
384 { "UCS-4BE", 7 },
│ │ │ │ -
385 { "UCS-4LE", 6 },
│ │ │ │ -
386 { "UHC", 36 },
│ │ │ │ -
387 { "UNICODE-1-1", 3 },
│ │ │ │ -
388 { "UNICODE-1-1-UTF-7", 93 },
│ │ │ │ -
389 { "UNICODEBIG", 3 },
│ │ │ │ -
390 { "UNICODELITTLE", 2 },
│ │ │ │ -
391 { "US", 92 },
│ │ │ │ -
392 { "US-ASCII", 92 },
│ │ │ │ -
393 { "UTF-16BE", 5 },
│ │ │ │ -
394 { "UTF-16LE", 4 },
│ │ │ │ -
395 { "UTF-32BE", 9 },
│ │ │ │ -
396 { "UTF-32LE", 8 },
│ │ │ │ -
397 { "UTF-7", 93 },
│ │ │ │ -
398 { "UTF-8", 1 },
│ │ │ │ -
399 { "UTF7", 93 },
│ │ │ │ -
400 { "UTF8", 1 },
│ │ │ │ -
401 { "VISCII", 94 },
│ │ │ │ -
402 { "VISCII1.1-1", 94 },
│ │ │ │ -
403 { "WINBALTRIM", 26 },
│ │ │ │ -
404 { "WINDOWS-1250", 19 },
│ │ │ │ -
405 { "WINDOWS-1251", 20 },
│ │ │ │ -
406 { "WINDOWS-1252", 21 },
│ │ │ │ -
407 { "WINDOWS-1253", 22 },
│ │ │ │ -
408 { "WINDOWS-1254", 23 },
│ │ │ │ -
409 { "WINDOWS-1255", 24 },
│ │ │ │ -
410 { "WINDOWS-1256", 25 },
│ │ │ │ -
411 { "WINDOWS-1257", 26 },
│ │ │ │ -
412 { "WINDOWS-1258", 27 },
│ │ │ │ -
413 { "WINDOWS-874", 33 },
│ │ │ │ -
414 { "X0201", 70 },
│ │ │ │ -
415 { "X0208", 68 },
│ │ │ │ -
416 { "X0212", 66 },
│ │ │ │ -
417 { "big5", 11 },
│ │ │ │ -
418 { "cp1250", 19 },
│ │ │ │ -
419 { "cp1251", 20 },
│ │ │ │ -
420 { "cp1252", 21 },
│ │ │ │ -
421 { "cp1253", 22 },
│ │ │ │ -
422 { "cp1254", 23 },
│ │ │ │ -
423 { "cp1255", 24 },
│ │ │ │ -
424 { "cp1256", 25 },
│ │ │ │ -
425 { "cp1257", 26 },
│ │ │ │ -
426 { "cp1258", 27 },
│ │ │ │ -
427 { "cp437", 29 },
│ │ │ │ -
428 { "cp850", 30 },
│ │ │ │ -
429 { "cp862", 31 },
│ │ │ │ -
430 { "cp866", 32 },
│ │ │ │ -
431 { "cp874", 33 },
│ │ │ │ -
432 { "eucJP", 38 },
│ │ │ │ -
433 { "eucKR", 39 },
│ │ │ │ -
434 { "eucTW", 40 },
│ │ │ │ -
435 { "hp15CN", 14 },
│ │ │ │ -
436 { "iso81", 0 },
│ │ │ │ -
437 { "iso815", 54 },
│ │ │ │ -
438 { "iso82", 56 },
│ │ │ │ -
439 { "iso83", 57 },
│ │ │ │ -
440 { "iso84", 58 },
│ │ │ │ -
441 { "iso85", 59 },
│ │ │ │ -
442 { "iso86", 60 },
│ │ │ │ -
443 { "iso87", 61 },
│ │ │ │ -
444 { "iso88", 62 },
│ │ │ │ -
445 { "iso88591", 0 },
│ │ │ │ -
446 { "iso885915", 54 },
│ │ │ │ -
447 { "iso88592", 56 },
│ │ │ │ -
448 { "iso88593", 57 },
│ │ │ │ -
449 { "iso88594", 58 },
│ │ │ │ -
450 { "iso88595", 59 },
│ │ │ │ -
451 { "iso88596", 60 },
│ │ │ │ -
452 { "iso88597", 61 },
│ │ │ │ -
453 { "iso88598", 62 },
│ │ │ │ -
454 { "iso88599", 63 },
│ │ │ │ -
455 { "iso89", 63 },
│ │ │ │ -
456 { "roma8", 89 },
│ │ │ │ -
457 { "roman8", 89 },
│ │ │ │ -
458 { "sjis", 90 },
│ │ │ │ -
459 { "thai8", 67 },
│ │ │ │ -
460 { "tis620", 67 },
│ │ │ │ -
461 { "utf8", 1 },
│ │ │ │ -
462 {NULL, 0}
│ │ │ │ -
463};
│ │ │ │ -
464
│ │ │ │ -
465#endif
│ │ │ │ -
466
│ │ │ │ -
467enum {
│ │ │ │ -
468 TDS_CHARSET_ISO_8859_1 = 0,
│ │ │ │ -
469 TDS_CHARSET_UTF_8 = 1,
│ │ │ │ -
470 TDS_CHARSET_UCS_2LE = 2,
│ │ │ │ -
471 TDS_CHARSET_UCS_2BE = 3,
│ │ │ │ -
472 TDS_CHARSET_UTF_16LE = 4,
│ │ │ │ -
473 TDS_CHARSET_UTF_16BE = 5,
│ │ │ │ -
474 TDS_CHARSET_UCS_4LE = 6,
│ │ │ │ -
475 TDS_CHARSET_UCS_4BE = 7,
│ │ │ │ -
476 TDS_CHARSET_UTF_32LE = 8,
│ │ │ │ -
477 TDS_CHARSET_UTF_32BE = 9,
│ │ │ │ -
478 TDS_CHARSET_ARMSCII_8 = 10,
│ │ │ │ -
479 TDS_CHARSET_BIG_5 = 11,
│ │ │ │ -
480 TDS_CHARSET_BIG5_HKSCS = 12,
│ │ │ │ -
481 TDS_CHARSET_C99 = 13,
│ │ │ │ -
482 TDS_CHARSET_CHINESE = 14,
│ │ │ │ -
483 TDS_CHARSET_CN = 15,
│ │ │ │ -
484 TDS_CHARSET_CN_GB = 16,
│ │ │ │ -
485 TDS_CHARSET_CN_GB_ISOIR165 = 17,
│ │ │ │ -
486 TDS_CHARSET_CP1133 = 18,
│ │ │ │ -
487 TDS_CHARSET_CP1250 = 19,
│ │ │ │ -
488 TDS_CHARSET_CP1251 = 20,
│ │ │ │ -
489 TDS_CHARSET_CP1252 = 21,
│ │ │ │ -
490 TDS_CHARSET_CP1253 = 22,
│ │ │ │ -
491 TDS_CHARSET_CP1254 = 23,
│ │ │ │ -
492 TDS_CHARSET_CP1255 = 24,
│ │ │ │ -
493 TDS_CHARSET_CP1256 = 25,
│ │ │ │ -
494 TDS_CHARSET_CP1257 = 26,
│ │ │ │ -
495 TDS_CHARSET_CP1258 = 27,
│ │ │ │ -
496 TDS_CHARSET_CP1361 = 28,
│ │ │ │ -
497 TDS_CHARSET_CP437 = 29,
│ │ │ │ -
498 TDS_CHARSET_CP850 = 30,
│ │ │ │ -
499 TDS_CHARSET_CP862 = 31,
│ │ │ │ -
500 TDS_CHARSET_CP866 = 32,
│ │ │ │ -
501 TDS_CHARSET_CP874 = 33,
│ │ │ │ -
502 TDS_CHARSET_CP932 = 34,
│ │ │ │ -
503 TDS_CHARSET_CP936 = 35,
│ │ │ │ -
504 TDS_CHARSET_CP949 = 36,
│ │ │ │ -
505 TDS_CHARSET_CP950 = 37,
│ │ │ │ -
506 TDS_CHARSET_EUC_JP = 38,
│ │ │ │ -
507 TDS_CHARSET_EUC_KR = 39,
│ │ │ │ -
508 TDS_CHARSET_EUC_TW = 40,
│ │ │ │ -
509 TDS_CHARSET_GB18030 = 41,
│ │ │ │ -
510 TDS_CHARSET_GEORGIAN_ACADEMY = 42,
│ │ │ │ -
511 TDS_CHARSET_GEORGIAN_PS = 43,
│ │ │ │ -
512 TDS_CHARSET_HZ = 44,
│ │ │ │ -
513 TDS_CHARSET_ISO_2022_CN = 45,
│ │ │ │ -
514 TDS_CHARSET_ISO_2022_CN_EXT = 46,
│ │ │ │ -
515 TDS_CHARSET_ISO_2022_JP = 47,
│ │ │ │ -
516 TDS_CHARSET_ISO_2022_JP_1 = 48,
│ │ │ │ -
517 TDS_CHARSET_ISO_2022_JP_2 = 49,
│ │ │ │ -
518 TDS_CHARSET_ISO_2022_KR = 50,
│ │ │ │ -
519 TDS_CHARSET_ISO_8859_10 = 51,
│ │ │ │ -
520 TDS_CHARSET_ISO_8859_13 = 52,
│ │ │ │ -
521 TDS_CHARSET_ISO_8859_14 = 53,
│ │ │ │ -
522 TDS_CHARSET_ISO_8859_15 = 54,
│ │ │ │ -
523 TDS_CHARSET_ISO_8859_16 = 55,
│ │ │ │ -
524 TDS_CHARSET_ISO_8859_2 = 56,
│ │ │ │ -
525 TDS_CHARSET_ISO_8859_3 = 57,
│ │ │ │ -
526 TDS_CHARSET_ISO_8859_4 = 58,
│ │ │ │ -
527 TDS_CHARSET_ISO_8859_5 = 59,
│ │ │ │ -
528 TDS_CHARSET_ISO_8859_6 = 60,
│ │ │ │ -
529 TDS_CHARSET_ISO_8859_7 = 61,
│ │ │ │ -
530 TDS_CHARSET_ISO_8859_8 = 62,
│ │ │ │ -
531 TDS_CHARSET_ISO_8859_9 = 63,
│ │ │ │ -
532 TDS_CHARSET_ISO_IR_14 = 64,
│ │ │ │ -
533 TDS_CHARSET_ISO_IR_149 = 65,
│ │ │ │ -
534 TDS_CHARSET_ISO_IR_159 = 66,
│ │ │ │ -
535 TDS_CHARSET_ISO_IR_166 = 67,
│ │ │ │ -
536 TDS_CHARSET_ISO_IR_87 = 68,
│ │ │ │ -
537 TDS_CHARSET_JAVA = 69,
│ │ │ │ -
538 TDS_CHARSET_JISX0201_1976 = 70,
│ │ │ │ -
539 TDS_CHARSET_KOI8_R = 71,
│ │ │ │ -
540 TDS_CHARSET_KOI8_RU = 72,
│ │ │ │ -
541 TDS_CHARSET_KOI8_T = 73,
│ │ │ │ -
542 TDS_CHARSET_KOI8_U = 74,
│ │ │ │ -
543 TDS_CHARSET_MAC = 75,
│ │ │ │ -
544 TDS_CHARSET_MACARABIC = 76,
│ │ │ │ -
545 TDS_CHARSET_MACCENTRALEUROPE = 77,
│ │ │ │ -
546 TDS_CHARSET_MACCROATIAN = 78,
│ │ │ │ -
547 TDS_CHARSET_MACCYRILLIC = 79,
│ │ │ │ -
548 TDS_CHARSET_MACGREEK = 80,
│ │ │ │ -
549 TDS_CHARSET_MACHEBREW = 81,
│ │ │ │ -
550 TDS_CHARSET_MACICELAND = 82,
│ │ │ │ -
551 TDS_CHARSET_MACROMANIA = 83,
│ │ │ │ -
552 TDS_CHARSET_MACTHAI = 84,
│ │ │ │ -
553 TDS_CHARSET_MACTURKISH = 85,
│ │ │ │ -
554 TDS_CHARSET_MACUKRAINE = 86,
│ │ │ │ -
555 TDS_CHARSET_MULELAO_1 = 87,
│ │ │ │ -
556 TDS_CHARSET_NEXTSTEP = 88,
│ │ │ │ -
557 TDS_CHARSET_ROMAN8 = 89,
│ │ │ │ -
558 TDS_CHARSET_SJIS = 90,
│ │ │ │ -
559 TDS_CHARSET_TCVN = 91,
│ │ │ │ -
560 TDS_CHARSET_US_ASCII = 92,
│ │ │ │ -
561 TDS_CHARSET_UTF_7 = 93,
│ │ │ │ -
562 TDS_CHARSET_VISCII = 94,
│ │ │ │ -
563 TDS_NUM_CHARSETS = 95
│ │ │ │ -
564};
│ │ │ │ -
565
│ │ │ │ -
Definition iconv.h:73
│ │ │ │ -
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │ +
1/* Dlist - dynamic list
│ │ │ │ +
2 * Copyright (C) 2016-2024 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
│ │ │ │ +
21#define _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
│ │ │ │ +
22
│ │ │ │ +
│ │ │ │ +
23typedef struct dlist_ring {
│ │ │ │ +
24 struct dlist_ring *next;
│ │ │ │ +
25 struct dlist_ring *prev;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
27
│ │ │ │ +
28#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
29void dlist_ring_check(dlist_ring *ring);
│ │ │ │ +
30#endif
│ │ │ │ +
31
│ │ │ │ +
32#define DLIST_FIELDS(name) \
│ │ │ │ +
33 dlist_ring name
│ │ │ │ +
34
│ │ │ │ +
35#define DLIST_FOREACH(prefix, list, p) \
│ │ │ │ +
36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next(list, p))
│ │ │ │ +
37
│ │ │ │ +
38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_item)
│ │ │ │ +
39{
│ │ │ │ +
40 assert(!ring_item->next && !ring_item->prev);
│ │ │ │ +
41 ring_pos->next->prev = ring_item;
│ │ │ │ +
42 ring_item->prev = ring_pos;
│ │ │ │ +
43 ring_item->next = ring_pos->next;
│ │ │ │ +
44 ring_pos->next = ring_item;
│ │ │ │ +
45 assert(ring_item->next && ring_item->prev);
│ │ │ │ +
46}
│ │ │ │ +
47
│ │ │ │ +
48#endif /* _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ */
│ │ │ │ +
Definition dlist.h:23
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,579 +1,62 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -encodings.h │ │ │ │ │ -1/* │ │ │ │ │ -2 * This file produced from ./encodings.pl on Sat Aug 30 09:01:31 2025 │ │ │ │ │ -3 */ │ │ │ │ │ -4#ifdef TDS_ICONV_ENCODING_TABLES │ │ │ │ │ -5 │ │ │ │ │ -6static const TDS_ENCODING canonic_charsets[] = { │ │ │ │ │ -7 { "ISO-8859-1", 1, 1, 0}, /* 0 */ │ │ │ │ │ -8 { "UTF-8", 1, 4, 1}, /* 1 */ │ │ │ │ │ -9 { "UCS-2LE", 2, 2, 2}, /* 2 */ │ │ │ │ │ -10 { "UCS-2BE", 2, 2, 3}, /* 3 */ │ │ │ │ │ -11 { "UTF-16LE", 2, 4, 4}, /* 4 */ │ │ │ │ │ -12 { "UTF-16BE", 2, 4, 5}, /* 5 */ │ │ │ │ │ -13 { "UCS-4LE", 4, 4, 6}, /* 6 */ │ │ │ │ │ -14 { "UCS-4BE", 4, 4, 7}, /* 7 */ │ │ │ │ │ -15 { "UTF-32LE", 4, 4, 8}, /* 8 */ │ │ │ │ │ -16 { "UTF-32BE", 4, 4, 9}, /* 9 */ │ │ │ │ │ -17 { "ARMSCII-8", 1, 1, 10}, /* 10 */ │ │ │ │ │ -18 { "BIG-5", 1, 2, 11}, /* 11 */ │ │ │ │ │ -19 { "BIG5-HKSCS", 1, 2, 12}, /* 12 */ │ │ │ │ │ -20 { "C99", 1, 1, 13}, /* 13 */ │ │ │ │ │ -21 { "CHINESE", 1, 1, 14}, /* 14 */ │ │ │ │ │ -22 { "CN", 1, 1, 15}, /* 15 */ │ │ │ │ │ -23 { "CN-GB", 1, 2, 16}, /* 16 */ │ │ │ │ │ -24 { "CN-GB-ISOIR165", 1, 1, 17}, /* 17 */ │ │ │ │ │ -25 { "CP1133", 1, 1, 18}, /* 18 */ │ │ │ │ │ -26 { "CP1250", 1, 1, 19}, /* 19 */ │ │ │ │ │ -27 { "CP1251", 1, 1, 20}, /* 20 */ │ │ │ │ │ -28 { "CP1252", 1, 1, 21}, /* 21 */ │ │ │ │ │ -29 { "CP1253", 1, 1, 22}, /* 22 */ │ │ │ │ │ -30 { "CP1254", 1, 1, 23}, /* 23 */ │ │ │ │ │ -31 { "CP1255", 1, 1, 24}, /* 24 */ │ │ │ │ │ -32 { "CP1256", 1, 1, 25}, /* 25 */ │ │ │ │ │ -33 { "CP1257", 1, 1, 26}, /* 26 */ │ │ │ │ │ -34 { "CP1258", 1, 1, 27}, /* 27 */ │ │ │ │ │ -35 { "CP1361", 1, 2, 28}, /* 28 */ │ │ │ │ │ -36 { "CP437", 1, 1, 29}, /* 29 */ │ │ │ │ │ -37 { "CP850", 1, 1, 30}, /* 30 */ │ │ │ │ │ -38 { "CP862", 1, 1, 31}, /* 31 */ │ │ │ │ │ -39 { "CP866", 1, 1, 32}, /* 32 */ │ │ │ │ │ -40 { "CP874", 1, 1, 33}, /* 33 */ │ │ │ │ │ -41 { "CP932", 1, 2, 34}, /* 34 */ │ │ │ │ │ -42 { "CP936", 1, 2, 35}, /* 35 */ │ │ │ │ │ -43 { "CP949", 1, 2, 36}, /* 36 */ │ │ │ │ │ -44 { "CP950", 1, 2, 37}, /* 37 */ │ │ │ │ │ -45 { "EUC-JP", 1, 3, 38}, /* 38 */ │ │ │ │ │ -46 { "EUC-KR", 1, 2, 39}, /* 39 */ │ │ │ │ │ -47 { "EUC-TW", 1, 4, 40}, /* 40 */ │ │ │ │ │ -48 { "GB18030", 1, 4, 41}, /* 41 */ │ │ │ │ │ -49 { "GEORGIAN-ACADEMY", 1, 1, 42}, /* 42 */ │ │ │ │ │ -50 { "GEORGIAN-PS", 1, 1, 43}, /* 43 */ │ │ │ │ │ -51 { "HZ", 1, 1, 44}, /* 44 */ │ │ │ │ │ -52 { "ISO-2022-CN", 1, 4, 45}, /* 45 */ │ │ │ │ │ -53 { "ISO-2022-CN-EXT", 1, 4, 46}, /* 46 */ │ │ │ │ │ -54 { "ISO-2022-JP", 1, 1, 47}, /* 47 */ │ │ │ │ │ -55 { "ISO-2022-JP-1", 1, 1, 48}, /* 48 */ │ │ │ │ │ -56 { "ISO-2022-JP-2", 1, 1, 49}, /* 49 */ │ │ │ │ │ -57 { "ISO-2022-KR", 1, 2, 50}, /* 50 */ │ │ │ │ │ -58 { "ISO-8859-10", 1, 1, 51}, /* 51 */ │ │ │ │ │ -59 { "ISO-8859-13", 1, 1, 52}, /* 52 */ │ │ │ │ │ -60 { "ISO-8859-14", 1, 1, 53}, /* 53 */ │ │ │ │ │ -61 { "ISO-8859-15", 1, 1, 54}, /* 54 */ │ │ │ │ │ -62 { "ISO-8859-16", 1, 1, 55}, /* 55 */ │ │ │ │ │ -63 { "ISO-8859-2", 1, 1, 56}, /* 56 */ │ │ │ │ │ -64 { "ISO-8859-3", 1, 1, 57}, /* 57 */ │ │ │ │ │ -65 { "ISO-8859-4", 1, 1, 58}, /* 58 */ │ │ │ │ │ -66 { "ISO-8859-5", 1, 1, 59}, /* 59 */ │ │ │ │ │ -67 { "ISO-8859-6", 1, 1, 60}, /* 60 */ │ │ │ │ │ -68 { "ISO-8859-7", 1, 1, 61}, /* 61 */ │ │ │ │ │ -69 { "ISO-8859-8", 1, 1, 62}, /* 62 */ │ │ │ │ │ -70 { "ISO-8859-9", 1, 1, 63}, /* 63 */ │ │ │ │ │ -71 { "ISO-IR-14", 1, 1, 64}, /* 64 */ │ │ │ │ │ -72 { "ISO-IR-149", 1, 1, 65}, /* 65 */ │ │ │ │ │ -73 { "ISO-IR-159", 1, 1, 66}, /* 66 */ │ │ │ │ │ -74 { "ISO-IR-166", 1, 1, 67}, /* 67 */ │ │ │ │ │ -75 { "ISO-IR-87", 1, 1, 68}, /* 68 */ │ │ │ │ │ -76 { "JAVA", 1, 1, 69}, /* 69 */ │ │ │ │ │ -77 { "JISX0201-1976", 1, 1, 70}, /* 70 */ │ │ │ │ │ -78 { "KOI8-R", 1, 1, 71}, /* 71 */ │ │ │ │ │ -79 { "KOI8-RU", 1, 1, 72}, /* 72 */ │ │ │ │ │ -80 { "KOI8-T", 1, 1, 73}, /* 73 */ │ │ │ │ │ -81 { "KOI8-U", 1, 1, 74}, /* 74 */ │ │ │ │ │ -82 { "MAC", 1, 1, 75}, /* 75 */ │ │ │ │ │ -83 { "MACARABIC", 1, 1, 76}, /* 76 */ │ │ │ │ │ -84 { "MACCENTRALEUROPE", 1, 1, 77}, /* 77 */ │ │ │ │ │ -85 { "MACCROATIAN", 1, 1, 78}, /* 78 */ │ │ │ │ │ -86 { "MACCYRILLIC", 1, 1, 79}, /* 79 */ │ │ │ │ │ -87 { "MACGREEK", 1, 1, 80}, /* 80 */ │ │ │ │ │ -88 { "MACHEBREW", 1, 1, 81}, /* 81 */ │ │ │ │ │ -89 { "MACICELAND", 1, 1, 82}, /* 82 */ │ │ │ │ │ -90 { "MACROMANIA", 1, 1, 83}, /* 83 */ │ │ │ │ │ -91 { "MACTHAI", 1, 1, 84}, /* 84 */ │ │ │ │ │ -92 { "MACTURKISH", 1, 1, 85}, /* 85 */ │ │ │ │ │ -93 { "MACUKRAINE", 1, 1, 86}, /* 86 */ │ │ │ │ │ -94 { "MULELAO-1", 1, 1, 87}, /* 87 */ │ │ │ │ │ -95 { "NEXTSTEP", 1, 1, 88}, /* 88 */ │ │ │ │ │ -96 { "ROMAN8", 1, 1, 89}, /* 89 */ │ │ │ │ │ -97 { "SJIS", 1, 2, 90}, /* 90 */ │ │ │ │ │ -98 { "TCVN", 1, 1, 91}, /* 91 */ │ │ │ │ │ -99 { "US-ASCII", 1, 1, 92}, /* 92 */ │ │ │ │ │ -100 { "UTF-7", 1, 4, 93}, /* 93 */ │ │ │ │ │ -101 { "VISCII", 1, 1, 94}, /* 94 */ │ │ │ │ │ -102}; │ │ │ │ │ -103 │ │ │ │ │ -104static const CHARACTER_SET_ALIAS iconv_aliases[] = { │ │ │ │ │ -105 { "646", 92 }, │ │ │ │ │ -106 { "850", 30 }, │ │ │ │ │ -107 { "862", 31 }, │ │ │ │ │ -108 { "866", 32 }, │ │ │ │ │ -109 { "ANSI_X3.4-1968", 92 }, │ │ │ │ │ -110 { "ANSI_X3.4-1986", 92 }, │ │ │ │ │ -111 { "ARABIC", 60 }, │ │ │ │ │ -112 { "ARMSCII-8", 10 }, │ │ │ │ │ -113 { "ASCII", 92 }, │ │ │ │ │ -114 { "ASMO-708", 60 }, │ │ │ │ │ -115 { "BIG-5", 11 }, │ │ │ │ │ -116 { "BIG-FIVE", 11 }, │ │ │ │ │ -117 { "BIG5", 11 }, │ │ │ │ │ -118 { "BIG5-HKSCS", 12 }, │ │ │ │ │ -119 { "BIG5HKSCS", 12 }, │ │ │ │ │ -120 { "BIGFIVE", 11 }, │ │ │ │ │ -121 { "C99", 13 }, │ │ │ │ │ -122 { "CHINESE", 14 }, │ │ │ │ │ -123 { "CN", 15 }, │ │ │ │ │ -124 { "CN-BIG5", 11 }, │ │ │ │ │ -125 { "CN-GB", 16 }, │ │ │ │ │ -126 { "CN-GB-ISOIR165", 17 }, │ │ │ │ │ -127 { "CP1133", 18 }, │ │ │ │ │ -128 { "CP1250", 19 }, │ │ │ │ │ -129 { "CP1251", 20 }, │ │ │ │ │ -130 { "CP1252", 21 }, │ │ │ │ │ -131 { "CP1253", 22 }, │ │ │ │ │ -132 { "CP1254", 23 }, │ │ │ │ │ -133 { "CP1255", 24 }, │ │ │ │ │ -134 { "CP1256", 25 }, │ │ │ │ │ -135 { "CP1257", 26 }, │ │ │ │ │ -136 { "CP1258", 27 }, │ │ │ │ │ -137 { "CP1361", 28 }, │ │ │ │ │ -138 { "CP367", 92 }, │ │ │ │ │ -139 { "CP437", 29 }, │ │ │ │ │ -140 { "CP65001", 1 }, │ │ │ │ │ -141 { "CP819", 0 }, │ │ │ │ │ -142 { "CP850", 30 }, │ │ │ │ │ -143 { "CP862", 31 }, │ │ │ │ │ -144 { "CP866", 32 }, │ │ │ │ │ -145 { "CP874", 33 }, │ │ │ │ │ -146 { "CP932", 34 }, │ │ │ │ │ -147 { "CP936", 35 }, │ │ │ │ │ -148 { "CP949", 36 }, │ │ │ │ │ -149 { "CP950", 37 }, │ │ │ │ │ -150 { "CSASCII", 92 }, │ │ │ │ │ -151 { "CSBIG5", 11 }, │ │ │ │ │ -152 { "CSEUCKR", 39 }, │ │ │ │ │ -153 { "CSEUCPKDFMTJAPANESE", 38 }, │ │ │ │ │ -154 { "CSEUCTW", 40 }, │ │ │ │ │ -155 { "CSGB2312", 16 }, │ │ │ │ │ -156 { "CSHALFWIDTHKATAKANA", 70 }, │ │ │ │ │ -157 { "CSHPROMAN8", 89 }, │ │ │ │ │ -158 { "CSIBM866", 32 }, │ │ │ │ │ -159 { "CSISO14JISC6220RO", 64 }, │ │ │ │ │ -160 { "CSISO159JISX02121990", 66 }, │ │ │ │ │ -161 { "CSISO2022CN", 45 }, │ │ │ │ │ -162 { "CSISO2022JP", 47 }, │ │ │ │ │ -163 { "CSISO2022JP2", 49 }, │ │ │ │ │ -164 { "CSISO2022KR", 50 }, │ │ │ │ │ -165 { "CSISO57GB1988", 15 }, │ │ │ │ │ -166 { "CSISO58GB231280", 14 }, │ │ │ │ │ -167 { "CSISO87JISX0208", 68 }, │ │ │ │ │ -168 { "CSISOLATIN1", 0 }, │ │ │ │ │ -169 { "CSISOLATIN2", 56 }, │ │ │ │ │ -170 { "CSISOLATIN3", 57 }, │ │ │ │ │ -171 { "CSISOLATIN4", 58 }, │ │ │ │ │ -172 { "CSISOLATIN5", 63 }, │ │ │ │ │ -173 { "CSISOLATIN6", 51 }, │ │ │ │ │ -174 { "CSISOLATINARABIC", 60 }, │ │ │ │ │ -175 { "CSISOLATINCYRILLIC", 59 }, │ │ │ │ │ -176 { "CSISOLATINGREEK", 61 }, │ │ │ │ │ -177 { "CSISOLATINHEBREW", 62 }, │ │ │ │ │ -178 { "CSKOI8R", 71 }, │ │ │ │ │ -179 { "CSKSC56011987", 65 }, │ │ │ │ │ -180 { "CSMACINTOSH", 75 }, │ │ │ │ │ -181 { "CSPC850MULTILINGUAL", 30 }, │ │ │ │ │ -182 { "CSPC862LATINHEBREW", 31 }, │ │ │ │ │ -183 { "CSSHIFTJIS", 90 }, │ │ │ │ │ -184 { "CSUNICODE11", 3 }, │ │ │ │ │ -185 { "CSUNICODE11UTF7", 93 }, │ │ │ │ │ -186 { "CSVISCII", 94 }, │ │ │ │ │ -187 { "CYRILLIC", 59 }, │ │ │ │ │ -188 { "ECMA-114", 60 }, │ │ │ │ │ -189 { "ECMA-118", 61 }, │ │ │ │ │ -190 { "ELOT_928", 61 }, │ │ │ │ │ -191 { "EUC-CN", 16 }, │ │ │ │ │ -192 { "EUC-JP", 38 }, │ │ │ │ │ -193 { "EUC-KR", 39 }, │ │ │ │ │ -194 { "EUC-TW", 40 }, │ │ │ │ │ -195 { "EUCCN", 16 }, │ │ │ │ │ -196 { "EUCJP", 38 }, │ │ │ │ │ -197 { "EUCKR", 39 }, │ │ │ │ │ -198 { "EUCTW", 40 }, │ │ │ │ │ -199 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 38 }, │ │ │ │ │ -200 { "GB18030", 41 }, │ │ │ │ │ -201 { "GB2312", 16 }, │ │ │ │ │ -202 { "GBK", 35 }, │ │ │ │ │ -203 { "GB_1988-80", 15 }, │ │ │ │ │ -204 { "GB_2312-80", 14 }, │ │ │ │ │ -205 { "GEORGIAN-ACADEMY", 42 }, │ │ │ │ │ -206 { "GEORGIAN-PS", 43 }, │ │ │ │ │ -207 { "GREEK", 61 }, │ │ │ │ │ -208 { "GREEK8", 61 }, │ │ │ │ │ -209 { "HEBREW", 62 }, │ │ │ │ │ -210 { "HP-ROMAN8", 89 }, │ │ │ │ │ -211 { "HZ", 44 }, │ │ │ │ │ -212 { "HZ-GB-2312", 44 }, │ │ │ │ │ -213 { "IBM-CP1133", 18 }, │ │ │ │ │ -214 { "IBM367", 92 }, │ │ │ │ │ -215 { "IBM437", 29 }, │ │ │ │ │ -216 { "IBM819", 0 }, │ │ │ │ │ -217 { "IBM850", 30 }, │ │ │ │ │ -218 { "IBM862", 31 }, │ │ │ │ │ -219 { "IBM866", 32 }, │ │ │ │ │ -220 { "ISO-2022-CN", 45 }, │ │ │ │ │ -221 { "ISO-2022-CN-EXT", 46 }, │ │ │ │ │ -222 { "ISO-2022-JP", 47 }, │ │ │ │ │ -223 { "ISO-2022-JP-1", 48 }, │ │ │ │ │ -224 { "ISO-2022-JP-2", 49 }, │ │ │ │ │ -225 { "ISO-2022-KR", 50 }, │ │ │ │ │ -226 { "ISO-8859-1", 0 }, │ │ │ │ │ -227 { "ISO-8859-10", 51 }, │ │ │ │ │ -228 { "ISO-8859-13", 52 }, │ │ │ │ │ -229 { "ISO-8859-14", 53 }, │ │ │ │ │ -230 { "ISO-8859-15", 54 }, │ │ │ │ │ -231 { "ISO-8859-16", 55 }, │ │ │ │ │ -232 { "ISO-8859-2", 56 }, │ │ │ │ │ -233 { "ISO-8859-3", 57 }, │ │ │ │ │ -234 { "ISO-8859-4", 58 }, │ │ │ │ │ -235 { "ISO-8859-5", 59 }, │ │ │ │ │ -236 { "ISO-8859-6", 60 }, │ │ │ │ │ -237 { "ISO-8859-7", 61 }, │ │ │ │ │ -238 { "ISO-8859-8", 62 }, │ │ │ │ │ -239 { "ISO-8859-9", 63 }, │ │ │ │ │ -240 { "ISO-CELTIC", 53 }, │ │ │ │ │ -241 { "ISO-IR-100", 0 }, │ │ │ │ │ -242 { "ISO-IR-101", 56 }, │ │ │ │ │ -243 { "ISO-IR-109", 57 }, │ │ │ │ │ -244 { "ISO-IR-110", 58 }, │ │ │ │ │ -245 { "ISO-IR-126", 61 }, │ │ │ │ │ -246 { "ISO-IR-127", 60 }, │ │ │ │ │ -247 { "ISO-IR-138", 62 }, │ │ │ │ │ -248 { "ISO-IR-14", 64 }, │ │ │ │ │ -249 { "ISO-IR-144", 59 }, │ │ │ │ │ -250 { "ISO-IR-148", 63 }, │ │ │ │ │ -251 { "ISO-IR-149", 65 }, │ │ │ │ │ -252 { "ISO-IR-157", 51 }, │ │ │ │ │ -253 { "ISO-IR-159", 66 }, │ │ │ │ │ -254 { "ISO-IR-165", 17 }, │ │ │ │ │ -255 { "ISO-IR-166", 67 }, │ │ │ │ │ -256 { "ISO-IR-179", 52 }, │ │ │ │ │ -257 { "ISO-IR-199", 53 }, │ │ │ │ │ -258 { "ISO-IR-203", 54 }, │ │ │ │ │ -259 { "ISO-IR-226", 55 }, │ │ │ │ │ -260 { "ISO-IR-57", 15 }, │ │ │ │ │ -261 { "ISO-IR-58", 14 }, │ │ │ │ │ -262 { "ISO-IR-6", 92 }, │ │ │ │ │ -263 { "ISO-IR-87", 68 }, │ │ │ │ │ -264 { "ISO646-CN", 15 }, │ │ │ │ │ -265 { "ISO646-JP", 64 }, │ │ │ │ │ -266 { "ISO646-US", 92 }, │ │ │ │ │ -267 { "ISO8859-1", 0 }, │ │ │ │ │ -268 { "ISO8859-10", 51 }, │ │ │ │ │ -269 { "ISO8859-15", 54 }, │ │ │ │ │ -270 { "ISO8859-2", 56 }, │ │ │ │ │ -271 { "ISO8859-4", 58 }, │ │ │ │ │ -272 { "ISO8859-5", 59 }, │ │ │ │ │ -273 { "ISO8859-6", 60 }, │ │ │ │ │ -274 { "ISO8859-7", 61 }, │ │ │ │ │ -275 { "ISO8859-8", 62 }, │ │ │ │ │ -276 { "ISO8859-9", 63 }, │ │ │ │ │ -277 { "ISO_646.IRV:1991", 92 }, │ │ │ │ │ -278 { "ISO_8859-1", 0 }, │ │ │ │ │ -279 { "ISO_8859-10", 51 }, │ │ │ │ │ -280 { "ISO_8859-10:1992", 51 }, │ │ │ │ │ -281 { "ISO_8859-13", 52 }, │ │ │ │ │ -282 { "ISO_8859-14", 53 }, │ │ │ │ │ -283 { "ISO_8859-14:1998", 53 }, │ │ │ │ │ -284 { "ISO_8859-15", 54 }, │ │ │ │ │ -285 { "ISO_8859-15:1998", 54 }, │ │ │ │ │ -286 { "ISO_8859-16", 55 }, │ │ │ │ │ -287 { "ISO_8859-16:2000", 55 }, │ │ │ │ │ -288 { "ISO_8859-1:1987", 0 }, │ │ │ │ │ -289 { "ISO_8859-2", 56 }, │ │ │ │ │ -290 { "ISO_8859-2:1987", 56 }, │ │ │ │ │ -291 { "ISO_8859-3", 57 }, │ │ │ │ │ -292 { "ISO_8859-3:1988", 57 }, │ │ │ │ │ -293 { "ISO_8859-4", 58 }, │ │ │ │ │ -294 { "ISO_8859-4:1988", 58 }, │ │ │ │ │ -295 { "ISO_8859-5", 59 }, │ │ │ │ │ -296 { "ISO_8859-5:1988", 59 }, │ │ │ │ │ -297 { "ISO_8859-6", 60 }, │ │ │ │ │ -298 { "ISO_8859-6:1987", 60 }, │ │ │ │ │ -299 { "ISO_8859-7", 61 }, │ │ │ │ │ -300 { "ISO_8859-7:1987", 61 }, │ │ │ │ │ -301 { "ISO_8859-8", 62 }, │ │ │ │ │ -302 { "ISO_8859-8:1988", 62 }, │ │ │ │ │ -303 { "ISO_8859-9", 63 }, │ │ │ │ │ -304 { "ISO_8859-9:1989", 63 }, │ │ │ │ │ -305 { "JAVA", 69 }, │ │ │ │ │ -306 { "JIS0208", 68 }, │ │ │ │ │ -307 { "JISX0201-1976", 70 }, │ │ │ │ │ -308 { "JIS_C6220-1969-RO", 64 }, │ │ │ │ │ -309 { "JIS_C6226-1983", 68 }, │ │ │ │ │ -310 { "JIS_X0201", 70 }, │ │ │ │ │ -311 { "JIS_X0208", 68 }, │ │ │ │ │ -312 { "JIS_X0208-1983", 68 }, │ │ │ │ │ -313 { "JIS_X0208-1990", 68 }, │ │ │ │ │ -314 { "JIS_X0212", 66 }, │ │ │ │ │ -315 { "JIS_X0212-1990", 66 }, │ │ │ │ │ -316 { "JIS_X0212.1990-0", 66 }, │ │ │ │ │ -317 { "JOHAB", 28 }, │ │ │ │ │ -318 { "JP", 64 }, │ │ │ │ │ -319 { "KOI8-R", 71 }, │ │ │ │ │ -320 { "KOI8-RU", 72 }, │ │ │ │ │ -321 { "KOI8-T", 73 }, │ │ │ │ │ -322 { "KOI8-U", 74 }, │ │ │ │ │ -323 { "KOREAN", 65 }, │ │ │ │ │ -324 { "KSC_5601", 65 }, │ │ │ │ │ -325 { "KS_C_5601-1987", 65 }, │ │ │ │ │ -326 { "KS_C_5601-1989", 65 }, │ │ │ │ │ -327 { "L1", 0 }, │ │ │ │ │ -328 { "L2", 56 }, │ │ │ │ │ -329 { "L3", 57 }, │ │ │ │ │ -330 { "L4", 58 }, │ │ │ │ │ -331 { "L5", 63 }, │ │ │ │ │ -332 { "L6", 51 }, │ │ │ │ │ -333 { "L7", 52 }, │ │ │ │ │ -334 { "L8", 53 }, │ │ │ │ │ -335 { "LATIN1", 0 }, │ │ │ │ │ -336 { "LATIN2", 56 }, │ │ │ │ │ -337 { "LATIN3", 57 }, │ │ │ │ │ -338 { "LATIN4", 58 }, │ │ │ │ │ -339 { "LATIN5", 63 }, │ │ │ │ │ -340 { "LATIN6", 51 }, │ │ │ │ │ -341 { "LATIN7", 52 }, │ │ │ │ │ -342 { "LATIN8", 53 }, │ │ │ │ │ -343 { "MAC", 75 }, │ │ │ │ │ -344 { "MACARABIC", 76 }, │ │ │ │ │ -345 { "MACCENTRALEUROPE", 77 }, │ │ │ │ │ -346 { "MACCROATIAN", 78 }, │ │ │ │ │ -347 { "MACCYRILLIC", 79 }, │ │ │ │ │ -348 { "MACGREEK", 80 }, │ │ │ │ │ -349 { "MACHEBREW", 81 }, │ │ │ │ │ -350 { "MACICELAND", 82 }, │ │ │ │ │ -351 { "MACINTOSH", 75 }, │ │ │ │ │ -352 { "MACROMAN", 75 }, │ │ │ │ │ -353 { "MACROMANIA", 83 }, │ │ │ │ │ -354 { "MACTHAI", 84 }, │ │ │ │ │ -355 { "MACTURKISH", 85 }, │ │ │ │ │ -356 { "MACUKRAINE", 86 }, │ │ │ │ │ -357 { "MS-ANSI", 21 }, │ │ │ │ │ -358 { "MS-ARAB", 25 }, │ │ │ │ │ -359 { "MS-CYRL", 20 }, │ │ │ │ │ -360 { "MS-EE", 19 }, │ │ │ │ │ -361 { "MS-GREEK", 22 }, │ │ │ │ │ -362 { "MS-HEBR", 24 }, │ │ │ │ │ -363 { "MS-TURK", 23 }, │ │ │ │ │ -364 { "MS_KANJI", 90 }, │ │ │ │ │ -365 { "MULELAO-1", 87 }, │ │ │ │ │ -366 { "NEXTSTEP", 88 }, │ │ │ │ │ -367 { "R8", 89 }, │ │ │ │ │ -368 { "ROMAN8", 89 }, │ │ │ │ │ -369 { "SHIFT-JIS", 90 }, │ │ │ │ │ -370 { "SHIFT_JIS", 90 }, │ │ │ │ │ -371 { "SJIS", 90 }, │ │ │ │ │ -372 { "TCVN", 91 }, │ │ │ │ │ -373 { "TCVN-5712", 91 }, │ │ │ │ │ -374 { "TCVN5712-1", 91 }, │ │ │ │ │ -375 { "TCVN5712-1:1993", 91 }, │ │ │ │ │ -376 { "TIS-620", 67 }, │ │ │ │ │ -377 { "TIS620", 67 }, │ │ │ │ │ -378 { "TIS620-0", 67 }, │ │ │ │ │ -379 { "TIS620.2529-1", 67 }, │ │ │ │ │ -380 { "TIS620.2533-0", 67 }, │ │ │ │ │ -381 { "TIS620.2533-1", 67 }, │ │ │ │ │ -382 { "UCS-2BE", 3 }, │ │ │ │ │ -383 { "UCS-2LE", 2 }, │ │ │ │ │ -384 { "UCS-4BE", 7 }, │ │ │ │ │ -385 { "UCS-4LE", 6 }, │ │ │ │ │ -386 { "UHC", 36 }, │ │ │ │ │ -387 { "UNICODE-1-1", 3 }, │ │ │ │ │ -388 { "UNICODE-1-1-UTF-7", 93 }, │ │ │ │ │ -389 { "UNICODEBIG", 3 }, │ │ │ │ │ -390 { "UNICODELITTLE", 2 }, │ │ │ │ │ -391 { "US", 92 }, │ │ │ │ │ -392 { "US-ASCII", 92 }, │ │ │ │ │ -393 { "UTF-16BE", 5 }, │ │ │ │ │ -394 { "UTF-16LE", 4 }, │ │ │ │ │ -395 { "UTF-32BE", 9 }, │ │ │ │ │ -396 { "UTF-32LE", 8 }, │ │ │ │ │ -397 { "UTF-7", 93 }, │ │ │ │ │ -398 { "UTF-8", 1 }, │ │ │ │ │ -399 { "UTF7", 93 }, │ │ │ │ │ -400 { "UTF8", 1 }, │ │ │ │ │ -401 { "VISCII", 94 }, │ │ │ │ │ -402 { "VISCII1.1-1", 94 }, │ │ │ │ │ -403 { "WINBALTRIM", 26 }, │ │ │ │ │ -404 { "WINDOWS-1250", 19 }, │ │ │ │ │ -405 { "WINDOWS-1251", 20 }, │ │ │ │ │ -406 { "WINDOWS-1252", 21 }, │ │ │ │ │ -407 { "WINDOWS-1253", 22 }, │ │ │ │ │ -408 { "WINDOWS-1254", 23 }, │ │ │ │ │ -409 { "WINDOWS-1255", 24 }, │ │ │ │ │ -410 { "WINDOWS-1256", 25 }, │ │ │ │ │ -411 { "WINDOWS-1257", 26 }, │ │ │ │ │ -412 { "WINDOWS-1258", 27 }, │ │ │ │ │ -413 { "WINDOWS-874", 33 }, │ │ │ │ │ -414 { "X0201", 70 }, │ │ │ │ │ -415 { "X0208", 68 }, │ │ │ │ │ -416 { "X0212", 66 }, │ │ │ │ │ -417 { "big5", 11 }, │ │ │ │ │ -418 { "cp1250", 19 }, │ │ │ │ │ -419 { "cp1251", 20 }, │ │ │ │ │ -420 { "cp1252", 21 }, │ │ │ │ │ -421 { "cp1253", 22 }, │ │ │ │ │ -422 { "cp1254", 23 }, │ │ │ │ │ -423 { "cp1255", 24 }, │ │ │ │ │ -424 { "cp1256", 25 }, │ │ │ │ │ -425 { "cp1257", 26 }, │ │ │ │ │ -426 { "cp1258", 27 }, │ │ │ │ │ -427 { "cp437", 29 }, │ │ │ │ │ -428 { "cp850", 30 }, │ │ │ │ │ -429 { "cp862", 31 }, │ │ │ │ │ -430 { "cp866", 32 }, │ │ │ │ │ -431 { "cp874", 33 }, │ │ │ │ │ -432 { "eucJP", 38 }, │ │ │ │ │ -433 { "eucKR", 39 }, │ │ │ │ │ -434 { "eucTW", 40 }, │ │ │ │ │ -435 { "hp15CN", 14 }, │ │ │ │ │ -436 { "iso81", 0 }, │ │ │ │ │ -437 { "iso815", 54 }, │ │ │ │ │ -438 { "iso82", 56 }, │ │ │ │ │ -439 { "iso83", 57 }, │ │ │ │ │ -440 { "iso84", 58 }, │ │ │ │ │ -441 { "iso85", 59 }, │ │ │ │ │ -442 { "iso86", 60 }, │ │ │ │ │ -443 { "iso87", 61 }, │ │ │ │ │ -444 { "iso88", 62 }, │ │ │ │ │ -445 { "iso88591", 0 }, │ │ │ │ │ -446 { "iso885915", 54 }, │ │ │ │ │ -447 { "iso88592", 56 }, │ │ │ │ │ -448 { "iso88593", 57 }, │ │ │ │ │ -449 { "iso88594", 58 }, │ │ │ │ │ -450 { "iso88595", 59 }, │ │ │ │ │ -451 { "iso88596", 60 }, │ │ │ │ │ -452 { "iso88597", 61 }, │ │ │ │ │ -453 { "iso88598", 62 }, │ │ │ │ │ -454 { "iso88599", 63 }, │ │ │ │ │ -455 { "iso89", 63 }, │ │ │ │ │ -456 { "roma8", 89 }, │ │ │ │ │ -457 { "roman8", 89 }, │ │ │ │ │ -458 { "sjis", 90 }, │ │ │ │ │ -459 { "thai8", 67 }, │ │ │ │ │ -460 { "tis620", 67 }, │ │ │ │ │ -461 { "utf8", 1 }, │ │ │ │ │ -462 {NULL, 0} │ │ │ │ │ -463}; │ │ │ │ │ -464 │ │ │ │ │ -465#endif │ │ │ │ │ -466 │ │ │ │ │ -467enum { │ │ │ │ │ -468 TDS_CHARSET_ISO_8859_1 = 0, │ │ │ │ │ -469 TDS_CHARSET_UTF_8 = 1, │ │ │ │ │ -470 TDS_CHARSET_UCS_2LE = 2, │ │ │ │ │ -471 TDS_CHARSET_UCS_2BE = 3, │ │ │ │ │ -472 TDS_CHARSET_UTF_16LE = 4, │ │ │ │ │ -473 TDS_CHARSET_UTF_16BE = 5, │ │ │ │ │ -474 TDS_CHARSET_UCS_4LE = 6, │ │ │ │ │ -475 TDS_CHARSET_UCS_4BE = 7, │ │ │ │ │ -476 TDS_CHARSET_UTF_32LE = 8, │ │ │ │ │ -477 TDS_CHARSET_UTF_32BE = 9, │ │ │ │ │ -478 TDS_CHARSET_ARMSCII_8 = 10, │ │ │ │ │ -479 TDS_CHARSET_BIG_5 = 11, │ │ │ │ │ -480 TDS_CHARSET_BIG5_HKSCS = 12, │ │ │ │ │ -481 TDS_CHARSET_C99 = 13, │ │ │ │ │ -482 TDS_CHARSET_CHINESE = 14, │ │ │ │ │ -483 TDS_CHARSET_CN = 15, │ │ │ │ │ -484 TDS_CHARSET_CN_GB = 16, │ │ │ │ │ -485 TDS_CHARSET_CN_GB_ISOIR165 = 17, │ │ │ │ │ -486 TDS_CHARSET_CP1133 = 18, │ │ │ │ │ -487 TDS_CHARSET_CP1250 = 19, │ │ │ │ │ -488 TDS_CHARSET_CP1251 = 20, │ │ │ │ │ -489 TDS_CHARSET_CP1252 = 21, │ │ │ │ │ -490 TDS_CHARSET_CP1253 = 22, │ │ │ │ │ -491 TDS_CHARSET_CP1254 = 23, │ │ │ │ │ -492 TDS_CHARSET_CP1255 = 24, │ │ │ │ │ -493 TDS_CHARSET_CP1256 = 25, │ │ │ │ │ -494 TDS_CHARSET_CP1257 = 26, │ │ │ │ │ -495 TDS_CHARSET_CP1258 = 27, │ │ │ │ │ -496 TDS_CHARSET_CP1361 = 28, │ │ │ │ │ -497 TDS_CHARSET_CP437 = 29, │ │ │ │ │ -498 TDS_CHARSET_CP850 = 30, │ │ │ │ │ -499 TDS_CHARSET_CP862 = 31, │ │ │ │ │ -500 TDS_CHARSET_CP866 = 32, │ │ │ │ │ -501 TDS_CHARSET_CP874 = 33, │ │ │ │ │ -502 TDS_CHARSET_CP932 = 34, │ │ │ │ │ -503 TDS_CHARSET_CP936 = 35, │ │ │ │ │ -504 TDS_CHARSET_CP949 = 36, │ │ │ │ │ -505 TDS_CHARSET_CP950 = 37, │ │ │ │ │ -506 TDS_CHARSET_EUC_JP = 38, │ │ │ │ │ -507 TDS_CHARSET_EUC_KR = 39, │ │ │ │ │ -508 TDS_CHARSET_EUC_TW = 40, │ │ │ │ │ -509 TDS_CHARSET_GB18030 = 41, │ │ │ │ │ -510 TDS_CHARSET_GEORGIAN_ACADEMY = 42, │ │ │ │ │ -511 TDS_CHARSET_GEORGIAN_PS = 43, │ │ │ │ │ -512 TDS_CHARSET_HZ = 44, │ │ │ │ │ -513 TDS_CHARSET_ISO_2022_CN = 45, │ │ │ │ │ -514 TDS_CHARSET_ISO_2022_CN_EXT = 46, │ │ │ │ │ -515 TDS_CHARSET_ISO_2022_JP = 47, │ │ │ │ │ -516 TDS_CHARSET_ISO_2022_JP_1 = 48, │ │ │ │ │ -517 TDS_CHARSET_ISO_2022_JP_2 = 49, │ │ │ │ │ -518 TDS_CHARSET_ISO_2022_KR = 50, │ │ │ │ │ -519 TDS_CHARSET_ISO_8859_10 = 51, │ │ │ │ │ -520 TDS_CHARSET_ISO_8859_13 = 52, │ │ │ │ │ -521 TDS_CHARSET_ISO_8859_14 = 53, │ │ │ │ │ -522 TDS_CHARSET_ISO_8859_15 = 54, │ │ │ │ │ -523 TDS_CHARSET_ISO_8859_16 = 55, │ │ │ │ │ -524 TDS_CHARSET_ISO_8859_2 = 56, │ │ │ │ │ -525 TDS_CHARSET_ISO_8859_3 = 57, │ │ │ │ │ -526 TDS_CHARSET_ISO_8859_4 = 58, │ │ │ │ │ -527 TDS_CHARSET_ISO_8859_5 = 59, │ │ │ │ │ -528 TDS_CHARSET_ISO_8859_6 = 60, │ │ │ │ │ -529 TDS_CHARSET_ISO_8859_7 = 61, │ │ │ │ │ -530 TDS_CHARSET_ISO_8859_8 = 62, │ │ │ │ │ -531 TDS_CHARSET_ISO_8859_9 = 63, │ │ │ │ │ -532 TDS_CHARSET_ISO_IR_14 = 64, │ │ │ │ │ -533 TDS_CHARSET_ISO_IR_149 = 65, │ │ │ │ │ -534 TDS_CHARSET_ISO_IR_159 = 66, │ │ │ │ │ -535 TDS_CHARSET_ISO_IR_166 = 67, │ │ │ │ │ -536 TDS_CHARSET_ISO_IR_87 = 68, │ │ │ │ │ -537 TDS_CHARSET_JAVA = 69, │ │ │ │ │ -538 TDS_CHARSET_JISX0201_1976 = 70, │ │ │ │ │ -539 TDS_CHARSET_KOI8_R = 71, │ │ │ │ │ -540 TDS_CHARSET_KOI8_RU = 72, │ │ │ │ │ -541 TDS_CHARSET_KOI8_T = 73, │ │ │ │ │ -542 TDS_CHARSET_KOI8_U = 74, │ │ │ │ │ -543 TDS_CHARSET_MAC = 75, │ │ │ │ │ -544 TDS_CHARSET_MACARABIC = 76, │ │ │ │ │ -545 TDS_CHARSET_MACCENTRALEUROPE = 77, │ │ │ │ │ -546 TDS_CHARSET_MACCROATIAN = 78, │ │ │ │ │ -547 TDS_CHARSET_MACCYRILLIC = 79, │ │ │ │ │ -548 TDS_CHARSET_MACGREEK = 80, │ │ │ │ │ -549 TDS_CHARSET_MACHEBREW = 81, │ │ │ │ │ -550 TDS_CHARSET_MACICELAND = 82, │ │ │ │ │ -551 TDS_CHARSET_MACROMANIA = 83, │ │ │ │ │ -552 TDS_CHARSET_MACTHAI = 84, │ │ │ │ │ -553 TDS_CHARSET_MACTURKISH = 85, │ │ │ │ │ -554 TDS_CHARSET_MACUKRAINE = 86, │ │ │ │ │ -555 TDS_CHARSET_MULELAO_1 = 87, │ │ │ │ │ -556 TDS_CHARSET_NEXTSTEP = 88, │ │ │ │ │ -557 TDS_CHARSET_ROMAN8 = 89, │ │ │ │ │ -558 TDS_CHARSET_SJIS = 90, │ │ │ │ │ -559 TDS_CHARSET_TCVN = 91, │ │ │ │ │ -560 TDS_CHARSET_US_ASCII = 92, │ │ │ │ │ -561 TDS_CHARSET_UTF_7 = 93, │ │ │ │ │ -562 TDS_CHARSET_VISCII = 94, │ │ │ │ │ -563 TDS_NUM_CHARSETS = 95 │ │ │ │ │ -564}; │ │ │ │ │ -565 │ │ │ │ │ -_character_set_alias │ │ │ │ │ -Definition iconv.h:73 │ │ │ │ │ -tds_encoding │ │ │ │ │ -Information relevant to libiconv. │ │ │ │ │ -Definition tds.h:603 │ │ │ │ │ + * utils │ │ │ │ │ +dlist.h │ │ │ │ │ +1/* Dlist - dynamic list │ │ │ │ │ +2 * Copyright (C) 2016-2024 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ │ │ │ │ │ +21#define _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ │ │ │ │ │ +22 │ │ │ │ │ +23typedef struct dlist_ring { │ │ │ │ │ +24 struct dlist_ring *next; │ │ │ │ │ +25 struct dlist_ring *prev; │ │ │ │ │ +26} dlist_ring; │ │ │ │ │ +27 │ │ │ │ │ +28#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +29void dlist_ring_check(dlist_ring *ring); │ │ │ │ │ +30#endif │ │ │ │ │ +31 │ │ │ │ │ +32#define DLIST_FIELDS(name) \ │ │ │ │ │ +33 dlist_ring name │ │ │ │ │ +34 │ │ │ │ │ +35#define DLIST_FOREACH(prefix, list, p) \ │ │ │ │ │ +36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next │ │ │ │ │ +(list, p)) │ │ │ │ │ +37 │ │ │ │ │ +38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_ │ │ │ │ │ +item) │ │ │ │ │ +39{ │ │ │ │ │ +40 assert(!ring_item->next && !ring_item->prev); │ │ │ │ │ +41 ring_pos->next->prev = ring_item; │ │ │ │ │ +42 ring_item->prev = ring_pos; │ │ │ │ │ +43 ring_item->next = ring_pos->next; │ │ │ │ │ +44 ring_pos->next = ring_item; │ │ │ │ │ +45 assert(ring_item->next && ring_item->prev); │ │ │ │ │ +46} │ │ │ │ │ +47 │ │ │ │ │ +48#endif /* _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ */ │ │ │ │ │ +dlist_ring │ │ │ │ │ +Definition dlist.h:23 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00419_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/dlist.tmpl.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
utils.h
│ │ │ │ +
dlist.tmpl.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2016 Frediano Ziglio
│ │ │ │ +
1/* Dlist - dynamic list
│ │ │ │ +
2 * Copyright (C) 2016-2024 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,52 +96,117 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_eFYZwccrMRZEhF1ruz6j9O_
│ │ │ │ -
21#define _tdsguard_eFYZwccrMRZEhF1ruz6j9O_
│ │ │ │ -
22
│ │ │ │ -
23#if HAVE_STDDEF_H
│ │ │ │ -
24#include <stddef.h>
│ │ │ │ -
25#endif /* HAVE_STDDEF_H */
│ │ │ │ -
26
│ │ │ │ -
27#include <freetds/time.h>
│ │ │ │ -
28#include <freetds/sysdep_private.h>
│ │ │ │ -
29
│ │ │ │ -
30#include <freetds/pushvis.h>
│ │ │ │ -
31
│ │ │ │ -
32#ifdef __cplusplus
│ │ │ │ -
33extern "C" {
│ │ │ │ -
34#endif
│ │ │ │ -
35
│ │ │ │ -
36void tds_sleep_s(unsigned sec);
│ │ │ │ -
37void tds_sleep_ms(unsigned ms);
│ │ │ │ -
38
│ │ │ │ -
39char *tds_getpassarg(char *arg);
│ │ │ │ -
40
│ │ │ │ -
41char *tds_timestamp_str(char *str, int maxlen);
│ │ │ │ -
42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);
│ │ │ │ -
43int tds_getservice(const char *name);
│ │ │ │ -
44
│ │ │ │ -
45int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);
│ │ │ │ -
46int tds_socket_set_nodelay(TDS_SYS_SOCKET sock);
│ │ │ │ -
47
│ │ │ │ -
48char *tds_strndup(const void *s, TDS_INTPTR len);
│ │ │ │ -
49
│ │ │ │ -
50#ifdef __cplusplus
│ │ │ │ -
51}
│ │ │ │ -
52#endif
│ │ │ │ -
53
│ │ │ │ -
54#include <freetds/popvis.h>
│ │ │ │ -
55
│ │ │ │ -
56#endif
│ │ │ │ -
int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)
Set socket to not throw SIGPIPE.
Definition net.c:89
│ │ │ │ +
20#include <freetds/bool.h>
│ │ │ │ +
21#include <freetds/utils.h>
│ │ │ │ +
22#include <freetds/macros.h>
│ │ │ │ +
23
│ │ │ │ +
24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_LIST_TYPE)
│ │ │ │ +
25#error Required defines for dlist missing!
│ │ │ │ +
26#endif
│ │ │ │ +
27
│ │ │ │ +
28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \
│ │ │ │ +
29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)
│ │ │ │ +
30#error Some internal dlist macros already defined
│ │ │ │ +
31#endif
│ │ │ │ +
32
│ │ │ │ +
│ │ │ │ +
33typedef struct
│ │ │ │ +
34{
│ │ │ │ +
35 dlist_ring ring;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
37
│ │ │ │ +
38#define DLIST_PASTER(x,y) x ## _ ## y
│ │ │ │ +
39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)
│ │ │ │ +
40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)
│ │ │ │ +
41#define DLIST_ITEM(ring) \
│ │ │ │ +
42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_NAME(item))))
│ │ │ │ +
43
│ │ │ │ +
44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list TDS_UNUSED)
│ │ │ │ +
45{
│ │ │ │ +
46#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
47 assert(list != NULL);
│ │ │ │ +
48 dlist_ring_check(&list->ring);
│ │ │ │ +
49#endif
│ │ │ │ +
50}
│ │ │ │ +
51
│ │ │ │ +
52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)
│ │ │ │ +
53{
│ │ │ │ +
54 list->ring.next = list->ring.prev = &list->ring;
│ │ │ │ +
55 DLIST_NAME(check)(list);
│ │ │ │ +
56}
│ │ │ │ +
57
│ │ │ │ +
58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)
│ │ │ │ +
59{
│ │ │ │ +
60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);
│ │ │ │ +
61}
│ │ │ │ +
62
│ │ │ │ +
63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)
│ │ │ │ +
64{
│ │ │ │ +
65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);
│ │ │ │ +
66}
│ │ │ │ +
67
│ │ │ │ +
68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
69{
│ │ │ │ +
70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).next);
│ │ │ │ +
71}
│ │ │ │ +
72
│ │ │ │ +
73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
74{
│ │ │ │ +
75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).prev);
│ │ │ │ +
76}
│ │ │ │ +
77
│ │ │ │ +
78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
79{
│ │ │ │ +
80 DLIST_NAME(check)(list);
│ │ │ │ +
81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));
│ │ │ │ +
82 DLIST_NAME(check)(list);
│ │ │ │ +
83}
│ │ │ │ +
84
│ │ │ │ +
85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
86{
│ │ │ │ +
87 DLIST_NAME(check)(list);
│ │ │ │ +
88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));
│ │ │ │ +
89 DLIST_NAME(check)(list);
│ │ │ │ +
90}
│ │ │ │ +
91
│ │ │ │ +
92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
93{
│ │ │ │ +
94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME(item).next;
│ │ │ │ +
95 DLIST_NAME(check)(list);
│ │ │ │ +
96 if (prev) {
│ │ │ │ +
97 prev->next = next;
│ │ │ │ +
98 next->prev = prev;
│ │ │ │ +
99 }
│ │ │ │ +
100 item->DLIST_NAME(item).prev = NULL;
│ │ │ │ +
101 item->DLIST_NAME(item).next = NULL;
│ │ │ │ +
102 DLIST_NAME(check)(list);
│ │ │ │ +
103}
│ │ │ │ +
104
│ │ │ │ +
105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ +
106{
│ │ │ │ +
107 DLIST_NAME(check)(list);
│ │ │ │ +
108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next != NULL;
│ │ │ │ +
109}
│ │ │ │ +
110
│ │ │ │ +
111#undef DLIST_ITEM
│ │ │ │ +
112#undef DLIST_NAME
│ │ │ │ +
113#undef DLIST_ITEM_TYPE
│ │ │ │ +
114#undef DLIST_LIST_TYPE
│ │ │ │ +
115#undef DLIST_PREFIX
│ │ │ │ +
116#undef DLIST_PASTER
│ │ │ │ +
117#undef DLIST_EVALUATOR
│ │ │ │ +
118
│ │ │ │ +
Definition dlist.h:23
│ │ │ │ +
Definition dlist.tmpl.h:34
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,17 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -utils.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2016 Frediano Ziglio │ │ │ │ │ + * utils │ │ │ │ │ +dlist.tmpl.h │ │ │ │ │ +1/* Dlist - dynamic list │ │ │ │ │ +2 * Copyright (C) 2016-2024 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,50 +21,124 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_eFYZwccrMRZEhF1ruz6j9O_ │ │ │ │ │ -21#define _tdsguard_eFYZwccrMRZEhF1ruz6j9O_ │ │ │ │ │ -22 │ │ │ │ │ -23#if HAVE_STDDEF_H │ │ │ │ │ -24#include │ │ │ │ │ -25#endif /* HAVE_STDDEF_H */ │ │ │ │ │ -26 │ │ │ │ │ -27#include │ │ │ │ │ -28#include │ │ │ │ │ -29 │ │ │ │ │ -30#include │ │ │ │ │ -31 │ │ │ │ │ -32#ifdef __cplusplus │ │ │ │ │ -33extern "C" { │ │ │ │ │ -34#endif │ │ │ │ │ -35 │ │ │ │ │ -36void tds_sleep_s(unsigned sec); │ │ │ │ │ -37void tds_sleep_ms(unsigned ms); │ │ │ │ │ -38 │ │ │ │ │ -39char *tds_getpassarg(char *arg); │ │ │ │ │ -40 │ │ │ │ │ -41char *tds_timestamp_str(char *str, int maxlen); │ │ │ │ │ -42struct tm *tds_localtime_r(const time_t *timep, struct tm *result); │ │ │ │ │ -43int tds_getservice(const char *name); │ │ │ │ │ -44 │ │ │ │ │ -45int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on); │ │ │ │ │ -46int tds_socket_set_nodelay(TDS_SYS_SOCKET sock); │ │ │ │ │ -47 │ │ │ │ │ -48char *tds_strndup(const void *s, TDS_INTPTR len); │ │ │ │ │ -49 │ │ │ │ │ -50#ifdef __cplusplus │ │ │ │ │ -51} │ │ │ │ │ -52#endif │ │ │ │ │ -53 │ │ │ │ │ -54#include │ │ │ │ │ -55 │ │ │ │ │ -56#endif │ │ │ │ │ -tds_socket_set_nosigpipe │ │ │ │ │ -int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on) │ │ │ │ │ -Set socket to not throw SIGPIPE. │ │ │ │ │ -Definition net.c:89 │ │ │ │ │ +20#include │ │ │ │ │ +21#include │ │ │ │ │ +22#include │ │ │ │ │ +23 │ │ │ │ │ +24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_ │ │ │ │ │ +LIST_TYPE) │ │ │ │ │ +25#error Required defines for dlist missing! │ │ │ │ │ +26#endif │ │ │ │ │ +27 │ │ │ │ │ +28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \ │ │ │ │ │ +29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM) │ │ │ │ │ +30#error Some internal dlist macros already defined │ │ │ │ │ +31#endif │ │ │ │ │ +32 │ │ │ │ │ +33typedef struct │ │ │ │ │ +34{ │ │ │ │ │ +35 dlist_ring ring; │ │ │ │ │ +36} DLIST_LIST_TYPE; │ │ │ │ │ +37 │ │ │ │ │ +38#define DLIST_PASTER(x,y) x ## _ ## y │ │ │ │ │ +39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y) │ │ │ │ │ +40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix) │ │ │ │ │ +41#define DLIST_ITEM(ring) \ │ │ │ │ │ +42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_ │ │ │ │ │ +NAME(item)))) │ │ │ │ │ +43 │ │ │ │ │ +44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list TDS_UNUSED) │ │ │ │ │ +45{ │ │ │ │ │ +46#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +47 assert(list != NULL); │ │ │ │ │ +48 dlist_ring_check(&list->ring); │ │ │ │ │ +49#endif │ │ │ │ │ +50} │ │ │ │ │ +51 │ │ │ │ │ +52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list) │ │ │ │ │ +53{ │ │ │ │ │ +54 list->ring.next = list->ring.prev = &list->ring; │ │ │ │ │ +55 DLIST_NAME(check)(list); │ │ │ │ │ +56} │ │ │ │ │ +57 │ │ │ │ │ +58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list) │ │ │ │ │ +59{ │ │ │ │ │ +60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next); │ │ │ │ │ +61} │ │ │ │ │ +62 │ │ │ │ │ +63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list) │ │ │ │ │ +64{ │ │ │ │ │ +65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev); │ │ │ │ │ +66} │ │ │ │ │ +67 │ │ │ │ │ +68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ │ │ │ │ │ +ITEM_TYPE *item) │ │ │ │ │ +69{ │ │ │ │ │ +70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item- │ │ │ │ │ +>DLIST_NAME(item).next); │ │ │ │ │ +71} │ │ │ │ │ +72 │ │ │ │ │ +73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ │ │ │ │ │ +ITEM_TYPE *item) │ │ │ │ │ +74{ │ │ │ │ │ +75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item- │ │ │ │ │ +>DLIST_NAME(item).prev); │ │ │ │ │ +76} │ │ │ │ │ +77 │ │ │ │ │ +78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ +*item) │ │ │ │ │ +79{ │ │ │ │ │ +80 DLIST_NAME(check)(list); │ │ │ │ │ +81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item)); │ │ │ │ │ +82 DLIST_NAME(check)(list); │ │ │ │ │ +83} │ │ │ │ │ +84 │ │ │ │ │ +85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ +*item) │ │ │ │ │ +86{ │ │ │ │ │ +87 DLIST_NAME(check)(list); │ │ │ │ │ +88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item)); │ │ │ │ │ +89 DLIST_NAME(check)(list); │ │ │ │ │ +90} │ │ │ │ │ +91 │ │ │ │ │ +92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ +*item) │ │ │ │ │ +93{ │ │ │ │ │ +94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME │ │ │ │ │ +(item).next; │ │ │ │ │ +95 DLIST_NAME(check)(list); │ │ │ │ │ +96 if (prev) { │ │ │ │ │ +97 prev->next = next; │ │ │ │ │ +98 next->prev = prev; │ │ │ │ │ +99 } │ │ │ │ │ +100 item->DLIST_NAME(item).prev = NULL; │ │ │ │ │ +101 item->DLIST_NAME(item).next = NULL; │ │ │ │ │ +102 DLIST_NAME(check)(list); │ │ │ │ │ +103} │ │ │ │ │ +104 │ │ │ │ │ +105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_ │ │ │ │ │ +TYPE *item) │ │ │ │ │ +106{ │ │ │ │ │ +107 DLIST_NAME(check)(list); │ │ │ │ │ +108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next │ │ │ │ │ +!= NULL; │ │ │ │ │ +109} │ │ │ │ │ +110 │ │ │ │ │ +111#undef DLIST_ITEM │ │ │ │ │ +112#undef DLIST_NAME │ │ │ │ │ +113#undef DLIST_ITEM_TYPE │ │ │ │ │ +114#undef DLIST_LIST_TYPE │ │ │ │ │ +115#undef DLIST_PREFIX │ │ │ │ │ +116#undef DLIST_PASTER │ │ │ │ │ +117#undef DLIST_EVALUATOR │ │ │ │ │ +118 │ │ │ │ │ +dlist_ring │ │ │ │ │ +Definition dlist.h:23 │ │ │ │ │ +DLIST_LIST_TYPE │ │ │ │ │ +Definition dlist.tmpl.h:34 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00422_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/windows.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/nosigpipe.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
windows.h
│ │ │ │ +
nosigpipe.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2018 Frediano Ziglio
│ │ │ │ +
2 * Copyright (C) 2024 Ziglio Frediano
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,24 +96,32 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_e9mm80mk5L6wSKLouC2UaM_
│ │ │ │ -
21#define _tdsguard_e9mm80mk5L6wSKLouC2UaM_
│ │ │ │ +
20#ifndef _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_
│ │ │ │ +
21#define _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_
│ │ │ │
22
│ │ │ │ -
23#ifdef _WIN32
│ │ │ │ -
24#include <winsock2.h>
│ │ │ │ -
25#include <ws2tcpip.h>
│ │ │ │ -
26#include <windows.h>
│ │ │ │ -
27#endif
│ │ │ │ -
28
│ │ │ │ -
29#endif /* _tdsguard_e9mm80mk5L6wSKLouC2UaM_ */
│ │ │ │ +
23#if HAVE_SYS_TYPES_H
│ │ │ │ +
24#include <sys/types.h>
│ │ │ │ +
25#endif /* HAVE_SYS_TYPES_H */
│ │ │ │ +
26
│ │ │ │ +
27#if HAVE_SYS_SOCKET_H
│ │ │ │ +
28#include <sys/socket.h>
│ │ │ │ +
29#endif /* HAVE_SYS_SOCKET_H */
│ │ │ │ +
30
│ │ │ │ +
31#if (!defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__FreeBSD) \
│ │ │ │ +
32 && !defined(__NetBSD__) && !defined(__NetBSD)) \
│ │ │ │ +
33 || defined(__SYMBIAN32__)
│ │ │ │ +
34#undef SO_NOSIGPIPE
│ │ │ │ +
35#endif
│ │ │ │ +
36
│ │ │ │ +
37#endif /* _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,17 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -windows.h │ │ │ │ │ + * utils │ │ │ │ │ +nosigpipe.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2018 Frediano Ziglio │ │ │ │ │ +2 * Copyright (C) 2024 Ziglio Frediano │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,19 +21,27 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_e9mm80mk5L6wSKLouC2UaM_ │ │ │ │ │ -21#define _tdsguard_e9mm80mk5L6wSKLouC2UaM_ │ │ │ │ │ +20#ifndef _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ │ │ │ │ │ +21#define _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ │ │ │ │ │ 22 │ │ │ │ │ -23#ifdef _WIN32 │ │ │ │ │ -24#include │ │ │ │ │ -25#include │ │ │ │ │ -26#include │ │ │ │ │ -27#endif │ │ │ │ │ -28 │ │ │ │ │ -29#endif /* _tdsguard_e9mm80mk5L6wSKLouC2UaM_ */ │ │ │ │ │ +23#if HAVE_SYS_TYPES_H │ │ │ │ │ +24#include │ │ │ │ │ +25#endif /* HAVE_SYS_TYPES_H */ │ │ │ │ │ +26 │ │ │ │ │ +27#if HAVE_SYS_SOCKET_H │ │ │ │ │ +28#include │ │ │ │ │ +29#endif /* HAVE_SYS_SOCKET_H */ │ │ │ │ │ +30 │ │ │ │ │ +31#if (!defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__FreeBSD) \ │ │ │ │ │ +32 && !defined(__NetBSD__) && !defined(__NetBSD)) \ │ │ │ │ │ +33 || defined(__SYMBIAN32__) │ │ │ │ │ +34#undef SO_NOSIGPIPE │ │ │ │ │ +35#endif │ │ │ │ │ +36 │ │ │ │ │ +37#endif /* _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00425_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/sysconfdir.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/hmac_md5.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,22 +70,50 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
sysconfdir.h
│ │ │ │ +
hmac_md5.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#define FREETDS_SYSCONFDIR "/etc/freetds"
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2008 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_cKNGa1szdpreKWqKpKKcAA_
│ │ │ │ +
21#define _tdsguard_cKNGa1szdpreKWqKpKKcAA_
│ │ │ │ +
22
│ │ │ │ +
23#include <freetds/pushvis.h>
│ │ │ │ +
24void hmac_md5(const unsigned char key[16],
│ │ │ │ +
25 const unsigned char* data, size_t data_len,
│ │ │ │ +
26 unsigned char* digest);
│ │ │ │ +
27#include <freetds/popvis.h>
│ │ │ │ +
28
│ │ │ │ +
29#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,10 +1,39 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -sysconfdir.h │ │ │ │ │ -1#define FREETDS_SYSCONFDIR "/etc/freetds" │ │ │ │ │ + * utils │ │ │ │ │ +hmac_md5.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2008 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_cKNGa1szdpreKWqKpKKcAA_ │ │ │ │ │ +21#define _tdsguard_cKNGa1szdpreKWqKpKKcAA_ │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24void hmac_md5(const unsigned char key[16], │ │ │ │ │ +25 const unsigned char* data, size_t data_len, │ │ │ │ │ +26 unsigned char* digest); │ │ │ │ │ +27#include │ │ │ │ │ +28 │ │ │ │ │ +29#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00428_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/odbc.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/path.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,846 +70,82 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
odbc.h
│ │ │ │ +
path.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2004-2010 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21#ifndef _tdsguard_gQHaPEvp2dAAa45TAutROb_
│ │ │ │ -
22#define _tdsguard_gQHaPEvp2dAAa45TAutROb_
│ │ │ │ -
23
│ │ │ │ -
24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
│ │ │ │ -
25#include <freetds/tds.h>
│ │ │ │ -
26#include <freetds/thread.h>
│ │ │ │ -
27#include <freetds/data.h>
│ │ │ │ +
2 * Copyright (C) 2023 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_eI8iNo9FExd6aRlc3im79S_
│ │ │ │ +
21#define _tdsguard_eI8iNo9FExd6aRlc3im79S_
│ │ │ │ +
22
│ │ │ │ +
23#ifdef _WIN32
│ │ │ │ +
24#include <wchar.h>
│ │ │ │ +
25#endif
│ │ │ │ +
26
│ │ │ │ +
27#include <freetds/pushvis.h>
│ │ │ │
28
│ │ │ │ -
29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)
│ │ │ │ -
30#include <sql.h>
│ │ │ │ -
31#include <sqlext.h>
│ │ │ │ -
32#if defined(UNIXODBC) || defined(_WIN32)
│ │ │ │ -
33#include <odbcinst.h>
│ │ │ │ -
34#endif
│ │ │ │ -
35#else /* IODBC */
│ │ │ │ -
36#include <isql.h>
│ │ │ │ -
37#include <isqlext.h>
│ │ │ │ -
38#ifdef HAVE_IODBCINST_H
│ │ │ │ -
39#include <iodbcinst.h>
│ │ │ │ -
40#endif /* HAVE_IODBCINST_H */
│ │ │ │ -
41#endif
│ │ │ │ -
42
│ │ │ │ -
43#ifdef HAVE_WCHAR_H
│ │ │ │ -
44#include <wchar.h>
│ │ │ │ -
45#endif
│ │ │ │ -
46
│ │ │ │ -
47#ifndef HAVE_SQLLEN
│ │ │ │ -
48#ifndef SQLULEN
│ │ │ │ -
49#define SQLULEN SQLUINTEGER
│ │ │ │ -
50#endif
│ │ │ │ -
51#ifndef SQLLEN
│ │ │ │ -
52#define SQLLEN SQLINTEGER
│ │ │ │ +
29#ifdef _WIN32
│ │ │ │ +
30#define TDS_SDIR_SEPARATOR L"\\"
│ │ │ │ +
31typedef wchar_t tds_dir_char;
│ │ │ │ +
32#define tds_dir_open _wfopen
│ │ │ │ +
33#define tds_dir_getenv _wgetenv
│ │ │ │ +
34#define tds_dir_dup _wcsdup
│ │ │ │ +
35#define tds_dir_len wcslen
│ │ │ │ +
36#define tds_dir_cmp wcscmp
│ │ │ │ +
37#define tds_dir_snprintf _snwprintf
│ │ │ │ +
38#define TDS_DIR(s) L ## s
│ │ │ │ +
39#define tdsPRIdir "ls"
│ │ │ │ +
40tds_dir_char *tds_dir_from_cstr(const char *path);
│ │ │ │ +
41#else
│ │ │ │ +
42#define TDS_SDIR_SEPARATOR "/"
│ │ │ │ +
43typedef char tds_dir_char;
│ │ │ │ +
44#define tds_dir_open fopen
│ │ │ │ +
45#define tds_dir_getenv getenv
│ │ │ │ +
46#define tds_dir_dup strdup
│ │ │ │ +
47#define tds_dir_len strlen
│ │ │ │ +
48#define tds_dir_cmp strcmp
│ │ │ │ +
49#define tds_dir_snprintf snprintf
│ │ │ │ +
50#define TDS_DIR(s) s
│ │ │ │ +
51#define tdsPRIdir "s"
│ │ │ │ +
52#define tds_dir_from_cstr(s) strdup(s)
│ │ │ │
53#endif
│ │ │ │ -
54#endif
│ │ │ │ -
55
│ │ │ │ -
56#ifndef HAVE_SQLSETPOSIROW
│ │ │ │ -
57#define SQLSETPOSIROW SQLUSMALLINT
│ │ │ │ -
58#endif
│ │ │ │ -
59
│ │ │ │ -
60#ifndef HAVE_SQLROWOFFSET
│ │ │ │ -
61#define SQLROWOFFSET SQLLEN
│ │ │ │ -
62#endif
│ │ │ │ -
63
│ │ │ │ -
64#ifndef HAVE_SQLROWSETSIZE
│ │ │ │ -
65#define SQLROWSETSIZE SQLULEN
│ │ │ │ -
66#endif
│ │ │ │ -
67
│ │ │ │ -
68#ifdef __cplusplus
│ │ │ │ -
69extern "C"
│ │ │ │ -
70{
│ │ │ │ -
71#if 0
│ │ │ │ -
72}
│ │ │ │ -
73#endif
│ │ │ │ -
74#endif
│ │ │ │ -
75
│ │ │ │ -
76#include <freetds/pushvis.h>
│ │ │ │ -
77#ifdef __clang__
│ │ │ │ -
78#define ODBC_API SQL_API __attribute__((visibility("default")))
│ │ │ │ -
79#elif defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ -
80#define ODBC_API SQL_API __attribute__((externally_visible))
│ │ │ │ -
81#else
│ │ │ │ -
82#define ODBC_API SQL_API
│ │ │ │ -
83#endif
│ │ │ │ -
84
│ │ │ │ -
85#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)
│ │ │ │ -
86# define ODBC_PUBLIC __attribute__((dllexport))
│ │ │ │ -
87#else
│ │ │ │ -
88# define ODBC_PUBLIC
│ │ │ │ -
89#endif
│ │ │ │ -
90
│ │ │ │ -
91#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )
│ │ │ │ -
92#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )
│ │ │ │ -
93#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )
│ │ │ │ -
94
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
96{
│ │ │ │ -
97 const char *msg;
│ │ │ │ -
98 char state2[6];
│ │ │ │ -
99 char state3[6];
│ │ │ │ -
100 TDS_UINT native;
│ │ │ │ -
101 char *server;
│ │ │ │ -
102 int linenum;
│ │ │ │ -
103 int msgstate;
│ │ │ │ -
104 int row;
│ │ │ │ -
105 bool msg_is_static;
│ │ │ │ -
106};
│ │ │ │ -
│ │ │ │ -
107
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
109{
│ │ │ │ -
110 struct _sql_error *errs;
│ │ │ │ -
111 int num_errors;
│ │ │ │ -
112 SQLRETURN lastrc;
│ │ │ │ -
113 char ranked;
│ │ │ │ -
114};
│ │ │ │ -
│ │ │ │ -
115
│ │ │ │ -
116typedef struct _sql_errors TDS_ERRS;
│ │ │ │ -
117
│ │ │ │ -
118#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
119void odbc_check_struct_extra(void *p);
│ │ │ │ -
120#else
│ │ │ │ -
121static inline void odbc_check_struct_extra(void *p TDS_UNUSED) {}
│ │ │ │ -
122#endif
│ │ │ │ -
123
│ │ │ │ -
124#define ODBC_RETURN(handle, rc) \
│ │ │ │ -
125 do { odbc_check_struct_extra(handle); \
│ │ │ │ -
126 return handle->errs.lastrc = (rc); } while(0)
│ │ │ │ -
127#define ODBC_RETURN_(handle) \
│ │ │ │ -
128 do { odbc_check_struct_extra(handle); \
│ │ │ │ -
129 return handle->errs.lastrc; } while(0)
│ │ │ │ -
130
│ │ │ │ -
131#define ODBC_EXIT(handle, rc) \
│ │ │ │ -
132 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \
│ │ │ │ -
133 odbc_check_struct_extra(handle); \
│ │ │ │ -
134 tds_mutex_unlock(&handle->mtx); \
│ │ │ │ -
135 return _odbc_rc; } while(0)
│ │ │ │ -
136#define ODBC_EXIT_(handle) \
│ │ │ │ -
137 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \
│ │ │ │ -
138 odbc_check_struct_extra(handle); \
│ │ │ │ -
139 tds_mutex_unlock(&handle->mtx); \
│ │ │ │ -
140 return _odbc_rc; } while(0)
│ │ │ │ -
141
│ │ │ │ -
142
│ │ │ │ -
144void odbc_errs_reset(struct _sql_errors *errs);
│ │ │ │ -
145
│ │ │ │ -
147void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const char *msg);
│ │ │ │ -
148
│ │ │ │ -
150void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const char *sqlstate, const char *msg, int linenum,
│ │ │ │ -
151 int msgstate, const char *server, int row);
│ │ │ │ -
152
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
155{
│ │ │ │ -
156 SQLSMALLINT sql_desc_alloc_type;
│ │ │ │ -
157 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en-us;298678 */
│ │ │ │ -
158 SQLSMALLINT sql_desc_count;
│ │ │ │ -
159 SQLINTEGER sql_desc_bind_type;
│ │ │ │ -
160 SQLULEN sql_desc_array_size;
│ │ │ │ -
161 SQLUSMALLINT *sql_desc_array_status_ptr;
│ │ │ │ -
162 SQLULEN *sql_desc_rows_processed_ptr;
│ │ │ │ -
163 SQLLEN *sql_desc_bind_offset_ptr;
│ │ │ │ -
164};
│ │ │ │ -
│ │ │ │ -
165
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
168{
│ │ │ │ -
169 DSTR sql_desc_base_column_name;
│ │ │ │ -
170 DSTR sql_desc_base_table_name;
│ │ │ │ -
171 SQLUINTEGER sql_desc_auto_unique_value;
│ │ │ │ -
172 SQLINTEGER sql_desc_case_sensitive;
│ │ │ │ -
173 DSTR sql_desc_catalog_name;
│ │ │ │ -
174 SQLPOINTER sql_desc_data_ptr;
│ │ │ │ -
175 SQLSMALLINT sql_desc_concise_type;
│ │ │ │ -
176 SQLSMALLINT sql_desc_datetime_interval_code;
│ │ │ │ -
177 SQLINTEGER sql_desc_datetime_interval_precision;
│ │ │ │ -
178 SQLLEN sql_desc_display_size;
│ │ │ │ -
179 SQLLEN *sql_desc_indicator_ptr;
│ │ │ │ -
180 DSTR sql_desc_label;
│ │ │ │ -
181 SQLULEN sql_desc_length;
│ │ │ │ -
182 /* this point to a constant buffer, do not free or modify */
│ │ │ │ -
183 const char *sql_desc_literal_prefix;
│ │ │ │ -
184 /* this point to a constant buffer, do not free or modify */
│ │ │ │ -
185 const char *sql_desc_literal_suffix;
│ │ │ │ -
186 DSTR sql_desc_local_type_name;
│ │ │ │ -
187 DSTR sql_desc_name;
│ │ │ │ -
188 SQLSMALLINT sql_desc_fixed_prec_scale;
│ │ │ │ -
189 SQLSMALLINT sql_desc_nullable;
│ │ │ │ -
190 SQLINTEGER sql_desc_num_prec_radix;
│ │ │ │ -
191 SQLLEN sql_desc_octet_length;
│ │ │ │ -
192 SQLLEN *sql_desc_octet_length_ptr;
│ │ │ │ -
193 SQLSMALLINT sql_desc_parameter_type;
│ │ │ │ -
194 SQLSMALLINT sql_desc_precision;
│ │ │ │ -
195 SQLSMALLINT sql_desc_rowver;
│ │ │ │ -
196 SQLSMALLINT sql_desc_scale;
│ │ │ │ -
197 DSTR sql_desc_schema_name;
│ │ │ │ -
198 DSTR sql_desc_table_name;
│ │ │ │ -
199 SQLSMALLINT sql_desc_searchable;
│ │ │ │ -
200 SQLSMALLINT sql_desc_type;
│ │ │ │ -
201 /* this point to a constant buffer, do not free or modify */
│ │ │ │ -
202 const char *sql_desc_type_name;
│ │ │ │ -
203 SQLSMALLINT sql_desc_unnamed;
│ │ │ │ -
204 SQLSMALLINT sql_desc_unsigned;
│ │ │ │ -
205 SQLSMALLINT sql_desc_updatable;
│ │ │ │ -
206};
│ │ │ │ -
│ │ │ │ -
207
│ │ │ │ -
│ │ │ │ -
208struct _hdesc
│ │ │ │ -
209{
│ │ │ │ -
210 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ -
211 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ -
212 tds_mutex mtx;
│ │ │ │ -
213 int type;
│ │ │ │ -
220 int focus;
│ │ │ │ -
221 SQLHANDLE parent;
│ │ │ │ -
222 struct _dheader header;
│ │ │ │ -
223 struct _drecord *records;
│ │ │ │ -
224};
│ │ │ │ -
│ │ │ │ -
225
│ │ │ │ -
226typedef struct _hdesc TDS_DESC;
│ │ │ │ -
227
│ │ │ │ -
228#define DESC_IRD 1
│ │ │ │ -
229#define DESC_IPD 2
│ │ │ │ -
230#define DESC_ARD 3
│ │ │ │ -
231#define DESC_APD 4
│ │ │ │ -
232
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
234{
│ │ │ │ -
235 SQLUINTEGER connection_pooling;
│ │ │ │ -
236 SQLUINTEGER cp_match;
│ │ │ │ -
237 SQLINTEGER odbc_version;
│ │ │ │ -
238 SQLINTEGER output_nts;
│ │ │ │ -
239};
│ │ │ │ -
│ │ │ │ -
240
│ │ │ │ -
│ │ │ │ -
241struct _hchk
│ │ │ │ -
242{
│ │ │ │ -
243 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ -
244 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ -
245 tds_mutex mtx;
│ │ │ │ -
246};
│ │ │ │ -
│ │ │ │ -
247
│ │ │ │ -
│ │ │ │ -
248struct _henv
│ │ │ │ -
249{
│ │ │ │ -
250 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ -
251 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ -
252 tds_mutex mtx;
│ │ │ │ -
253 TDSCONTEXT *tds_ctx;
│ │ │ │ -
254 struct _heattr attr;
│ │ │ │ -
255};
│ │ │ │ -
│ │ │ │ -
256
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
258{
│ │ │ │ -
259 SQLUINTEGER access_mode;
│ │ │ │ -
260 SQLUINTEGER async_enable;
│ │ │ │ -
261 SQLUINTEGER auto_ipd;
│ │ │ │ -
262 SQLUINTEGER autocommit;
│ │ │ │ -
263 SQLUINTEGER connection_dead;
│ │ │ │ -
264 SQLUINTEGER connection_timeout;
│ │ │ │ -
265 DSTR current_catalog;
│ │ │ │ -
266 SQLUINTEGER login_timeout;
│ │ │ │ -
267 SQLUINTEGER metadata_id;
│ │ │ │ -
268 SQLUINTEGER odbc_cursors;
│ │ │ │ -
269 SQLUINTEGER packet_size;
│ │ │ │ -
270 SQLHWND quite_mode;
│ │ │ │ -
271 DSTR translate_lib;
│ │ │ │ -
272 SQLUINTEGER translate_option;
│ │ │ │ -
273 SQLUINTEGER txn_isolation;
│ │ │ │ -
274 SQLUINTEGER mars_enabled;
│ │ │ │ -
275 SQLUINTEGER cursor_type;
│ │ │ │ -
276 SQLUINTEGER bulk_enabled;
│ │ │ │ -
277#ifdef TDS_NO_DM
│ │ │ │ -
278 SQLUINTEGER trace;
│ │ │ │ -
279 DSTR tracefile;
│ │ │ │ -
280#endif
│ │ │ │ -
281};
│ │ │ │ -
│ │ │ │ -
282
│ │ │ │ -
283#define TDS_MAX_APP_DESC 100
│ │ │ │ -
284
│ │ │ │ -
285struct _hstmt;
│ │ │ │ -
│ │ │ │ -
286struct _hdbc
│ │ │ │ -
287{
│ │ │ │ -
288 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ -
289 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ -
290 tds_mutex mtx;
│ │ │ │ -
291 struct _henv *env;
│ │ │ │ - │ │ │ │ -
293 DSTR dsn;
│ │ │ │ -
294 DSTR oldpwd;
│ │ │ │ -
295#ifdef ENABLE_ODBC_WIDE
│ │ │ │ -
296 int original_charset_num;
│ │ │ │ -
297 TDSICONV *mb_conv;
│ │ │ │ -
298#endif
│ │ │ │ -
299
│ │ │ │ - │ │ │ │ - │ │ │ │ -
308 struct _hcattr attr;
│ │ │ │ -
310 TDS_DESC *uad[TDS_MAX_APP_DESC];
│ │ │ │ -
312 unsigned int cursor_support:1;
│ │ │ │ -
313 unsigned int use_oldpwd:1;
│ │ │ │ -
314 TDS_INT default_query_timeout;
│ │ │ │ -
315
│ │ │ │ -
316 TDSBCPINFO *bcpinfo;
│ │ │ │ -
317};
│ │ │ │ -
│ │ │ │ -
318
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
320{
│ │ │ │ -
321 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */
│ │ │ │ -
322/* TDS_DESC *app_row_desc; */
│ │ │ │ -
323/* TDS_DESC *app_param_desc; */
│ │ │ │ -
324 SQLUINTEGER async_enable;
│ │ │ │ -
325 SQLUINTEGER concurrency;
│ │ │ │ -
326 SQLUINTEGER cursor_scrollable;
│ │ │ │ -
327 SQLUINTEGER cursor_sensitivity;
│ │ │ │ -
328 SQLUINTEGER cursor_type;
│ │ │ │ -
329 SQLUINTEGER enable_auto_ipd;
│ │ │ │ -
330 SQLPOINTER fetch_bookmark_ptr;
│ │ │ │ -
331 SQLULEN keyset_size;
│ │ │ │ -
332 SQLULEN max_length;
│ │ │ │ -
333 SQLULEN max_rows;
│ │ │ │ -
334 SQLUINTEGER metadata_id;
│ │ │ │ -
335 SQLUINTEGER noscan;
│ │ │ │ -
336 /* apd->sql_desc_bind_offset_ptr */
│ │ │ │ -
337 /* SQLUINTEGER *param_bind_offset_ptr; */
│ │ │ │ -
338 /* apd->sql_desc_bind_type */
│ │ │ │ -
339 /* SQLUINTEGER param_bind_type; */
│ │ │ │ -
340 /* apd->sql_desc_array_status_ptr */
│ │ │ │ -
341 /* SQLUSMALLINT *param_operation_ptr; */
│ │ │ │ -
342 /* ipd->sql_desc_array_status_ptr */
│ │ │ │ -
343 /* SQLUSMALLINT *param_status_ptr; */
│ │ │ │ -
344 /* ipd->sql_desc_rows_processed_ptr */
│ │ │ │ -
345 /* SQLUSMALLINT *params_processed_ptr; */
│ │ │ │ -
346 /* apd->sql_desc_array_size */
│ │ │ │ -
347 /* SQLUINTEGER paramset_size; */
│ │ │ │ -
348 SQLUINTEGER query_timeout;
│ │ │ │ -
349 SQLUINTEGER retrieve_data;
│ │ │ │ -
350 /* ard->sql_desc_bind_offset_ptr */
│ │ │ │ -
351 /* SQLUINTEGER *row_bind_offset_ptr; */
│ │ │ │ -
352 /* ard->sql_desc_array_size */
│ │ │ │ -
353 /* SQLUINTEGER row_array_size; */
│ │ │ │ -
354 /* ard->sql_desc_bind_type */
│ │ │ │ -
355 /* SQLUINTEGER row_bind_type; */
│ │ │ │ -
356 SQLULEN row_number;
│ │ │ │ -
357 /* ard->sql_desc_array_status_ptr */
│ │ │ │ -
358 /* SQLUINTEGER *row_operation_ptr; */
│ │ │ │ -
359 /* ird->sql_desc_array_status_ptr */
│ │ │ │ -
360 /* SQLUINTEGER *row_status_ptr; */
│ │ │ │ -
361 /* ird->sql_desc_rows_processed_ptr */
│ │ │ │ -
362 /* SQLUINTEGER *rows_fetched_ptr; */
│ │ │ │ -
363 SQLUINTEGER simulate_cursor;
│ │ │ │ -
364 SQLUINTEGER use_bookmarks;
│ │ │ │ -
365 /* SQLGetStmtAttr only */
│ │ │ │ -
366/* TDS_DESC *imp_row_desc; */
│ │ │ │ -
367/* TDS_DESC *imp_param_desc; */
│ │ │ │ -
368 DSTR qn_msgtext;
│ │ │ │ -
369 DSTR qn_options;
│ │ │ │ -
370 SQLUINTEGER qn_timeout;
│ │ │ │ -
371 SQLUINTEGER param_focus;
│ │ │ │ -
372};
│ │ │ │ -
│ │ │ │ -
373
│ │ │ │ -
374typedef enum
│ │ │ │ -
375{
│ │ │ │ -
376 NOT_IN_ROW,
│ │ │ │ -
377 IN_NORMAL_ROW,
│ │ │ │ -
378 IN_COMPUTE_ROW,
│ │ │ │ -
379 AFTER_COMPUTE_ROW,
│ │ │ │ -
380 PRE_NORMAL_ROW
│ │ │ │ -
381} TDS_ODBC_ROW_STATUS;
│ │ │ │ -
382
│ │ │ │ -
383typedef enum
│ │ │ │ -
384{
│ │ │ │ -
385 ODBC_SPECIAL_NONE = 0,
│ │ │ │ -
386 ODBC_SPECIAL_GETTYPEINFO = 1,
│ │ │ │ -
387 ODBC_SPECIAL_COLUMNS = 2,
│ │ │ │ -
388 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,
│ │ │ │ -
389 ODBC_SPECIAL_SPECIALCOLUMNS = 4
│ │ │ │ -
390} TDS_ODBC_SPECIAL_ROWS;
│ │ │ │ -
391
│ │ │ │ -
│ │ │ │ -
392struct _hstmt
│ │ │ │ -
393{
│ │ │ │ -
394 SQLSMALLINT htype; /* do not reorder this field */
│ │ │ │ -
395 struct _sql_errors errs; /* do not reorder this field */
│ │ │ │ -
396 tds_mutex mtx;
│ │ │ │ -
397 struct _hdbc *dbc;
│ │ │ │ - │ │ │ │ - │ │ │ │ -
402
│ │ │ │ -
404 struct _hstmt *next;
│ │ │ │ -
406 struct _hstmt *prev;
│ │ │ │ -
407
│ │ │ │ -
408 /* begin prepared query stuff */
│ │ │ │ -
409 unsigned is_prepared_query:1;
│ │ │ │ -
410 unsigned prepared_query_is_func:1;
│ │ │ │ -
411 unsigned prepared_query_is_rpc:1;
│ │ │ │ -
416 unsigned need_reprepare:1;
│ │ │ │ -
417 unsigned param_data_called:1;
│ │ │ │ -
418 unsigned params_queried:1;
│ │ │ │ -
419 unsigned params_set:1;
│ │ │ │ -
420 /* end prepared query stuff */
│ │ │ │ -
421
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
428
│ │ │ │ -
429 unsigned int curr_param_row, num_param_rows;
│ │ │ │ -
430
│ │ │ │ -
432 unsigned int param_count;
│ │ │ │ -
433 int row;
│ │ │ │ -
435 TDS_INT8 row_count;
│ │ │ │ -
437 TDS_ODBC_ROW_STATUS row_status;
│ │ │ │ -
438 /* do NOT free dynamic, free from socket or attach to connection */
│ │ │ │ -
439 TDSDYNAMIC *dyn;
│ │ │ │ -
440 TDS_DESC *ard, *ird, *apd, *ipd;
│ │ │ │ -
441 TDS_DESC *orig_ard, *orig_apd;
│ │ │ │ -
442 SQLULEN sql_rowset_size;
│ │ │ │ -
443 struct _hsattr attr;
│ │ │ │ -
444 DSTR cursor_name; /* auto generated cursor name */
│ │ │ │ -
445 TDS_ODBC_SPECIAL_ROWS special_row;
│ │ │ │ -
446 /* do NOT free cursor, free from socket or attach to connection */
│ │ │ │ -
447 TDSCURSOR *cursor;
│ │ │ │ -
448};
│ │ │ │ -
│ │ │ │ -
449
│ │ │ │ -
450typedef struct _henv TDS_ENV;
│ │ │ │ -
451typedef struct _hdbc TDS_DBC;
│ │ │ │ -
452typedef struct _hstmt TDS_STMT;
│ │ │ │ -
453typedef struct _hchk TDS_CHK;
│ │ │ │ -
454
│ │ │ │ -
│ │ │ │ -
455typedef struct {
│ │ │ │ -
456 /* this must be the first member */
│ │ │ │ -
457 TDSCOLUMNFUNCS common;
│ │ │ │ -
458 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver);
│ │ │ │ -
459} TDS_FUNCS;
│ │ │ │ -
│ │ │ │ -
460
│ │ │ │ -
461#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)
│ │ │ │ -
462#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)
│ │ │ │ -
463#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)
│ │ │ │ -
464#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)
│ │ │ │ -
465
│ │ │ │ -
466/* fix a bug in MingW headers */
│ │ │ │ -
467#ifdef __MINGW32__
│ │ │ │ -
468#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)
│ │ │ │ -
469
│ │ │ │ -
470#undef SQL_INTERVAL_YEAR
│ │ │ │ -
471#undef SQL_INTERVAL_MONTH
│ │ │ │ -
472#undef SQL_INTERVAL_DAY
│ │ │ │ -
473#undef SQL_INTERVAL_HOUR
│ │ │ │ -
474#undef SQL_INTERVAL_MINUTE
│ │ │ │ -
475#undef SQL_INTERVAL_SECOND
│ │ │ │ -
476#undef SQL_INTERVAL_YEAR_TO_MONTH
│ │ │ │ -
477#undef SQL_INTERVAL_DAY_TO_HOUR
│ │ │ │ -
478#undef SQL_INTERVAL_DAY_TO_MINUTE
│ │ │ │ -
479#undef SQL_INTERVAL_DAY_TO_SECOND
│ │ │ │ -
480#undef SQL_INTERVAL_HOUR_TO_MINUTE
│ │ │ │ -
481#undef SQL_INTERVAL_HOUR_TO_SECOND
│ │ │ │ -
482#undef SQL_INTERVAL_MINUTE_TO_SECOND
│ │ │ │ -
483
│ │ │ │ -
484#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)
│ │ │ │ -
485#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)
│ │ │ │ -
486#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)
│ │ │ │ -
487#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)
│ │ │ │ -
488#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)
│ │ │ │ -
489#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)
│ │ │ │ -
490#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)
│ │ │ │ -
491#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)
│ │ │ │ -
492#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)
│ │ │ │ -
493#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)
│ │ │ │ -
494#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)
│ │ │ │ -
495#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)
│ │ │ │ -
496#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)
│ │ │ │ -
497
│ │ │ │ -
498#endif
│ │ │ │ -
499#endif
│ │ │ │ -
500
│ │ │ │ -
501#ifdef _WIN32
│ │ │ │ -
502bool get_login_info(HWND hwndParent, TDSLOGIN * login);
│ │ │ │ -
503#endif
│ │ │ │ -
504
│ │ │ │ -
505#define ODBC_PARAM_LIST \
│ │ │ │ -
506 ODBC_PARAM(Servername) \
│ │ │ │ -
507 ODBC_PARAM(Server) \
│ │ │ │ -
508 ODBC_PARAM(DSN) \
│ │ │ │ -
509 ODBC_PARAM(UID) \
│ │ │ │ -
510 ODBC_PARAM(PWD) \
│ │ │ │ -
511 ODBC_PARAM(Address) \
│ │ │ │ -
512 ODBC_PARAM(Port) \
│ │ │ │ -
513 ODBC_PARAM(TDS_Version) \
│ │ │ │ -
514 ODBC_PARAM(Language) \
│ │ │ │ -
515 ODBC_PARAM(Database) \
│ │ │ │ -
516 ODBC_PARAM(TextSize) \
│ │ │ │ -
517 ODBC_PARAM(PacketSize) \
│ │ │ │ -
518 ODBC_PARAM(ClientCharset) \
│ │ │ │ -
519 ODBC_PARAM(DumpFile) \
│ │ │ │ -
520 ODBC_PARAM(DumpFileAppend) \
│ │ │ │ -
521 ODBC_PARAM(DebugFlags) \
│ │ │ │ -
522 ODBC_PARAM(Encryption) \
│ │ │ │ -
523 ODBC_PARAM(Trusted_Connection) \
│ │ │ │ -
524 ODBC_PARAM(APP) \
│ │ │ │ -
525 ODBC_PARAM(WSID) \
│ │ │ │ -
526 ODBC_PARAM(UseNTLMv2) \
│ │ │ │ -
527 ODBC_PARAM(MARS_Connection) \
│ │ │ │ -
528 ODBC_PARAM(REALM) \
│ │ │ │ -
529 ODBC_PARAM(ServerSPN) \
│ │ │ │ -
530 ODBC_PARAM(AttachDbFilename) \
│ │ │ │ -
531 ODBC_PARAM(ApplicationIntent) \
│ │ │ │ -
532 ODBC_PARAM(Timeout) \
│ │ │ │ -
533 ODBC_PARAM(Encrypt) \
│ │ │ │ -
534 ODBC_PARAM(HostNameInCertificate)
│ │ │ │ -
535
│ │ │ │ -
536#define ODBC_PARAM(p) ODBC_PARAM_##p,
│ │ │ │ -
537enum {
│ │ │ │ -
538 ODBC_PARAM_LIST
│ │ │ │ -
539 ODBC_PARAM_SIZE
│ │ │ │ -
540};
│ │ │ │ -
541#undef ODBC_PARAM
│ │ │ │ -
542
│ │ │ │ -
543#define ODBC_PARAM(p) extern const char odbc_param_##p[];
│ │ │ │ -
544ODBC_PARAM_LIST
│ │ │ │ -
545#undef ODBC_PARAM
│ │ │ │ -
546
│ │ │ │ -
547/*
│ │ │ │ -
548 * connectparams.h
│ │ │ │ -
549 */
│ │ │ │ -
550
│ │ │ │ -
│ │ │ │ -
551typedef struct {
│ │ │ │ -
552 const char *p;
│ │ │ │ -
553 size_t len;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
555
│ │ │ │ -
563bool odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, const char *connect_string_end,
│ │ │ │ -
564 TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params);
│ │ │ │ -
565bool odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);
│ │ │ │ -
566#ifdef _WIN32
│ │ │ │ -
567int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char **out);
│ │ │ │ -
568#endif
│ │ │ │ -
569
│ │ │ │ -
570/*
│ │ │ │ -
571 * convert_tds2sql.c
│ │ │ │ -
572 */
│ │ │ │ -
573SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype,
│ │ │ │ -
574 TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);
│ │ │ │ -
575SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_CHAR * dest, SQLULEN destlen);
│ │ │ │ -
576
│ │ │ │ -
577
│ │ │ │ -
578
│ │ │ │ -
579/*
│ │ │ │ -
580 * descriptor.c
│ │ │ │ -
581 */
│ │ │ │ -
│ │ │ │ -
582typedef struct {
│ │ │ │ -
583 DSTR type_name;
│ │ │ │ -
584 TDS_DESC *apd;
│ │ │ │ -
585 TDS_DESC *ipd;
│ │ │ │ -
586} SQLTVP;
│ │ │ │ -
│ │ │ │ -
587
│ │ │ │ -
588TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, SQLSMALLINT alloc_type);
│ │ │ │ -
589SQLRETURN desc_free(TDS_DESC * desc);
│ │ │ │ -
590SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);
│ │ │ │ -
591SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);
│ │ │ │ -
592SQLRETURN desc_free_records(TDS_DESC * desc);
│ │ │ │ -
593TDS_DBC *desc_get_dbc(TDS_DESC *desc);
│ │ │ │ -
594SQLTVP *tvp_alloc(TDS_STMT *stmt);
│ │ │ │ -
595void tvp_free(SQLTVP *tvp);
│ │ │ │ -
596
│ │ │ │ -
597/*
│ │ │ │ -
598 * odbc.c
│ │ │ │ -
599 */
│ │ │ │ -
600
│ │ │ │ -
601SQLRETURN odbc_SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);
│ │ │ │ -
602
│ │ │ │ -
603/*
│ │ │ │ -
604 * odbc_checks.h
│ │ │ │ -
605 */
│ │ │ │ -
606#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
607/* macro */
│ │ │ │ -
608#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)
│ │ │ │ -
609#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)
│ │ │ │ -
610#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)
│ │ │ │ -
611#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)
│ │ │ │ -
612/* declarations*/
│ │ │ │ -
613void odbc_check_env_extra(TDS_ENV * env);
│ │ │ │ -
614void odbc_check_dbc_extra(TDS_DBC * dbc);
│ │ │ │ -
615void odbc_check_stmt_extra(TDS_STMT * stmt);
│ │ │ │ -
616void odbc_check_desc_extra(TDS_DESC * desc);
│ │ │ │ -
617#else
│ │ │ │ -
618/* macro */
│ │ │ │ -
619#define CHECK_ENV_EXTRA(env)
│ │ │ │ -
620#define CHECK_DBC_EXTRA(dbc)
│ │ │ │ -
621#define CHECK_STMT_EXTRA(stmt)
│ │ │ │ -
622#define CHECK_DESC_EXTRA(desc)
│ │ │ │ -
623#endif
│ │ │ │ -
624
│ │ │ │ -
625/*
│ │ │ │ -
626 * odbc_util.h
│ │ │ │ -
627 */
│ │ │ │ -
628
│ │ │ │ -
629/* helpers for ODBC wide string support */
│ │ │ │ -
630#undef _wide
│ │ │ │ -
631#undef _WIDE
│ │ │ │ -
632#ifdef ENABLE_ODBC_WIDE
│ │ │ │ -
633typedef union {
│ │ │ │ -
634 char mb[1];
│ │ │ │ -
635 SQLWCHAR wide[1];
│ │ │ │ -
636} ODBC_CHAR;
│ │ │ │ -
637# define _wide ,wide
│ │ │ │ -
638# define _wide0 ,0
│ │ │ │ -
639# define _WIDE ,int wide
│ │ │ │ -
640#else
│ │ │ │ -
641# define _wide
│ │ │ │ -
642# define _wide0
│ │ │ │ -
643# define _WIDE
│ │ │ │ -
644# define ODBC_CHAR SQLCHAR
│ │ │ │ -
645#endif
│ │ │ │ -
646SQLRETURN odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int sql_len _WIDE);
│ │ │ │ -
647void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);
│ │ │ │ -
648void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);
│ │ │ │ -
649
│ │ │ │ -
650void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, SQLINTEGER odbc_ver);
│ │ │ │ -
651
│ │ │ │ -
652int odbc_sql_to_c_type_default(int sql_type);
│ │ │ │ -
653TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, int sql_unsigned);
│ │ │ │ -
654TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);
│ │ │ │ -
655
│ │ │ │ -
656unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);
│ │ │ │ -
657void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);
│ │ │ │ -
658SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd,
│ │ │ │ -
659 const TDS_DESC* axd, unsigned int n_row);
│ │ │ │ -
660
│ │ │ │ -
661#ifdef ENABLE_ODBC_WIDE
│ │ │ │ -
662DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str, int flag);
│ │ │ │ -
663#define odbc_dstr_copy(dbc, s, len, out) \
│ │ │ │ -
664 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)
│ │ │ │ -
665#define odbc_dstr_copy_oct(dbc, s, len, out) \
│ │ │ │ -
666 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)
│ │ │ │ -
667#else
│ │ │ │ -
668DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str);
│ │ │ │ -
669#define odbc_dstr_copy_oct odbc_dstr_copy
│ │ │ │ -
670#endif
│ │ │ │ -
671
│ │ │ │ -
672
│ │ │ │ -
673SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR * pcbBuffer,
│ │ │ │ -
674 const char *s, int len, int flag);
│ │ │ │ -
675#ifdef ENABLE_ODBC_WIDE
│ │ │ │ -
676#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ -
677 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_len, s, s_len, \
│ │ │ │ -
678 (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
│ │ │ │ -
679#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ -
680 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
│ │ │ │ -
681#else
│ │ │ │ -
682#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ -
683 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
│ │ │ │ -
684#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \
│ │ │ │ -
685 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
│ │ │ │ -
686#endif
│ │ │ │ -
687
│ │ │ │ -
688#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) \
│ │ │ │ -
689 odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
│ │ │ │ -
690#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
│ │ │ │ -
691
│ │ │ │ -
692SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT interval);
│ │ │ │ -
693SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
│ │ │ │ -
694SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval);
│ │ │ │ -
695SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
│ │ │ │ -
696
│ │ │ │ -
697SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);
│ │ │ │ -
698void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);
│ │ │ │ -
699
│ │ │ │ -
700/*
│ │ │ │ -
701 * prepare_query.c
│ │ │ │ -
702 */
│ │ │ │ -
703SQLRETURN prepare_call(struct _hstmt *stmt);
│ │ │ │ -
704SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);
│ │ │ │ -
705int parse_prepared_query(struct _hstmt *stmt, bool compute_row);
│ │ │ │ -
706int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);
│ │ │ │ -
707int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, SQLLEN StrLen_or_Ind);
│ │ │ │ -
708const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);
│ │ │ │ -
709const char *odbc_skip_rpc_name(const char *s);
│ │ │ │ -
710
│ │ │ │ -
711/*
│ │ │ │ -
712 * sql2tds.c
│ │ │ │ -
713 */
│ │ │ │ -
714SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, const struct _drecord *drec_axd, TDSCOLUMN *curcol,
│ │ │ │ -
715 bool compute_row, const TDS_DESC* axd, unsigned int n_row);
│ │ │ │ -
716TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_DATETIMEALL * dta);
│ │ │ │ -
717
│ │ │ │ -
718/*
│ │ │ │ -
719 * bcp.c
│ │ │ │ -
720 */
│ │ │ │ -
721void odbc_bcp_free_storage(TDS_DBC *dbc);
│ │ │ │ -
722void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR *hfile, const ODBC_CHAR *errfile, int direction _WIDE);
│ │ │ │ -
723void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);
│ │ │ │ -
724void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);
│ │ │ │ -
725void odbc_bcp_sendrow(TDS_DBC *dbc);
│ │ │ │ -
726int odbc_bcp_batch(TDS_DBC *dbc);
│ │ │ │ -
727int odbc_bcp_done(TDS_DBC *dbc);
│ │ │ │ -
728void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int varlen, const void * terminator, int termlen,
│ │ │ │ -
729 int vartype, int table_column);
│ │ │ │ -
730
│ │ │ │ -
731/*
│ │ │ │ -
732 * sqlwchar.c
│ │ │ │ -
733 */
│ │ │ │ -
734#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T
│ │ │ │ -
735size_t sqlwcslen(const SQLWCHAR * s);
│ │ │ │ -
736
│ │ │ │ -
737typedef struct sqlwstr_buf {
│ │ │ │ -
738 struct sqlwstr_buf *next;
│ │ │ │ -
739 wchar_t buf[256];
│ │ │ │ -
740} SQLWSTRBUF;
│ │ │ │ -
741const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);
│ │ │ │ -
742void sqlwstr_free(SQLWSTRBUF *bufs);
│ │ │ │ -
743#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL
│ │ │ │ -
744#define SQLWSTR(s) sqlwstr(s, &bufs)
│ │ │ │ -
745#define SQLWSTR_FREE() sqlwstr_free(bufs)
│ │ │ │ -
746#else
│ │ │ │ -
747#define sqlwcslen(s) wcslen(s)
│ │ │ │ -
748
│ │ │ │ -
749#define SQLWSTR_BUFS(n) do {} while(0)
│ │ │ │ -
750#define SQLWSTR(s) ((const wchar_t*)(s))
│ │ │ │ -
751#define SQLWSTR_FREE() do {} while(0)
│ │ │ │ -
752#endif
│ │ │ │ -
753
│ │ │ │ -
754int odbc_get_wide_canonic(TDSCONNECTION *conn);
│ │ │ │ -
755
│ │ │ │ -
756/* compatibility with old BCP implementation */
│ │ │ │ -
757#define BCPHINTS_OLD 6
│ │ │ │ -
758#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL_OLD (SQL_COPT_TDSODBC_IMPL_BASE+1)
│ │ │ │ -
759
│ │ │ │ -
760/* iODBC extensions used by our driver */
│ │ │ │ -
761#ifndef SQL_ATTR_DRIVER_UNICODE_TYPE
│ │ │ │ -
762#define SQL_ATTR_DRIVER_UNICODE_TYPE 1065
│ │ │ │ -
763#endif
│ │ │ │ -
764
│ │ │ │ -
765#ifndef SQL_DM_CP_UTF16
│ │ │ │ -
766#define SQL_DM_CP_UTF16 1
│ │ │ │ -
767#endif
│ │ │ │ -
768#ifndef SQL_DM_CP_UTF8
│ │ │ │ -
769#define SQL_DM_CP_UTF8 2
│ │ │ │ -
770#endif
│ │ │ │ -
771#ifndef SQL_DM_CP_UCS4
│ │ │ │ -
772#define SQL_DM_CP_UCS4 3
│ │ │ │ -
773#endif
│ │ │ │ -
774
│ │ │ │ -
775#include <freetds/popvis.h>
│ │ │ │ -
776
│ │ │ │ -
777#ifdef __cplusplus
│ │ │ │ -
778#if 0
│ │ │ │ -
779{
│ │ │ │ -
780#endif
│ │ │ │ -
781}
│ │ │ │ -
782#endif
│ │ │ │ -
783
│ │ │ │ -
784#endif
│ │ │ │ -
Main include file for libtds.
│ │ │ │ -
SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only)
Set concise type and all cascading field.
Definition odbc_util.c:985
│ │ │ │ -
SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only)
Set concise type and all cascading field.
Definition odbc_util.c:1112
│ │ │ │ -
SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row)
Return length of parameter from parameter information.
Definition odbc_util.c:867
│ │ │ │ -
TDS_SERVER_TYPE odbc_c_to_server_type(int c_type)
Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to the SQL_C_* type.
Definition odbc_util.c:602
│ │ │ │ -
SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag)
Copy a string to client setting size according to ODBC convenction.
Definition odbc_util.c:302
│ │ │ │ -
void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)
Returns the version of the RDBMS in the ODBC format.
Definition odbc_util.c:858
│ │ │ │ -
Definition iconv.h:92
│ │ │ │ -
Definition odbc.h:96
│ │ │ │ -
Definition odbc.h:109
│ │ │ │ -
Descriptor header.
Definition odbc.h:155
│ │ │ │ -
Descriptor record.
Definition odbc.h:168
│ │ │ │ -
Definition odbc.h:209
│ │ │ │ -
int focus
Nested descriptor to use.
Definition odbc.h:220
│ │ │ │ -
Definition odbc.h:234
│ │ │ │ -
Definition odbc.h:242
│ │ │ │ -
Definition odbc.h:249
│ │ │ │ -
Definition odbc.h:258
│ │ │ │ -
Definition odbc.h:287
│ │ │ │ -
struct _hstmt * stmt_list
list of all statements allocated from this connection
Definition odbc.h:307
│ │ │ │ -
TDS_DESC * uad[TDS_MAX_APP_DESC]
descriptors associated to connection
Definition odbc.h:310
│ │ │ │ -
struct _hstmt * current_statement
Statement executing.
Definition odbc.h:305
│ │ │ │ -
unsigned int cursor_support
<>0 if server handle cursors
Definition odbc.h:312
│ │ │ │ -
Definition odbc.h:320
│ │ │ │ -
Definition odbc.h:393
│ │ │ │ -
unsigned int param_count
number of parameter in current query
Definition odbc.h:432
│ │ │ │ -
TDS_ODBC_ROW_STATUS row_status
status of row, it can happen that this flag mark that we are still parsing row, this it's normal
Definition odbc.h:437
│ │ │ │ -
size_t prepared_pos
position in prepared query to check parameters, used only in RPC
Definition odbc.h:427
│ │ │ │ -
TDS_INT8 row_count
row count to return
Definition odbc.h:435
│ │ │ │ -
int param_num
last valid parameter in params, it's a ODBC index (from 1 relative to descriptor)
Definition odbc.h:425
│ │ │ │ -
DSTR query
query to execute
Definition odbc.h:399
│ │ │ │ -
unsigned need_reprepare
Prepared statement needs to be prepared again.
Definition odbc.h:416
│ │ │ │ -
struct _hstmt * next
next in list
Definition odbc.h:404
│ │ │ │ -
TDSSOCKET * tds
socket (only if active)
Definition odbc.h:401
│ │ │ │ -
struct _hstmt * prev
previous in list
Definition odbc.h:406
│ │ │ │ -
TDSPARAMINFO * params
parameters saved
Definition odbc.h:423
│ │ │ │ -
Definition odbc.h:455
│ │ │ │ -
Definition odbc.h:551
│ │ │ │ -
Definition odbc.h:582
│ │ │ │ -
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ -
Definition tds.h:498
│ │ │ │ -
Definition tds.h:628
│ │ │ │ -
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ -
Hold information for any results.
Definition tds.h:754
│ │ │ │ -
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ -
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ -
Definition tds.h:1077
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ -
Definition tds.h:1684
│ │ │ │ -
Structure to hold a string.
Definition string.h:36
│ │ │ │ +
54
│ │ │ │ +
55tds_dir_char *tds_get_homedir(void);
│ │ │ │ +
56tds_dir_char* tds_join_path(const tds_dir_char *dir, const tds_dir_char *file);
│ │ │ │ +
57tds_dir_char *tds_get_home_file(const tds_dir_char *file);
│ │ │ │ +
58
│ │ │ │ +
59#include <freetds/popvis.h>
│ │ │ │ +
60
│ │ │ │ +
61#endif /* _tdsguard_eI8iNo9FExd6aRlc3im79S_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,945 +1,72 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -odbc.h │ │ │ │ │ + * utils │ │ │ │ │ +path.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2004-2010 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21#ifndef _tdsguard_gQHaPEvp2dAAa45TAutROb_ │ │ │ │ │ -22#define _tdsguard_gQHaPEvp2dAAa45TAutROb_ │ │ │ │ │ -23 │ │ │ │ │ -24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS │ │ │ │ │ -25#include │ │ │ │ │ -26#include │ │ │ │ │ -27#include │ │ │ │ │ +2 * Copyright (C) 2023 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_eI8iNo9FExd6aRlc3im79S_ │ │ │ │ │ +21#define _tdsguard_eI8iNo9FExd6aRlc3im79S_ │ │ │ │ │ +22 │ │ │ │ │ +23#ifdef _WIN32 │ │ │ │ │ +24#include │ │ │ │ │ +25#endif │ │ │ │ │ +26 │ │ │ │ │ +27#include │ │ │ │ │ 28 │ │ │ │ │ -29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM) │ │ │ │ │ -30#include │ │ │ │ │ -31#include │ │ │ │ │ -32#if defined(UNIXODBC) || defined(_WIN32) │ │ │ │ │ -33#include │ │ │ │ │ -34#endif │ │ │ │ │ -35#else /* IODBC */ │ │ │ │ │ -36#include │ │ │ │ │ -37#include │ │ │ │ │ -38#ifdef HAVE_IODBCINST_H │ │ │ │ │ -39#include │ │ │ │ │ -40#endif /* HAVE_IODBCINST_H */ │ │ │ │ │ -41#endif │ │ │ │ │ -42 │ │ │ │ │ -43#ifdef HAVE_WCHAR_H │ │ │ │ │ -44#include │ │ │ │ │ -45#endif │ │ │ │ │ -46 │ │ │ │ │ -47#ifndef HAVE_SQLLEN │ │ │ │ │ -48#ifndef SQLULEN │ │ │ │ │ -49#define SQLULEN SQLUINTEGER │ │ │ │ │ -50#endif │ │ │ │ │ -51#ifndef SQLLEN │ │ │ │ │ -52#define SQLLEN SQLINTEGER │ │ │ │ │ +29#ifdef _WIN32 │ │ │ │ │ +30#define TDS_SDIR_SEPARATOR L"\\" │ │ │ │ │ +31typedef wchar_t tds_dir_char; │ │ │ │ │ +32#define tds_dir_open _wfopen │ │ │ │ │ +33#define tds_dir_getenv _wgetenv │ │ │ │ │ +34#define tds_dir_dup _wcsdup │ │ │ │ │ +35#define tds_dir_len wcslen │ │ │ │ │ +36#define tds_dir_cmp wcscmp │ │ │ │ │ +37#define tds_dir_snprintf _snwprintf │ │ │ │ │ +38#define TDS_DIR(s) L ## s │ │ │ │ │ +39#define tdsPRIdir "ls" │ │ │ │ │ +40tds_dir_char *tds_dir_from_cstr(const char *path); │ │ │ │ │ +41#else │ │ │ │ │ +42#define TDS_SDIR_SEPARATOR "/" │ │ │ │ │ +43typedef char tds_dir_char; │ │ │ │ │ +44#define tds_dir_open fopen │ │ │ │ │ +45#define tds_dir_getenv getenv │ │ │ │ │ +46#define tds_dir_dup strdup │ │ │ │ │ +47#define tds_dir_len strlen │ │ │ │ │ +48#define tds_dir_cmp strcmp │ │ │ │ │ +49#define tds_dir_snprintf snprintf │ │ │ │ │ +50#define TDS_DIR(s) s │ │ │ │ │ +51#define tdsPRIdir "s" │ │ │ │ │ +52#define tds_dir_from_cstr(s) strdup(s) │ │ │ │ │ 53#endif │ │ │ │ │ -54#endif │ │ │ │ │ -55 │ │ │ │ │ -56#ifndef HAVE_SQLSETPOSIROW │ │ │ │ │ -57#define SQLSETPOSIROW SQLUSMALLINT │ │ │ │ │ -58#endif │ │ │ │ │ -59 │ │ │ │ │ -60#ifndef HAVE_SQLROWOFFSET │ │ │ │ │ -61#define SQLROWOFFSET SQLLEN │ │ │ │ │ -62#endif │ │ │ │ │ -63 │ │ │ │ │ -64#ifndef HAVE_SQLROWSETSIZE │ │ │ │ │ -65#define SQLROWSETSIZE SQLULEN │ │ │ │ │ -66#endif │ │ │ │ │ -67 │ │ │ │ │ -68#ifdef __cplusplus │ │ │ │ │ -69extern "C" │ │ │ │ │ -70{ │ │ │ │ │ -71#if 0 │ │ │ │ │ -72} │ │ │ │ │ -73#endif │ │ │ │ │ -74#endif │ │ │ │ │ -75 │ │ │ │ │ -76#include │ │ │ │ │ -77#ifdef __clang__ │ │ │ │ │ -78#define ODBC_API SQL_API __attribute__((visibility("default"))) │ │ │ │ │ -79#elif defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ -80#define ODBC_API SQL_API __attribute__((externally_visible)) │ │ │ │ │ -81#else │ │ │ │ │ -82#define ODBC_API SQL_API │ │ │ │ │ -83#endif │ │ │ │ │ -84 │ │ │ │ │ -85#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__) │ │ │ │ │ -86# define ODBC_PUBLIC __attribute__((dllexport)) │ │ │ │ │ -87#else │ │ │ │ │ -88# define ODBC_PUBLIC │ │ │ │ │ -89#endif │ │ │ │ │ -90 │ │ │ │ │ -91#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) ) │ │ │ │ │ -92#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) ) │ │ │ │ │ -93#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) ) │ │ │ │ │ -94 │ │ │ │ │ -95struct _sql_error │ │ │ │ │ -96{ │ │ │ │ │ -97 const char *msg; │ │ │ │ │ -98 char state2[6]; │ │ │ │ │ -99 char state3[6]; │ │ │ │ │ -100 TDS_UINT native; │ │ │ │ │ -101 char *server; │ │ │ │ │ -102 int linenum; │ │ │ │ │ -103 int msgstate; │ │ │ │ │ -104 int row; │ │ │ │ │ -105 bool msg_is_static; │ │ │ │ │ -106}; │ │ │ │ │ -107 │ │ │ │ │ -108struct _sql_errors │ │ │ │ │ -109{ │ │ │ │ │ -110 struct _sql_error *errs; │ │ │ │ │ -111 int num_errors; │ │ │ │ │ -112 SQLRETURN lastrc; │ │ │ │ │ -113 char ranked; │ │ │ │ │ -114}; │ │ │ │ │ -115 │ │ │ │ │ -116typedef struct _sql_errors TDS_ERRS; │ │ │ │ │ -117 │ │ │ │ │ -118#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -119void odbc_check_struct_extra(void *p); │ │ │ │ │ -120#else │ │ │ │ │ -121static inline void odbc_check_struct_extra(void *p TDS_UNUSED) {} │ │ │ │ │ -122#endif │ │ │ │ │ -123 │ │ │ │ │ -124#define ODBC_RETURN(handle, rc) \ │ │ │ │ │ -125 do { odbc_check_struct_extra(handle); \ │ │ │ │ │ -126 return handle->errs.lastrc = (rc); } while(0) │ │ │ │ │ -127#define ODBC_RETURN_(handle) \ │ │ │ │ │ -128 do { odbc_check_struct_extra(handle); \ │ │ │ │ │ -129 return handle->errs.lastrc; } while(0) │ │ │ │ │ -130 │ │ │ │ │ -131#define ODBC_EXIT(handle, rc) \ │ │ │ │ │ -132 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \ │ │ │ │ │ -133 odbc_check_struct_extra(handle); \ │ │ │ │ │ -134 tds_mutex_unlock(&handle->mtx); \ │ │ │ │ │ -135 return _odbc_rc; } while(0) │ │ │ │ │ -136#define ODBC_EXIT_(handle) \ │ │ │ │ │ -137 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \ │ │ │ │ │ -138 odbc_check_struct_extra(handle); \ │ │ │ │ │ -139 tds_mutex_unlock(&handle->mtx); \ │ │ │ │ │ -140 return _odbc_rc; } while(0) │ │ │ │ │ -141 │ │ │ │ │ -142 │ │ │ │ │ -144void odbc_errs_reset(struct _sql_errors *errs); │ │ │ │ │ -145 │ │ │ │ │ -147void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const │ │ │ │ │ -char *msg); │ │ │ │ │ -148 │ │ │ │ │ -150void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const │ │ │ │ │ -char *sqlstate, const char *msg, int linenum, │ │ │ │ │ -151 int msgstate, const char *server, int row); │ │ │ │ │ -152 │ │ │ │ │ -154struct _dheader │ │ │ │ │ -155{ │ │ │ │ │ -156 SQLSMALLINT sql_desc_alloc_type; │ │ │ │ │ -157 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en- │ │ │ │ │ -us;298678 */ │ │ │ │ │ -158 SQLSMALLINT sql_desc_count; │ │ │ │ │ -159 SQLINTEGER sql_desc_bind_type; │ │ │ │ │ -160 SQLULEN sql_desc_array_size; │ │ │ │ │ -161 SQLUSMALLINT *sql_desc_array_status_ptr; │ │ │ │ │ -162 SQLULEN *sql_desc_rows_processed_ptr; │ │ │ │ │ -163 SQLLEN *sql_desc_bind_offset_ptr; │ │ │ │ │ -164}; │ │ │ │ │ -165 │ │ │ │ │ -167struct _drecord │ │ │ │ │ -168{ │ │ │ │ │ -169 DSTR sql_desc_base_column_name; │ │ │ │ │ -170 DSTR sql_desc_base_table_name; │ │ │ │ │ -171 SQLUINTEGER sql_desc_auto_unique_value; │ │ │ │ │ -172 SQLINTEGER sql_desc_case_sensitive; │ │ │ │ │ -173 DSTR sql_desc_catalog_name; │ │ │ │ │ -174 SQLPOINTER sql_desc_data_ptr; │ │ │ │ │ -175 SQLSMALLINT sql_desc_concise_type; │ │ │ │ │ -176 SQLSMALLINT sql_desc_datetime_interval_code; │ │ │ │ │ -177 SQLINTEGER sql_desc_datetime_interval_precision; │ │ │ │ │ -178 SQLLEN sql_desc_display_size; │ │ │ │ │ -179 SQLLEN *sql_desc_indicator_ptr; │ │ │ │ │ -180 DSTR sql_desc_label; │ │ │ │ │ -181 SQLULEN sql_desc_length; │ │ │ │ │ -182 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ -183 const char *sql_desc_literal_prefix; │ │ │ │ │ -184 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ -185 const char *sql_desc_literal_suffix; │ │ │ │ │ -186 DSTR sql_desc_local_type_name; │ │ │ │ │ -187 DSTR sql_desc_name; │ │ │ │ │ -188 SQLSMALLINT sql_desc_fixed_prec_scale; │ │ │ │ │ -189 SQLSMALLINT sql_desc_nullable; │ │ │ │ │ -190 SQLINTEGER sql_desc_num_prec_radix; │ │ │ │ │ -191 SQLLEN sql_desc_octet_length; │ │ │ │ │ -192 SQLLEN *sql_desc_octet_length_ptr; │ │ │ │ │ -193 SQLSMALLINT sql_desc_parameter_type; │ │ │ │ │ -194 SQLSMALLINT sql_desc_precision; │ │ │ │ │ -195 SQLSMALLINT sql_desc_rowver; │ │ │ │ │ -196 SQLSMALLINT sql_desc_scale; │ │ │ │ │ -197 DSTR sql_desc_schema_name; │ │ │ │ │ -198 DSTR sql_desc_table_name; │ │ │ │ │ -199 SQLSMALLINT sql_desc_searchable; │ │ │ │ │ -200 SQLSMALLINT sql_desc_type; │ │ │ │ │ -201 /* this point to a constant buffer, do not free or modify */ │ │ │ │ │ -202 const char *sql_desc_type_name; │ │ │ │ │ -203 SQLSMALLINT sql_desc_unnamed; │ │ │ │ │ -204 SQLSMALLINT sql_desc_unsigned; │ │ │ │ │ -205 SQLSMALLINT sql_desc_updatable; │ │ │ │ │ -206}; │ │ │ │ │ -207 │ │ │ │ │ -208struct _hdesc │ │ │ │ │ -209{ │ │ │ │ │ -210 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ -211 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ -212 tds_mutex mtx; │ │ │ │ │ -213 int type; │ │ │ │ │ -220 int focus; │ │ │ │ │ -221 SQLHANDLE parent; │ │ │ │ │ -222 struct _dheader header; │ │ │ │ │ -223 struct _drecord *records; │ │ │ │ │ -224}; │ │ │ │ │ -225 │ │ │ │ │ -226typedef struct _hdesc TDS_DESC; │ │ │ │ │ -227 │ │ │ │ │ -228#define DESC_IRD 1 │ │ │ │ │ -229#define DESC_IPD 2 │ │ │ │ │ -230#define DESC_ARD 3 │ │ │ │ │ -231#define DESC_APD 4 │ │ │ │ │ -232 │ │ │ │ │ -233struct _heattr │ │ │ │ │ -234{ │ │ │ │ │ -235 SQLUINTEGER connection_pooling; │ │ │ │ │ -236 SQLUINTEGER cp_match; │ │ │ │ │ -237 SQLINTEGER odbc_version; │ │ │ │ │ -238 SQLINTEGER output_nts; │ │ │ │ │ -239}; │ │ │ │ │ -240 │ │ │ │ │ -241struct _hchk │ │ │ │ │ -242{ │ │ │ │ │ -243 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ -244 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ -245 tds_mutex mtx; │ │ │ │ │ -246}; │ │ │ │ │ -247 │ │ │ │ │ -248struct _henv │ │ │ │ │ -249{ │ │ │ │ │ -250 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ -251 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ -252 tds_mutex mtx; │ │ │ │ │ -253 TDSCONTEXT *tds_ctx; │ │ │ │ │ -254 struct _heattr attr; │ │ │ │ │ -255}; │ │ │ │ │ -256 │ │ │ │ │ -257struct _hcattr │ │ │ │ │ -258{ │ │ │ │ │ -259 SQLUINTEGER access_mode; │ │ │ │ │ -260 SQLUINTEGER async_enable; │ │ │ │ │ -261 SQLUINTEGER auto_ipd; │ │ │ │ │ -262 SQLUINTEGER autocommit; │ │ │ │ │ -263 SQLUINTEGER connection_dead; │ │ │ │ │ -264 SQLUINTEGER connection_timeout; │ │ │ │ │ -265 DSTR current_catalog; │ │ │ │ │ -266 SQLUINTEGER login_timeout; │ │ │ │ │ -267 SQLUINTEGER metadata_id; │ │ │ │ │ -268 SQLUINTEGER odbc_cursors; │ │ │ │ │ -269 SQLUINTEGER packet_size; │ │ │ │ │ -270 SQLHWND quite_mode; │ │ │ │ │ -271 DSTR translate_lib; │ │ │ │ │ -272 SQLUINTEGER translate_option; │ │ │ │ │ -273 SQLUINTEGER txn_isolation; │ │ │ │ │ -274 SQLUINTEGER mars_enabled; │ │ │ │ │ -275 SQLUINTEGER cursor_type; │ │ │ │ │ -276 SQLUINTEGER bulk_enabled; │ │ │ │ │ -277#ifdef TDS_NO_DM │ │ │ │ │ -278 SQLUINTEGER trace; │ │ │ │ │ -279 DSTR tracefile; │ │ │ │ │ -280#endif │ │ │ │ │ -281}; │ │ │ │ │ -282 │ │ │ │ │ -283#define TDS_MAX_APP_DESC 100 │ │ │ │ │ -284 │ │ │ │ │ -285struct _hstmt; │ │ │ │ │ -286struct _hdbc │ │ │ │ │ -287{ │ │ │ │ │ -288 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ -289 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ -290 tds_mutex mtx; │ │ │ │ │ -291 struct _henv *env; │ │ │ │ │ -292 TDSSOCKET *tds_socket; │ │ │ │ │ -293 DSTR dsn; │ │ │ │ │ -294 DSTR oldpwd; │ │ │ │ │ -295#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ -296 int original_charset_num; │ │ │ │ │ -297 TDSICONV *mb_conv; │ │ │ │ │ -298#endif │ │ │ │ │ -299 │ │ │ │ │ -305 struct _hstmt *current_statement; │ │ │ │ │ -307 struct _hstmt *stmt_list; │ │ │ │ │ -308 struct _hcattr attr; │ │ │ │ │ -310 TDS_DESC *uad[TDS_MAX_APP_DESC]; │ │ │ │ │ -312 unsigned int cursor_support:1; │ │ │ │ │ -313 unsigned int use_oldpwd:1; │ │ │ │ │ -314 TDS_INT default_query_timeout; │ │ │ │ │ -315 │ │ │ │ │ -316 TDSBCPINFO *bcpinfo; │ │ │ │ │ -317}; │ │ │ │ │ -318 │ │ │ │ │ -319struct _hsattr │ │ │ │ │ -320{ │ │ │ │ │ -321 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */ │ │ │ │ │ -322/* TDS_DESC *app_row_desc; */ │ │ │ │ │ -323/* TDS_DESC *app_param_desc; */ │ │ │ │ │ -324 SQLUINTEGER async_enable; │ │ │ │ │ -325 SQLUINTEGER concurrency; │ │ │ │ │ -326 SQLUINTEGER cursor_scrollable; │ │ │ │ │ -327 SQLUINTEGER cursor_sensitivity; │ │ │ │ │ -328 SQLUINTEGER cursor_type; │ │ │ │ │ -329 SQLUINTEGER enable_auto_ipd; │ │ │ │ │ -330 SQLPOINTER fetch_bookmark_ptr; │ │ │ │ │ -331 SQLULEN keyset_size; │ │ │ │ │ -332 SQLULEN max_length; │ │ │ │ │ -333 SQLULEN max_rows; │ │ │ │ │ -334 SQLUINTEGER metadata_id; │ │ │ │ │ -335 SQLUINTEGER noscan; │ │ │ │ │ -336 /* apd->sql_desc_bind_offset_ptr */ │ │ │ │ │ -337 /* SQLUINTEGER *param_bind_offset_ptr; */ │ │ │ │ │ -338 /* apd->sql_desc_bind_type */ │ │ │ │ │ -339 /* SQLUINTEGER param_bind_type; */ │ │ │ │ │ -340 /* apd->sql_desc_array_status_ptr */ │ │ │ │ │ -341 /* SQLUSMALLINT *param_operation_ptr; */ │ │ │ │ │ -342 /* ipd->sql_desc_array_status_ptr */ │ │ │ │ │ -343 /* SQLUSMALLINT *param_status_ptr; */ │ │ │ │ │ -344 /* ipd->sql_desc_rows_processed_ptr */ │ │ │ │ │ -345 /* SQLUSMALLINT *params_processed_ptr; */ │ │ │ │ │ -346 /* apd->sql_desc_array_size */ │ │ │ │ │ -347 /* SQLUINTEGER paramset_size; */ │ │ │ │ │ -348 SQLUINTEGER query_timeout; │ │ │ │ │ -349 SQLUINTEGER retrieve_data; │ │ │ │ │ -350 /* ard->sql_desc_bind_offset_ptr */ │ │ │ │ │ -351 /* SQLUINTEGER *row_bind_offset_ptr; */ │ │ │ │ │ -352 /* ard->sql_desc_array_size */ │ │ │ │ │ -353 /* SQLUINTEGER row_array_size; */ │ │ │ │ │ -354 /* ard->sql_desc_bind_type */ │ │ │ │ │ -355 /* SQLUINTEGER row_bind_type; */ │ │ │ │ │ -356 SQLULEN row_number; │ │ │ │ │ -357 /* ard->sql_desc_array_status_ptr */ │ │ │ │ │ -358 /* SQLUINTEGER *row_operation_ptr; */ │ │ │ │ │ -359 /* ird->sql_desc_array_status_ptr */ │ │ │ │ │ -360 /* SQLUINTEGER *row_status_ptr; */ │ │ │ │ │ -361 /* ird->sql_desc_rows_processed_ptr */ │ │ │ │ │ -362 /* SQLUINTEGER *rows_fetched_ptr; */ │ │ │ │ │ -363 SQLUINTEGER simulate_cursor; │ │ │ │ │ -364 SQLUINTEGER use_bookmarks; │ │ │ │ │ -365 /* SQLGetStmtAttr only */ │ │ │ │ │ -366/* TDS_DESC *imp_row_desc; */ │ │ │ │ │ -367/* TDS_DESC *imp_param_desc; */ │ │ │ │ │ -368 DSTR qn_msgtext; │ │ │ │ │ -369 DSTR qn_options; │ │ │ │ │ -370 SQLUINTEGER qn_timeout; │ │ │ │ │ -371 SQLUINTEGER param_focus; │ │ │ │ │ -372}; │ │ │ │ │ -373 │ │ │ │ │ -374typedef enum │ │ │ │ │ -375{ │ │ │ │ │ -376 NOT_IN_ROW, │ │ │ │ │ -377 IN_NORMAL_ROW, │ │ │ │ │ -378 IN_COMPUTE_ROW, │ │ │ │ │ -379 AFTER_COMPUTE_ROW, │ │ │ │ │ -380 PRE_NORMAL_ROW │ │ │ │ │ -381} TDS_ODBC_ROW_STATUS; │ │ │ │ │ -382 │ │ │ │ │ -383typedef enum │ │ │ │ │ -384{ │ │ │ │ │ -385 ODBC_SPECIAL_NONE = 0, │ │ │ │ │ -386 ODBC_SPECIAL_GETTYPEINFO = 1, │ │ │ │ │ -387 ODBC_SPECIAL_COLUMNS = 2, │ │ │ │ │ -388 ODBC_SPECIAL_PROCEDURECOLUMNS = 3, │ │ │ │ │ -389 ODBC_SPECIAL_SPECIALCOLUMNS = 4 │ │ │ │ │ -390} TDS_ODBC_SPECIAL_ROWS; │ │ │ │ │ -391 │ │ │ │ │ -392struct _hstmt │ │ │ │ │ -393{ │ │ │ │ │ -394 SQLSMALLINT htype; /* do not reorder this field */ │ │ │ │ │ -395 struct _sql_errors errs; /* do not reorder this field */ │ │ │ │ │ -396 tds_mutex mtx; │ │ │ │ │ -397 struct _hdbc *dbc; │ │ │ │ │ -399 DSTR query; │ │ │ │ │ -401 TDSSOCKET *tds; │ │ │ │ │ -402 │ │ │ │ │ -404 struct _hstmt *next; │ │ │ │ │ -406 struct _hstmt *prev; │ │ │ │ │ -407 │ │ │ │ │ -408 /* begin prepared query stuff */ │ │ │ │ │ -409 unsigned is_prepared_query:1; │ │ │ │ │ -410 unsigned prepared_query_is_func:1; │ │ │ │ │ -411 unsigned prepared_query_is_rpc:1; │ │ │ │ │ -416 unsigned need_reprepare:1; │ │ │ │ │ -417 unsigned param_data_called:1; │ │ │ │ │ -418 unsigned params_queried:1; │ │ │ │ │ -419 unsigned params_set:1; │ │ │ │ │ -420 /* end prepared query stuff */ │ │ │ │ │ -421 │ │ │ │ │ -423 TDSPARAMINFO *params; │ │ │ │ │ -425 int param_num; │ │ │ │ │ -427 size_t prepared_pos; │ │ │ │ │ -428 │ │ │ │ │ -429 unsigned int curr_param_row, num_param_rows; │ │ │ │ │ -430 │ │ │ │ │ -432 unsigned int param_count; │ │ │ │ │ -433 int row; │ │ │ │ │ -435 TDS_INT8 row_count; │ │ │ │ │ -437 TDS_ODBC_ROW_STATUS row_status; │ │ │ │ │ -438 /* do NOT free dynamic, free from socket or attach to connection */ │ │ │ │ │ -439 TDSDYNAMIC *dyn; │ │ │ │ │ -440 TDS_DESC *ard, *ird, *apd, *ipd; │ │ │ │ │ -441 TDS_DESC *orig_ard, *orig_apd; │ │ │ │ │ -442 SQLULEN sql_rowset_size; │ │ │ │ │ -443 struct _hsattr attr; │ │ │ │ │ -444 DSTR cursor_name; /* auto generated cursor name */ │ │ │ │ │ -445 TDS_ODBC_SPECIAL_ROWS special_row; │ │ │ │ │ -446 /* do NOT free cursor, free from socket or attach to connection */ │ │ │ │ │ -447 TDSCURSOR *cursor; │ │ │ │ │ -448}; │ │ │ │ │ -449 │ │ │ │ │ -450typedef struct _henv TDS_ENV; │ │ │ │ │ -451typedef struct _hdbc TDS_DBC; │ │ │ │ │ -452typedef struct _hstmt TDS_STMT; │ │ │ │ │ -453typedef struct _hchk TDS_CHK; │ │ │ │ │ -454 │ │ │ │ │ -455typedef struct { │ │ │ │ │ -456 /* this must be the first member */ │ │ │ │ │ -457 TDSCOLUMNFUNCS common; │ │ │ │ │ -458 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER │ │ │ │ │ -odbc_ver); │ │ │ │ │ -459} TDS_FUNCS; │ │ │ │ │ -460 │ │ │ │ │ -461#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV) │ │ │ │ │ -462#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC) │ │ │ │ │ -463#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT) │ │ │ │ │ -464#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC) │ │ │ │ │ -465 │ │ │ │ │ -466/* fix a bug in MingW headers */ │ │ │ │ │ -467#ifdef __MINGW32__ │ │ │ │ │ -468#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND) │ │ │ │ │ -469 │ │ │ │ │ -470#undef SQL_INTERVAL_YEAR │ │ │ │ │ -471#undef SQL_INTERVAL_MONTH │ │ │ │ │ -472#undef SQL_INTERVAL_DAY │ │ │ │ │ -473#undef SQL_INTERVAL_HOUR │ │ │ │ │ -474#undef SQL_INTERVAL_MINUTE │ │ │ │ │ -475#undef SQL_INTERVAL_SECOND │ │ │ │ │ -476#undef SQL_INTERVAL_YEAR_TO_MONTH │ │ │ │ │ -477#undef SQL_INTERVAL_DAY_TO_HOUR │ │ │ │ │ -478#undef SQL_INTERVAL_DAY_TO_MINUTE │ │ │ │ │ -479#undef SQL_INTERVAL_DAY_TO_SECOND │ │ │ │ │ -480#undef SQL_INTERVAL_HOUR_TO_MINUTE │ │ │ │ │ -481#undef SQL_INTERVAL_HOUR_TO_SECOND │ │ │ │ │ -482#undef SQL_INTERVAL_MINUTE_TO_SECOND │ │ │ │ │ -483 │ │ │ │ │ -484#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR) │ │ │ │ │ -485#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH) │ │ │ │ │ -486#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY) │ │ │ │ │ -487#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR) │ │ │ │ │ -488#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE) │ │ │ │ │ -489#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND) │ │ │ │ │ -490#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH) │ │ │ │ │ -491#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR) │ │ │ │ │ -492#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE) │ │ │ │ │ -493#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND) │ │ │ │ │ -494#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE) │ │ │ │ │ -495#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND) │ │ │ │ │ -496#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND) │ │ │ │ │ -497 │ │ │ │ │ -498#endif │ │ │ │ │ -499#endif │ │ │ │ │ -500 │ │ │ │ │ -501#ifdef _WIN32 │ │ │ │ │ -502bool get_login_info(HWND hwndParent, TDSLOGIN * login); │ │ │ │ │ -503#endif │ │ │ │ │ -504 │ │ │ │ │ -505#define ODBC_PARAM_LIST \ │ │ │ │ │ -506 ODBC_PARAM(Servername) \ │ │ │ │ │ -507 ODBC_PARAM(Server) \ │ │ │ │ │ -508 ODBC_PARAM(DSN) \ │ │ │ │ │ -509 ODBC_PARAM(UID) \ │ │ │ │ │ -510 ODBC_PARAM(PWD) \ │ │ │ │ │ -511 ODBC_PARAM(Address) \ │ │ │ │ │ -512 ODBC_PARAM(Port) \ │ │ │ │ │ -513 ODBC_PARAM(TDS_Version) \ │ │ │ │ │ -514 ODBC_PARAM(Language) \ │ │ │ │ │ -515 ODBC_PARAM(Database) \ │ │ │ │ │ -516 ODBC_PARAM(TextSize) \ │ │ │ │ │ -517 ODBC_PARAM(PacketSize) \ │ │ │ │ │ -518 ODBC_PARAM(ClientCharset) \ │ │ │ │ │ -519 ODBC_PARAM(DumpFile) \ │ │ │ │ │ -520 ODBC_PARAM(DumpFileAppend) \ │ │ │ │ │ -521 ODBC_PARAM(DebugFlags) \ │ │ │ │ │ -522 ODBC_PARAM(Encryption) \ │ │ │ │ │ -523 ODBC_PARAM(Trusted_Connection) \ │ │ │ │ │ -524 ODBC_PARAM(APP) \ │ │ │ │ │ -525 ODBC_PARAM(WSID) \ │ │ │ │ │ -526 ODBC_PARAM(UseNTLMv2) \ │ │ │ │ │ -527 ODBC_PARAM(MARS_Connection) \ │ │ │ │ │ -528 ODBC_PARAM(REALM) \ │ │ │ │ │ -529 ODBC_PARAM(ServerSPN) \ │ │ │ │ │ -530 ODBC_PARAM(AttachDbFilename) \ │ │ │ │ │ -531 ODBC_PARAM(ApplicationIntent) \ │ │ │ │ │ -532 ODBC_PARAM(Timeout) \ │ │ │ │ │ -533 ODBC_PARAM(Encrypt) \ │ │ │ │ │ -534 ODBC_PARAM(HostNameInCertificate) │ │ │ │ │ -535 │ │ │ │ │ -536#define ODBC_PARAM(p) ODBC_PARAM_##p, │ │ │ │ │ -537enum { │ │ │ │ │ -538 ODBC_PARAM_LIST │ │ │ │ │ -539 ODBC_PARAM_SIZE │ │ │ │ │ -540}; │ │ │ │ │ -541#undef ODBC_PARAM │ │ │ │ │ -542 │ │ │ │ │ -543#define ODBC_PARAM(p) extern const char odbc_param_##p[]; │ │ │ │ │ -544ODBC_PARAM_LIST │ │ │ │ │ -545#undef ODBC_PARAM │ │ │ │ │ -546 │ │ │ │ │ -547/* │ │ │ │ │ -548 * connectparams.h │ │ │ │ │ -549 */ │ │ │ │ │ -550 │ │ │ │ │ -551typedef struct { │ │ │ │ │ -552 const char *p; │ │ │ │ │ -553 size_t len; │ │ │ │ │ -554} TDS_PARSED_PARAM; │ │ │ │ │ -555 │ │ │ │ │ -563bool odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, │ │ │ │ │ -const char *connect_string_end, │ │ │ │ │ -564 TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params); │ │ │ │ │ -565bool odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login); │ │ │ │ │ -566#ifdef _WIN32 │ │ │ │ │ -567int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char │ │ │ │ │ -**out); │ │ │ │ │ -568#endif │ │ │ │ │ -569 │ │ │ │ │ -570/* │ │ │ │ │ -571 * convert_tds2sql.c │ │ │ │ │ -572 */ │ │ │ │ │ -573SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype, │ │ │ │ │ -574 TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd); │ │ │ │ │ -575SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_ │ │ │ │ │ -CHAR * dest, SQLULEN destlen); │ │ │ │ │ -576 │ │ │ │ │ -577 │ │ │ │ │ -578 │ │ │ │ │ -579/* │ │ │ │ │ -580 * descriptor.c │ │ │ │ │ -581 */ │ │ │ │ │ -582typedef struct { │ │ │ │ │ -583 DSTR type_name; │ │ │ │ │ -584 TDS_DESC *apd; │ │ │ │ │ -585 TDS_DESC *ipd; │ │ │ │ │ -586} SQLTVP; │ │ │ │ │ -587 │ │ │ │ │ -588TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, SQLSMALLINT alloc_ │ │ │ │ │ -type); │ │ │ │ │ -589SQLRETURN desc_free(TDS_DESC * desc); │ │ │ │ │ -590SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count); │ │ │ │ │ -591SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src); │ │ │ │ │ -592SQLRETURN desc_free_records(TDS_DESC * desc); │ │ │ │ │ -593TDS_DBC *desc_get_dbc(TDS_DESC *desc); │ │ │ │ │ -594SQLTVP *tvp_alloc(TDS_STMT *stmt); │ │ │ │ │ -595void tvp_free(SQLTVP *tvp); │ │ │ │ │ -596 │ │ │ │ │ -597/* │ │ │ │ │ -598 * odbc.c │ │ │ │ │ -599 */ │ │ │ │ │ -600 │ │ │ │ │ -601SQLRETURN odbc_SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow); │ │ │ │ │ -602 │ │ │ │ │ -603/* │ │ │ │ │ -604 * odbc_checks.h │ │ │ │ │ -605 */ │ │ │ │ │ -606#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -607/* macro */ │ │ │ │ │ -608#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env) │ │ │ │ │ -609#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc) │ │ │ │ │ -610#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt) │ │ │ │ │ -611#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc) │ │ │ │ │ -612/* declarations*/ │ │ │ │ │ -613void odbc_check_env_extra(TDS_ENV * env); │ │ │ │ │ -614void odbc_check_dbc_extra(TDS_DBC * dbc); │ │ │ │ │ -615void odbc_check_stmt_extra(TDS_STMT * stmt); │ │ │ │ │ -616void odbc_check_desc_extra(TDS_DESC * desc); │ │ │ │ │ -617#else │ │ │ │ │ -618/* macro */ │ │ │ │ │ -619#define CHECK_ENV_EXTRA(env) │ │ │ │ │ -620#define CHECK_DBC_EXTRA(dbc) │ │ │ │ │ -621#define CHECK_STMT_EXTRA(stmt) │ │ │ │ │ -622#define CHECK_DESC_EXTRA(desc) │ │ │ │ │ -623#endif │ │ │ │ │ -624 │ │ │ │ │ -625/* │ │ │ │ │ -626 * odbc_util.h │ │ │ │ │ -627 */ │ │ │ │ │ -628 │ │ │ │ │ -629/* helpers for ODBC wide string support */ │ │ │ │ │ -630#undef _wide │ │ │ │ │ -631#undef _WIDE │ │ │ │ │ -632#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ -633typedef union { │ │ │ │ │ -634 char mb[1]; │ │ │ │ │ -635 SQLWCHAR wide[1]; │ │ │ │ │ -636} ODBC_CHAR; │ │ │ │ │ -637# define _wide ,wide │ │ │ │ │ -638# define _wide0 ,0 │ │ │ │ │ -639# define _WIDE ,int wide │ │ │ │ │ -640#else │ │ │ │ │ -641# define _wide │ │ │ │ │ -642# define _wide0 │ │ │ │ │ -643# define _WIDE │ │ │ │ │ -644# define ODBC_CHAR SQLCHAR │ │ │ │ │ -645#endif │ │ │ │ │ -646SQLRETURN odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int │ │ │ │ │ -sql_len _WIDE); │ │ │ │ │ -647void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row); │ │ │ │ │ -648void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row); │ │ │ │ │ -649 │ │ │ │ │ -650void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, │ │ │ │ │ -SQLINTEGER odbc_ver); │ │ │ │ │ -651 │ │ │ │ │ -652int odbc_sql_to_c_type_default(int sql_type); │ │ │ │ │ -653TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, │ │ │ │ │ -int sql_unsigned); │ │ │ │ │ -654TDS_SERVER_TYPE odbc_c_to_server_type(int c_type); │ │ │ │ │ -655 │ │ │ │ │ -656unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE); │ │ │ │ │ -657void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string); │ │ │ │ │ -658SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct │ │ │ │ │ -_drecord *drec_ixd, │ │ │ │ │ -659 const TDS_DESC* axd, unsigned int n_row); │ │ │ │ │ -660 │ │ │ │ │ -661#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ -662DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * │ │ │ │ │ -str, int flag); │ │ │ │ │ -663#define odbc_dstr_copy(dbc, s, len, out) \ │ │ │ │ │ -664 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide) │ │ │ │ │ -665#define odbc_dstr_copy_oct(dbc, s, len, out) \ │ │ │ │ │ -666 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20) │ │ │ │ │ -667#else │ │ │ │ │ -668DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * │ │ │ │ │ -str); │ │ │ │ │ -669#define odbc_dstr_copy_oct odbc_dstr_copy │ │ │ │ │ -670#endif │ │ │ │ │ -671 │ │ │ │ │ -672 │ │ │ │ │ -673SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER │ │ │ │ │ -cbBuffer, void FAR * pcbBuffer, │ │ │ │ │ -674 const char *s, int len, int flag); │ │ │ │ │ -675#ifdef ENABLE_ODBC_WIDE │ │ │ │ │ -676#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ -677 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_ │ │ │ │ │ -len, s, s_len, \ │ │ │ │ │ -678 (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10)) │ │ │ │ │ -679#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ -680 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof │ │ │ │ │ -(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30)) │ │ │ │ │ -681#else │ │ │ │ │ -682#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ -683 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_ │ │ │ │ │ -len)) == sizeof(SQLSMALLINT)?0:0x10)) │ │ │ │ │ -684#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \ │ │ │ │ │ -685 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_ │ │ │ │ │ -len)) == sizeof(SQLSMALLINT)?0x20:0x30)) │ │ │ │ │ -686#endif │ │ │ │ │ -687 │ │ │ │ │ -688#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) \ │ │ │ │ │ -689 odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_ │ │ │ │ │ -len(s)) │ │ │ │ │ -690#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc, │ │ │ │ │ -buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s)) │ │ │ │ │ -691 │ │ │ │ │ -692SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT │ │ │ │ │ -interval); │ │ │ │ │ -693SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _ │ │ │ │ │ -drecord *drec, int check_only); │ │ │ │ │ -694SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval); │ │ │ │ │ -695SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ -*drec, int check_only); │ │ │ │ │ -696 │ │ │ │ │ -697SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec); │ │ │ │ │ -698void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err); │ │ │ │ │ -699 │ │ │ │ │ -700/* │ │ │ │ │ -701 * prepare_query.c │ │ │ │ │ -702 */ │ │ │ │ │ -703SQLRETURN prepare_call(struct _hstmt *stmt); │ │ │ │ │ -704SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s); │ │ │ │ │ -705int parse_prepared_query(struct _hstmt *stmt, bool compute_row); │ │ │ │ │ -706int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row); │ │ │ │ │ -707int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, │ │ │ │ │ -SQLLEN StrLen_or_Ind); │ │ │ │ │ -708const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type); │ │ │ │ │ -709const char *odbc_skip_rpc_name(const char *s); │ │ │ │ │ -710 │ │ │ │ │ -711/* │ │ │ │ │ -712 * sql2tds.c │ │ │ │ │ -713 */ │ │ │ │ │ -714SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, │ │ │ │ │ -const struct _drecord *drec_axd, TDSCOLUMN *curcol, │ │ │ │ │ -715 bool compute_row, const TDS_DESC* axd, unsigned int n_row); │ │ │ │ │ -716TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_ │ │ │ │ │ -DATETIMEALL * dta); │ │ │ │ │ -717 │ │ │ │ │ -718/* │ │ │ │ │ -719 * bcp.c │ │ │ │ │ -720 */ │ │ │ │ │ -721void odbc_bcp_free_storage(TDS_DBC *dbc); │ │ │ │ │ -722void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR │ │ │ │ │ -*hfile, const ODBC_CHAR *errfile, int direction _WIDE); │ │ │ │ │ -723void odbc_bcp_control(TDS_DBC *dbc, int field, void *value); │ │ │ │ │ -724void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column); │ │ │ │ │ -725void odbc_bcp_sendrow(TDS_DBC *dbc); │ │ │ │ │ -726int odbc_bcp_batch(TDS_DBC *dbc); │ │ │ │ │ -727int odbc_bcp_done(TDS_DBC *dbc); │ │ │ │ │ -728void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int │ │ │ │ │ -varlen, const void * terminator, int termlen, │ │ │ │ │ -729 int vartype, int table_column); │ │ │ │ │ -730 │ │ │ │ │ -731/* │ │ │ │ │ -732 * sqlwchar.c │ │ │ │ │ -733 */ │ │ │ │ │ -734#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T │ │ │ │ │ -735size_t sqlwcslen(const SQLWCHAR * s); │ │ │ │ │ -736 │ │ │ │ │ -737typedef struct sqlwstr_buf { │ │ │ │ │ -738 struct sqlwstr_buf *next; │ │ │ │ │ -739 wchar_t buf[256]; │ │ │ │ │ -740} SQLWSTRBUF; │ │ │ │ │ -741const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs); │ │ │ │ │ -742void sqlwstr_free(SQLWSTRBUF *bufs); │ │ │ │ │ -743#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL │ │ │ │ │ -744#define SQLWSTR(s) sqlwstr(s, &bufs) │ │ │ │ │ -745#define SQLWSTR_FREE() sqlwstr_free(bufs) │ │ │ │ │ -746#else │ │ │ │ │ -747#define sqlwcslen(s) wcslen(s) │ │ │ │ │ -748 │ │ │ │ │ -749#define SQLWSTR_BUFS(n) do {} while(0) │ │ │ │ │ -750#define SQLWSTR(s) ((const wchar_t*)(s)) │ │ │ │ │ -751#define SQLWSTR_FREE() do {} while(0) │ │ │ │ │ -752#endif │ │ │ │ │ -753 │ │ │ │ │ -754int odbc_get_wide_canonic(TDSCONNECTION *conn); │ │ │ │ │ -755 │ │ │ │ │ -756/* compatibility with old BCP implementation */ │ │ │ │ │ -757#define BCPHINTS_OLD 6 │ │ │ │ │ -758#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL_OLD (SQL_COPT_TDSODBC_IMPL_BASE+1) │ │ │ │ │ -759 │ │ │ │ │ -760/* iODBC extensions used by our driver */ │ │ │ │ │ -761#ifndef SQL_ATTR_DRIVER_UNICODE_TYPE │ │ │ │ │ -762#define SQL_ATTR_DRIVER_UNICODE_TYPE 1065 │ │ │ │ │ -763#endif │ │ │ │ │ -764 │ │ │ │ │ -765#ifndef SQL_DM_CP_UTF16 │ │ │ │ │ -766#define SQL_DM_CP_UTF16 1 │ │ │ │ │ -767#endif │ │ │ │ │ -768#ifndef SQL_DM_CP_UTF8 │ │ │ │ │ -769#define SQL_DM_CP_UTF8 2 │ │ │ │ │ -770#endif │ │ │ │ │ -771#ifndef SQL_DM_CP_UCS4 │ │ │ │ │ -772#define SQL_DM_CP_UCS4 3 │ │ │ │ │ -773#endif │ │ │ │ │ -774 │ │ │ │ │ -775#include │ │ │ │ │ -776 │ │ │ │ │ -777#ifdef __cplusplus │ │ │ │ │ -778#if 0 │ │ │ │ │ -779{ │ │ │ │ │ -780#endif │ │ │ │ │ -781} │ │ │ │ │ -782#endif │ │ │ │ │ -783 │ │ │ │ │ -784#endif │ │ │ │ │ -tds.h │ │ │ │ │ -Main include file for libtds. │ │ │ │ │ -odbc_set_concise_sql_type │ │ │ │ │ -SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ -*drec, int check_only) │ │ │ │ │ -Set concise type and all cascading field. │ │ │ │ │ -Definition odbc_util.c:985 │ │ │ │ │ -odbc_set_concise_c_type │ │ │ │ │ -SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord │ │ │ │ │ -*drec, int check_only) │ │ │ │ │ -Set concise type and all cascading field. │ │ │ │ │ -Definition odbc_util.c:1112 │ │ │ │ │ -odbc_get_param_len │ │ │ │ │ -SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _ │ │ │ │ │ -drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row) │ │ │ │ │ -Return length of parameter from parameter information. │ │ │ │ │ -Definition odbc_util.c:867 │ │ │ │ │ -odbc_c_to_server_type │ │ │ │ │ -TDS_SERVER_TYPE odbc_c_to_server_type(int c_type) │ │ │ │ │ -Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to │ │ │ │ │ -the SQL_C_* type. │ │ │ │ │ -Definition odbc_util.c:602 │ │ │ │ │ -odbc_set_string_flag │ │ │ │ │ -SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER │ │ │ │ │ -cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag) │ │ │ │ │ -Copy a string to client setting size according to ODBC convenction. │ │ │ │ │ -Definition odbc_util.c:302 │ │ │ │ │ -odbc_rdbms_version │ │ │ │ │ -void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string) │ │ │ │ │ -Returns the version of the RDBMS in the ODBC format. │ │ │ │ │ -Definition odbc_util.c:858 │ │ │ │ │ -tdsiconvinfo │ │ │ │ │ -Definition iconv.h:92 │ │ │ │ │ -_sql_error │ │ │ │ │ -Definition odbc.h:96 │ │ │ │ │ -_sql_errors │ │ │ │ │ -Definition odbc.h:109 │ │ │ │ │ -_dheader │ │ │ │ │ -Descriptor header. │ │ │ │ │ -Definition odbc.h:155 │ │ │ │ │ -_drecord │ │ │ │ │ -Descriptor record. │ │ │ │ │ -Definition odbc.h:168 │ │ │ │ │ -_hdesc │ │ │ │ │ -Definition odbc.h:209 │ │ │ │ │ -_hdesc::focus │ │ │ │ │ -int focus │ │ │ │ │ -Nested descriptor to use. │ │ │ │ │ -Definition odbc.h:220 │ │ │ │ │ -_heattr │ │ │ │ │ -Definition odbc.h:234 │ │ │ │ │ -_hchk │ │ │ │ │ -Definition odbc.h:242 │ │ │ │ │ -_henv │ │ │ │ │ -Definition odbc.h:249 │ │ │ │ │ -_hcattr │ │ │ │ │ -Definition odbc.h:258 │ │ │ │ │ -_hdbc │ │ │ │ │ -Definition odbc.h:287 │ │ │ │ │ -_hdbc::stmt_list │ │ │ │ │ -struct _hstmt * stmt_list │ │ │ │ │ -list of all statements allocated from this connection │ │ │ │ │ -Definition odbc.h:307 │ │ │ │ │ -_hdbc::uad │ │ │ │ │ -TDS_DESC * uad[TDS_MAX_APP_DESC] │ │ │ │ │ -descriptors associated to connection │ │ │ │ │ -Definition odbc.h:310 │ │ │ │ │ -_hdbc::current_statement │ │ │ │ │ -struct _hstmt * current_statement │ │ │ │ │ -Statement executing. │ │ │ │ │ -Definition odbc.h:305 │ │ │ │ │ -_hdbc::cursor_support │ │ │ │ │ -unsigned int cursor_support │ │ │ │ │ -<>0 if server handle cursors │ │ │ │ │ -Definition odbc.h:312 │ │ │ │ │ -_hsattr │ │ │ │ │ -Definition odbc.h:320 │ │ │ │ │ -_hstmt │ │ │ │ │ -Definition odbc.h:393 │ │ │ │ │ -_hstmt::param_count │ │ │ │ │ -unsigned int param_count │ │ │ │ │ -number of parameter in current query │ │ │ │ │ -Definition odbc.h:432 │ │ │ │ │ -_hstmt::row_status │ │ │ │ │ -TDS_ODBC_ROW_STATUS row_status │ │ │ │ │ -status of row, it can happen that this flag mark that we are still parsing row, │ │ │ │ │ -this it's normal │ │ │ │ │ -Definition odbc.h:437 │ │ │ │ │ -_hstmt::prepared_pos │ │ │ │ │ -size_t prepared_pos │ │ │ │ │ -position in prepared query to check parameters, used only in RPC │ │ │ │ │ -Definition odbc.h:427 │ │ │ │ │ -_hstmt::row_count │ │ │ │ │ -TDS_INT8 row_count │ │ │ │ │ -row count to return │ │ │ │ │ -Definition odbc.h:435 │ │ │ │ │ -_hstmt::param_num │ │ │ │ │ -int param_num │ │ │ │ │ -last valid parameter in params, it's a ODBC index (from 1 relative to │ │ │ │ │ -descriptor) │ │ │ │ │ -Definition odbc.h:425 │ │ │ │ │ -_hstmt::query │ │ │ │ │ -DSTR query │ │ │ │ │ -query to execute │ │ │ │ │ -Definition odbc.h:399 │ │ │ │ │ -_hstmt::need_reprepare │ │ │ │ │ -unsigned need_reprepare │ │ │ │ │ -Prepared statement needs to be prepared again. │ │ │ │ │ -Definition odbc.h:416 │ │ │ │ │ -_hstmt::next │ │ │ │ │ -struct _hstmt * next │ │ │ │ │ -next in list │ │ │ │ │ -Definition odbc.h:404 │ │ │ │ │ -_hstmt::tds │ │ │ │ │ -TDSSOCKET * tds │ │ │ │ │ -socket (only if active) │ │ │ │ │ -Definition odbc.h:401 │ │ │ │ │ -_hstmt::prev │ │ │ │ │ -struct _hstmt * prev │ │ │ │ │ -previous in list │ │ │ │ │ -Definition odbc.h:406 │ │ │ │ │ -_hstmt::params │ │ │ │ │ -TDSPARAMINFO * params │ │ │ │ │ -parameters saved │ │ │ │ │ -Definition odbc.h:423 │ │ │ │ │ -TDS_FUNCS │ │ │ │ │ -Definition odbc.h:455 │ │ │ │ │ -TDS_PARSED_PARAM │ │ │ │ │ -Definition odbc.h:551 │ │ │ │ │ -SQLTVP │ │ │ │ │ -Definition odbc.h:582 │ │ │ │ │ -TDS_DATETIMEALL │ │ │ │ │ -This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ -TIME information. │ │ │ │ │ -Definition tds.h:145 │ │ │ │ │ -tds_login │ │ │ │ │ -Definition tds.h:498 │ │ │ │ │ -tds_column_funcs │ │ │ │ │ -Definition tds.h:628 │ │ │ │ │ -tds_column │ │ │ │ │ -Metadata about columns in regular and compute rows. │ │ │ │ │ -Definition tds.h:674 │ │ │ │ │ -tds_result_info │ │ │ │ │ -Hold information for any results. │ │ │ │ │ -Definition tds.h:754 │ │ │ │ │ -tds_cursor │ │ │ │ │ -Holds information about a cursor. │ │ │ │ │ -Definition tds.h:922 │ │ │ │ │ -tds_dynamic │ │ │ │ │ -Holds information for a dynamic (also called prepared) query. │ │ │ │ │ -Definition tds.h:962 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ -tds_connection │ │ │ │ │ -Definition tds.h:1077 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ -tds_bcpinfo │ │ │ │ │ -Definition tds.h:1684 │ │ │ │ │ -tds_dstr │ │ │ │ │ -Structure to hold a string. │ │ │ │ │ -Definition string.h:36 │ │ │ │ │ +54 │ │ │ │ │ +55tds_dir_char *tds_get_homedir(void); │ │ │ │ │ +56tds_dir_char* tds_join_path(const tds_dir_char *dir, const tds_dir_char │ │ │ │ │ +*file); │ │ │ │ │ +57tds_dir_char *tds_get_home_file(const tds_dir_char *file); │ │ │ │ │ +58 │ │ │ │ │ +59#include │ │ │ │ │ +60 │ │ │ │ │ +61#endif /* _tdsguard_eI8iNo9FExd6aRlc3im79S_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00431_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/replacements/readpassphrase.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/string.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,84 +70,134 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
readpassphrase.h
│ │ │ │ +
string.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* OPENBSD ORIGINAL: include/readpassphrase.h */
│ │ │ │ -
2
│ │ │ │ -
3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */
│ │ │ │ -
4
│ │ │ │ -
5/*
│ │ │ │ -
6 * Copyright (c) 2000 Todd C. Miller <Todd.Miller@courtesan.com>
│ │ │ │ -
7 * All rights reserved.
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │ -
9 * Redistribution and use in source and binary forms, with or without
│ │ │ │ -
10 * modification, are permitted provided that the following conditions
│ │ │ │ -
11 * are met:
│ │ │ │ -
12 * 1. Redistributions of source code must retain the above copyright
│ │ │ │ -
13 * notice, this list of conditions and the following disclaimer.
│ │ │ │ -
14 * 2. Redistributions in binary form must reproduce the above copyright
│ │ │ │ -
15 * notice, this list of conditions and the following disclaimer in the
│ │ │ │ -
16 * documentation and/or other materials provided with the distribution.
│ │ │ │ -
17 * 3. The name of the author may not be used to endorse or promote products
│ │ │ │ -
18 * derived from this software without specific prior written permission.
│ │ │ │ -
19 *
│ │ │ │ -
20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
│ │ │ │ -
21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
│ │ │ │ -
22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
│ │ │ │ -
23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
│ │ │ │ -
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
│ │ │ │ -
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
│ │ │ │ -
26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
│ │ │ │ -
27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
│ │ │ │ -
28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
│ │ │ │ -
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
│ │ │ │ -
30 */
│ │ │ │ -
31
│ │ │ │ -
32#ifndef _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_
│ │ │ │ -
33#define _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_
│ │ │ │ -
34
│ │ │ │ -
35#ifndef _freetds_config_h_
│ │ │ │ -
36#error should include config.h before
│ │ │ │ -
37#endif
│ │ │ │ -
38
│ │ │ │ -
39#ifdef HAVE_READPASSPHRASE
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_d2McTbRS3vmVcq0ls4BzwH_
│ │ │ │ +
21#define _tdsguard_d2McTbRS3vmVcq0ls4BzwH_
│ │ │ │ +
22
│ │ │ │ +
23#include <freetds/macros.h>
│ │ │ │ +
24
│ │ │ │ +
25#include <freetds/pushvis.h>
│ │ │ │ +
26
│ │ │ │ +
│ │ │ │ +
36typedef struct tds_dstr {
│ │ │ │ +
37 size_t dstr_size;
│ │ │ │ +
38 char dstr_s[1];
│ │ │ │ + │ │ │ │ +
│ │ │ │
40
│ │ │ │ -
41# include <readpassphrase.h>
│ │ │ │ -
42
│ │ │ │ -
43#else /* !HAVE_READPASSPHRASE */
│ │ │ │ -
44
│ │ │ │ -
45#include <freetds/pushvis.h>
│ │ │ │ -
46
│ │ │ │ -
47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
│ │ │ │ -
48#define RPP_ECHO_ON 0x01 /* Leave echo on. */
│ │ │ │ -
49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
│ │ │ │ -
50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
│ │ │ │ -
51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
│ │ │ │ -
52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
│ │ │ │ -
53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
│ │ │ │ -
54
│ │ │ │ -
55#undef readpassphrase
│ │ │ │ -
56char * tds_readpassphrase(const char *, char *, size_t, int);
│ │ │ │ -
57#define readpassphrase tds_readpassphrase
│ │ │ │ -
58
│ │ │ │ -
59#include <freetds/popvis.h>
│ │ │ │ -
60
│ │ │ │ -
61#endif /* !HAVE_READPASSPHRASE */
│ │ │ │ -
62
│ │ │ │ -
63#endif /* !_tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ */
│ │ │ │ +
42extern const struct tds_dstr tds_str_empty;
│ │ │ │ +
43
│ │ │ │ +
49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)
│ │ │ │ +
50
│ │ │ │ +
52static inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
54{
│ │ │ │ +
55 *(s) = DSTR_INITIALIZER;
│ │ │ │ +
56}
│ │ │ │ +
│ │ │ │ +
57
│ │ │ │ +
59static inline int
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
61{
│ │ │ │ +
62 return (*s)->dstr_size == 0;
│ │ │ │ +
63}
│ │ │ │ +
│ │ │ │ +
64
│ │ │ │ +
70static inline char *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
72{
│ │ │ │ +
73 return (*s)->dstr_s;
│ │ │ │ +
74}
│ │ │ │ +
│ │ │ │ +
75
│ │ │ │ +
77static inline const char *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
79{
│ │ │ │ +
80 return (*s)->dstr_s;
│ │ │ │ +
81}
│ │ │ │ +
│ │ │ │ +
82
│ │ │ │ +
84static inline size_t
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
86{
│ │ │ │ +
87 return (*s)->dstr_size;
│ │ │ │ +
88}
│ │ │ │ +
│ │ │ │ +
89
│ │ │ │ +
│ │ │ │ +
91#define tds_dstr_empty(s) \
│ │ │ │ +
92 tds_dstr_free(s)
│ │ │ │ +
│ │ │ │ +
93
│ │ │ │ +
94void tds_dstr_zero(DSTR * s);
│ │ │ │ +
95void tds_dstr_free(DSTR * s);
│ │ │ │ +
96
│ │ │ │ +
97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;
│ │ │ │ +
98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;
│ │ │ │ +
99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;
│ │ │ │ +
100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;
│ │ │ │ +
101
│ │ │ │ +
102DSTR* tds_dstr_setlen(DSTR *s, size_t length);
│ │ │ │ +
103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;
│ │ │ │ +
104
│ │ │ │ +
107#include <freetds/popvis.h>
│ │ │ │ +
108
│ │ │ │ +
109#endif /* _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ */
│ │ │ │ +
DSTR * tds_dstr_setlen(DSTR *s, size_t length)
limit length of string, MUST be <= current length
Definition tdsstring.c:145
│ │ │ │ +
static int tds_dstr_isempty(const DSTR *s)
test if string is empty
Definition string.h:60
│ │ │ │ +
void tds_dstr_zero(DSTR *s)
clear all string filling with zeroes (mainly for security reason)
Definition tdsstring.c:55
│ │ │ │ +
static size_t tds_dstr_len(const DSTR *s)
Returns the length of the string in bytes.
Definition string.h:85
│ │ │ │ +
DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)
Duplicate a string from another dynamic string.
Definition tdsstring.c:134
│ │ │ │ +
#define DSTR_INITIALIZER
Initializer, used to initialize string like in the following example.
Definition string.h:49
│ │ │ │ +
DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)
Set string to a given buffer of characters.
Definition tdsstring.c:77
│ │ │ │ +
const struct tds_dstr tds_str_empty
Internal representation for an empty string.
Definition tdsstring.c:45
│ │ │ │ +
DSTR * tds_dstr_alloc(DSTR *s, size_t length)
allocate space for length char
Definition tdsstring.c:165
│ │ │ │ +
static void tds_dstr_init(DSTR *s)
init a string with empty
Definition string.h:53
│ │ │ │ +
DSTR * tds_dstr_set(DSTR *s, char *src)
set a string from another buffer.
Definition tdsstring.c:107
│ │ │ │ +
static const char * tds_dstr_cstr(const DSTR *s)
Returns a C version (NUL terminated string) of dstr.
Definition string.h:78
│ │ │ │ +
void tds_dstr_free(DSTR *s)
free string
Definition tdsstring.c:62
│ │ │ │ +
DSTR * tds_dstr_copy(DSTR *s, const char *src)
copy a string from another
Definition tdsstring.c:122
│ │ │ │ +
static char * tds_dstr_buf(DSTR *s)
Returns a buffer to edit the string.
Definition string.h:71
│ │ │ │ +
struct tds_dstr * DSTR
Structure to hold a string.
│ │ │ │ +
Structure to hold a string.
Definition string.h:36
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,74 +1,158 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * replacements │ │ │ │ │ -readpassphrase.h │ │ │ │ │ -1/* OPENBSD ORIGINAL: include/readpassphrase.h */ │ │ │ │ │ -2 │ │ │ │ │ -3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */ │ │ │ │ │ -4 │ │ │ │ │ -5/* │ │ │ │ │ -6 * Copyright (c) 2000 Todd C. Miller │ │ │ │ │ -7 * All rights reserved. │ │ │ │ │ + * utils │ │ │ │ │ +string.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ -9 * Redistribution and use in source and binary forms, with or without │ │ │ │ │ -10 * modification, are permitted provided that the following conditions │ │ │ │ │ -11 * are met: │ │ │ │ │ -12 * 1. Redistributions of source code must retain the above copyright │ │ │ │ │ -13 * notice, this list of conditions and the following disclaimer. │ │ │ │ │ -14 * 2. Redistributions in binary form must reproduce the above copyright │ │ │ │ │ -15 * notice, this list of conditions and the following disclaimer in the │ │ │ │ │ -16 * documentation and/or other materials provided with the distribution. │ │ │ │ │ -17 * 3. The name of the author may not be used to endorse or promote products │ │ │ │ │ -18 * derived from this software without specific prior written permission. │ │ │ │ │ -19 * │ │ │ │ │ -20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, │ │ │ │ │ -21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY │ │ │ │ │ -22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL │ │ │ │ │ -23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, │ │ │ │ │ -24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, │ │ │ │ │ -25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR │ │ │ │ │ -PROFITS; │ │ │ │ │ -26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, │ │ │ │ │ -27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR │ │ │ │ │ -28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF │ │ │ │ │ -29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. │ │ │ │ │ -30 */ │ │ │ │ │ -31 │ │ │ │ │ -32#ifndef _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ │ │ │ │ │ -33#define _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ │ │ │ │ │ -34 │ │ │ │ │ -35#ifndef _freetds_config_h_ │ │ │ │ │ -36#error should include config.h before │ │ │ │ │ -37#endif │ │ │ │ │ -38 │ │ │ │ │ -39#ifdef HAVE_READPASSPHRASE │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ │ │ │ │ │ +21#define _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#include │ │ │ │ │ +26 │ │ │ │ │ +36typedef struct tds_dstr { │ │ │ │ │ +37 size_t dstr_size; │ │ │ │ │ +38 char dstr_s[1]; │ │ │ │ │ +39} *DSTR; │ │ │ │ │ 40 │ │ │ │ │ -41# include │ │ │ │ │ -42 │ │ │ │ │ -43#else /* !HAVE_READPASSPHRASE */ │ │ │ │ │ -44 │ │ │ │ │ -45#include │ │ │ │ │ -46 │ │ │ │ │ -47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */ │ │ │ │ │ -48#define RPP_ECHO_ON 0x01 /* Leave echo on. */ │ │ │ │ │ -49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */ │ │ │ │ │ -50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */ │ │ │ │ │ -51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */ │ │ │ │ │ -52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */ │ │ │ │ │ -53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */ │ │ │ │ │ -54 │ │ │ │ │ -55#undef readpassphrase │ │ │ │ │ -56char * tds_readpassphrase(const char *, char *, size_t, int); │ │ │ │ │ -57#define readpassphrase tds_readpassphrase │ │ │ │ │ -58 │ │ │ │ │ -59#include │ │ │ │ │ -60 │ │ │ │ │ -61#endif /* !HAVE_READPASSPHRASE */ │ │ │ │ │ -62 │ │ │ │ │ -63#endif /* !_tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ */ │ │ │ │ │ +42extern const struct tds_dstr tds_str_empty; │ │ │ │ │ +43 │ │ │ │ │ +49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty) │ │ │ │ │ +50 │ │ │ │ │ +52static inline void │ │ │ │ │ +53tds_dstr_init(DSTR * s) │ │ │ │ │ +54{ │ │ │ │ │ +55 *(s) = DSTR_INITIALIZER; │ │ │ │ │ +56} │ │ │ │ │ +57 │ │ │ │ │ +59static inline int │ │ │ │ │ +60tds_dstr_isempty(const DSTR * s) │ │ │ │ │ +61{ │ │ │ │ │ +62 return (*s)->dstr_size == 0; │ │ │ │ │ +63} │ │ │ │ │ +64 │ │ │ │ │ +70static inline char * │ │ │ │ │ +71tds_dstr_buf(DSTR * s) │ │ │ │ │ +72{ │ │ │ │ │ +73 return (*s)->dstr_s; │ │ │ │ │ +74} │ │ │ │ │ +75 │ │ │ │ │ +77static inline const char * │ │ │ │ │ +78tds_dstr_cstr(const DSTR * s) │ │ │ │ │ +79{ │ │ │ │ │ +80 return (*s)->dstr_s; │ │ │ │ │ +81} │ │ │ │ │ +82 │ │ │ │ │ +84static inline size_t │ │ │ │ │ +85tds_dstr_len(const DSTR * s) │ │ │ │ │ +86{ │ │ │ │ │ +87 return (*s)->dstr_size; │ │ │ │ │ +88} │ │ │ │ │ +89 │ │ │ │ │ +91#define tds_dstr_empty(s) \ │ │ │ │ │ +92 tds_dstr_free(s) │ │ │ │ │ +93 │ │ │ │ │ +94void tds_dstr_zero(DSTR * s); │ │ │ │ │ +95void tds_dstr_free(DSTR * s); │ │ │ │ │ +96 │ │ │ │ │ +97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR; │ │ │ │ │ +98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR; │ │ │ │ │ +99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR; │ │ │ │ │ +100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR; │ │ │ │ │ +101 │ │ │ │ │ +102DSTR* tds_dstr_setlen(DSTR *s, size_t length); │ │ │ │ │ +103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR; │ │ │ │ │ +104 │ │ │ │ │ +107#include │ │ │ │ │ +108 │ │ │ │ │ +109#endif /* _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ */ │ │ │ │ │ +tds_dstr_setlen │ │ │ │ │ +DSTR * tds_dstr_setlen(DSTR *s, size_t length) │ │ │ │ │ +limit length of string, MUST be <= current length │ │ │ │ │ +Definition tdsstring.c:145 │ │ │ │ │ +tds_dstr_isempty │ │ │ │ │ +static int tds_dstr_isempty(const DSTR *s) │ │ │ │ │ +test if string is empty │ │ │ │ │ +Definition string.h:60 │ │ │ │ │ +tds_dstr_zero │ │ │ │ │ +void tds_dstr_zero(DSTR *s) │ │ │ │ │ +clear all string filling with zeroes (mainly for security reason) │ │ │ │ │ +Definition tdsstring.c:55 │ │ │ │ │ +tds_dstr_len │ │ │ │ │ +static size_t tds_dstr_len(const DSTR *s) │ │ │ │ │ +Returns the length of the string in bytes. │ │ │ │ │ +Definition string.h:85 │ │ │ │ │ +tds_dstr_dup │ │ │ │ │ +DSTR * tds_dstr_dup(DSTR *s, const DSTR *src) │ │ │ │ │ +Duplicate a string from another dynamic string. │ │ │ │ │ +Definition tdsstring.c:134 │ │ │ │ │ +DSTR_INITIALIZER │ │ │ │ │ +#define DSTR_INITIALIZER │ │ │ │ │ +Initializer, used to initialize string like in the following example. │ │ │ │ │ +Definition string.h:49 │ │ │ │ │ +tds_dstr_copyn │ │ │ │ │ +DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length) │ │ │ │ │ +Set string to a given buffer of characters. │ │ │ │ │ +Definition tdsstring.c:77 │ │ │ │ │ +tds_str_empty │ │ │ │ │ +const struct tds_dstr tds_str_empty │ │ │ │ │ +Internal representation for an empty string. │ │ │ │ │ +Definition tdsstring.c:45 │ │ │ │ │ +tds_dstr_alloc │ │ │ │ │ +DSTR * tds_dstr_alloc(DSTR *s, size_t length) │ │ │ │ │ +allocate space for length char │ │ │ │ │ +Definition tdsstring.c:165 │ │ │ │ │ +tds_dstr_init │ │ │ │ │ +static void tds_dstr_init(DSTR *s) │ │ │ │ │ +init a string with empty │ │ │ │ │ +Definition string.h:53 │ │ │ │ │ +tds_dstr_set │ │ │ │ │ +DSTR * tds_dstr_set(DSTR *s, char *src) │ │ │ │ │ +set a string from another buffer. │ │ │ │ │ +Definition tdsstring.c:107 │ │ │ │ │ +tds_dstr_cstr │ │ │ │ │ +static const char * tds_dstr_cstr(const DSTR *s) │ │ │ │ │ +Returns a C version (NUL terminated string) of dstr. │ │ │ │ │ +Definition string.h:78 │ │ │ │ │ +tds_dstr_free │ │ │ │ │ +void tds_dstr_free(DSTR *s) │ │ │ │ │ +free string │ │ │ │ │ +Definition tdsstring.c:62 │ │ │ │ │ +tds_dstr_copy │ │ │ │ │ +DSTR * tds_dstr_copy(DSTR *s, const char *src) │ │ │ │ │ +copy a string from another │ │ │ │ │ +Definition tdsstring.c:122 │ │ │ │ │ +tds_dstr_buf │ │ │ │ │ +static char * tds_dstr_buf(DSTR *s) │ │ │ │ │ +Returns a buffer to edit the string. │ │ │ │ │ +Definition string.h:71 │ │ │ │ │ +DSTR │ │ │ │ │ +struct tds_dstr * DSTR │ │ │ │ │ +Structure to hold a string. │ │ │ │ │ +tds_dstr │ │ │ │ │ +Structure to hold a string. │ │ │ │ │ +Definition string.h:36 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00434_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/replacements/poll.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/md5.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,83 +70,72 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
poll.h
│ │ │ │ +
md5.h
│ │ │ │
│ │ │ │
│ │ │ │ -Go to the documentation of this file.
1
│ │ │ │ -
5#if !defined(_tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_) && !defined(HAVE_POLL)
│ │ │ │ -
6#define _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_
│ │ │ │ +
1#ifndef _tdsguard_d0MZPmUZs0d3gpgxVUiFES_
│ │ │ │ +
2#define _tdsguard_d0MZPmUZs0d3gpgxVUiFES_
│ │ │ │ +
3
│ │ │ │ +
4#ifndef HAVE_NETTLE
│ │ │ │ +
5
│ │ │ │ +
6#include <freetds/pushvis.h>
│ │ │ │
7
│ │ │ │ -
8#include <freetds/pushvis.h>
│ │ │ │ -
9
│ │ │ │ -
10#ifndef _WIN32
│ │ │ │ -
11/* poll flags */
│ │ │ │ -
12# define POLLIN 0x0001
│ │ │ │ -
13# define POLLOUT 0x0004
│ │ │ │ -
14# define POLLERR 0x0008
│ │ │ │ -
15
│ │ │ │ -
16/* synonyms */
│ │ │ │ -
17# define POLLNORM POLLIN
│ │ │ │ -
18# define POLLPRI POLLIN
│ │ │ │ -
19# define POLLRDNORM POLLIN
│ │ │ │ -
20# define POLLRDBAND POLLIN
│ │ │ │ -
21# define POLLWRNORM POLLOUT
│ │ │ │ -
22# define POLLWRBAND POLLOUT
│ │ │ │ -
23
│ │ │ │ -
24/* ignored */
│ │ │ │ -
25# define POLLHUP 0x0010
│ │ │ │ -
26# define POLLNVAL 0x0020
│ │ │ │ -
│ │ │ │ -
27typedef struct pollfd {
│ │ │ │ -
28 int fd; /* file descriptor to poll */
│ │ │ │ -
29 short events; /* events of interest on fd */
│ │ │ │ -
30 short revents; /* events that occurred on fd */
│ │ │ │ -
31} pollfd_t;
│ │ │ │ -
│ │ │ │ -
32
│ │ │ │ -
33#else /* Windows */
│ │ │ │ -
34/*
│ │ │ │ -
35 * Windows use different constants than Unix
│ │ │ │ -
36 * Newer version have a WSAPoll which is equal to Unix poll
│ │ │ │ -
37 */
│ │ │ │ -
38# if !defined(POLLRDNORM) && !defined(POLLWRNORM)
│ │ │ │ -
39# define POLLIN 0x0300
│ │ │ │ -
40# define POLLOUT 0x0010
│ │ │ │ -
41# define POLLERR 0x0001
│ │ │ │ -
42# define POLLHUP 0x0002
│ │ │ │ -
43# define POLLNVAL 0x0004
│ │ │ │ -
44# define POLLRDNORM 0x0100
│ │ │ │ -
45# define POLLWRNORM 0x0010
│ │ │ │ -
46typedef struct pollfd {
│ │ │ │ -
47 SOCKET fd; /* file descriptor to poll */
│ │ │ │ -
48 short events; /* events of interest on fd */
│ │ │ │ -
49 short revents; /* events that occurred on fd */
│ │ │ │ -
50} pollfd_t;
│ │ │ │ -
51# else
│ │ │ │ -
52typedef struct pollfd pollfd_t;
│ │ │ │ -
53# endif
│ │ │ │ -
54#endif
│ │ │ │ -
55
│ │ │ │ -
56#undef poll
│ │ │ │ -
57int tds_poll(struct pollfd fds[], size_t nfds, int timeout);
│ │ │ │ -
58#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)
│ │ │ │ -
59
│ │ │ │ -
60#include <freetds/popvis.h>
│ │ │ │ -
61
│ │ │ │ -
62#endif
│ │ │ │ -
Definition poll.h:27
│ │ │ │ +
│ │ │ │ +
8struct MD5Context {
│ │ │ │ +
9 uint32_t buf[4];
│ │ │ │ +
10 uint64_t bytes;
│ │ │ │ +
11 uint32_t in[16];
│ │ │ │ +
12};
│ │ │ │ +
│ │ │ │ +
13
│ │ │ │ +
14void MD5Init(struct MD5Context *context);
│ │ │ │ +
15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);
│ │ │ │ +
16void MD5Final(struct MD5Context *context, uint8_t *digest);
│ │ │ │ +
17
│ │ │ │ +
18/*
│ │ │ │ +
19 * This is needed to make RSAREF happy on some MS-DOS compilers.
│ │ │ │ +
20 */
│ │ │ │ +
21typedef struct MD5Context MD5_CTX;
│ │ │ │ +
22
│ │ │ │ +
23#include <freetds/popvis.h>
│ │ │ │ +
24
│ │ │ │ +
25#else
│ │ │ │ +
26
│ │ │ │ +
27#include <nettle/md5.h>
│ │ │ │ +
28
│ │ │ │ +
29typedef struct md5_ctx MD5_CTX;
│ │ │ │ +
30
│ │ │ │ +
31static inline void MD5Init(MD5_CTX *ctx)
│ │ │ │ +
32{
│ │ │ │ +
33 nettle_md5_init(ctx);
│ │ │ │ +
34}
│ │ │ │ +
35
│ │ │ │ +
36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)
│ │ │ │ +
37{
│ │ │ │ +
38 nettle_md5_update(ctx, len, buf);
│ │ │ │ +
39}
│ │ │ │ +
40
│ │ │ │ +
41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)
│ │ │ │ +
42{
│ │ │ │ +
43 nettle_md5_digest(ctx, 16, digest);
│ │ │ │ +
44}
│ │ │ │ +
45
│ │ │ │ +
46#endif
│ │ │ │ +
47
│ │ │ │ +
48#endif /* !_tdsguard_d0MZPmUZs0d3gpgxVUiFES_ */
│ │ │ │ +
Definition md5.h:8
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,72 +1,60 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * replacements │ │ │ │ │ -poll.h │ │ │ │ │ -Go_to_the_documentation_of_this_file. │ │ │ │ │ -1 │ │ │ │ │ -5#if !defined(_tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_) && !defined(HAVE_POLL) │ │ │ │ │ -6#define _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_ │ │ │ │ │ + * utils │ │ │ │ │ +md5.h │ │ │ │ │ +1#ifndef _tdsguard_d0MZPmUZs0d3gpgxVUiFES_ │ │ │ │ │ +2#define _tdsguard_d0MZPmUZs0d3gpgxVUiFES_ │ │ │ │ │ +3 │ │ │ │ │ +4#ifndef HAVE_NETTLE │ │ │ │ │ +5 │ │ │ │ │ +6#include │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9 │ │ │ │ │ -10#ifndef _WIN32 │ │ │ │ │ -11/* poll flags */ │ │ │ │ │ -12# define POLLIN 0x0001 │ │ │ │ │ -13# define POLLOUT 0x0004 │ │ │ │ │ -14# define POLLERR 0x0008 │ │ │ │ │ -15 │ │ │ │ │ -16/* synonyms */ │ │ │ │ │ -17# define POLLNORM POLLIN │ │ │ │ │ -18# define POLLPRI POLLIN │ │ │ │ │ -19# define POLLRDNORM POLLIN │ │ │ │ │ -20# define POLLRDBAND POLLIN │ │ │ │ │ -21# define POLLWRNORM POLLOUT │ │ │ │ │ -22# define POLLWRBAND POLLOUT │ │ │ │ │ -23 │ │ │ │ │ -24/* ignored */ │ │ │ │ │ -25# define POLLHUP 0x0010 │ │ │ │ │ -26# define POLLNVAL 0x0020 │ │ │ │ │ -27typedef struct pollfd { │ │ │ │ │ -28 int fd; /* file descriptor to poll */ │ │ │ │ │ -29 short events; /* events of interest on fd */ │ │ │ │ │ -30 short revents; /* events that occurred on fd */ │ │ │ │ │ -31} pollfd_t; │ │ │ │ │ -32 │ │ │ │ │ -33#else /* Windows */ │ │ │ │ │ -34/* │ │ │ │ │ -35 * Windows use different constants than Unix │ │ │ │ │ -36 * Newer version have a WSAPoll which is equal to Unix poll │ │ │ │ │ -37 */ │ │ │ │ │ -38# if !defined(POLLRDNORM) && !defined(POLLWRNORM) │ │ │ │ │ -39# define POLLIN 0x0300 │ │ │ │ │ -40# define POLLOUT 0x0010 │ │ │ │ │ -41# define POLLERR 0x0001 │ │ │ │ │ -42# define POLLHUP 0x0002 │ │ │ │ │ -43# define POLLNVAL 0x0004 │ │ │ │ │ -44# define POLLRDNORM 0x0100 │ │ │ │ │ -45# define POLLWRNORM 0x0010 │ │ │ │ │ -46typedef struct pollfd { │ │ │ │ │ -47 SOCKET fd; /* file descriptor to poll */ │ │ │ │ │ -48 short events; /* events of interest on fd */ │ │ │ │ │ -49 short revents; /* events that occurred on fd */ │ │ │ │ │ -50} pollfd_t; │ │ │ │ │ -51# else │ │ │ │ │ -52typedef struct pollfd pollfd_t; │ │ │ │ │ -53# endif │ │ │ │ │ -54#endif │ │ │ │ │ -55 │ │ │ │ │ -56#undef poll │ │ │ │ │ -57int tds_poll(struct pollfd fds[], size_t nfds, int timeout); │ │ │ │ │ -58#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout) │ │ │ │ │ -59 │ │ │ │ │ -60#include │ │ │ │ │ -61 │ │ │ │ │ -62#endif │ │ │ │ │ -pollfd │ │ │ │ │ -Definition poll.h:27 │ │ │ │ │ +8struct MD5Context { │ │ │ │ │ +9 uint32_t buf[4]; │ │ │ │ │ +10 uint64_t bytes; │ │ │ │ │ +11 uint32_t in[16]; │ │ │ │ │ +12}; │ │ │ │ │ +13 │ │ │ │ │ +14void MD5Init(struct MD5Context *context); │ │ │ │ │ +15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len); │ │ │ │ │ +16void MD5Final(struct MD5Context *context, uint8_t *digest); │ │ │ │ │ +17 │ │ │ │ │ +18/* │ │ │ │ │ +19 * This is needed to make RSAREF happy on some MS-DOS compilers. │ │ │ │ │ +20 */ │ │ │ │ │ +21typedef struct MD5Context MD5_CTX; │ │ │ │ │ +22 │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#else │ │ │ │ │ +26 │ │ │ │ │ +27#include │ │ │ │ │ +28 │ │ │ │ │ +29typedef struct md5_ctx MD5_CTX; │ │ │ │ │ +30 │ │ │ │ │ +31static inline void MD5Init(MD5_CTX *ctx) │ │ │ │ │ +32{ │ │ │ │ │ +33 nettle_md5_init(ctx); │ │ │ │ │ +34} │ │ │ │ │ +35 │ │ │ │ │ +36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len) │ │ │ │ │ +37{ │ │ │ │ │ +38 nettle_md5_update(ctx, len, buf); │ │ │ │ │ +39} │ │ │ │ │ +40 │ │ │ │ │ +41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest) │ │ │ │ │ +42{ │ │ │ │ │ +43 nettle_md5_digest(ctx, 16, digest); │ │ │ │ │ +44} │ │ │ │ │ +45 │ │ │ │ │ +46#endif │ │ │ │ │ +47 │ │ │ │ │ +48#endif /* !_tdsguard_d0MZPmUZs0d3gpgxVUiFES_ */ │ │ │ │ │ +MD5Context │ │ │ │ │ +Definition md5.h:8 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00437_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/tls.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/md4.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,148 +70,71 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
tls.h
│ │ │ │ +
md4.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2015 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
│ │ │ │ -
21#define _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
│ │ │ │ +
1#ifndef _tdsguard_bJRBdagK4r9w58mnUbyvA0_
│ │ │ │ +
2#define _tdsguard_bJRBdagK4r9w58mnUbyvA0_
│ │ │ │ +
3
│ │ │ │ +
4#ifndef HAVE_NETTLE
│ │ │ │ +
5
│ │ │ │ +
6#include <freetds/pushvis.h>
│ │ │ │ +
7
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
9{
│ │ │ │ +
10 uint32_t buf[4];
│ │ │ │ +
11 uint64_t bytes;
│ │ │ │ +
12 uint32_t in[16];
│ │ │ │ +
13};
│ │ │ │ +
│ │ │ │ +
14
│ │ │ │ +
15void MD4Init(struct MD4Context *context);
│ │ │ │ +
16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len);
│ │ │ │ +
17void MD4Final(struct MD4Context *context, uint8_t *digest);
│ │ │ │ +
18
│ │ │ │ +
19typedef struct MD4Context MD4_CTX;
│ │ │ │ +
20
│ │ │ │ +
21#include <freetds/popvis.h>
│ │ │ │
22
│ │ │ │ -
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ -
24#error tds.h must be included before tls.h
│ │ │ │ -
25#endif
│ │ │ │ +
23#else
│ │ │ │ +
24
│ │ │ │ +
25#include <nettle/md4.h>
│ │ │ │
26
│ │ │ │ -
27#ifdef HAVE_GNUTLS
│ │ │ │ -
28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
│ │ │ │ -
29# include <freetds/thread.h>
│ │ │ │ -
30# ifndef GNUTLS_USE_NETTLE
│ │ │ │ -
31# include <gcrypt.h>
│ │ │ │ -
32# endif
│ │ │ │ -
33# endif
│ │ │ │ -
34# include <gnutls/gnutls.h>
│ │ │ │ -
35# include <gnutls/x509.h>
│ │ │ │ -
36#elif defined(HAVE_OPENSSL)
│ │ │ │ -
37# include <openssl/ssl.h>
│ │ │ │ -
38# include <openssl/x509v3.h>
│ │ │ │ -
39# include <openssl/err.h>
│ │ │ │ -
40#endif
│ │ │ │ -
41
│ │ │ │ -
42#include <freetds/pushvis.h>
│ │ │ │ +
27typedef struct md4_ctx MD4_CTX;
│ │ │ │ +
28
│ │ │ │ +
29static inline void MD4Init(MD4_CTX *ctx)
│ │ │ │ +
30{
│ │ │ │ +
31 nettle_md4_init(ctx);
│ │ │ │ +
32}
│ │ │ │ +
33
│ │ │ │ +
34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len)
│ │ │ │ +
35{
│ │ │ │ +
36 nettle_md4_update(ctx, len, buf);
│ │ │ │ +
37}
│ │ │ │ +
38
│ │ │ │ +
39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest)
│ │ │ │ +
40{
│ │ │ │ +
41 nettle_md4_digest(ctx, 16, digest);
│ │ │ │ +
42}
│ │ │ │
43
│ │ │ │ -
44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
│ │ │ │ -
45TDSRET tds_ssl_init(TDSSOCKET *tds, bool full);
│ │ │ │ -
46void tds_ssl_deinit(TDSCONNECTION *conn);
│ │ │ │ -
47
│ │ │ │ -
48# ifdef HAVE_GNUTLS
│ │ │ │ -
49
│ │ │ │ -
50static inline int
│ │ │ │ -
51tds_ssl_pending(TDSCONNECTION *conn)
│ │ │ │ -
52{
│ │ │ │ -
53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);
│ │ │ │ -
54}
│ │ │ │ -
55
│ │ │ │ -
56static inline int
│ │ │ │ -
57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
│ │ │ │ -
58{
│ │ │ │ -
59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, buflen);
│ │ │ │ -
60}
│ │ │ │ -
61
│ │ │ │ -
62static inline int
│ │ │ │ -
63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
│ │ │ │ -
64{
│ │ │ │ -
65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, buflen);
│ │ │ │ -
66}
│ │ │ │ -
67# else
│ │ │ │ -
68
│ │ │ │ -
69/* compatibility for LibreSSL 2.7 */
│ │ │ │ -
70#ifdef LIBRESSL_VERSION_NUMBER
│ │ │ │ -
71#define TLS_ST_OK SSL_ST_OK
│ │ │ │ -
72#endif
│ │ │ │ -
73
│ │ │ │ -
74static inline int
│ │ │ │ -
75tds_ssl_pending(TDSCONNECTION *conn)
│ │ │ │ -
76{
│ │ │ │ -
77 return SSL_pending((SSL *) conn->tls_session);
│ │ │ │ -
78}
│ │ │ │ -
79
│ │ │ │ -
80static inline int
│ │ │ │ -
81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
│ │ │ │ -
82{
│ │ │ │ -
83 return SSL_read((SSL *) conn->tls_session, buf, buflen);
│ │ │ │ -
84}
│ │ │ │ -
85
│ │ │ │ -
86static inline int
│ │ │ │ -
87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
│ │ │ │ -
88{
│ │ │ │ -
89 return SSL_write((SSL *) conn->tls_session, buf, buflen);
│ │ │ │ -
90}
│ │ │ │ -
91# endif
│ │ │ │ -
92#else
│ │ │ │ -
93static inline TDSRET
│ │ │ │ -
94tds_ssl_init(TDSSOCKET *tds TDS_UNUSED, bool full TDS_UNUSED)
│ │ │ │ -
95{
│ │ │ │ -
96 return TDS_FAIL;
│ │ │ │ -
97}
│ │ │ │ -
98
│ │ │ │ -
99static inline void
│ │ │ │ -
100tds_ssl_deinit(TDSCONNECTION *conn TDS_UNUSED)
│ │ │ │ -
101{
│ │ │ │ -
102}
│ │ │ │ -
103
│ │ │ │ -
104static inline int
│ │ │ │ -
105tds_ssl_pending(TDSCONNECTION *conn TDS_UNUSED)
│ │ │ │ -
106{
│ │ │ │ -
107 return 0;
│ │ │ │ -
108}
│ │ │ │ -
109
│ │ │ │ -
110static inline int
│ │ │ │ -
111tds_ssl_read(TDSCONNECTION *conn TDS_UNUSED, unsigned char *buf TDS_UNUSED, int buflen TDS_UNUSED)
│ │ │ │ -
112{
│ │ │ │ -
113 return -1;
│ │ │ │ -
114}
│ │ │ │ -
115
│ │ │ │ -
116static inline int
│ │ │ │ -
117tds_ssl_write(TDSCONNECTION *conn TDS_UNUSED, const unsigned char *buf TDS_UNUSED, int buflen TDS_UNUSED)
│ │ │ │ -
118{
│ │ │ │ -
119 return -1;
│ │ │ │ -
120}
│ │ │ │ -
121#endif
│ │ │ │ -
122
│ │ │ │ -
123#include <freetds/popvis.h>
│ │ │ │ -
124
│ │ │ │ -
125#endif /* _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ */
│ │ │ │ -
Definition tds.h:1077
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
44
│ │ │ │ +
45#endif
│ │ │ │ +
46
│ │ │ │ +
47#endif /* !_tdsguard_bJRBdagK4r9w58mnUbyvA0_ */
│ │ │ │ +
Definition md4.h:9
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,143 +1,59 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -tls.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2015 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ │ │ │ │ │ -21#define _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ │ │ │ │ │ + * utils │ │ │ │ │ +md4.h │ │ │ │ │ +1#ifndef _tdsguard_bJRBdagK4r9w58mnUbyvA0_ │ │ │ │ │ +2#define _tdsguard_bJRBdagK4r9w58mnUbyvA0_ │ │ │ │ │ +3 │ │ │ │ │ +4#ifndef HAVE_NETTLE │ │ │ │ │ +5 │ │ │ │ │ +6#include │ │ │ │ │ +7 │ │ │ │ │ +8struct MD4Context │ │ │ │ │ +9{ │ │ │ │ │ +10 uint32_t buf[4]; │ │ │ │ │ +11 uint64_t bytes; │ │ │ │ │ +12 uint32_t in[16]; │ │ │ │ │ +13}; │ │ │ │ │ +14 │ │ │ │ │ +15void MD4Init(struct MD4Context *context); │ │ │ │ │ +16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len); │ │ │ │ │ +17void MD4Final(struct MD4Context *context, uint8_t *digest); │ │ │ │ │ +18 │ │ │ │ │ +19typedef struct MD4Context MD4_CTX; │ │ │ │ │ +20 │ │ │ │ │ +21#include │ │ │ │ │ 22 │ │ │ │ │ -23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ -24#error tds.h must be included before tls.h │ │ │ │ │ -25#endif │ │ │ │ │ +23#else │ │ │ │ │ +24 │ │ │ │ │ +25#include │ │ │ │ │ 26 │ │ │ │ │ -27#ifdef HAVE_GNUTLS │ │ │ │ │ -28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX) │ │ │ │ │ -29# include │ │ │ │ │ -30# ifndef GNUTLS_USE_NETTLE │ │ │ │ │ -31# include │ │ │ │ │ -32# endif │ │ │ │ │ -33# endif │ │ │ │ │ -34# include │ │ │ │ │ -35# include │ │ │ │ │ -36#elif defined(HAVE_OPENSSL) │ │ │ │ │ -37# include │ │ │ │ │ -38# include │ │ │ │ │ -39# include │ │ │ │ │ -40#endif │ │ │ │ │ -41 │ │ │ │ │ -42#include │ │ │ │ │ +27typedef struct md4_ctx MD4_CTX; │ │ │ │ │ +28 │ │ │ │ │ +29static inline void MD4Init(MD4_CTX *ctx) │ │ │ │ │ +30{ │ │ │ │ │ +31 nettle_md4_init(ctx); │ │ │ │ │ +32} │ │ │ │ │ +33 │ │ │ │ │ +34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len) │ │ │ │ │ +35{ │ │ │ │ │ +36 nettle_md4_update(ctx, len, buf); │ │ │ │ │ +37} │ │ │ │ │ +38 │ │ │ │ │ +39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest) │ │ │ │ │ +40{ │ │ │ │ │ +41 nettle_md4_digest(ctx, 16, digest); │ │ │ │ │ +42} │ │ │ │ │ 43 │ │ │ │ │ -44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) │ │ │ │ │ -45TDSRET tds_ssl_init(TDSSOCKET *tds, bool full); │ │ │ │ │ -46void tds_ssl_deinit(TDSCONNECTION *conn); │ │ │ │ │ -47 │ │ │ │ │ -48# ifdef HAVE_GNUTLS │ │ │ │ │ -49 │ │ │ │ │ -50static inline int │ │ │ │ │ -51tds_ssl_pending(TDSCONNECTION *conn) │ │ │ │ │ -52{ │ │ │ │ │ -53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session); │ │ │ │ │ -54} │ │ │ │ │ -55 │ │ │ │ │ -56static inline int │ │ │ │ │ -57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen) │ │ │ │ │ -58{ │ │ │ │ │ -59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, │ │ │ │ │ -buflen); │ │ │ │ │ -60} │ │ │ │ │ -61 │ │ │ │ │ -62static inline int │ │ │ │ │ -63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen) │ │ │ │ │ -64{ │ │ │ │ │ -65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, │ │ │ │ │ -buflen); │ │ │ │ │ -66} │ │ │ │ │ -67# else │ │ │ │ │ -68 │ │ │ │ │ -69/* compatibility for LibreSSL 2.7 */ │ │ │ │ │ -70#ifdef LIBRESSL_VERSION_NUMBER │ │ │ │ │ -71#define TLS_ST_OK SSL_ST_OK │ │ │ │ │ -72#endif │ │ │ │ │ -73 │ │ │ │ │ -74static inline int │ │ │ │ │ -75tds_ssl_pending(TDSCONNECTION *conn) │ │ │ │ │ -76{ │ │ │ │ │ -77 return SSL_pending((SSL *) conn->tls_session); │ │ │ │ │ -78} │ │ │ │ │ -79 │ │ │ │ │ -80static inline int │ │ │ │ │ -81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen) │ │ │ │ │ -82{ │ │ │ │ │ -83 return SSL_read((SSL *) conn->tls_session, buf, buflen); │ │ │ │ │ -84} │ │ │ │ │ -85 │ │ │ │ │ -86static inline int │ │ │ │ │ -87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen) │ │ │ │ │ -88{ │ │ │ │ │ -89 return SSL_write((SSL *) conn->tls_session, buf, buflen); │ │ │ │ │ -90} │ │ │ │ │ -91# endif │ │ │ │ │ -92#else │ │ │ │ │ -93static inline TDSRET │ │ │ │ │ -94tds_ssl_init(TDSSOCKET *tds TDS_UNUSED, bool full TDS_UNUSED) │ │ │ │ │ -95{ │ │ │ │ │ -96 return TDS_FAIL; │ │ │ │ │ -97} │ │ │ │ │ -98 │ │ │ │ │ -99static inline void │ │ │ │ │ -100tds_ssl_deinit(TDSCONNECTION *conn TDS_UNUSED) │ │ │ │ │ -101{ │ │ │ │ │ -102} │ │ │ │ │ -103 │ │ │ │ │ -104static inline int │ │ │ │ │ -105tds_ssl_pending(TDSCONNECTION *conn TDS_UNUSED) │ │ │ │ │ -106{ │ │ │ │ │ -107 return 0; │ │ │ │ │ -108} │ │ │ │ │ -109 │ │ │ │ │ -110static inline int │ │ │ │ │ -111tds_ssl_read(TDSCONNECTION *conn TDS_UNUSED, unsigned char *buf TDS_UNUSED, │ │ │ │ │ -int buflen TDS_UNUSED) │ │ │ │ │ -112{ │ │ │ │ │ -113 return -1; │ │ │ │ │ -114} │ │ │ │ │ -115 │ │ │ │ │ -116static inline int │ │ │ │ │ -117tds_ssl_write(TDSCONNECTION *conn TDS_UNUSED, const unsigned char *buf TDS_ │ │ │ │ │ -UNUSED, int buflen TDS_UNUSED) │ │ │ │ │ -118{ │ │ │ │ │ -119 return -1; │ │ │ │ │ -120} │ │ │ │ │ -121#endif │ │ │ │ │ -122 │ │ │ │ │ -123#include │ │ │ │ │ -124 │ │ │ │ │ -125#endif /* _tdsguard_hpUeh3TzYOzN1FtT39tMHz_ */ │ │ │ │ │ -tds_connection │ │ │ │ │ -Definition tds.h:1077 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ +44 │ │ │ │ │ +45#endif │ │ │ │ │ +46 │ │ │ │ │ +47#endif /* !_tdsguard_bJRBdagK4r9w58mnUbyvA0_ */ │ │ │ │ │ +MD4Context │ │ │ │ │ +Definition md4.h:9 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00440_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/iconv.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/smp.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
iconv.h
│ │ │ │ +
smp.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
1/* Simple multiprecision - small MP library for testing
│ │ │ │ +
2 * Copyright (C) 2022-2024 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,143 +96,53 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_c6YssGkHHqKMDRUMOWVASl_
│ │ │ │ -
21#define _tdsguard_c6YssGkHHqKMDRUMOWVASl_
│ │ │ │ +
20#ifndef _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_
│ │ │ │ +
21#define _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_
│ │ │ │
22
│ │ │ │ -
23#if HAVE_ICONV
│ │ │ │ -
24#include <iconv.h>
│ │ │ │ -
25#else
│ │ │ │ -
26/* Define iconv_t for src/replacements/iconv.c. */
│ │ │ │ -
27#undef iconv_t
│ │ │ │ -
28typedef void *iconv_t;
│ │ │ │ -
29#endif /* HAVE_ICONV */
│ │ │ │ -
30
│ │ │ │ -
31#if HAVE_ERRNO_H
│ │ │ │ -
32#include <errno.h>
│ │ │ │ -
33#endif
│ │ │ │ -
34
│ │ │ │ -
35#if HAVE_WCHAR_H
│ │ │ │ -
36#include <wchar.h>
│ │ │ │ -
37#endif
│ │ │ │ +
23#include <tds_sysdep_public.h>
│ │ │ │ +
24#include <freetds/bool.h>
│ │ │ │ +
25
│ │ │ │ +
│ │ │ │ +
26typedef struct {
│ │ │ │ +
27 uint16_t comp[8];
│ │ │ │ +
28} smp;
│ │ │ │ +
│ │ │ │ +
29
│ │ │ │ +
30extern const smp smp_zero;
│ │ │ │ +
31extern const smp smp_one;
│ │ │ │ +
32
│ │ │ │ +
34smp smp_add(smp a, smp b);
│ │ │ │ +
35
│ │ │ │ +
37smp smp_sub(smp a, smp b);
│ │ │ │
38
│ │ │ │ -
39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */
│ │ │ │ -
40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,
│ │ │ │ -
41 have EILSEQ in a different header. On these systems, define EILSEQ
│ │ │ │ -
42 ourselves. */
│ │ │ │ -
43#ifndef EILSEQ
│ │ │ │ -
44# define EILSEQ ENOENT
│ │ │ │ -
45#endif
│ │ │ │ -
46
│ │ │ │ -
47#if HAVE_STDLIB_H
│ │ │ │ -
48#include <stdlib.h>
│ │ │ │ -
49#endif /* HAVE_STDLIB_H */
│ │ │ │ +
40smp smp_not(smp a);
│ │ │ │ +
41
│ │ │ │ +
43smp smp_negate(smp a);
│ │ │ │ +
44
│ │ │ │ +
46smp smp_from_int(int64_t n);
│ │ │ │ +
47
│ │ │ │ +
49bool smp_is_negative(smp a);
│ │ │ │
50
│ │ │ │ -
51#include <freetds/pushvis.h>
│ │ │ │ -
52
│ │ │ │ -
53#ifdef __cplusplus
│ │ │ │ -
54extern "C"
│ │ │ │ -
55{
│ │ │ │ -
56#endif
│ │ │ │ -
57
│ │ │ │ -
58#if ! HAVE_ICONV
│ │ │ │ -
59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);
│ │ │ │ -
60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
│ │ │ │ -
61int tds_sys_iconv_close(iconv_t cd);
│ │ │ │ -
62#else
│ │ │ │ -
63#define tds_sys_iconv_open iconv_open
│ │ │ │ -
64#define tds_sys_iconv iconv
│ │ │ │ -
65#define tds_sys_iconv_close iconv_close
│ │ │ │ -
66#endif /* !HAVE_ICONV */
│ │ │ │ -
67
│ │ │ │ -
68
│ │ │ │ -
69typedef enum
│ │ │ │ -
70{ to_server, to_client } TDS_ICONV_DIRECTION;
│ │ │ │ -
71
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
73{
│ │ │ │ -
74 const char *alias;
│ │ │ │ -
75 int canonic;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
77
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
79 unsigned int e2big:1;
│ │ │ │ -
80 unsigned int eilseq:1;
│ │ │ │ -
81 unsigned int einval:1;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
83
│ │ │ │ -
│ │ │ │ -
84typedef struct tdsiconvdir
│ │ │ │ -
85{
│ │ │ │ -
86 TDS_ENCODING charset;
│ │ │ │ -
87
│ │ │ │ -
88 iconv_t cd;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
90
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
92{
│ │ │ │ -
93 struct tdsiconvdir to, from;
│ │ │ │ -
94
│ │ │ │ -
95#define TDS_ENCODING_MEMCPY 1
│ │ │ │ -
96 unsigned int flags;
│ │ │ │ -
97
│ │ │ │ -
98 /*
│ │ │ │ -
99 * Suppress error messages that would otherwise be emitted by tds_iconv().
│ │ │ │ -
100 * Functions that process large buffers ask tds_iconv to convert it in "chunks".
│ │ │ │ -
101 * We don't want to emit spurious EILSEQ errors or multiple errors for one
│ │ │ │ -
102 * buffer. tds_iconv() checks this structure before emiting a message, and
│ │ │ │ -
103 * adds to it whenever it emits one. Callers that handle a particular situation themselves
│ │ │ │ -
104 * can prepopulate it.
│ │ │ │ -
105 */
│ │ │ │ - │ │ │ │ -
107
│ │ │ │ -
108};
│ │ │ │ -
│ │ │ │ -
109
│ │ │ │ -
110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */
│ │ │ │ -
111#ifndef ICONV_CONST
│ │ │ │ -
112# define ICONV_CONST const
│ │ │ │ -
113#endif
│ │ │ │ -
114
│ │ │ │ -
115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION io,
│ │ │ │ -
116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
│ │ │ │ -
117int tds_canonical_charset(const char *charset_name);
│ │ │ │ -
118const char *tds_canonical_charset_name(const char *charset_name);
│ │ │ │ -
119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, const char *server_charset);
│ │ │ │ -
120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int canonic_server);
│ │ │ │ -
121
│ │ │ │ -
122#ifdef __cplusplus
│ │ │ │ -
123}
│ │ │ │ -
124#endif
│ │ │ │ -
125
│ │ │ │ -
126#include <freetds/popvis.h>
│ │ │ │ -
127
│ │ │ │ -
128#endif /* _tdsguard_c6YssGkHHqKMDRUMOWVASl_ */
│ │ │ │ -
TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server)
Get a iconv info structure, allocate and initialize if needed.
Definition iconv.c:762
│ │ │ │ -
const char * tds_canonical_charset_name(const char *charset_name)
Determine canonical iconv character set name.
Definition iconv.c:986
│ │ │ │ -
size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
Wrapper around iconv(3).
Definition iconv.c:593
│ │ │ │ -
iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)
Inputs are FreeTDS canonical names, no other.
Definition iconv.c:345
│ │ │ │ -
int tds_canonical_charset(const char *charset_name)
Determine canonical iconv character set.
Definition iconv.c:974
│ │ │ │ -
Definition iconv.h:73
│ │ │ │ -
Definition iconv.h:78
│ │ │ │ -
Definition iconv.h:85
│ │ │ │ -
Definition iconv.h:92
│ │ │ │ -
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │ -
Definition tds.h:1077
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
52bool smp_is_zero(smp a);
│ │ │ │ +
53
│ │ │ │ +
55int smp_cmp(smp a, smp b);
│ │ │ │ +
56
│ │ │ │ +
58double smp_to_double(smp a);
│ │ │ │ +
59
│ │ │ │ +
61char *smp_to_string(smp a);
│ │ │ │ +
62
│ │ │ │ +
64smp smp_from_string(const char *s);
│ │ │ │ +
65
│ │ │ │ +
66#endif /* _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ */
│ │ │ │ +
Definition smp.h:26
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,17 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -iconv.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2002, 2003, 2004 Brian Bruns │ │ │ │ │ + * utils │ │ │ │ │ +smp.h │ │ │ │ │ +1/* Simple multiprecision - small MP library for testing │ │ │ │ │ +2 * Copyright (C) 2022-2024 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,163 +21,47 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_c6YssGkHHqKMDRUMOWVASl_ │ │ │ │ │ -21#define _tdsguard_c6YssGkHHqKMDRUMOWVASl_ │ │ │ │ │ +20#ifndef _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ │ │ │ │ │ +21#define _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ │ │ │ │ │ 22 │ │ │ │ │ -23#if HAVE_ICONV │ │ │ │ │ -24#include │ │ │ │ │ -25#else │ │ │ │ │ -26/* Define iconv_t for src/replacements/iconv.c. */ │ │ │ │ │ -27#undef iconv_t │ │ │ │ │ -28typedef void *iconv_t; │ │ │ │ │ -29#endif /* HAVE_ICONV */ │ │ │ │ │ -30 │ │ │ │ │ -31#if HAVE_ERRNO_H │ │ │ │ │ -32#include │ │ │ │ │ -33#endif │ │ │ │ │ -34 │ │ │ │ │ -35#if HAVE_WCHAR_H │ │ │ │ │ -36#include │ │ │ │ │ -37#endif │ │ │ │ │ +23#include │ │ │ │ │ +24#include │ │ │ │ │ +25 │ │ │ │ │ +26typedef struct { │ │ │ │ │ +27 uint16_t comp[8]; │ │ │ │ │ +28} smp; │ │ │ │ │ +29 │ │ │ │ │ +30extern const smp smp_zero; │ │ │ │ │ +31extern const smp smp_one; │ │ │ │ │ +32 │ │ │ │ │ +34smp smp_add(smp a, smp b); │ │ │ │ │ +35 │ │ │ │ │ +37smp smp_sub(smp a, smp b); │ │ │ │ │ 38 │ │ │ │ │ -39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */ │ │ │ │ │ -40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS, │ │ │ │ │ -41 have EILSEQ in a different header. On these systems, define EILSEQ │ │ │ │ │ -42 ourselves. */ │ │ │ │ │ -43#ifndef EILSEQ │ │ │ │ │ -44# define EILSEQ ENOENT │ │ │ │ │ -45#endif │ │ │ │ │ -46 │ │ │ │ │ -47#if HAVE_STDLIB_H │ │ │ │ │ -48#include │ │ │ │ │ -49#endif /* HAVE_STDLIB_H */ │ │ │ │ │ +40smp smp_not(smp a); │ │ │ │ │ +41 │ │ │ │ │ +43smp smp_negate(smp a); │ │ │ │ │ +44 │ │ │ │ │ +46smp smp_from_int(int64_t n); │ │ │ │ │ +47 │ │ │ │ │ +49bool smp_is_negative(smp a); │ │ │ │ │ 50 │ │ │ │ │ -51#include │ │ │ │ │ -52 │ │ │ │ │ -53#ifdef __cplusplus │ │ │ │ │ -54extern "C" │ │ │ │ │ -55{ │ │ │ │ │ -56#endif │ │ │ │ │ -57 │ │ │ │ │ -58#if ! HAVE_ICONV │ │ │ │ │ -59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode); │ │ │ │ │ -60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, │ │ │ │ │ -char **outbuf, size_t * outbytesleft); │ │ │ │ │ -61int tds_sys_iconv_close(iconv_t cd); │ │ │ │ │ -62#else │ │ │ │ │ -63#define tds_sys_iconv_open iconv_open │ │ │ │ │ -64#define tds_sys_iconv iconv │ │ │ │ │ -65#define tds_sys_iconv_close iconv_close │ │ │ │ │ -66#endif /* !HAVE_ICONV */ │ │ │ │ │ -67 │ │ │ │ │ -68 │ │ │ │ │ -69typedef enum │ │ │ │ │ -70{ to_server, to_client } TDS_ICONV_DIRECTION; │ │ │ │ │ -71 │ │ │ │ │ -72typedef struct _character_set_alias │ │ │ │ │ -73{ │ │ │ │ │ -74 const char *alias; │ │ │ │ │ -75 int canonic; │ │ │ │ │ -76} CHARACTER_SET_ALIAS; │ │ │ │ │ -77 │ │ │ │ │ -78typedef struct tds_errno_message_flags { │ │ │ │ │ -79 unsigned int e2big:1; │ │ │ │ │ -80 unsigned int eilseq:1; │ │ │ │ │ -81 unsigned int einval:1; │ │ │ │ │ -82} TDS_ERRNO_MESSAGE_FLAGS; │ │ │ │ │ -83 │ │ │ │ │ -84typedef struct tdsiconvdir │ │ │ │ │ -85{ │ │ │ │ │ -86 TDS_ENCODING charset; │ │ │ │ │ -87 │ │ │ │ │ -88 iconv_t cd; │ │ │ │ │ -89} TDSICONVDIR; │ │ │ │ │ -90 │ │ │ │ │ -91struct tdsiconvinfo │ │ │ │ │ -92{ │ │ │ │ │ -93 struct tdsiconvdir to, from; │ │ │ │ │ -94 │ │ │ │ │ -95#define TDS_ENCODING_MEMCPY 1 │ │ │ │ │ -96 unsigned int flags; │ │ │ │ │ -97 │ │ │ │ │ -98 /* │ │ │ │ │ -99 * Suppress error messages that would otherwise be emitted by tds_iconv(). │ │ │ │ │ -100 * Functions that process large buffers ask tds_iconv to convert it in │ │ │ │ │ -"chunks". │ │ │ │ │ -101 * We don't want to emit spurious EILSEQ errors or multiple errors for one │ │ │ │ │ -102 * buffer. tds_iconv() checks this structure before emiting a message, and │ │ │ │ │ -103 * adds to it whenever it emits one. Callers that handle a particular │ │ │ │ │ -situation themselves │ │ │ │ │ -104 * can prepopulate it. │ │ │ │ │ -105 */ │ │ │ │ │ -106 TDS_ERRNO_MESSAGE_FLAGS suppress; │ │ │ │ │ -107 │ │ │ │ │ -108}; │ │ │ │ │ -109 │ │ │ │ │ -110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */ │ │ │ │ │ -111#ifndef ICONV_CONST │ │ │ │ │ -112# define ICONV_CONST const │ │ │ │ │ -113#endif │ │ │ │ │ -114 │ │ │ │ │ -115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION │ │ │ │ │ -io, │ │ │ │ │ -116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * │ │ │ │ │ -outbytesleft); │ │ │ │ │ -117int tds_canonical_charset(const char *charset_name); │ │ │ │ │ -118const char *tds_canonical_charset_name(const char *charset_name); │ │ │ │ │ -119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, │ │ │ │ │ -const char *server_charset); │ │ │ │ │ -120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int │ │ │ │ │ -canonic_server); │ │ │ │ │ -121 │ │ │ │ │ -122#ifdef __cplusplus │ │ │ │ │ -123} │ │ │ │ │ -124#endif │ │ │ │ │ -125 │ │ │ │ │ -126#include │ │ │ │ │ -127 │ │ │ │ │ -128#endif /* _tdsguard_c6YssGkHHqKMDRUMOWVASl_ */ │ │ │ │ │ -tds_iconv_get_info │ │ │ │ │ -TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int │ │ │ │ │ -canonic_server) │ │ │ │ │ -Get a iconv info structure, allocate and initialize if needed. │ │ │ │ │ -Definition iconv.c:762 │ │ │ │ │ -tds_canonical_charset_name │ │ │ │ │ -const char * tds_canonical_charset_name(const char *charset_name) │ │ │ │ │ -Determine canonical iconv character set name. │ │ │ │ │ -Definition iconv.c:986 │ │ │ │ │ -tds_iconv │ │ │ │ │ -size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io, │ │ │ │ │ -const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) │ │ │ │ │ -Wrapper around iconv(3). │ │ │ │ │ -Definition iconv.c:593 │ │ │ │ │ -tds_sys_iconv_open │ │ │ │ │ -iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode) │ │ │ │ │ -Inputs are FreeTDS canonical names, no other. │ │ │ │ │ -Definition iconv.c:345 │ │ │ │ │ -tds_canonical_charset │ │ │ │ │ -int tds_canonical_charset(const char *charset_name) │ │ │ │ │ -Determine canonical iconv character set. │ │ │ │ │ -Definition iconv.c:974 │ │ │ │ │ -_character_set_alias │ │ │ │ │ -Definition iconv.h:73 │ │ │ │ │ -tds_errno_message_flags │ │ │ │ │ -Definition iconv.h:78 │ │ │ │ │ -tdsiconvdir │ │ │ │ │ -Definition iconv.h:85 │ │ │ │ │ -tdsiconvinfo │ │ │ │ │ -Definition iconv.h:92 │ │ │ │ │ -tds_encoding │ │ │ │ │ -Information relevant to libiconv. │ │ │ │ │ -Definition tds.h:603 │ │ │ │ │ -tds_connection │ │ │ │ │ -Definition tds.h:1077 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ +52bool smp_is_zero(smp a); │ │ │ │ │ +53 │ │ │ │ │ +55int smp_cmp(smp a, smp b); │ │ │ │ │ +56 │ │ │ │ │ +58double smp_to_double(smp a); │ │ │ │ │ +59 │ │ │ │ │ +61char *smp_to_string(smp a); │ │ │ │ │ +62 │ │ │ │ │ +64smp smp_from_string(const char *s); │ │ │ │ │ +65 │ │ │ │ │ +66#endif /* _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ */ │ │ │ │ │ +smp │ │ │ │ │ +Definition smp.h:26 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00443_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/proto.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/des.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,624 +70,68 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
proto.h
│ │ │ │ +
des.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21/*
│ │ │ │ -
22 * This file contains defines and structures strictly related to TDS protocol
│ │ │ │ -
23 */
│ │ │ │ -
24
│ │ │ │ -
│ │ │ │ -
25typedef struct tdsnumeric
│ │ │ │ -
26{
│ │ │ │ -
27 unsigned char precision;
│ │ │ │ -
28 unsigned char scale;
│ │ │ │ -
29 unsigned char array[33];
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
1#ifndef _tdsguard_frXREepoqzIh7i5y4TSoh7_
│ │ │ │ +
2#define _tdsguard_frXREepoqzIh7i5y4TSoh7_
│ │ │ │ +
3
│ │ │ │ +
4#ifdef HAVE_NETTLE
│ │ │ │ +
5#include <nettle/des.h>
│ │ │ │ +
6
│ │ │ │ +
7typedef struct des_ctx DES_KEY;
│ │ │ │ +
8#endif
│ │ │ │ +
9
│ │ │ │ +
10#include <freetds/pushvis.h>
│ │ │ │ +
11
│ │ │ │ +
12typedef uint8_t des_cblock[8];
│ │ │ │ +
13
│ │ │ │ +
14#ifndef HAVE_NETTLE
│ │ │ │ +
│ │ │ │ +
15typedef struct des_key
│ │ │ │ +
16{
│ │ │ │ +
17 uint8_t kn[16][8];
│ │ │ │ +
18 uint32_t sp[8][64];
│ │ │ │ +
19 uint8_t iperm[16][16][8];
│ │ │ │ +
20 uint8_t fperm[16][16][8];
│ │ │ │ +
21} DES_KEY;
│ │ │ │ +
│ │ │ │ +
22
│ │ │ │ +
23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key);
│ │ │ │ +
24void tds_des_encrypt(const DES_KEY * key, des_cblock block);
│ │ │ │ +
25#endif
│ │ │ │ +
26
│ │ │ │ +
27void tds_des_set_odd_parity(des_cblock key);
│ │ │ │ +
28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, uint8_t *output);
│ │ │ │ +
29
│ │ │ │ +
30#include <freetds/popvis.h>
│ │ │ │
31
│ │ │ │ -
│ │ │ │ -
32typedef struct tdsoldmoney
│ │ │ │ -
33{
│ │ │ │ -
34 TDS_INT mnyhigh;
│ │ │ │ -
35 TDS_UINT mnylow;
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
32#ifdef HAVE_NETTLE
│ │ │ │ +
33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)
│ │ │ │ +
34{
│ │ │ │ +
35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);
│ │ │ │ +
36}
│ │ │ │
37
│ │ │ │ -
│ │ │ │ -
38typedef union tdsmoney
│ │ │ │ +
38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key)
│ │ │ │
39{
│ │ │ │ - │ │ │ │ -
41 TDS_INT8 mny;
│ │ │ │ -
42} TDS_MONEY;
│ │ │ │ -
│ │ │ │ +
40 return nettle_des_set_key(dkey, user_key);
│ │ │ │ +
41}
│ │ │ │ +
42#endif
│ │ │ │
43
│ │ │ │ -
│ │ │ │ -
44typedef struct tdsmoney4
│ │ │ │ -
45{
│ │ │ │ -
46 TDS_INT mny4;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ -
49typedef struct tdsdatetime
│ │ │ │ -
50{
│ │ │ │ -
51 TDS_INT dtdays;
│ │ │ │ -
52 TDS_INT dttime;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
54
│ │ │ │ -
│ │ │ │ -
55typedef struct tdsdatetime4
│ │ │ │ -
56{
│ │ │ │ -
57 TDS_USMALLINT days;
│ │ │ │ -
58 TDS_USMALLINT minutes;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
60
│ │ │ │ -
│ │ │ │ -
61typedef struct tdsunique
│ │ │ │ -
62{
│ │ │ │ -
63 TDS_UINT Data1;
│ │ │ │ -
64 TDS_USMALLINT Data2;
│ │ │ │ -
65 TDS_USMALLINT Data3;
│ │ │ │ -
66 TDS_UCHAR Data4[8];
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
69typedef TDS_INT TDS_DATE;
│ │ │ │ -
70typedef TDS_INT TDS_TIME;
│ │ │ │ -
71
│ │ │ │ -
72typedef TDS_UINT8 TDS_BIGTIME;
│ │ │ │ -
73typedef TDS_UINT8 TDS_BIGDATETIME;
│ │ │ │ -
74
│ │ │ │ -
75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */
│ │ │ │ -
76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */
│ │ │ │ -
77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */
│ │ │ │ -
78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */
│ │ │ │ -
79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */
│ │ │ │ -
80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */
│ │ │ │ -
81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */
│ │ │ │ -
82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */
│ │ │ │ -
83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */
│ │ │ │ -
84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */
│ │ │ │ -
85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */
│ │ │ │ -
86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */
│ │ │ │ -
87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */
│ │ │ │ -
88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */
│ │ │ │ -
89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */
│ │ │ │ -
90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */
│ │ │ │ -
91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */
│ │ │ │ -
92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */
│ │ │ │ -
93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */
│ │ │ │ -
94#define TDS_ERROR_TOKEN 170 /* 0xAA */
│ │ │ │ -
95#define TDS_INFO_TOKEN 171 /* 0xAB */
│ │ │ │ -
96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */
│ │ │ │ -
97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */
│ │ │ │ -
98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \
│ │ │ │ -
99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */
│ │ │ │ -
100#define TDS_ROW_TOKEN 209 /* 0xD1 */
│ │ │ │ -
101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */
│ │ │ │ -
102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */
│ │ │ │ -
103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */
│ │ │ │ -
104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */
│ │ │ │ -
105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */
│ │ │ │ -
106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */
│ │ │ │ -
107#define TDS_EED_TOKEN 229 /* 0xE5 */
│ │ │ │ -
108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */
│ │ │ │ -
109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */
│ │ │ │ -
110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */
│ │ │ │ -
111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */
│ │ │ │ -
112#define TDS_RESULT_TOKEN 238 /* 0xEE */
│ │ │ │ -
113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */
│ │ │ │ -
114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */
│ │ │ │ -
115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */
│ │ │ │ -
116
│ │ │ │ -
117/* CURSOR support: TDS 5.0 only*/
│ │ │ │ -
118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */
│ │ │ │ -
119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */
│ │ │ │ -
120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */
│ │ │ │ -
121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */
│ │ │ │ -
122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */
│ │ │ │ -
123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */
│ │ │ │ -
124
│ │ │ │ -
125
│ │ │ │ -
126/* environment type field */
│ │ │ │ -
127#define TDS_ENV_DATABASE 1
│ │ │ │ -
128#define TDS_ENV_LANG 2
│ │ │ │ -
129#define TDS_ENV_CHARSET 3
│ │ │ │ -
130#define TDS_ENV_PACKSIZE 4
│ │ │ │ -
131#define TDS_ENV_LCID 5
│ │ │ │ -
132#define TDS_ENV_SQLCOLLATION 7
│ │ │ │ -
133#define TDS_ENV_BEGINTRANS 8
│ │ │ │ -
134#define TDS_ENV_COMMITTRANS 9
│ │ │ │ -
135#define TDS_ENV_ROLLBACKTRANS 10
│ │ │ │ -
136#define TDS_ENV_ROUTING 20
│ │ │ │ -
137
│ │ │ │ -
138/* Microsoft internal stored procedure id's */
│ │ │ │ -
139#define TDS_SP_CURSOR 1
│ │ │ │ -
140#define TDS_SP_CURSOROPEN 2
│ │ │ │ -
141#define TDS_SP_CURSORPREPARE 3
│ │ │ │ -
142#define TDS_SP_CURSOREXECUTE 4
│ │ │ │ -
143#define TDS_SP_CURSORPREPEXEC 5
│ │ │ │ -
144#define TDS_SP_CURSORUNPREPARE 6
│ │ │ │ -
145#define TDS_SP_CURSORFETCH 7
│ │ │ │ -
146#define TDS_SP_CURSOROPTION 8
│ │ │ │ -
147#define TDS_SP_CURSORCLOSE 9
│ │ │ │ -
148#define TDS_SP_EXECUTESQL 10
│ │ │ │ -
149#define TDS_SP_PREPARE 11
│ │ │ │ -
150#define TDS_SP_EXECUTE 12
│ │ │ │ -
151#define TDS_SP_PREPEXEC 13
│ │ │ │ -
152#define TDS_SP_PREPEXECRPC 14
│ │ │ │ -
153#define TDS_SP_UNPREPARE 15
│ │ │ │ -
154
│ │ │ │ -
158enum {
│ │ │ │ -
159 TDS_DONE_FINAL = 0x00
│ │ │ │ -
160 , TDS_DONE_MORE_RESULTS = 0x01
│ │ │ │ -
161 , TDS_DONE_ERROR = 0x02
│ │ │ │ -
162 , TDS_DONE_INXACT = 0x04
│ │ │ │ -
163 , TDS_DONE_PROC = 0x08
│ │ │ │ -
164 , TDS_DONE_COUNT = 0x10
│ │ │ │ -
165 , TDS_DONE_CANCELLED = 0x20
│ │ │ │ -
166 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */
│ │ │ │ -
167 , TDS_DONE_SRVERROR = 0x100
│ │ │ │ -
169 /* after the above flags, a TDS_DONE packet has a field describing the state of the transaction */
│ │ │ │ -
170 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */
│ │ │ │ -
171 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */
│ │ │ │ -
172 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */
│ │ │ │ -
173 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */
│ │ │ │ -
174 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */
│ │ │ │ -
175};
│ │ │ │ -
176
│ │ │ │ -
177/*
│ │ │ │ -
178 * <rant> Sybase does an awful job of this stuff, non null ints of size 1 2
│ │ │ │ -
179 * and 4 have there own codes but nullable ints are lumped into INTN
│ │ │ │ -
180 * sheesh! </rant>
│ │ │ │ -
181 */
│ │ │ │ -
182typedef enum
│ │ │ │ -
183{
│ │ │ │ -
184 SYBCHAR = 47, /* 0x2F */
│ │ │ │ -
185 SYBVARCHAR = 39, /* 0x27 */
│ │ │ │ -
186 SYBINTN = 38, /* 0x26 */
│ │ │ │ -
187 SYBINT1 = 48, /* 0x30 */
│ │ │ │ -
188 SYBINT2 = 52, /* 0x34 */
│ │ │ │ -
189 SYBINT4 = 56, /* 0x38 */
│ │ │ │ -
190 SYBFLT8 = 62, /* 0x3E */
│ │ │ │ -
191 SYBDATETIME = 61, /* 0x3D */
│ │ │ │ -
192 SYBBIT = 50, /* 0x32 */
│ │ │ │ -
193 SYBTEXT = 35, /* 0x23 */
│ │ │ │ -
194 SYBNTEXT = 99, /* 0x63 */
│ │ │ │ -
195 SYBIMAGE = 34, /* 0x22 */
│ │ │ │ -
196 SYBMONEY4 = 122, /* 0x7A */
│ │ │ │ -
197 SYBMONEY = 60, /* 0x3C */
│ │ │ │ -
198 SYBDATETIME4 = 58, /* 0x3A */
│ │ │ │ -
199 SYBREAL = 59, /* 0x3B */
│ │ │ │ -
200 SYBBINARY = 45, /* 0x2D */
│ │ │ │ -
201 SYBVOID = 31, /* 0x1F */
│ │ │ │ -
202 SYBVARBINARY = 37, /* 0x25 */
│ │ │ │ -
203 SYBBITN = 104, /* 0x68 */
│ │ │ │ -
204 SYBNUMERIC = 108, /* 0x6C */
│ │ │ │ -
205 SYBDECIMAL = 106, /* 0x6A */
│ │ │ │ -
206 SYBFLTN = 109, /* 0x6D */
│ │ │ │ -
207 SYBMONEYN = 110, /* 0x6E */
│ │ │ │ -
208 SYBDATETIMN = 111, /* 0x6F */
│ │ │ │ -
209
│ │ │ │ -
210/*
│ │ │ │ -
211 * MS only types
│ │ │ │ -
212 */
│ │ │ │ -
213 SYBINT8 = 127, /* 0x7F */
│ │ │ │ -
214 XSYBCHAR = 175, /* 0xAF */
│ │ │ │ -
215 XSYBVARCHAR = 167, /* 0xA7 */
│ │ │ │ -
216 XSYBNVARCHAR = 231, /* 0xE7 */
│ │ │ │ -
217 XSYBNCHAR = 239, /* 0xEF */
│ │ │ │ -
218 XSYBVARBINARY = 165, /* 0xA5 */
│ │ │ │ -
219 XSYBBINARY = 173, /* 0xAD */
│ │ │ │ -
220 SYBUNIQUE = 36, /* 0x24 */
│ │ │ │ -
221 SYBVARIANT = 98, /* 0x62 */
│ │ │ │ -
222 SYBMSUDT = 240, /* 0xF0 */
│ │ │ │ -
223 SYBMSXML = 241, /* 0xF1 */
│ │ │ │ -
224 SYBMSDATE = 40, /* 0x28 */
│ │ │ │ -
225 SYBMSTIME = 41, /* 0x29 */
│ │ │ │ -
226 SYBMSDATETIME2 = 42, /* 0x2a */
│ │ │ │ -
227 SYBMSDATETIMEOFFSET = 43,/* 0x2b */
│ │ │ │ -
228 SYBMSTABLE = 243, /* 0xF3 */
│ │ │ │ -
229
│ │ │ │ -
230/*
│ │ │ │ -
231 * Sybase only types
│ │ │ │ -
232 */
│ │ │ │ -
233 SYBNVARCHAR = 103, /* 0x67 */
│ │ │ │ -
234 SYBLONGBINARY = 225, /* 0xE1 */
│ │ │ │ -
235 SYBUINT1 = 64, /* 0x40 */
│ │ │ │ -
236 SYBUINT2 = 65, /* 0x41 */
│ │ │ │ -
237 SYBUINT4 = 66, /* 0x42 */
│ │ │ │ -
238 SYBUINT8 = 67, /* 0x43 */
│ │ │ │ -
239 SYBBLOB = 36, /* 0x24 */
│ │ │ │ -
240 SYBBOUNDARY = 104, /* 0x68 */
│ │ │ │ -
241 SYBDATE = 49, /* 0x31 */
│ │ │ │ -
242 SYBDATEN = 123, /* 0x7B */
│ │ │ │ -
243 SYB5INT8 = 191, /* 0xBF */
│ │ │ │ -
244 SYBINTERVAL = 46, /* 0x2E */
│ │ │ │ -
245 SYBLONGCHAR = 175, /* 0xAF */
│ │ │ │ -
246 SYBSENSITIVITY = 103, /* 0x67 */
│ │ │ │ -
247 SYBSINT1 = 176, /* 0xB0 */
│ │ │ │ -
248 SYBTIME = 51, /* 0x33 */
│ │ │ │ -
249 SYBTIMEN = 147, /* 0x93 */
│ │ │ │ -
250 SYBUINTN = 68, /* 0x44 */
│ │ │ │ -
251 SYBUNITEXT = 174, /* 0xAE */
│ │ │ │ -
252 SYBXML = 163, /* 0xA3 */
│ │ │ │ -
253 SYB5BIGDATETIME = 187, /* 0xBB */
│ │ │ │ -
254 SYB5BIGTIME = 188, /* 0xBC */
│ │ │ │ -
255
│ │ │ │ -
256} TDS_SERVER_TYPE;
│ │ │ │ -
257
│ │ │ │ -
258typedef enum
│ │ │ │ -
259{
│ │ │ │ -
260 USER_CHAR_TYPE = 1, /* 0x01 */
│ │ │ │ -
261 USER_VARCHAR_TYPE = 2, /* 0x02 */
│ │ │ │ -
262 USER_SYSNAME_TYPE = 18, /* 0x12 */
│ │ │ │ -
263 USER_NCHAR_TYPE = 24, /* 0x18 */
│ │ │ │ -
264 USER_NVARCHAR_TYPE = 25, /* 0x19 */
│ │ │ │ -
265 USER_UNICHAR_TYPE = 34, /* 0x22 */
│ │ │ │ -
266 USER_UNIVARCHAR_TYPE = 35, /* 0x23 */
│ │ │ │ -
267 USER_UNITEXT_TYPE = 36, /* 0x24 */
│ │ │ │ -
268} TDS_USER_TYPE;
│ │ │ │ -
269
│ │ │ │ -
270/* compute operator */
│ │ │ │ -
271#define SYBAOPCNT 75 /* 0x4B */
│ │ │ │ -
272#define SYBAOPCNTU 76 /* 0x4C, obsolete */
│ │ │ │ -
273#define SYBAOPSUM 77 /* 0x4D */
│ │ │ │ -
274#define SYBAOPSUMU 78 /* 0x4E, obsolete */
│ │ │ │ -
275#define SYBAOPAVG 79 /* 0x4F */
│ │ │ │ -
276#define SYBAOPAVGU 80 /* 0x50, obsolete */
│ │ │ │ -
277#define SYBAOPMIN 81 /* 0x51 */
│ │ │ │ -
278#define SYBAOPMAX 82 /* 0x52 */
│ │ │ │ -
279
│ │ │ │ -
280/* mssql2k compute operator */
│ │ │ │ -
281#define SYBAOPCNT_BIG 9 /* 0x09 */
│ │ │ │ -
282#define SYBAOPSTDEV 48 /* 0x30 */
│ │ │ │ -
283#define SYBAOPSTDEVP 49 /* 0x31 */
│ │ │ │ -
284#define SYBAOPVAR 50 /* 0x32 */
│ │ │ │ -
285#define SYBAOPVARP 51 /* 0x33 */
│ │ │ │ -
286#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */
│ │ │ │ -
287
│ │ │ │ -
291typedef enum
│ │ │ │ -
292{
│ │ │ │ -
293 TDS_OPT_SET = 1
│ │ │ │ -
294 , TDS_OPT_DEFAULT = 2
│ │ │ │ -
295 , TDS_OPT_LIST = 3
│ │ │ │ -
296 , TDS_OPT_INFO = 4
│ │ │ │ -
297} TDS_OPTION_CMD;
│ │ │ │ -
298
│ │ │ │ -
299typedef enum
│ │ │ │ -
300{
│ │ │ │ -
301 TDS_OPT_DATEFIRST = 1 /* 0x01 */
│ │ │ │ -
302 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */
│ │ │ │ -
303 , TDS_OPT_STAT_TIME = 3 /* 0x03 */
│ │ │ │ -
304 , TDS_OPT_STAT_IO = 4 /* 0x04 */
│ │ │ │ -
305 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */
│ │ │ │ -
306 , TDS_OPT_NATLANG = 6 /* 0x06 */
│ │ │ │ -
307 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */
│ │ │ │ -
308 , TDS_OPT_ISOLATION = 8 /* 0x08 */
│ │ │ │ -
309 , TDS_OPT_AUTHON = 9 /* 0x09 */
│ │ │ │ -
310 , TDS_OPT_CHARSET = 10 /* 0x0a */
│ │ │ │ -
311 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */
│ │ │ │ -
312 , TDS_OPT_NOEXEC = 14 /* 0x0e */
│ │ │ │ -
313 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */
│ │ │ │ -
314 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */
│ │ │ │ -
315 , TDS_OPT_PARSEONLY = 18 /* 0x12 */
│ │ │ │ -
316 , TDS_OPT_GETDATA = 20 /* 0x14 */
│ │ │ │ -
317 , TDS_OPT_NOCOUNT = 21 /* 0x15 */
│ │ │ │ -
318 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */
│ │ │ │ -
319 , TDS_OPT_FORMATONLY = 24 /* 0x18 */
│ │ │ │ -
320 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */
│ │ │ │ -
321 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */
│ │ │ │ -
322 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */
│ │ │ │ -
323 , TDS_OPT_RESTREES = 28 /* 0x1c */
│ │ │ │ -
324 , TDS_OPT_IDENTITYON = 29 /* 0x1d */
│ │ │ │ -
325 , TDS_OPT_CURREAD = 30 /* 0x1e */
│ │ │ │ -
326 , TDS_OPT_CURWRITE = 31 /* 0x1f */
│ │ │ │ -
327 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */
│ │ │ │ -
328 , TDS_OPT_AUTHOFF = 33 /* 0x21 */
│ │ │ │ -
329 , TDS_OPT_ANSINULL = 34 /* 0x22 */
│ │ │ │ -
330 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */
│ │ │ │ -
331 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */
│ │ │ │ -
332 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */
│ │ │ │ -
333 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */
│ │ │ │ -
334} TDS_OPTION;
│ │ │ │ -
335
│ │ │ │ -
336enum {
│ │ │ │ -
337 TDS_OPT_ARITHOVERFLOW = 0x01,
│ │ │ │ -
338 TDS_OPT_NUMERICTRUNC = 0x02
│ │ │ │ -
339};
│ │ │ │ -
340
│ │ │ │ -
341enum TDS_OPT_DATEFIRST_CHOICE
│ │ │ │ -
342{
│ │ │ │ -
343 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =
│ │ │ │ -
344 6, TDS_OPT_SUNDAY = 7
│ │ │ │ -
345};
│ │ │ │ -
346
│ │ │ │ -
347enum TDS_OPT_DATEFORMAT_CHOICE
│ │ │ │ -
348{
│ │ │ │ -
349 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
│ │ │ │ -
350};
│ │ │ │ -
351enum TDS_OPT_ISOLATION_CHOICE
│ │ │ │ -
352{
│ │ │ │ -
353 TDS_OPT_LEVEL0 = 0,
│ │ │ │ -
354 TDS_OPT_LEVEL1 = 1,
│ │ │ │ -
355 TDS_OPT_LEVEL2 = 2,
│ │ │ │ -
356 TDS_OPT_LEVEL3 = 3
│ │ │ │ -
357};
│ │ │ │ -
358
│ │ │ │ -
359
│ │ │ │ -
360typedef enum tds_packet_type
│ │ │ │ -
361{
│ │ │ │ -
362 TDS_QUERY = 1,
│ │ │ │ -
363 TDS_LOGIN = 2,
│ │ │ │ -
364 TDS_RPC = 3,
│ │ │ │ -
365 TDS_REPLY = 4,
│ │ │ │ -
366 TDS_CANCEL = 6,
│ │ │ │ -
367 TDS_BULK = 7,
│ │ │ │ -
368 TDS7_TRANS = 14, /* transaction management */
│ │ │ │ -
369 TDS_NORMAL = 15,
│ │ │ │ -
370 TDS7_LOGIN = 16,
│ │ │ │ -
371 TDS7_AUTH = 17,
│ │ │ │ -
372 TDS71_PRELOGIN = 18,
│ │ │ │ -
373 TDS72_SMP = 0x53
│ │ │ │ -
374} TDS_PACKET_TYPE;
│ │ │ │ -
375
│ │ │ │ -
│ │ │ │ -
379typedef struct
│ │ │ │ -
380{
│ │ │ │ -
381 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */
│ │ │ │ -
382 TDS_USMALLINT flags;
│ │ │ │ -
383 TDS_UCHAR charset_id; /* or zero */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
385
│ │ │ │ -
│ │ │ │ -
389typedef struct
│ │ │ │ -
390{
│ │ │ │ -
391 TDS_UCHAR type;
│ │ │ │ -
392 TDS_UCHAR status;
│ │ │ │ -
393 TDS_USMALLINT length;
│ │ │ │ -
394 TDS_USMALLINT spid;
│ │ │ │ -
395 TDS_UCHAR packet_id;
│ │ │ │ -
396 TDS_UCHAR window;
│ │ │ │ -
397} TDS_HEADER;
│ │ │ │ -
│ │ │ │ -
398
│ │ │ │ -
399enum {
│ │ │ │ -
400 TDS_STATUS_EOM = 1,
│ │ │ │ -
401 TDS_STATUS_RESETCONNECTION = 8,
│ │ │ │ -
402};
│ │ │ │ -
403
│ │ │ │ -
│ │ │ │ -
407typedef struct
│ │ │ │ -
408{
│ │ │ │ -
409 TDS_UCHAR signature; /* TDS72_SMP */
│ │ │ │ -
410 TDS_UCHAR type;
│ │ │ │ -
411 TDS_USMALLINT sid;
│ │ │ │ -
412 TDS_UINT size;
│ │ │ │ -
413 TDS_UINT seq;
│ │ │ │ -
414 TDS_UINT wnd;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
416
│ │ │ │ -
417enum {
│ │ │ │ -
418 TDS_SMP_SYN = 1,
│ │ │ │ -
419 TDS_SMP_ACK = 2,
│ │ │ │ -
420 TDS_SMP_FIN = 4,
│ │ │ │ -
421 TDS_SMP_DATA = 8,
│ │ │ │ -
422};
│ │ │ │ -
423
│ │ │ │ -
424/* SF stands for "sort flag" */
│ │ │ │ -
425#define TDS_SF_BIN (TDS_USMALLINT) 0x100
│ │ │ │ -
426#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080
│ │ │ │ -
427#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040
│ │ │ │ -
428#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020
│ │ │ │ -
429#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010
│ │ │ │ -
430
│ │ │ │ -
431/* UT stands for user type */
│ │ │ │ -
432#define TDS_UT_TIMESTAMP 80
│ │ │ │ -
433
│ │ │ │ -
434
│ │ │ │ -
435/* mssql login options flags */
│ │ │ │ -
436enum option_flag1_values {
│ │ │ │ -
437 TDS_BYTE_ORDER_X86 = 0,
│ │ │ │ -
438 TDS_CHARSET_ASCII = 0,
│ │ │ │ -
439 TDS_DUMPLOAD_ON = 0,
│ │ │ │ -
440 TDS_FLOAT_IEEE_754 = 0,
│ │ │ │ -
441 TDS_INIT_DB_WARN = 0,
│ │ │ │ -
442 TDS_SET_LANG_OFF = 0,
│ │ │ │ -
443 TDS_USE_DB_SILENT = 0,
│ │ │ │ -
444 TDS_BYTE_ORDER_68000 = 0x01,
│ │ │ │ -
445 TDS_CHARSET_EBDDIC = 0x02,
│ │ │ │ -
446 TDS_FLOAT_VAX = 0x04,
│ │ │ │ -
447 TDS_FLOAT_ND5000 = 0x08,
│ │ │ │ -
448 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */
│ │ │ │ -
449 TDS_USE_DB_NOTIFY = 0x20,
│ │ │ │ -
450 TDS_INIT_DB_FATAL = 0x40,
│ │ │ │ -
451 TDS_SET_LANG_ON = 0x80
│ │ │ │ -
452};
│ │ │ │ -
453
│ │ │ │ -
454enum option_flag2_values {
│ │ │ │ -
455 TDS_INIT_LANG_WARN = 0,
│ │ │ │ -
456 TDS_INTEGRATED_SECURTY_OFF = 0,
│ │ │ │ -
457 TDS_ODBC_OFF = 0,
│ │ │ │ -
458 TDS_USER_NORMAL = 0, /* SQL Server login */
│ │ │ │ -
459 TDS_INIT_LANG_REQUIRED = 0x01,
│ │ │ │ -
460 TDS_ODBC_ON = 0x02,
│ │ │ │ -
461 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */
│ │ │ │ -
462 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */
│ │ │ │ -
463 TDS_USER_SERVER = 0x10, /* reserved */
│ │ │ │ -
464 TDS_USER_REMUSER = 0x20, /* DQ login */
│ │ │ │ -
465 TDS_USER_SQLREPL = 0x40, /* replication login */
│ │ │ │ -
466 TDS_INTEGRATED_SECURITY_ON = 0x80
│ │ │ │ -
467};
│ │ │ │ -
468
│ │ │ │ -
469enum option_flag3_values {
│ │ │ │ -
470 TDS_RESTRICTED_COLLATION = 0,
│ │ │ │ -
471 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */
│ │ │ │ -
472 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */
│ │ │ │ -
473 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */
│ │ │ │ -
474 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */
│ │ │ │ -
475 TDS_EXTENSION = 0x10, /* TDS 7.4 */
│ │ │ │ -
476};
│ │ │ │ -
477
│ │ │ │ -
478enum type_flags {
│ │ │ │ -
479 TDS_OLEDB_ON = 0x10,
│ │ │ │ -
480 TDS_READONLY_INTENT = 0x20,
│ │ │ │ -
481};
│ │ │ │ -
482
│ │ │ │ -
483/* Sybase dynamic types */
│ │ │ │ -
484enum dynamic_types {
│ │ │ │ -
485 TDS_DYN_PREPARE = 0x01,
│ │ │ │ -
486 TDS_DYN_EXEC = 0x02,
│ │ │ │ -
487 TDS_DYN_DEALLOC = 0x04,
│ │ │ │ -
488 TDS_DYN_EXEC_IMMED = 0x08,
│ │ │ │ -
489 TDS_DYN_PROCNAME = 0x10,
│ │ │ │ -
490 TDS_DYN_ACK = 0x20,
│ │ │ │ -
491 TDS_DYN_DESCIN = 0x40,
│ │ │ │ -
492 TDS_DYN_DESCOUT = 0x80,
│ │ │ │ -
493};
│ │ │ │ -
494
│ │ │ │ -
495/* http://jtds.sourceforge.net/apiCursors.html */
│ │ │ │ -
496/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */
│ │ │ │ -
497enum {
│ │ │ │ -
498 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */
│ │ │ │ -
499 TDS_CUR_TYPE_DYNAMIC = 0x0002,
│ │ │ │ -
500 TDS_CUR_TYPE_FORWARD = 0x0004,
│ │ │ │ -
501 TDS_CUR_TYPE_STATIC = 0x0008,
│ │ │ │ -
502 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,
│ │ │ │ -
503 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,
│ │ │ │ -
504 TDS_CUR_TYPE_AUTO_FETCH = 0x2000
│ │ │ │ -
505};
│ │ │ │ -
506
│ │ │ │ -
507enum {
│ │ │ │ -
508 TDS_CUR_CONCUR_READ_ONLY = 1,
│ │ │ │ -
509 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,
│ │ │ │ -
510 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */
│ │ │ │ -
511 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8
│ │ │ │ -
512};
│ │ │ │ -
513
│ │ │ │ -
514/* TDS 4/5 login*/
│ │ │ │ -
515#define TDS_MAXNAME 30 /* maximum login name lenghts */
│ │ │ │ -
516#define TDS_PROGNLEN 10 /* maximum program lenght */
│ │ │ │ -
517#define TDS_PKTLEN 6 /* maximum packet lenght in login */
│ │ │ │ -
518
│ │ │ │ -
519/* TDS 5 login security flags */
│ │ │ │ -
520enum {
│ │ │ │ -
521 TDS5_SEC_LOG_ENCRYPT = 1,
│ │ │ │ -
522 TDS5_SEC_LOG_CHALLENGE = 2,
│ │ │ │ -
523 TDS5_SEC_LOG_LABELS = 4,
│ │ │ │ -
524 TDS5_SEC_LOG_APPDEFINED = 8,
│ │ │ │ -
525 TDS5_SEC_LOG_SECSESS = 16,
│ │ │ │ -
526 TDS5_SEC_LOG_ENCRYPT2 = 32,
│ │ │ │ -
527 TDS5_SEC_LOG_ENCRYPT3 = 128,
│ │ │ │ -
528};
│ │ │ │ -
529
│ │ │ │ -
531enum {
│ │ │ │ -
532 TDS5_MSG_SEC_ENCRYPT = 1,
│ │ │ │ -
533 TDS5_MSG_SEC_LOGPWD = 2,
│ │ │ │ -
534 TDS5_MSG_SEC_REMPWD = 3,
│ │ │ │ -
535 TDS5_MSG_SEC_CHALLENGE = 4,
│ │ │ │ -
536 TDS5_MSG_SEC_RESPONSE = 5,
│ │ │ │ -
537 TDS5_MSG_SEC_GETLABEL = 6,
│ │ │ │ -
538 TDS5_MSG_SEC_LABEL = 7,
│ │ │ │ -
539 TDS5_MSG_SQL_TBLNAME = 8,
│ │ │ │ -
540 TDS5_MSG_GW_RESERVED = 9,
│ │ │ │ -
541 TDS5_MSG_OMNI_CAPABILITIES = 10,
│ │ │ │ -
542 TDS5_MSG_SEC_OPAQUE = 11,
│ │ │ │ -
543 TDS5_MSG_HAFAILOVER = 12,
│ │ │ │ -
544 TDS5_MSG_EMPTY = 13,
│ │ │ │ -
547 TDS5_MSG_SEC_ENCRYPT2 = 14,
│ │ │ │ -
548 TDS5_MSG_SEC_LOGPWD2 = 15,
│ │ │ │ -
549 TDS5_MSG_SEC_SUP_CIPHER = 16,
│ │ │ │ -
550 TDS5_MSG_MIG_REQ = 17,
│ │ │ │ -
552 TDS5_MSG_MIG_SYNC = 18,
│ │ │ │ -
553 TDS5_MSG_MIG_CONT = 19,
│ │ │ │ -
554 TDS5_MSG_MIG_IGN = 20,
│ │ │ │ -
555 TDS5_MSG_MIG_FAIL = 21,
│ │ │ │ -
557 TDS5_MSG_SEC_REMPWD2 = 22,
│ │ │ │ -
558 TDS5_MSG_MIG_RESUME = 23,
│ │ │ │ -
559 TDS5_MSG_SEC_ENCRYPT3 = 30,
│ │ │ │ -
560 TDS5_MSG_SEC_LOGPWD3 = 31,
│ │ │ │ -
561 TDS5_MSG_SEC_REMPWD3 = 32,
│ │ │ │ -
562 TDS5_MSG_DR_MAP = 33,
│ │ │ │ -
563};
│ │ │ │ -
564
│ │ │ │ -
575enum {
│ │ │ │ -
576 TDS5_SEC_SECSESS = 1,
│ │ │ │ -
577 TDS5_SEC_FORWARD = 2,
│ │ │ │ -
578 TDS5_SEC_SIGN = 3,
│ │ │ │ -
579 TDS5_SEC_OTHER = 4,
│ │ │ │ -
580};
│ │ │ │ -
581
│ │ │ │ -
585enum {
│ │ │ │ -
586 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,
│ │ │ │ -
587 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,
│ │ │ │ -
588 TDS5_SEC_DELEGATION = 0x4,
│ │ │ │ -
589 TDS5_SEC_INTEGRITY = 0x8,
│ │ │ │ -
590 TDS5_SEC_CONFIDENTIALITY = 0x10,
│ │ │ │ -
591 TDS5_SEC_DETECT_REPLAY = 0x20,
│ │ │ │ -
592 TDS5_SEC_DETECT_SEQUENCE = 0x40,
│ │ │ │ -
593 TDS5_SEC_DATA_ORIGIN = 0x80,
│ │ │ │ -
594 TDS5_SEC_CHANNEL_BINDING = 0x100,
│ │ │ │ -
595};
│ │ │ │ -
596
│ │ │ │ -
597enum {
│ │ │ │ -
598 TDS5_SEC_VERSION = 50,
│ │ │ │ -
599};
│ │ │ │ -
600
│ │ │ │ -
601/* MS encryption byte (pre login) */
│ │ │ │ -
602enum {
│ │ │ │ -
603 TDS7_ENCRYPT_OFF,
│ │ │ │ -
604 TDS7_ENCRYPT_ON,
│ │ │ │ -
605 TDS7_ENCRYPT_NOT_SUP,
│ │ │ │ -
606 TDS7_ENCRYPT_REQ,
│ │ │ │ -
607};
│ │ │ │ -
Definition proto.h:26
│ │ │ │ -
Definition proto.h:33
│ │ │ │ -
Definition proto.h:39
│ │ │ │ -
Definition proto.h:45
│ │ │ │ -
Definition proto.h:50
│ │ │ │ -
Definition proto.h:56
│ │ │ │ -
Definition proto.h:62
│ │ │ │ -
TDS 7.1 collation information.
Definition proto.h:380
│ │ │ │ -
TDS packet header.
Definition proto.h:390
│ │ │ │ -
TDS 7.2 SMP packet header.
Definition proto.h:408
│ │ │ │ +
44#endif /* !_tdsguard_frXREepoqzIh7i5y4TSoh7_ */
│ │ │ │ +
Definition des.h:16
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,608 +1,57 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -proto.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21/* │ │ │ │ │ -22 * This file contains defines and structures strictly related to TDS protocol │ │ │ │ │ -23 */ │ │ │ │ │ -24 │ │ │ │ │ -25typedef struct tdsnumeric │ │ │ │ │ -26{ │ │ │ │ │ -27 unsigned char precision; │ │ │ │ │ -28 unsigned char scale; │ │ │ │ │ -29 unsigned char array[33]; │ │ │ │ │ -30} TDS_NUMERIC; │ │ │ │ │ + * utils │ │ │ │ │ +des.h │ │ │ │ │ +1#ifndef _tdsguard_frXREepoqzIh7i5y4TSoh7_ │ │ │ │ │ +2#define _tdsguard_frXREepoqzIh7i5y4TSoh7_ │ │ │ │ │ +3 │ │ │ │ │ +4#ifdef HAVE_NETTLE │ │ │ │ │ +5#include │ │ │ │ │ +6 │ │ │ │ │ +7typedef struct des_ctx DES_KEY; │ │ │ │ │ +8#endif │ │ │ │ │ +9 │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12typedef uint8_t des_cblock[8]; │ │ │ │ │ +13 │ │ │ │ │ +14#ifndef HAVE_NETTLE │ │ │ │ │ +15typedef struct des_key │ │ │ │ │ +16{ │ │ │ │ │ +17 uint8_t kn[16][8]; │ │ │ │ │ +18 uint32_t sp[8][64]; │ │ │ │ │ +19 uint8_t iperm[16][16][8]; │ │ │ │ │ +20 uint8_t fperm[16][16][8]; │ │ │ │ │ +21} DES_KEY; │ │ │ │ │ +22 │ │ │ │ │ +23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key); │ │ │ │ │ +24void tds_des_encrypt(const DES_KEY * key, des_cblock block); │ │ │ │ │ +25#endif │ │ │ │ │ +26 │ │ │ │ │ +27void tds_des_set_odd_parity(des_cblock key); │ │ │ │ │ +28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, │ │ │ │ │ +uint8_t *output); │ │ │ │ │ +29 │ │ │ │ │ +30#include │ │ │ │ │ 31 │ │ │ │ │ -32typedef struct tdsoldmoney │ │ │ │ │ -33{ │ │ │ │ │ -34 TDS_INT mnyhigh; │ │ │ │ │ -35 TDS_UINT mnylow; │ │ │ │ │ -36} TDS_OLD_MONEY; │ │ │ │ │ +32#ifdef HAVE_NETTLE │ │ │ │ │ +33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block) │ │ │ │ │ +34{ │ │ │ │ │ +35 nettle_des_encrypt(key, sizeof(des_cblock), block, block); │ │ │ │ │ +36} │ │ │ │ │ 37 │ │ │ │ │ -38typedef union tdsmoney │ │ │ │ │ +38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key) │ │ │ │ │ 39{ │ │ │ │ │ -40 TDS_OLD_MONEY tdsoldmoney; │ │ │ │ │ -41 TDS_INT8 mny; │ │ │ │ │ -42} TDS_MONEY; │ │ │ │ │ +40 return nettle_des_set_key(dkey, user_key); │ │ │ │ │ +41} │ │ │ │ │ +42#endif │ │ │ │ │ 43 │ │ │ │ │ -44typedef struct tdsmoney4 │ │ │ │ │ -45{ │ │ │ │ │ -46 TDS_INT mny4; │ │ │ │ │ -47} TDS_MONEY4; │ │ │ │ │ -48 │ │ │ │ │ -49typedef struct tdsdatetime │ │ │ │ │ -50{ │ │ │ │ │ -51 TDS_INT dtdays; │ │ │ │ │ -52 TDS_INT dttime; │ │ │ │ │ -53} TDS_DATETIME; │ │ │ │ │ -54 │ │ │ │ │ -55typedef struct tdsdatetime4 │ │ │ │ │ -56{ │ │ │ │ │ -57 TDS_USMALLINT days; │ │ │ │ │ -58 TDS_USMALLINT minutes; │ │ │ │ │ -59} TDS_DATETIME4; │ │ │ │ │ -60 │ │ │ │ │ -61typedef struct tdsunique │ │ │ │ │ -62{ │ │ │ │ │ -63 TDS_UINT Data1; │ │ │ │ │ -64 TDS_USMALLINT Data2; │ │ │ │ │ -65 TDS_USMALLINT Data3; │ │ │ │ │ -66 TDS_UCHAR Data4[8]; │ │ │ │ │ -67} TDS_UNIQUE; │ │ │ │ │ -68 │ │ │ │ │ -69typedef TDS_INT TDS_DATE; │ │ │ │ │ -70typedef TDS_INT TDS_TIME; │ │ │ │ │ -71 │ │ │ │ │ -72typedef TDS_UINT8 TDS_BIGTIME; │ │ │ │ │ -73typedef TDS_UINT8 TDS_BIGDATETIME; │ │ │ │ │ -74 │ │ │ │ │ -75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */ │ │ │ │ │ -76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */ │ │ │ │ │ -77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */ │ │ │ │ │ -78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */ │ │ │ │ │ -79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */ │ │ │ │ │ -80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */ │ │ │ │ │ -81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */ │ │ │ │ │ -82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */ │ │ │ │ │ -83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */ │ │ │ │ │ -84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */ │ │ │ │ │ -85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */ │ │ │ │ │ -86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */ │ │ │ │ │ -87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */ │ │ │ │ │ -88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */ │ │ │ │ │ -89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */ │ │ │ │ │ -90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */ │ │ │ │ │ -91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */ │ │ │ │ │ -92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */ │ │ │ │ │ -93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */ │ │ │ │ │ -94#define TDS_ERROR_TOKEN 170 /* 0xAA */ │ │ │ │ │ -95#define TDS_INFO_TOKEN 171 /* 0xAB */ │ │ │ │ │ -96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */ │ │ │ │ │ -97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */ │ │ │ │ │ -98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \ │ │ │ │ │ -99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */ │ │ │ │ │ -100#define TDS_ROW_TOKEN 209 /* 0xD1 */ │ │ │ │ │ -101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */ │ │ │ │ │ -102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */ │ │ │ │ │ -103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */ │ │ │ │ │ -104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */ │ │ │ │ │ -105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */ │ │ │ │ │ -106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */ │ │ │ │ │ -107#define TDS_EED_TOKEN 229 /* 0xE5 */ │ │ │ │ │ -108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */ │ │ │ │ │ -109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */ │ │ │ │ │ -110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */ │ │ │ │ │ -111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */ │ │ │ │ │ -112#define TDS_RESULT_TOKEN 238 /* 0xEE */ │ │ │ │ │ -113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */ │ │ │ │ │ -114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */ │ │ │ │ │ -115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */ │ │ │ │ │ -116 │ │ │ │ │ -117/* CURSOR support: TDS 5.0 only*/ │ │ │ │ │ -118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */ │ │ │ │ │ -119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */ │ │ │ │ │ -120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */ │ │ │ │ │ -121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */ │ │ │ │ │ -122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */ │ │ │ │ │ -123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */ │ │ │ │ │ -124 │ │ │ │ │ -125 │ │ │ │ │ -126/* environment type field */ │ │ │ │ │ -127#define TDS_ENV_DATABASE 1 │ │ │ │ │ -128#define TDS_ENV_LANG 2 │ │ │ │ │ -129#define TDS_ENV_CHARSET 3 │ │ │ │ │ -130#define TDS_ENV_PACKSIZE 4 │ │ │ │ │ -131#define TDS_ENV_LCID 5 │ │ │ │ │ -132#define TDS_ENV_SQLCOLLATION 7 │ │ │ │ │ -133#define TDS_ENV_BEGINTRANS 8 │ │ │ │ │ -134#define TDS_ENV_COMMITTRANS 9 │ │ │ │ │ -135#define TDS_ENV_ROLLBACKTRANS 10 │ │ │ │ │ -136#define TDS_ENV_ROUTING 20 │ │ │ │ │ -137 │ │ │ │ │ -138/* Microsoft internal stored procedure id's */ │ │ │ │ │ -139#define TDS_SP_CURSOR 1 │ │ │ │ │ -140#define TDS_SP_CURSOROPEN 2 │ │ │ │ │ -141#define TDS_SP_CURSORPREPARE 3 │ │ │ │ │ -142#define TDS_SP_CURSOREXECUTE 4 │ │ │ │ │ -143#define TDS_SP_CURSORPREPEXEC 5 │ │ │ │ │ -144#define TDS_SP_CURSORUNPREPARE 6 │ │ │ │ │ -145#define TDS_SP_CURSORFETCH 7 │ │ │ │ │ -146#define TDS_SP_CURSOROPTION 8 │ │ │ │ │ -147#define TDS_SP_CURSORCLOSE 9 │ │ │ │ │ -148#define TDS_SP_EXECUTESQL 10 │ │ │ │ │ -149#define TDS_SP_PREPARE 11 │ │ │ │ │ -150#define TDS_SP_EXECUTE 12 │ │ │ │ │ -151#define TDS_SP_PREPEXEC 13 │ │ │ │ │ -152#define TDS_SP_PREPEXECRPC 14 │ │ │ │ │ -153#define TDS_SP_UNPREPARE 15 │ │ │ │ │ -154 │ │ │ │ │ -158enum { │ │ │ │ │ -159 TDS_DONE_FINAL = 0x00 │ │ │ │ │ -160 , TDS_DONE_MORE_RESULTS = 0x01 │ │ │ │ │ -161 , TDS_DONE_ERROR = 0x02 │ │ │ │ │ -162 , TDS_DONE_INXACT = 0x04 │ │ │ │ │ -163 , TDS_DONE_PROC = 0x08 │ │ │ │ │ -164 , TDS_DONE_COUNT = 0x10 │ │ │ │ │ -165 , TDS_DONE_CANCELLED = 0x20 │ │ │ │ │ -166 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */ │ │ │ │ │ -167 , TDS_DONE_SRVERROR = 0x100 │ │ │ │ │ -169 /* after the above flags, a TDS_DONE packet has a field describing the │ │ │ │ │ -state of the transaction */ │ │ │ │ │ -170 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */ │ │ │ │ │ -171 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */ │ │ │ │ │ -172 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */ │ │ │ │ │ -173 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */ │ │ │ │ │ -174 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */ │ │ │ │ │ -175}; │ │ │ │ │ -176 │ │ │ │ │ -177/* │ │ │ │ │ -178 * Sybase does an awful job of this stuff, non null ints of size 1 2 │ │ │ │ │ -179 * and 4 have there own codes but nullable ints are lumped into INTN │ │ │ │ │ -180 * sheesh! │ │ │ │ │ -181 */ │ │ │ │ │ -182typedef enum │ │ │ │ │ -183{ │ │ │ │ │ -184 SYBCHAR = 47, /* 0x2F */ │ │ │ │ │ -185 SYBVARCHAR = 39, /* 0x27 */ │ │ │ │ │ -186 SYBINTN = 38, /* 0x26 */ │ │ │ │ │ -187 SYBINT1 = 48, /* 0x30 */ │ │ │ │ │ -188 SYBINT2 = 52, /* 0x34 */ │ │ │ │ │ -189 SYBINT4 = 56, /* 0x38 */ │ │ │ │ │ -190 SYBFLT8 = 62, /* 0x3E */ │ │ │ │ │ -191 SYBDATETIME = 61, /* 0x3D */ │ │ │ │ │ -192 SYBBIT = 50, /* 0x32 */ │ │ │ │ │ -193 SYBTEXT = 35, /* 0x23 */ │ │ │ │ │ -194 SYBNTEXT = 99, /* 0x63 */ │ │ │ │ │ -195 SYBIMAGE = 34, /* 0x22 */ │ │ │ │ │ -196 SYBMONEY4 = 122, /* 0x7A */ │ │ │ │ │ -197 SYBMONEY = 60, /* 0x3C */ │ │ │ │ │ -198 SYBDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ -199 SYBREAL = 59, /* 0x3B */ │ │ │ │ │ -200 SYBBINARY = 45, /* 0x2D */ │ │ │ │ │ -201 SYBVOID = 31, /* 0x1F */ │ │ │ │ │ -202 SYBVARBINARY = 37, /* 0x25 */ │ │ │ │ │ -203 SYBBITN = 104, /* 0x68 */ │ │ │ │ │ -204 SYBNUMERIC = 108, /* 0x6C */ │ │ │ │ │ -205 SYBDECIMAL = 106, /* 0x6A */ │ │ │ │ │ -206 SYBFLTN = 109, /* 0x6D */ │ │ │ │ │ -207 SYBMONEYN = 110, /* 0x6E */ │ │ │ │ │ -208 SYBDATETIMN = 111, /* 0x6F */ │ │ │ │ │ -209 │ │ │ │ │ -210/* │ │ │ │ │ -211 * MS only types │ │ │ │ │ -212 */ │ │ │ │ │ -213 SYBINT8 = 127, /* 0x7F */ │ │ │ │ │ -214 XSYBCHAR = 175, /* 0xAF */ │ │ │ │ │ -215 XSYBVARCHAR = 167, /* 0xA7 */ │ │ │ │ │ -216 XSYBNVARCHAR = 231, /* 0xE7 */ │ │ │ │ │ -217 XSYBNCHAR = 239, /* 0xEF */ │ │ │ │ │ -218 XSYBVARBINARY = 165, /* 0xA5 */ │ │ │ │ │ -219 XSYBBINARY = 173, /* 0xAD */ │ │ │ │ │ -220 SYBUNIQUE = 36, /* 0x24 */ │ │ │ │ │ -221 SYBVARIANT = 98, /* 0x62 */ │ │ │ │ │ -222 SYBMSUDT = 240, /* 0xF0 */ │ │ │ │ │ -223 SYBMSXML = 241, /* 0xF1 */ │ │ │ │ │ -224 SYBMSDATE = 40, /* 0x28 */ │ │ │ │ │ -225 SYBMSTIME = 41, /* 0x29 */ │ │ │ │ │ -226 SYBMSDATETIME2 = 42, /* 0x2a */ │ │ │ │ │ -227 SYBMSDATETIMEOFFSET = 43,/* 0x2b */ │ │ │ │ │ -228 SYBMSTABLE = 243, /* 0xF3 */ │ │ │ │ │ -229 │ │ │ │ │ -230/* │ │ │ │ │ -231 * Sybase only types │ │ │ │ │ -232 */ │ │ │ │ │ -233 SYBNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ -234 SYBLONGBINARY = 225, /* 0xE1 */ │ │ │ │ │ -235 SYBUINT1 = 64, /* 0x40 */ │ │ │ │ │ -236 SYBUINT2 = 65, /* 0x41 */ │ │ │ │ │ -237 SYBUINT4 = 66, /* 0x42 */ │ │ │ │ │ -238 SYBUINT8 = 67, /* 0x43 */ │ │ │ │ │ -239 SYBBLOB = 36, /* 0x24 */ │ │ │ │ │ -240 SYBBOUNDARY = 104, /* 0x68 */ │ │ │ │ │ -241 SYBDATE = 49, /* 0x31 */ │ │ │ │ │ -242 SYBDATEN = 123, /* 0x7B */ │ │ │ │ │ -243 SYB5INT8 = 191, /* 0xBF */ │ │ │ │ │ -244 SYBINTERVAL = 46, /* 0x2E */ │ │ │ │ │ -245 SYBLONGCHAR = 175, /* 0xAF */ │ │ │ │ │ -246 SYBSENSITIVITY = 103, /* 0x67 */ │ │ │ │ │ -247 SYBSINT1 = 176, /* 0xB0 */ │ │ │ │ │ -248 SYBTIME = 51, /* 0x33 */ │ │ │ │ │ -249 SYBTIMEN = 147, /* 0x93 */ │ │ │ │ │ -250 SYBUINTN = 68, /* 0x44 */ │ │ │ │ │ -251 SYBUNITEXT = 174, /* 0xAE */ │ │ │ │ │ -252 SYBXML = 163, /* 0xA3 */ │ │ │ │ │ -253 SYB5BIGDATETIME = 187, /* 0xBB */ │ │ │ │ │ -254 SYB5BIGTIME = 188, /* 0xBC */ │ │ │ │ │ -255 │ │ │ │ │ -256} TDS_SERVER_TYPE; │ │ │ │ │ -257 │ │ │ │ │ -258typedef enum │ │ │ │ │ -259{ │ │ │ │ │ -260 USER_CHAR_TYPE = 1, /* 0x01 */ │ │ │ │ │ -261 USER_VARCHAR_TYPE = 2, /* 0x02 */ │ │ │ │ │ -262 USER_SYSNAME_TYPE = 18, /* 0x12 */ │ │ │ │ │ -263 USER_NCHAR_TYPE = 24, /* 0x18 */ │ │ │ │ │ -264 USER_NVARCHAR_TYPE = 25, /* 0x19 */ │ │ │ │ │ -265 USER_UNICHAR_TYPE = 34, /* 0x22 */ │ │ │ │ │ -266 USER_UNIVARCHAR_TYPE = 35, /* 0x23 */ │ │ │ │ │ -267 USER_UNITEXT_TYPE = 36, /* 0x24 */ │ │ │ │ │ -268} TDS_USER_TYPE; │ │ │ │ │ -269 │ │ │ │ │ -270/* compute operator */ │ │ │ │ │ -271#define SYBAOPCNT 75 /* 0x4B */ │ │ │ │ │ -272#define SYBAOPCNTU 76 /* 0x4C, obsolete */ │ │ │ │ │ -273#define SYBAOPSUM 77 /* 0x4D */ │ │ │ │ │ -274#define SYBAOPSUMU 78 /* 0x4E, obsolete */ │ │ │ │ │ -275#define SYBAOPAVG 79 /* 0x4F */ │ │ │ │ │ -276#define SYBAOPAVGU 80 /* 0x50, obsolete */ │ │ │ │ │ -277#define SYBAOPMIN 81 /* 0x51 */ │ │ │ │ │ -278#define SYBAOPMAX 82 /* 0x52 */ │ │ │ │ │ -279 │ │ │ │ │ -280/* mssql2k compute operator */ │ │ │ │ │ -281#define SYBAOPCNT_BIG 9 /* 0x09 */ │ │ │ │ │ -282#define SYBAOPSTDEV 48 /* 0x30 */ │ │ │ │ │ -283#define SYBAOPSTDEVP 49 /* 0x31 */ │ │ │ │ │ -284#define SYBAOPVAR 50 /* 0x32 */ │ │ │ │ │ -285#define SYBAOPVARP 51 /* 0x33 */ │ │ │ │ │ -286#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */ │ │ │ │ │ -287 │ │ │ │ │ -291typedef enum │ │ │ │ │ -292{ │ │ │ │ │ -293 TDS_OPT_SET = 1 │ │ │ │ │ -294 , TDS_OPT_DEFAULT = 2 │ │ │ │ │ -295 , TDS_OPT_LIST = 3 │ │ │ │ │ -296 , TDS_OPT_INFO = 4 │ │ │ │ │ -297} TDS_OPTION_CMD; │ │ │ │ │ -298 │ │ │ │ │ -299typedef enum │ │ │ │ │ -300{ │ │ │ │ │ -301 TDS_OPT_DATEFIRST = 1 /* 0x01 */ │ │ │ │ │ -302 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */ │ │ │ │ │ -303 , TDS_OPT_STAT_TIME = 3 /* 0x03 */ │ │ │ │ │ -304 , TDS_OPT_STAT_IO = 4 /* 0x04 */ │ │ │ │ │ -305 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */ │ │ │ │ │ -306 , TDS_OPT_NATLANG = 6 /* 0x06 */ │ │ │ │ │ -307 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */ │ │ │ │ │ -308 , TDS_OPT_ISOLATION = 8 /* 0x08 */ │ │ │ │ │ -309 , TDS_OPT_AUTHON = 9 /* 0x09 */ │ │ │ │ │ -310 , TDS_OPT_CHARSET = 10 /* 0x0a */ │ │ │ │ │ -311 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */ │ │ │ │ │ -312 , TDS_OPT_NOEXEC = 14 /* 0x0e */ │ │ │ │ │ -313 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */ │ │ │ │ │ -314 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */ │ │ │ │ │ -315 , TDS_OPT_PARSEONLY = 18 /* 0x12 */ │ │ │ │ │ -316 , TDS_OPT_GETDATA = 20 /* 0x14 */ │ │ │ │ │ -317 , TDS_OPT_NOCOUNT = 21 /* 0x15 */ │ │ │ │ │ -318 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */ │ │ │ │ │ -319 , TDS_OPT_FORMATONLY = 24 /* 0x18 */ │ │ │ │ │ -320 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */ │ │ │ │ │ -321 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */ │ │ │ │ │ -322 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */ │ │ │ │ │ -323 , TDS_OPT_RESTREES = 28 /* 0x1c */ │ │ │ │ │ -324 , TDS_OPT_IDENTITYON = 29 /* 0x1d */ │ │ │ │ │ -325 , TDS_OPT_CURREAD = 30 /* 0x1e */ │ │ │ │ │ -326 , TDS_OPT_CURWRITE = 31 /* 0x1f */ │ │ │ │ │ -327 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */ │ │ │ │ │ -328 , TDS_OPT_AUTHOFF = 33 /* 0x21 */ │ │ │ │ │ -329 , TDS_OPT_ANSINULL = 34 /* 0x22 */ │ │ │ │ │ -330 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */ │ │ │ │ │ -331 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */ │ │ │ │ │ -332 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */ │ │ │ │ │ -333 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */ │ │ │ │ │ -334} TDS_OPTION; │ │ │ │ │ -335 │ │ │ │ │ -336enum { │ │ │ │ │ -337 TDS_OPT_ARITHOVERFLOW = 0x01, │ │ │ │ │ -338 TDS_OPT_NUMERICTRUNC = 0x02 │ │ │ │ │ -339}; │ │ │ │ │ -340 │ │ │ │ │ -341enum TDS_OPT_DATEFIRST_CHOICE │ │ │ │ │ -342{ │ │ │ │ │ -343 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_ │ │ │ │ │ -THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY = │ │ │ │ │ -344 6, TDS_OPT_SUNDAY = 7 │ │ │ │ │ -345}; │ │ │ │ │ -346 │ │ │ │ │ -347enum TDS_OPT_DATEFORMAT_CHOICE │ │ │ │ │ -348{ │ │ │ │ │ -349 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM │ │ │ │ │ -= 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6 │ │ │ │ │ -350}; │ │ │ │ │ -351enum TDS_OPT_ISOLATION_CHOICE │ │ │ │ │ -352{ │ │ │ │ │ -353 TDS_OPT_LEVEL0 = 0, │ │ │ │ │ -354 TDS_OPT_LEVEL1 = 1, │ │ │ │ │ -355 TDS_OPT_LEVEL2 = 2, │ │ │ │ │ -356 TDS_OPT_LEVEL3 = 3 │ │ │ │ │ -357}; │ │ │ │ │ -358 │ │ │ │ │ -359 │ │ │ │ │ -360typedef enum tds_packet_type │ │ │ │ │ -361{ │ │ │ │ │ -362 TDS_QUERY = 1, │ │ │ │ │ -363 TDS_LOGIN = 2, │ │ │ │ │ -364 TDS_RPC = 3, │ │ │ │ │ -365 TDS_REPLY = 4, │ │ │ │ │ -366 TDS_CANCEL = 6, │ │ │ │ │ -367 TDS_BULK = 7, │ │ │ │ │ -368 TDS7_TRANS = 14, /* transaction management */ │ │ │ │ │ -369 TDS_NORMAL = 15, │ │ │ │ │ -370 TDS7_LOGIN = 16, │ │ │ │ │ -371 TDS7_AUTH = 17, │ │ │ │ │ -372 TDS71_PRELOGIN = 18, │ │ │ │ │ -373 TDS72_SMP = 0x53 │ │ │ │ │ -374} TDS_PACKET_TYPE; │ │ │ │ │ -375 │ │ │ │ │ -379typedef struct │ │ │ │ │ -380{ │ │ │ │ │ -381 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */ │ │ │ │ │ -382 TDS_USMALLINT flags; │ │ │ │ │ -383 TDS_UCHAR charset_id; /* or zero */ │ │ │ │ │ -384} TDS71_COLLATION; │ │ │ │ │ -385 │ │ │ │ │ -389typedef struct │ │ │ │ │ -390{ │ │ │ │ │ -391 TDS_UCHAR type; │ │ │ │ │ -392 TDS_UCHAR status; │ │ │ │ │ -393 TDS_USMALLINT length; │ │ │ │ │ -394 TDS_USMALLINT spid; │ │ │ │ │ -395 TDS_UCHAR packet_id; │ │ │ │ │ -396 TDS_UCHAR window; │ │ │ │ │ -397} TDS_HEADER; │ │ │ │ │ -398 │ │ │ │ │ -399enum { │ │ │ │ │ -400 TDS_STATUS_EOM = 1, │ │ │ │ │ -401 TDS_STATUS_RESETCONNECTION = 8, │ │ │ │ │ -402}; │ │ │ │ │ -403 │ │ │ │ │ -407typedef struct │ │ │ │ │ -408{ │ │ │ │ │ -409 TDS_UCHAR signature; /* TDS72_SMP */ │ │ │ │ │ -410 TDS_UCHAR type; │ │ │ │ │ -411 TDS_USMALLINT sid; │ │ │ │ │ -412 TDS_UINT size; │ │ │ │ │ -413 TDS_UINT seq; │ │ │ │ │ -414 TDS_UINT wnd; │ │ │ │ │ -415} TDS72_SMP_HEADER; │ │ │ │ │ -416 │ │ │ │ │ -417enum { │ │ │ │ │ -418 TDS_SMP_SYN = 1, │ │ │ │ │ -419 TDS_SMP_ACK = 2, │ │ │ │ │ -420 TDS_SMP_FIN = 4, │ │ │ │ │ -421 TDS_SMP_DATA = 8, │ │ │ │ │ -422}; │ │ │ │ │ -423 │ │ │ │ │ -424/* SF stands for "sort flag" */ │ │ │ │ │ -425#define TDS_SF_BIN (TDS_USMALLINT) 0x100 │ │ │ │ │ -426#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080 │ │ │ │ │ -427#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040 │ │ │ │ │ -428#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020 │ │ │ │ │ -429#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010 │ │ │ │ │ -430 │ │ │ │ │ -431/* UT stands for user type */ │ │ │ │ │ -432#define TDS_UT_TIMESTAMP 80 │ │ │ │ │ -433 │ │ │ │ │ -434 │ │ │ │ │ -435/* mssql login options flags */ │ │ │ │ │ -436enum option_flag1_values { │ │ │ │ │ -437 TDS_BYTE_ORDER_X86 = 0, │ │ │ │ │ -438 TDS_CHARSET_ASCII = 0, │ │ │ │ │ -439 TDS_DUMPLOAD_ON = 0, │ │ │ │ │ -440 TDS_FLOAT_IEEE_754 = 0, │ │ │ │ │ -441 TDS_INIT_DB_WARN = 0, │ │ │ │ │ -442 TDS_SET_LANG_OFF = 0, │ │ │ │ │ -443 TDS_USE_DB_SILENT = 0, │ │ │ │ │ -444 TDS_BYTE_ORDER_68000 = 0x01, │ │ │ │ │ -445 TDS_CHARSET_EBDDIC = 0x02, │ │ │ │ │ -446 TDS_FLOAT_VAX = 0x04, │ │ │ │ │ -447 TDS_FLOAT_ND5000 = 0x08, │ │ │ │ │ -448 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */ │ │ │ │ │ -449 TDS_USE_DB_NOTIFY = 0x20, │ │ │ │ │ -450 TDS_INIT_DB_FATAL = 0x40, │ │ │ │ │ -451 TDS_SET_LANG_ON = 0x80 │ │ │ │ │ -452}; │ │ │ │ │ -453 │ │ │ │ │ -454enum option_flag2_values { │ │ │ │ │ -455 TDS_INIT_LANG_WARN = 0, │ │ │ │ │ -456 TDS_INTEGRATED_SECURTY_OFF = 0, │ │ │ │ │ -457 TDS_ODBC_OFF = 0, │ │ │ │ │ -458 TDS_USER_NORMAL = 0, /* SQL Server login */ │ │ │ │ │ -459 TDS_INIT_LANG_REQUIRED = 0x01, │ │ │ │ │ -460 TDS_ODBC_ON = 0x02, │ │ │ │ │ -461 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */ │ │ │ │ │ -462 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */ │ │ │ │ │ -463 TDS_USER_SERVER = 0x10, /* reserved */ │ │ │ │ │ -464 TDS_USER_REMUSER = 0x20, /* DQ login */ │ │ │ │ │ -465 TDS_USER_SQLREPL = 0x40, /* replication login */ │ │ │ │ │ -466 TDS_INTEGRATED_SECURITY_ON = 0x80 │ │ │ │ │ -467}; │ │ │ │ │ -468 │ │ │ │ │ -469enum option_flag3_values { │ │ │ │ │ -470 TDS_RESTRICTED_COLLATION = 0, │ │ │ │ │ -471 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */ │ │ │ │ │ -472 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */ │ │ │ │ │ -473 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */ │ │ │ │ │ -474 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */ │ │ │ │ │ -475 TDS_EXTENSION = 0x10, /* TDS 7.4 */ │ │ │ │ │ -476}; │ │ │ │ │ -477 │ │ │ │ │ -478enum type_flags { │ │ │ │ │ -479 TDS_OLEDB_ON = 0x10, │ │ │ │ │ -480 TDS_READONLY_INTENT = 0x20, │ │ │ │ │ -481}; │ │ │ │ │ -482 │ │ │ │ │ -483/* Sybase dynamic types */ │ │ │ │ │ -484enum dynamic_types { │ │ │ │ │ -485 TDS_DYN_PREPARE = 0x01, │ │ │ │ │ -486 TDS_DYN_EXEC = 0x02, │ │ │ │ │ -487 TDS_DYN_DEALLOC = 0x04, │ │ │ │ │ -488 TDS_DYN_EXEC_IMMED = 0x08, │ │ │ │ │ -489 TDS_DYN_PROCNAME = 0x10, │ │ │ │ │ -490 TDS_DYN_ACK = 0x20, │ │ │ │ │ -491 TDS_DYN_DESCIN = 0x40, │ │ │ │ │ -492 TDS_DYN_DESCOUT = 0x80, │ │ │ │ │ -493}; │ │ │ │ │ -494 │ │ │ │ │ -495/* http://jtds.sourceforge.net/apiCursors.html */ │ │ │ │ │ -496/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */ │ │ │ │ │ -497enum { │ │ │ │ │ -498 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */ │ │ │ │ │ -499 TDS_CUR_TYPE_DYNAMIC = 0x0002, │ │ │ │ │ -500 TDS_CUR_TYPE_FORWARD = 0x0004, │ │ │ │ │ -501 TDS_CUR_TYPE_STATIC = 0x0008, │ │ │ │ │ -502 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010, │ │ │ │ │ -503 TDS_CUR_TYPE_PARAMETERIZED = 0x1000, │ │ │ │ │ -504 TDS_CUR_TYPE_AUTO_FETCH = 0x2000 │ │ │ │ │ -505}; │ │ │ │ │ -506 │ │ │ │ │ -507enum { │ │ │ │ │ -508 TDS_CUR_CONCUR_READ_ONLY = 1, │ │ │ │ │ -509 TDS_CUR_CONCUR_SCROLL_LOCKS = 2, │ │ │ │ │ -510 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */ │ │ │ │ │ -511 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8 │ │ │ │ │ -512}; │ │ │ │ │ -513 │ │ │ │ │ -514/* TDS 4/5 login*/ │ │ │ │ │ -515#define TDS_MAXNAME 30 /* maximum login name lenghts */ │ │ │ │ │ -516#define TDS_PROGNLEN 10 /* maximum program lenght */ │ │ │ │ │ -517#define TDS_PKTLEN 6 /* maximum packet lenght in login */ │ │ │ │ │ -518 │ │ │ │ │ -519/* TDS 5 login security flags */ │ │ │ │ │ -520enum { │ │ │ │ │ -521 TDS5_SEC_LOG_ENCRYPT = 1, │ │ │ │ │ -522 TDS5_SEC_LOG_CHALLENGE = 2, │ │ │ │ │ -523 TDS5_SEC_LOG_LABELS = 4, │ │ │ │ │ -524 TDS5_SEC_LOG_APPDEFINED = 8, │ │ │ │ │ -525 TDS5_SEC_LOG_SECSESS = 16, │ │ │ │ │ -526 TDS5_SEC_LOG_ENCRYPT2 = 32, │ │ │ │ │ -527 TDS5_SEC_LOG_ENCRYPT3 = 128, │ │ │ │ │ -528}; │ │ │ │ │ -529 │ │ │ │ │ -531enum { │ │ │ │ │ -532 TDS5_MSG_SEC_ENCRYPT = 1, │ │ │ │ │ -533 TDS5_MSG_SEC_LOGPWD = 2, │ │ │ │ │ -534 TDS5_MSG_SEC_REMPWD = 3, │ │ │ │ │ -535 TDS5_MSG_SEC_CHALLENGE = 4, │ │ │ │ │ -536 TDS5_MSG_SEC_RESPONSE = 5, │ │ │ │ │ -537 TDS5_MSG_SEC_GETLABEL = 6, │ │ │ │ │ -538 TDS5_MSG_SEC_LABEL = 7, │ │ │ │ │ -539 TDS5_MSG_SQL_TBLNAME = 8, │ │ │ │ │ -540 TDS5_MSG_GW_RESERVED = 9, │ │ │ │ │ -541 TDS5_MSG_OMNI_CAPABILITIES = 10, │ │ │ │ │ -542 TDS5_MSG_SEC_OPAQUE = 11, │ │ │ │ │ -543 TDS5_MSG_HAFAILOVER = 12, │ │ │ │ │ -544 TDS5_MSG_EMPTY = 13, │ │ │ │ │ -547 TDS5_MSG_SEC_ENCRYPT2 = 14, │ │ │ │ │ -548 TDS5_MSG_SEC_LOGPWD2 = 15, │ │ │ │ │ -549 TDS5_MSG_SEC_SUP_CIPHER = 16, │ │ │ │ │ -550 TDS5_MSG_MIG_REQ = 17, │ │ │ │ │ -552 TDS5_MSG_MIG_SYNC = 18, │ │ │ │ │ -553 TDS5_MSG_MIG_CONT = 19, │ │ │ │ │ -554 TDS5_MSG_MIG_IGN = 20, │ │ │ │ │ -555 TDS5_MSG_MIG_FAIL = 21, │ │ │ │ │ -557 TDS5_MSG_SEC_REMPWD2 = 22, │ │ │ │ │ -558 TDS5_MSG_MIG_RESUME = 23, │ │ │ │ │ -559 TDS5_MSG_SEC_ENCRYPT3 = 30, │ │ │ │ │ -560 TDS5_MSG_SEC_LOGPWD3 = 31, │ │ │ │ │ -561 TDS5_MSG_SEC_REMPWD3 = 32, │ │ │ │ │ -562 TDS5_MSG_DR_MAP = 33, │ │ │ │ │ -563}; │ │ │ │ │ -564 │ │ │ │ │ -575enum { │ │ │ │ │ -576 TDS5_SEC_SECSESS = 1, │ │ │ │ │ -577 TDS5_SEC_FORWARD = 2, │ │ │ │ │ -578 TDS5_SEC_SIGN = 3, │ │ │ │ │ -579 TDS5_SEC_OTHER = 4, │ │ │ │ │ -580}; │ │ │ │ │ -581 │ │ │ │ │ -585enum { │ │ │ │ │ -586 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1, │ │ │ │ │ -587 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2, │ │ │ │ │ -588 TDS5_SEC_DELEGATION = 0x4, │ │ │ │ │ -589 TDS5_SEC_INTEGRITY = 0x8, │ │ │ │ │ -590 TDS5_SEC_CONFIDENTIALITY = 0x10, │ │ │ │ │ -591 TDS5_SEC_DETECT_REPLAY = 0x20, │ │ │ │ │ -592 TDS5_SEC_DETECT_SEQUENCE = 0x40, │ │ │ │ │ -593 TDS5_SEC_DATA_ORIGIN = 0x80, │ │ │ │ │ -594 TDS5_SEC_CHANNEL_BINDING = 0x100, │ │ │ │ │ -595}; │ │ │ │ │ -596 │ │ │ │ │ -597enum { │ │ │ │ │ -598 TDS5_SEC_VERSION = 50, │ │ │ │ │ -599}; │ │ │ │ │ -600 │ │ │ │ │ -601/* MS encryption byte (pre login) */ │ │ │ │ │ -602enum { │ │ │ │ │ -603 TDS7_ENCRYPT_OFF, │ │ │ │ │ -604 TDS7_ENCRYPT_ON, │ │ │ │ │ -605 TDS7_ENCRYPT_NOT_SUP, │ │ │ │ │ -606 TDS7_ENCRYPT_REQ, │ │ │ │ │ -607}; │ │ │ │ │ -tdsnumeric │ │ │ │ │ -Definition proto.h:26 │ │ │ │ │ -tdsoldmoney │ │ │ │ │ -Definition proto.h:33 │ │ │ │ │ -tdsmoney │ │ │ │ │ -Definition proto.h:39 │ │ │ │ │ -tdsmoney4 │ │ │ │ │ -Definition proto.h:45 │ │ │ │ │ -tdsdatetime │ │ │ │ │ -Definition proto.h:50 │ │ │ │ │ -tdsdatetime4 │ │ │ │ │ -Definition proto.h:56 │ │ │ │ │ -tdsunique │ │ │ │ │ -Definition proto.h:62 │ │ │ │ │ -TDS71_COLLATION │ │ │ │ │ -TDS 7.1 collation information. │ │ │ │ │ -Definition proto.h:380 │ │ │ │ │ -TDS_HEADER │ │ │ │ │ -TDS packet header. │ │ │ │ │ -Definition proto.h:390 │ │ │ │ │ -TDS72_SMP_HEADER │ │ │ │ │ -TDS 7.2 SMP packet header. │ │ │ │ │ -Definition proto.h:408 │ │ │ │ │ +44#endif /* !_tdsguard_frXREepoqzIh7i5y4TSoh7_ */ │ │ │ │ │ +des_key │ │ │ │ │ +Definition des.h:16 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00446_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/bool.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils/bjoern-utf8.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,64 +70,52 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
bool.h
│ │ │ │ +
bjoern-utf8.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2015 Frediano Ziglio
│ │ │ │ +
1/*
│ │ │ │ +
2 * Copyright (c) 2008-2010 Bjoern Hoehrmann <bjoern@hoehrmann.de>
│ │ │ │
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ +
4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
│ │ │ │ +
5 *
│ │ │ │ +
6 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
│ │ │ │ +
7 *
│ │ │ │ +
8 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
│ │ │ │ +
9 *
│ │ │ │ +
10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.
│ │ │ │ +
11 */
│ │ │ │ +
12
│ │ │ │ +
13#include <tds_sysdep_public.h>
│ │ │ │ +
14
│ │ │ │ +
15#define UTF8_ACCEPT 0
│ │ │ │ +
16#define UTF8_REJECT 12
│ │ │ │ +
17
│ │ │ │ +
18extern const uint8_t utf8_table[];
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_hKphrpWEELXHaaZkiGPQUV_
│ │ │ │ -
21#define _tdsguard_hKphrpWEELXHaaZkiGPQUV_
│ │ │ │ -
22
│ │ │ │ -
23#ifndef __cplusplus
│ │ │ │ +
20static inline uint32_t
│ │ │ │ +
21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)
│ │ │ │ +
22{
│ │ │ │ +
23 uint32_t type = utf8_table[byte];
│ │ │ │
24
│ │ │ │ -
25#ifdef HAVE_STDBOOL_H
│ │ │ │ -
26
│ │ │ │ -
27#include <stdbool.h>
│ │ │ │ +
25 *codep = (*state != UTF8_ACCEPT) ?
│ │ │ │ +
26 (byte & 0x3fu) | (*codep << 6) :
│ │ │ │ +
27 (0xff >> type) & (byte);
│ │ │ │
28
│ │ │ │ -
29#else
│ │ │ │ -
30
│ │ │ │ -
31#undef true
│ │ │ │ -
32#undef false
│ │ │ │ -
33#undef bool
│ │ │ │ -
34typedef unsigned char freetds_boolean_t;
│ │ │ │ -
35#define bool freetds_boolean_t
│ │ │ │ -
36#define true 1
│ │ │ │ -
37#define false 0
│ │ │ │ -
38
│ │ │ │ -
39#endif
│ │ │ │ -
40
│ │ │ │ -
41#endif
│ │ │ │ -
42
│ │ │ │ -
43#endif /* _tdsguard_hKphrpWEELXHaaZkiGPQUV_ */
│ │ │ │ +
29 *state = utf8_table[256 + *state + type];
│ │ │ │ +
30 return *state;
│ │ │ │ +
31}
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,52 +1,53 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -bool.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2015 Frediano Ziglio │ │ │ │ │ + * utils │ │ │ │ │ +bjoern-utf8.h │ │ │ │ │ +1/* │ │ │ │ │ +2 * Copyright (c) 2008-2010 Bjoern Hoehrmann │ │ │ │ │ 3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ +4 * Permission is hereby granted, free of charge, to any person obtaining a │ │ │ │ │ +copy of this software and associated documentation files (the "Software"), to │ │ │ │ │ +deal in the Software without restriction, including without limitation the │ │ │ │ │ +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or │ │ │ │ │ +sell copies of the Software, and to permit persons to whom the Software is │ │ │ │ │ +furnished to do so, subject to the following conditions: │ │ │ │ │ +5 * │ │ │ │ │ +6 * The above copyright notice and this permission notice shall be included in │ │ │ │ │ +all copies or substantial portions of the Software. │ │ │ │ │ +7 * │ │ │ │ │ +8 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR │ │ │ │ │ +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, │ │ │ │ │ +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE │ │ │ │ │ +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER │ │ │ │ │ +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, │ │ │ │ │ +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE │ │ │ │ │ +SOFTWARE. │ │ │ │ │ +9 * │ │ │ │ │ +10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. │ │ │ │ │ +11 */ │ │ │ │ │ +12 │ │ │ │ │ +13#include │ │ │ │ │ +14 │ │ │ │ │ +15#define UTF8_ACCEPT 0 │ │ │ │ │ +16#define UTF8_REJECT 12 │ │ │ │ │ +17 │ │ │ │ │ +18extern const uint8_t utf8_table[]; │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_hKphrpWEELXHaaZkiGPQUV_ │ │ │ │ │ -21#define _tdsguard_hKphrpWEELXHaaZkiGPQUV_ │ │ │ │ │ -22 │ │ │ │ │ -23#ifndef __cplusplus │ │ │ │ │ +20static inline uint32_t │ │ │ │ │ +21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte) │ │ │ │ │ +22{ │ │ │ │ │ +23 uint32_t type = utf8_table[byte]; │ │ │ │ │ 24 │ │ │ │ │ -25#ifdef HAVE_STDBOOL_H │ │ │ │ │ -26 │ │ │ │ │ -27#include │ │ │ │ │ +25 *codep = (*state != UTF8_ACCEPT) ? │ │ │ │ │ +26 (byte & 0x3fu) | (*codep << 6) : │ │ │ │ │ +27 (0xff >> type) & (byte); │ │ │ │ │ 28 │ │ │ │ │ -29#else │ │ │ │ │ -30 │ │ │ │ │ -31#undef true │ │ │ │ │ -32#undef false │ │ │ │ │ -33#undef bool │ │ │ │ │ -34typedef unsigned char freetds_boolean_t; │ │ │ │ │ -35#define bool freetds_boolean_t │ │ │ │ │ -36#define true 1 │ │ │ │ │ -37#define false 0 │ │ │ │ │ -38 │ │ │ │ │ -39#endif │ │ │ │ │ -40 │ │ │ │ │ -41#endif │ │ │ │ │ -42 │ │ │ │ │ -43#endif /* _tdsguard_hKphrpWEELXHaaZkiGPQUV_ */ │ │ │ │ │ +29 *state = utf8_table[256 + *state + type]; │ │ │ │ │ +30 return *state; │ │ │ │ │ +31} │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00449_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/checks.h Source File │ │ │ │ +FreeTDS API: include/freetds/replacements/readpassphrase.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,99 +70,84 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
checks.h
│ │ │ │ +
readpassphrase.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2004 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
1/* OPENBSD ORIGINAL: include/readpassphrase.h */
│ │ │ │ +
2
│ │ │ │ +
3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */
│ │ │ │ +
4
│ │ │ │ +
5/*
│ │ │ │ +
6 * Copyright (c) 2000 Todd C. Miller <Todd.Miller@courtesan.com>
│ │ │ │ +
7 * All rights reserved.
│ │ │ │
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_
│ │ │ │ -
21#define _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_
│ │ │ │ -
22
│ │ │ │ -
23#include <freetds/pushvis.h>
│ │ │ │ -
24
│ │ │ │ -
25#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
26#define CHECK_STRUCT_EXTRA(func,s) func(s)
│ │ │ │ -
27#else
│ │ │ │ -
28#define CHECK_STRUCT_EXTRA(func,s)
│ │ │ │ -
29#endif
│ │ │ │ -
30
│ │ │ │ -
31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)
│ │ │ │ -
32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_extra,ctx)
│ │ │ │ -
33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)
│ │ │ │ -
34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_extra,column)
│ │ │ │ -
35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
│ │ │ │ -
36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
│ │ │ │ -
37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_extra,cursor)
│ │ │ │ -
38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_extra,dynamic)
│ │ │ │ -
39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_extra,freeze)
│ │ │ │ -
40#define CHECK_CONN_EXTRA(conn)
│ │ │ │ -
41
│ │ │ │ -
42#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
43void tds_check_tds_extra(const TDSSOCKET * tds);
│ │ │ │ -
44void tds_check_context_extra(const TDSCONTEXT * ctx);
│ │ │ │ -
45void tds_check_env_extra(const TDSENV * env);
│ │ │ │ -
46void tds_check_column_extra(const TDSCOLUMN * column);
│ │ │ │ -
47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);
│ │ │ │ -
48void tds_check_cursor_extra(const TDSCURSOR * cursor);
│ │ │ │ -
49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);
│ │ │ │ -
50void tds_check_freeze_extra(const TDSFREEZE * freeze);
│ │ │ │ -
51#endif
│ │ │ │ -
52
│ │ │ │ -
53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS
│ │ │ │ -
54# include <valgrind/memcheck.h>
│ │ │ │ -
55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)
│ │ │ │ -
56#else
│ │ │ │ -
57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)
│ │ │ │ -
58#endif
│ │ │ │ -
59
│ │ │ │ -
60#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
61void tds_extra_assert_check(const char *fn, int line, int cond, const char *cond_str);
│ │ │ │ -
62# define tds_extra_assert(cond) \
│ │ │ │ -
63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)
│ │ │ │ -
64#else
│ │ │ │ -
65# define tds_extra_assert(cond) do { } while(0)
│ │ │ │ -
66#endif
│ │ │ │ -
67
│ │ │ │ -
68#include <freetds/popvis.h>
│ │ │ │ -
69
│ │ │ │ -
70#endif /* _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ */
│ │ │ │ -
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ -
Hold information for any results.
Definition tds.h:754
│ │ │ │ -
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ -
Current environment as reported by the server.
Definition tds.h:948
│ │ │ │ -
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ -
Definition tds.h:1584
│ │ │ │ +
9 * Redistribution and use in source and binary forms, with or without
│ │ │ │ +
10 * modification, are permitted provided that the following conditions
│ │ │ │ +
11 * are met:
│ │ │ │ +
12 * 1. Redistributions of source code must retain the above copyright
│ │ │ │ +
13 * notice, this list of conditions and the following disclaimer.
│ │ │ │ +
14 * 2. Redistributions in binary form must reproduce the above copyright
│ │ │ │ +
15 * notice, this list of conditions and the following disclaimer in the
│ │ │ │ +
16 * documentation and/or other materials provided with the distribution.
│ │ │ │ +
17 * 3. The name of the author may not be used to endorse or promote products
│ │ │ │ +
18 * derived from this software without specific prior written permission.
│ │ │ │ +
19 *
│ │ │ │ +
20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
│ │ │ │ +
21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
│ │ │ │ +
22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
│ │ │ │ +
23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
│ │ │ │ +
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
│ │ │ │ +
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
│ │ │ │ +
26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
│ │ │ │ +
27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
│ │ │ │ +
28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
│ │ │ │ +
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
│ │ │ │ +
30 */
│ │ │ │ +
31
│ │ │ │ +
32#ifndef _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_
│ │ │ │ +
33#define _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_
│ │ │ │ +
34
│ │ │ │ +
35#ifndef _freetds_config_h_
│ │ │ │ +
36#error should include config.h before
│ │ │ │ +
37#endif
│ │ │ │ +
38
│ │ │ │ +
39#ifdef HAVE_READPASSPHRASE
│ │ │ │ +
40
│ │ │ │ +
41# include <readpassphrase.h>
│ │ │ │ +
42
│ │ │ │ +
43#else /* !HAVE_READPASSPHRASE */
│ │ │ │ +
44
│ │ │ │ +
45#include <freetds/pushvis.h>
│ │ │ │ +
46
│ │ │ │ +
47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
│ │ │ │ +
48#define RPP_ECHO_ON 0x01 /* Leave echo on. */
│ │ │ │ +
49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
│ │ │ │ +
50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
│ │ │ │ +
51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
│ │ │ │ +
52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
│ │ │ │ +
53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
│ │ │ │ +
54
│ │ │ │ +
55#undef readpassphrase
│ │ │ │ +
56char * tds_readpassphrase(const char *, char *, size_t, int);
│ │ │ │ +
57#define readpassphrase tds_readpassphrase
│ │ │ │ +
58
│ │ │ │ +
59#include <freetds/popvis.h>
│ │ │ │ +
60
│ │ │ │ +
61#endif /* !HAVE_READPASSPHRASE */
│ │ │ │ +
62
│ │ │ │ +
63#endif /* !_tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,109 +1,74 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -checks.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2004 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ + * replacements │ │ │ │ │ +readpassphrase.h │ │ │ │ │ +1/* OPENBSD ORIGINAL: include/readpassphrase.h */ │ │ │ │ │ +2 │ │ │ │ │ +3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */ │ │ │ │ │ +4 │ │ │ │ │ +5/* │ │ │ │ │ +6 * Copyright (c) 2000 Todd C. Miller │ │ │ │ │ +7 * All rights reserved. │ │ │ │ │ 8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ │ │ │ │ │ -21#define _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ │ │ │ │ │ -22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -26#define CHECK_STRUCT_EXTRA(func,s) func(s) │ │ │ │ │ -27#else │ │ │ │ │ -28#define CHECK_STRUCT_EXTRA(func,s) │ │ │ │ │ -29#endif │ │ │ │ │ -30 │ │ │ │ │ -31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds) │ │ │ │ │ -32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_ │ │ │ │ │ -extra,ctx) │ │ │ │ │ -33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env) │ │ │ │ │ -34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_ │ │ │ │ │ -extra,column) │ │ │ │ │ -35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_ │ │ │ │ │ -resultinfo_extra,res_info) │ │ │ │ │ -36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_ │ │ │ │ │ -resultinfo_extra,res_info) │ │ │ │ │ -37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_ │ │ │ │ │ -extra,cursor) │ │ │ │ │ -38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_ │ │ │ │ │ -extra,dynamic) │ │ │ │ │ -39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_ │ │ │ │ │ -extra,freeze) │ │ │ │ │ -40#define CHECK_CONN_EXTRA(conn) │ │ │ │ │ -41 │ │ │ │ │ -42#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -43void tds_check_tds_extra(const TDSSOCKET * tds); │ │ │ │ │ -44void tds_check_context_extra(const TDSCONTEXT * ctx); │ │ │ │ │ -45void tds_check_env_extra(const TDSENV * env); │ │ │ │ │ -46void tds_check_column_extra(const TDSCOLUMN * column); │ │ │ │ │ -47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info); │ │ │ │ │ -48void tds_check_cursor_extra(const TDSCURSOR * cursor); │ │ │ │ │ -49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic); │ │ │ │ │ -50void tds_check_freeze_extra(const TDSFREEZE * freeze); │ │ │ │ │ -51#endif │ │ │ │ │ -52 │ │ │ │ │ -53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS │ │ │ │ │ -54# include │ │ │ │ │ -55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len) │ │ │ │ │ -56#else │ │ │ │ │ -57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0) │ │ │ │ │ -58#endif │ │ │ │ │ -59 │ │ │ │ │ -60#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -61void tds_extra_assert_check(const char *fn, int line, int cond, const char │ │ │ │ │ -*cond_str); │ │ │ │ │ -62# define tds_extra_assert(cond) \ │ │ │ │ │ -63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond) │ │ │ │ │ -64#else │ │ │ │ │ -65# define tds_extra_assert(cond) do { } while(0) │ │ │ │ │ -66#endif │ │ │ │ │ -67 │ │ │ │ │ -68#include │ │ │ │ │ -69 │ │ │ │ │ -70#endif /* _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ */ │ │ │ │ │ -tds_column │ │ │ │ │ -Metadata about columns in regular and compute rows. │ │ │ │ │ -Definition tds.h:674 │ │ │ │ │ -tds_result_info │ │ │ │ │ -Hold information for any results. │ │ │ │ │ -Definition tds.h:754 │ │ │ │ │ -tds_cursor │ │ │ │ │ -Holds information about a cursor. │ │ │ │ │ -Definition tds.h:922 │ │ │ │ │ -tds_env │ │ │ │ │ -Current environment as reported by the server. │ │ │ │ │ -Definition tds.h:948 │ │ │ │ │ -tds_dynamic │ │ │ │ │ -Holds information for a dynamic (also called prepared) query. │ │ │ │ │ -Definition tds.h:962 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ -tds_freeze │ │ │ │ │ -Definition tds.h:1584 │ │ │ │ │ +9 * Redistribution and use in source and binary forms, with or without │ │ │ │ │ +10 * modification, are permitted provided that the following conditions │ │ │ │ │ +11 * are met: │ │ │ │ │ +12 * 1. Redistributions of source code must retain the above copyright │ │ │ │ │ +13 * notice, this list of conditions and the following disclaimer. │ │ │ │ │ +14 * 2. Redistributions in binary form must reproduce the above copyright │ │ │ │ │ +15 * notice, this list of conditions and the following disclaimer in the │ │ │ │ │ +16 * documentation and/or other materials provided with the distribution. │ │ │ │ │ +17 * 3. The name of the author may not be used to endorse or promote products │ │ │ │ │ +18 * derived from this software without specific prior written permission. │ │ │ │ │ +19 * │ │ │ │ │ +20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, │ │ │ │ │ +21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY │ │ │ │ │ +22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL │ │ │ │ │ +23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, │ │ │ │ │ +24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, │ │ │ │ │ +25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR │ │ │ │ │ +PROFITS; │ │ │ │ │ +26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, │ │ │ │ │ +27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR │ │ │ │ │ +28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF │ │ │ │ │ +29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. │ │ │ │ │ +30 */ │ │ │ │ │ +31 │ │ │ │ │ +32#ifndef _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ │ │ │ │ │ +33#define _tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ │ │ │ │ │ +34 │ │ │ │ │ +35#ifndef _freetds_config_h_ │ │ │ │ │ +36#error should include config.h before │ │ │ │ │ +37#endif │ │ │ │ │ +38 │ │ │ │ │ +39#ifdef HAVE_READPASSPHRASE │ │ │ │ │ +40 │ │ │ │ │ +41# include │ │ │ │ │ +42 │ │ │ │ │ +43#else /* !HAVE_READPASSPHRASE */ │ │ │ │ │ +44 │ │ │ │ │ +45#include │ │ │ │ │ +46 │ │ │ │ │ +47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */ │ │ │ │ │ +48#define RPP_ECHO_ON 0x01 /* Leave echo on. */ │ │ │ │ │ +49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */ │ │ │ │ │ +50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */ │ │ │ │ │ +51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */ │ │ │ │ │ +52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */ │ │ │ │ │ +53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */ │ │ │ │ │ +54 │ │ │ │ │ +55#undef readpassphrase │ │ │ │ │ +56char * tds_readpassphrase(const char *, char *, size_t, int); │ │ │ │ │ +57#define readpassphrase tds_readpassphrase │ │ │ │ │ +58 │ │ │ │ │ +59#include │ │ │ │ │ +60 │ │ │ │ │ +61#endif /* !HAVE_READPASSPHRASE */ │ │ │ │ │ +62 │ │ │ │ │ +63#endif /* !_tdsguard_bkwzvYqnksBiqA9Zb1TtWU_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00452.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/tds.h File Reference │ │ │ │ +FreeTDS API: include/freetds/replacements/poll.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,3119 +65,105 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Macros | │ │ │ │ Typedefs | │ │ │ │ -Enumerations | │ │ │ │ -Functions | │ │ │ │ -Variables
│ │ │ │ -
tds.h File Reference
│ │ │ │ +Functions
│ │ │ │ +
poll.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Main include file for libtds. │ │ │ │ +

Provide poll call where missing. │ │ │ │ More...

│ │ │ │ -
#include <stdarg.h>
│ │ │ │ -#include <stdio.h>
│ │ │ │ -#include <time.h>
│ │ │ │ -#include <freetds/version.h>
│ │ │ │ -#include <freetds/sysdep_private.h>
│ │ │ │ -#include <freetds/thread.h>
│ │ │ │ -#include <freetds/bool.h>
│ │ │ │ -#include <freetds/macros.h>
│ │ │ │ -#include <freetds/utils/string.h>
│ │ │ │ -#include <freetds/utils/path.h>
│ │ │ │ -#include <freetds/replacements.h>
│ │ │ │ -#include <freetds/pushvis.h>
│ │ │ │ -#include <freetds/proto.h>
│ │ │ │ +
#include <freetds/pushvis.h>
│ │ │ │ #include <freetds/popvis.h>
│ │ │ │
│ │ │ │ -Include dependency graph for tds.h:
│ │ │ │ +Include dependency graph for poll.h:
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  tds5_colinfo
 
union  tds_align_struct
 
struct  tds_authentication
 
struct  tds_bcpcoldata
 
struct  tds_bcpinfo
 
struct  tds_blob
 Information about blobs (e.g. More...
 
struct  tds_capabilities
 
struct  tds_capability_type
 
struct  tds_column
 Metadata about columns in regular and compute rows. More...
 
struct  tds_column_funcs
 
struct  tds_compiletime_settings
 A structure to hold all the compile-time settings. More...
 
struct  tds_connection
 
struct  tds_context
 
struct  tds_cursor
 Holds information about a cursor. More...
 
struct  tds_cursor_status
 
struct  TDS_DATETIMEALL
 This structure is not directly connected to TDS protocol but keeps any DATE/TIME information. More...
 
struct  tds_dynamic
 Holds information for a dynamic (also called prepared) query. More...
 
struct  tds_encoding
 Information relevant to libiconv. More...
 
struct  tds_env
 Current environment as reported by the server. More...
 
struct  tds_freeze
 
struct  tds_headers
 
struct  tds_locale
 
struct  tds_login
 
struct  tds_message
 
struct  tds_multiple
 
union  tds_option_arg
 
struct  tds_packet
 
struct  tds_poll_wakeup
 
struct  tds_result_info
 Hold information for any results. More...
 
struct  tds_socket
 Information for a server connection. More...
 
struct  tds_tvp
 
struct  tds_tvp_row
 
struct  tds_upd_col
 
struct  tds_variant
 Store variant information. More...
 
struct  tdsdaterec
 Used by tds_datecrack. More...
 
struct  tdsdump_off_item
struct  pollfd
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Macros

│ │ │ │ -#define is_ascii_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)
 
│ │ │ │ -#define is_binary_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != 0)
 
│ │ │ │ -#define is_blob_col(x)   ((x)->column_varint_size > 2)
 
│ │ │ │ -#define is_blob_type(x)   ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)
 
│ │ │ │ -#define is_char_type(x)   ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)
 
│ │ │ │ -#define is_collate_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != 0)
 
│ │ │ │ -#define is_datetime_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) != 0)
 return true if type is a datetime (but not date or time)
 
│ │ │ │ -#define is_end_token(x)   ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_TOKEN)
 
│ │ │ │ -#define is_fixed_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)
 
│ │ │ │ -#define is_nullable_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) != 0)
 
│ │ │ │ -#define is_numeric_type(x)   ((x)==SYBNUMERIC || (x)==SYBDECIMAL)
 
│ │ │ │ -#define is_similar_type(x, y)   (is_char_type(x) && is_char_type(y))
 
│ │ │ │ -#define IS_TDS42(x)   (x->tds_version==0x402)
 
│ │ │ │ -#define IS_TDS46(x)   (x->tds_version==0x406)
 
│ │ │ │ -#define IS_TDS50(x)   (x->tds_version==0x500)
 
│ │ │ │ -#define IS_TDS50_PLUS(x)   ((x)->tds_version>=0x500)
 
│ │ │ │ -#define IS_TDS70(x)   (x->tds_version==0x700)
 
│ │ │ │ -#define IS_TDS71(x)   (x->tds_version==0x701)
 
│ │ │ │ -#define IS_TDS71_PLUS(x)   ((x)->tds_version>=0x701)
 
│ │ │ │ -#define IS_TDS72(x)   (x->tds_version==0x702)
 
│ │ │ │ -#define IS_TDS72_PLUS(x)   ((x)->tds_version>=0x702)
 
│ │ │ │ -#define IS_TDS73(x)   (x->tds_version==0x703)
 
│ │ │ │ -#define IS_TDS73_PLUS(x)   ((x)->tds_version>=0x703)
 
│ │ │ │ -#define IS_TDS74_PLUS(x)   ((x)->tds_version>=0x704)
 
│ │ │ │ -#define IS_TDS7_PLUS(x)   ((x)->tds_version>=0x700)
 
│ │ │ │ -#define IS_TDS80_PLUS(x)   ((x)->tds_version>=0x800)
 
│ │ │ │ -#define IS_TDSDEAD(x)   (((x) == NULL) || (x)->state == TDS_DEAD)
 
│ │ │ │ -#define is_unicode_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
 
│ │ │ │ -#define is_variable_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
 
│ │ │ │ -#define is_variant_inner_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIANT) != 0)
 
│ │ │ │ -#define MAXPRECISION   77
 
│ │ │ │ -#define TDS_ALIGN_SIZE   sizeof(tds_align_struct)
 
#define TDS_BYTE_SWAP16(value)
 
#define TDS_BYTE_SWAP32(value)
 
│ │ │ │ -#define TDS_CANCELLED   ((TDSRET)-2)
 
│ │ │ │ -#define tds_capability_has_req(conn, cap)    tds_capability_enabled(&conn->capabilities.types[0], cap)
 
│ │ │ │ -#define tds_capability_has_res(conn, cap)    tds_capability_enabled(&conn->capabilities.types[1], cap)
 
│ │ │ │ -#define TDS_CMD_DONE   4046
 
│ │ │ │ -#define TDS_CMD_FAIL   4048
 
│ │ │ │ -#define TDS_CMD_SUCCEED   4047
 
│ │ │ │ -#define TDS_COMPUTE_RESULT   4045
 
│ │ │ │ -#define TDS_COMPUTEFMT_RESULT   4050
 
│ │ │ │ -#define tds_convert_string_free(original, converted)    do { if (original != converted) free((char*) converted); } while(0)
 
│ │ │ │ -#define TDS_DBG_ERROR   __FILE__, ((__LINE__ << 4) | 2)
 
│ │ │ │ -#define TDS_DBG_FUNC   __FILE__, ((__LINE__ << 4) | 7)
 
│ │ │ │ -#define TDS_DBG_HEADER   __FILE__, ((__LINE__ << 4) | 10)
 
│ │ │ │ -#define TDS_DBG_INFO1   __FILE__, ((__LINE__ << 4) | 5)
 
│ │ │ │ -#define TDS_DBG_INFO2   __FILE__, ((__LINE__ << 4) | 6)
 
│ │ │ │ -#define TDS_DBG_LOGIN   __FILE__, ((__LINE__ << 4) | 11)
 
│ │ │ │ -#define TDS_DBG_NETWORK   __FILE__, ((__LINE__ << 4) | 4)
 
│ │ │ │ -#define TDS_DBG_SEVERE   __FILE__, ((__LINE__ << 4) | 1)
 
│ │ │ │ -#define TDS_DBG_WARN   __FILE__, ((__LINE__ << 4) | 3)
 
│ │ │ │ -#define TDS_DBGFLAG_ALL   0xfff
 
│ │ │ │ -#define TDS_DBGFLAG_ERROR   0x04
 
│ │ │ │ -#define TDS_DBGFLAG_FUNC   0x80
 
│ │ │ │ -#define TDS_DBGFLAG_HEADER   0x0400
 
│ │ │ │ -#define TDS_DBGFLAG_INFO1   0x20
 
│ │ │ │ -#define TDS_DBGFLAG_INFO2   0x40
 
│ │ │ │ -#define TDS_DBGFLAG_LOGIN   0x0800
 
│ │ │ │ -#define TDS_DBGFLAG_NETWORK   0x10
 
│ │ │ │ -#define TDS_DBGFLAG_PID   0x1000
 
│ │ │ │ -#define TDS_DBGFLAG_SEVERE   0x02
 
│ │ │ │ -#define TDS_DBGFLAG_SOURCE   0x4000
 
│ │ │ │ -#define TDS_DBGFLAG_THREAD   0x8000
 
│ │ │ │ -#define TDS_DBGFLAG_TIME   0x2000
 
│ │ │ │ -#define TDS_DBGFLAG_WARN   0x08
 
│ │ │ │ -#define TDS_DEF_BLKSZ   512
 
│ │ │ │ -#define TDS_DEF_CHARSET   "iso_1"
 
│ │ │ │ -#define TDS_DEF_LANG   "us_english"
 
│ │ │ │ -#define TDS_DEF_PORT   1433
 
│ │ │ │ -#define TDS_DEF_SERVER   "SYBASE"
 
│ │ │ │ -#define TDS_DEFAULT_VERSION   0x000
 
│ │ │ │ -#define TDS_DESCRIBE_RESULT   4051
 
│ │ │ │ -#define TDS_DONE_RESULT   4052
 
│ │ │ │ -#define TDS_DONEINPROC_RESULT   4054
 
│ │ │ │ -#define TDS_DONEPROC_RESULT   4053
 
│ │ │ │ -#define TDS_END_LEN   while(0); } while(tds_freeze_close(current_freeze), 0); } while(0);
 
│ │ │ │ -#define TDS_END_LEN_STRING   while(0); } while(tds_freeze_close_string(current_freeze), 0); } while(0);
 
│ │ │ │ -#define TDS_FAIL   ((TDSRET)-1)
 
│ │ │ │ -#define TDS_FAILED(rc)   ((rc)<0)
 
│ │ │ │ -#define tds_get_ctx(tds)   ((tds)->conn->tds_ctx)
 
│ │ │ │ -#define tds_get_int(tds)   ((TDS_INT) tds_get_uint(tds))
 
│ │ │ │ -#define tds_get_int8(tds)   ((TDS_INT8) tds_get_uint8(tds))
 
│ │ │ │ -#define tds_get_parent(tds)   ((tds)->parent)
 
│ │ │ │ -#define tds_get_s(tds)   ((tds)->conn->s)
 
│ │ │ │ -#define tds_get_smallint(tds)   ((TDS_SMALLINT) tds_get_usmallint(tds))
 
│ │ │ │ -#define TDS_GSSAPI_DELEGATION   "enable gssapi delegation"
 
│ │ │ │ -#define TDS_INT_CANCEL   2
 
│ │ │ │ -#define TDS_INT_CONTINUE   1
 
│ │ │ │ -#define TDS_INT_TIMEOUT   3
 
│ │ │ │ -#define TDS_INVALID_TYPE   ((TDS_SERVER_TYPE) 0)
 
#define TDS_IS_MSSQL(x)   (((x)->conn->product_version & 0x80000000u)!=0)
 Check if product is Microsoft SQL Server.
 
#define TDS_IS_SYBASE(x)   (!((x)->conn->product_version & 0x80000000u))
 Check if product is Sybase (such as Adaptive Server Enterprise).
 
│ │ │ │ -#define TDS_MAJOR(x)   ((x)->tds_version >> 8)
 
│ │ │ │ -#define TDS_MAX_CAPABILITY   32
 
│ │ │ │ -#define TDS_MAX_CONN   4096
 
│ │ │ │ -#define TDS_MAX_DYNID_LEN   30
 
│ │ │ │ -#define TDS_MAX_LOGIN_STR_SZ   128
 
│ │ │ │ -#define TDS_MINOR(x)   ((x)->tds_version & 0xff)
 
#define TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
 Calc a version number for mssql.
 
│ │ │ │ -#define TDS_MSG_RESULT   4044
 
│ │ │ │ -#define TDS_NO_COUNT   -1
 
│ │ │ │ -#define TDS_NO_MORE_RESULTS   ((TDSRET)1)
 
│ │ │ │ -#define TDS_NULLTERM   -9
 
│ │ │ │ -#define TDS_OTHERS_RESULT   4055
 
│ │ │ │ -#define tds_packet_get_data_start(pkt)   0
 
│ │ │ │ -#define tds_packet_zero_data_start(pkt)   do { } while(0)
 
│ │ │ │ -#define TDS_PARAM_RESULT   4042
 
│ │ │ │ -#define TDS_PROPAGATE(rc)    do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } while(0)
 
│ │ │ │ -#define TDS_PUT_BYTE(tds, v)   tds_put_byte((tds), ((unsigned char)(v)))
 
│ │ │ │ -#define TDS_PUT_INT(tds, v)   tds_put_int((tds), ((TDS_INT)(v)))
 
│ │ │ │ -#define TDS_PUT_SMALLINT(tds, v)   tds_put_smallint((tds), ((TDS_SMALLINT)(v)))
 
│ │ │ │ -#define tds_put_tinyint(tds, ti)   tds_put_byte(tds,ti)
 Output a tinyint value.
 
│ │ │ │ -#define TDS_RESIZE(p, n_elem)    tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))
 
│ │ │ │ -#define TDS_ROW_RESULT   4040
 
│ │ │ │ -#define TDS_ROWFMT_RESULT   4049
 
│ │ │ │ -#define tds_set_ctx(tds, val)   do { ((tds)->conn->tds_ctx) = (val); } while(0)
 
│ │ │ │ -#define tds_set_parent(tds, val)   do { ((tds)->parent) = (val); } while(0)
 
│ │ │ │ -#define tds_set_s(tds, val)   do { ((tds)->conn->s) = (val); } while(0)
 
#define TDS_START_LEN_GENERIC(tds_socket, len)
 
│ │ │ │ -#define TDS_START_LEN_TINYINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 1)
 
│ │ │ │ -#define TDS_START_LEN_UINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 4)
 
│ │ │ │ -#define TDS_START_LEN_USMALLINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 2)
 
│ │ │ │ -#define TDS_STATUS_RESULT   4043
 
│ │ │ │ -#define TDS_STR_APPENDMODE   "dump file append"
 
│ │ │ │ -#define TDS_STR_ASA_DATABASE   "asa database"
 
│ │ │ │ -#define TDS_STR_BLKSZ   "initial block size"
 
│ │ │ │ -#define TDS_STR_CAFILE   "ca file"
 
│ │ │ │ -#define TDS_STR_CHARSET   "charset"
 
│ │ │ │ -#define TDS_STR_CHECKSSLHOSTNAME   "check certificate hostname"
 
│ │ │ │ -#define TDS_STR_CLCHARSET   "client charset"
 
│ │ │ │ -#define TDS_STR_CONNTIMEOUT   "connect timeout"
 
│ │ │ │ -#define TDS_STR_CRLFILE   "crl file"
 
│ │ │ │ -#define TDS_STR_DATABASE   "database"
 
│ │ │ │ -#define TDS_STR_DATEFMT   "date-only format"
 
│ │ │ │ -#define TDS_STR_DATETIMEFMT   "date format"
 
│ │ │ │ -#define TDS_STR_DBFILENAME   "database filename"
 
│ │ │ │ -#define TDS_STR_DEBUGFLAGS   "debug flags"
 
│ │ │ │ -#define TDS_STR_DEBUGLVL   "debug level"
 
│ │ │ │ -#define TDS_STR_DUMPFILE   "dump file"
 
│ │ │ │ -#define TDS_STR_EMUL_LE   "emulate little endian"
 
│ │ │ │ -#define TDS_STR_ENABLE_TLS_V1   "enable tls v1"
 
│ │ │ │ -#define TDS_STR_ENCRYPTION   "encryption"
 
│ │ │ │ -#define TDS_STR_ENCRYPTION_OFF   "off"
 
│ │ │ │ -#define TDS_STR_ENCRYPTION_REQUEST   "request"
 
│ │ │ │ -#define TDS_STR_ENCRYPTION_REQUIRE   "require"
 
│ │ │ │ -#define TDS_STR_ENCRYPTION_STRICT   "strict"
 
│ │ │ │ -#define TDS_STR_HOST   "host"
 
│ │ │ │ -#define TDS_STR_HOSTNAME   "hostname"
 
│ │ │ │ -#define TDS_STR_INSTANCE   "instance"
 
│ │ │ │ -#define TDS_STR_LANGUAGE   "language"
 
│ │ │ │ -#define TDS_STR_MUTUAL_AUTHENTICATION   "mutual authentication"
 
│ │ │ │ -#define TDS_STR_PORT   "port"
 
│ │ │ │ -#define TDS_STR_QUERY_TIMEOUT   "query timeout"
 
│ │ │ │ -#define TDS_STR_READONLY_INTENT   "read-only intent"
 
│ │ │ │ -#define TDS_STR_REALM   "realm"
 
│ │ │ │ -#define TDS_STR_SPN   "spn"
 
│ │ │ │ -#define TDS_STR_SSLHOSTNAME   "certificate hostname"
 
│ │ │ │ -#define TDS_STR_SWAPDT   "swap broken dates"
 
│ │ │ │ -#define TDS_STR_TEXTSZ   "text size"
 
│ │ │ │ -#define TDS_STR_TIMEFMT   "time-only format"
 
│ │ │ │ -#define TDS_STR_TIMEOUT   "timeout"
 
│ │ │ │ -#define TDS_STR_USE_UTF_16   "use utf-16"
 
│ │ │ │ -#define TDS_STR_USELANMAN   "use lanman"
 
│ │ │ │ -#define TDS_STR_USENTLMV2   "use ntlmv2"
 
│ │ │ │ -#define TDS_STR_VERSION   "tds version"
 
│ │ │ │ -#define TDS_SUCCEED(rc)   ((rc)>=0)
 
│ │ │ │ -#define TDS_SUCCESS   ((TDSRET)0)
 
│ │ │ │ -#define TDS_SYB_VER(maj, min, x)   (((maj)<<24)|((min)<<16)|(x)<<8)
 Calc a version number for Sybase.
 
│ │ │ │ -#define TDS_TOKEN_FLAG(flag)   TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
 
│ │ │ │ -#define TDSDUMP_BUF_FAST   if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf
 
│ │ │ │ -#define tdsdump_dump_buf   TDSDUMP_BUF_FAST
 
│ │ │ │ -#define tdsdump_log   TDSDUMP_LOG_FAST
 
│ │ │ │ -#define TDSDUMP_LOG_FAST   if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log
 
│ │ │ │ -#define TDSSELREAD   POLLIN
 
│ │ │ │ -#define TDSSELWRITE   POLLOUT
 
│ │ │ │ -#define TLS_STR_OPENSSL_CIPHERS   "openssl ciphers"
 
│ │ │ │ +#define _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_
 
│ │ │ │ +#define poll(fds, nfds, timeout)   tds_poll(fds, nfds, timeout)
 
│ │ │ │ +#define POLLERR   0x0008
 
│ │ │ │ +#define POLLHUP   0x0010
 
│ │ │ │ +#define POLLIN   0x0001
 
│ │ │ │ +#define POLLNORM   POLLIN
 
│ │ │ │ +#define POLLNVAL   0x0020
 
│ │ │ │ +#define POLLOUT   0x0004
 
│ │ │ │ +#define POLLPRI   POLLIN
 
│ │ │ │ +#define POLLRDBAND   POLLIN
 
│ │ │ │ +#define POLLRDNORM   POLLIN
 
│ │ │ │ +#define POLLWRBAND   POLLOUT
 
│ │ │ │ +#define POLLWRNORM   POLLOUT
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ Typedefs

│ │ │ │ -typedef struct tds_bcpcoldata BCPCOLDATA
 
│ │ │ │ -typedef int(* err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *)
 
│ │ │ │ -typedef int(* int_handler_t) (void *)
 
│ │ │ │ -typedef struct tds5_colinfo TDS5COLINFO
 
│ │ │ │ -typedef TDSRET(* tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN *bcpcol, int offset)
 
│ │ │ │ -typedef void(* tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int offset)
 
│ │ │ │ -typedef struct tds_capabilities TDS_CAPABILITIES
 
│ │ │ │ -typedef struct tds_capability_type TDS_CAPABILITY_TYPE
 
│ │ │ │ -typedef char TDS_CHAR
 
typedef struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
 A structure to hold all the compile-time settings.
 
│ │ │ │ -typedef enum tds_cursor_fetch TDS_CURSOR_FETCH
 
│ │ │ │ -typedef enum tds_cursor_operation TDS_CURSOR_OPERATION
 
│ │ │ │ -typedef struct tds_cursor_status TDS_CURSOR_STATUS
 
typedef struct tds_encoding TDS_ENCODING
 Information relevant to libiconv.
 
│ │ │ │ -typedef enum tds_encryption_level TDS_ENCRYPTION_LEVEL
 
│ │ │ │ -typedef tds_sysdep_real64_type TDS_FLOAT
 
│ │ │ │ -typedef int tds_func_check(const TDSCOLUMN *col)
 
│ │ │ │ -typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col)
 
│ │ │ │ -typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col)
 
│ │ │ │ -typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
 
│ │ │ │ -typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col)
 
│ │ │ │ -typedef TDS_INT tds_func_row_len(TDSCOLUMN *col)
 
│ │ │ │ -typedef int32_t TDS_INT
 
│ │ │ │ -typedef int64_t TDS_INT8
 
│ │ │ │ -typedef enum tds_operations TDS_OPERATION
 
│ │ │ │ -typedef union tds_option_arg TDS_OPTION_ARG
 
│ │ │ │ -typedef tds_sysdep_real32_type TDS_REAL
 
│ │ │ │ -typedef int16_t TDS_SMALLINT
 
│ │ │ │ -typedef enum tds_states TDS_STATE
 values for tds->state
 
│ │ │ │ -typedef uint8_t TDS_TINYINT
 
│ │ │ │ -typedef struct tds_tvp TDS_TVP
 
│ │ │ │ -typedef struct tds_tvp_row TDS_TVP_ROW
 
│ │ │ │ -typedef uint8_t TDS_UCHAR
 
│ │ │ │ -typedef uint32_t TDS_UINT
 
│ │ │ │ -typedef uint64_t TDS_UINT8
 
│ │ │ │ -typedef uint16_t TDS_USMALLINT
 
│ │ │ │ -typedef struct tds_authentication TDSAUTHENTICATION
 
│ │ │ │ -typedef struct tds_bcpinfo TDSBCPINFO
 
typedef struct tds_blob TDSBLOB
 Information about blobs (e.g.
 
│ │ │ │ -typedef struct tds_column TDSCOLUMN
 
│ │ │ │ -typedef struct tds_column_funcs TDSCOLUMNFUNCS
 
│ │ │ │ -typedef struct tds_result_info TDSCOMPUTEINFO
 
│ │ │ │ -typedef bool(* TDSCONFPARSE) (const char *option, const char *value, void *param)
 
│ │ │ │ -typedef struct tds_connection TDSCONNECTION
 
│ │ │ │ -typedef struct tds_context TDSCONTEXT
 
│ │ │ │ -typedef struct tds_cursor TDSCURSOR
 Holds information about a cursor.
 
│ │ │ │ -typedef struct tdsdaterec TDSDATEREC
 Used by tds_datecrack.
 
│ │ │ │ -typedef struct tdsdump_off_item TDSDUMP_OFF_ITEM
 
│ │ │ │ -typedef struct tds_dynamic TDSDYNAMIC
 Holds information for a dynamic (also called prepared) query.
 
│ │ │ │ -typedef struct tds_env TDSENV
 Current environment as reported by the server.
 
│ │ │ │ -typedef struct tds_freeze TDSFREEZE
 
│ │ │ │ -typedef struct tds_headers TDSHEADERS
 
│ │ │ │ -typedef struct tdsiconvinfo TDSICONV
 
│ │ │ │ -typedef struct tds_locale TDSLOCALE
 
│ │ │ │ -typedef struct tds_login TDSLOGIN
 
│ │ │ │ -typedef struct tds_message TDSMESSAGE
 
│ │ │ │ -typedef struct tds_multiple TDSMULTIPLE
 
│ │ │ │ -typedef struct tds_packet TDSPACKET
 
│ │ │ │ -typedef TDSRESULTINFO TDSPARAMINFO
 
│ │ │ │ -typedef struct tds_poll_wakeup TDSPOLLWAKEUP
 
│ │ │ │ -typedef struct tds_result_info TDSRESULTINFO
 Hold information for any results.
 
│ │ │ │ -typedef int TDSRET
 
│ │ │ │ -typedef struct tds_socket TDSSOCKET
 
│ │ │ │ -typedef struct tds_upd_col TDSUPDCOL
 
│ │ │ │ -typedef struct tds_variant TDSVARIANT
 Store variant information.
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ -Enumerations

enum  {
│ │ │ │ -  TDS_CUR_ISTAT_UNUSED = 0x00 │ │ │ │ -, TDS_CUR_ISTAT_DECLARED = 0x01 │ │ │ │ -, TDS_CUR_ISTAT_OPEN = 0x02 │ │ │ │ -, TDS_CUR_ISTAT_CLOSED = 0x04 │ │ │ │ -,
│ │ │ │ -  TDS_CUR_ISTAT_RDONLY = 0x08 │ │ │ │ -, TDS_CUR_ISTAT_UPDATABLE = 0x10 │ │ │ │ -, TDS_CUR_ISTAT_ROWCNT = 0x20 │ │ │ │ -, TDS_CUR_ISTAT_DEALLOC = 0x40 │ │ │ │ -
│ │ │ │ - }
 
enum  {
│ │ │ │ -  TDS_TYPEFLAG_INVALID = 0 │ │ │ │ -, TDS_TYPEFLAG_NULLABLE = 1 │ │ │ │ -, TDS_TYPEFLAG_FIXED = 2 │ │ │ │ -, TDS_TYPEFLAG_VARIABLE = 4 │ │ │ │ -,
│ │ │ │ -  TDS_TYPEFLAG_COLLATE = 8 │ │ │ │ -, TDS_TYPEFLAG_ASCII = 16 │ │ │ │ -, TDS_TYPEFLAG_UNICODE = 32 │ │ │ │ -, TDS_TYPEFLAG_BINARY = 64 │ │ │ │ -,
│ │ │ │ -  TDS_TYPEFLAG_DATETIME = 128 │ │ │ │ -, TDS_TYPEFLAG_NUMERIC = 256 │ │ │ │ -, TDS_TYPEFLAG_VARIANT = 512 │ │ │ │ -
│ │ │ │ - }
 
enum  tds_bcp_directions { TDS_BCP_IN = 1 │ │ │ │ -, TDS_BCP_OUT = 2 │ │ │ │ -, TDS_BCP_QUERYOUT = 3 │ │ │ │ - }
 bcp direction
 
enum  tds_cursor_fetch {
│ │ │ │ -  TDS_CURSOR_FETCH_NEXT = 1 │ │ │ │ -, TDS_CURSOR_FETCH_PREV │ │ │ │ -, TDS_CURSOR_FETCH_FIRST │ │ │ │ -, TDS_CURSOR_FETCH_LAST │ │ │ │ -,
│ │ │ │ -  TDS_CURSOR_FETCH_ABSOLUTE │ │ │ │ -, TDS_CURSOR_FETCH_RELATIVE │ │ │ │ -
│ │ │ │ - }
 
enum  tds_cursor_operation { TDS_CURSOR_POSITION = 0 │ │ │ │ -, TDS_CURSOR_UPDATE = 1 │ │ │ │ -, TDS_CURSOR_DELETE = 2 │ │ │ │ -, TDS_CURSOR_INSERT = 4 │ │ │ │ - }
 
enum  TDS_CURSOR_STATE { TDS_CURSOR_STATE_UNACTIONED = 0 │ │ │ │ -, TDS_CURSOR_STATE_REQUESTED = 1 │ │ │ │ -, TDS_CURSOR_STATE_SENT = 2 │ │ │ │ -, TDS_CURSOR_STATE_ACTIONED = 3 │ │ │ │ - }
 
enum  tds_encryption_level {
│ │ │ │ -  TDS_ENCRYPTION_DEFAULT │ │ │ │ -, TDS_ENCRYPTION_OFF │ │ │ │ -, TDS_ENCRYPTION_REQUEST │ │ │ │ -, TDS_ENCRYPTION_REQUIRE │ │ │ │ -,
│ │ │ │ -  TDS_ENCRYPTION_STRICT │ │ │ │ -
│ │ │ │ - }
 
enum  TDS_ICONV_ENTRY { client2ucs2 │ │ │ │ -, client2server_chardata │ │ │ │ -, initial_char_conv_count │ │ │ │ - }
 
enum  TDS_MULTIPLE_TYPE { TDS_MULTIPLE_QUERY │ │ │ │ -, TDS_MULTIPLE_EXECUTE │ │ │ │ -, TDS_MULTIPLE_RPC │ │ │ │ - }
 
enum  tds_operations {
│ │ │ │ -  TDS_OP_NONE = 0 │ │ │ │ -, TDS_OP_CURSOR = TDS_SP_CURSOR │ │ │ │ -, TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN │ │ │ │ -, TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE │ │ │ │ -,
│ │ │ │ -  TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE │ │ │ │ -, TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC │ │ │ │ -, TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE │ │ │ │ -, TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH │ │ │ │ -,
│ │ │ │ -  TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION │ │ │ │ -, TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE │ │ │ │ -, TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL │ │ │ │ -, TDS_OP_PREPARE = TDS_SP_PREPARE │ │ │ │ -,
│ │ │ │ -  TDS_OP_EXECUTE = TDS_SP_EXECUTE │ │ │ │ -, TDS_OP_PREPEXEC = TDS_SP_PREPEXEC │ │ │ │ -, TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC │ │ │ │ -, TDS_OP_UNPREPARE = TDS_SP_UNPREPARE │ │ │ │ -,
│ │ │ │ -  TDS_OP_DYN_DEALLOC = 100 │ │ │ │ -
│ │ │ │ - }
 
enum  tds_states {
│ │ │ │ -  TDS_IDLE │ │ │ │ -, TDS_WRITING │ │ │ │ -, TDS_SENDING │ │ │ │ -, TDS_PENDING │ │ │ │ -,
│ │ │ │ -  TDS_READING │ │ │ │ -, TDS_DEAD │ │ │ │ -
│ │ │ │ - }
 values for tds->state More...
 
enum  tds_token_flags {
│ │ │ │ -  TDS_HANDLE_ALL = 0 │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -,
│ │ │ │ -  TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -,
│ │ │ │ -  TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_FLAG =(OTHERS) │ │ │ │ -, TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC │ │ │ │ -,
│ │ │ │ -  TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS │ │ │ │ -
│ │ │ │ - }
 
enum  tds_token_results {
│ │ │ │ -  TDS_TOKEN_RES_OTHERS │ │ │ │ -, TDS_TOKEN_RES_ROWFMT │ │ │ │ -, TDS_TOKEN_RES_COMPUTEFMT │ │ │ │ -, TDS_TOKEN_RES_PARAMFMT │ │ │ │ -,
│ │ │ │ -  TDS_TOKEN_RES_DONE │ │ │ │ -, TDS_TOKEN_RES_ROW │ │ │ │ -, TDS_TOKEN_RES_COMPUTE │ │ │ │ -, TDS_TOKEN_RES_PROC │ │ │ │ -,
│ │ │ │ -  TDS_TOKEN_RES_MSG │ │ │ │ -, TDS_TOKEN_RES_ENV │ │ │ │ -
│ │ │ │ - }
 
enum  TDSERRNO {
│ │ │ │ -  TDSEOK = TDS_SUCCESS │ │ │ │ -, TDSEVERDOWN = 100 │ │ │ │ -, TDSEINPROGRESS │ │ │ │ -, TDSEICONVIU = 2400 │ │ │ │ -,
│ │ │ │ -  TDSEICONVAVAIL = 2401 │ │ │ │ -, TDSEICONVO = 2402 │ │ │ │ -, TDSEICONVI = 2403 │ │ │ │ -, TDSEICONV2BIG = 2404 │ │ │ │ -,
│ │ │ │ -  TDSEPORTINSTANCE = 2500 │ │ │ │ -, TDSESYNC = 20001 │ │ │ │ -, TDSEFCON = 20002 │ │ │ │ -, TDSETIME = 20003 │ │ │ │ -,
│ │ │ │ -  TDSEREAD = 20004 │ │ │ │ -, TDSEWRIT = 20006 │ │ │ │ -, TDSESOCK = 20008 │ │ │ │ -, TDSECONN = 20009 │ │ │ │ -,
│ │ │ │ -  TDSEMEM = 20010 │ │ │ │ -, TDSEINTF = 20012 │ │ │ │ -, TDSEUHST = 20013 │ │ │ │ -, TDSEPWD = 20014 │ │ │ │ -,
│ │ │ │ -  TDSESEOF = 20017 │ │ │ │ -, TDSERPND = 20019 │ │ │ │ -, TDSEBTOK = 20020 │ │ │ │ -, TDSEOOB = 20022 │ │ │ │ -,
│ │ │ │ -  TDSECLOS = 20056 │ │ │ │ -, TDSEUSCT = 20058 │ │ │ │ -, TDSEUTDS = 20146 │ │ │ │ -, TDSEEUNR = 20185 │ │ │ │ -,
│ │ │ │ -  TDSECAP = 20203 │ │ │ │ -, TDSENEG = 20210 │ │ │ │ -, TDSEUMSG = 20212 │ │ │ │ -, TDSECAPTYP = 20213 │ │ │ │ -,
│ │ │ │ -  TDSECONF = 20214 │ │ │ │ -, TDSEBPROBADTYP = 20250 │ │ │ │ -, TDSECLOSEIN = 20292 │ │ │ │ -
│ │ │ │ - }
 
│ │ │ │ +typedef struct pollfd pollfd_t
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ Functions

│ │ │ │ -static bool is_tds_type_valid (int type)
 
│ │ │ │ -TDSRET tds5_gss_send (TDSSOCKET *tds)
 
│ │ │ │ -TDSAUTHENTICATIONtds5_negotiate_get_auth (TDSSOCKET *tds)
 
│ │ │ │ -static void tds5_negotiate_set_msg_type (TDSAUTHENTICATION *tds_auth, unsigned msg_type)
 
│ │ │ │ -int tds5_send_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG *tds_argument, TDS_INT *tds_argsize)
 
TDSRET tds71_submit_prepexec (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
 Creates a temporary stored procedure in the server and execute it.
 
int tds7_get_instance_port (struct addrinfo *addr, const char *instance)
 Get port of given instance.
 
int tds7_get_instance_ports (FILE *output, struct addrinfo *addr)
 Get port of all instances.
 
│ │ │ │ -void tds7_srv_charset_changed (TDSCONNECTION *conn, TDS_UCHAR collate[5])
 
│ │ │ │ -TDSRET tds8_adjust_login (TDSLOGIN *login)
 Make sure proper setting are in place for TDS 8.0.
 
│ │ │ │ -const char * tds_addrinfo2str (struct addrinfo *addr, char *name, int namemax)
 
│ │ │ │ -TDSSOCKETtds_alloc_additional_socket (TDSCONNECTION *conn)
 
│ │ │ │ -BCPCOLDATAtds_alloc_bcp_column_data (unsigned int column_size)
 
│ │ │ │ -TDSBCPINFOtds_alloc_bcpinfo (void)
 
│ │ │ │ -char * tds_alloc_client_sqlstate (int msgno)
 
│ │ │ │ -TDSCOMPUTEINFO ** tds_alloc_compute_results (TDSSOCKET *tds, TDS_USMALLINT num_cols, TDS_USMALLINT by_cols)
 
│ │ │ │ -TDSRET tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)
 
│ │ │ │ -TDSCONTEXTtds_alloc_context (void *parent)
 
│ │ │ │ -TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)
 
TDSDYNAMICtds_alloc_dynamic (TDSCONNECTION *conn, const char *id)
 Allocate a dynamic statement.
 
│ │ │ │ -TDSLOCALEtds_alloc_locale (void)
 
│ │ │ │ -TDSLOGINtds_alloc_login (bool use_environment)
 
│ │ │ │ -char * tds_alloc_lookup_sqlstate (TDSSOCKET *tds, int msgno)
 
│ │ │ │ -TDSPACKETtds_alloc_packet (void *buf, unsigned len)
 
void * tds_alloc_param_data (TDSCOLUMN *curparam)
 Allocate data for a parameter.
 
TDSPARAMINFOtds_alloc_param_result (TDSPARAMINFO *old_param)
 Adds a output parameter to TDSPARAMINFO.
 
│ │ │ │ -TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols)
 
│ │ │ │ -TDSRET tds_alloc_row (TDSRESULTINFO *res_info)
 Allocate space for row store return NULL on out of memory.
 
│ │ │ │ -TDSSOCKETtds_alloc_socket (TDSCONTEXT *context, unsigned int bufsize)
 
TDSRET tds_bcp_done (TDSSOCKET *tds, int *rows_copied)
 Tell we finished sending BCP data to server.
 
TDSRET tds_bcp_fread (TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes)
 Read a data file, passing the data through iconv().
 
TDSRET tds_bcp_init (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
 Initialize BCP information.
 
TDSRET tds_bcp_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)
 Send one row of data to server.
 
TDSRET tds_bcp_start (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
 Start sending BCP data to server.
 
TDSRET tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
 Start bulk copy to server.
 
│ │ │ │ -static bool tds_capability_enabled (const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
 
void tds_close_socket (TDSSOCKET *tds)
 Close current socket.
 
│ │ │ │ -int tds_config_boolean (const char *option, const char *value, TDSLOGIN *login)
 
TDS_USMALLINT * tds_config_verstr (const char *tdsver, TDSLOGIN *login)
 Set TDS version from given string.
 
│ │ │ │ -TDSRET tds_connect_and_login (TDSSOCKET *tds, TDSLOGIN *login)
 
│ │ │ │ -void tds_connection_close (TDSCONNECTION *conn)
 
│ │ │ │ -void tds_connection_coalesce (TDSSOCKET *tds)
 
│ │ │ │ -void tds_connection_flush (TDSSOCKET *tds)
 
│ │ │ │ -int tds_connection_read (TDSSOCKET *tds, unsigned char *buf, int buflen)
 
│ │ │ │ -int tds_connection_write (TDSSOCKET *tds, const unsigned char *buf, int buflen, int final)
 
const char * tds_convert_string (TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len)
 Convert a string in an allocated buffer.
 
│ │ │ │ -void tds_convert_string_free (const char *original, const char *converted)
 
int tds_count_placeholders (const char *query)
 Count the number of placeholders ('?') in a query.
 
│ │ │ │ -TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)
 
│ │ │ │ -TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)
 Send a deallocation request to server.
 
│ │ │ │ -void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor)
 
│ │ │ │ -TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, bool *send)
 
│ │ │ │ -TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)
 
│ │ │ │ -TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *row_number, TDS_UINT *row_count)
 
│ │ │ │ -TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, bool *send)
 
│ │ │ │ -TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)
 
│ │ │ │ -TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, bool *send)
 
│ │ │ │ -TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params)
 
TDSRET tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr)
 Convert from db date format to a structured date format.
 
TDSRET tds_deferred_cursor_dealloc (TDSCONNECTION *conn, TDSCURSOR *cursor)
 Deallocate cursor on idle.
 
TDSRET tds_deferred_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)
 Unprepare dynamic on idle.
 
│ │ │ │ -void tds_deinit_bcpinfo (TDSBCPINFO *bcpinfo)
 
│ │ │ │ -void tds_deinit_tvp (TDS_TVP *table)
 
│ │ │ │ -void tds_detach_results (TDSRESULTINFO *info)
 Detach result info from it current socket.
 
│ │ │ │ -TDSRET tds_disconnect (TDSSOCKET *tds)
 
DSTRtds_dstr_get (TDSSOCKET *tds, DSTR *s, size_t len)
 Reads a string from wire and put in a DSTR.
 
│ │ │ │ -void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn)
 
│ │ │ │ -size_t tds_fix_column_size (TDSSOCKET *tds, TDSCOLUMN *curcol)
 
void tds_fix_login (TDSLOGIN *login)
 Fix configuration after reading it.
 
TDSRET tds_flush_packet (TDSSOCKET *tds)
 Flush packet to server.
 
│ │ │ │ -void tds_free_all_results (TDSSOCKET *tds)
 
│ │ │ │ -void tds_free_bcp_column_data (BCPCOLDATA *coldata)
 
│ │ │ │ -void tds_free_bcpinfo (TDSBCPINFO *bcpinfo)
 
│ │ │ │ -void tds_free_context (TDSCONTEXT *locale)
 
void tds_free_input_params (TDSDYNAMIC *dyn)
 Frees all allocated input parameters of a dynamic statement.
 
│ │ │ │ -void tds_free_locale (TDSLOCALE *locale)
 
│ │ │ │ -void tds_free_login (TDSLOGIN *login)
 
│ │ │ │ -void tds_free_msg (TDSMESSAGE *message)
 
│ │ │ │ -void tds_free_packets (TDSPACKET *packet)
 
│ │ │ │ -void tds_free_param_result (TDSPARAMINFO *param_info)
 Delete latest parameter.
 
│ │ │ │ -void tds_free_param_results (TDSPARAMINFO *param_info)
 
│ │ │ │ -void tds_free_results (TDSRESULTINFO *res_info)
 
│ │ │ │ -void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)
 
│ │ │ │ -void tds_free_socket (TDSSOCKET *tds)
 
void tds_freeze (TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len)
 Stop writing to server and cache every packet not sending them to server.
 
TDSRET tds_freeze_abort (TDSFREEZE *freeze)
 Discard all data written after the freeze.
 
TDSRET tds_freeze_close (TDSFREEZE *freeze)
 Stop keeping data for this specific freeze.
 
TDSRET tds_freeze_close_len (TDSFREEZE *freeze, int32_t size)
 Stop keeping data for this specific freeze.
 
TDSRET tds_freeze_close_string (TDSFREEZE *freeze)
 Stop keeping data for this specific freeze.
 
size_t tds_freeze_written (TDSFREEZE *freeze)
 Compute how many bytes has been written from freeze.
 
unsigned char tds_get_byte (TDSSOCKET *tds)
 Return a single byte from the input buffer.
 
│ │ │ │ -TDS_SERVER_TYPE tds_get_cardinal_type (TDS_SERVER_TYPE datatype, int usertype)
 
TDSRET tds_get_char_data (TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
 Fetch character data the wire.
 
TDSRET tds_get_column_declaration (TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)
 Return declaration for column (like "varchar(20)").
 
const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void)
 Return a structure capturing the compile-time settings provided to the configure script.
 
TDS_SERVER_TYPE tds_get_conversion_type (TDS_SERVER_TYPE srctype, int colsize)
 Return type suitable for conversions (convert all nullable types to fixed type)
 
TDSLOCALEtds_get_locale (void)
 Get locale information.
 
bool tds_get_n (TDSSOCKET *tds, void *dest, size_t n)
 Get N bytes from the buffer and return them in the already allocated space
│ │ │ │ - given to us.
 
│ │ │ │ -int tds_get_size_by_type (TDS_SERVER_TYPE servertype)
 Return the number of bytes needed by specified type.
 
size_t tds_get_string (TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size)
 Fetch a string from the wire.
 
TDS_UINT tds_get_uint (TDSSOCKET *tds)
 Get an uint32 from the server.
 
TDS_UINT8 tds_get_uint8 (TDSSOCKET *tds)
 Get an uint64 from the server.
 
│ │ │ │ -TDS_USMALLINT tds_get_usmallint (TDSSOCKET *tds)
 Get an uint16 from the server.
 
│ │ │ │ -int tds_get_varint_size (TDSCONNECTION *conn, int datatype)
 tds_get_varint_size() returns the size of a variable length integer returned in a result string
 
│ │ │ │ -void tds_getmac (TDS_SYS_SOCKET s, unsigned char mac[6])
 
│ │ │ │ -unsigned int tds_gettime_ms (void)
 
│ │ │ │ -int tds_goodread (TDSSOCKET *tds, unsigned char *buf, int buflen)
 Loops until we have received some characters return -1 on failure.
 
int tds_goodwrite (TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
 
│ │ │ │ -TDSAUTHENTICATIONtds_gss_get_auth (TDSSOCKET *tds)
 
int tds_iconv_alloc (TDSCONNECTION *conn)
 Allocate iconv stuff.
 
│ │ │ │ -void tds_iconv_close (TDSCONNECTION *conn)
 
│ │ │ │ -void tds_iconv_free (TDSCONNECTION *conn)
 
│ │ │ │ -TDSICONVtds_iconv_from_collate (TDSCONNECTION *conn, TDS_UCHAR collate[5])
 Get iconv information from a LCID (to support different column encoding under MSSQL2K)
 
│ │ │ │ -TDSRET tds_iconv_open (TDSCONNECTION *conn, const char *charset, int use_utf16)
 
TDSLOGINtds_init_login (TDSLOGIN *login, TDSLOCALE *locale)
 Initialize login structure with locale information and other stuff for connection.
 
│ │ │ │ -int tds_init_write_buf (TDSSOCKET *tds)
 
TDSDYNAMICtds_lookup_dynamic (TDSCONNECTION *conn, const char *id)
 Finds a dynamic given string id.
 
struct addrinfo * tds_lookup_host (const char *servername)
 Get the IP address for a hostname.
 
│ │ │ │ -TDSRET tds_lookup_host_set (const char *servername, struct addrinfo **addr)
 
│ │ │ │ -char * tds_money_to_string (const TDS_MONEY *money, char *s, bool use_2_digits)
 
│ │ │ │ -TDSRET tds_multiple_done (TDSSOCKET *tds, TDSMULTIPLE *multiple)
 
│ │ │ │ -TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)
 
│ │ │ │ -TDSRET tds_multiple_init (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS *head)
 
│ │ │ │ -TDSRET tds_multiple_query (TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO *params)
 
int tds_needs_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)
 Check if dynamic request must be unprepared.
 
const char * tds_next_placeholder (const char *start)
 Get position of next placeholder.
 
TDSAUTHENTICATIONtds_ntlm_get_auth (TDSSOCKET *tds)
 Build a NTLMSPP packet to send to server.
 
│ │ │ │ -TDS_INT tds_numeric_change_prec_scale (TDS_NUMERIC *numeric, unsigned char new_prec, unsigned char new_scale)
 
TDS_INT tds_numeric_to_string (const TDS_NUMERIC *numeric, char *s)
 
│ │ │ │ -TDSERRNO tds_open_socket (TDSSOCKET *tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr)
 
│ │ │ │ -int tds_parse_boolean (const char *value, int default_value)
 
│ │ │ │ -bool tds_parse_conf_section (const char *option, const char *value, void *param)
 
unsigned char tds_peek (TDSSOCKET *tds)
 Reads a byte from the TDS stream without removing it.
 
TDSRET tds_process_cancel (TDSSOCKET *tds)
 
TDSRET tds_process_login_tokens (TDSSOCKET *tds)
 tds_process_login_tokens() is called after sending the login packet to the server.
 
TDSRET tds_process_simple_query (TDSSOCKET *tds)
 Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results, beware they are discarded.
 
TDSRET tds_process_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
 process all streams.
 
const char * tds_prtype (int token)
 Returns string representation of the given type.
 
│ │ │ │ -char * tds_prwsaerror (int erc)
 
│ │ │ │ -void tds_prwsaerror_free (char *s)
 
│ │ │ │ -int tds_put_buf (TDSSOCKET *tds, const unsigned char *buf, int dsize, int ssize)
 
│ │ │ │ -int tds_put_byte (TDSSOCKET *tds, unsigned char c)
 
│ │ │ │ -int tds_put_cancel (TDSSOCKET *tds)
 
│ │ │ │ -int tds_put_int (TDSSOCKET *tds, TDS_INT i)
 
│ │ │ │ -int tds_put_int8 (TDSSOCKET *tds, TDS_INT8 i)
 
│ │ │ │ -int tds_put_n (TDSSOCKET *tds, const void *buf, size_t n)
 
│ │ │ │ -int tds_put_smallint (TDSSOCKET *tds, TDS_SMALLINT si)
 
int tds_put_string (TDSSOCKET *tds, const char *buf, int len)
 Output a string to wire automatic translate string to unicode if needed.
 
size_t tds_quote_id (TDSSOCKET *tds, char *buffer, const char *id, int idlen)
 Quote an id.
 
size_t tds_quote_id_rpc (TDSSOCKET *tds, char *buffer, const char *id, int idlen)
 Quote an id for a RPC call.
 
│ │ │ │ -size_t tds_quote_string (TDSSOCKET *tds, char *buffer, const char *str, int len)
 
│ │ │ │ -void tds_random_buffer (unsigned char *out, int len)
 
bool tds_read_conf_file (TDSLOGIN *login, const char *server)
 Read configuration info for given server return 0 on error.
 
bool tds_read_conf_section (FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param)
 Read a section of configuration file (INI style file)
 
TDSLOGINtds_read_config_info (TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)
 tds_read_config_info() will fill the tds connection structure based on configuration information gathered in the following order: 1) Program specified in TDSLOGIN structure 2) The environment variables TDSVER, TDSDUMP, TDSPORT, TDSQUERY, TDSHOST 3) A config file with the following search order: a) a readable file specified by environment variable FREETDSCONF b) a readable file in ~/.freetds.conf c) a readable file in $prefix/etc/freetds.conf 3) ~/.interfaces if exists 4) $SYBASE/interfaces if exists 5) TDS_DEF_* default values
 
int tds_read_packet (TDSSOCKET *tds)
 Read in one 'packet' from the server.
 
void * tds_realloc (void **pp, size_t new_size)
 Reallocate a pointer and update it if success.
 
│ │ │ │ -TDSPACKETtds_realloc_packet (TDSPACKET *packet, unsigned len)
 
│ │ │ │ -TDSSOCKETtds_realloc_socket (TDSSOCKET *tds, size_t bufsize)
 
│ │ │ │ -static void tds_release_cur_dyn (TDSSOCKET *tds)
 
│ │ │ │ -void tds_release_cursor (TDSCURSOR **pcursor)
 
void tds_release_dynamic (TDSDYNAMIC **dyn)
 Frees dynamic statement.
 
int tds_select (TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)
 Select on a socket until it's available or the timeout expires.
 
TDSRET tds_send_cancel (TDSSOCKET *tds)
 tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called directly after this.
 
│ │ │ │ -bool tds_set_app (TDSLOGIN *tds_login, const char *application) TDS_WUR
 
│ │ │ │ -void tds_set_bulk (TDSLOGIN *tds_login, bool enabled)
 
│ │ │ │ -bool tds_set_client_charset (TDSLOGIN *tds_login, const char *charset) TDS_WUR
 
void tds_set_column_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
 Set type of column initializing all dependency.
 
void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Set current dynamic.
 
│ │ │ │ -void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info)
 
│ │ │ │ -static void tds_set_current_send_packet (TDSSOCKET *tds, TDSPACKET *pkt)
 
│ │ │ │ -bool tds_set_host (TDSLOGIN *tds_login, const char *hostname) TDS_WUR
 
TDSRET tds_set_interfaces_file_loc (const char *interfloc)
 Set the full name of interface file.
 
│ │ │ │ -bool tds_set_language (TDSLOGIN *tds_login, const char *language) TDS_WUR
 
│ │ │ │ -bool tds_set_library (TDSLOGIN *tds_login, const char *library) TDS_WUR
 
│ │ │ │ -void tds_set_packet (TDSLOGIN *tds_login, int packet_size)
 
void tds_set_param_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
 Set type of column initializing all dependency.
 
│ │ │ │ -bool tds_set_passwd (TDSLOGIN *tds_login, const char *password) TDS_WUR
 
│ │ │ │ -void tds_set_port (TDSLOGIN *tds_login, int port)
 
bool tds_set_server (TDSLOGIN *tds_login, const char *server) TDS_WUR
 Set the servername in a TDSLOGIN structure.
 
TDS_STATE tds_set_state (TDSSOCKET *tds, TDS_STATE state)
 Set state of TDS connection, with logging and checking.
 
│ │ │ │ -bool tds_set_user (TDSLOGIN *tds_login, const char *username) TDS_WUR
 
│ │ │ │ -void tds_set_version (TDSLOGIN *tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver)
 
const char * tds_skip_comment (const char *s)
 Skip a comment in a query.
 
const char * tds_skip_quoted (const char *s)
 Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd])
 
int tds_socket_set_nonblocking (TDS_SYS_SOCKET sock)
 Set socket to non-blocking.
 
│ │ │ │ -void tds_srv_charset_changed (TDSCONNECTION *conn, const char *charset)
 
void tds_start_query (TDSSOCKET *tds, unsigned char packet_type)
 Start query packet of a given type.
 
TDSRET tds_submit_begin_tran (TDSSOCKET *tds)
 Send a rollback request.
 
TDSRET tds_submit_commit (TDSSOCKET *tds, bool cont)
 Send a commit request.
 
TDSRET tds_submit_execdirect (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
 Submit a prepared query with parameters.
 
TDSRET tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Sends a previously prepared dynamic statement to the server.
 
TDSRET tds_submit_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size)
 Send option commands to server.
 
TDSRET tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
 Creates a temporary stored procedure in the server.
 
TDSRET tds_submit_query (TDSSOCKET *tds, const char *query)
 Sends a language string to the database server for processing.
 
TDSRET tds_submit_query_params (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
 Sends a language string to the database server for processing.
 
TDSRET tds_submit_queryf (TDSSOCKET *tds, const char *queryf,...)
 Format and submit a query.
 
TDSRET tds_submit_rollback (TDSSOCKET *tds, bool cont)
 Send a rollback request.
 
TDSRET tds_submit_rpc (TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)
 Calls a RPC from server.
 
TDSRET tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Send a unprepare request for a prepared query.
 
│ │ │ │ -void tds_swap_bytes (void *buf, int bytes)
 
void tds_unget_byte (TDSSOCKET *tds)
 Unget will always work as long as you don't call it twice in a row.
 
│ │ │ │ -TDSRET tds_vstrbuild (char *buffer, int buflen, int *resultlen, const char *text, int textlen, const char *formats, int formatlen, va_list ap)
 
│ │ │ │ -void tds_wakeup_close (TDSPOLLWAKEUP *wakeup)
 
│ │ │ │ -static TDS_SYS_SOCKET tds_wakeup_get_fd (const TDSPOLLWAKEUP *wakeup)
 
│ │ │ │ -int tds_wakeup_init (TDSPOLLWAKEUP *wakeup)
 
│ │ │ │ -void tds_wakeup_send (TDSPOLLWAKEUP *wakeup, char cancel)
 
│ │ │ │ -TDSRET tds_write_packet (TDSSOCKET *tds, unsigned char final)
 
TDSRET tds_writetext_continue (TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size)
 Send some data in the writetext request started by tds_writetext_start.
 
TDSRET tds_writetext_end (TDSSOCKET *tds)
 Finish sending writetext data.
 
TDSRET tds_writetext_start (TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size)
 Start writing writetext request.
 
│ │ │ │ -void tdsdump_close (void)
 Close the TDS dump log file.
 
void tdsdump_col (const TDSCOLUMN *col)
 Write a column value to the debug log.
 
void tdsdump_dump_buf (const char *file, unsigned int level_line, const char *msg, const void *buf, size_t length)
 Dump the contents of data into the log file in a human readable format.
 
│ │ │ │ -int tdsdump_isopen (void)
 
void tdsdump_log (const char *file, unsigned int level_line, const char *fmt,...)
 Write a message to the debug log.
 
void tdsdump_off (TDSDUMP_OFF_ITEM *off_item)
 Temporarily turn off logging for current thread.
 
void tdsdump_on (TDSDUMP_OFF_ITEM *off_item)
 Turn logging back on for current thread.
 
int tdsdump_open (const tds_dir_char *filename)
 Create and truncate a human readable dump file for the TDS traffic.
 
int tdserror (const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)
 Call the client library's error handler (for library-generated errors only)
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ -Variables

│ │ │ │ -const char STD_DATETIME_FMT []
 
│ │ │ │ -int tds_append_mode
 
│ │ │ │ -int tds_debug_flags
 
│ │ │ │ -const char tds_hex_digits []
 
const int tds_numeric_bytes_per_prec []
 The following little table is indexed by precision and will tell us the number of bytes required to store the specified precision.
 
│ │ │ │ -const uint16_t tds_type_flags_ms [256]
 
│ │ │ │ -bool tds_write_dump
 Tell if TDS debug logging is turned on or off.
 
│ │ │ │ +int tds_poll (struct pollfd fds[], size_t nfds, int timeout)
 
│ │ │ │

Detailed Description

│ │ │ │ -

Main include file for libtds.

│ │ │ │ -

Macro Definition Documentation

│ │ │ │ - │ │ │ │ -

◆ TDS_BYTE_SWAP16

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_BYTE_SWAP16( value)
│ │ │ │ -
│ │ │ │ -Value:
(((((uint16_t)value)<<8) & 0xFF00u) | \
│ │ │ │ -
((((uint16_t)value)>>8) & 0x00FFu))
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_BYTE_SWAP32

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_BYTE_SWAP32( value)
│ │ │ │ -
│ │ │ │ -Value:
(((((uint32_t)value)<<24) & 0xFF000000u)| \
│ │ │ │ -
((((uint32_t)value)<< 8) & 0x00FF0000u)| \
│ │ │ │ -
((((uint32_t)value)>> 8) & 0x0000FF00u)| \
│ │ │ │ -
((((uint32_t)value)>>24) & 0x000000FFu))
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_IS_MSSQL

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_IS_MSSQL( x)   (((x)->conn->product_version & 0x80000000u)!=0)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Check if product is Microsoft SQL Server.

│ │ │ │ -

x should be a TDSSOCKET*.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_IS_SYBASE

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_IS_SYBASE( x)   (!((x)->conn->product_version & 0x80000000u))
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Check if product is Sybase (such as Adaptive Server Enterprise).

│ │ │ │ -

x should be a TDSSOCKET*.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_MS_VER

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_MS_VER( maj,
 min,
 
)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Calc a version number for mssql.

│ │ │ │ -

Use with TDS_MS_VER(7,0,842). For test for a range of version you can use check like if (tds->product_version >= TDS_MS_VER(7,0,0) && tds->product_version < TDS_MS_VER(8,0,0))

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_START_LEN_GENERIC

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define TDS_START_LEN_GENERIC( tds_socket,
 len 
)
│ │ │ │ -
│ │ │ │ -Value:
do { \
│ │ │ │ -
TDSFREEZE current_freeze[1]; \
│ │ │ │ -
tds_freeze((tds_socket), current_freeze, (len)); do { do
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ -
Definition tds.h:1584
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -

Typedef Documentation

│ │ │ │ - │ │ │ │ -

◆ TDS_COMPILETIME_SETTINGS

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
typedef struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

A structure to hold all the compile-time settings.

│ │ │ │ -

This structure is returned by tds_get_compiletime_settings

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDS_ENCODING

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
typedef struct tds_encoding TDS_ENCODING
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Information relevant to libiconv.

│ │ │ │ -

The name is an iconv name, not the same as found in master..syslanguages.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ TDSBLOB

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
typedef struct tds_blob TDSBLOB
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Information about blobs (e.g.

│ │ │ │ -

text or image). current_row contains this structure.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -

Enumeration Type Documentation

│ │ │ │ - │ │ │ │ -

◆ tds_states

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
enum tds_states
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

values for tds->state

│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
Enumerator
TDS_IDLE 

no data expected

│ │ │ │ -
TDS_WRITING 

client is writing data

│ │ │ │ -
TDS_SENDING 

client would send data

│ │ │ │ -
TDS_PENDING 

cilent is waiting for data

│ │ │ │ -
TDS_READING 

client is reading data

│ │ │ │ -
TDS_DEAD 

no connection

│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -

Function Documentation

│ │ │ │ - │ │ │ │ -

◆ tds_bcp_done()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_done (TDSSOCKETtds,
int * rows_copied 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Tell we finished sending BCP data to server.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
[out]rows_copiednumber of rows copied to server
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_bcp_fread()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_fread (TDSSOCKETtds,
TDSICONVchar_conv,
FILE * stream,
const char * terminator,
size_t term_len,
char ** outbuf,
size_t * outbytes 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Read a data file, passing the data through iconv().

│ │ │ │ -
Return values
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDS_SUCCESSsuccess
TDS_FAILerror reading the column
TDS_NO_MORE_RESULTSend of file detected
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_bcp_init()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_init (TDSSOCKETtds,
TDSBCPINFObcpinfo 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Initialize BCP information.

│ │ │ │ -

Query structure of the table to server.

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
bcpinfoBCP information to initialize. Structure should be allocate and table name and direction should be already set.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_bcp_send_record()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_send_record (TDSSOCKETtds,
TDSBCPINFObcpinfo,
tds_bcp_get_col_data get_col_data,
tds_bcp_null_error null_error,
int offset 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Send one row of data to server.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
bcpinfoBCP information
get_col_datafunction to call to retrieve data to be sent
ignoredfunction to call if we try to send NULL if not allowed (not used)
offsetpassed to get_col_data and null_error to specify the row to get
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
Returns
TDS_SUCCESS or TDS_FAIL.
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_bcp_start()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_start (TDSSOCKETtds,
TDSBCPINFObcpinfo 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Start sending BCP data to server.

│ │ │ │ -

Initialize stream to accept data.

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
bcpinfoBCP information already prepared
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_bcp_start_copy_in()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_bcp_start_copy_in (TDSSOCKETtds,
TDSBCPINFObcpinfo 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Start bulk copy to server.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
bcpinfoBCP information already prepared
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_get_conversion_type()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDS_SERVER_TYPE tds_get_conversion_type (TDS_SERVER_TYPE srctype,
int colsize 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Return type suitable for conversions (convert all nullable types to fixed type)

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
srctypetype to convert
colsizesize of type
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
Returns
type for conversion
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_get_locale()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSLOCALE * tds_get_locale (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Get locale information.

│ │ │ │ -
Returns
allocated structure with all information or NULL if error
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_iconv_alloc()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
int tds_iconv_alloc (TDSCONNECTIONconn)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Allocate iconv stuff.

│ │ │ │ -
Returns
0 for success
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_numeric_to_string()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDS_INT tds_numeric_to_string (const TDS_NUMERICnumeric,
char * s 
)
│ │ │ │ -
│ │ │ │ -
Returns
<0 if error
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_set_column_type()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tds_set_column_type (TDSCONNECTIONconn,
TDSCOLUMNcurcol,
TDS_SERVER_TYPE type 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Set type of column initializing all dependency.

│ │ │ │ -

column_usertype should already be set.

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
curcolcolumn to set
typetype to set
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_set_param_type()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tds_set_param_type (TDSCONNECTIONconn,
TDSCOLUMNcurcol,
TDS_SERVER_TYPE type 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Set type of column initializing all dependency.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsstate information for the socket and the TDS protocol
curcolcolumn to set
typetype to set
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_set_server()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
bool tds_set_server (TDSLOGINtds_login,
const char * server 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Set the servername in a TDSLOGIN structure.

│ │ │ │ -

Normally copies server into tds_login. If server does not point to a plausible name, the environment variables TDSQUERY and DSQUERY are used, in that order. If they don't exist, the "default default" servername is "SYBASE" (although the utility of that choice is a bit murky).
│ │ │ │ -

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tds_loginpoints to a TDSLOGIN structure
serverthe servername, or NULL, or a zero-length string
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
Todo:
open the log file earlier, so these messages can be seen.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_set_state()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDS_STATE tds_set_state (TDSSOCKETtds,
TDS_STATE state 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Set state of TDS connection, with logging and checking.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsstate information for the socket and the TDS protocol
statethe new state of the connection, cf. TDS_STATE.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
Returns
the new state, which might not be state.
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_writetext_continue()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_writetext_continue (TDSSOCKETtds,
const TDS_UCHAR * text,
TDS_UINT size 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Send some data in the writetext request started by tds_writetext_start.

│ │ │ │ -

You should write in total (with multiple calls to this function) all bytes declared calling tds_writetext_start.

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
textdata to write
sizedata size in bytes
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_writetext_end()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_writetext_end (TDSSOCKETtds)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Finish sending writetext data.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tds_writetext_start()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
TDSRET tds_writetext_start (TDSSOCKETtds,
const char * objname,
const char * textptr,
const char * timestamp,
int with_log,
TDS_UINT size 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Start writing writetext request.

│ │ │ │ -

This request start a bulk session.

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
objnametable name
textptrTEXTPTR (see sql documentation)
timestampdata timestamp
with_logis log is enabled during insert
sizebytes to be inserted
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the caller graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_col()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tdsdump_col (const TDSCOLUMNcol)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Write a column value to the debug log.

│ │ │ │ -


│ │ │ │ -

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
colcolumn to dump
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_dump_buf()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tdsdump_dump_buf (const char * file,
unsigned int level_line,
const char * msg,
const void * buf,
size_t length 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Dump the contents of data into the log file in a human readable format.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
filesource file name
level_lineline and level combined. This and file are automatically computed by TDS_DBG_* macros.
msgmessage to print before dump
bufbuffer to dump
lengthnumber of bytes in the buffer
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_log()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tdsdump_log (const char * file,
unsigned int level_line,
const char * fmt,
 ... 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Write a message to the debug log.

│ │ │ │ -


│ │ │ │ -

Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
filename of the log file
level_linekind of detail to be included
fmtprintf-like format string
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_off()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tdsdump_off (TDSDUMP_OFF_ITEMoff_item)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Temporarily turn off logging for current thread.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
off_itemList item to be used by the function. The item will be initialized by the function. It's retained till is removed with tdsdump_on so it must be kept alive.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_on()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void tdsdump_on (TDSDUMP_OFF_ITEMoff_item)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Turn logging back on for current thread.

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
off_itemList item to remove from global list. Previously used by tdsdump_off().
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdsdump_open()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
int tdsdump_open (const tds_dir_char * filename)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Create and truncate a human readable dump file for the TDS traffic.

│ │ │ │ -

The name of the file is specified by the filename parameter. If that is given as NULL or an empty string, any existing log file will be closed.

│ │ │ │ -
Returns
true if the file was opened, false if it couldn't be opened.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ tdserror()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
int tdserror (const TDSCONTEXTtds_ctx,
TDSSOCKETtds,
int msgno,
int errnum 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Call the client library's error handler (for library-generated errors only)

│ │ │ │ -

The client library error handler may return: TDS_INT_CANCEL – Return TDS_FAIL to the calling function. For TDSETIME, closes the connection first. TDS_INT_CONTINUE – For TDSETIME only, retry the network read/write operation. Else invalid. TDS_INT_TIMEOUT – For TDSETIME only, send a TDSCANCEL packet. Else invalid.

│ │ │ │ -

These are Sybase semantics, but they serve all purposes.
│ │ │ │ - The application tells the library to quit, fail, retry, or attempt to cancel. In the event of a network timeout, a failed operation necessarily means the connection becomes unusable, because no cancellation dialog was concluded with the server.
│ │ │ │ -

│ │ │ │ -

It is the client library's duty to call the error handler installed by the application, if any, and to interpret the installed handler's return code. It may return to this function one of the above codes only. This function will not check the return code because there's nothing that can be done here except abort. It is merely passed to the calling function, which will (we hope) DTRT.
│ │ │ │ -

│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
tds_ctxpoints to a TDSCONTEXT structure
tdsthe connection structure, may be NULL if not connected
msgnoan enumerated libtds msgno, cf. tds.h
errnumthe OS errno, if it matters, else zero
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
Returns
client library function's return code
│ │ │ │ -
│ │ │ │ -Here is the call graph for this function:
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -

Variable Documentation

│ │ │ │ - │ │ │ │ -

◆ tds_numeric_bytes_per_prec

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
const int tds_numeric_bytes_per_prec[]
│ │ │ │ -
│ │ │ │ -extern
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

The following little table is indexed by precision and will tell us the number of bytes required to store the specified precision.

│ │ │ │ -

The following little table is indexed by precision and will tell us the number of bytes required to store the specified precision.

│ │ │ │ -

Support precision up to 77 digits

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +

Provide poll call where missing.

│ │ │ │ +
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,1907 +1,55 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -Classes | Macros | Typedefs | Enumerations | Functions | Variables │ │ │ │ │ -tds.h File Reference │ │ │ │ │ -Main include file for libtds. More... │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ + * replacements │ │ │ │ │ +Classes | Macros | Typedefs | Functions │ │ │ │ │ +poll.h File Reference │ │ │ │ │ +Provide poll call where missing. More... │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for tds.h: │ │ │ │ │ +Include dependency graph for poll.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ Classes │ │ │ │ │ -struct   tds5_colinfo │ │ │ │ │ -  │ │ │ │ │ - union   tds_align_struct │ │ │ │ │ -  │ │ │ │ │ -struct   tds_authentication │ │ │ │ │ -  │ │ │ │ │ -struct   tds_bcpcoldata │ │ │ │ │ -  │ │ │ │ │ -struct   tds_bcpinfo │ │ │ │ │ -  │ │ │ │ │ -struct   tds_blob │ │ │ │ │ -  Information about blobs (e.g. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_capabilities │ │ │ │ │ -  │ │ │ │ │ -struct   tds_capability_type │ │ │ │ │ -  │ │ │ │ │ -struct   tds_column │ │ │ │ │ -  Metadata about columns in regular and compute rows. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_column_funcs │ │ │ │ │ -  │ │ │ │ │ -struct   tds_compiletime_settings │ │ │ │ │ -  A structure to hold all the compile-time settings. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_connection │ │ │ │ │ -  │ │ │ │ │ -struct   tds_context │ │ │ │ │ -  │ │ │ │ │ -struct   tds_cursor │ │ │ │ │ -  Holds information about a cursor. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_cursor_status │ │ │ │ │ -  │ │ │ │ │ -struct   TDS_DATETIMEALL │ │ │ │ │ -  This structure is not directly connected to TDS protocol but keeps any │ │ │ │ │ - DATE/TIME information. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_dynamic │ │ │ │ │ -  Holds information for a dynamic (also called prepared) query. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_encoding │ │ │ │ │ -  Information relevant to libiconv. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_env │ │ │ │ │ -  Current environment as reported by the server. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_freeze │ │ │ │ │ -  │ │ │ │ │ -struct   tds_headers │ │ │ │ │ -  │ │ │ │ │ -struct   tds_locale │ │ │ │ │ -  │ │ │ │ │ -struct   tds_login │ │ │ │ │ -  │ │ │ │ │ -struct   tds_message │ │ │ │ │ -  │ │ │ │ │ -struct   tds_multiple │ │ │ │ │ -  │ │ │ │ │ - union   tds_option_arg │ │ │ │ │ -  │ │ │ │ │ -struct   tds_packet │ │ │ │ │ -  │ │ │ │ │ -struct   tds_poll_wakeup │ │ │ │ │ -  │ │ │ │ │ -struct   tds_result_info │ │ │ │ │ -  Hold information for any results. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_socket │ │ │ │ │ -  Information for a server connection. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tds_tvp │ │ │ │ │ -  │ │ │ │ │ -struct   tds_tvp_row │ │ │ │ │ -  │ │ │ │ │ -struct   tds_upd_col │ │ │ │ │ -  │ │ │ │ │ -struct   tds_variant │ │ │ │ │ -  Store variant information. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tdsdaterec │ │ │ │ │ -  Used by tds_datecrack. More... │ │ │ │ │ -  │ │ │ │ │ -struct   tdsdump_off_item │ │ │ │ │ +struct   pollfd │ │ │ │ │   │ │ │ │ │ Macros │ │ │ │ │ -#define  is_ascii_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_binary_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != │ │ │ │ │ - 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_blob_col(x)   ((x)->column_varint_size > 2) │ │ │ │ │ -  │ │ │ │ │ -#define  is_blob_type(x)   ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT) │ │ │ │ │ -  │ │ │ │ │ -#define  is_char_type(x)   ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_ │ │ │ │ │ - TYPEFLAG_UNICODE)) != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_collate_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != │ │ │ │ │ - 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_datetime_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) │ │ │ │ │ - != 0) │ │ │ │ │ -  return true if type is a datetime (but not date or time) │ │ │ │ │ -  │ │ │ │ │ -#define  is_end_token(x)   ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_ │ │ │ │ │ - TOKEN) │ │ │ │ │ -  │ │ │ │ │ -#define  is_fixed_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_nullable_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) │ │ │ │ │ - != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_numeric_type(x)   ((x)==SYBNUMERIC || (x)==SYBDECIMAL) │ │ │ │ │ -  │ │ │ │ │ -#define  is_similar_type(x, y)   (is_char_type(x) && is_char_type(y)) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS42(x)   (x->tds_version==0x402) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS46(x)   (x->tds_version==0x406) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS50(x)   (x->tds_version==0x500) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS50_PLUS(x)   ((x)->tds_version>=0x500) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS70(x)   (x->tds_version==0x700) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS71(x)   (x->tds_version==0x701) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS71_PLUS(x)   ((x)->tds_version>=0x701) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS72(x)   (x->tds_version==0x702) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS72_PLUS(x)   ((x)->tds_version>=0x702) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS73(x)   (x->tds_version==0x703) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS73_PLUS(x)   ((x)->tds_version>=0x703) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS74_PLUS(x)   ((x)->tds_version>=0x704) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS7_PLUS(x)   ((x)->tds_version>=0x700) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDS80_PLUS(x)   ((x)->tds_version>=0x800) │ │ │ │ │ -  │ │ │ │ │ -#define  IS_TDSDEAD(x)   (((x) == NULL) || (x)->state == TDS_DEAD) │ │ │ │ │ -  │ │ │ │ │ -#define  is_unicode_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != │ │ │ │ │ - 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_variable_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) │ │ │ │ │ - != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  is_variant_inner_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ │ │ │ │ │ - VARIANT) != 0) │ │ │ │ │ -  │ │ │ │ │ -#define  MAXPRECISION   77 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_ALIGN_SIZE   sizeof(tds_align_struct) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_BYTE_SWAP16(value) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_BYTE_SWAP32(value) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_CANCELLED   ((TDSRET)-2) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_capability_has_req(conn, cap)    tds_capability_enabled(&conn- │ │ │ │ │ - >capabilities.types[0], cap) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_capability_has_res(conn, cap)    tds_capability_enabled(&conn- │ │ │ │ │ - >capabilities.types[1], cap) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_CMD_DONE   4046 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_CMD_FAIL   4048 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_CMD_SUCCEED   4047 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_COMPUTE_RESULT   4045 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_COMPUTEFMT_RESULT   4050 │ │ │ │ │ -  │ │ │ │ │ -#define  tds_convert_string_free(original, converted)    do { if (original != │ │ │ │ │ - converted) free((char*) converted); } while(0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_ERROR   __FILE__, ((__LINE__ << 4) | 2) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_FUNC   __FILE__, ((__LINE__ << 4) | 7) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_HEADER   __FILE__, ((__LINE__ << 4) | 10) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_INFO1   __FILE__, ((__LINE__ << 4) | 5) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_INFO2   __FILE__, ((__LINE__ << 4) | 6) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_LOGIN   __FILE__, ((__LINE__ << 4) | 11) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_NETWORK   __FILE__, ((__LINE__ << 4) | 4) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_SEVERE   __FILE__, ((__LINE__ << 4) | 1) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBG_WARN   __FILE__, ((__LINE__ << 4) | 3) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_ALL   0xfff │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_ERROR   0x04 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_FUNC   0x80 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_HEADER   0x0400 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_INFO1   0x20 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_INFO2   0x40 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_LOGIN   0x0800 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_NETWORK   0x10 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_PID   0x1000 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_SEVERE   0x02 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_SOURCE   0x4000 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_THREAD   0x8000 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_TIME   0x2000 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DBGFLAG_WARN   0x08 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEF_BLKSZ   512 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEF_CHARSET   "iso_1" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEF_LANG   "us_english" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEF_PORT   1433 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEF_SERVER   "SYBASE" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DEFAULT_VERSION   0x000 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DESCRIBE_RESULT   4051 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DONE_RESULT   4052 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DONEINPROC_RESULT   4054 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_DONEPROC_RESULT   4053 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_END_LEN   while(0); } while(tds_freeze_close(current_freeze), 0); │ │ │ │ │ - } while(0); │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_END_LEN_STRING   while(0); } while(tds_freeze_close_string │ │ │ │ │ - (current_freeze), 0); } while(0); │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_FAIL   ((TDSRET)-1) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_FAILED(rc)   ((rc)<0) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_ctx(tds)   ((tds)->conn->tds_ctx) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_int(tds)   ((TDS_INT) tds_get_uint(tds)) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_int8(tds)   ((TDS_INT8) tds_get_uint8(tds)) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_parent(tds)   ((tds)->parent) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_s(tds)   ((tds)->conn->s) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_get_smallint(tds)   ((TDS_SMALLINT) tds_get_usmallint(tds)) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_GSSAPI_DELEGATION   "enable gssapi delegation" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_INT_CANCEL   2 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_INT_CONTINUE   1 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_INT_TIMEOUT   3 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_INVALID_TYPE   ((TDS_SERVER_TYPE) 0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_IS_MSSQL(x)   (((x)->conn->product_version & 0x80000000u)!=0) │ │ │ │ │ -  Check if product is Microsoft SQL Server. │ │ │ │ │ +#define  _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_ │ │ │ │ │   │ │ │ │ │ -#define  TDS_IS_SYBASE(x)   (!((x)->conn->product_version & 0x80000000u)) │ │ │ │ │ -  Check if product is Sybase (such as Adaptive Server Enterprise). │ │ │ │ │ +#define  poll(fds, nfds, timeout)   tds_poll(fds, nfds, timeout) │ │ │ │ │   │ │ │ │ │ -#define  TDS_MAJOR(x)   ((x)->tds_version >> 8) │ │ │ │ │ +#define  POLLERR   0x0008 │ │ │ │ │   │ │ │ │ │ -#define  TDS_MAX_CAPABILITY   32 │ │ │ │ │ +#define  POLLHUP   0x0010 │ │ │ │ │   │ │ │ │ │ -#define  TDS_MAX_CONN   4096 │ │ │ │ │ +#define  POLLIN   0x0001 │ │ │ │ │   │ │ │ │ │ -#define  TDS_MAX_DYNID_LEN   30 │ │ │ │ │ +#define  POLLNORM   POLLIN │ │ │ │ │   │ │ │ │ │ -#define  TDS_MAX_LOGIN_STR_SZ   128 │ │ │ │ │ +#define  POLLNVAL   0x0020 │ │ │ │ │   │ │ │ │ │ -#define  TDS_MINOR(x)   ((x)->tds_version & 0xff) │ │ │ │ │ +#define  POLLOUT   0x0004 │ │ │ │ │   │ │ │ │ │ -#define  TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x)) │ │ │ │ │ -  Calc a version number for mssql. │ │ │ │ │ +#define  POLLPRI   POLLIN │ │ │ │ │   │ │ │ │ │ -#define  TDS_MSG_RESULT   4044 │ │ │ │ │ +#define  POLLRDBAND   POLLIN │ │ │ │ │   │ │ │ │ │ -#define  TDS_NO_COUNT   -1 │ │ │ │ │ +#define  POLLRDNORM   POLLIN │ │ │ │ │   │ │ │ │ │ -#define  TDS_NO_MORE_RESULTS   ((TDSRET)1) │ │ │ │ │ +#define  POLLWRBAND   POLLOUT │ │ │ │ │   │ │ │ │ │ -#define  TDS_NULLTERM   -9 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_OTHERS_RESULT   4055 │ │ │ │ │ -  │ │ │ │ │ -#define  tds_packet_get_data_start(pkt)   0 │ │ │ │ │ -  │ │ │ │ │ -#define  tds_packet_zero_data_start(pkt)   do { } while(0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_PARAM_RESULT   4042 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_PROPAGATE(rc)    do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ │ │ │ │ │ - ret)) return _tds_ret; } while(0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_PUT_BYTE(tds, v)   tds_put_byte((tds), ((unsigned char)(v))) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_PUT_INT(tds, v)   tds_put_int((tds), ((TDS_INT)(v))) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_PUT_SMALLINT(tds, v)   tds_put_smallint((tds), ((TDS_SMALLINT) │ │ │ │ │ - (v))) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_put_tinyint(tds, ti)   tds_put_byte(tds,ti) │ │ │ │ │ -  Output a tinyint value. │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_RESIZE(p, n_elem)    tds_realloc((void **) &(p), sizeof(*(p)) * │ │ │ │ │ - (size_t) (n_elem)) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_ROW_RESULT   4040 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_ROWFMT_RESULT   4049 │ │ │ │ │ -  │ │ │ │ │ -#define  tds_set_ctx(tds, val)   do { ((tds)->conn->tds_ctx) = (val); } while │ │ │ │ │ - (0) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_set_parent(tds, val)   do { ((tds)->parent) = (val); } while(0) │ │ │ │ │ -  │ │ │ │ │ -#define  tds_set_s(tds, val)   do { ((tds)->conn->s) = (val); } while(0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_START_LEN_GENERIC(tds_socket, len) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_START_LEN_TINYINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, │ │ │ │ │ - 1) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_START_LEN_UINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 4) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_START_LEN_USMALLINT(tds_socket)   TDS_START_LEN_GENERIC(tds_ │ │ │ │ │ - socket, 2) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STATUS_RESULT   4043 │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_APPENDMODE   "dump file append" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ASA_DATABASE   "asa database" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_BLKSZ   "initial block size" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CAFILE   "ca file" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CHARSET   "charset" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CHECKSSLHOSTNAME   "check certificate hostname" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CLCHARSET   "client charset" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CONNTIMEOUT   "connect timeout" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_CRLFILE   "crl file" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DATABASE   "database" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DATEFMT   "date-only format" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DATETIMEFMT   "date format" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DBFILENAME   "database filename" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DEBUGFLAGS   "debug flags" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DEBUGLVL   "debug level" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_DUMPFILE   "dump file" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_EMUL_LE   "emulate little endian" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENABLE_TLS_V1   "enable tls v1" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENCRYPTION   "encryption" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENCRYPTION_OFF   "off" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENCRYPTION_REQUEST   "request" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENCRYPTION_REQUIRE   "require" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_ENCRYPTION_STRICT   "strict" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_HOST   "host" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_HOSTNAME   "hostname" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_INSTANCE   "instance" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_LANGUAGE   "language" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_MUTUAL_AUTHENTICATION   "mutual authentication" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_PORT   "port" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_QUERY_TIMEOUT   "query timeout" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_READONLY_INTENT   "read-only intent" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_REALM   "realm" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_SPN   "spn" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_SSLHOSTNAME   "certificate hostname" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_SWAPDT   "swap broken dates" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_TEXTSZ   "text size" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_TIMEFMT   "time-only format" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_TIMEOUT   "timeout" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_USE_UTF_16   "use utf-16" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_USELANMAN   "use lanman" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_USENTLMV2   "use ntlmv2" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_STR_VERSION   "tds version" │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_SUCCEED(rc)   ((rc)>=0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_SUCCESS   ((TDSRET)0) │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_SYB_VER(maj, min, x)   (((maj)<<24)|((min)<<16)|(x)<<8) │ │ │ │ │ -  Calc a version number for Sybase. │ │ │ │ │ -  │ │ │ │ │ -#define  TDS_TOKEN_FLAG(flag)   TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_ │ │ │ │ │ - ##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2)) │ │ │ │ │ -  │ │ │ │ │ -#define  TDSDUMP_BUF_FAST   if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf │ │ │ │ │ -  │ │ │ │ │ -#define  tdsdump_dump_buf   TDSDUMP_BUF_FAST │ │ │ │ │ -  │ │ │ │ │ -#define  tdsdump_log   TDSDUMP_LOG_FAST │ │ │ │ │ -  │ │ │ │ │ -#define  TDSDUMP_LOG_FAST   if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log │ │ │ │ │ -  │ │ │ │ │ -#define  TDSSELREAD   POLLIN │ │ │ │ │ -  │ │ │ │ │ -#define  TDSSELWRITE   POLLOUT │ │ │ │ │ -  │ │ │ │ │ -#define  TLS_STR_OPENSSL_CIPHERS   "openssl ciphers" │ │ │ │ │ +#define  POLLWRNORM   POLLOUT │ │ │ │ │   │ │ │ │ │ Typedefs │ │ │ │ │ - typedef struct tds_bcpcoldata  BCPCOLDATA │ │ │ │ │ -  │ │ │ │ │ - typedef int(*  err_handler_t) (const TDSCONTEXT *, │ │ │ │ │ - TDSSOCKET *, TDSMESSAGE *) │ │ │ │ │ -  │ │ │ │ │ - typedef int(*  int_handler_t) (void *) │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds5_colinfo  TDS5COLINFO │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRET(*  tds_bcp_get_col_data) (TDSBCPINFO *bulk, │ │ │ │ │ - TDSCOLUMN *bcpcol, int offset) │ │ │ │ │ -  │ │ │ │ │ - typedef void(*  tds_bcp_null_error) (TDSBCPINFO *bulk, int │ │ │ │ │ - index, int offset) │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_capabilities  TDS_CAPABILITIES │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_capability_type  TDS_CAPABILITY_TYPE │ │ │ │ │ -  │ │ │ │ │ - typedef char  TDS_CHAR │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_compiletime_ │ │ │ │ │ - settings  TDS_COMPILETIME_SETTINGS │ │ │ │ │ -  A structure to hold all the compile-time │ │ │ │ │ - settings. │ │ │ │ │ -  │ │ │ │ │ - typedef enum tds_cursor_fetch  TDS_CURSOR_FETCH │ │ │ │ │ -  │ │ │ │ │ - typedef enum tds_cursor_operation  TDS_CURSOR_OPERATION │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_cursor_status  TDS_CURSOR_STATUS │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_encoding  TDS_ENCODING │ │ │ │ │ -  Information relevant to libiconv. │ │ │ │ │ -  │ │ │ │ │ - typedef enum tds_encryption_level  TDS_ENCRYPTION_LEVEL │ │ │ │ │ -  │ │ │ │ │ - typedef tds_sysdep_real64_type  TDS_FLOAT │ │ │ │ │ -  │ │ │ │ │ - typedef int  tds_func_check(const TDSCOLUMN *col) │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRET  tds_func_get_data(TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *col) │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRET  tds_func_get_info(TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *col) │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRET  tds_func_put_data(TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *col, int bcp7) │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRET  tds_func_put_info(TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *col) │ │ │ │ │ -  │ │ │ │ │ - typedef TDS_INT  tds_func_row_len(TDSCOLUMN *col) │ │ │ │ │ -  │ │ │ │ │ - typedef int32_t  TDS_INT │ │ │ │ │ -  │ │ │ │ │ - typedef int64_t  TDS_INT8 │ │ │ │ │ -  │ │ │ │ │ - typedef enum tds_operations  TDS_OPERATION │ │ │ │ │ -  │ │ │ │ │ - typedef union tds_option_arg  TDS_OPTION_ARG │ │ │ │ │ -  │ │ │ │ │ - typedef tds_sysdep_real32_type  TDS_REAL │ │ │ │ │ -  │ │ │ │ │ - typedef int16_t  TDS_SMALLINT │ │ │ │ │ -  │ │ │ │ │ - typedef enum tds_states  TDS_STATE │ │ │ │ │ -  values for tds->state │ │ │ │ │ -  │ │ │ │ │ - typedef uint8_t  TDS_TINYINT │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_tvp  TDS_TVP │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_tvp_row  TDS_TVP_ROW │ │ │ │ │ -  │ │ │ │ │ - typedef uint8_t  TDS_UCHAR │ │ │ │ │ -  │ │ │ │ │ - typedef uint32_t  TDS_UINT │ │ │ │ │ -  │ │ │ │ │ - typedef uint64_t  TDS_UINT8 │ │ │ │ │ -  │ │ │ │ │ - typedef uint16_t  TDS_USMALLINT │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_authentication  TDSAUTHENTICATION │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_bcpinfo  TDSBCPINFO │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_blob  TDSBLOB │ │ │ │ │ -  Information about blobs (e.g. │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_column  TDSCOLUMN │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_column_funcs  TDSCOLUMNFUNCS │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_result_info  TDSCOMPUTEINFO │ │ │ │ │ -  │ │ │ │ │ - typedef bool(*  TDSCONFPARSE) (const char *option, const │ │ │ │ │ - char *value, void *param) │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_connection  TDSCONNECTION │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_context  TDSCONTEXT │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_cursor  TDSCURSOR │ │ │ │ │ -  Holds information about a cursor. │ │ │ │ │ -  │ │ │ │ │ - typedef struct tdsdaterec  TDSDATEREC │ │ │ │ │ -  Used by tds_datecrack. │ │ │ │ │ -  │ │ │ │ │ - typedef struct tdsdump_off_item  TDSDUMP_OFF_ITEM │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_dynamic  TDSDYNAMIC │ │ │ │ │ -  Holds information for a dynamic (also │ │ │ │ │ - called prepared) query. │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_env  TDSENV │ │ │ │ │ -  Current environment as reported by the │ │ │ │ │ - server. │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_freeze  TDSFREEZE │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_headers  TDSHEADERS │ │ │ │ │ -  │ │ │ │ │ - typedef struct tdsiconvinfo  TDSICONV │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_locale  TDSLOCALE │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_login  TDSLOGIN │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_message  TDSMESSAGE │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_multiple  TDSMULTIPLE │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_packet  TDSPACKET │ │ │ │ │ -  │ │ │ │ │ - typedef TDSRESULTINFO  TDSPARAMINFO │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_poll_wakeup  TDSPOLLWAKEUP │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_result_info  TDSRESULTINFO │ │ │ │ │ -  Hold information for any results. │ │ │ │ │ -  │ │ │ │ │ - typedef int  TDSRET │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_socket  TDSSOCKET │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_upd_col  TDSUPDCOL │ │ │ │ │ -  │ │ │ │ │ - typedef struct tds_variant  TDSVARIANT │ │ │ │ │ -  Store variant information. │ │ │ │ │ -  │ │ │ │ │ -Enumerations │ │ │ │ │ -enum   { │ │ │ │ │ -   TDS_CUR_ISTAT_UNUSED = 0x00 , TDS_CUR_ISTAT_DECLARED = 0x01 , TDS_CUR_ │ │ │ │ │ - ISTAT_OPEN = 0x02 , TDS_CUR_ISTAT_CLOSED = 0x04 , │ │ │ │ │ -   TDS_CUR_ISTAT_RDONLY = 0x08 , TDS_CUR_ISTAT_UPDATABLE = 0x10 , TDS_ │ │ │ │ │ - CUR_ISTAT_ROWCNT = 0x20 , TDS_CUR_ISTAT_DEALLOC = 0x40 │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   { │ │ │ │ │ -   TDS_TYPEFLAG_INVALID = 0 , TDS_TYPEFLAG_NULLABLE = 1 , TDS_TYPEFLAG_ │ │ │ │ │ - FIXED = 2 , TDS_TYPEFLAG_VARIABLE = 4 , │ │ │ │ │ -   TDS_TYPEFLAG_COLLATE = 8 , TDS_TYPEFLAG_ASCII = 16 , TDS_TYPEFLAG_ │ │ │ │ │ - UNICODE = 32 , TDS_TYPEFLAG_BINARY = 64 , │ │ │ │ │ -   TDS_TYPEFLAG_DATETIME = 128 , TDS_TYPEFLAG_NUMERIC = 256 , TDS_ │ │ │ │ │ - TYPEFLAG_VARIANT = 512 │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_bcp_directions { TDS_BCP_IN = 1 , TDS_BCP_OUT = 2 , TDS_BCP_QUERYOUT │ │ │ │ │ - = 3 } │ │ │ │ │ -  bcp direction │ │ │ │ │ -  │ │ │ │ │ -enum   tds_cursor_fetch { │ │ │ │ │ -   TDS_CURSOR_FETCH_NEXT = 1 , TDS_CURSOR_FETCH_PREV , TDS_CURSOR_FETCH_ │ │ │ │ │ - FIRST , TDS_CURSOR_FETCH_LAST , │ │ │ │ │ -   TDS_CURSOR_FETCH_ABSOLUTE , TDS_CURSOR_FETCH_RELATIVE │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_cursor_operation { TDS_CURSOR_POSITION = 0 , TDS_CURSOR_UPDATE = 1 , │ │ │ │ │ - TDS_CURSOR_DELETE = 2 , TDS_CURSOR_INSERT = 4 } │ │ │ │ │ -  │ │ │ │ │ -enum   TDS_CURSOR_STATE { TDS_CURSOR_STATE_UNACTIONED = 0 , TDS_CURSOR_STATE_ │ │ │ │ │ - REQUESTED = 1 , TDS_CURSOR_STATE_SENT = 2 , TDS_CURSOR_STATE_ACTIONED = │ │ │ │ │ - 3 } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_encryption_level { │ │ │ │ │ -   TDS_ENCRYPTION_DEFAULT , TDS_ENCRYPTION_OFF , TDS_ENCRYPTION_REQUEST , │ │ │ │ │ - TDS_ENCRYPTION_REQUIRE , │ │ │ │ │ -   TDS_ENCRYPTION_STRICT │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   TDS_ICONV_ENTRY { client2ucs2 , client2server_chardata , initial_char_ │ │ │ │ │ - conv_count } │ │ │ │ │ -  │ │ │ │ │ -enum   TDS_MULTIPLE_TYPE { TDS_MULTIPLE_QUERY , TDS_MULTIPLE_EXECUTE , TDS_ │ │ │ │ │ - MULTIPLE_RPC } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_operations { │ │ │ │ │ -   TDS_OP_NONE = 0 , TDS_OP_CURSOR = TDS_SP_CURSOR , TDS_OP_CURSOROPEN = │ │ │ │ │ - TDS_SP_CURSOROPEN , TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE , │ │ │ │ │ -   TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE , TDS_OP_CURSORPREPEXEC = │ │ │ │ │ - TDS_SP_CURSORPREPEXEC , TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE │ │ │ │ │ - , TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH , │ │ │ │ │ -   TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION , TDS_OP_CURSORCLOSE = TDS_ │ │ │ │ │ - SP_CURSORCLOSE , TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL , TDS_OP_PREPARE │ │ │ │ │ - = TDS_SP_PREPARE , │ │ │ │ │ -   TDS_OP_EXECUTE = TDS_SP_EXECUTE , TDS_OP_PREPEXEC = TDS_SP_PREPEXEC , │ │ │ │ │ - TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC , TDS_OP_UNPREPARE = TDS_SP_ │ │ │ │ │ - UNPREPARE , │ │ │ │ │ -   TDS_OP_DYN_DEALLOC = 100 │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_states { │ │ │ │ │ -   TDS_IDLE , TDS_WRITING , TDS_SENDING , TDS_PENDING , │ │ │ │ │ -   TDS_READING , TDS_DEAD │ │ │ │ │ - } │ │ │ │ │ -  values for tds->state More... │ │ │ │ │ -  │ │ │ │ │ -enum   tds_token_flags { │ │ │ │ │ -   TDS_HANDLE_ALL = 0 , TDS_TOKEN_FLAG =(OTHERS) , TDS_TOKEN_FLAG = │ │ │ │ │ - (OTHERS) , TDS_TOKEN_FLAG =(OTHERS) , │ │ │ │ │ -   TDS_TOKEN_FLAG =(OTHERS) , TDS_TOKEN_FLAG =(OTHERS) , TDS_TOKEN_FLAG = │ │ │ │ │ - (OTHERS) , TDS_TOKEN_FLAG =(OTHERS) , │ │ │ │ │ -   TDS_TOKEN_FLAG =(OTHERS) , TDS_TOKEN_FLAG =(OTHERS) , TDS_TOKEN_FLAG = │ │ │ │ │ - (OTHERS) , TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_ │ │ │ │ │ - COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_ │ │ │ │ │ - PROC , │ │ │ │ │ -   TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_ │ │ │ │ │ - STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   tds_token_results { │ │ │ │ │ -   TDS_TOKEN_RES_OTHERS , TDS_TOKEN_RES_ROWFMT , TDS_TOKEN_RES_COMPUTEFMT │ │ │ │ │ - , TDS_TOKEN_RES_PARAMFMT , │ │ │ │ │ -   TDS_TOKEN_RES_DONE , TDS_TOKEN_RES_ROW , TDS_TOKEN_RES_COMPUTE , TDS_ │ │ │ │ │ - TOKEN_RES_PROC , │ │ │ │ │ -   TDS_TOKEN_RES_MSG , TDS_TOKEN_RES_ENV │ │ │ │ │ - } │ │ │ │ │ -  │ │ │ │ │ -enum   TDSERRNO { │ │ │ │ │ -   TDSEOK = TDS_SUCCESS , TDSEVERDOWN = 100 , TDSEINPROGRESS , │ │ │ │ │ - TDSEICONVIU = 2400 , │ │ │ │ │ -   TDSEICONVAVAIL = 2401 , TDSEICONVO = 2402 , TDSEICONVI = 2403 , │ │ │ │ │ - TDSEICONV2BIG = 2404 , │ │ │ │ │ -   TDSEPORTINSTANCE = 2500 , TDSESYNC = 20001 , TDSEFCON = 20002 , │ │ │ │ │ - TDSETIME = 20003 , │ │ │ │ │ -   TDSEREAD = 20004 , TDSEWRIT = 20006 , TDSESOCK = 20008 , TDSECONN = │ │ │ │ │ - 20009 , │ │ │ │ │ -   TDSEMEM = 20010 , TDSEINTF = 20012 , TDSEUHST = 20013 , TDSEPWD = │ │ │ │ │ - 20014 , │ │ │ │ │ -   TDSESEOF = 20017 , TDSERPND = 20019 , TDSEBTOK = 20020 , TDSEOOB = │ │ │ │ │ - 20022 , │ │ │ │ │ -   TDSECLOS = 20056 , TDSEUSCT = 20058 , TDSEUTDS = 20146 , TDSEEUNR = │ │ │ │ │ - 20185 , │ │ │ │ │ -   TDSECAP = 20203 , TDSENEG = 20210 , TDSEUMSG = 20212 , TDSECAPTYP = │ │ │ │ │ - 20213 , │ │ │ │ │ -   TDSECONF = 20214 , TDSEBPROBADTYP = 20250 , TDSECLOSEIN = 20292 │ │ │ │ │ - } │ │ │ │ │ +typedef struct pollfd  pollfd_t │ │ │ │ │   │ │ │ │ │ Functions │ │ │ │ │ - static bool  is_tds_type_valid (int type) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds5_gss_send (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - TDSAUTHENTICATION *  tds5_negotiate_get_auth (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - static void  tds5_negotiate_set_msg_type │ │ │ │ │ - (TDSAUTHENTICATION *tds_auth, unsigned msg_ │ │ │ │ │ - type) │ │ │ │ │ -  │ │ │ │ │ - int  tds5_send_optioncmd (TDSSOCKET *tds, TDS_ │ │ │ │ │ - OPTION_CMD tds_command, TDS_OPTION tds_ │ │ │ │ │ - option, TDS_OPTION_ARG *tds_argument, TDS_INT │ │ │ │ │ - *tds_argsize) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds71_submit_prepexec (TDSSOCKET *tds, const │ │ │ │ │ - char *query, const char *id, TDSDYNAMIC │ │ │ │ │ - **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ -  Creates a temporary stored procedure in the │ │ │ │ │ - server and execute it. │ │ │ │ │ -  │ │ │ │ │ - int  tds7_get_instance_port (struct addrinfo │ │ │ │ │ - *addr, const char *instance) │ │ │ │ │ -  Get port of given instance. │ │ │ │ │ -  │ │ │ │ │ - int  tds7_get_instance_ports (FILE *output, struct │ │ │ │ │ - addrinfo *addr) │ │ │ │ │ -  Get port of all instances. │ │ │ │ │ -  │ │ │ │ │ - void  tds7_srv_charset_changed (TDSCONNECTION │ │ │ │ │ - *conn, TDS_UCHAR collate[5]) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds8_adjust_login (TDSLOGIN *login) │ │ │ │ │ -  Make sure proper setting are in place for TDS │ │ │ │ │ - 8.0. │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_addrinfo2str (struct addrinfo *addr, char │ │ │ │ │ - *name, int namemax) │ │ │ │ │ -  │ │ │ │ │ - TDSSOCKET *  tds_alloc_additional_socket (TDSCONNECTION │ │ │ │ │ - *conn) │ │ │ │ │ -  │ │ │ │ │ - BCPCOLDATA *  tds_alloc_bcp_column_data (unsigned int │ │ │ │ │ - column_size) │ │ │ │ │ -  │ │ │ │ │ - TDSBCPINFO *  tds_alloc_bcpinfo (void) │ │ │ │ │ -  │ │ │ │ │ - char *  tds_alloc_client_sqlstate (int msgno) │ │ │ │ │ -  │ │ │ │ │ - TDSCOMPUTEINFO **  tds_alloc_compute_results (TDSSOCKET *tds, │ │ │ │ │ - TDS_USMALLINT num_cols, TDS_USMALLINT by_ │ │ │ │ │ - cols) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_alloc_compute_row (TDSCOMPUTEINFO *res_ │ │ │ │ │ - info) │ │ │ │ │ -  │ │ │ │ │ - TDSCONTEXT *  tds_alloc_context (void *parent) │ │ │ │ │ -  │ │ │ │ │ - TDSCURSOR *  tds_alloc_cursor (TDSSOCKET *tds, const char │ │ │ │ │ - *name, TDS_INT namelen, const char *query, │ │ │ │ │ - TDS_INT querylen) │ │ │ │ │ -  │ │ │ │ │ - TDSDYNAMIC *  tds_alloc_dynamic (TDSCONNECTION *conn, const │ │ │ │ │ - char *id) │ │ │ │ │ -  Allocate a dynamic statement. │ │ │ │ │ -  │ │ │ │ │ - TDSLOCALE *  tds_alloc_locale (void) │ │ │ │ │ -  │ │ │ │ │ - TDSLOGIN *  tds_alloc_login (bool use_environment) │ │ │ │ │ -  │ │ │ │ │ - char *  tds_alloc_lookup_sqlstate (TDSSOCKET *tds, │ │ │ │ │ - int msgno) │ │ │ │ │ -  │ │ │ │ │ - TDSPACKET *  tds_alloc_packet (void *buf, unsigned len) │ │ │ │ │ -  │ │ │ │ │ - void *  tds_alloc_param_data (TDSCOLUMN *curparam) │ │ │ │ │ -  Allocate data for a parameter. │ │ │ │ │ -  │ │ │ │ │ - TDSPARAMINFO *  tds_alloc_param_result (TDSPARAMINFO *old_ │ │ │ │ │ - param) │ │ │ │ │ -  Adds a output parameter to TDSPARAMINFO. │ │ │ │ │ -  │ │ │ │ │ - TDSRESULTINFO *  tds_alloc_results (TDS_USMALLINT num_cols) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_alloc_row (TDSRESULTINFO *res_info) │ │ │ │ │ -  Allocate space for row store return NULL on │ │ │ │ │ - out of memory. │ │ │ │ │ -  │ │ │ │ │ - TDSSOCKET *  tds_alloc_socket (TDSCONTEXT *context, │ │ │ │ │ - unsigned int bufsize) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_done (TDSSOCKET *tds, int *rows_ │ │ │ │ │ - copied) │ │ │ │ │ -  Tell we finished sending BCP data to server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_fread (TDSSOCKET *tds, TDSICONV │ │ │ │ │ - *conv, FILE *stream, const char *terminator, │ │ │ │ │ - size_t term_len, char **outbuf, size_ │ │ │ │ │ - t *outbytes) │ │ │ │ │ -  Read a data file, passing the data through │ │ │ │ │ - iconv(). │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_init (TDSSOCKET *tds, TDSBCPINFO │ │ │ │ │ - *bcpinfo) │ │ │ │ │ -  Initialize BCP information. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_send_record (TDSSOCKET *tds, │ │ │ │ │ - TDSBCPINFO *bcpinfo, tds_bcp_get_col_data │ │ │ │ │ - get_col_data, tds_bcp_null_error null_error, │ │ │ │ │ - int offset) │ │ │ │ │ -  Send one row of data to server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_start (TDSSOCKET *tds, TDSBCPINFO │ │ │ │ │ - *bcpinfo) │ │ │ │ │ -  Start sending BCP data to server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_bcp_start_copy_in (TDSSOCKET *tds, │ │ │ │ │ - TDSBCPINFO *bcpinfo) │ │ │ │ │ -  Start bulk copy to server. │ │ │ │ │ -  │ │ │ │ │ - static bool  tds_capability_enabled (const TDS_CAPABILITY_ │ │ │ │ │ - TYPE *cap, unsigned cap_num) │ │ │ │ │ -  │ │ │ │ │ - void  tds_close_socket (TDSSOCKET *tds) │ │ │ │ │ -  Close current socket. │ │ │ │ │ -  │ │ │ │ │ - int  tds_config_boolean (const char *option, const │ │ │ │ │ - char *value, TDSLOGIN *login) │ │ │ │ │ -  │ │ │ │ │ - TDS_USMALLINT *  tds_config_verstr (const char *tdsver, │ │ │ │ │ - TDSLOGIN *login) │ │ │ │ │ -  Set TDS version from given string. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_connect_and_login (TDSSOCKET *tds, │ │ │ │ │ - TDSLOGIN *login) │ │ │ │ │ -  │ │ │ │ │ - void  tds_connection_close (TDSCONNECTION *conn) │ │ │ │ │ -  │ │ │ │ │ - void  tds_connection_coalesce (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - void  tds_connection_flush (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - int  tds_connection_read (TDSSOCKET *tds, unsigned │ │ │ │ │ - char *buf, int buflen) │ │ │ │ │ -  │ │ │ │ │ - int  tds_connection_write (TDSSOCKET *tds, const │ │ │ │ │ - unsigned char *buf, int buflen, int final) │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_convert_string (TDSSOCKET *tds, TDSICONV │ │ │ │ │ - *char_conv, const char *s, int len, size_ │ │ │ │ │ - t *out_len) │ │ │ │ │ -  Convert a string in an allocated buffer. │ │ │ │ │ -  │ │ │ │ │ - void  tds_convert_string_free (const char │ │ │ │ │ - *original, const char *converted) │ │ │ │ │ -  │ │ │ │ │ - int  tds_count_placeholders (const char *query) │ │ │ │ │ -  Count the number of placeholders ('?') in a │ │ │ │ │ - query. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_close (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor) │ │ │ │ │ -  Send a deallocation request to server. │ │ │ │ │ -  │ │ │ │ │ - void  tds_cursor_deallocated (TDSCONNECTION *conn, │ │ │ │ │ - TDSCURSOR *cursor) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor, bool *send) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT │ │ │ │ │ - i_row) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_get_cursor_info (TDSSOCKET *tds, │ │ │ │ │ - TDSCURSOR *cursor, TDS_UINT *row_number, TDS_ │ │ │ │ │ - UINT *row_count) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_open (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor, TDSPARAMINFO *params, bool *send) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor, bool *send) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_cursor_update (TDSSOCKET *tds, TDSCURSOR │ │ │ │ │ - *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_ │ │ │ │ │ - row, TDSPARAMINFO *params) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_datecrack (TDS_INT datetype, const void │ │ │ │ │ - *di, TDSDATEREC *dr) │ │ │ │ │ -  Convert from db date format to a structured │ │ │ │ │ - date format. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_deferred_cursor_dealloc (TDSCONNECTION │ │ │ │ │ - *conn, TDSCURSOR *cursor) │ │ │ │ │ -  Deallocate cursor on idle. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_deferred_unprepare (TDSCONNECTION *conn, │ │ │ │ │ - TDSDYNAMIC *dyn) │ │ │ │ │ -  Unprepare dynamic on idle. │ │ │ │ │ -  │ │ │ │ │ - void  tds_deinit_bcpinfo (TDSBCPINFO *bcpinfo) │ │ │ │ │ -  │ │ │ │ │ - void  tds_deinit_tvp (TDS_TVP *table) │ │ │ │ │ -  │ │ │ │ │ - void  tds_detach_results (TDSRESULTINFO *info) │ │ │ │ │ -  Detach result info from it current socket. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_disconnect (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - DSTR *  tds_dstr_get (TDSSOCKET *tds, DSTR *s, size_ │ │ │ │ │ - t len) │ │ │ │ │ -  Reads a string from wire and put in a DSTR. │ │ │ │ │ -  │ │ │ │ │ - void  tds_dynamic_deallocated (TDSCONNECTION *conn, │ │ │ │ │ - TDSDYNAMIC *dyn) │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_fix_column_size (TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *curcol) │ │ │ │ │ -  │ │ │ │ │ - void  tds_fix_login (TDSLOGIN *login) │ │ │ │ │ -  Fix configuration after reading it. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_flush_packet (TDSSOCKET *tds) │ │ │ │ │ -  Flush packet to server. │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_all_results (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_bcp_column_data (BCPCOLDATA │ │ │ │ │ - *coldata) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_bcpinfo (TDSBCPINFO *bcpinfo) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_context (TDSCONTEXT *locale) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_input_params (TDSDYNAMIC *dyn) │ │ │ │ │ -  Frees all allocated input parameters of a │ │ │ │ │ - dynamic statement. │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_locale (TDSLOCALE *locale) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_login (TDSLOGIN *login) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_msg (TDSMESSAGE *message) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_packets (TDSPACKET *packet) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_param_result (TDSPARAMINFO *param_ │ │ │ │ │ - info) │ │ │ │ │ -  Delete latest parameter. │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_param_results (TDSPARAMINFO *param_ │ │ │ │ │ - info) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_results (TDSRESULTINFO *res_info) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_row (TDSRESULTINFO *res_info, │ │ │ │ │ - unsigned char *row) │ │ │ │ │ -  │ │ │ │ │ - void  tds_free_socket (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - void  tds_freeze (TDSSOCKET *tds, TDSFREEZE │ │ │ │ │ - *freeze, unsigned size_len) │ │ │ │ │ -  Stop writing to server and cache every packet │ │ │ │ │ - not sending them to server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_freeze_abort (TDSFREEZE *freeze) │ │ │ │ │ -  Discard all data written after the freeze. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_freeze_close (TDSFREEZE *freeze) │ │ │ │ │ -  Stop keeping data for this specific freeze. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_freeze_close_len (TDSFREEZE *freeze, │ │ │ │ │ - int32_t size) │ │ │ │ │ -  Stop keeping data for this specific freeze. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_freeze_close_string (TDSFREEZE *freeze) │ │ │ │ │ -  Stop keeping data for this specific freeze. │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_freeze_written (TDSFREEZE *freeze) │ │ │ │ │ -  Compute how many bytes has been written from │ │ │ │ │ - freeze. │ │ │ │ │ -  │ │ │ │ │ - unsigned char  tds_get_byte (TDSSOCKET *tds) │ │ │ │ │ -  Return a single byte from the input buffer. │ │ │ │ │ -  │ │ │ │ │ - TDS_SERVER_TYPE  tds_get_cardinal_type (TDS_SERVER_TYPE │ │ │ │ │ - datatype, int usertype) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_get_char_data (TDSSOCKET *tds, char │ │ │ │ │ - *dest, size_t wire_size, TDSCOLUMN *curcol) │ │ │ │ │ -  Fetch character data the wire. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_get_column_declaration (TDSSOCKET *tds, │ │ │ │ │ - TDSCOLUMN *curcol, char *out) │ │ │ │ │ -  Return declaration for column (like "varchar │ │ │ │ │ - (20)"). │ │ │ │ │ -  │ │ │ │ │ -const TDS_COMPILETIME_SETTINGS *  tds_get_compiletime_settings (void) │ │ │ │ │ -  Return a structure capturing the compile-time │ │ │ │ │ - settings provided to the configure script. │ │ │ │ │ -  │ │ │ │ │ - TDS_SERVER_TYPE  tds_get_conversion_type (TDS_SERVER_TYPE │ │ │ │ │ - srctype, int colsize) │ │ │ │ │ -  Return type suitable for conversions (convert │ │ │ │ │ - all nullable types to fixed type) │ │ │ │ │ -  │ │ │ │ │ - TDSLOCALE *  tds_get_locale (void) │ │ │ │ │ -  Get locale information. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_get_n (TDSSOCKET *tds, void *dest, size_ │ │ │ │ │ - t n) │ │ │ │ │ - Get N bytes from the buffer and return them │ │ │ │ │ -  in the already allocated space │ │ │ │ │ - given to us. │ │ │ │ │ -  │ │ │ │ │ - int  tds_get_size_by_type (TDS_SERVER_TYPE │ │ │ │ │ - servertype) │ │ │ │ │ -  Return the number of bytes needed by │ │ │ │ │ - specified type. │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_get_string (TDSSOCKET *tds, size_ │ │ │ │ │ - t string_len, char *dest, size_t dest_size) │ │ │ │ │ -  Fetch a string from the wire. │ │ │ │ │ -  │ │ │ │ │ - TDS_UINT  tds_get_uint (TDSSOCKET *tds) │ │ │ │ │ -  Get an uint32 from the server. │ │ │ │ │ -  │ │ │ │ │ - TDS_UINT8  tds_get_uint8 (TDSSOCKET *tds) │ │ │ │ │ -  Get an uint64 from the server. │ │ │ │ │ -  │ │ │ │ │ - TDS_USMALLINT  tds_get_usmallint (TDSSOCKET *tds) │ │ │ │ │ -  Get an uint16 from the server. │ │ │ │ │ -  │ │ │ │ │ - int  tds_get_varint_size (TDSCONNECTION *conn, int │ │ │ │ │ - datatype) │ │ │ │ │ - tds_get_varint_size() returns the size of a │ │ │ │ │ -  variable length integer returned in a result │ │ │ │ │ - string │ │ │ │ │ -  │ │ │ │ │ - void  tds_getmac (TDS_SYS_SOCKET s, unsigned char │ │ │ │ │ - mac[6]) │ │ │ │ │ -  │ │ │ │ │ - unsigned int  tds_gettime_ms (void) │ │ │ │ │ -  │ │ │ │ │ - int  tds_goodread (TDSSOCKET *tds, unsigned char │ │ │ │ │ - *buf, int buflen) │ │ │ │ │ -  Loops until we have received some characters │ │ │ │ │ - return -1 on failure. │ │ │ │ │ -  │ │ │ │ │ - int  tds_goodwrite (TDSSOCKET *tds, const unsigned │ │ │ │ │ - char *buffer, size_t buflen) │ │ │ │ │ -  │ │ │ │ │ - TDSAUTHENTICATION *  tds_gss_get_auth (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - int  tds_iconv_alloc (TDSCONNECTION *conn) │ │ │ │ │ -  Allocate iconv stuff. │ │ │ │ │ -  │ │ │ │ │ - void  tds_iconv_close (TDSCONNECTION *conn) │ │ │ │ │ -  │ │ │ │ │ - void  tds_iconv_free (TDSCONNECTION *conn) │ │ │ │ │ -  │ │ │ │ │ - TDSICONV *  tds_iconv_from_collate (TDSCONNECTION *conn, │ │ │ │ │ - TDS_UCHAR collate[5]) │ │ │ │ │ -  Get iconv information from a LCID (to support │ │ │ │ │ - different column encoding under MSSQL2K) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_iconv_open (TDSCONNECTION *conn, const │ │ │ │ │ - char *charset, int use_utf16) │ │ │ │ │ -  │ │ │ │ │ - TDSLOGIN *  tds_init_login (TDSLOGIN *login, TDSLOCALE │ │ │ │ │ - *locale) │ │ │ │ │ -  Initialize login structure with locale │ │ │ │ │ - information and other stuff for connection. │ │ │ │ │ -  │ │ │ │ │ - int  tds_init_write_buf (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - TDSDYNAMIC *  tds_lookup_dynamic (TDSCONNECTION *conn, │ │ │ │ │ - const char *id) │ │ │ │ │ -  Finds a dynamic given string id. │ │ │ │ │ -  │ │ │ │ │ - struct addrinfo *  tds_lookup_host (const char *servername) │ │ │ │ │ -  Get the IP address for a hostname. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_lookup_host_set (const char *servername, │ │ │ │ │ - struct addrinfo **addr) │ │ │ │ │ -  │ │ │ │ │ - char *  tds_money_to_string (const TDS_MONEY *money, │ │ │ │ │ - char *s, bool use_2_digits) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_multiple_done (TDSSOCKET *tds, │ │ │ │ │ - TDSMULTIPLE *multiple) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_multiple_execute (TDSSOCKET *tds, │ │ │ │ │ - TDSMULTIPLE *multiple, TDSDYNAMIC *dyn) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_multiple_init (TDSSOCKET *tds, │ │ │ │ │ - TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE │ │ │ │ │ - type, TDSHEADERS *head) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_multiple_query (TDSSOCKET *tds, │ │ │ │ │ - TDSMULTIPLE *multiple, const char *query, │ │ │ │ │ - TDSPARAMINFO *params) │ │ │ │ │ -  │ │ │ │ │ - int  tds_needs_unprepare (TDSCONNECTION *conn, │ │ │ │ │ - TDSDYNAMIC *dyn) │ │ │ │ │ -  Check if dynamic request must be unprepared. │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_next_placeholder (const char *start) │ │ │ │ │ -  Get position of next placeholder. │ │ │ │ │ -  │ │ │ │ │ - TDSAUTHENTICATION *  tds_ntlm_get_auth (TDSSOCKET *tds) │ │ │ │ │ -  Build a NTLMSPP packet to send to server. │ │ │ │ │ -  │ │ │ │ │ - TDS_INT  tds_numeric_change_prec_scale (TDS_NUMERIC │ │ │ │ │ - *numeric, unsigned char new_prec, unsigned │ │ │ │ │ - char new_scale) │ │ │ │ │ -  │ │ │ │ │ - TDS_INT  tds_numeric_to_string (const TDS_NUMERIC │ │ │ │ │ - *numeric, char *s) │ │ │ │ │ -  │ │ │ │ │ - TDSERRNO  tds_open_socket (TDSSOCKET *tds, struct │ │ │ │ │ - addrinfo *ipaddr, unsigned int port, int │ │ │ │ │ - timeout, int *p_oserr) │ │ │ │ │ -  │ │ │ │ │ - int  tds_parse_boolean (const char *value, int │ │ │ │ │ - default_value) │ │ │ │ │ -  │ │ │ │ │ - bool  tds_parse_conf_section (const char *option, │ │ │ │ │ - const char *value, void *param) │ │ │ │ │ -  │ │ │ │ │ - unsigned char  tds_peek (TDSSOCKET *tds) │ │ │ │ │ -  Reads a byte from the TDS stream without │ │ │ │ │ - removing it. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_process_cancel (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_process_login_tokens (TDSSOCKET *tds) │ │ │ │ │ -  tds_process_login_tokens() is called after │ │ │ │ │ - sending the login packet to the server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_process_simple_query (TDSSOCKET *tds) │ │ │ │ │ - Process results for simple query as "SET │ │ │ │ │ -  TEXTSIZE" or "USE dbname" If the statement │ │ │ │ │ - returns results, beware they are discarded. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_process_tokens (TDSSOCKET *tds, TDS_INT │ │ │ │ │ - *result_type, int *done_flags, unsigned flag) │ │ │ │ │ -  process all streams. │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_prtype (int token) │ │ │ │ │ -  Returns string representation of the given │ │ │ │ │ - type. │ │ │ │ │ -  │ │ │ │ │ - char *  tds_prwsaerror (int erc) │ │ │ │ │ -  │ │ │ │ │ - void  tds_prwsaerror_free (char *s) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_buf (TDSSOCKET *tds, const unsigned │ │ │ │ │ - char *buf, int dsize, int ssize) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_byte (TDSSOCKET *tds, unsigned char │ │ │ │ │ - c) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_cancel (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_int (TDSSOCKET *tds, TDS_INT i) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_int8 (TDSSOCKET *tds, TDS_INT8 i) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_n (TDSSOCKET *tds, const void *buf, │ │ │ │ │ - size_t n) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_smallint (TDSSOCKET *tds, TDS_ │ │ │ │ │ - SMALLINT si) │ │ │ │ │ -  │ │ │ │ │ - int  tds_put_string (TDSSOCKET *tds, const char │ │ │ │ │ - *buf, int len) │ │ │ │ │ -  Output a string to wire automatic translate │ │ │ │ │ - string to unicode if needed. │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_quote_id (TDSSOCKET *tds, char *buffer, │ │ │ │ │ - const char *id, int idlen) │ │ │ │ │ -  Quote an id. │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_quote_id_rpc (TDSSOCKET *tds, char │ │ │ │ │ - *buffer, const char *id, int idlen) │ │ │ │ │ -  Quote an id for a RPC call. │ │ │ │ │ -  │ │ │ │ │ - size_t  tds_quote_string (TDSSOCKET *tds, char │ │ │ │ │ - *buffer, const char *str, int len) │ │ │ │ │ -  │ │ │ │ │ - void  tds_random_buffer (unsigned char *out, int │ │ │ │ │ - len) │ │ │ │ │ -  │ │ │ │ │ - bool  tds_read_conf_file (TDSLOGIN *login, const │ │ │ │ │ - char *server) │ │ │ │ │ -  Read configuration info for given server │ │ │ │ │ - return 0 on error. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_read_conf_section (FILE *in, const char │ │ │ │ │ - *section, TDSCONFPARSE tds_conf_parse, void │ │ │ │ │ - *parse_param) │ │ │ │ │ -  Read a section of configuration file (INI │ │ │ │ │ - style file) │ │ │ │ │ -  │ │ │ │ │ - TDSLOGIN *  tds_read_config_info (TDSSOCKET *tds, │ │ │ │ │ - TDSLOGIN *login, TDSLOCALE *locale) │ │ │ │ │ - tds_read_config_info() will fill the tds │ │ │ │ │ - connection structure based on configuration │ │ │ │ │ - information gathered in the following order: │ │ │ │ │ - 1) Program specified in TDSLOGIN structure 2) │ │ │ │ │ - The environment variables TDSVER, TDSDUMP, │ │ │ │ │ - TDSPORT, TDSQUERY, TDSHOST 3) A config file │ │ │ │ │ -  with the following search order: a) a │ │ │ │ │ - readable file specified by environment │ │ │ │ │ - variable FREETDSCONF b) a readable file in │ │ │ │ │ - ~/.freetds.conf c) a readable file in │ │ │ │ │ - $prefix/etc/freetds.conf 3) ~/.interfaces if │ │ │ │ │ - exists 4) $SYBASE/interfaces if exists 5) │ │ │ │ │ - TDS_DEF_* default values │ │ │ │ │ -  │ │ │ │ │ - int  tds_read_packet (TDSSOCKET *tds) │ │ │ │ │ -  Read in one 'packet' from the server. │ │ │ │ │ -  │ │ │ │ │ - void *  tds_realloc (void **pp, size_t new_size) │ │ │ │ │ -  Reallocate a pointer and update it if │ │ │ │ │ - success. │ │ │ │ │ -  │ │ │ │ │ - TDSPACKET *  tds_realloc_packet (TDSPACKET *packet, │ │ │ │ │ - unsigned len) │ │ │ │ │ -  │ │ │ │ │ - TDSSOCKET *  tds_realloc_socket (TDSSOCKET *tds, size_ │ │ │ │ │ - t bufsize) │ │ │ │ │ -  │ │ │ │ │ - static void  tds_release_cur_dyn (TDSSOCKET *tds) │ │ │ │ │ -  │ │ │ │ │ - void  tds_release_cursor (TDSCURSOR **pcursor) │ │ │ │ │ -  │ │ │ │ │ - void  tds_release_dynamic (TDSDYNAMIC **dyn) │ │ │ │ │ -  Frees dynamic statement. │ │ │ │ │ -  │ │ │ │ │ - int  tds_select (TDSSOCKET *tds, unsigned tds_sel, │ │ │ │ │ - int timeout_seconds) │ │ │ │ │ -  Select on a socket until it's available or │ │ │ │ │ - the timeout expires. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_send_cancel (TDSSOCKET *tds) │ │ │ │ │ - tds_send_cancel() sends an empty packet (8 │ │ │ │ │ -  byte header only) tds_process_cancel should │ │ │ │ │ - be called directly after this. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_app (TDSLOGIN *tds_login, const char │ │ │ │ │ - *application) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_bulk (TDSLOGIN *tds_login, bool │ │ │ │ │ - enabled) │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_client_charset (TDSLOGIN *tds_login, │ │ │ │ │ - const char *charset) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_column_type (TDSCONNECTION *conn, │ │ │ │ │ - TDSCOLUMN *curcol, TDS_SERVER_TYPE type) │ │ │ │ │ -  Set type of column initializing all │ │ │ │ │ - dependency. │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC │ │ │ │ │ - *dyn) │ │ │ │ │ -  Set current dynamic. │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_current_results (TDSSOCKET *tds, │ │ │ │ │ - TDSRESULTINFO *info) │ │ │ │ │ -  │ │ │ │ │ - static void  tds_set_current_send_packet (TDSSOCKET *tds, │ │ │ │ │ - TDSPACKET *pkt) │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_host (TDSLOGIN *tds_login, const char │ │ │ │ │ - *hostname) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_set_interfaces_file_loc (const char │ │ │ │ │ - *interfloc) │ │ │ │ │ -  Set the full name of interface file. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_language (TDSLOGIN *tds_login, const │ │ │ │ │ - char *language) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_library (TDSLOGIN *tds_login, const │ │ │ │ │ - char *library) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_packet (TDSLOGIN *tds_login, int │ │ │ │ │ - packet_size) │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_param_type (TDSCONNECTION *conn, │ │ │ │ │ - TDSCOLUMN *curcol, TDS_SERVER_TYPE type) │ │ │ │ │ -  Set type of column initializing all │ │ │ │ │ - dependency. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_passwd (TDSLOGIN *tds_login, const │ │ │ │ │ - char *password) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_port (TDSLOGIN *tds_login, int port) │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_server (TDSLOGIN *tds_login, const │ │ │ │ │ - char *server) TDS_WUR │ │ │ │ │ -  Set the servername in a TDSLOGIN structure. │ │ │ │ │ -  │ │ │ │ │ - TDS_STATE  tds_set_state (TDSSOCKET *tds, TDS_STATE │ │ │ │ │ - state) │ │ │ │ │ -  Set state of TDS connection, with logging and │ │ │ │ │ - checking. │ │ │ │ │ -  │ │ │ │ │ - bool  tds_set_user (TDSLOGIN *tds_login, const char │ │ │ │ │ - *username) TDS_WUR │ │ │ │ │ -  │ │ │ │ │ - void  tds_set_version (TDSLOGIN *tds_login, TDS_ │ │ │ │ │ - TINYINT major_ver, TDS_TINYINT minor_ver) │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_skip_comment (const char *s) │ │ │ │ │ -  Skip a comment in a query. │ │ │ │ │ -  │ │ │ │ │ - const char *  tds_skip_quoted (const char *s) │ │ │ │ │ -  Skip quoting string (like 'sfsf', "dflkdj" or │ │ │ │ │ - [dfkjd]) │ │ │ │ │ -  │ │ │ │ │ - int  tds_socket_set_nonblocking (TDS_SYS_SOCKET │ │ │ │ │ - sock) │ │ │ │ │ -  Set socket to non-blocking. │ │ │ │ │ -  │ │ │ │ │ - void  tds_srv_charset_changed (TDSCONNECTION *conn, │ │ │ │ │ - const char *charset) │ │ │ │ │ -  │ │ │ │ │ - void  tds_start_query (TDSSOCKET *tds, unsigned │ │ │ │ │ - char packet_type) │ │ │ │ │ -  Start query packet of a given type. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_begin_tran (TDSSOCKET *tds) │ │ │ │ │ -  Send a rollback request. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_commit (TDSSOCKET *tds, bool cont) │ │ │ │ │ -  Send a commit request. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_execdirect (TDSSOCKET *tds, const │ │ │ │ │ - char *query, TDSPARAMINFO *params, TDSHEADERS │ │ │ │ │ - *head) │ │ │ │ │ -  Submit a prepared query with parameters. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_execute (TDSSOCKET *tds, │ │ │ │ │ - TDSDYNAMIC *dyn) │ │ │ │ │ -  Sends a previously prepared dynamic statement │ │ │ │ │ - to the server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_optioncmd (TDSSOCKET *tds, TDS_ │ │ │ │ │ - OPTION_CMD command, TDS_OPTION option, TDS_ │ │ │ │ │ - OPTION_ARG *param, TDS_INT param_size) │ │ │ │ │ -  Send option commands to server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_prepare (TDSSOCKET *tds, const │ │ │ │ │ - char *query, const char *id, TDSDYNAMIC │ │ │ │ │ - **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ -  Creates a temporary stored procedure in the │ │ │ │ │ - server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_query (TDSSOCKET *tds, const char │ │ │ │ │ - *query) │ │ │ │ │ -  Sends a language string to the database │ │ │ │ │ - server for processing. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_query_params (TDSSOCKET *tds, │ │ │ │ │ - const char *query, TDSPARAMINFO *params, │ │ │ │ │ - TDSHEADERS *head) │ │ │ │ │ -  Sends a language string to the database │ │ │ │ │ - server for processing. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_queryf (TDSSOCKET *tds, const char │ │ │ │ │ - *queryf,...) │ │ │ │ │ -  Format and submit a query. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_rollback (TDSSOCKET *tds, bool │ │ │ │ │ - cont) │ │ │ │ │ -  Send a rollback request. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_rpc (TDSSOCKET *tds, const char │ │ │ │ │ - *rpc_name, TDSPARAMINFO *params, TDSHEADERS │ │ │ │ │ - *head) │ │ │ │ │ -  Calls a RPC from server. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_submit_unprepare (TDSSOCKET *tds, │ │ │ │ │ - TDSDYNAMIC *dyn) │ │ │ │ │ -  Send a unprepare request for a prepared │ │ │ │ │ - query. │ │ │ │ │ -  │ │ │ │ │ - void  tds_swap_bytes (void *buf, int bytes) │ │ │ │ │ -  │ │ │ │ │ - void  tds_unget_byte (TDSSOCKET *tds) │ │ │ │ │ -  Unget will always work as long as you don't │ │ │ │ │ - call it twice in a row. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_vstrbuild (char *buffer, int buflen, int │ │ │ │ │ - *resultlen, const char *text, int textlen, │ │ │ │ │ - const char *formats, int formatlen, va_list │ │ │ │ │ - ap) │ │ │ │ │ -  │ │ │ │ │ - void  tds_wakeup_close (TDSPOLLWAKEUP *wakeup) │ │ │ │ │ -  │ │ │ │ │ - static TDS_SYS_SOCKET  tds_wakeup_get_fd (const TDSPOLLWAKEUP │ │ │ │ │ - *wakeup) │ │ │ │ │ -  │ │ │ │ │ - int  tds_wakeup_init (TDSPOLLWAKEUP *wakeup) │ │ │ │ │ -  │ │ │ │ │ - void  tds_wakeup_send (TDSPOLLWAKEUP *wakeup, char │ │ │ │ │ - cancel) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_write_packet (TDSSOCKET *tds, unsigned │ │ │ │ │ - char final) │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_writetext_continue (TDSSOCKET *tds, const │ │ │ │ │ - TDS_UCHAR *text, TDS_UINT size) │ │ │ │ │ -  Send some data in the writetext request │ │ │ │ │ - started by tds_writetext_start. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_writetext_end (TDSSOCKET *tds) │ │ │ │ │ -  Finish sending writetext data. │ │ │ │ │ -  │ │ │ │ │ - TDSRET  tds_writetext_start (TDSSOCKET *tds, const │ │ │ │ │ - char *objname, const char *textptr, const │ │ │ │ │ - char *timestamp, int with_log, TDS_UINT size) │ │ │ │ │ -  Start writing writetext request. │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_close (void) │ │ │ │ │ -  Close the TDS dump log file. │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_col (const TDSCOLUMN *col) │ │ │ │ │ -  Write a column value to the debug log. │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_dump_buf (const char *file, unsigned │ │ │ │ │ - int level_line, const char *msg, const void │ │ │ │ │ - *buf, size_t length) │ │ │ │ │ -  Dump the contents of data into the log file │ │ │ │ │ - in a human readable format. │ │ │ │ │ -  │ │ │ │ │ - int  tdsdump_isopen (void) │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_log (const char *file, unsigned int │ │ │ │ │ - level_line, const char *fmt,...) │ │ │ │ │ -  Write a message to the debug log. │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_off (TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ -  Temporarily turn off logging for current │ │ │ │ │ - thread. │ │ │ │ │ -  │ │ │ │ │ - void  tdsdump_on (TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ -  Turn logging back on for current thread. │ │ │ │ │ -  │ │ │ │ │ - int  tdsdump_open (const tds_dir_char *filename) │ │ │ │ │ -  Create and truncate a human readable dump │ │ │ │ │ - file for the TDS traffic. │ │ │ │ │ -  │ │ │ │ │ - int  tdserror (const TDSCONTEXT *tds_ctx, │ │ │ │ │ - TDSSOCKET *tds, int msgno, int errnum) │ │ │ │ │ -  Call the client library's error handler (for │ │ │ │ │ - library-generated errors only) │ │ │ │ │ -  │ │ │ │ │ -Variables │ │ │ │ │ - const char  STD_DATETIME_FMT [] │ │ │ │ │ -  │ │ │ │ │ - int  tds_append_mode │ │ │ │ │ -  │ │ │ │ │ - int  tds_debug_flags │ │ │ │ │ -  │ │ │ │ │ - const char  tds_hex_digits [] │ │ │ │ │ -  │ │ │ │ │ - const int  tds_numeric_bytes_per_prec [] │ │ │ │ │ - The following little table is indexed by precision and will │ │ │ │ │ -  tell us the number of bytes required to store the specified │ │ │ │ │ - precision. │ │ │ │ │ -  │ │ │ │ │ -const uint16_t  tds_type_flags_ms [256] │ │ │ │ │ -  │ │ │ │ │ - bool  tds_write_dump │ │ │ │ │ -  Tell if TDS debug logging is turned on or off. │ │ │ │ │ +int  tds_poll (struct pollfd fds[], size_t nfds, int timeout) │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Main include file for libtds. │ │ │ │ │ -***** Macro Definition Documentation ***** │ │ │ │ │ -***** ◆ TDS_BYTE_SWAP16 ***** │ │ │ │ │ -#define TDS_BYTE_SWAP16 (   value ) │ │ │ │ │ -Value: │ │ │ │ │ -(((((uint16_t)value)<<8) & 0xFF00u) | \ │ │ │ │ │ -((((uint16_t)value)>>8) & 0x00FFu)) │ │ │ │ │ -***** ◆ TDS_BYTE_SWAP32 ***** │ │ │ │ │ -#define TDS_BYTE_SWAP32 (   value ) │ │ │ │ │ -Value: │ │ │ │ │ -(((((uint32_t)value)<<24) & 0xFF000000u)| \ │ │ │ │ │ -((((uint32_t)value)<< 8) & 0x00FF0000u)| \ │ │ │ │ │ -((((uint32_t)value)>> 8) & 0x0000FF00u)| \ │ │ │ │ │ -((((uint32_t)value)>>24) & 0x000000FFu)) │ │ │ │ │ -***** ◆ TDS_IS_MSSQL ***** │ │ │ │ │ -#define TDS_IS_MSSQL (   x )    (((x)->conn->product_version & 0x80000000u)!=0) │ │ │ │ │ -Check if product is Microsoft SQL Server. │ │ │ │ │ -x should be a TDSSOCKET*. │ │ │ │ │ -***** ◆ TDS_IS_SYBASE ***** │ │ │ │ │ -#define TDS_IS_SYBASE (   x )    (!((x)->conn->product_version & 0x80000000u)) │ │ │ │ │ -Check if product is Sybase (such as Adaptive Server Enterprise). │ │ │ │ │ -x should be a TDSSOCKET*. │ │ │ │ │ -***** ◆ TDS_MS_VER ***** │ │ │ │ │ -#define TDS_MS_VER (   maj, │ │ │ │ │ -   min, │ │ │ │ │ -   x  │ │ │ │ │ - )    (0x80000000u|((maj)<<24)|((min)<<16)|(x)) │ │ │ │ │ -Calc a version number for mssql. │ │ │ │ │ -Use with TDS_MS_VER(7,0,842). For test for a range of version you can use check │ │ │ │ │ -like if (tds->product_version >= TDS_MS_VER(7,0,0) && tds->product_version < │ │ │ │ │ -TDS_MS_VER(8,0,0)) │ │ │ │ │ -***** ◆ TDS_START_LEN_GENERIC ***** │ │ │ │ │ -#define TDS_START_LEN_GENERIC (   tds_socket, │ │ │ │ │ -   len  │ │ │ │ │ - ) │ │ │ │ │ -Value: │ │ │ │ │ -do { \ │ │ │ │ │ -TDSFREEZE current_freeze[1]; \ │ │ │ │ │ -tds_freeze((tds_socket), current_freeze, (len)); do { do │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ -tds_freeze │ │ │ │ │ -Definition tds.h:1584 │ │ │ │ │ -***** Typedef Documentation ***** │ │ │ │ │ -***** ◆ TDS_COMPILETIME_SETTINGS ***** │ │ │ │ │ -typedef struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS │ │ │ │ │ -A structure to hold all the compile-time settings. │ │ │ │ │ -This structure is returned by tds_get_compiletime_settings │ │ │ │ │ -***** ◆ TDS_ENCODING ***** │ │ │ │ │ -typedef struct tds_encoding TDS_ENCODING │ │ │ │ │ -Information relevant to libiconv. │ │ │ │ │ -The name is an iconv name, not the same as found in master..syslanguages. │ │ │ │ │ -***** ◆ TDSBLOB ***** │ │ │ │ │ -typedef struct tds_blob TDSBLOB │ │ │ │ │ -Information about blobs (e.g. │ │ │ │ │ -text or image). current_row contains this structure. │ │ │ │ │ -***** Enumeration Type Documentation ***** │ │ │ │ │ -***** ◆ tds_states ***** │ │ │ │ │ -enum tds_states │ │ │ │ │ -values for tds->state │ │ │ │ │ -Enumerator │ │ │ │ │ -TDS_IDLE  no data expected │ │ │ │ │ -TDS_WRITING  client is writing data │ │ │ │ │ -TDS_SENDING  client would send data │ │ │ │ │ -TDS_PENDING  cilent is waiting for data │ │ │ │ │ -TDS_READING  client is reading data │ │ │ │ │ -TDS_DEAD  no connection │ │ │ │ │ -***** Function Documentation ***** │ │ │ │ │ -***** ◆ tds_bcp_done() ***** │ │ │ │ │ -TDSRET tds_bcp_done ( TDSSOCKET *  tds, │ │ │ │ │ - int *  rows_copied  │ │ │ │ │ - ) │ │ │ │ │ -Tell we finished sending BCP data to server. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/ │ │ │ │ │ - server operation. │ │ │ │ │ - [out] rows_copied number of rows copied to server │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_bcp_fread() ***** │ │ │ │ │ -TDSRET tds_bcp_fread ( TDSSOCKET *  tds, │ │ │ │ │ - TDSICONV *  char_conv, │ │ │ │ │ - FILE *  stream, │ │ │ │ │ - const char *  terminator, │ │ │ │ │ - size_t  term_len, │ │ │ │ │ - char **  outbuf, │ │ │ │ │ - size_t *  outbytes  │ │ │ │ │ - ) │ │ │ │ │ -Read a data file, passing the data through iconv(). │ │ │ │ │ - Return values │ │ │ │ │ - TDS_SUCCESS success │ │ │ │ │ - TDS_FAIL error reading the column │ │ │ │ │ - TDS_NO_MORE_RESULTS end of file detected │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_bcp_init() ***** │ │ │ │ │ -TDSRET tds_bcp_init ( TDSSOCKET *  tds, │ │ │ │ │ - TDSBCPINFO *  bcpinfo  │ │ │ │ │ - ) │ │ │ │ │ -Initialize BCP information. │ │ │ │ │ -Query structure of the table to server. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ - bcpinfo BCP information to initialize. Structure should be allocate and │ │ │ │ │ - table name and direction should be already set. │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_bcp_send_record() ***** │ │ │ │ │ -TDSRET tds_bcp_send_record ( TDSSOCKET *  tds, │ │ │ │ │ - TDSBCPINFO *  bcpinfo, │ │ │ │ │ - tds_bcp_get_col_data  get_col_data, │ │ │ │ │ - tds_bcp_null_error  null_error, │ │ │ │ │ - int  offset  │ │ │ │ │ - ) │ │ │ │ │ -Send one row of data to server. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/ │ │ │ │ │ - server operation. │ │ │ │ │ - bcpinfo BCP information │ │ │ │ │ - get_col_data function to call to retrieve data to be sent │ │ │ │ │ - ignored function to call if we try to send NULL if not allowed (not │ │ │ │ │ - used) │ │ │ │ │ - offset passed to get_col_data and null_error to specify the row to │ │ │ │ │ - get │ │ │ │ │ - Returns │ │ │ │ │ - TDS_SUCCESS or TDS_FAIL. │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_bcp_start() ***** │ │ │ │ │ -TDSRET tds_bcp_start ( TDSSOCKET *  tds, │ │ │ │ │ - TDSBCPINFO *  bcpinfo  │ │ │ │ │ - ) │ │ │ │ │ -Start sending BCP data to server. │ │ │ │ │ -Initialize stream to accept data. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ - bcpinfo BCP information already prepared │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_bcp_start_copy_in() ***** │ │ │ │ │ -TDSRET tds_bcp_start_copy_in ( TDSSOCKET *  tds, │ │ │ │ │ - TDSBCPINFO *  bcpinfo  │ │ │ │ │ - ) │ │ │ │ │ -Start bulk copy to server. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ - bcpinfo BCP information already prepared │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_get_conversion_type() ***** │ │ │ │ │ -TDS_SERVER_TYPE tds_get_conversion_type ( TDS_SERVER_TYPE  srctype, │ │ │ │ │ - int  colsize  │ │ │ │ │ - ) │ │ │ │ │ -Return type suitable for conversions (convert all nullable types to fixed type) │ │ │ │ │ - Parameters │ │ │ │ │ - srctype type to convert │ │ │ │ │ - colsize size of type │ │ │ │ │ - Returns │ │ │ │ │ - type for conversion │ │ │ │ │ -***** ◆ tds_get_locale() ***** │ │ │ │ │ -TDSLOCALE * tds_get_locale ( void  ) │ │ │ │ │ -Get locale information. │ │ │ │ │ - Returns │ │ │ │ │ - allocated structure with all information or NULL if error │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** ◆ tds_iconv_alloc() ***** │ │ │ │ │ -int tds_iconv_alloc ( TDSCONNECTION *  conn ) │ │ │ │ │ -Allocate iconv stuff. │ │ │ │ │ - Returns │ │ │ │ │ - 0 for success │ │ │ │ │ -***** ◆ tds_numeric_to_string() ***** │ │ │ │ │ -TDS_INT tds_numeric_to_string ( const TDS_NUMERIC *  numeric, │ │ │ │ │ - char *  s  │ │ │ │ │ - ) │ │ │ │ │ - Returns │ │ │ │ │ - <0 if error │ │ │ │ │ -***** ◆ tds_set_column_type() ***** │ │ │ │ │ -void tds_set_column_type ( TDSCONNECTION *  conn, │ │ │ │ │ - TDSCOLUMN *  curcol, │ │ │ │ │ - TDS_SERVER_TYPE  type  │ │ │ │ │ - ) │ │ │ │ │ -Set type of column initializing all dependency. │ │ │ │ │ -column_usertype should already be set. │ │ │ │ │ - Parameters │ │ │ │ │ - curcol column to set │ │ │ │ │ - type type to set │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_set_param_type() ***** │ │ │ │ │ -void tds_set_param_type ( TDSCONNECTION *  conn, │ │ │ │ │ - TDSCOLUMN *  curcol, │ │ │ │ │ - TDS_SERVER_TYPE  type  │ │ │ │ │ - ) │ │ │ │ │ -Set type of column initializing all dependency. │ │ │ │ │ - Parameters │ │ │ │ │ - tds state information for the socket and the TDS protocol │ │ │ │ │ - curcol column to set │ │ │ │ │ - type type to set │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** ◆ tds_set_server() ***** │ │ │ │ │ -bool tds_set_server ( TDSLOGIN *  tds_login, │ │ │ │ │ - const char *  server  │ │ │ │ │ - ) │ │ │ │ │ -Set the servername in a TDSLOGIN structure. │ │ │ │ │ -Normally copies server into tds_login. If server does not point to a plausible │ │ │ │ │ -name, the environment variables TDSQUERY and DSQUERY are used, in that order. │ │ │ │ │ -If they don't exist, the "default default" servername is "SYBASE" (although the │ │ │ │ │ -utility of that choice is a bit murky). │ │ │ │ │ - Parameters │ │ │ │ │ - tds_login points to a TDSLOGIN structure │ │ │ │ │ - server the servername, or NULL, or a zero-length string │ │ │ │ │ - Todo: │ │ │ │ │ - open the log file earlier, so these messages can be seen. │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** ◆ tds_set_state() ***** │ │ │ │ │ -TDS_STATE tds_set_state ( TDSSOCKET *  tds, │ │ │ │ │ - TDS_STATE  state  │ │ │ │ │ - ) │ │ │ │ │ -Set state of TDS connection, with logging and checking. │ │ │ │ │ - Parameters │ │ │ │ │ - tds state information for the socket and the TDS protocol │ │ │ │ │ - state the new state of the connection, cf. TDS_STATE. │ │ │ │ │ - Returns │ │ │ │ │ - the new state, which might not be state. │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** ◆ tds_writetext_continue() ***** │ │ │ │ │ -TDSRET tds_writetext_continue ( TDSSOCKET *  tds, │ │ │ │ │ - const TDS_UCHAR *  text, │ │ │ │ │ - TDS_UINT  size  │ │ │ │ │ - ) │ │ │ │ │ -Send some data in the writetext request started by tds_writetext_start. │ │ │ │ │ -You should write in total (with multiple calls to this function) all bytes │ │ │ │ │ -declared calling tds_writetext_start. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ - text data to write │ │ │ │ │ - size data size in bytes │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_writetext_end() ***** │ │ │ │ │ -TDSRET tds_writetext_end ( TDSSOCKET *  tds ) │ │ │ │ │ -Finish sending writetext data. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tds_writetext_start() ***** │ │ │ │ │ -TDSRET tds_writetext_start ( TDSSOCKET *  tds, │ │ │ │ │ - const char *  objname, │ │ │ │ │ - const char *  textptr, │ │ │ │ │ - const char *  timestamp, │ │ │ │ │ - int  with_log, │ │ │ │ │ - TDS_UINT  size  │ │ │ │ │ - ) │ │ │ │ │ -Start writing writetext request. │ │ │ │ │ -This request start a bulk session. │ │ │ │ │ - Parameters │ │ │ │ │ - tds A pointer to the TDSSOCKET structure managing a client/server │ │ │ │ │ - operation. │ │ │ │ │ - objname table name │ │ │ │ │ - textptr TEXTPTR (see sql documentation) │ │ │ │ │ - timestamp data timestamp │ │ │ │ │ - with_log is log is enabled during insert │ │ │ │ │ - size bytes to be inserted │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -Here is the caller graph for this function: │ │ │ │ │ -***** ◆ tdsdump_col() ***** │ │ │ │ │ -void tdsdump_col ( const TDSCOLUMN *  col ) │ │ │ │ │ -Write a column value to the debug log. │ │ │ │ │ - │ │ │ │ │ - Parameters │ │ │ │ │ - col column to dump │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** ◆ tdsdump_dump_buf() ***** │ │ │ │ │ -void tdsdump_dump_buf ( const char *  file, │ │ │ │ │ - unsigned int  level_line, │ │ │ │ │ - const char *  msg, │ │ │ │ │ - const void *  buf, │ │ │ │ │ - size_t  length  │ │ │ │ │ - ) │ │ │ │ │ -Dump the contents of data into the log file in a human readable format. │ │ │ │ │ - Parameters │ │ │ │ │ - file source file name │ │ │ │ │ - level_line line and level combined. This and file are automatically │ │ │ │ │ - computed by TDS_DBG_* macros. │ │ │ │ │ - msg message to print before dump │ │ │ │ │ - buf buffer to dump │ │ │ │ │ - length number of bytes in the buffer │ │ │ │ │ -***** ◆ tdsdump_log() ***** │ │ │ │ │ -void tdsdump_log ( const char *  file, │ │ │ │ │ - unsigned int  level_line, │ │ │ │ │ - const char *  fmt, │ │ │ │ │ -   ...  │ │ │ │ │ - ) │ │ │ │ │ -Write a message to the debug log. │ │ │ │ │ - │ │ │ │ │ - Parameters │ │ │ │ │ - file name of the log file │ │ │ │ │ - level_line kind of detail to be included │ │ │ │ │ - fmt printf-like format string │ │ │ │ │ -***** ◆ tdsdump_off() ***** │ │ │ │ │ -void tdsdump_off ( TDSDUMP_OFF_ITEM *  off_item ) │ │ │ │ │ -Temporarily turn off logging for current thread. │ │ │ │ │ - Parameters │ │ │ │ │ - List item to be used by the function. The item will be │ │ │ │ │ - off_item initialized by the function. It's retained till is removed with │ │ │ │ │ - tdsdump_on so it must be kept alive. │ │ │ │ │ -***** ◆ tdsdump_on() ***** │ │ │ │ │ -void tdsdump_on ( TDSDUMP_OFF_ITEM *  off_item ) │ │ │ │ │ -Turn logging back on for current thread. │ │ │ │ │ - Parameters │ │ │ │ │ - off_item List item to remove from global list. Previously used by │ │ │ │ │ - tdsdump_off(). │ │ │ │ │ -***** ◆ tdsdump_open() ***** │ │ │ │ │ -int tdsdump_open ( const tds_dir_char *  filename ) │ │ │ │ │ -Create and truncate a human readable dump file for the TDS traffic. │ │ │ │ │ -The name of the file is specified by the filename parameter. If that is given │ │ │ │ │ -as NULL or an empty string, any existing log file will be closed. │ │ │ │ │ - Returns │ │ │ │ │ - true if the file was opened, false if it couldn't be opened. │ │ │ │ │ -***** ◆ tdserror() ***** │ │ │ │ │ -int tdserror ( const TDSCONTEXT *  tds_ctx, │ │ │ │ │ - TDSSOCKET *  tds, │ │ │ │ │ - int  msgno, │ │ │ │ │ - int  errnum  │ │ │ │ │ - ) │ │ │ │ │ -Call the client library's error handler (for library-generated errors only) │ │ │ │ │ -The client library error handler may return: TDS_INT_CANCEL – Return TDS_FAIL │ │ │ │ │ -to the calling function. For TDSETIME, closes the connection first. TDS_INT_ │ │ │ │ │ -CONTINUE – For TDSETIME only, retry the network read/write operation. Else │ │ │ │ │ -invalid. TDS_INT_TIMEOUT – For TDSETIME only, send a TDSCANCEL packet. Else │ │ │ │ │ -invalid. │ │ │ │ │ -These are Sybase semantics, but they serve all purposes. │ │ │ │ │ -The application tells the library to quit, fail, retry, or attempt to cancel. │ │ │ │ │ -In the event of a network timeout, a failed operation necessarily means the │ │ │ │ │ -connection becomes unusable, because no cancellation dialog was concluded with │ │ │ │ │ -the server. │ │ │ │ │ -It is the client library's duty to call the error handler installed by the │ │ │ │ │ -application, if any, and to interpret the installed handler's return code. It │ │ │ │ │ -may return to this function one of the above codes only. This function will not │ │ │ │ │ -check the return code because there's nothing that can be done here except │ │ │ │ │ -abort. It is merely passed to the calling function, which will (we hope) DTRT. │ │ │ │ │ - Parameters │ │ │ │ │ - tds_ctx points to a TDSCONTEXT structure │ │ │ │ │ - tds the connection structure, may be NULL if not connected │ │ │ │ │ - msgno an enumerated libtds msgno, cf. tds.h │ │ │ │ │ - errnum the OS errno, if it matters, else zero │ │ │ │ │ - Returns │ │ │ │ │ - client library function's return code │ │ │ │ │ -Here is the call graph for this function: │ │ │ │ │ -***** Variable Documentation ***** │ │ │ │ │ -***** ◆ tds_numeric_bytes_per_prec ***** │ │ │ │ │ -const int tds_numeric_bytes_per_prec[] extern │ │ │ │ │ -The following little table is indexed by precision and will tell us the number │ │ │ │ │ -of bytes required to store the specified precision. │ │ │ │ │ -The following little table is indexed by precision and will tell us the number │ │ │ │ │ -of bytes required to store the specified precision. │ │ │ │ │ -Support precision up to 77 digits │ │ │ │ │ +Provide poll call where missing. │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00452_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/tds.h Source File │ │ │ │ +FreeTDS API: include/freetds/replacements/poll.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,1914 +70,83 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
tds.h
│ │ │ │ +
poll.h
│ │ │ │
│ │ │ │
│ │ │ │ -Go to the documentation of this file.
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ -
22#define _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +Go to the documentation of this file.
1
│ │ │ │ +
5#if !defined(_tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_) && !defined(HAVE_POLL)
│ │ │ │ +
6#define _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_
│ │ │ │ +
7
│ │ │ │ +
8#include <freetds/pushvis.h>
│ │ │ │ +
9
│ │ │ │ +
10#ifndef _WIN32
│ │ │ │ +
11/* poll flags */
│ │ │ │ +
12# define POLLIN 0x0001
│ │ │ │ +
13# define POLLOUT 0x0004
│ │ │ │ +
14# define POLLERR 0x0008
│ │ │ │ +
15
│ │ │ │ +
16/* synonyms */
│ │ │ │ +
17# define POLLNORM POLLIN
│ │ │ │ +
18# define POLLPRI POLLIN
│ │ │ │ +
19# define POLLRDNORM POLLIN
│ │ │ │ +
20# define POLLRDBAND POLLIN
│ │ │ │ +
21# define POLLWRNORM POLLOUT
│ │ │ │ +
22# define POLLWRBAND POLLOUT
│ │ │ │
23
│ │ │ │ -
24#ifndef _freetds_config_h_
│ │ │ │ -
25#error should include config.h before
│ │ │ │ -
26#endif
│ │ │ │ -
27
│ │ │ │ -
28#include <stdarg.h>
│ │ │ │ -
29#include <stdio.h>
│ │ │ │ -
30#include <time.h>
│ │ │ │ -
31
│ │ │ │ -
32#ifdef HAVE_STDDEF_H
│ │ │ │ -
33#include <stddef.h>
│ │ │ │ -
34#endif
│ │ │ │ -
35
│ │ │ │ -
36#if HAVE_NETDB_H
│ │ │ │ -
37#include <netdb.h>
│ │ │ │ -
38#endif /* HAVE_NETDB_H */
│ │ │ │ -
39
│ │ │ │ -
40#if HAVE_NETINET_IN_H
│ │ │ │ -
41#include <netinet/in.h>
│ │ │ │ -
42#endif /* HAVE_NET_INET_IN_H */
│ │ │ │ -
43#if HAVE_ARPA_INET_H
│ │ │ │ -
44#include <arpa/inet.h>
│ │ │ │ -
45#endif /* HAVE_ARPA_INET_H */
│ │ │ │ -
46
│ │ │ │ -
47#if HAVE_SYS_SOCKET_H
│ │ │ │ -
48#include <sys/socket.h>
│ │ │ │ -
49#endif /* HAVE_SYS_SOCKET_H */
│ │ │ │ -
50
│ │ │ │ -
51/* forward declaration */
│ │ │ │ -
52typedef struct tdsiconvinfo TDSICONV;
│ │ │ │ -
53typedef struct tds_connection TDSCONNECTION;
│ │ │ │ -
54typedef struct tds_socket TDSSOCKET;
│ │ │ │ -
55typedef struct tds_column TDSCOLUMN;
│ │ │ │ -
56typedef struct tds_bcpinfo TDSBCPINFO;
│ │ │ │ -
57
│ │ │ │ -
58#include <freetds/version.h>
│ │ │ │ -
59#include <freetds/sysdep_private.h>
│ │ │ │ -
60#include <freetds/thread.h>
│ │ │ │ -
61#include <freetds/bool.h>
│ │ │ │ -
62#include <freetds/macros.h>
│ │ │ │ -
63#include <freetds/utils/string.h>
│ │ │ │ -
64#include <freetds/utils/path.h>
│ │ │ │ -
65#include <freetds/replacements.h>
│ │ │ │ -
66
│ │ │ │ -
67#include <freetds/pushvis.h>
│ │ │ │ -
68
│ │ │ │ -
69#ifdef __cplusplus
│ │ │ │ -
70extern "C"
│ │ │ │ -
71{
│ │ │ │ -
72#if 0
│ │ │ │ -
73}
│ │ │ │ -
74#endif
│ │ │ │ -
75#endif
│ │ │ │ -
76
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
83{
│ │ │ │ -
84 const char *freetds_version; /* release version of FreeTDS */
│ │ │ │ -
85 const tds_dir_char *sysconfdir; /* location of freetds.conf */
│ │ │ │ -
86 const char *last_update; /* latest software_version date among the modules */
│ │ │ │ -
87 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1/8.0) 5.0 */
│ │ │ │ -
88 bool msdblib; /* for MS style dblib */
│ │ │ │ -
89 bool sybase_compat; /* enable increased Open Client binary compatibility */
│ │ │ │ -
90 bool threadsafe; /* compile for thread safety default=no */
│ │ │ │ -
91 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */
│ │ │ │ -
92 bool iodbc; /* build odbc driver against iODBC in DIR */
│ │ │ │ -
93 bool unixodbc; /* build odbc driver against unixODBC in DIR */
│ │ │ │ -
94 bool openssl; /* build against OpenSSL */
│ │ │ │ -
95 bool gnutls; /* build against GnuTLS */
│ │ │ │ -
96 bool mars; /* MARS enabled */
│ │ │ │ -
97 bool sspi; /* SSPI enabled */
│ │ │ │ -
98 bool kerberos; /* Kerberos enabled */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
100
│ │ │ │ -
116/*
│ │ │ │ -
117 * All references to data that touch the wire should use the following typedefs.
│ │ │ │ -
118 *
│ │ │ │ -
119 * If you have problems on 64-bit machines and the code is
│ │ │ │ -
120 * using a native datatype, please change it to use
│ │ │ │ -
121 * these. (In the TDS layer only, the API layers have their
│ │ │ │ -
122 * own typedefs which equate to these).
│ │ │ │ -
123 */
│ │ │ │ -
124typedef char TDS_CHAR; /* 8-bit char */
│ │ │ │ -
125typedef uint8_t TDS_UCHAR; /* 8-bit uchar */
│ │ │ │ -
126typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */
│ │ │ │ -
127typedef int16_t TDS_SMALLINT; /* 16-bit int */
│ │ │ │ -
128typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */
│ │ │ │ -
129typedef int32_t TDS_INT; /* 32-bit int */
│ │ │ │ -
130typedef uint32_t TDS_UINT; /* 32-bit unsigned */
│ │ │ │ -
131typedef int64_t TDS_INT8; /* 64-bit integer */
│ │ │ │ -
132typedef uint64_t TDS_UINT8; /* 64-bit unsigned */
│ │ │ │ -
133typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */
│ │ │ │ -
134typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */
│ │ │ │ -
135
│ │ │ │ -
136#include <freetds/proto.h>
│ │ │ │ -
137
│ │ │ │ -
138#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)
│ │ │ │ -
139
│ │ │ │ -
│ │ │ │ -
144typedef struct
│ │ │ │ -
145{
│ │ │ │ -
146 TDS_UINT8 time;
│ │ │ │ -
147 TDS_INT date;
│ │ │ │ -
148 TDS_SMALLINT offset;
│ │ │ │ -
149 TDS_USMALLINT time_prec:3;
│ │ │ │ -
150 TDS_USMALLINT _tds_reserved:10;
│ │ │ │ -
151 TDS_USMALLINT has_time:1;
│ │ │ │ -
152 TDS_USMALLINT has_date:1;
│ │ │ │ -
153 TDS_USMALLINT has_offset:1;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
155
│ │ │ │ -
│ │ │ │ -
157typedef struct tdsdaterec
│ │ │ │ -
158{
│ │ │ │ -
159 TDS_INT year;
│ │ │ │ -
160 TDS_INT quarter;
│ │ │ │ -
161 TDS_INT month;
│ │ │ │ -
162 TDS_INT day;
│ │ │ │ -
163 TDS_INT dayofyear;
│ │ │ │ -
164 TDS_INT weekday;
│ │ │ │ -
165 TDS_INT hour;
│ │ │ │ -
166 TDS_INT minute;
│ │ │ │ -
167 TDS_INT second;
│ │ │ │ - │ │ │ │ -
169 TDS_INT timezone;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
171
│ │ │ │ -
177extern const int tds_numeric_bytes_per_prec[];
│ │ │ │ -
178
│ │ │ │ -
179typedef int TDSRET;
│ │ │ │ -
180#define TDS_NO_MORE_RESULTS ((TDSRET)1)
│ │ │ │ -
181#define TDS_SUCCESS ((TDSRET)0)
│ │ │ │ -
182#define TDS_FAIL ((TDSRET)-1)
│ │ │ │ -
183#define TDS_CANCELLED ((TDSRET)-2)
│ │ │ │ -
184#define TDS_FAILED(rc) ((rc)<0)
│ │ │ │ -
185#define TDS_SUCCEED(rc) ((rc)>=0)
│ │ │ │ -
186#define TDS_PROPAGATE(rc) \
│ │ │ │ -
187 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } while(0)
│ │ │ │ -
188
│ │ │ │ -
189#define TDS_INT_CONTINUE 1
│ │ │ │ -
190#define TDS_INT_CANCEL 2
│ │ │ │ -
191#define TDS_INT_TIMEOUT 3
│ │ │ │ -
192
│ │ │ │ -
193
│ │ │ │ -
194#define TDS_NO_COUNT -1
│ │ │ │ -
195
│ │ │ │ -
196#define TDS_ROW_RESULT 4040
│ │ │ │ -
197#define TDS_PARAM_RESULT 4042
│ │ │ │ -
198#define TDS_STATUS_RESULT 4043
│ │ │ │ -
199#define TDS_MSG_RESULT 4044
│ │ │ │ -
200#define TDS_COMPUTE_RESULT 4045
│ │ │ │ -
201#define TDS_CMD_DONE 4046
│ │ │ │ -
202#define TDS_CMD_SUCCEED 4047
│ │ │ │ -
203#define TDS_CMD_FAIL 4048
│ │ │ │ -
204#define TDS_ROWFMT_RESULT 4049
│ │ │ │ -
205#define TDS_COMPUTEFMT_RESULT 4050
│ │ │ │ -
206#define TDS_DESCRIBE_RESULT 4051
│ │ │ │ -
207#define TDS_DONE_RESULT 4052
│ │ │ │ -
208#define TDS_DONEPROC_RESULT 4053
│ │ │ │ -
209#define TDS_DONEINPROC_RESULT 4054
│ │ │ │ -
210#define TDS_OTHERS_RESULT 4055
│ │ │ │ -
211
│ │ │ │ -
212enum tds_token_results
│ │ │ │ -
213{
│ │ │ │ -
214 TDS_TOKEN_RES_OTHERS,
│ │ │ │ -
215 TDS_TOKEN_RES_ROWFMT,
│ │ │ │ -
216 TDS_TOKEN_RES_COMPUTEFMT,
│ │ │ │ -
217 TDS_TOKEN_RES_PARAMFMT,
│ │ │ │ -
218 TDS_TOKEN_RES_DONE,
│ │ │ │ -
219 TDS_TOKEN_RES_ROW,
│ │ │ │ -
220 TDS_TOKEN_RES_COMPUTE,
│ │ │ │ -
221 TDS_TOKEN_RES_PROC,
│ │ │ │ -
222 TDS_TOKEN_RES_MSG,
│ │ │ │ -
223 TDS_TOKEN_RES_ENV,
│ │ │ │ -
224};
│ │ │ │ -
225
│ │ │ │ -
226#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
│ │ │ │ -
227
│ │ │ │ -
228enum tds_token_flags
│ │ │ │ -
229{
│ │ │ │ -
230 TDS_HANDLE_ALL = 0,
│ │ │ │ -
231 TDS_TOKEN_FLAG(OTHERS),
│ │ │ │ -
232 TDS_TOKEN_FLAG(ROWFMT),
│ │ │ │ -
233 TDS_TOKEN_FLAG(COMPUTEFMT),
│ │ │ │ -
234 TDS_TOKEN_FLAG(PARAMFMT),
│ │ │ │ -
235 TDS_TOKEN_FLAG(DONE),
│ │ │ │ -
236 TDS_TOKEN_FLAG(ROW),
│ │ │ │ -
237 TDS_TOKEN_FLAG(COMPUTE),
│ │ │ │ -
238 TDS_TOKEN_FLAG(PROC),
│ │ │ │ -
239 TDS_TOKEN_FLAG(MSG),
│ │ │ │ -
240 TDS_TOKEN_FLAG(ENV),
│ │ │ │ -
241 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,
│ │ │ │ -
242 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
│ │ │ │ -
243};
│ │ │ │ -
244
│ │ │ │ -
245/*
│ │ │ │ -
246 * TDSERRNO is emitted by libtds to the client library's error handler
│ │ │ │ -
247 * (which may in turn call the client's error handler).
│ │ │ │ -
248 * These match the db-lib msgno, because the same values have the same meaning
│ │ │ │ -
249 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).
│ │ │ │ -
250 */
│ │ │ │ -
251typedef enum { TDSEOK = TDS_SUCCESS,
│ │ │ │ -
252 TDSEVERDOWN = 100,
│ │ │ │ -
253 TDSEINPROGRESS,
│ │ │ │ -
254 TDSEICONVIU = 2400,
│ │ │ │ -
255 TDSEICONVAVAIL = 2401,
│ │ │ │ -
256 TDSEICONVO = 2402,
│ │ │ │ -
257 TDSEICONVI = 2403,
│ │ │ │ -
258 TDSEICONV2BIG = 2404,
│ │ │ │ -
259 TDSEPORTINSTANCE = 2500,
│ │ │ │ -
260 TDSESYNC = 20001,
│ │ │ │ -
261 TDSEFCON = 20002,
│ │ │ │ -
262 TDSETIME = 20003,
│ │ │ │ -
263 TDSEREAD = 20004,
│ │ │ │ -
264 TDSEWRIT = 20006,
│ │ │ │ -
265 TDSESOCK = 20008,
│ │ │ │ -
266 TDSECONN = 20009,
│ │ │ │ -
267 TDSEMEM = 20010,
│ │ │ │ -
268 TDSEINTF = 20012, /* Server name not found in interface file */
│ │ │ │ -
269 TDSEUHST = 20013, /* Unknown host machine name. */
│ │ │ │ -
270 TDSEPWD = 20014,
│ │ │ │ -
271 TDSESEOF = 20017,
│ │ │ │ -
272 TDSERPND = 20019,
│ │ │ │ -
273 TDSEBTOK = 20020,
│ │ │ │ -
274 TDSEOOB = 20022,
│ │ │ │ -
275 TDSECLOS = 20056,
│ │ │ │ -
276 TDSEUSCT = 20058,
│ │ │ │ -
277 TDSEUTDS = 20146,
│ │ │ │ -
278 TDSEEUNR = 20185,
│ │ │ │ -
279 TDSECAP = 20203,
│ │ │ │ -
280 TDSENEG = 20210,
│ │ │ │ -
281 TDSEUMSG = 20212,
│ │ │ │ -
282 TDSECAPTYP = 20213,
│ │ │ │ -
283 TDSECONF = 20214,
│ │ │ │ -
284 TDSEBPROBADTYP = 20250,
│ │ │ │ -
285 TDSECLOSEIN = 20292
│ │ │ │ -
286} TDSERRNO;
│ │ │ │ -
287
│ │ │ │ -
288
│ │ │ │ -
289enum {
│ │ │ │ -
290 TDS_CUR_ISTAT_UNUSED = 0x00,
│ │ │ │ -
291 TDS_CUR_ISTAT_DECLARED = 0x01,
│ │ │ │ -
292 TDS_CUR_ISTAT_OPEN = 0x02,
│ │ │ │ -
293 TDS_CUR_ISTAT_CLOSED = 0x04,
│ │ │ │ -
294 TDS_CUR_ISTAT_RDONLY = 0x08,
│ │ │ │ -
295 TDS_CUR_ISTAT_UPDATABLE = 0x10,
│ │ │ │ -
296 TDS_CUR_ISTAT_ROWCNT = 0x20,
│ │ │ │ -
297 TDS_CUR_ISTAT_DEALLOC = 0x40
│ │ │ │ -
298};
│ │ │ │ -
299
│ │ │ │ -
300/* string types */
│ │ │ │ -
301#define TDS_NULLTERM -9
│ │ │ │ -
302
│ │ │ │ -
303
│ │ │ │ -
│ │ │ │ -
304typedef union tds_option_arg
│ │ │ │ -
305{
│ │ │ │ -
306 TDS_TINYINT ti;
│ │ │ │ -
307 TDS_INT i;
│ │ │ │ -
308 TDS_CHAR *c;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
310
│ │ │ │ -
311
│ │ │ │ -
312typedef enum tds_encryption_level {
│ │ │ │ -
313 TDS_ENCRYPTION_DEFAULT,
│ │ │ │ -
314 TDS_ENCRYPTION_OFF,
│ │ │ │ -
315 TDS_ENCRYPTION_REQUEST,
│ │ │ │ -
316 TDS_ENCRYPTION_REQUIRE,
│ │ │ │ -
317 TDS_ENCRYPTION_STRICT
│ │ │ │ -
318} TDS_ENCRYPTION_LEVEL;
│ │ │ │ -
319
│ │ │ │ -
320/*
│ │ │ │ -
321 * TODO use system macros for optimization
│ │ │ │ -
322 * See mcrypt for reference and linux kernel source for optimization
│ │ │ │ -
323 * check if unaligned access and use fast write/read when implemented
│ │ │ │ -
324 */
│ │ │ │ -
325#define TDS_BYTE_SWAP16(value) \
│ │ │ │ -
326 (((((uint16_t)value)<<8) & 0xFF00u) | \
│ │ │ │ -
327 ((((uint16_t)value)>>8) & 0x00FFu))
│ │ │ │ -
328
│ │ │ │ -
329#define TDS_BYTE_SWAP32(value) \
│ │ │ │ -
330 (((((uint32_t)value)<<24) & 0xFF000000u)| \
│ │ │ │ -
331 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \
│ │ │ │ -
332 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \
│ │ │ │ -
333 ((((uint32_t)value)>>24) & 0x000000FFu))
│ │ │ │ -
334
│ │ │ │ -
335#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_TOKEN)
│ │ │ │ -
336
│ │ │ │ -
337enum {
│ │ │ │ -
338 TDS_TYPEFLAG_INVALID = 0,
│ │ │ │ -
339 TDS_TYPEFLAG_NULLABLE = 1,
│ │ │ │ -
340 TDS_TYPEFLAG_FIXED = 2,
│ │ │ │ -
341 TDS_TYPEFLAG_VARIABLE = 4,
│ │ │ │ -
342 TDS_TYPEFLAG_COLLATE = 8,
│ │ │ │ -
343 TDS_TYPEFLAG_ASCII = 16,
│ │ │ │ -
344 TDS_TYPEFLAG_UNICODE = 32,
│ │ │ │ -
345 TDS_TYPEFLAG_BINARY = 64,
│ │ │ │ -
346 TDS_TYPEFLAG_DATETIME = 128,
│ │ │ │ -
347 TDS_TYPEFLAG_NUMERIC = 256,
│ │ │ │ -
348 TDS_TYPEFLAG_VARIANT = 512,
│ │ │ │ -
349};
│ │ │ │ -
350
│ │ │ │ -
351extern const uint16_t tds_type_flags_ms[256];
│ │ │ │ -
352#if 0
│ │ │ │ -
353extern const uint16_t tds_type_flags_syb[256];
│ │ │ │ -
354extern const char *const tds_type_names[256];
│ │ │ │ -
355#endif
│ │ │ │ -
356
│ │ │ │ -
357#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)
│ │ │ │ -
358#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) != 0)
│ │ │ │ -
359#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
│ │ │ │ -
360#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIANT) != 0)
│ │ │ │ -
361
│ │ │ │ -
362
│ │ │ │ -
363#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)
│ │ │ │ -
364#define is_blob_col(x) ((x)->column_varint_size > 2)
│ │ │ │ -
365/* large type means it has a two byte size field */
│ │ │ │ -
366/* define is_large_type(x) (x>128) */
│ │ │ │ -
367#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)
│ │ │ │ -
369#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) != 0)
│ │ │ │ -
370#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
│ │ │ │ -
371#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != 0)
│ │ │ │ -
372#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)
│ │ │ │ -
373#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != 0)
│ │ │ │ -
374#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)
│ │ │ │ -
375#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))
│ │ │ │ -
376inline static bool
│ │ │ │ -
377is_tds_type_valid(int type)
│ │ │ │ -
378{
│ │ │ │ -
379 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;
│ │ │ │ -
380}
│ │ │ │ -
381
│ │ │ │ -
382
│ │ │ │ -
383#define TDS_MAX_CAPABILITY 32
│ │ │ │ -
384#define MAXPRECISION 77
│ │ │ │ -
385#define TDS_MAX_CONN 4096
│ │ │ │ -
386#define TDS_MAX_DYNID_LEN 30
│ │ │ │ -
387
│ │ │ │ -
388/* defaults to use if no others are found */
│ │ │ │ -
389#define TDS_DEF_SERVER "SYBASE"
│ │ │ │ -
390#define TDS_DEF_BLKSZ 512
│ │ │ │ -
391#define TDS_DEF_CHARSET "iso_1"
│ │ │ │ -
392#define TDS_DEF_LANG "us_english"
│ │ │ │ -
393#if TDS50
│ │ │ │ -
394#define TDS_DEFAULT_VERSION 0x500
│ │ │ │ -
395#define TDS_DEF_PORT 4000
│ │ │ │ -
396#elif TDS71
│ │ │ │ -
397#define TDS_DEFAULT_VERSION 0x701
│ │ │ │ -
398#define TDS_DEF_PORT 1433
│ │ │ │ -
399#elif TDS72
│ │ │ │ -
400#define TDS_DEFAULT_VERSION 0x702
│ │ │ │ -
401#define TDS_DEF_PORT 1433
│ │ │ │ -
402#elif TDS73
│ │ │ │ -
403#define TDS_DEFAULT_VERSION 0x703
│ │ │ │ -
404#define TDS_DEF_PORT 1433
│ │ │ │ -
405#elif TDS74
│ │ │ │ -
406#define TDS_DEFAULT_VERSION 0x704
│ │ │ │ -
407#define TDS_DEF_PORT 1433
│ │ │ │ -
408#else
│ │ │ │ -
409#define TDS_DEFAULT_VERSION 0x000
│ │ │ │ -
410#define TDS_DEF_PORT 1433
│ │ │ │ -
411#endif
│ │ │ │ -
412
│ │ │ │ -
413/* normalized strings from freetds.conf file */
│ │ │ │ -
414#define TDS_STR_VERSION "tds version"
│ │ │ │ -
415#define TDS_STR_BLKSZ "initial block size"
│ │ │ │ -
416#define TDS_STR_SWAPDT "swap broken dates"
│ │ │ │ -
417#define TDS_STR_DUMPFILE "dump file"
│ │ │ │ -
418#define TDS_STR_DEBUGLVL "debug level"
│ │ │ │ -
419#define TDS_STR_DEBUGFLAGS "debug flags"
│ │ │ │ -
420#define TDS_STR_TIMEOUT "timeout"
│ │ │ │ -
421#define TDS_STR_QUERY_TIMEOUT "query timeout"
│ │ │ │ -
422#define TDS_STR_CONNTIMEOUT "connect timeout"
│ │ │ │ -
423#define TDS_STR_HOSTNAME "hostname"
│ │ │ │ -
424#define TDS_STR_HOST "host"
│ │ │ │ -
425#define TDS_STR_PORT "port"
│ │ │ │ -
426#define TDS_STR_TEXTSZ "text size"
│ │ │ │ -
427/* for big endian hosts, obsolete, ignored */
│ │ │ │ -
428#define TDS_STR_EMUL_LE "emulate little endian"
│ │ │ │ -
429#define TDS_STR_CHARSET "charset"
│ │ │ │ -
430#define TDS_STR_CLCHARSET "client charset"
│ │ │ │ -
431#define TDS_STR_USE_UTF_16 "use utf-16"
│ │ │ │ -
432#define TDS_STR_LANGUAGE "language"
│ │ │ │ -
433#define TDS_STR_APPENDMODE "dump file append"
│ │ │ │ -
434#define TDS_STR_DATETIMEFMT "date format"
│ │ │ │ -
435#define TDS_STR_DATEFMT "date-only format"
│ │ │ │ -
436#define TDS_STR_TIMEFMT "time-only format"
│ │ │ │ -
437#define TDS_STR_INSTANCE "instance"
│ │ │ │ -
438#define TDS_STR_ASA_DATABASE "asa database"
│ │ │ │ -
439#define TDS_STR_DATABASE "database"
│ │ │ │ -
440#define TDS_STR_ENCRYPTION "encryption"
│ │ │ │ -
441#define TDS_STR_USENTLMV2 "use ntlmv2"
│ │ │ │ -
442#define TDS_STR_USELANMAN "use lanman"
│ │ │ │ -
443/* conf values */
│ │ │ │ -
444#define TDS_STR_ENCRYPTION_OFF "off"
│ │ │ │ -
445#define TDS_STR_ENCRYPTION_REQUEST "request"
│ │ │ │ -
446#define TDS_STR_ENCRYPTION_REQUIRE "require"
│ │ │ │ -
447#define TDS_STR_ENCRYPTION_STRICT "strict"
│ │ │ │ -
448/* Defines to enable optional GSSAPI delegation */
│ │ │ │ -
449#define TDS_GSSAPI_DELEGATION "enable gssapi delegation"
│ │ │ │ -
450/* Mutual authentication */
│ │ │ │ -
451#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication"
│ │ │ │ -
452/* Kerberos realm name */
│ │ │ │ -
453#define TDS_STR_REALM "realm"
│ │ │ │ -
454/* Kerberos SPN */
│ │ │ │ -
455#define TDS_STR_SPN "spn"
│ │ │ │ -
456/* CA file */
│ │ │ │ -
457#define TDS_STR_CAFILE "ca file"
│ │ │ │ -
458/* CRL file */
│ │ │ │ -
459#define TDS_STR_CRLFILE "crl file"
│ │ │ │ -
460/* check SSL hostname */
│ │ │ │ -
461#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname"
│ │ │ │ -
462/* SSL hostname to check certificate */
│ │ │ │ -
463#define TDS_STR_SSLHOSTNAME "certificate hostname"
│ │ │ │ -
464/* database filename to attach on login (MSSQL) */
│ │ │ │ -
465#define TDS_STR_DBFILENAME "database filename"
│ │ │ │ -
466/* Application Intent MSSQL 2012 support */
│ │ │ │ -
467#define TDS_STR_READONLY_INTENT "read-only intent"
│ │ │ │ -
468/* configurable cipher suite to send to openssl's SSL_set_cipher_list() function */
│ │ │ │ -
469#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers"
│ │ │ │ -
470/* enable old TLS v1, required for instance if you are using a really old Windows XP */
│ │ │ │ -
471#define TDS_STR_ENABLE_TLS_V1 "enable tls v1"
│ │ │ │ -
472
│ │ │ │ -
473
│ │ │ │ -
474/* TODO do a better check for alignment than this */
│ │ │ │ -
│ │ │ │ -
475typedef union
│ │ │ │ -
476{
│ │ │ │ -
477 void *p;
│ │ │ │ -
478 int i;
│ │ │ │ -
479 int64_t ui;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
481
│ │ │ │ -
482#define TDS_ALIGN_SIZE sizeof(tds_align_struct)
│ │ │ │ -
483
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
485{
│ │ │ │ -
486 unsigned char type;
│ │ │ │ -
487 unsigned char len; /* always sizeof(values) */
│ │ │ │ -
488 unsigned char values[TDS_MAX_CAPABILITY/2-2];
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
490
│ │ │ │ -
│ │ │ │ -
491typedef struct tds_capabilities
│ │ │ │ -
492{
│ │ │ │ -
493 TDS_CAPABILITY_TYPE types[2];
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
495
│ │ │ │ -
496#define TDS_MAX_LOGIN_STR_SZ 128
│ │ │ │ -
│ │ │ │ -
497typedef struct tds_login
│ │ │ │ -
498{
│ │ │ │ - │ │ │ │ -
500 int port;
│ │ │ │ -
501 TDS_USMALLINT tds_version;
│ │ │ │ -
502 int block_size;
│ │ │ │ -
503 DSTR language; /* e.g. us-english */
│ │ │ │ - │ │ │ │ -
505 TDS_INT connect_timeout;
│ │ │ │ -
506 DSTR client_host_name;
│ │ │ │ -
507 DSTR server_host_name;
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
514 DSTR openssl_ciphers;
│ │ │ │ -
515 DSTR app_name;
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
520 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */
│ │ │ │ -
521 TDS_TINYINT encryption_level;
│ │ │ │ -
522
│ │ │ │ -
523 TDS_INT query_timeout;
│ │ │ │ -
524 TDS_CAPABILITIES capabilities;
│ │ │ │ -
525 DSTR client_charset;
│ │ │ │ -
526 DSTR database;
│ │ │ │ -
527
│ │ │ │ -
528 struct addrinfo *ip_addrs;
│ │ │ │ -
529 DSTR instance_name;
│ │ │ │ -
530 tds_dir_char *dump_file;
│ │ │ │ -
531 int debug_flags;
│ │ │ │ -
532 int text_size;
│ │ │ │ -
533 DSTR routing_address;
│ │ │ │ -
534 uint16_t routing_port;
│ │ │ │ -
535
│ │ │ │ -
536 unsigned char option_flag2;
│ │ │ │ -
537
│ │ │ │ -
538 unsigned int bulk_copy:1;
│ │ │ │ -
539 unsigned int suppress_language:1;
│ │ │ │ -
540 unsigned int gssapi_use_delegation:1;
│ │ │ │ -
541 unsigned int mutual_authentication:1;
│ │ │ │ -
542 unsigned int use_ntlmv2:1;
│ │ │ │ -
543 unsigned int use_ntlmv2_specified:1;
│ │ │ │ -
544 unsigned int use_lanman:1;
│ │ │ │ -
545 unsigned int mars:1;
│ │ │ │ -
546 unsigned int use_utf16:1;
│ │ │ │ -
547 unsigned int use_new_password:1;
│ │ │ │ -
548 unsigned int valid_configuration:1;
│ │ │ │ -
549 unsigned int check_ssl_hostname:1;
│ │ │ │ -
550 unsigned int readonly_intent:1;
│ │ │ │ -
551 unsigned int enable_tls_v1:1;
│ │ │ │ -
552 unsigned int enable_tls_v1_specified:1;
│ │ │ │ -
553 unsigned int server_is_valid:1;
│ │ │ │ -
554} TDSLOGIN;
│ │ │ │ -
│ │ │ │ -
555
│ │ │ │ -
│ │ │ │ -
556typedef struct tds_headers
│ │ │ │ -
557{
│ │ │ │ -
558 const char *qn_options;
│ │ │ │ -
559 const char *qn_msgtext;
│ │ │ │ -
560 TDS_INT qn_timeout;
│ │ │ │ -
561 /* TDS 7.4+: trace activity ID char[20] */
│ │ │ │ -
562} TDSHEADERS;
│ │ │ │ -
│ │ │ │ -
563
│ │ │ │ -
│ │ │ │ -
564typedef struct tds_locale
│ │ │ │ -
565{
│ │ │ │ -
566 char *language;
│ │ │ │ -
567 char *server_charset;
│ │ │ │ -
568 char *datetime_fmt;
│ │ │ │ -
569 char *date_fmt;
│ │ │ │ -
570 char *time_fmt;
│ │ │ │ -
571} TDSLOCALE;
│ │ │ │ -
│ │ │ │ -
572
│ │ │ │ -
│ │ │ │ -
577typedef struct tds_blob
│ │ │ │ -
578{
│ │ │ │ -
579 TDS_CHAR *textvalue;
│ │ │ │ -
580 TDS_CHAR textptr[16];
│ │ │ │ -
581 TDS_CHAR timestamp[8];
│ │ │ │ -
582 bool valid_ptr;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
584
│ │ │ │ -
│ │ │ │ -
588typedef struct tds_variant
│ │ │ │ -
589{
│ │ │ │ -
590 /* this MUST have same position and place of textvalue in tds_blob */
│ │ │ │ -
591 TDS_CHAR *data;
│ │ │ │ -
592 TDS_INT size;
│ │ │ │ -
593 TDS_INT data_len;
│ │ │ │ -
594 TDS_SERVER_TYPE type;
│ │ │ │ -
595 TDS_UCHAR collation[5];
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
597
│ │ │ │ -
│ │ │ │ -
602typedef struct tds_encoding
│ │ │ │ -
603{
│ │ │ │ -
605 const char *name;
│ │ │ │ -
606 unsigned char min_bytes_per_char;
│ │ │ │ -
607 unsigned char max_bytes_per_char;
│ │ │ │ -
609 unsigned char canonic;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
611
│ │ │ │ -
│ │ │ │ -
612typedef struct tds_bcpcoldata
│ │ │ │ -
613{
│ │ │ │ -
614 TDS_UCHAR *data;
│ │ │ │ -
615 TDS_INT datalen;
│ │ │ │ -
616 bool is_null;
│ │ │ │ -
617} BCPCOLDATA;
│ │ │ │ -
│ │ │ │ -
618
│ │ │ │ -
619
│ │ │ │ -
620typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ -
621typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ -
622typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);
│ │ │ │ -
623typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ -
624typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);
│ │ │ │ -
625typedef int tds_func_check(const TDSCOLUMN *col);
│ │ │ │ -
626
│ │ │ │ -
│ │ │ │ -
627typedef struct tds_column_funcs
│ │ │ │ -
628{
│ │ │ │ -
629 tds_func_get_info *get_info;
│ │ │ │ -
630 tds_func_get_data *get_data;
│ │ │ │ -
631 tds_func_row_len *row_len;
│ │ │ │ -
637 tds_func_put_info *put_info;
│ │ │ │ -
647 tds_func_put_data *put_data;
│ │ │ │ -
648#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
663 tds_func_check *check;
│ │ │ │ -
664#endif
│ │ │ │ -
665#if 0
│ │ │ │ -
666 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ -
667#endif
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
669
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
674{
│ │ │ │ -
675 const TDSCOLUMNFUNCS *funcs;
│ │ │ │ -
676 TDS_INT column_usertype;
│ │ │ │ -
677 TDS_INT column_flags;
│ │ │ │ -
678
│ │ │ │ -
679 TDS_INT column_size;
│ │ │ │ -
681 TDS_SERVER_TYPE column_type;
│ │ │ │ -
686 TDS_TINYINT column_varint_size;
│ │ │ │ -
688 TDS_TINYINT column_prec;
│ │ │ │ -
689 TDS_TINYINT column_scale;
│ │ │ │ -
691 struct
│ │ │ │ -
692 {
│ │ │ │ -
693 TDS_SERVER_TYPE column_type;
│ │ │ │ -
694 TDS_INT column_size;
│ │ │ │ -
695 } on_server;
│ │ │ │ -
696
│ │ │ │ - │ │ │ │ -
699 DSTR table_name;
│ │ │ │ -
700 DSTR column_name;
│ │ │ │ -
701 DSTR table_column_name;
│ │ │ │ -
702
│ │ │ │ -
703 unsigned char *column_data;
│ │ │ │ -
704 void (*column_data_free)(struct tds_column *column);
│ │ │ │ -
705 unsigned char column_nullable:1;
│ │ │ │ -
706 unsigned char column_writeable:1;
│ │ │ │ -
707 unsigned char column_identity:1;
│ │ │ │ -
708 unsigned char column_key:1;
│ │ │ │ -
709 unsigned char column_hidden:1;
│ │ │ │ -
710 unsigned char column_output:1;
│ │ │ │ -
711 unsigned char column_timestamp:1;
│ │ │ │ -
712 unsigned char column_computed:1;
│ │ │ │ -
713 TDS_UCHAR column_collation[5];
│ │ │ │ -
714
│ │ │ │ -
715 /* additional fields flags for compute results */
│ │ │ │ -
716 TDS_SMALLINT column_operand;
│ │ │ │ -
717 TDS_TINYINT column_operator;
│ │ │ │ -
718
│ │ │ │ -
719 /* FIXME this is data related, not column */
│ │ │ │ - │ │ │ │ -
722
│ │ │ │ -
723 /* related to binding or info stored by client libraries */
│ │ │ │ -
724 /* FIXME find a best place to store these data, some are unused */
│ │ │ │ -
725 TDS_SMALLINT column_bindtype;
│ │ │ │ -
726 TDS_SMALLINT column_bindfmt;
│ │ │ │ -
727 TDS_INT column_bindlen;
│ │ │ │ -
728 TDS_SMALLINT *column_nullbind;
│ │ │ │ -
729 TDS_CHAR *column_varaddr;
│ │ │ │ -
730 TDS_INT *column_lenbind;
│ │ │ │ -
731 TDS_INT column_textpos;
│ │ │ │ -
732 TDS_INT column_text_sqlgetdatapos;
│ │ │ │ -
733 TDS_CHAR column_text_sqlputdatainfo;
│ │ │ │ -
734 unsigned char column_iconv_left;
│ │ │ │ -
735 char column_iconv_buf[9];
│ │ │ │ -
736
│ │ │ │ -
737 BCPCOLDATA *bcp_column_data;
│ │ │ │ - │ │ │ │ -
747 TDS_INT bcp_term_len;
│ │ │ │ -
748 TDS_CHAR *bcp_terminator;
│ │ │ │ -
749};
│ │ │ │ -
│ │ │ │ -
750
│ │ │ │ -
751
│ │ │ │ -
│ │ │ │ -
753typedef struct tds_result_info
│ │ │ │ -
754{
│ │ │ │ -
755 /* TODO those fields can became a struct */
│ │ │ │ -
756 TDSCOLUMN **columns;
│ │ │ │ -
757 TDS_USMALLINT num_cols;
│ │ │ │ -
758 TDS_USMALLINT computeid;
│ │ │ │ -
759 TDS_INT ref_count;
│ │ │ │ -
760 TDSSOCKET *attached_to;
│ │ │ │ -
761 unsigned char *current_row;
│ │ │ │ -
762 void (*row_free)(struct tds_result_info* result, unsigned char *row);
│ │ │ │ -
763 TDS_INT row_size;
│ │ │ │ -
764
│ │ │ │ -
765 TDS_SMALLINT *bycolumns;
│ │ │ │ -
766 TDS_USMALLINT by_cols;
│ │ │ │ -
767 bool rows_exist;
│ │ │ │ -
768 /* TODO remove ?? used only in dblib */
│ │ │ │ -
769 bool more_results;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
771
│ │ │ │ -
│ │ │ │ -
773typedef enum tds_states
│ │ │ │ -
774{
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
780 TDS_DEAD
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
782
│ │ │ │ -
783typedef enum tds_operations
│ │ │ │ -
784{
│ │ │ │ -
785 TDS_OP_NONE = 0,
│ │ │ │ -
786
│ │ │ │ -
787 /* MSSQL operations, these matches protocol definitions */
│ │ │ │ -
788 TDS_OP_CURSOR = TDS_SP_CURSOR,
│ │ │ │ -
789 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,
│ │ │ │ -
790 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,
│ │ │ │ -
791 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,
│ │ │ │ -
792 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,
│ │ │ │ -
793 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,
│ │ │ │ -
794 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,
│ │ │ │ -
795 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,
│ │ │ │ -
796 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,
│ │ │ │ -
797 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,
│ │ │ │ -
798 TDS_OP_PREPARE = TDS_SP_PREPARE,
│ │ │ │ -
799 TDS_OP_EXECUTE = TDS_SP_EXECUTE,
│ │ │ │ -
800 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,
│ │ │ │ -
801 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,
│ │ │ │ -
802 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,
│ │ │ │ -
803
│ │ │ │ -
804 /* sybase operations */
│ │ │ │ -
805 TDS_OP_DYN_DEALLOC = 100,
│ │ │ │ -
806} TDS_OPERATION;
│ │ │ │ -
807
│ │ │ │ -
808#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)
│ │ │ │ -
809#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)
│ │ │ │ -
810#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)
│ │ │ │ -
811#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)
│ │ │ │ -
812#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)
│ │ │ │ -
813#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)
│ │ │ │ -
814#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)
│ │ │ │ -
815#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)
│ │ │ │ -
816#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)
│ │ │ │ -
817
│ │ │ │ -
818#define TDS_DBGFLAG_FUNC 0x80
│ │ │ │ -
819#define TDS_DBGFLAG_INFO2 0x40
│ │ │ │ -
820#define TDS_DBGFLAG_INFO1 0x20
│ │ │ │ -
821#define TDS_DBGFLAG_NETWORK 0x10
│ │ │ │ -
822#define TDS_DBGFLAG_WARN 0x08
│ │ │ │ -
823#define TDS_DBGFLAG_ERROR 0x04
│ │ │ │ -
824#define TDS_DBGFLAG_SEVERE 0x02
│ │ │ │ -
825#define TDS_DBGFLAG_ALL 0xfff
│ │ │ │ -
826#define TDS_DBGFLAG_LOGIN 0x0800
│ │ │ │ -
827#define TDS_DBGFLAG_HEADER 0x0400
│ │ │ │ -
828#define TDS_DBGFLAG_PID 0x1000
│ │ │ │ -
829#define TDS_DBGFLAG_TIME 0x2000
│ │ │ │ -
830#define TDS_DBGFLAG_SOURCE 0x4000
│ │ │ │ -
831#define TDS_DBGFLAG_THREAD 0x8000
│ │ │ │ -
832
│ │ │ │ -
833#if 0
│ │ │ │ -
839enum TDS_DBG_LOG_STATE
│ │ │ │ -
840{
│ │ │ │ -
841 TDS_DBG_LOGIN = (1 << 0)
│ │ │ │ -
843 , TDS_DBG_API = (1 << 1)
│ │ │ │ -
844 , TDS_DBG_ASYNC = (1 << 2)
│ │ │ │ -
845 , TDS_DBG_DIAG = (1 << 3)
│ │ │ │ -
846 , TDS_DBG_error = (1 << 4)
│ │ │ │ -
847 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */
│ │ │ │ -
848 /* Log FreeTDS runtime/logic error occurs. */
│ │ │ │ -
849 , TDS_DBG_PACKET = (1 << 5)
│ │ │ │ -
850 , TDS_DBG_LIBTDS = (1 << 6)
│ │ │ │ -
851 , TDS_DBG_CONFIG = (1 << 7)
│ │ │ │ -
852 , TDS_DBG_DEFAULT = 0xFE
│ │ │ │ -
853};
│ │ │ │ -
854#endif
│ │ │ │ -
855
│ │ │ │ -
856typedef struct tds_result_info TDSCOMPUTEINFO;
│ │ │ │ -
857
│ │ │ │ - │ │ │ │ -
859
│ │ │ │ -
│ │ │ │ -
860typedef struct tds_message
│ │ │ │ -
861{
│ │ │ │ -
862 TDS_CHAR *server;
│ │ │ │ -
863 TDS_CHAR *message;
│ │ │ │ -
864 TDS_CHAR *proc_name;
│ │ │ │ -
865 TDS_CHAR *sql_state;
│ │ │ │ -
866 TDS_INT msgno;
│ │ │ │ -
867 TDS_INT line_number;
│ │ │ │ -
868 /* -1 .. 255 */
│ │ │ │ -
869 TDS_SMALLINT state;
│ │ │ │ -
870 TDS_TINYINT priv_msg_type;
│ │ │ │ -
871 TDS_TINYINT severity;
│ │ │ │ -
872 /* for library-generated errors */
│ │ │ │ -
873 int oserr;
│ │ │ │ -
874} TDSMESSAGE;
│ │ │ │ -
│ │ │ │ -
875
│ │ │ │ -
│ │ │ │ -
876typedef struct tds_upd_col
│ │ │ │ -
877{
│ │ │ │ -
878 struct tds_upd_col *next;
│ │ │ │ -
879 TDS_INT colnamelength;
│ │ │ │ -
880 char * columnname;
│ │ │ │ -
881} TDSUPDCOL;
│ │ │ │ -
│ │ │ │ -
882
│ │ │ │ -
883typedef enum {
│ │ │ │ -
884 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */
│ │ │ │ -
885 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */
│ │ │ │ -
886 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */
│ │ │ │ -
887 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */
│ │ │ │ -
888} TDS_CURSOR_STATE;
│ │ │ │ -
889
│ │ │ │ -
│ │ │ │ -
890typedef struct tds_cursor_status
│ │ │ │ -
891{
│ │ │ │ -
892 TDS_CURSOR_STATE declare;
│ │ │ │ -
893 TDS_CURSOR_STATE cursor_row;
│ │ │ │ -
894 TDS_CURSOR_STATE open;
│ │ │ │ -
895 TDS_CURSOR_STATE fetch;
│ │ │ │ -
896 TDS_CURSOR_STATE close;
│ │ │ │ -
897 TDS_CURSOR_STATE dealloc;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
899
│ │ │ │ -
900typedef enum tds_cursor_operation
│ │ │ │ -
901{
│ │ │ │ -
902 TDS_CURSOR_POSITION = 0,
│ │ │ │ -
903 TDS_CURSOR_UPDATE = 1,
│ │ │ │ -
904 TDS_CURSOR_DELETE = 2,
│ │ │ │ -
905 TDS_CURSOR_INSERT = 4
│ │ │ │ -
906} TDS_CURSOR_OPERATION;
│ │ │ │ -
907
│ │ │ │ -
908typedef enum tds_cursor_fetch
│ │ │ │ -
909{
│ │ │ │ -
910 TDS_CURSOR_FETCH_NEXT = 1,
│ │ │ │ -
911 TDS_CURSOR_FETCH_PREV,
│ │ │ │ -
912 TDS_CURSOR_FETCH_FIRST,
│ │ │ │ -
913 TDS_CURSOR_FETCH_LAST,
│ │ │ │ -
914 TDS_CURSOR_FETCH_ABSOLUTE,
│ │ │ │ -
915 TDS_CURSOR_FETCH_RELATIVE
│ │ │ │ -
916} TDS_CURSOR_FETCH;
│ │ │ │ -
917
│ │ │ │ -
│ │ │ │ -
921typedef struct tds_cursor
│ │ │ │ -
922{
│ │ │ │ -
923 struct tds_cursor *next;
│ │ │ │ -
924 TDS_INT ref_count;
│ │ │ │ - │ │ │ │ -
926 TDS_INT cursor_id;
│ │ │ │ -
927 TDS_TINYINT options;
│ │ │ │ - │ │ │ │ -
932 char *query;
│ │ │ │ -
933 /* TODO for updatable columns */
│ │ │ │ -
934 /* TDS_TINYINT number_upd_cols; */
│ │ │ │ -
935 /* TDSUPDCOL *cur_col_list; */
│ │ │ │ -
936 TDS_INT cursor_rows;
│ │ │ │ -
937 /* TDSPARAMINFO *params; */
│ │ │ │ - │ │ │ │ -
939 TDS_USMALLINT srv_status;
│ │ │ │ -
940 TDSRESULTINFO *res_info;
│ │ │ │ -
941 TDS_INT type, concurrency;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
943
│ │ │ │ -
│ │ │ │ -
947typedef struct tds_env
│ │ │ │ -
948{
│ │ │ │ - │ │ │ │ -
951 char *language;
│ │ │ │ -
953 char *charset;
│ │ │ │ -
955 char *database;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
957
│ │ │ │ -
│ │ │ │ -
961typedef struct tds_dynamic
│ │ │ │ -
962{
│ │ │ │ - │ │ │ │ -
964 TDS_INT ref_count;
│ │ │ │ -
966 TDS_INT num_id;
│ │ │ │ -
972 char id[30];
│ │ │ │ - │ │ │ │ - │ │ │ │ -
983 /* int dyn_state; */ /* TODO use it */
│ │ │ │ - │ │ │ │ - │ │ │ │ -
994 char *query;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
996
│ │ │ │ -
997typedef enum {
│ │ │ │ -
998 TDS_MULTIPLE_QUERY,
│ │ │ │ -
999 TDS_MULTIPLE_EXECUTE,
│ │ │ │ -
1000 TDS_MULTIPLE_RPC
│ │ │ │ -
1001} TDS_MULTIPLE_TYPE;
│ │ │ │ -
1002
│ │ │ │ -
│ │ │ │ -
1003typedef struct tds_multiple
│ │ │ │ -
1004{
│ │ │ │ -
1005 TDS_MULTIPLE_TYPE type;
│ │ │ │ -
1006 unsigned int flags;
│ │ │ │ -
1007} TDSMULTIPLE;
│ │ │ │ -
│ │ │ │ -
1008
│ │ │ │ -
1009/* forward declaration */
│ │ │ │ -
1010typedef struct tds_context TDSCONTEXT;
│ │ │ │ -
1011typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ -
1012typedef int (*int_handler_t) (void *);
│ │ │ │ -
1013
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1015{
│ │ │ │ -
1016 TDSLOCALE *locale;
│ │ │ │ -
1017 void *parent;
│ │ │ │ -
1018 /* handlers */
│ │ │ │ -
1019 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ -
1020 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ -
1021 int (*int_handler) (void *);
│ │ │ │ -
1022 bool money_use_2_digits;
│ │ │ │ -
1023};
│ │ │ │ -
│ │ │ │ -
1024
│ │ │ │ -
1025enum TDS_ICONV_ENTRY
│ │ │ │ -
1026{
│ │ │ │ -
1027 client2ucs2
│ │ │ │ -
1028 , client2server_chardata
│ │ │ │ -
1029 , initial_char_conv_count /* keep last */
│ │ │ │ -
1030};
│ │ │ │ -
1031
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1033{
│ │ │ │ -
1034 uint8_t *packet;
│ │ │ │ -
1035 int packet_len;
│ │ │ │ -
1036 /* TDS_MSG_TOKEN type, for TDS5 */
│ │ │ │ -
1037 uint16_t msg_type;
│ │ │ │ -
1038 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);
│ │ │ │ -
1039 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, size_t len);
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
1041
│ │ │ │ -
│ │ │ │ -
1042typedef struct tds_packet
│ │ │ │ -
1043{
│ │ │ │ -
1044 struct tds_packet *next;
│ │ │ │ -
1045 uint16_t sid;
│ │ │ │ -
1046
│ │ │ │ -
1047#if ENABLE_ODBC_MARS
│ │ │ │ -
1051 uint8_t data_start;
│ │ │ │ -
1052#endif
│ │ │ │ -
1053
│ │ │ │ -
1057 unsigned data_len;
│ │ │ │ -
1058 unsigned capacity;
│ │ │ │ -
1059 unsigned char buf[1];
│ │ │ │ -
1060} TDSPACKET;
│ │ │ │ -
│ │ │ │ -
1061
│ │ │ │ -
1062#if ENABLE_ODBC_MARS
│ │ │ │ -
1063#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while(0)
│ │ │ │ -
1064#define tds_packet_get_data_start(pkt) ((pkt)->data_start)
│ │ │ │ -
1065#else
│ │ │ │ -
1066#define tds_packet_zero_data_start(pkt) do { } while(0)
│ │ │ │ -
1067#define tds_packet_get_data_start(pkt) 0
│ │ │ │ -
1068#endif
│ │ │ │ -
1069
│ │ │ │ -
│ │ │ │ -
1070typedef struct tds_poll_wakeup
│ │ │ │ -
1071{
│ │ │ │ -
1072 TDS_SYS_SOCKET s_signal, s_signaled;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
1074
│ │ │ │ -
1075/* field related to connection */
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1077{
│ │ │ │ -
1078 TDS_USMALLINT tds_version;
│ │ │ │ -
1079 bool corked;
│ │ │ │ - │ │ │ │ -
1081 char *product_name;
│ │ │ │ -
1082
│ │ │ │ -
1083 TDS_SYS_SOCKET s;
│ │ │ │ -
1084 TDSPOLLWAKEUP wakeup;
│ │ │ │ -
1085 const TDSCONTEXT *tds_ctx;
│ │ │ │ -
1086
│ │ │ │ - │ │ │ │ -
1089
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1100
│ │ │ │ -
1101 int char_conv_count;
│ │ │ │ -
1102 TDSICONV **char_convs;
│ │ │ │ -
1103
│ │ │ │ -
1104 TDS_UCHAR collation[5];
│ │ │ │ -
1105 TDS_UCHAR tds72_transaction[8];
│ │ │ │ -
1106
│ │ │ │ -
1107 TDS_CAPABILITIES capabilities;
│ │ │ │ -
1108 unsigned int use_iconv:1;
│ │ │ │ -
1109 unsigned int tds71rev1:1;
│ │ │ │ -
1110 unsigned int pending_close:1;
│ │ │ │ -
1111 unsigned int encrypt_single_packet:1;
│ │ │ │ -
1112#if ENABLE_ODBC_MARS
│ │ │ │ -
1113 unsigned int mars:1;
│ │ │ │ -
1114
│ │ │ │ -
1115 TDSSOCKET *in_net_tds;
│ │ │ │ -
1116 TDSPACKET *packets;
│ │ │ │ -
1117 TDSPACKET *recv_packet;
│ │ │ │ -
1118 TDSPACKET *send_packets;
│ │ │ │ -
1119 unsigned send_pos, recv_pos;
│ │ │ │ -
1120
│ │ │ │ -
1121#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)
│ │ │ │ -
1122#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)
│ │ │ │ -
1123 struct tds_socket **sessions;
│ │ │ │ -
1124 unsigned num_sessions;
│ │ │ │ -
1125#endif
│ │ │ │ -
1126 tds_mutex list_mtx;
│ │ │ │ -
1127
│ │ │ │ -
1128 unsigned num_cached_packets;
│ │ │ │ -
1129 TDSPACKET *packet_cache;
│ │ │ │ -
1130
│ │ │ │ -
1131 int spid;
│ │ │ │ -
1132 int client_spid;
│ │ │ │ -
1133
│ │ │ │ -
1138 uint8_t ncharsize;
│ │ │ │ -
1139
│ │ │ │ - │ │ │ │ -
1146
│ │ │ │ -
1147 void *tls_session;
│ │ │ │ -
1148#if defined(HAVE_GNUTLS)
│ │ │ │ -
1149 void *tls_credentials;
│ │ │ │ -
1150#elif defined(HAVE_OPENSSL)
│ │ │ │ -
1151 void *tls_ctx;
│ │ │ │ -
1152#else
│ │ │ │ -
1153 void *tls_dummy;
│ │ │ │ -
1154#endif
│ │ │ │ -
1155 TDSAUTHENTICATION *authentication;
│ │ │ │ -
1156 char *server;
│ │ │ │ -
1157};
│ │ │ │ -
│ │ │ │ -
1158
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1163{
│ │ │ │ -
1164#if ENABLE_ODBC_MARS
│ │ │ │ -
1165 TDSCONNECTION *conn;
│ │ │ │ -
1166#else
│ │ │ │ -
1167 TDSCONNECTION conn[1];
│ │ │ │ -
1168#endif
│ │ │ │ -
1169
│ │ │ │ -
1170 void *parent;
│ │ │ │ -
1171
│ │ │ │ -
1177 unsigned char *in_buf;
│ │ │ │ -
1178
│ │ │ │ -
1185 unsigned char *out_buf;
│ │ │ │ -
1186
│ │ │ │ -
1191 unsigned int out_buf_max;
│ │ │ │ -
1192 unsigned in_pos;
│ │ │ │ -
1193 unsigned out_pos;
│ │ │ │ -
1194 unsigned in_len;
│ │ │ │ -
1195 unsigned char in_flag;
│ │ │ │ -
1196 unsigned char out_flag;
│ │ │ │ -
1198 unsigned frozen;
│ │ │ │ - │ │ │ │ -
1204
│ │ │ │ -
1205#if ENABLE_ODBC_MARS
│ │ │ │ -
1210 uint16_t sid;
│ │ │ │ -
1211
│ │ │ │ -
1216 tds_condition packet_cond;
│ │ │ │ -
1217
│ │ │ │ -
1222 TDSPACKET *sending_packet;
│ │ │ │ -
1223 TDS_UINT recv_seq;
│ │ │ │ -
1224 TDS_UINT send_seq;
│ │ │ │ -
1225 TDS_UINT recv_wnd;
│ │ │ │ -
1226 TDS_UINT send_wnd;
│ │ │ │ -
1227#endif
│ │ │ │ -
1228 /* packet we received */
│ │ │ │ -
1229 TDSPACKET *recv_packet;
│ │ │ │ - │ │ │ │ -
1232
│ │ │ │ - │ │ │ │ -
1239 TDSRESULTINFO *res_info;
│ │ │ │ -
1240 TDS_UINT num_comp_info;
│ │ │ │ -
1241 TDSCOMPUTEINFO **comp_info;
│ │ │ │ -
1242 TDSPARAMINFO *param_info;
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
1246 bool in_row;
│ │ │ │ -
1247 volatile
│ │ │ │ -
1248 unsigned char in_cancel;
│ │ │ │ -
1250 TDS_INT ret_status;
│ │ │ │ -
1251 TDS_STATE state;
│ │ │ │ -
1252
│ │ │ │ -
1253 TDS_INT query_timeout;
│ │ │ │ -
1254 TDS_INT8 rows_affected;
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char *newval);
│ │ │ │ -
1261 TDS_OPERATION current_op;
│ │ │ │ -
1262
│ │ │ │ -
1263 int option_value;
│ │ │ │ -
1264 tds_mutex wire_mtx;
│ │ │ │ -
1265};
│ │ │ │ -
│ │ │ │ -
1266
│ │ │ │ -
1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)
│ │ │ │ -
1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while(0)
│ │ │ │ -
1269#define tds_get_parent(tds) ((tds)->parent)
│ │ │ │ -
1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)
│ │ │ │ -
1271#define tds_get_s(tds) ((tds)->conn->s)
│ │ │ │ -
1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)
│ │ │ │ -
1273
│ │ │ │ -
│ │ │ │ -
1274typedef struct tds_tvp_row
│ │ │ │ -
1275{
│ │ │ │ -
1276 TDSPARAMINFO *params;
│ │ │ │ -
1277 struct tds_tvp_row *next;
│ │ │ │ -
1278} TDS_TVP_ROW;
│ │ │ │ -
│ │ │ │ -
1279
│ │ │ │ -
│ │ │ │ -
1280typedef struct tds_tvp
│ │ │ │ -
1281{
│ │ │ │ -
1282 char *schema;
│ │ │ │ -
1283 char *name;
│ │ │ │ -
1284 TDSPARAMINFO *metadata;
│ │ │ │ -
1285 TDS_TVP_ROW *row;
│ │ │ │ -
1286} TDS_TVP;
│ │ │ │ -
│ │ │ │ -
1287
│ │ │ │ -
1288
│ │ │ │ -
1289/* config.c */
│ │ │ │ - │ │ │ │ -
1291typedef bool (*TDSCONFPARSE) (const char *option, const char *value, void *param);
│ │ │ │ -
1292bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param);
│ │ │ │ -
1293bool tds_read_conf_file(TDSLOGIN * login, const char *server);
│ │ │ │ -
1294bool tds_parse_conf_section(const char *option, const char *value, void *param);
│ │ │ │ -
1295TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE * locale);
│ │ │ │ -
1296void tds_fix_login(TDSLOGIN* login);
│ │ │ │ -
1297TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);
│ │ │ │ -
1298struct addrinfo *tds_lookup_host(const char *servername);
│ │ │ │ -
1299TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr);
│ │ │ │ -
1300const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int namemax);
│ │ │ │ -
1301
│ │ │ │ -
1302TDSRET tds_set_interfaces_file_loc(const char *interfloc);
│ │ │ │ -
1303extern const char STD_DATETIME_FMT[];
│ │ │ │ -
1304int tds_parse_boolean(const char *value, int default_value);
│ │ │ │ -
1305int tds_config_boolean(const char *option, const char *value, TDSLOGIN * login);
│ │ │ │ -
1306
│ │ │ │ - │ │ │ │ -
1308TDSRET tds_alloc_row(TDSRESULTINFO * res_info);
│ │ │ │ -
1309TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);
│ │ │ │ -
1310BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);
│ │ │ │ -
1311TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);
│ │ │ │ -
1312/*@observer@*/ const char *tds_prtype(int token);
│ │ │ │ -
1313int tds_get_varint_size(TDSCONNECTION * conn, int datatype);
│ │ │ │ -
1314TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int usertype);
│ │ │ │ -
1315TDSRET tds8_adjust_login(TDSLOGIN *login);
│ │ │ │ -
1316
│ │ │ │ -
1317
│ │ │ │ -
1318/* iconv.c */
│ │ │ │ -
1319TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_utf16);
│ │ │ │ -
1320void tds_iconv_close(TDSCONNECTION * conn);
│ │ │ │ -
1321void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);
│ │ │ │ -
1322void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
│ │ │ │ -
1323int tds_iconv_alloc(TDSCONNECTION * conn);
│ │ │ │ -
1324void tds_iconv_free(TDSCONNECTION * conn);
│ │ │ │ -
1325TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
│ │ │ │ -
1326
│ │ │ │ -
1327
│ │ │ │ -
1328/* mem.c */
│ │ │ │ -
1329void tds_free_socket(TDSSOCKET * tds);
│ │ │ │ -
1330void tds_free_all_results(TDSSOCKET * tds);
│ │ │ │ -
1331void tds_free_results(TDSRESULTINFO * res_info);
│ │ │ │ -
1332void tds_free_param_results(TDSPARAMINFO * param_info);
│ │ │ │ -
1333void tds_free_param_result(TDSPARAMINFO * param_info);
│ │ │ │ -
1334void tds_free_msg(TDSMESSAGE * message);
│ │ │ │ -
1335void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);
│ │ │ │ -
1336void tds_release_cursor(TDSCURSOR **pcursor);
│ │ │ │ -
1337void tds_free_bcp_column_data(BCPCOLDATA * coldata);
│ │ │ │ -
1338TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);
│ │ │ │ -
1339TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT num_cols, TDS_USMALLINT by_cols);
│ │ │ │ -
1340TDSCONTEXT *tds_alloc_context(void * parent);
│ │ │ │ -
1341void tds_free_context(TDSCONTEXT * locale);
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1344void tds_release_dynamic(TDSDYNAMIC ** dyn);
│ │ │ │ -
1345inline static void
│ │ │ │ -
1346tds_release_cur_dyn(TDSSOCKET * tds)
│ │ │ │ -
1347{
│ │ │ │ - │ │ │ │ -
1349}
│ │ │ │ -
1350void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);
│ │ │ │ -
1351void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);
│ │ │ │ -
1352TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);
│ │ │ │ -
1353char *tds_alloc_client_sqlstate(int msgno);
│ │ │ │ -
1354char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);
│ │ │ │ -
1355TDSLOGIN *tds_alloc_login(bool use_environment);
│ │ │ │ -
1356TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);
│ │ │ │ -
1357void tds_free_login(TDSLOGIN * login);
│ │ │ │ -
1358TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);
│ │ │ │ -
1359TDSLOCALE *tds_alloc_locale(void);
│ │ │ │ -
1360void *tds_alloc_param_data(TDSCOLUMN * curparam);
│ │ │ │ -
1361void tds_free_locale(TDSLOCALE * locale);
│ │ │ │ -
1362TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen);
│ │ │ │ -
1363void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);
│ │ │ │ -
1364TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);
│ │ │ │ -
1365TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);
│ │ │ │ -
1366void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);
│ │ │ │ - │ │ │ │ -
1368void * tds_realloc(void **pp, size_t new_size);
│ │ │ │ -
1369#define TDS_RESIZE(p, n_elem) \
│ │ │ │ -
1370 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))
│ │ │ │ -
1371
│ │ │ │ -
1372TDSPACKET *tds_alloc_packet(void *buf, unsigned len);
│ │ │ │ -
1373TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);
│ │ │ │ -
1374void tds_free_packets(TDSPACKET *packet);
│ │ │ │ -
1375TDSBCPINFO *tds_alloc_bcpinfo(void);
│ │ │ │ -
1376void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);
│ │ │ │ -
1377void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);
│ │ │ │ -
1378void tds_deinit_tvp(TDS_TVP *table);
│ │ │ │ -
1379
│ │ │ │ -
1380
│ │ │ │ -
1381/* login.c */
│ │ │ │ -
1382void tds_set_packet(TDSLOGIN * tds_login, int packet_size);
│ │ │ │ -
1383void tds_set_port(TDSLOGIN * tds_login, int port);
│ │ │ │ -
1384bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;
│ │ │ │ -
1385void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);
│ │ │ │ -
1386bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;
│ │ │ │ -
1387bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;
│ │ │ │ -
1388bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;
│ │ │ │ -
1389bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;
│ │ │ │ -
1390bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;
│ │ │ │ -
1391bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_WUR;
│ │ │ │ -
1392bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;
│ │ │ │ -
1393void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver);
│ │ │ │ -
1394TDSRET tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ -
1395
│ │ │ │ -
1396
│ │ │ │ -
1397/* query.c */
│ │ │ │ -
1398void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);
│ │ │ │ -
1399
│ │ │ │ -
1400TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);
│ │ │ │ -
1401TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ -
1402TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);
│ │ │ │ -
1403TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
│ │ │ │ -
1404TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ -
1405TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
│ │ │ │ -
1406TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);
│ │ │ │ -
1407TDSRET tds_send_cancel(TDSSOCKET * tds);
│ │ │ │ -
1408const char *tds_next_placeholder(const char *start);
│ │ │ │ -
1409int tds_count_placeholders(const char *query);
│ │ │ │ - │ │ │ │ -
1411TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);
│ │ │ │ -
1412TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);
│ │ │ │ -
1413TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ -
1414TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);
│ │ │ │ -
1415TDSRET tds_submit_begin_tran(TDSSOCKET *tds);
│ │ │ │ -
1416TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont);
│ │ │ │ -
1417TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont);
│ │ │ │ -
1418TDSRET tds_disconnect(TDSSOCKET * tds);
│ │ │ │ -
1419size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
│ │ │ │ -
1420size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
│ │ │ │ -
1421size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int len);
│ │ │ │ -
1422const char *tds_skip_comment(const char *s);
│ │ │ │ -
1423const char *tds_skip_quoted(const char *s);
│ │ │ │ -
1424size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);
│ │ │ │ -
1425const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const char *s, int len, size_t *out_len);
│ │ │ │ -
1426void tds_convert_string_free(const char *original, const char *converted);
│ │ │ │ -
1427#if !ENABLE_EXTRA_CHECKS
│ │ │ │ -
1428#define tds_convert_string_free(original, converted) \
│ │ │ │ -
1429 do { if (original != converted) free((char*) converted); } while(0)
│ │ │ │ -
1430#endif
│ │ │ │ -
1431TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char *out);
│ │ │ │ -
1432
│ │ │ │ -
1433TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send);
│ │ │ │ -
1434TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send);
│ │ │ │ -
1435TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, bool *send);
│ │ │ │ -
1436TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);
│ │ │ │ -
1437TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_UINT * row_number, TDS_UINT * row_count);
│ │ │ │ -
1438TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ -
1439TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ - │ │ │ │ -
1441TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);
│ │ │ │ -
1442TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ -
1443
│ │ │ │ -
1444TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS * head);
│ │ │ │ -
1445TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);
│ │ │ │ -
1446TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO * params);
│ │ │ │ -
1447TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC * dyn);
│ │ │ │ -
1448
│ │ │ │ -
1449
│ │ │ │ -
1450/* token.c */
│ │ │ │ -
1451TDSRET tds_process_cancel(TDSSOCKET * tds);
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1454int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,
│ │ │ │ -
1455 TDS_INT * tds_argsize);
│ │ │ │ -
1456TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, /*@out@*/ int *done_flags, unsigned flag);
│ │ │ │ -
1457
│ │ │ │ -
1458
│ │ │ │ -
1459/* data.c */
│ │ │ │ -
1460void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
│ │ │ │ -
1461void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
│ │ │ │ -
1462#ifdef WORDS_BIGENDIAN
│ │ │ │ -
1463void tds_swap_datatype(int coltype, void *b);
│ │ │ │ -
1464#endif
│ │ │ │ -
1465
│ │ │ │ -
1466
│ │ │ │ -
1467/* tds_convert.c */
│ │ │ │ -
1468TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);
│ │ │ │ -
1469TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize);
│ │ │ │ -
1470extern const char tds_hex_digits[];
│ │ │ │ -
1471
│ │ │ │ -
1472
│ │ │ │ -
1473/* write.c */
│ │ │ │ -
1474int tds_init_write_buf(TDSSOCKET * tds);
│ │ │ │ -
1475int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);
│ │ │ │ -
1476int tds_put_string(TDSSOCKET * tds, const char *buf, int len);
│ │ │ │ -
1477int tds_put_int(TDSSOCKET * tds, TDS_INT i);
│ │ │ │ -
1478int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);
│ │ │ │ -
1479int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);
│ │ │ │ -
1481#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)
│ │ │ │ -
1482int tds_put_byte(TDSSOCKET * tds, unsigned char c);
│ │ │ │ -
1483TDSRET tds_flush_packet(TDSSOCKET * tds);
│ │ │ │ -
1484int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int ssize);
│ │ │ │ -
1485
│ │ │ │ -
1486
│ │ │ │ -
1487/* read.c */
│ │ │ │ -
1488unsigned char tds_get_byte(TDSSOCKET * tds);
│ │ │ │ -
1489void tds_unget_byte(TDSSOCKET * tds);
│ │ │ │ -
1490unsigned char tds_peek(TDSSOCKET * tds);
│ │ │ │ -
1491TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);
│ │ │ │ -
1492#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))
│ │ │ │ -
1493TDS_UINT tds_get_uint(TDSSOCKET * tds);
│ │ │ │ -
1494#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))
│ │ │ │ -
1495TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);
│ │ │ │ -
1496#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))
│ │ │ │ -
1497size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_t dest_size);
│ │ │ │ -
1498TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, TDSCOLUMN * curcol);
│ │ │ │ -
1499bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n);
│ │ │ │ -
1500int tds_get_size_by_type(TDS_SERVER_TYPE servertype);
│ │ │ │ -
1501DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);
│ │ │ │ -
1502
│ │ │ │ -
1503
│ │ │ │ -
1504/* util.c */
│ │ │ │ -
1505int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int errnum);
│ │ │ │ - │ │ │ │ -
1507void tds_swap_bytes(void *buf, int bytes);
│ │ │ │ -
1508unsigned int tds_gettime_ms(void);
│ │ │ │ -
1509
│ │ │ │ -
1510
│ │ │ │ -
1511/* log.c */
│ │ │ │ -
│ │ │ │ -
1512typedef struct tdsdump_off_item {
│ │ │ │ -
1513 struct tdsdump_off_item *next;
│ │ │ │ -
1514 tds_thread_id thread_id;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
1516void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);
│ │ │ │ -
1517void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);
│ │ │ │ -
1518int tdsdump_isopen(void);
│ │ │ │ -
1519#include <freetds/popvis.h>
│ │ │ │ -
1520int tdsdump_open(const tds_dir_char *filename);
│ │ │ │ -
1521#include <freetds/pushvis.h>
│ │ │ │ -
1522void tdsdump_close(void);
│ │ │ │ -
1523void tdsdump_dump_buf(const char* file, unsigned int level_line, const char *msg, const void *buf, size_t length);
│ │ │ │ -
1524void tdsdump_col(const TDSCOLUMN *col);
│ │ │ │ -
1525#undef tdsdump_log
│ │ │ │ -
1526void tdsdump_log(const char* file, unsigned int level_line, const char *fmt, ...)
│ │ │ │ -
1527#if defined(__GNUC__) && __GNUC__ >= 2
│ │ │ │ -
1528#if defined(__MINGW32__)
│ │ │ │ -
1529 __attribute__ ((__format__ (ms_printf, 3, 4)))
│ │ │ │ -
1530#else
│ │ │ │ -
1531 __attribute__ ((__format__ (__printf__, 3, 4)))
│ │ │ │ -
1532#endif
│ │ │ │ -
1533#endif
│ │ │ │ -
1534;
│ │ │ │ -
1535#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log
│ │ │ │ -
1536#define tdsdump_log TDSDUMP_LOG_FAST
│ │ │ │ -
1537#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf
│ │ │ │ -
1538#define tdsdump_dump_buf TDSDUMP_BUF_FAST
│ │ │ │ -
1539
│ │ │ │ -
1540extern bool tds_write_dump;
│ │ │ │ -
1541extern int tds_debug_flags;
│ │ │ │ -
1542extern int tds_append_mode;
│ │ │ │ -
1543
│ │ │ │ -
1544
│ │ │ │ -
1545/* net.c */
│ │ │ │ -
1546TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr);
│ │ │ │ -
1547void tds_close_socket(TDSSOCKET * tds);
│ │ │ │ -
1548int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);
│ │ │ │ -
1549int tds7_get_instance_port(struct addrinfo *addr, const char *instance);
│ │ │ │ -
1550char *tds_prwsaerror(int erc);
│ │ │ │ -
1551void tds_prwsaerror_free(char *s);
│ │ │ │ -
1552int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);
│ │ │ │ -
1553int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int buflen, int final);
│ │ │ │ -
1554void tds_connection_coalesce(TDSSOCKET *tds);
│ │ │ │ -
1555void tds_connection_flush(TDSSOCKET *tds);
│ │ │ │ -
1556#define TDSSELREAD POLLIN
│ │ │ │ -
1557#define TDSSELWRITE POLLOUT
│ │ │ │ -
1558int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);
│ │ │ │ -
1559void tds_connection_close(TDSCONNECTION *conn);
│ │ │ │ -
1560int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);
│ │ │ │ -
1561int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t buflen);
│ │ │ │ -
1562int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);
│ │ │ │ -
1563int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);
│ │ │ │ -
1564void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);
│ │ │ │ -
1565void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);
│ │ │ │ -
1566inline static TDS_SYS_SOCKET
│ │ │ │ -
1567tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup)
│ │ │ │ -
1568{
│ │ │ │ -
1569 return wakeup->s_signaled;
│ │ │ │ -
1570}
│ │ │ │ -
1571
│ │ │ │ -
1572
│ │ │ │ -
1573/* packet.c */
│ │ │ │ -
1574int tds_read_packet(TDSSOCKET * tds);
│ │ │ │ -
1575TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);
│ │ │ │ -
1576#if ENABLE_ODBC_MARS
│ │ │ │ -
1577int tds_append_cancel(TDSSOCKET *tds);
│ │ │ │ -
1578TDSRET tds_append_syn(TDSSOCKET *tds);
│ │ │ │ -
1579TDSRET tds_append_fin(TDSSOCKET *tds);
│ │ │ │ -
1580#else
│ │ │ │ -
1581int tds_put_cancel(TDSSOCKET * tds);
│ │ │ │ -
1582#endif
│ │ │ │ -
1583
│ │ │ │ -
│ │ │ │ -
1584typedef struct tds_freeze {
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1590 unsigned pkt_pos;
│ │ │ │ -
1592 unsigned size_len;
│ │ │ │ -
1593} TDSFREEZE;
│ │ │ │ -
│ │ │ │ -
1594
│ │ │ │ -
1595void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);
│ │ │ │ -
1596size_t tds_freeze_written(TDSFREEZE *freeze);
│ │ │ │ -
1597TDSRET tds_freeze_abort(TDSFREEZE *freeze);
│ │ │ │ -
1598TDSRET tds_freeze_close(TDSFREEZE *freeze);
│ │ │ │ -
1599TDSRET tds_freeze_close_string(TDSFREEZE *freeze);
│ │ │ │ -
1600TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);
│ │ │ │ -
1601
│ │ │ │ -
1602inline static void
│ │ │ │ -
1603tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)
│ │ │ │ -
1604{
│ │ │ │ -
1605 tds->send_packet = pkt;
│ │ │ │ -
1606 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);
│ │ │ │ -
1607}
│ │ │ │ -
1608
│ │ │ │ -
1609/* Macros to allow some indentation of the packets.
│ │ │ │ -
1610 *
│ │ │ │ -
1611 * The 3 nested fake loops require some explanation:
│ │ │ │ -
1612 * - first is to allows to declare variables;
│ │ │ │ -
1613 * - second is to force using brackets;
│ │ │ │ -
1614 * - third is to avoids that a break inside will skip the close.
│ │ │ │ -
1615 */
│ │ │ │ -
1616#define TDS_START_LEN_GENERIC(tds_socket, len) do { \
│ │ │ │ -
1617 TDSFREEZE current_freeze[1]; \
│ │ │ │ -
1618 tds_freeze((tds_socket), current_freeze, (len)); do { do
│ │ │ │ -
1619#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); } while(0);
│ │ │ │ -
1620#define TDS_END_LEN_STRING while(0); } while(tds_freeze_close_string(current_freeze), 0); } while(0);
│ │ │ │ -
1621
│ │ │ │ -
1622#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 1)
│ │ │ │ -
1623#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 2)
│ │ │ │ -
1624#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4)
│ │ │ │ -
1625
│ │ │ │ -
1626/* vstrbuild.c */
│ │ │ │ -
1627TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char *text, int textlen, const char *formats, int formatlen,
│ │ │ │ -
1628 va_list ap);
│ │ │ │ -
1629
│ │ │ │ -
1630
│ │ │ │ -
1631/* numeric.c */
│ │ │ │ -
1632char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_digits);
│ │ │ │ -
1633TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);
│ │ │ │ -
1634TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char new_prec, unsigned char new_scale);
│ │ │ │ -
1635
│ │ │ │ -
1636
│ │ │ │ -
1637/* getmac.c */
│ │ │ │ -
1638void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);
│ │ │ │ -
1639
│ │ │ │ -
1640
│ │ │ │ -
1641/* challenge.c */
│ │ │ │ -
1642#ifndef HAVE_SSPI
│ │ │ │ - │ │ │ │ -
1644TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);
│ │ │ │ -
1645#else
│ │ │ │ -
1646TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);
│ │ │ │ -
1647#endif
│ │ │ │ -
1648TDSRET tds5_gss_send(TDSSOCKET *tds);
│ │ │ │ -
1649
│ │ │ │ -
1650
│ │ │ │ -
1651/* random.c */
│ │ │ │ -
1652void tds_random_buffer(unsigned char *out, int len);
│ │ │ │ -
1653
│ │ │ │ -
1654
│ │ │ │ -
1655/* sec_negotiate.c */
│ │ │ │ -
1656TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);
│ │ │ │ -
1657inline static void
│ │ │ │ -
1658tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_type)
│ │ │ │ -
1659{
│ │ │ │ -
1660 if (tds_auth)
│ │ │ │ -
1661 tds_auth->msg_type = msg_type;
│ │ │ │ -
1662}
│ │ │ │ -
1663
│ │ │ │ -
1664
│ │ │ │ -
1665/* bulk.c */
│ │ │ │ -
1666
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1669{
│ │ │ │ -
1670 TDS_BCP_IN = 1,
│ │ │ │ -
1671 TDS_BCP_OUT = 2,
│ │ │ │ -
1672 TDS_BCP_QUERYOUT = 3
│ │ │ │ -
1673};
│ │ │ │ -
│ │ │ │ -
1674
│ │ │ │ -
│ │ │ │ -
1675typedef struct tds5_colinfo
│ │ │ │ -
1676{
│ │ │ │ -
1677 TDS_TINYINT type;
│ │ │ │ -
1678 TDS_TINYINT status;
│ │ │ │ -
1679 TDS_SMALLINT offset;
│ │ │ │ -
1680 TDS_INT length;
│ │ │ │ -
1681} TDS5COLINFO;
│ │ │ │ -
│ │ │ │ -
1682
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1684{
│ │ │ │ -
1685 void *parent;
│ │ │ │ -
1686 DSTR hint;
│ │ │ │ -
1687 DSTR tablename;
│ │ │ │ -
1688 TDS_CHAR *insert_stmt;
│ │ │ │ -
1689 TDS_INT direction;
│ │ │ │ -
1690 bool identity_insert_on;
│ │ │ │ -
1691 bool xfer_init;
│ │ │ │ -
1692 TDS_INT bind_count;
│ │ │ │ -
1693 TDSRESULTINFO *bindinfo;
│ │ │ │ -
1694 TDS5COLINFO *sybase_colinfo;
│ │ │ │ -
1695 TDS_INT sybase_count;
│ │ │ │ -
1696};
│ │ │ │ -
│ │ │ │ -
1697
│ │ │ │ -
1698TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ -
1699typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN *bcpcol, int offset);
│ │ │ │ -
1700typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int offset);
│ │ │ │ -
1701TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);
│ │ │ │ -
1702TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);
│ │ │ │ -
1703TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ -
1704TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ -
1705
│ │ │ │ -
1706TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,
│ │ │ │ -
1707 const char *terminator, size_t term_len, char **outbuf, size_t * outbytes);
│ │ │ │ -
1708
│ │ │ │ -
1709TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size);
│ │ │ │ -
1710TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size);
│ │ │ │ -
1711TDSRET tds_writetext_end(TDSSOCKET *tds);
│ │ │ │ -
1712
│ │ │ │ -
1713
│ │ │ │ -
1714inline static bool
│ │ │ │ -
1715tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
│ │ │ │ -
1716{
│ │ │ │ -
1717 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & 1;
│ │ │ │ -
1718}
│ │ │ │ -
1719#define tds_capability_has_req(conn, cap) \
│ │ │ │ -
1720 tds_capability_enabled(&conn->capabilities.types[0], cap)
│ │ │ │ -
1721#define tds_capability_has_res(conn, cap) \
│ │ │ │ -
1722 tds_capability_enabled(&conn->capabilities.types[1], cap)
│ │ │ │ -
1723
│ │ │ │ -
1724#define IS_TDS42(x) (x->tds_version==0x402)
│ │ │ │ -
1725#define IS_TDS46(x) (x->tds_version==0x406)
│ │ │ │ -
1726#define IS_TDS50(x) (x->tds_version==0x500)
│ │ │ │ -
1727#define IS_TDS70(x) (x->tds_version==0x700)
│ │ │ │ -
1728#define IS_TDS71(x) (x->tds_version==0x701)
│ │ │ │ -
1729#define IS_TDS72(x) (x->tds_version==0x702)
│ │ │ │ -
1730#define IS_TDS73(x) (x->tds_version==0x703)
│ │ │ │ -
1731
│ │ │ │ -
1732#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)
│ │ │ │ -
1733#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)
│ │ │ │ -
1734#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)
│ │ │ │ -
1735#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)
│ │ │ │ -
1736#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)
│ │ │ │ -
1737#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)
│ │ │ │ -
1738#define IS_TDS80_PLUS(x) ((x)->tds_version>=0x800)
│ │ │ │ -
1739
│ │ │ │ -
1740#define TDS_MAJOR(x) ((x)->tds_version >> 8)
│ │ │ │ -
1741#define TDS_MINOR(x) ((x)->tds_version & 0xff)
│ │ │ │ -
1742
│ │ │ │ -
1743#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)
│ │ │ │ -
1744
│ │ │ │ -
1746#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))
│ │ │ │ -
1748#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)
│ │ │ │ -
1749
│ │ │ │ -
1753#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))
│ │ │ │ -
1754
│ │ │ │ -
1755/* TODO test if not similar to ms one*/
│ │ │ │ -
1757#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)
│ │ │ │ -
1758
│ │ │ │ -
1759#ifdef __cplusplus
│ │ │ │ -
1760#if 0
│ │ │ │ -
1761{
│ │ │ │ -
1762#endif
│ │ │ │ -
1763}
│ │ │ │ -
1764#endif
│ │ │ │ -
1765
│ │ │ │ -
1766#include <freetds/popvis.h>
│ │ │ │ -
1767
│ │ │ │ -
1768#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))
│ │ │ │ -
1769#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)(v)))
│ │ │ │ -
1770#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))
│ │ │ │ -
1771
│ │ │ │ -
1772#endif /* _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ */
│ │ │ │ -
int tds_iconv_alloc(TDSCONNECTION *conn)
Allocate iconv stuff.
Definition iconv.c:311
│ │ │ │ -
bool tds_write_dump
Tell if TDS debug logging is turned on or off.
Definition log.c:58
│ │ │ │ -
TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)
Return type suitable for conversions (convert all nullable types to fixed type)
Definition tds_types.h:125
│ │ │ │ -
TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)
Set state of TDS connection, with logging and checking.
Definition util.c:58
│ │ │ │ -
struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
A structure to hold all the compile-time settings.
│ │ │ │ -
struct tds_result_info TDSRESULTINFO
Hold information for any results.
│ │ │ │ -
struct tds_variant TDSVARIANT
Store variant information.
│ │ │ │ -
void tdsdump_close(void)
Close the TDS dump log file.
Definition log.c:212
│ │ │ │ -
void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
Set type of column initializing all dependency.
Definition data.c:224
│ │ │ │ -
bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR
Set the servername in a TDSLOGIN structure.
Definition login.c:129
│ │ │ │ -
struct tdsdaterec TDSDATEREC
Used by tds_datecrack.
│ │ │ │ -
TDSLOCALE * tds_get_locale(void)
Get locale information.
Definition locale.c:50
│ │ │ │ -
struct tds_env TDSENV
Current environment as reported by the server.
│ │ │ │ -
struct tds_blob TDSBLOB
Information about blobs (e.g.
│ │ │ │ -
int tds_get_size_by_type(TDS_SERVER_TYPE servertype)
Return the number of bytes needed by specified type.
Definition tds_types.h:9
│ │ │ │ -
const int tds_numeric_bytes_per_prec[]
The following little table is indexed by precision and will tell us the number of bytes required to s...
Definition numeric.c:42
│ │ │ │ -
TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Start bulk copy to server.
Definition bulk.c:1086
│ │ │ │ -
TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)
Definition numeric.c:96
│ │ │ │ -
int tds_get_varint_size(TDSCONNECTION *conn, int datatype)
tds_get_varint_size() returns the size of a variable length integer returned in a result string
Definition tds_types.h:57
│ │ │ │ -
TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size)
Start writing writetext request.
Definition bulk.c:1313
│ │ │ │ -
TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes)
Read a data file, passing the data through iconv().
Definition bulk.c:1244
│ │ │ │ -
TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Start sending BCP data to server.
Definition bulk.c:884
│ │ │ │ -
struct tds_dynamic TDSDYNAMIC
Holds information for a dynamic (also called prepared) query.
│ │ │ │ -
void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
Set type of column initializing all dependency.
Definition data.c:246
│ │ │ │ -
tds_states
values for tds->state
Definition tds.h:774
│ │ │ │ -
@ TDS_PENDING
cilent is waiting for data
Definition tds.h:778
│ │ │ │ -
@ TDS_SENDING
client would send data
Definition tds.h:777
│ │ │ │ -
@ TDS_READING
client is reading data
Definition tds.h:779
│ │ │ │ -
@ TDS_WRITING
client is writing data
Definition tds.h:776
│ │ │ │ -
@ TDS_IDLE
no data expected
Definition tds.h:775
│ │ │ │ -
@ TDS_DEAD
no connection
Definition tds.h:780
│ │ │ │ -
void tdsdump_col(const TDSCOLUMN *col)
Write a column value to the debug log.
Definition log.c:455
│ │ │ │ -
TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size)
Send some data in the writetext request started by tds_writetext_start.
Definition bulk.c:1348
│ │ │ │ -
int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)
Call the client library's error handler (for library-generated errors only)
Definition util.c:321
│ │ │ │ -
enum tds_states TDS_STATE
values for tds->state
│ │ │ │ -
TDSRET tds_writetext_end(TDSSOCKET *tds)
Finish sending writetext data.
Definition bulk.c:1365
│ │ │ │ -
TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Initialize BCP information.
Definition bulk.c:86
│ │ │ │ -
tds_bcp_directions
bcp direction
Definition tds.h:1669
│ │ │ │ -
TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)
Send one row of data to server.
Definition bulk.c:481
│ │ │ │ -
int tdsdump_open(const tds_dir_char *filename)
Create and truncate a human readable dump file for the TDS traffic.
Definition log.c:131
│ │ │ │ -
TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)
Tell we finished sending BCP data to server.
Definition bulk.c:858
│ │ │ │ -
struct tds_encoding TDS_ENCODING
Information relevant to libiconv.
│ │ │ │ -
void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)
Temporarily turn off logging for current thread.
Definition log.c:81
│ │ │ │ -
void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)
Turn logging back on for current thread.
Definition log.c:101
│ │ │ │ -
struct tds_cursor TDSCURSOR
Holds information about a cursor.
│ │ │ │ -
TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)
Build a NTLMSPP packet to send to server.
Definition challenge.c:721
│ │ │ │ -
TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)
Set TDS version from given string.
Definition config.c:950
│ │ │ │ -
const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void)
Return a structure capturing the compile-time settings provided to the configure script.
Definition config.c:1377
│ │ │ │ -
struct addrinfo * tds_lookup_host(const char *servername)
Get the IP address for a hostname.
Definition config.c:1015
│ │ │ │ -
bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param)
Read a section of configuration file (INI style file)
Definition config.c:508
│ │ │ │ -
bool tds_read_conf_file(TDSLOGIN *login, const char *server)
Read configuration info for given server return 0 on error.
Definition config.c:322
│ │ │ │ -
TDSRET tds_set_interfaces_file_loc(const char *interfloc)
Set the full name of interface file.
Definition config.c:989
│ │ │ │ -
TDSRET tds8_adjust_login(TDSLOGIN *login)
Make sure proper setting are in place for TDS 8.0.
Definition config.c:1462
│ │ │ │ -
TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)
tds_read_config_info() will fill the tds connection structure based on configuration information gath...
Definition config.c:138
│ │ │ │ -
void tds_fix_login(TDSLOGIN *login)
Fix configuration after reading it.
Definition config.c:280
│ │ │ │ -
TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)
Convert from db date format to a structured date format.
Definition convert.c:3258
│ │ │ │ -
TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5])
Get iconv information from a LCID (to support different column encoding under MSSQL2K)
Definition iconv.c:1249
│ │ │ │ -
TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
Allocate space for row store return NULL on out of memory.
Definition mem.c:533
│ │ │ │ -
void tds_detach_results(TDSRESULTINFO *info)
Detach result info from it current socket.
Definition mem.c:497
│ │ │ │ -
TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)
Adds a output parameter to TDSPARAMINFO.
Definition mem.c:284
│ │ │ │ -
void * tds_alloc_param_data(TDSCOLUMN *curparam)
Allocate data for a parameter.
Definition mem.c:373
│ │ │ │ -
TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)
Initialize login structure with locale information and other stuff for connection.
Definition mem.c:808
│ │ │ │ -
void tds_free_param_result(TDSPARAMINFO *param_info)
Delete latest parameter.
Definition mem.c:320
│ │ │ │ -
TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)
Allocate a dynamic statement.
Definition mem.c:160
│ │ │ │ -
void * tds_realloc(void **pp, size_t new_size)
Reallocate a pointer and update it if success.
Definition mem.c:1896
│ │ │ │ -
void tds_free_input_params(TDSDYNAMIC *dyn)
Frees all allocated input parameters of a dynamic statement.
Definition mem.c:206
│ │ │ │ -
void tds_release_dynamic(TDSDYNAMIC **dyn)
Frees dynamic statement.
Definition mem.c:253
│ │ │ │ -
int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
Check if dynamic request must be unprepared.
Definition query.c:1800
│ │ │ │ -
const char * tds_skip_quoted(const char *s)
Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd])
Definition query.c:517
│ │ │ │ -
TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
Creates a temporary stored procedure in the server and execute it.
Definition query.c:1453
│ │ │ │ -
void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)
Start query packet of a given type.
Definition query.c:334
│ │ │ │ -
TDSRET tds_send_cancel(TDSSOCKET *tds)
tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called dire...
Definition query.c:2069
│ │ │ │ -
TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Sends a previously prepared dynamic statement to the server.
Definition query.c:1678
│ │ │ │ -
size_t tds_quote_string(TDSSOCKET *tds TDS_UNUSED, char *buffer, const char *str, int len)
Quote a string.
Definition query.c:2281
│ │ │ │ -
TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)
Return declaration for column (like "varchar(20)").
Definition query.c:740
│ │ │ │ -
TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)
Deallocate cursor on idle.
Definition query.c:3097
│ │ │ │ -
TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)
Sends a language string to the database server for processing.
Definition query.c:212
│ │ │ │ -
TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)
Calls a RPC from server.
Definition query.c:1977
│ │ │ │ -
size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
Quote an id for a RPC call.
Definition query.c:2256
│ │ │ │ -
TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
Creates a temporary stored procedure in the server.
Definition query.c:1176
│ │ │ │ -
size_t tds_fix_column_size(TDSSOCKET *tds TDS_UNUSED, TDSCOLUMN *curcol)
Get column size for wire.
Definition query.c:1543
│ │ │ │ -
TDSRET tds_submit_begin_tran(TDSSOCKET *tds)
Send a rollback request.
Definition query.c:3705
│ │ │ │ -
TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont)
Send a commit request.
Definition query.c:3764
│ │ │ │ -
TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont)
Send a rollback request.
Definition query.c:3733
│ │ │ │ -
size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
Quote an id.
Definition query.c:2211
│ │ │ │ -
const char * tds_next_placeholder(const char *start)
Get position of next placeholder.
Definition query.c:537
│ │ │ │ -
TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
Sends a language string to the database server for processing.
Definition query.c:352
│ │ │ │ -
TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
Unprepare dynamic on idle.
Definition query.c:1822
│ │ │ │ -
int tds_count_placeholders(const char *query)
Count the number of placeholders ('?') in a query.
Definition query.c:573
│ │ │ │ -
TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)
Send a deallocation request to server.
Definition query.c:3046
│ │ │ │ -
const char * tds_skip_comment(const char *s)
Skip a comment in a query.
Definition query.c:492
│ │ │ │ -
const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len)
Convert a string in an allocated buffer.
Definition query.c:126
│ │ │ │ -
TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)
Format and submit a query.
Definition query.c:469
│ │ │ │ -
TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
Submit a prepared query with parameters.
Definition query.c:1308
│ │ │ │ -
void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Set current dynamic.
Definition query.c:194
│ │ │ │ -
TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size)
Send option commands to server.
Definition query.c:3429
│ │ │ │ -
TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Send a unprepare request for a prepared query.
Definition query.c:1845
│ │ │ │ -
DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)
Reads a string from wire and put in a DSTR.
Definition read.c:294
│ │ │ │ -
TDSRET tds_freeze_close_string(TDSFREEZE *freeze)
Stop keeping data for this specific freeze.
Definition packet.c:1008
│ │ │ │ -
unsigned char tds_get_byte(TDSSOCKET *tds)
Return a single byte from the input buffer.
Definition read.c:72
│ │ │ │ -
int tds_put_string(TDSSOCKET *tds, const char *buf, int len)
Output a string to wire automatic translate string to unicode if needed.
Definition write.c:97
│ │ │ │ -
unsigned char tds_peek(TDSSOCKET *tds)
Reads a byte from the TDS stream without removing it.
Definition read.c:100
│ │ │ │ -
TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)
Stop keeping data for this specific freeze.
Definition packet.c:1046
│ │ │ │ -
int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
Definition net.c:977
│ │ │ │ -
int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)
Set socket to non-blocking.
Definition net.c:145
│ │ │ │ -
void tds_close_socket(TDSSOCKET *tds)
Close current socket.
Definition net.c:527
│ │ │ │ -
int tds_read_packet(TDSSOCKET *tds)
Read in one 'packet' from the server.
Definition packet.c:523
│ │ │ │ -
size_t tds_freeze_written(TDSFREEZE *freeze)
Compute how many bytes has been written from freeze.
Definition packet.c:931
│ │ │ │ -
TDSRET tds_flush_packet(TDSSOCKET *tds)
Flush packet to server.
Definition write.c:224
│ │ │ │ -
TDSRET tds_freeze_close(TDSFREEZE *freeze)
Stop keeping data for this specific freeze.
Definition packet.c:992
│ │ │ │ -
int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)
Loops until we have received some characters return -1 on failure.
Definition net.c:906
│ │ │ │ -
TDSRET tds_freeze_abort(TDSFREEZE *freeze)
Discard all data written after the freeze.
Definition packet.c:957
│ │ │ │ -
TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)
Get an uint64 from the server.
Definition read.c:138
│ │ │ │ -
TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
Fetch character data the wire.
Definition read.c:193
│ │ │ │ -
size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size)
Fetch a string from the wire.
Definition read.c:164
│ │ │ │ -
int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)
Get port of all instances.
Definition net.c:1099
│ │ │ │ -
TDS_UINT tds_get_uint(TDSSOCKET *tds)
Get an uint32 from the server.
Definition read.c:125
│ │ │ │ -
int tds7_get_instance_port(struct addrinfo *addr, const char *instance)
Get port of given instance.
Definition net.c:1235
│ │ │ │ -
TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)
Get an uint16 from the server.
Definition read.c:112
│ │ │ │ -
void tds_unget_byte(TDSSOCKET *tds)
Unget will always work as long as you don't call it twice in a row.
Definition read.c:89
│ │ │ │ -
int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)
Select on a socket until it's available or the timeout expires.
Definition net.c:589
│ │ │ │ -
bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n)
Get N bytes from the buffer and return them in the already allocated space given to us.
Definition read.c:228
│ │ │ │ -
const char * tds_prtype(int token)
Returns string representation of the given type.
Definition token.c:3037
│ │ │ │ -
TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)
Finds a dynamic given string id.
Definition token.c:2592
│ │ │ │ -
TDSRET tds_process_login_tokens(TDSSOCKET *tds)
tds_process_login_tokens() is called after sending the login packet to the server.
Definition token.c:416
│ │ │ │ -
TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
process all streams.
Definition token.c:536
│ │ │ │ -
TDSRET tds_process_simple_query(TDSSOCKET *tds)
Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results,...
Definition token.c:886
│ │ │ │ -
TDSRET tds_process_cancel(TDSSOCKET *tds)
Definition token.c:2559
│ │ │ │ -
Definition iconv.h:92
│ │ │ │ -
Definition proto.h:26
│ │ │ │ -
Definition proto.h:39
│ │ │ │ -
A structure to hold all the compile-time settings.
Definition tds.h:83
│ │ │ │ -
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ -
TDS_INT date
date, 0 = 1900-01-01
Definition tds.h:147
│ │ │ │ -
TDS_SMALLINT offset
time offset
Definition tds.h:148
│ │ │ │ -
TDS_UINT8 time
time, 7 digit precision
Definition tds.h:146
│ │ │ │ -
Used by tds_datecrack.
Definition tds.h:158
│ │ │ │ -
TDS_INT dayofyear
day of year (1-366)
Definition tds.h:163
│ │ │ │ -
TDS_INT weekday
day of week (0-6, 0 = sunday)
Definition tds.h:164
│ │ │ │ -
TDS_INT year
year
Definition tds.h:159
│ │ │ │ -
TDS_INT timezone
-840 - 840 minutes from UTC
Definition tds.h:169
│ │ │ │ -
TDS_INT minute
0-59
Definition tds.h:166
│ │ │ │ -
TDS_INT day
day of month (1-31)
Definition tds.h:162
│ │ │ │ -
TDS_INT decimicrosecond
0-9999999
Definition tds.h:168
│ │ │ │ -
TDS_INT second
0-59
Definition tds.h:167
│ │ │ │ -
TDS_INT quarter
quarter (0-3)
Definition tds.h:160
│ │ │ │ -
TDS_INT hour
0-23
Definition tds.h:165
│ │ │ │ -
TDS_INT month
month number (0-11)
Definition tds.h:161
│ │ │ │ -
Definition tds.h:305
│ │ │ │ -
Definition tds.h:476
│ │ │ │ -
Definition tds.h:485
│ │ │ │ -
Definition tds.h:492
│ │ │ │ -
Definition tds.h:498
│ │ │ │ -
DSTR crlfile
certificate revocation file
Definition tds.h:512
│ │ │ │ -
DSTR server_realm_name
server realm name (in freetds.conf)
Definition tds.h:508
│ │ │ │ -
DSTR user_name
account for login
Definition tds.h:516
│ │ │ │ -
DSTR password
password of account login
Definition tds.h:517
│ │ │ │ -
DSTR db_filename
database filename to attach (MSSQL)
Definition tds.h:510
│ │ │ │ -
DSTR certificate_host_name
certificate hostname to check, if empty use server_host_name
Definition tds.h:513
│ │ │ │ -
DSTR server_name
server name (in freetds.conf)
Definition tds.h:499
│ │ │ │ -
struct addrinfo * ip_addrs
ip(s) of server
Definition tds.h:528
│ │ │ │ -
DSTR server_charset
charset of server e.g.
Definition tds.h:504
│ │ │ │ -
TDS_USMALLINT tds_version
TDS version.
Definition tds.h:501
│ │ │ │ -
DSTR new_password
new password to set (TDS 7.2+)
Definition tds.h:518
│ │ │ │ -
unsigned int bulk_copy
if bulk copy should be enabled
Definition tds.h:538
│ │ │ │ -
DSTR cafile
certificate authorities file
Definition tds.h:511
│ │ │ │ -
DSTR server_spn
server SPN (in freetds.conf)
Definition tds.h:509
│ │ │ │ -
int port
port of database service
Definition tds.h:500
│ │ │ │ -
Definition tds.h:557
│ │ │ │ -
Definition tds.h:565
│ │ │ │ -
Information about blobs (e.g.
Definition tds.h:578
│ │ │ │ -
Store variant information.
Definition tds.h:589
│ │ │ │ -
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │ -
const char * name
name of the encoding (ie UTF-8)
Definition tds.h:605
│ │ │ │ -
unsigned char canonic
internal numeric index into array of all encodings
Definition tds.h:609
│ │ │ │ -
Definition tds.h:613
│ │ │ │ -
Definition tds.h:628
│ │ │ │ -
tds_func_put_data * put_data
Send column data to server.
Definition tds.h:647
│ │ │ │ -
tds_func_put_info * put_info
Send metadata column information to server.
Definition tds.h:637
│ │ │ │ -
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ -
TDS_INT bcp_prefix_len
The length, in bytes, of any length prefix this column may have.
Definition tds.h:746
│ │ │ │ -
TDS_TINYINT column_varint_size
size of length when reading from wire (0, 1, 2 or 4)
Definition tds.h:686
│ │ │ │ -
TDS_INT column_size
maximun size of data.
Definition tds.h:679
│ │ │ │ -
TDS_TINYINT column_prec
precision for decimal/numeric
Definition tds.h:688
│ │ │ │ -
TDS_SERVER_TYPE column_type
This type can be different from wire type because conversion (e.g.
Definition tds.h:681
│ │ │ │ -
TDSICONV * char_conv
refers to previously allocated iconv information
Definition tds.h:697
│ │ │ │ -
TDS_TINYINT column_scale
scale for decimal/numeric
Definition tds.h:689
│ │ │ │ -
TDS_INT column_cur_size
size written in variable (ie: char, text, binary).
Definition tds.h:721
│ │ │ │ -
Hold information for any results.
Definition tds.h:754
│ │ │ │ -
Definition tds.h:861
│ │ │ │ -
Definition tds.h:877
│ │ │ │ -
Definition tds.h:891
│ │ │ │ -
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ -
TDS_TINYINT options
read only|updatable TODO use it
Definition tds.h:927
│ │ │ │ -
bool defer_close
true if cursor was marker to be closed when connection is idle
Definition tds.h:931
│ │ │ │ -
TDS_INT ref_count
reference counter so client can retain safely a pointer
Definition tds.h:924
│ │ │ │ -
TDS_INT cursor_id
cursor id returned by the server after cursor declare
Definition tds.h:926
│ │ │ │ -
TDS_INT cursor_rows
< number of updatable columns
Definition tds.h:936
│ │ │ │ -
struct tds_cursor * next
next in linked list, keep first
Definition tds.h:923
│ │ │ │ -
TDS_INT type
row fetched from this cursor
Definition tds.h:941
│ │ │ │ -
TDS_CURSOR_STATUS status
cursor parameter
Definition tds.h:938
│ │ │ │ -
char * query
SQL query.
Definition tds.h:932
│ │ │ │ -
char * cursor_name
name of the cursor
Definition tds.h:925
│ │ │ │ -
Current environment as reported by the server.
Definition tds.h:948
│ │ │ │ -
char * charset
character set encoding
Definition tds.h:953
│ │ │ │ -
int block_size
packet size (512-65535)
Definition tds.h:950
│ │ │ │ -
char * database
database name
Definition tds.h:955
│ │ │ │ -
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ -
char * query
saved query, we need to know original query if prepare is impossible
Definition tds.h:994
│ │ │ │ -
TDS_INT ref_count
reference counter so client can retain safely a pointer
Definition tds.h:964
│ │ │ │ -
bool emulated
this dynamic query cannot be prepared so libTDS have to construct a simple query.
Definition tds.h:978
│ │ │ │ -
bool defer_close
true if dynamic was marker to be closed when connection is idle
Definition tds.h:982
│ │ │ │ -
TDSPARAMINFO * res_info
query results
Definition tds.h:984
│ │ │ │ -
TDSPARAMINFO * params
query parameters.
Definition tds.h:992
│ │ │ │ -
struct tds_dynamic * next
next in linked list, keep first
Definition tds.h:963
│ │ │ │ -
TDS_INT num_id
numeric id for mssql7+
Definition tds.h:966
│ │ │ │ -
Definition tds.h:1004
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ -
Definition tds.h:1033
│ │ │ │ -
Definition tds.h:1043
│ │ │ │ -
unsigned data_len
data length, this does not account SMP header, only TDS part
Definition tds.h:1057
│ │ │ │ -
Definition tds.h:1071
│ │ │ │ -
Definition tds.h:1077
│ │ │ │ -
TDSENV env
environment is shared between all sessions
Definition tds.h:1088
│ │ │ │ -
uint8_t unicharsize
Ratio between bytes allocated for a UNICHAR type and type length (Sybase).
Definition tds.h:1145
│ │ │ │ -
TDSCURSOR * cursors
linked list of cursors allocated for this connection contains only cursors allocated on the server
Definition tds.h:1094
│ │ │ │ -
TDS_SYS_SOCKET s
tcp socket, INVALID_SOCKET if not connected
Definition tds.h:1083
│ │ │ │ -
TDS_UINT product_version
version of product (Sybase/MS and full version)
Definition tds.h:1080
│ │ │ │ -
TDSDYNAMIC * dyns
list of dynamic allocated for this connection contains only dynamic allocated on the server
Definition tds.h:1099
│ │ │ │ -
unsigned int pending_close
true is connection has pending closing (cursors or dynamic)
Definition tds.h:1110
│ │ │ │ -
uint8_t ncharsize
Ratio between bytes allocated for a NCHAR type and type length (Sybase).
Definition tds.h:1138
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ -
TDSLOGIN * login
config for login stuff.
Definition tds.h:1258
│ │ │ │ -
unsigned in_len
input buffer length
Definition tds.h:1194
│ │ │ │ -
TDSPACKET * frozen_packets
list of packets frozen, points to first one.
Definition tds.h:1203
│ │ │ │ -
TDSPACKET * send_packet
packet we are preparing to send
Definition tds.h:1231
│ │ │ │ -
unsigned char * in_buf
Input buffer.
Definition tds.h:1177
│ │ │ │ -
TDS_INT ret_status
return status from store procedure
Definition tds.h:1250
│ │ │ │ -
unsigned out_pos
current position in out_buf
Definition tds.h:1193
│ │ │ │ -
TDSRESULTINFO * current_results
Current query information.
Definition tds.h:1238
│ │ │ │ -
unsigned char in_flag
input buffer type
Definition tds.h:1195
│ │ │ │ -
TDS_INT8 rows_affected
rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid
Definition tds.h:1254
│ │ │ │ -
unsigned char out_flag
output buffer type
Definition tds.h:1196
│ │ │ │ -
unsigned in_pos
current position in in_buf
Definition tds.h:1192
│ │ │ │ -
TDSCURSOR * cur_cursor
cursor in use
Definition tds.h:1243
│ │ │ │ -
bool in_row
true if we are getting rows
Definition tds.h:1246
│ │ │ │ -
bool bulk_query
true is query sent was a bulk query so we need to switch state to QUERYING
Definition tds.h:1244
│ │ │ │ -
bool has_status
true is ret_status is valid
Definition tds.h:1245
│ │ │ │ -
unsigned char * out_buf
Output buffer.
Definition tds.h:1185
│ │ │ │ -
volatile unsigned char in_cancel
indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean we have to send cance...
Definition tds.h:1248
│ │ │ │ -
unsigned int out_buf_max
Maximum size of packet pointed by out_buf.
Definition tds.h:1191
│ │ │ │ -
TDSDYNAMIC * cur_dyn
dynamic structure in use
Definition tds.h:1256
│ │ │ │ -
Definition tds.h:1275
│ │ │ │ -
Definition tds.h:1281
│ │ │ │ -
Definition tds.h:1512
│ │ │ │ -
Definition tds.h:1584
│ │ │ │ -
TDSSOCKET * tds
which socket we refer to
Definition tds.h:1586
│ │ │ │ -
unsigned pkt_pos
position in pkt
Definition tds.h:1590
│ │ │ │ -
unsigned size_len
length size (0, 1, 2 or 4)
Definition tds.h:1592
│ │ │ │ -
TDSPACKET * pkt
first packet frozen
Definition tds.h:1588
│ │ │ │ -
Definition tds.h:1676
│ │ │ │ -
Definition tds.h:1684
│ │ │ │ -
Definition thread.h:279
│ │ │ │ -
Structure to hold a string.
Definition string.h:36
│ │ │ │ +
24/* ignored */
│ │ │ │ +
25# define POLLHUP 0x0010
│ │ │ │ +
26# define POLLNVAL 0x0020
│ │ │ │ +
│ │ │ │ +
27typedef struct pollfd {
│ │ │ │ +
28 int fd; /* file descriptor to poll */
│ │ │ │ +
29 short events; /* events of interest on fd */
│ │ │ │ +
30 short revents; /* events that occurred on fd */
│ │ │ │ +
31} pollfd_t;
│ │ │ │ +
│ │ │ │ +
32
│ │ │ │ +
33#else /* Windows */
│ │ │ │ +
34/*
│ │ │ │ +
35 * Windows use different constants than Unix
│ │ │ │ +
36 * Newer version have a WSAPoll which is equal to Unix poll
│ │ │ │ +
37 */
│ │ │ │ +
38# if !defined(POLLRDNORM) && !defined(POLLWRNORM)
│ │ │ │ +
39# define POLLIN 0x0300
│ │ │ │ +
40# define POLLOUT 0x0010
│ │ │ │ +
41# define POLLERR 0x0001
│ │ │ │ +
42# define POLLHUP 0x0002
│ │ │ │ +
43# define POLLNVAL 0x0004
│ │ │ │ +
44# define POLLRDNORM 0x0100
│ │ │ │ +
45# define POLLWRNORM 0x0010
│ │ │ │ +
46typedef struct pollfd {
│ │ │ │ +
47 SOCKET fd; /* file descriptor to poll */
│ │ │ │ +
48 short events; /* events of interest on fd */
│ │ │ │ +
49 short revents; /* events that occurred on fd */
│ │ │ │ +
50} pollfd_t;
│ │ │ │ +
51# else
│ │ │ │ +
52typedef struct pollfd pollfd_t;
│ │ │ │ +
53# endif
│ │ │ │ +
54#endif
│ │ │ │ +
55
│ │ │ │ +
56#undef poll
│ │ │ │ +
57int tds_poll(struct pollfd fds[], size_t nfds, int timeout);
│ │ │ │ +
58#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)
│ │ │ │ +
59
│ │ │ │ +
60#include <freetds/popvis.h>
│ │ │ │ +
61
│ │ │ │ +
62#endif
│ │ │ │ +
Definition poll.h:27
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,2657 +1,72 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -tds.h │ │ │ │ │ + * replacements │ │ │ │ │ +poll.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ -22#define _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +1 │ │ │ │ │ +5#if !defined(_tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_) && !defined(HAVE_POLL) │ │ │ │ │ +6#define _tdsguard_g3Yr0q7NdWY6GI4uTB9PNx_ │ │ │ │ │ +7 │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#ifndef _WIN32 │ │ │ │ │ +11/* poll flags */ │ │ │ │ │ +12# define POLLIN 0x0001 │ │ │ │ │ +13# define POLLOUT 0x0004 │ │ │ │ │ +14# define POLLERR 0x0008 │ │ │ │ │ +15 │ │ │ │ │ +16/* synonyms */ │ │ │ │ │ +17# define POLLNORM POLLIN │ │ │ │ │ +18# define POLLPRI POLLIN │ │ │ │ │ +19# define POLLRDNORM POLLIN │ │ │ │ │ +20# define POLLRDBAND POLLIN │ │ │ │ │ +21# define POLLWRNORM POLLOUT │ │ │ │ │ +22# define POLLWRBAND POLLOUT │ │ │ │ │ 23 │ │ │ │ │ -24#ifndef _freetds_config_h_ │ │ │ │ │ -25#error should include config.h before │ │ │ │ │ -26#endif │ │ │ │ │ -27 │ │ │ │ │ -28#include │ │ │ │ │ -29#include │ │ │ │ │ -30#include │ │ │ │ │ -31 │ │ │ │ │ -32#ifdef HAVE_STDDEF_H │ │ │ │ │ -33#include │ │ │ │ │ -34#endif │ │ │ │ │ -35 │ │ │ │ │ -36#if HAVE_NETDB_H │ │ │ │ │ -37#include │ │ │ │ │ -38#endif /* HAVE_NETDB_H */ │ │ │ │ │ -39 │ │ │ │ │ -40#if HAVE_NETINET_IN_H │ │ │ │ │ -41#include │ │ │ │ │ -42#endif /* HAVE_NET_INET_IN_H */ │ │ │ │ │ -43#if HAVE_ARPA_INET_H │ │ │ │ │ -44#include │ │ │ │ │ -45#endif /* HAVE_ARPA_INET_H */ │ │ │ │ │ -46 │ │ │ │ │ -47#if HAVE_SYS_SOCKET_H │ │ │ │ │ -48#include │ │ │ │ │ -49#endif /* HAVE_SYS_SOCKET_H */ │ │ │ │ │ -50 │ │ │ │ │ -51/* forward declaration */ │ │ │ │ │ -52typedef struct tdsiconvinfo TDSICONV; │ │ │ │ │ -53typedef struct tds_connection TDSCONNECTION; │ │ │ │ │ -54typedef struct tds_socket TDSSOCKET; │ │ │ │ │ -55typedef struct tds_column TDSCOLUMN; │ │ │ │ │ -56typedef struct tds_bcpinfo TDSBCPINFO; │ │ │ │ │ -57 │ │ │ │ │ -58#include │ │ │ │ │ -59#include │ │ │ │ │ -60#include │ │ │ │ │ -61#include │ │ │ │ │ -62#include │ │ │ │ │ -63#include │ │ │ │ │ -64#include │ │ │ │ │ -65#include │ │ │ │ │ -66 │ │ │ │ │ -67#include │ │ │ │ │ -68 │ │ │ │ │ -69#ifdef __cplusplus │ │ │ │ │ -70extern "C" │ │ │ │ │ -71{ │ │ │ │ │ -72#if 0 │ │ │ │ │ -73} │ │ │ │ │ -74#endif │ │ │ │ │ -75#endif │ │ │ │ │ -76 │ │ │ │ │ -82typedef struct tds_compiletime_settings │ │ │ │ │ -83{ │ │ │ │ │ -84 const char *freetds_version; /* release version of FreeTDS */ │ │ │ │ │ -85 const tds_dir_char *sysconfdir; /* location of freetds.conf */ │ │ │ │ │ -86 const char *last_update; /* latest software_version date among the modules │ │ │ │ │ -*/ │ │ │ │ │ -87 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1/8.0) 5.0 */ │ │ │ │ │ -88 bool msdblib; /* for MS style dblib */ │ │ │ │ │ -89 bool sybase_compat; /* enable increased Open Client binary compatibility */ │ │ │ │ │ -90 bool threadsafe; /* compile for thread safety default=no */ │ │ │ │ │ -91 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */ │ │ │ │ │ -92 bool iodbc; /* build odbc driver against iODBC in DIR */ │ │ │ │ │ -93 bool unixodbc; /* build odbc driver against unixODBC in DIR */ │ │ │ │ │ -94 bool openssl; /* build against OpenSSL */ │ │ │ │ │ -95 bool gnutls; /* build against GnuTLS */ │ │ │ │ │ -96 bool mars; /* MARS enabled */ │ │ │ │ │ -97 bool sspi; /* SSPI enabled */ │ │ │ │ │ -98 bool kerberos; /* Kerberos enabled */ │ │ │ │ │ -99} TDS_COMPILETIME_SETTINGS; │ │ │ │ │ -100 │ │ │ │ │ -116/* │ │ │ │ │ -117 * All references to data that touch the wire should use the following │ │ │ │ │ -typedefs. │ │ │ │ │ -118 * │ │ │ │ │ -119 * If you have problems on 64-bit machines and the code is │ │ │ │ │ -120 * using a native datatype, please change it to use │ │ │ │ │ -121 * these. (In the TDS layer only, the API layers have their │ │ │ │ │ -122 * own typedefs which equate to these). │ │ │ │ │ -123 */ │ │ │ │ │ -124typedef char TDS_CHAR; /* 8-bit char */ │ │ │ │ │ -125typedef uint8_t TDS_UCHAR; /* 8-bit uchar */ │ │ │ │ │ -126typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */ │ │ │ │ │ -127typedef int16_t TDS_SMALLINT; /* 16-bit int */ │ │ │ │ │ -128typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */ │ │ │ │ │ -129typedef int32_t TDS_INT; /* 32-bit int */ │ │ │ │ │ -130typedef uint32_t TDS_UINT; /* 32-bit unsigned */ │ │ │ │ │ -131typedef int64_t TDS_INT8; /* 64-bit integer */ │ │ │ │ │ -132typedef uint64_t TDS_UINT8; /* 64-bit unsigned */ │ │ │ │ │ -133typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */ │ │ │ │ │ -134typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */ │ │ │ │ │ -135 │ │ │ │ │ -136#include │ │ │ │ │ -137 │ │ │ │ │ -138#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0) │ │ │ │ │ -139 │ │ │ │ │ -144typedef struct │ │ │ │ │ -145{ │ │ │ │ │ -146 TDS_UINT8 time; │ │ │ │ │ -147 TDS_INT date; │ │ │ │ │ -148 TDS_SMALLINT offset; │ │ │ │ │ -149 TDS_USMALLINT time_prec:3; │ │ │ │ │ -150 TDS_USMALLINT _tds_reserved:10; │ │ │ │ │ -151 TDS_USMALLINT has_time:1; │ │ │ │ │ -152 TDS_USMALLINT has_date:1; │ │ │ │ │ -153 TDS_USMALLINT has_offset:1; │ │ │ │ │ -154} TDS_DATETIMEALL; │ │ │ │ │ -155 │ │ │ │ │ -157typedef struct tdsdaterec │ │ │ │ │ -158{ │ │ │ │ │ -159 TDS_INT year; │ │ │ │ │ -160 TDS_INT quarter; │ │ │ │ │ -161 TDS_INT month; │ │ │ │ │ -162 TDS_INT day; │ │ │ │ │ -163 TDS_INT dayofyear; │ │ │ │ │ -164 TDS_INT weekday; │ │ │ │ │ -165 TDS_INT hour; │ │ │ │ │ -166 TDS_INT minute; │ │ │ │ │ -167 TDS_INT second; │ │ │ │ │ -168 TDS_INT decimicrosecond; │ │ │ │ │ -169 TDS_INT timezone; │ │ │ │ │ -170} TDSDATEREC; │ │ │ │ │ -171 │ │ │ │ │ -177extern const int tds_numeric_bytes_per_prec[]; │ │ │ │ │ -178 │ │ │ │ │ -179typedef int TDSRET; │ │ │ │ │ -180#define TDS_NO_MORE_RESULTS ((TDSRET)1) │ │ │ │ │ -181#define TDS_SUCCESS ((TDSRET)0) │ │ │ │ │ -182#define TDS_FAIL ((TDSRET)-1) │ │ │ │ │ -183#define TDS_CANCELLED ((TDSRET)-2) │ │ │ │ │ -184#define TDS_FAILED(rc) ((rc)<0) │ │ │ │ │ -185#define TDS_SUCCEED(rc) ((rc)>=0) │ │ │ │ │ -186#define TDS_PROPAGATE(rc) \ │ │ │ │ │ -187 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } │ │ │ │ │ -while(0) │ │ │ │ │ -188 │ │ │ │ │ -189#define TDS_INT_CONTINUE 1 │ │ │ │ │ -190#define TDS_INT_CANCEL 2 │ │ │ │ │ -191#define TDS_INT_TIMEOUT 3 │ │ │ │ │ -192 │ │ │ │ │ -193 │ │ │ │ │ -194#define TDS_NO_COUNT -1 │ │ │ │ │ -195 │ │ │ │ │ -196#define TDS_ROW_RESULT 4040 │ │ │ │ │ -197#define TDS_PARAM_RESULT 4042 │ │ │ │ │ -198#define TDS_STATUS_RESULT 4043 │ │ │ │ │ -199#define TDS_MSG_RESULT 4044 │ │ │ │ │ -200#define TDS_COMPUTE_RESULT 4045 │ │ │ │ │ -201#define TDS_CMD_DONE 4046 │ │ │ │ │ -202#define TDS_CMD_SUCCEED 4047 │ │ │ │ │ -203#define TDS_CMD_FAIL 4048 │ │ │ │ │ -204#define TDS_ROWFMT_RESULT 4049 │ │ │ │ │ -205#define TDS_COMPUTEFMT_RESULT 4050 │ │ │ │ │ -206#define TDS_DESCRIBE_RESULT 4051 │ │ │ │ │ -207#define TDS_DONE_RESULT 4052 │ │ │ │ │ -208#define TDS_DONEPROC_RESULT 4053 │ │ │ │ │ -209#define TDS_DONEINPROC_RESULT 4054 │ │ │ │ │ -210#define TDS_OTHERS_RESULT 4055 │ │ │ │ │ -211 │ │ │ │ │ -212enum tds_token_results │ │ │ │ │ -213{ │ │ │ │ │ -214 TDS_TOKEN_RES_OTHERS, │ │ │ │ │ -215 TDS_TOKEN_RES_ROWFMT, │ │ │ │ │ -216 TDS_TOKEN_RES_COMPUTEFMT, │ │ │ │ │ -217 TDS_TOKEN_RES_PARAMFMT, │ │ │ │ │ -218 TDS_TOKEN_RES_DONE, │ │ │ │ │ -219 TDS_TOKEN_RES_ROW, │ │ │ │ │ -220 TDS_TOKEN_RES_COMPUTE, │ │ │ │ │ -221 TDS_TOKEN_RES_PROC, │ │ │ │ │ -222 TDS_TOKEN_RES_MSG, │ │ │ │ │ -223 TDS_TOKEN_RES_ENV, │ │ │ │ │ -224}; │ │ │ │ │ -225 │ │ │ │ │ -226#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_ │ │ │ │ │ -##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2)) │ │ │ │ │ -227 │ │ │ │ │ -228enum tds_token_flags │ │ │ │ │ -229{ │ │ │ │ │ -230 TDS_HANDLE_ALL = 0, │ │ │ │ │ -231 TDS_TOKEN_FLAG(OTHERS), │ │ │ │ │ -232 TDS_TOKEN_FLAG(ROWFMT), │ │ │ │ │ -233 TDS_TOKEN_FLAG(COMPUTEFMT), │ │ │ │ │ -234 TDS_TOKEN_FLAG(PARAMFMT), │ │ │ │ │ -235 TDS_TOKEN_FLAG(DONE), │ │ │ │ │ -236 TDS_TOKEN_FLAG(ROW), │ │ │ │ │ -237 TDS_TOKEN_FLAG(COMPUTE), │ │ │ │ │ -238 TDS_TOKEN_FLAG(PROC), │ │ │ │ │ -239 TDS_TOKEN_FLAG(MSG), │ │ │ │ │ -240 TDS_TOKEN_FLAG(ENV), │ │ │ │ │ -241 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_ │ │ │ │ │ -DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC, │ │ │ │ │ -242 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ │ │ │ │ │ -ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS │ │ │ │ │ -243}; │ │ │ │ │ -244 │ │ │ │ │ -245/* │ │ │ │ │ -246 * TDSERRNO is emitted by libtds to the client library's error handler │ │ │ │ │ -247 * (which may in turn call the client's error handler). │ │ │ │ │ -248 * These match the db-lib msgno, because the same values have the same │ │ │ │ │ -meaning │ │ │ │ │ -249 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo). │ │ │ │ │ -250 */ │ │ │ │ │ -251typedef enum { TDSEOK = TDS_SUCCESS, │ │ │ │ │ -252 TDSEVERDOWN = 100, │ │ │ │ │ -253 TDSEINPROGRESS, │ │ │ │ │ -254 TDSEICONVIU = 2400, │ │ │ │ │ -255 TDSEICONVAVAIL = 2401, │ │ │ │ │ -256 TDSEICONVO = 2402, │ │ │ │ │ -257 TDSEICONVI = 2403, │ │ │ │ │ -258 TDSEICONV2BIG = 2404, │ │ │ │ │ -259 TDSEPORTINSTANCE = 2500, │ │ │ │ │ -260 TDSESYNC = 20001, │ │ │ │ │ -261 TDSEFCON = 20002, │ │ │ │ │ -262 TDSETIME = 20003, │ │ │ │ │ -263 TDSEREAD = 20004, │ │ │ │ │ -264 TDSEWRIT = 20006, │ │ │ │ │ -265 TDSESOCK = 20008, │ │ │ │ │ -266 TDSECONN = 20009, │ │ │ │ │ -267 TDSEMEM = 20010, │ │ │ │ │ -268 TDSEINTF = 20012, /* Server name not found in interface file */ │ │ │ │ │ -269 TDSEUHST = 20013, /* Unknown host machine name. */ │ │ │ │ │ -270 TDSEPWD = 20014, │ │ │ │ │ -271 TDSESEOF = 20017, │ │ │ │ │ -272 TDSERPND = 20019, │ │ │ │ │ -273 TDSEBTOK = 20020, │ │ │ │ │ -274 TDSEOOB = 20022, │ │ │ │ │ -275 TDSECLOS = 20056, │ │ │ │ │ -276 TDSEUSCT = 20058, │ │ │ │ │ -277 TDSEUTDS = 20146, │ │ │ │ │ -278 TDSEEUNR = 20185, │ │ │ │ │ -279 TDSECAP = 20203, │ │ │ │ │ -280 TDSENEG = 20210, │ │ │ │ │ -281 TDSEUMSG = 20212, │ │ │ │ │ -282 TDSECAPTYP = 20213, │ │ │ │ │ -283 TDSECONF = 20214, │ │ │ │ │ -284 TDSEBPROBADTYP = 20250, │ │ │ │ │ -285 TDSECLOSEIN = 20292 │ │ │ │ │ -286} TDSERRNO; │ │ │ │ │ -287 │ │ │ │ │ -288 │ │ │ │ │ -289enum { │ │ │ │ │ -290 TDS_CUR_ISTAT_UNUSED = 0x00, │ │ │ │ │ -291 TDS_CUR_ISTAT_DECLARED = 0x01, │ │ │ │ │ -292 TDS_CUR_ISTAT_OPEN = 0x02, │ │ │ │ │ -293 TDS_CUR_ISTAT_CLOSED = 0x04, │ │ │ │ │ -294 TDS_CUR_ISTAT_RDONLY = 0x08, │ │ │ │ │ -295 TDS_CUR_ISTAT_UPDATABLE = 0x10, │ │ │ │ │ -296 TDS_CUR_ISTAT_ROWCNT = 0x20, │ │ │ │ │ -297 TDS_CUR_ISTAT_DEALLOC = 0x40 │ │ │ │ │ -298}; │ │ │ │ │ -299 │ │ │ │ │ -300/* string types */ │ │ │ │ │ -301#define TDS_NULLTERM -9 │ │ │ │ │ -302 │ │ │ │ │ -303 │ │ │ │ │ -304typedef union tds_option_arg │ │ │ │ │ -305{ │ │ │ │ │ -306 TDS_TINYINT ti; │ │ │ │ │ -307 TDS_INT i; │ │ │ │ │ -308 TDS_CHAR *c; │ │ │ │ │ -309} TDS_OPTION_ARG; │ │ │ │ │ -310 │ │ │ │ │ -311 │ │ │ │ │ -312typedef enum tds_encryption_level { │ │ │ │ │ -313 TDS_ENCRYPTION_DEFAULT, │ │ │ │ │ -314 TDS_ENCRYPTION_OFF, │ │ │ │ │ -315 TDS_ENCRYPTION_REQUEST, │ │ │ │ │ -316 TDS_ENCRYPTION_REQUIRE, │ │ │ │ │ -317 TDS_ENCRYPTION_STRICT │ │ │ │ │ -318} TDS_ENCRYPTION_LEVEL; │ │ │ │ │ -319 │ │ │ │ │ -320/* │ │ │ │ │ -321 * TODO use system macros for optimization │ │ │ │ │ -322 * See mcrypt for reference and linux kernel source for optimization │ │ │ │ │ -323 * check if unaligned access and use fast write/read when implemented │ │ │ │ │ -324 */ │ │ │ │ │ -325#define TDS_BYTE_SWAP16(value) \ │ │ │ │ │ -326 (((((uint16_t)value)<<8) & 0xFF00u) | \ │ │ │ │ │ -327 ((((uint16_t)value)>>8) & 0x00FFu)) │ │ │ │ │ -328 │ │ │ │ │ -329#define TDS_BYTE_SWAP32(value) \ │ │ │ │ │ -330 (((((uint32_t)value)<<24) & 0xFF000000u)| \ │ │ │ │ │ -331 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \ │ │ │ │ │ -332 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \ │ │ │ │ │ -333 ((((uint32_t)value)>>24) & 0x000000FFu)) │ │ │ │ │ -334 │ │ │ │ │ -335#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_ │ │ │ │ │ -TOKEN) │ │ │ │ │ -336 │ │ │ │ │ -337enum { │ │ │ │ │ -338 TDS_TYPEFLAG_INVALID = 0, │ │ │ │ │ -339 TDS_TYPEFLAG_NULLABLE = 1, │ │ │ │ │ -340 TDS_TYPEFLAG_FIXED = 2, │ │ │ │ │ -341 TDS_TYPEFLAG_VARIABLE = 4, │ │ │ │ │ -342 TDS_TYPEFLAG_COLLATE = 8, │ │ │ │ │ -343 TDS_TYPEFLAG_ASCII = 16, │ │ │ │ │ -344 TDS_TYPEFLAG_UNICODE = 32, │ │ │ │ │ -345 TDS_TYPEFLAG_BINARY = 64, │ │ │ │ │ -346 TDS_TYPEFLAG_DATETIME = 128, │ │ │ │ │ -347 TDS_TYPEFLAG_NUMERIC = 256, │ │ │ │ │ -348 TDS_TYPEFLAG_VARIANT = 512, │ │ │ │ │ -349}; │ │ │ │ │ -350 │ │ │ │ │ -351extern const uint16_t tds_type_flags_ms[256]; │ │ │ │ │ -352#if 0 │ │ │ │ │ -353extern const uint16_t tds_type_flags_syb[256]; │ │ │ │ │ -354extern const char *const tds_type_names[256]; │ │ │ │ │ -355#endif │ │ │ │ │ -356 │ │ │ │ │ -357#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0) │ │ │ │ │ -358#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) │ │ │ │ │ -!= 0) │ │ │ │ │ -359#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) │ │ │ │ │ -!= 0) │ │ │ │ │ -360#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ │ │ │ │ │ -VARIANT) != 0) │ │ │ │ │ -361 │ │ │ │ │ -362 │ │ │ │ │ -363#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT) │ │ │ │ │ -364#define is_blob_col(x) ((x)->column_varint_size > 2) │ │ │ │ │ -365/* large type means it has a two byte size field */ │ │ │ │ │ -366/* define is_large_type(x) (x>128) */ │ │ │ │ │ -367#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL) │ │ │ │ │ -369#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) │ │ │ │ │ -!= 0) │ │ │ │ │ -370#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != │ │ │ │ │ -0) │ │ │ │ │ -371#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != │ │ │ │ │ -0) │ │ │ │ │ -372#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0) │ │ │ │ │ -373#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != │ │ │ │ │ -0) │ │ │ │ │ -374#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_ │ │ │ │ │ -TYPEFLAG_UNICODE)) != 0) │ │ │ │ │ -375#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y)) │ │ │ │ │ -376inline static bool │ │ │ │ │ -377is_tds_type_valid(int type) │ │ │ │ │ -378{ │ │ │ │ │ -379 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0; │ │ │ │ │ -380} │ │ │ │ │ -381 │ │ │ │ │ -382 │ │ │ │ │ -383#define TDS_MAX_CAPABILITY 32 │ │ │ │ │ -384#define MAXPRECISION 77 │ │ │ │ │ -385#define TDS_MAX_CONN 4096 │ │ │ │ │ -386#define TDS_MAX_DYNID_LEN 30 │ │ │ │ │ -387 │ │ │ │ │ -388/* defaults to use if no others are found */ │ │ │ │ │ -389#define TDS_DEF_SERVER "SYBASE" │ │ │ │ │ -390#define TDS_DEF_BLKSZ 512 │ │ │ │ │ -391#define TDS_DEF_CHARSET "iso_1" │ │ │ │ │ -392#define TDS_DEF_LANG "us_english" │ │ │ │ │ -393#if TDS50 │ │ │ │ │ -394#define TDS_DEFAULT_VERSION 0x500 │ │ │ │ │ -395#define TDS_DEF_PORT 4000 │ │ │ │ │ -396#elif TDS71 │ │ │ │ │ -397#define TDS_DEFAULT_VERSION 0x701 │ │ │ │ │ -398#define TDS_DEF_PORT 1433 │ │ │ │ │ -399#elif TDS72 │ │ │ │ │ -400#define TDS_DEFAULT_VERSION 0x702 │ │ │ │ │ -401#define TDS_DEF_PORT 1433 │ │ │ │ │ -402#elif TDS73 │ │ │ │ │ -403#define TDS_DEFAULT_VERSION 0x703 │ │ │ │ │ -404#define TDS_DEF_PORT 1433 │ │ │ │ │ -405#elif TDS74 │ │ │ │ │ -406#define TDS_DEFAULT_VERSION 0x704 │ │ │ │ │ -407#define TDS_DEF_PORT 1433 │ │ │ │ │ -408#else │ │ │ │ │ -409#define TDS_DEFAULT_VERSION 0x000 │ │ │ │ │ -410#define TDS_DEF_PORT 1433 │ │ │ │ │ -411#endif │ │ │ │ │ -412 │ │ │ │ │ -413/* normalized strings from freetds.conf file */ │ │ │ │ │ -414#define TDS_STR_VERSION "tds version" │ │ │ │ │ -415#define TDS_STR_BLKSZ "initial block size" │ │ │ │ │ -416#define TDS_STR_SWAPDT "swap broken dates" │ │ │ │ │ -417#define TDS_STR_DUMPFILE "dump file" │ │ │ │ │ -418#define TDS_STR_DEBUGLVL "debug level" │ │ │ │ │ -419#define TDS_STR_DEBUGFLAGS "debug flags" │ │ │ │ │ -420#define TDS_STR_TIMEOUT "timeout" │ │ │ │ │ -421#define TDS_STR_QUERY_TIMEOUT "query timeout" │ │ │ │ │ -422#define TDS_STR_CONNTIMEOUT "connect timeout" │ │ │ │ │ -423#define TDS_STR_HOSTNAME "hostname" │ │ │ │ │ -424#define TDS_STR_HOST "host" │ │ │ │ │ -425#define TDS_STR_PORT "port" │ │ │ │ │ -426#define TDS_STR_TEXTSZ "text size" │ │ │ │ │ -427/* for big endian hosts, obsolete, ignored */ │ │ │ │ │ -428#define TDS_STR_EMUL_LE "emulate little endian" │ │ │ │ │ -429#define TDS_STR_CHARSET "charset" │ │ │ │ │ -430#define TDS_STR_CLCHARSET "client charset" │ │ │ │ │ -431#define TDS_STR_USE_UTF_16 "use utf-16" │ │ │ │ │ -432#define TDS_STR_LANGUAGE "language" │ │ │ │ │ -433#define TDS_STR_APPENDMODE "dump file append" │ │ │ │ │ -434#define TDS_STR_DATETIMEFMT "date format" │ │ │ │ │ -435#define TDS_STR_DATEFMT "date-only format" │ │ │ │ │ -436#define TDS_STR_TIMEFMT "time-only format" │ │ │ │ │ -437#define TDS_STR_INSTANCE "instance" │ │ │ │ │ -438#define TDS_STR_ASA_DATABASE "asa database" │ │ │ │ │ -439#define TDS_STR_DATABASE "database" │ │ │ │ │ -440#define TDS_STR_ENCRYPTION "encryption" │ │ │ │ │ -441#define TDS_STR_USENTLMV2 "use ntlmv2" │ │ │ │ │ -442#define TDS_STR_USELANMAN "use lanman" │ │ │ │ │ -443/* conf values */ │ │ │ │ │ -444#define TDS_STR_ENCRYPTION_OFF "off" │ │ │ │ │ -445#define TDS_STR_ENCRYPTION_REQUEST "request" │ │ │ │ │ -446#define TDS_STR_ENCRYPTION_REQUIRE "require" │ │ │ │ │ -447#define TDS_STR_ENCRYPTION_STRICT "strict" │ │ │ │ │ -448/* Defines to enable optional GSSAPI delegation */ │ │ │ │ │ -449#define TDS_GSSAPI_DELEGATION "enable gssapi delegation" │ │ │ │ │ -450/* Mutual authentication */ │ │ │ │ │ -451#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication" │ │ │ │ │ -452/* Kerberos realm name */ │ │ │ │ │ -453#define TDS_STR_REALM "realm" │ │ │ │ │ -454/* Kerberos SPN */ │ │ │ │ │ -455#define TDS_STR_SPN "spn" │ │ │ │ │ -456/* CA file */ │ │ │ │ │ -457#define TDS_STR_CAFILE "ca file" │ │ │ │ │ -458/* CRL file */ │ │ │ │ │ -459#define TDS_STR_CRLFILE "crl file" │ │ │ │ │ -460/* check SSL hostname */ │ │ │ │ │ -461#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname" │ │ │ │ │ -462/* SSL hostname to check certificate */ │ │ │ │ │ -463#define TDS_STR_SSLHOSTNAME "certificate hostname" │ │ │ │ │ -464/* database filename to attach on login (MSSQL) */ │ │ │ │ │ -465#define TDS_STR_DBFILENAME "database filename" │ │ │ │ │ -466/* Application Intent MSSQL 2012 support */ │ │ │ │ │ -467#define TDS_STR_READONLY_INTENT "read-only intent" │ │ │ │ │ -468/* configurable cipher suite to send to openssl's SSL_set_cipher_list() │ │ │ │ │ -function */ │ │ │ │ │ -469#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers" │ │ │ │ │ -470/* enable old TLS v1, required for instance if you are using a really old │ │ │ │ │ -Windows XP */ │ │ │ │ │ -471#define TDS_STR_ENABLE_TLS_V1 "enable tls v1" │ │ │ │ │ -472 │ │ │ │ │ -473 │ │ │ │ │ -474/* TODO do a better check for alignment than this */ │ │ │ │ │ -475typedef union │ │ │ │ │ -476{ │ │ │ │ │ -477 void *p; │ │ │ │ │ -478 int i; │ │ │ │ │ -479 int64_t ui; │ │ │ │ │ -480} tds_align_struct; │ │ │ │ │ -481 │ │ │ │ │ -482#define TDS_ALIGN_SIZE sizeof(tds_align_struct) │ │ │ │ │ -483 │ │ │ │ │ -484typedef struct tds_capability_type │ │ │ │ │ -485{ │ │ │ │ │ -486 unsigned char type; │ │ │ │ │ -487 unsigned char len; /* always sizeof(values) */ │ │ │ │ │ -488 unsigned char values[TDS_MAX_CAPABILITY/2-2]; │ │ │ │ │ -489} TDS_CAPABILITY_TYPE; │ │ │ │ │ -490 │ │ │ │ │ -491typedef struct tds_capabilities │ │ │ │ │ -492{ │ │ │ │ │ -493 TDS_CAPABILITY_TYPE types[2]; │ │ │ │ │ -494} TDS_CAPABILITIES; │ │ │ │ │ -495 │ │ │ │ │ -496#define TDS_MAX_LOGIN_STR_SZ 128 │ │ │ │ │ -497typedef struct tds_login │ │ │ │ │ -498{ │ │ │ │ │ -499 DSTR server_name; │ │ │ │ │ -500 int port; │ │ │ │ │ -501 TDS_USMALLINT tds_version; │ │ │ │ │ -502 int block_size; │ │ │ │ │ -503 DSTR language; /* e.g. us-english */ │ │ │ │ │ -504 DSTR server_charset; │ │ │ │ │ -505 TDS_INT connect_timeout; │ │ │ │ │ -506 DSTR client_host_name; │ │ │ │ │ -507 DSTR server_host_name; │ │ │ │ │ -508 DSTR server_realm_name; │ │ │ │ │ -509 DSTR server_spn; │ │ │ │ │ -510 DSTR db_filename; │ │ │ │ │ -511 DSTR cafile; │ │ │ │ │ -512 DSTR crlfile; │ │ │ │ │ -513 DSTR certificate_host_name; │ │ │ │ │ -514 DSTR openssl_ciphers; │ │ │ │ │ -515 DSTR app_name; │ │ │ │ │ -516 DSTR user_name; │ │ │ │ │ -517 DSTR password; │ │ │ │ │ -518 DSTR new_password; │ │ │ │ │ -520 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */ │ │ │ │ │ -521 TDS_TINYINT encryption_level; │ │ │ │ │ -522 │ │ │ │ │ -523 TDS_INT query_timeout; │ │ │ │ │ -524 TDS_CAPABILITIES capabilities; │ │ │ │ │ -525 DSTR client_charset; │ │ │ │ │ -526 DSTR database; │ │ │ │ │ -527 │ │ │ │ │ -528 struct addrinfo *ip_addrs; │ │ │ │ │ -529 DSTR instance_name; │ │ │ │ │ -530 tds_dir_char *dump_file; │ │ │ │ │ -531 int debug_flags; │ │ │ │ │ -532 int text_size; │ │ │ │ │ -533 DSTR routing_address; │ │ │ │ │ -534 uint16_t routing_port; │ │ │ │ │ -535 │ │ │ │ │ -536 unsigned char option_flag2; │ │ │ │ │ -537 │ │ │ │ │ -538 unsigned int bulk_copy:1; │ │ │ │ │ -539 unsigned int suppress_language:1; │ │ │ │ │ -540 unsigned int gssapi_use_delegation:1; │ │ │ │ │ -541 unsigned int mutual_authentication:1; │ │ │ │ │ -542 unsigned int use_ntlmv2:1; │ │ │ │ │ -543 unsigned int use_ntlmv2_specified:1; │ │ │ │ │ -544 unsigned int use_lanman:1; │ │ │ │ │ -545 unsigned int mars:1; │ │ │ │ │ -546 unsigned int use_utf16:1; │ │ │ │ │ -547 unsigned int use_new_password:1; │ │ │ │ │ -548 unsigned int valid_configuration:1; │ │ │ │ │ -549 unsigned int check_ssl_hostname:1; │ │ │ │ │ -550 unsigned int readonly_intent:1; │ │ │ │ │ -551 unsigned int enable_tls_v1:1; │ │ │ │ │ -552 unsigned int enable_tls_v1_specified:1; │ │ │ │ │ -553 unsigned int server_is_valid:1; │ │ │ │ │ -554} TDSLOGIN; │ │ │ │ │ -555 │ │ │ │ │ -556typedef struct tds_headers │ │ │ │ │ -557{ │ │ │ │ │ -558 const char *qn_options; │ │ │ │ │ -559 const char *qn_msgtext; │ │ │ │ │ -560 TDS_INT qn_timeout; │ │ │ │ │ -561 /* TDS 7.4+: trace activity ID char[20] */ │ │ │ │ │ -562} TDSHEADERS; │ │ │ │ │ -563 │ │ │ │ │ -564typedef struct tds_locale │ │ │ │ │ -565{ │ │ │ │ │ -566 char *language; │ │ │ │ │ -567 char *server_charset; │ │ │ │ │ -568 char *datetime_fmt; │ │ │ │ │ -569 char *date_fmt; │ │ │ │ │ -570 char *time_fmt; │ │ │ │ │ -571} TDSLOCALE; │ │ │ │ │ -572 │ │ │ │ │ -577typedef struct tds_blob │ │ │ │ │ -578{ │ │ │ │ │ -579 TDS_CHAR *textvalue; │ │ │ │ │ -580 TDS_CHAR textptr[16]; │ │ │ │ │ -581 TDS_CHAR timestamp[8]; │ │ │ │ │ -582 bool valid_ptr; │ │ │ │ │ -583} TDSBLOB; │ │ │ │ │ -584 │ │ │ │ │ -588typedef struct tds_variant │ │ │ │ │ -589{ │ │ │ │ │ -590 /* this MUST have same position and place of textvalue in tds_blob */ │ │ │ │ │ -591 TDS_CHAR *data; │ │ │ │ │ -592 TDS_INT size; │ │ │ │ │ -593 TDS_INT data_len; │ │ │ │ │ -594 TDS_SERVER_TYPE type; │ │ │ │ │ -595 TDS_UCHAR collation[5]; │ │ │ │ │ -596} TDSVARIANT; │ │ │ │ │ -597 │ │ │ │ │ -602typedef struct tds_encoding │ │ │ │ │ -603{ │ │ │ │ │ -605 const char *name; │ │ │ │ │ -606 unsigned char min_bytes_per_char; │ │ │ │ │ -607 unsigned char max_bytes_per_char; │ │ │ │ │ -609 unsigned char canonic; │ │ │ │ │ -610} TDS_ENCODING; │ │ │ │ │ -611 │ │ │ │ │ -612typedef struct tds_bcpcoldata │ │ │ │ │ -613{ │ │ │ │ │ -614 TDS_UCHAR *data; │ │ │ │ │ -615 TDS_INT datalen; │ │ │ │ │ -616 bool is_null; │ │ │ │ │ -617} BCPCOLDATA; │ │ │ │ │ -618 │ │ │ │ │ -619 │ │ │ │ │ -620typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ -621typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ -622typedef TDS_INT tds_func_row_len(TDSCOLUMN *col); │ │ │ │ │ -623typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ -624typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7); │ │ │ │ │ -625typedef int tds_func_check(const TDSCOLUMN *col); │ │ │ │ │ -626 │ │ │ │ │ -627typedef struct tds_column_funcs │ │ │ │ │ -628{ │ │ │ │ │ -629 tds_func_get_info *get_info; │ │ │ │ │ -630 tds_func_get_data *get_data; │ │ │ │ │ -631 tds_func_row_len *row_len; │ │ │ │ │ -637 tds_func_put_info *put_info; │ │ │ │ │ -647 tds_func_put_data *put_data; │ │ │ │ │ -648#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -663 tds_func_check *check; │ │ │ │ │ -664#endif │ │ │ │ │ -665#if 0 │ │ │ │ │ -666 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ -667#endif │ │ │ │ │ -668} TDSCOLUMNFUNCS; │ │ │ │ │ -669 │ │ │ │ │ -673struct tds_column │ │ │ │ │ -674{ │ │ │ │ │ -675 const TDSCOLUMNFUNCS *funcs; │ │ │ │ │ -676 TDS_INT column_usertype; │ │ │ │ │ -677 TDS_INT column_flags; │ │ │ │ │ -678 │ │ │ │ │ -679 TDS_INT column_size; │ │ │ │ │ -681 TDS_SERVER_TYPE column_type; │ │ │ │ │ -686 TDS_TINYINT column_varint_size; │ │ │ │ │ -688 TDS_TINYINT column_prec; │ │ │ │ │ -689 TDS_TINYINT column_scale; │ │ │ │ │ -691 struct │ │ │ │ │ -692 { │ │ │ │ │ -693 TDS_SERVER_TYPE column_type; │ │ │ │ │ -694 TDS_INT column_size; │ │ │ │ │ -695 } on_server; │ │ │ │ │ -696 │ │ │ │ │ -697 TDSICONV *char_conv; │ │ │ │ │ -699 DSTR table_name; │ │ │ │ │ -700 DSTR column_name; │ │ │ │ │ -701 DSTR table_column_name; │ │ │ │ │ -702 │ │ │ │ │ -703 unsigned char *column_data; │ │ │ │ │ -704 void (*column_data_free)(struct tds_column *column); │ │ │ │ │ -705 unsigned char column_nullable:1; │ │ │ │ │ -706 unsigned char column_writeable:1; │ │ │ │ │ -707 unsigned char column_identity:1; │ │ │ │ │ -708 unsigned char column_key:1; │ │ │ │ │ -709 unsigned char column_hidden:1; │ │ │ │ │ -710 unsigned char column_output:1; │ │ │ │ │ -711 unsigned char column_timestamp:1; │ │ │ │ │ -712 unsigned char column_computed:1; │ │ │ │ │ -713 TDS_UCHAR column_collation[5]; │ │ │ │ │ -714 │ │ │ │ │ -715 /* additional fields flags for compute results */ │ │ │ │ │ -716 TDS_SMALLINT column_operand; │ │ │ │ │ -717 TDS_TINYINT column_operator; │ │ │ │ │ -718 │ │ │ │ │ -719 /* FIXME this is data related, not column */ │ │ │ │ │ -721 TDS_INT column_cur_size; │ │ │ │ │ -722 │ │ │ │ │ -723 /* related to binding or info stored by client libraries */ │ │ │ │ │ -724 /* FIXME find a best place to store these data, some are unused */ │ │ │ │ │ -725 TDS_SMALLINT column_bindtype; │ │ │ │ │ -726 TDS_SMALLINT column_bindfmt; │ │ │ │ │ -727 TDS_INT column_bindlen; │ │ │ │ │ -728 TDS_SMALLINT *column_nullbind; │ │ │ │ │ -729 TDS_CHAR *column_varaddr; │ │ │ │ │ -730 TDS_INT *column_lenbind; │ │ │ │ │ -731 TDS_INT column_textpos; │ │ │ │ │ -732 TDS_INT column_text_sqlgetdatapos; │ │ │ │ │ -733 TDS_CHAR column_text_sqlputdatainfo; │ │ │ │ │ -734 unsigned char column_iconv_left; │ │ │ │ │ -735 char column_iconv_buf[9]; │ │ │ │ │ -736 │ │ │ │ │ -737 BCPCOLDATA *bcp_column_data; │ │ │ │ │ -746 TDS_INT bcp_prefix_len; │ │ │ │ │ -747 TDS_INT bcp_term_len; │ │ │ │ │ -748 TDS_CHAR *bcp_terminator; │ │ │ │ │ -749}; │ │ │ │ │ -750 │ │ │ │ │ -751 │ │ │ │ │ -753typedef struct tds_result_info │ │ │ │ │ -754{ │ │ │ │ │ -755 /* TODO those fields can became a struct */ │ │ │ │ │ -756 TDSCOLUMN **columns; │ │ │ │ │ -757 TDS_USMALLINT num_cols; │ │ │ │ │ -758 TDS_USMALLINT computeid; │ │ │ │ │ -759 TDS_INT ref_count; │ │ │ │ │ -760 TDSSOCKET *attached_to; │ │ │ │ │ -761 unsigned char *current_row; │ │ │ │ │ -762 void (*row_free)(struct tds_result_info* result, unsigned char *row); │ │ │ │ │ -763 TDS_INT row_size; │ │ │ │ │ -764 │ │ │ │ │ -765 TDS_SMALLINT *bycolumns; │ │ │ │ │ -766 TDS_USMALLINT by_cols; │ │ │ │ │ -767 bool rows_exist; │ │ │ │ │ -768 /* TODO remove ?? used only in dblib */ │ │ │ │ │ -769 bool more_results; │ │ │ │ │ -770} TDSRESULTINFO; │ │ │ │ │ -771 │ │ │ │ │ -773typedef enum tds_states │ │ │ │ │ -774{ │ │ │ │ │ -775 TDS_IDLE, │ │ │ │ │ -776 TDS_WRITING, │ │ │ │ │ -777 TDS_SENDING, │ │ │ │ │ -778 TDS_PENDING, │ │ │ │ │ -779 TDS_READING, │ │ │ │ │ -780 TDS_DEAD │ │ │ │ │ -781} TDS_STATE; │ │ │ │ │ -782 │ │ │ │ │ -783typedef enum tds_operations │ │ │ │ │ -784{ │ │ │ │ │ -785 TDS_OP_NONE = 0, │ │ │ │ │ -786 │ │ │ │ │ -787 /* MSSQL operations, these matches protocol definitions */ │ │ │ │ │ -788 TDS_OP_CURSOR = TDS_SP_CURSOR, │ │ │ │ │ -789 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN, │ │ │ │ │ -790 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE, │ │ │ │ │ -791 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE, │ │ │ │ │ -792 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC, │ │ │ │ │ -793 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE, │ │ │ │ │ -794 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH, │ │ │ │ │ -795 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION, │ │ │ │ │ -796 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE, │ │ │ │ │ -797 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL, │ │ │ │ │ -798 TDS_OP_PREPARE = TDS_SP_PREPARE, │ │ │ │ │ -799 TDS_OP_EXECUTE = TDS_SP_EXECUTE, │ │ │ │ │ -800 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC, │ │ │ │ │ -801 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC, │ │ │ │ │ -802 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE, │ │ │ │ │ -803 │ │ │ │ │ -804 /* sybase operations */ │ │ │ │ │ -805 TDS_OP_DYN_DEALLOC = 100, │ │ │ │ │ -806} TDS_OPERATION; │ │ │ │ │ -807 │ │ │ │ │ -808#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11) │ │ │ │ │ -809#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10) │ │ │ │ │ -810#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7) │ │ │ │ │ -811#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6) │ │ │ │ │ -812#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5) │ │ │ │ │ -813#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4) │ │ │ │ │ -814#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3) │ │ │ │ │ -815#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2) │ │ │ │ │ -816#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1) │ │ │ │ │ -817 │ │ │ │ │ -818#define TDS_DBGFLAG_FUNC 0x80 │ │ │ │ │ -819#define TDS_DBGFLAG_INFO2 0x40 │ │ │ │ │ -820#define TDS_DBGFLAG_INFO1 0x20 │ │ │ │ │ -821#define TDS_DBGFLAG_NETWORK 0x10 │ │ │ │ │ -822#define TDS_DBGFLAG_WARN 0x08 │ │ │ │ │ -823#define TDS_DBGFLAG_ERROR 0x04 │ │ │ │ │ -824#define TDS_DBGFLAG_SEVERE 0x02 │ │ │ │ │ -825#define TDS_DBGFLAG_ALL 0xfff │ │ │ │ │ -826#define TDS_DBGFLAG_LOGIN 0x0800 │ │ │ │ │ -827#define TDS_DBGFLAG_HEADER 0x0400 │ │ │ │ │ -828#define TDS_DBGFLAG_PID 0x1000 │ │ │ │ │ -829#define TDS_DBGFLAG_TIME 0x2000 │ │ │ │ │ -830#define TDS_DBGFLAG_SOURCE 0x4000 │ │ │ │ │ -831#define TDS_DBGFLAG_THREAD 0x8000 │ │ │ │ │ -832 │ │ │ │ │ -833#if 0 │ │ │ │ │ -839enum TDS_DBG_LOG_STATE │ │ │ │ │ -840{ │ │ │ │ │ -841 TDS_DBG_LOGIN = (1 << 0) │ │ │ │ │ -843 , TDS_DBG_API = (1 << 1) │ │ │ │ │ -844 , TDS_DBG_ASYNC = (1 << 2) │ │ │ │ │ -845 , TDS_DBG_DIAG = (1 << 3) │ │ │ │ │ -846 , TDS_DBG_error = (1 << 4) │ │ │ │ │ -847 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */ │ │ │ │ │ -848 /* Log FreeTDS runtime/logic error occurs. */ │ │ │ │ │ -849 , TDS_DBG_PACKET = (1 << 5) │ │ │ │ │ -850 , TDS_DBG_LIBTDS = (1 << 6) │ │ │ │ │ -851 , TDS_DBG_CONFIG = (1 << 7) │ │ │ │ │ -852 , TDS_DBG_DEFAULT = 0xFE │ │ │ │ │ -853}; │ │ │ │ │ -854#endif │ │ │ │ │ -855 │ │ │ │ │ -856typedef struct tds_result_info TDSCOMPUTEINFO; │ │ │ │ │ -857 │ │ │ │ │ -858typedef TDSRESULTINFO TDSPARAMINFO; │ │ │ │ │ -859 │ │ │ │ │ -860typedef struct tds_message │ │ │ │ │ -861{ │ │ │ │ │ -862 TDS_CHAR *server; │ │ │ │ │ -863 TDS_CHAR *message; │ │ │ │ │ -864 TDS_CHAR *proc_name; │ │ │ │ │ -865 TDS_CHAR *sql_state; │ │ │ │ │ -866 TDS_INT msgno; │ │ │ │ │ -867 TDS_INT line_number; │ │ │ │ │ -868 /* -1 .. 255 */ │ │ │ │ │ -869 TDS_SMALLINT state; │ │ │ │ │ -870 TDS_TINYINT priv_msg_type; │ │ │ │ │ -871 TDS_TINYINT severity; │ │ │ │ │ -872 /* for library-generated errors */ │ │ │ │ │ -873 int oserr; │ │ │ │ │ -874} TDSMESSAGE; │ │ │ │ │ -875 │ │ │ │ │ -876typedef struct tds_upd_col │ │ │ │ │ -877{ │ │ │ │ │ -878 struct tds_upd_col *next; │ │ │ │ │ -879 TDS_INT colnamelength; │ │ │ │ │ -880 char * columnname; │ │ │ │ │ -881} TDSUPDCOL; │ │ │ │ │ -882 │ │ │ │ │ -883typedef enum { │ │ │ │ │ -884 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */ │ │ │ │ │ -885 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */ │ │ │ │ │ -886 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */ │ │ │ │ │ -887 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */ │ │ │ │ │ -888} TDS_CURSOR_STATE; │ │ │ │ │ -889 │ │ │ │ │ -890typedef struct tds_cursor_status │ │ │ │ │ -891{ │ │ │ │ │ -892 TDS_CURSOR_STATE declare; │ │ │ │ │ -893 TDS_CURSOR_STATE cursor_row; │ │ │ │ │ -894 TDS_CURSOR_STATE open; │ │ │ │ │ -895 TDS_CURSOR_STATE fetch; │ │ │ │ │ -896 TDS_CURSOR_STATE close; │ │ │ │ │ -897 TDS_CURSOR_STATE dealloc; │ │ │ │ │ -898} TDS_CURSOR_STATUS; │ │ │ │ │ -899 │ │ │ │ │ -900typedef enum tds_cursor_operation │ │ │ │ │ -901{ │ │ │ │ │ -902 TDS_CURSOR_POSITION = 0, │ │ │ │ │ -903 TDS_CURSOR_UPDATE = 1, │ │ │ │ │ -904 TDS_CURSOR_DELETE = 2, │ │ │ │ │ -905 TDS_CURSOR_INSERT = 4 │ │ │ │ │ -906} TDS_CURSOR_OPERATION; │ │ │ │ │ -907 │ │ │ │ │ -908typedef enum tds_cursor_fetch │ │ │ │ │ -909{ │ │ │ │ │ -910 TDS_CURSOR_FETCH_NEXT = 1, │ │ │ │ │ -911 TDS_CURSOR_FETCH_PREV, │ │ │ │ │ -912 TDS_CURSOR_FETCH_FIRST, │ │ │ │ │ -913 TDS_CURSOR_FETCH_LAST, │ │ │ │ │ -914 TDS_CURSOR_FETCH_ABSOLUTE, │ │ │ │ │ -915 TDS_CURSOR_FETCH_RELATIVE │ │ │ │ │ -916} TDS_CURSOR_FETCH; │ │ │ │ │ -917 │ │ │ │ │ -921typedef struct tds_cursor │ │ │ │ │ -922{ │ │ │ │ │ -923 struct tds_cursor *next; │ │ │ │ │ -924 TDS_INT ref_count; │ │ │ │ │ -925 char *cursor_name; │ │ │ │ │ -926 TDS_INT cursor_id; │ │ │ │ │ -927 TDS_TINYINT options; │ │ │ │ │ -931 bool defer_close; │ │ │ │ │ -932 char *query; │ │ │ │ │ -933 /* TODO for updatable columns */ │ │ │ │ │ -934 /* TDS_TINYINT number_upd_cols; */ │ │ │ │ │ -935 /* TDSUPDCOL *cur_col_list; */ │ │ │ │ │ -936 TDS_INT cursor_rows; │ │ │ │ │ -937 /* TDSPARAMINFO *params; */ │ │ │ │ │ -938 TDS_CURSOR_STATUS status; │ │ │ │ │ -939 TDS_USMALLINT srv_status; │ │ │ │ │ -940 TDSRESULTINFO *res_info; │ │ │ │ │ -941 TDS_INT type, concurrency; │ │ │ │ │ -942} TDSCURSOR; │ │ │ │ │ -943 │ │ │ │ │ -947typedef struct tds_env │ │ │ │ │ -948{ │ │ │ │ │ -950 int block_size; │ │ │ │ │ -951 char *language; │ │ │ │ │ -953 char *charset; │ │ │ │ │ -955 char *database; │ │ │ │ │ -956} TDSENV; │ │ │ │ │ -957 │ │ │ │ │ -961typedef struct tds_dynamic │ │ │ │ │ -962{ │ │ │ │ │ -963 struct tds_dynamic *next; │ │ │ │ │ -964 TDS_INT ref_count; │ │ │ │ │ -966 TDS_INT num_id; │ │ │ │ │ -972 char id[30]; │ │ │ │ │ -978 bool emulated; │ │ │ │ │ -982 bool defer_close; │ │ │ │ │ -983 /* int dyn_state; */ /* TODO use it */ │ │ │ │ │ -984 TDSPARAMINFO *res_info; │ │ │ │ │ -992 TDSPARAMINFO *params; │ │ │ │ │ -994 char *query; │ │ │ │ │ -995} TDSDYNAMIC; │ │ │ │ │ -996 │ │ │ │ │ -997typedef enum { │ │ │ │ │ -998 TDS_MULTIPLE_QUERY, │ │ │ │ │ -999 TDS_MULTIPLE_EXECUTE, │ │ │ │ │ -1000 TDS_MULTIPLE_RPC │ │ │ │ │ -1001} TDS_MULTIPLE_TYPE; │ │ │ │ │ -1002 │ │ │ │ │ -1003typedef struct tds_multiple │ │ │ │ │ -1004{ │ │ │ │ │ -1005 TDS_MULTIPLE_TYPE type; │ │ │ │ │ -1006 unsigned int flags; │ │ │ │ │ -1007} TDSMULTIPLE; │ │ │ │ │ -1008 │ │ │ │ │ -1009/* forward declaration */ │ │ │ │ │ -1010typedef struct tds_context TDSCONTEXT; │ │ │ │ │ -1011typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE │ │ │ │ │ -*); │ │ │ │ │ -1012typedef int (*int_handler_t) (void *); │ │ │ │ │ -1013 │ │ │ │ │ -1014struct tds_context │ │ │ │ │ -1015{ │ │ │ │ │ -1016 TDSLOCALE *locale; │ │ │ │ │ -1017 void *parent; │ │ │ │ │ -1018 /* handlers */ │ │ │ │ │ -1019 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *); │ │ │ │ │ -1020 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *); │ │ │ │ │ -1021 int (*int_handler) (void *); │ │ │ │ │ -1022 bool money_use_2_digits; │ │ │ │ │ -1023}; │ │ │ │ │ -1024 │ │ │ │ │ -1025enum TDS_ICONV_ENTRY │ │ │ │ │ -1026{ │ │ │ │ │ -1027 client2ucs2 │ │ │ │ │ -1028 , client2server_chardata │ │ │ │ │ -1029 , initial_char_conv_count /* keep last */ │ │ │ │ │ -1030}; │ │ │ │ │ -1031 │ │ │ │ │ -1032typedef struct tds_authentication │ │ │ │ │ -1033{ │ │ │ │ │ -1034 uint8_t *packet; │ │ │ │ │ -1035 int packet_len; │ │ │ │ │ -1036 /* TDS_MSG_TOKEN type, for TDS5 */ │ │ │ │ │ -1037 uint16_t msg_type; │ │ │ │ │ -1038 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth); │ │ │ │ │ -1039 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, │ │ │ │ │ -size_t len); │ │ │ │ │ -1040} TDSAUTHENTICATION; │ │ │ │ │ -1041 │ │ │ │ │ -1042typedef struct tds_packet │ │ │ │ │ -1043{ │ │ │ │ │ -1044 struct tds_packet *next; │ │ │ │ │ -1045 uint16_t sid; │ │ │ │ │ -1046 │ │ │ │ │ -1047#if ENABLE_ODBC_MARS │ │ │ │ │ -1051 uint8_t data_start; │ │ │ │ │ -1052#endif │ │ │ │ │ -1053 │ │ │ │ │ -1057 unsigned data_len; │ │ │ │ │ -1058 unsigned capacity; │ │ │ │ │ -1059 unsigned char buf[1]; │ │ │ │ │ -1060} TDSPACKET; │ │ │ │ │ -1061 │ │ │ │ │ -1062#if ENABLE_ODBC_MARS │ │ │ │ │ -1063#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while │ │ │ │ │ -(0) │ │ │ │ │ -1064#define tds_packet_get_data_start(pkt) ((pkt)->data_start) │ │ │ │ │ -1065#else │ │ │ │ │ -1066#define tds_packet_zero_data_start(pkt) do { } while(0) │ │ │ │ │ -1067#define tds_packet_get_data_start(pkt) 0 │ │ │ │ │ -1068#endif │ │ │ │ │ -1069 │ │ │ │ │ -1070typedef struct tds_poll_wakeup │ │ │ │ │ -1071{ │ │ │ │ │ -1072 TDS_SYS_SOCKET s_signal, s_signaled; │ │ │ │ │ -1073} TDSPOLLWAKEUP; │ │ │ │ │ -1074 │ │ │ │ │ -1075/* field related to connection */ │ │ │ │ │ -1076struct tds_connection │ │ │ │ │ -1077{ │ │ │ │ │ -1078 TDS_USMALLINT tds_version; │ │ │ │ │ -1079 bool corked; │ │ │ │ │ -1080 TDS_UINT product_version; │ │ │ │ │ -1081 char *product_name; │ │ │ │ │ -1082 │ │ │ │ │ -1083 TDS_SYS_SOCKET s; │ │ │ │ │ -1084 TDSPOLLWAKEUP wakeup; │ │ │ │ │ -1085 const TDSCONTEXT *tds_ctx; │ │ │ │ │ -1086 │ │ │ │ │ -1088 TDSENV env; │ │ │ │ │ -1089 │ │ │ │ │ -1094 TDSCURSOR *cursors; │ │ │ │ │ -1099 TDSDYNAMIC *dyns; │ │ │ │ │ -1100 │ │ │ │ │ -1101 int char_conv_count; │ │ │ │ │ -1102 TDSICONV **char_convs; │ │ │ │ │ -1103 │ │ │ │ │ -1104 TDS_UCHAR collation[5]; │ │ │ │ │ -1105 TDS_UCHAR tds72_transaction[8]; │ │ │ │ │ -1106 │ │ │ │ │ -1107 TDS_CAPABILITIES capabilities; │ │ │ │ │ -1108 unsigned int use_iconv:1; │ │ │ │ │ -1109 unsigned int tds71rev1:1; │ │ │ │ │ -1110 unsigned int pending_close:1; │ │ │ │ │ -1111 unsigned int encrypt_single_packet:1; │ │ │ │ │ -1112#if ENABLE_ODBC_MARS │ │ │ │ │ -1113 unsigned int mars:1; │ │ │ │ │ -1114 │ │ │ │ │ -1115 TDSSOCKET *in_net_tds; │ │ │ │ │ -1116 TDSPACKET *packets; │ │ │ │ │ -1117 TDSPACKET *recv_packet; │ │ │ │ │ -1118 TDSPACKET *send_packets; │ │ │ │ │ -1119 unsigned send_pos, recv_pos; │ │ │ │ │ -1120 │ │ │ │ │ -1121#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1) │ │ │ │ │ -1122#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1) │ │ │ │ │ -1123 struct tds_socket **sessions; │ │ │ │ │ -1124 unsigned num_sessions; │ │ │ │ │ -1125#endif │ │ │ │ │ -1126 tds_mutex list_mtx; │ │ │ │ │ -1127 │ │ │ │ │ -1128 unsigned num_cached_packets; │ │ │ │ │ -1129 TDSPACKET *packet_cache; │ │ │ │ │ -1130 │ │ │ │ │ -1131 int spid; │ │ │ │ │ -1132 int client_spid; │ │ │ │ │ -1133 │ │ │ │ │ -1138 uint8_t ncharsize; │ │ │ │ │ -1139 │ │ │ │ │ -1145 uint8_t unicharsize; │ │ │ │ │ -1146 │ │ │ │ │ -1147 void *tls_session; │ │ │ │ │ -1148#if defined(HAVE_GNUTLS) │ │ │ │ │ -1149 void *tls_credentials; │ │ │ │ │ -1150#elif defined(HAVE_OPENSSL) │ │ │ │ │ -1151 void *tls_ctx; │ │ │ │ │ -1152#else │ │ │ │ │ -1153 void *tls_dummy; │ │ │ │ │ -1154#endif │ │ │ │ │ -1155 TDSAUTHENTICATION *authentication; │ │ │ │ │ -1156 char *server; │ │ │ │ │ -1157}; │ │ │ │ │ -1158 │ │ │ │ │ -1162struct tds_socket │ │ │ │ │ -1163{ │ │ │ │ │ -1164#if ENABLE_ODBC_MARS │ │ │ │ │ -1165 TDSCONNECTION *conn; │ │ │ │ │ -1166#else │ │ │ │ │ -1167 TDSCONNECTION conn[1]; │ │ │ │ │ -1168#endif │ │ │ │ │ -1169 │ │ │ │ │ -1170 void *parent; │ │ │ │ │ -1171 │ │ │ │ │ -1177 unsigned char *in_buf; │ │ │ │ │ -1178 │ │ │ │ │ -1185 unsigned char *out_buf; │ │ │ │ │ -1186 │ │ │ │ │ -1191 unsigned int out_buf_max; │ │ │ │ │ -1192 unsigned in_pos; │ │ │ │ │ -1193 unsigned out_pos; │ │ │ │ │ -1194 unsigned in_len; │ │ │ │ │ -1195 unsigned char in_flag; │ │ │ │ │ -1196 unsigned char out_flag; │ │ │ │ │ -1198 unsigned frozen; │ │ │ │ │ -1203 TDSPACKET *frozen_packets; │ │ │ │ │ -1204 │ │ │ │ │ -1205#if ENABLE_ODBC_MARS │ │ │ │ │ -1210 uint16_t sid; │ │ │ │ │ -1211 │ │ │ │ │ -1216 tds_condition packet_cond; │ │ │ │ │ -1217 │ │ │ │ │ -1222 TDSPACKET *sending_packet; │ │ │ │ │ -1223 TDS_UINT recv_seq; │ │ │ │ │ -1224 TDS_UINT send_seq; │ │ │ │ │ -1225 TDS_UINT recv_wnd; │ │ │ │ │ -1226 TDS_UINT send_wnd; │ │ │ │ │ -1227#endif │ │ │ │ │ -1228 /* packet we received */ │ │ │ │ │ -1229 TDSPACKET *recv_packet; │ │ │ │ │ -1231 TDSPACKET *send_packet; │ │ │ │ │ -1232 │ │ │ │ │ -1238 TDSRESULTINFO *current_results; │ │ │ │ │ -1239 TDSRESULTINFO *res_info; │ │ │ │ │ -1240 TDS_UINT num_comp_info; │ │ │ │ │ -1241 TDSCOMPUTEINFO **comp_info; │ │ │ │ │ -1242 TDSPARAMINFO *param_info; │ │ │ │ │ -1243 TDSCURSOR *cur_cursor; │ │ │ │ │ -1244 bool bulk_query; │ │ │ │ │ -1245 bool has_status; │ │ │ │ │ -1246 bool in_row; │ │ │ │ │ -1247 volatile │ │ │ │ │ -1248 unsigned char in_cancel; │ │ │ │ │ -1250 TDS_INT ret_status; │ │ │ │ │ -1251 TDS_STATE state; │ │ │ │ │ -1252 │ │ │ │ │ -1253 TDS_INT query_timeout; │ │ │ │ │ -1254 TDS_INT8 rows_affected; │ │ │ │ │ -1256 TDSDYNAMIC *cur_dyn; │ │ │ │ │ -1258 TDSLOGIN *login; │ │ │ │ │ -1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char │ │ │ │ │ -*newval); │ │ │ │ │ -1261 TDS_OPERATION current_op; │ │ │ │ │ -1262 │ │ │ │ │ -1263 int option_value; │ │ │ │ │ -1264 tds_mutex wire_mtx; │ │ │ │ │ -1265}; │ │ │ │ │ -1266 │ │ │ │ │ -1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx) │ │ │ │ │ -1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while │ │ │ │ │ -(0) │ │ │ │ │ -1269#define tds_get_parent(tds) ((tds)->parent) │ │ │ │ │ -1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0) │ │ │ │ │ -1271#define tds_get_s(tds) ((tds)->conn->s) │ │ │ │ │ -1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0) │ │ │ │ │ -1273 │ │ │ │ │ -1274typedef struct tds_tvp_row │ │ │ │ │ -1275{ │ │ │ │ │ -1276 TDSPARAMINFO *params; │ │ │ │ │ -1277 struct tds_tvp_row *next; │ │ │ │ │ -1278} TDS_TVP_ROW; │ │ │ │ │ -1279 │ │ │ │ │ -1280typedef struct tds_tvp │ │ │ │ │ -1281{ │ │ │ │ │ -1282 char *schema; │ │ │ │ │ -1283 char *name; │ │ │ │ │ -1284 TDSPARAMINFO *metadata; │ │ │ │ │ -1285 TDS_TVP_ROW *row; │ │ │ │ │ -1286} TDS_TVP; │ │ │ │ │ -1287 │ │ │ │ │ -1288 │ │ │ │ │ -1289/* config.c */ │ │ │ │ │ -1290const TDS_COMPILETIME_SETTINGS *tds_get_compiletime_settings(void); │ │ │ │ │ -1291typedef bool (*TDSCONFPARSE) (const char *option, const char *value, void │ │ │ │ │ -*param); │ │ │ │ │ -1292bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE │ │ │ │ │ -tds_conf_parse, void *parse_param); │ │ │ │ │ -1293bool tds_read_conf_file(TDSLOGIN * login, const char *server); │ │ │ │ │ -1294bool tds_parse_conf_section(const char *option, const char *value, void │ │ │ │ │ -*param); │ │ │ │ │ -1295TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE │ │ │ │ │ -* locale); │ │ │ │ │ -1296void tds_fix_login(TDSLOGIN* login); │ │ │ │ │ -1297TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login); │ │ │ │ │ -1298struct addrinfo *tds_lookup_host(const char *servername); │ │ │ │ │ -1299TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr); │ │ │ │ │ -1300const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int │ │ │ │ │ -namemax); │ │ │ │ │ -1301 │ │ │ │ │ -1302TDSRET tds_set_interfaces_file_loc(const char *interfloc); │ │ │ │ │ -1303extern const char STD_DATETIME_FMT[]; │ │ │ │ │ -1304int tds_parse_boolean(const char *value, int default_value); │ │ │ │ │ -1305int tds_config_boolean(const char *option, const char *value, TDSLOGIN * │ │ │ │ │ -login); │ │ │ │ │ -1306 │ │ │ │ │ -1307TDSLOCALE *tds_get_locale(void); │ │ │ │ │ -1308TDSRET tds_alloc_row(TDSRESULTINFO * res_info); │ │ │ │ │ -1309TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info); │ │ │ │ │ -1310BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size); │ │ │ │ │ -1311TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id); │ │ │ │ │ -1312/*@observer@*/ const char *tds_prtype(int token); │ │ │ │ │ -1313int tds_get_varint_size(TDSCONNECTION * conn, int datatype); │ │ │ │ │ -1314TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int │ │ │ │ │ -usertype); │ │ │ │ │ -1315TDSRET tds8_adjust_login(TDSLOGIN *login); │ │ │ │ │ -1316 │ │ │ │ │ -1317 │ │ │ │ │ -1318/* iconv.c */ │ │ │ │ │ -1319TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_ │ │ │ │ │ -utf16); │ │ │ │ │ -1320void tds_iconv_close(TDSCONNECTION * conn); │ │ │ │ │ -1321void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset); │ │ │ │ │ -1322void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]); │ │ │ │ │ -1323int tds_iconv_alloc(TDSCONNECTION * conn); │ │ │ │ │ -1324void tds_iconv_free(TDSCONNECTION * conn); │ │ │ │ │ -1325TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate │ │ │ │ │ -[5]); │ │ │ │ │ -1326 │ │ │ │ │ -1327 │ │ │ │ │ -1328/* mem.c */ │ │ │ │ │ -1329void tds_free_socket(TDSSOCKET * tds); │ │ │ │ │ -1330void tds_free_all_results(TDSSOCKET * tds); │ │ │ │ │ -1331void tds_free_results(TDSRESULTINFO * res_info); │ │ │ │ │ -1332void tds_free_param_results(TDSPARAMINFO * param_info); │ │ │ │ │ -1333void tds_free_param_result(TDSPARAMINFO * param_info); │ │ │ │ │ -1334void tds_free_msg(TDSMESSAGE * message); │ │ │ │ │ -1335void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor); │ │ │ │ │ -1336void tds_release_cursor(TDSCURSOR **pcursor); │ │ │ │ │ -1337void tds_free_bcp_column_data(BCPCOLDATA * coldata); │ │ │ │ │ -1338TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols); │ │ │ │ │ -1339TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT │ │ │ │ │ -num_cols, TDS_USMALLINT by_cols); │ │ │ │ │ -1340TDSCONTEXT *tds_alloc_context(void * parent); │ │ │ │ │ -1341void tds_free_context(TDSCONTEXT * locale); │ │ │ │ │ -1342TDSPARAMINFO *tds_alloc_param_result(TDSPARAMINFO * old_param); │ │ │ │ │ -1343void tds_free_input_params(TDSDYNAMIC * dyn); │ │ │ │ │ -1344void tds_release_dynamic(TDSDYNAMIC ** dyn); │ │ │ │ │ -1345inline static void │ │ │ │ │ -1346tds_release_cur_dyn(TDSSOCKET * tds) │ │ │ │ │ -1347{ │ │ │ │ │ -1348 tds_release_dynamic(&tds->cur_dyn); │ │ │ │ │ -1349} │ │ │ │ │ -1350void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn); │ │ │ │ │ -1351void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn); │ │ │ │ │ -1352TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize); │ │ │ │ │ -1353char *tds_alloc_client_sqlstate(int msgno); │ │ │ │ │ -1354char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno); │ │ │ │ │ -1355TDSLOGIN *tds_alloc_login(bool use_environment); │ │ │ │ │ -1356TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id); │ │ │ │ │ -1357void tds_free_login(TDSLOGIN * login); │ │ │ │ │ -1358TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale); │ │ │ │ │ -1359TDSLOCALE *tds_alloc_locale(void); │ │ │ │ │ -1360void *tds_alloc_param_data(TDSCOLUMN * curparam); │ │ │ │ │ -1361void tds_free_locale(TDSLOCALE * locale); │ │ │ │ │ -1362TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT │ │ │ │ │ -namelen, const char *query, TDS_INT querylen); │ │ │ │ │ -1363void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row); │ │ │ │ │ -1364TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize); │ │ │ │ │ -1365TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn); │ │ │ │ │ -1366void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info); │ │ │ │ │ -1367void tds_detach_results(TDSRESULTINFO *info); │ │ │ │ │ -1368void * tds_realloc(void **pp, size_t new_size); │ │ │ │ │ -1369#define TDS_RESIZE(p, n_elem) \ │ │ │ │ │ -1370 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem)) │ │ │ │ │ -1371 │ │ │ │ │ -1372TDSPACKET *tds_alloc_packet(void *buf, unsigned len); │ │ │ │ │ -1373TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len); │ │ │ │ │ -1374void tds_free_packets(TDSPACKET *packet); │ │ │ │ │ -1375TDSBCPINFO *tds_alloc_bcpinfo(void); │ │ │ │ │ -1376void tds_free_bcpinfo(TDSBCPINFO *bcpinfo); │ │ │ │ │ -1377void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo); │ │ │ │ │ -1378void tds_deinit_tvp(TDS_TVP *table); │ │ │ │ │ -1379 │ │ │ │ │ -1380 │ │ │ │ │ -1381/* login.c */ │ │ │ │ │ -1382void tds_set_packet(TDSLOGIN * tds_login, int packet_size); │ │ │ │ │ -1383void tds_set_port(TDSLOGIN * tds_login, int port); │ │ │ │ │ -1384bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR; │ │ │ │ │ -1385void tds_set_bulk(TDSLOGIN * tds_login, bool enabled); │ │ │ │ │ -1386bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR; │ │ │ │ │ -1387bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR; │ │ │ │ │ -1388bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR; │ │ │ │ │ -1389bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR; │ │ │ │ │ -1390bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR; │ │ │ │ │ -1391bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_ │ │ │ │ │ -WUR; │ │ │ │ │ -1392bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR; │ │ │ │ │ -1393void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_ │ │ │ │ │ -TINYINT minor_ver); │ │ │ │ │ -1394TDSRET tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ -1395 │ │ │ │ │ -1396 │ │ │ │ │ -1397/* query.c */ │ │ │ │ │ -1398void tds_start_query(TDSSOCKET *tds, unsigned char packet_type); │ │ │ │ │ -1399 │ │ │ │ │ -1400TDSRET tds_submit_query(TDSSOCKET * tds, const char *query); │ │ │ │ │ -1401TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, │ │ │ │ │ -TDSPARAMINFO * params, TDSHEADERS * head); │ │ │ │ │ -1402TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...); │ │ │ │ │ -1403TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char │ │ │ │ │ -*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params); │ │ │ │ │ -1404TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, │ │ │ │ │ -TDSPARAMINFO * params, TDSHEADERS * head); │ │ │ │ │ -1405TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char │ │ │ │ │ -*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params); │ │ │ │ │ -1406TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn); │ │ │ │ │ -1407TDSRET tds_send_cancel(TDSSOCKET * tds); │ │ │ │ │ -1408const char *tds_next_placeholder(const char *start); │ │ │ │ │ -1409int tds_count_placeholders(const char *query); │ │ │ │ │ -1410int tds_needs_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn); │ │ │ │ │ -1411TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn); │ │ │ │ │ -1412TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn); │ │ │ │ │ -1413TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * │ │ │ │ │ -params, TDSHEADERS * head); │ │ │ │ │ -1414TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_ │ │ │ │ │ -OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size); │ │ │ │ │ -1415TDSRET tds_submit_begin_tran(TDSSOCKET *tds); │ │ │ │ │ -1416TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont); │ │ │ │ │ -1417TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont); │ │ │ │ │ -1418TDSRET tds_disconnect(TDSSOCKET * tds); │ │ │ │ │ -1419size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int │ │ │ │ │ -idlen); │ │ │ │ │ -1420size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int │ │ │ │ │ -idlen); │ │ │ │ │ -1421size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int │ │ │ │ │ -len); │ │ │ │ │ -1422const char *tds_skip_comment(const char *s); │ │ │ │ │ -1423const char *tds_skip_quoted(const char *s); │ │ │ │ │ -1424size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol); │ │ │ │ │ -1425const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const │ │ │ │ │ -char *s, int len, size_t *out_len); │ │ │ │ │ -1426void tds_convert_string_free(const char *original, const char *converted); │ │ │ │ │ -1427#if !ENABLE_EXTRA_CHECKS │ │ │ │ │ -1428#define tds_convert_string_free(original, converted) \ │ │ │ │ │ -1429 do { if (original != converted) free((char*) converted); } while(0) │ │ │ │ │ -1430#endif │ │ │ │ │ -1431TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char │ │ │ │ │ -*out); │ │ │ │ │ -1432 │ │ │ │ │ -1433TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send); │ │ │ │ │ -1434TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send); │ │ │ │ │ -1435TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO │ │ │ │ │ -*params, bool *send); │ │ │ │ │ -1436TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_ │ │ │ │ │ -FETCH fetch_type, TDS_INT i_row); │ │ │ │ │ -1437TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_ │ │ │ │ │ -UINT * row_number, TDS_UINT * row_count); │ │ │ │ │ -1438TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ -1439TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ -1440TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR * │ │ │ │ │ -cursor); │ │ │ │ │ -1441TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_ │ │ │ │ │ -OPERATION op, TDS_INT i_row, TDSPARAMINFO * params); │ │ │ │ │ -1442TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ -1443 │ │ │ │ │ -1444TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_ │ │ │ │ │ -MULTIPLE_TYPE type, TDSHEADERS * head); │ │ │ │ │ -1445TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple); │ │ │ │ │ -1446TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char │ │ │ │ │ -*query, TDSPARAMINFO * params); │ │ │ │ │ -1447TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, │ │ │ │ │ -TDSDYNAMIC * dyn); │ │ │ │ │ -1448 │ │ │ │ │ -1449 │ │ │ │ │ -1450/* token.c */ │ │ │ │ │ -1451TDSRET tds_process_cancel(TDSSOCKET * tds); │ │ │ │ │ -1452TDSRET tds_process_login_tokens(TDSSOCKET * tds); │ │ │ │ │ -1453TDSRET tds_process_simple_query(TDSSOCKET * tds); │ │ │ │ │ -1454int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_ │ │ │ │ │ -OPTION tds_option, TDS_OPTION_ARG * tds_argument, │ │ │ │ │ -1455 TDS_INT * tds_argsize); │ │ │ │ │ -1456TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, │ │ │ │ │ -/*@out@*/ int *done_flags, unsigned flag); │ │ │ │ │ -1457 │ │ │ │ │ -1458 │ │ │ │ │ -1459/* data.c */ │ │ │ │ │ -1460void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_ │ │ │ │ │ -SERVER_TYPE type); │ │ │ │ │ -1461void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_ │ │ │ │ │ -SERVER_TYPE type); │ │ │ │ │ -1462#ifdef WORDS_BIGENDIAN │ │ │ │ │ -1463void tds_swap_datatype(int coltype, void *b); │ │ │ │ │ -1464#endif │ │ │ │ │ -1465 │ │ │ │ │ -1466 │ │ │ │ │ -1467/* tds_convert.c */ │ │ │ │ │ -1468TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr); │ │ │ │ │ -1469TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int │ │ │ │ │ -colsize); │ │ │ │ │ -1470extern const char tds_hex_digits[]; │ │ │ │ │ -1471 │ │ │ │ │ -1472 │ │ │ │ │ -1473/* write.c */ │ │ │ │ │ -1474int tds_init_write_buf(TDSSOCKET * tds); │ │ │ │ │ -1475int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n); │ │ │ │ │ -1476int tds_put_string(TDSSOCKET * tds, const char *buf, int len); │ │ │ │ │ -1477int tds_put_int(TDSSOCKET * tds, TDS_INT i); │ │ │ │ │ -1478int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i); │ │ │ │ │ -1479int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si); │ │ │ │ │ -1481#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti) │ │ │ │ │ -1482int tds_put_byte(TDSSOCKET * tds, unsigned char c); │ │ │ │ │ -1483TDSRET tds_flush_packet(TDSSOCKET * tds); │ │ │ │ │ -1484int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int │ │ │ │ │ -ssize); │ │ │ │ │ -1485 │ │ │ │ │ -1486 │ │ │ │ │ -1487/* read.c */ │ │ │ │ │ -1488unsigned char tds_get_byte(TDSSOCKET * tds); │ │ │ │ │ -1489void tds_unget_byte(TDSSOCKET * tds); │ │ │ │ │ -1490unsigned char tds_peek(TDSSOCKET * tds); │ │ │ │ │ -1491TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds); │ │ │ │ │ -1492#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds)) │ │ │ │ │ -1493TDS_UINT tds_get_uint(TDSSOCKET * tds); │ │ │ │ │ -1494#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds)) │ │ │ │ │ -1495TDS_UINT8 tds_get_uint8(TDSSOCKET * tds); │ │ │ │ │ -1496#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds)) │ │ │ │ │ -1497size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_ │ │ │ │ │ -t dest_size); │ │ │ │ │ -1498TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, │ │ │ │ │ -TDSCOLUMN * curcol); │ │ │ │ │ -1499bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n); │ │ │ │ │ -1500int tds_get_size_by_type(TDS_SERVER_TYPE servertype); │ │ │ │ │ -1501DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len); │ │ │ │ │ -1502 │ │ │ │ │ -1503 │ │ │ │ │ -1504/* util.c */ │ │ │ │ │ -1505int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int │ │ │ │ │ -errnum); │ │ │ │ │ -1506TDS_STATE tds_set_state(TDSSOCKET * tds, TDS_STATE state); │ │ │ │ │ -1507void tds_swap_bytes(void *buf, int bytes); │ │ │ │ │ -1508unsigned int tds_gettime_ms(void); │ │ │ │ │ -1509 │ │ │ │ │ -1510 │ │ │ │ │ -1511/* log.c */ │ │ │ │ │ -1512typedef struct tdsdump_off_item { │ │ │ │ │ -1513 struct tdsdump_off_item *next; │ │ │ │ │ -1514 tds_thread_id thread_id; │ │ │ │ │ -1515} TDSDUMP_OFF_ITEM; │ │ │ │ │ -1516void tdsdump_off(TDSDUMP_OFF_ITEM *off_item); │ │ │ │ │ -1517void tdsdump_on(TDSDUMP_OFF_ITEM *off_item); │ │ │ │ │ -1518int tdsdump_isopen(void); │ │ │ │ │ -1519#include │ │ │ │ │ -1520int tdsdump_open(const tds_dir_char *filename); │ │ │ │ │ -1521#include │ │ │ │ │ -1522void tdsdump_close(void); │ │ │ │ │ -1523void tdsdump_dump_buf(const char* file, unsigned int level_line, const char │ │ │ │ │ -*msg, const void *buf, size_t length); │ │ │ │ │ -1524void tdsdump_col(const TDSCOLUMN *col); │ │ │ │ │ -1525#undef tdsdump_log │ │ │ │ │ -1526void tdsdump_log(const char* file, unsigned int level_line, const char │ │ │ │ │ -*fmt, ...) │ │ │ │ │ -1527#if defined(__GNUC__) && __GNUC__ >= 2 │ │ │ │ │ -1528#if defined(__MINGW32__) │ │ │ │ │ -1529 __attribute__ ((__format__ (ms_printf, 3, 4))) │ │ │ │ │ -1530#else │ │ │ │ │ -1531 __attribute__ ((__format__ (__printf__, 3, 4))) │ │ │ │ │ -1532#endif │ │ │ │ │ -1533#endif │ │ │ │ │ -1534; │ │ │ │ │ -1535#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log │ │ │ │ │ -1536#define tdsdump_log TDSDUMP_LOG_FAST │ │ │ │ │ -1537#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf │ │ │ │ │ -1538#define tdsdump_dump_buf TDSDUMP_BUF_FAST │ │ │ │ │ -1539 │ │ │ │ │ -1540extern bool tds_write_dump; │ │ │ │ │ -1541extern int tds_debug_flags; │ │ │ │ │ -1542extern int tds_append_mode; │ │ │ │ │ -1543 │ │ │ │ │ -1544 │ │ │ │ │ -1545/* net.c */ │ │ │ │ │ -1546TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned │ │ │ │ │ -int port, int timeout, int *p_oserr); │ │ │ │ │ -1547void tds_close_socket(TDSSOCKET * tds); │ │ │ │ │ -1548int tds7_get_instance_ports(FILE *output, struct addrinfo *addr); │ │ │ │ │ -1549int tds7_get_instance_port(struct addrinfo *addr, const char *instance); │ │ │ │ │ -1550char *tds_prwsaerror(int erc); │ │ │ │ │ -1551void tds_prwsaerror_free(char *s); │ │ │ │ │ -1552int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen); │ │ │ │ │ -1553int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int │ │ │ │ │ -buflen, int final); │ │ │ │ │ -1554void tds_connection_coalesce(TDSSOCKET *tds); │ │ │ │ │ -1555void tds_connection_flush(TDSSOCKET *tds); │ │ │ │ │ -1556#define TDSSELREAD POLLIN │ │ │ │ │ -1557#define TDSSELWRITE POLLOUT │ │ │ │ │ -1558int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds); │ │ │ │ │ -1559void tds_connection_close(TDSCONNECTION *conn); │ │ │ │ │ -1560int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen); │ │ │ │ │ -1561int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_ │ │ │ │ │ -t buflen); │ │ │ │ │ -1562int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock); │ │ │ │ │ -1563int tds_wakeup_init(TDSPOLLWAKEUP *wakeup); │ │ │ │ │ -1564void tds_wakeup_close(TDSPOLLWAKEUP *wakeup); │ │ │ │ │ -1565void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel); │ │ │ │ │ -1566inline static TDS_SYS_SOCKET │ │ │ │ │ -1567tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup) │ │ │ │ │ -1568{ │ │ │ │ │ -1569 return wakeup->s_signaled; │ │ │ │ │ -1570} │ │ │ │ │ -1571 │ │ │ │ │ -1572 │ │ │ │ │ -1573/* packet.c */ │ │ │ │ │ -1574int tds_read_packet(TDSSOCKET * tds); │ │ │ │ │ -1575TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final); │ │ │ │ │ -1576#if ENABLE_ODBC_MARS │ │ │ │ │ -1577int tds_append_cancel(TDSSOCKET *tds); │ │ │ │ │ -1578TDSRET tds_append_syn(TDSSOCKET *tds); │ │ │ │ │ -1579TDSRET tds_append_fin(TDSSOCKET *tds); │ │ │ │ │ -1580#else │ │ │ │ │ -1581int tds_put_cancel(TDSSOCKET * tds); │ │ │ │ │ -1582#endif │ │ │ │ │ -1583 │ │ │ │ │ -1584typedef struct tds_freeze { │ │ │ │ │ -1586 TDSSOCKET *tds; │ │ │ │ │ -1588 TDSPACKET *pkt; │ │ │ │ │ -1590 unsigned pkt_pos; │ │ │ │ │ -1592 unsigned size_len; │ │ │ │ │ -1593} TDSFREEZE; │ │ │ │ │ -1594 │ │ │ │ │ -1595void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len); │ │ │ │ │ -1596size_t tds_freeze_written(TDSFREEZE *freeze); │ │ │ │ │ -1597TDSRET tds_freeze_abort(TDSFREEZE *freeze); │ │ │ │ │ -1598TDSRET tds_freeze_close(TDSFREEZE *freeze); │ │ │ │ │ -1599TDSRET tds_freeze_close_string(TDSFREEZE *freeze); │ │ │ │ │ -1600TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size); │ │ │ │ │ -1601 │ │ │ │ │ -1602inline static void │ │ │ │ │ -1603tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt) │ │ │ │ │ -1604{ │ │ │ │ │ -1605 tds->send_packet = pkt; │ │ │ │ │ -1606 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt); │ │ │ │ │ -1607} │ │ │ │ │ -1608 │ │ │ │ │ -1609/* Macros to allow some indentation of the packets. │ │ │ │ │ -1610 * │ │ │ │ │ -1611 * The 3 nested fake loops require some explanation: │ │ │ │ │ -1612 * - first is to allows to declare variables; │ │ │ │ │ -1613 * - second is to force using brackets; │ │ │ │ │ -1614 * - third is to avoids that a break inside will skip the close. │ │ │ │ │ -1615 */ │ │ │ │ │ -1616#define TDS_START_LEN_GENERIC(tds_socket, len) do { \ │ │ │ │ │ -1617 TDSFREEZE current_freeze[1]; \ │ │ │ │ │ -1618 tds_freeze((tds_socket), current_freeze, (len)); do { do │ │ │ │ │ -1619#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); │ │ │ │ │ -} while(0); │ │ │ │ │ -1620#define TDS_END_LEN_STRING while(0); } while(tds_freeze_close_string │ │ │ │ │ -(current_freeze), 0); } while(0); │ │ │ │ │ -1621 │ │ │ │ │ -1622#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, │ │ │ │ │ -1) │ │ │ │ │ -1623#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_ │ │ │ │ │ -socket, 2) │ │ │ │ │ -1624#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4) │ │ │ │ │ -1625 │ │ │ │ │ -1626/* vstrbuild.c */ │ │ │ │ │ -1627TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char │ │ │ │ │ -*text, int textlen, const char *formats, int formatlen, │ │ │ │ │ -1628 va_list ap); │ │ │ │ │ -1629 │ │ │ │ │ -1630 │ │ │ │ │ -1631/* numeric.c */ │ │ │ │ │ -1632char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_ │ │ │ │ │ -digits); │ │ │ │ │ -1633TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s); │ │ │ │ │ -1634TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char │ │ │ │ │ -new_prec, unsigned char new_scale); │ │ │ │ │ -1635 │ │ │ │ │ -1636 │ │ │ │ │ -1637/* getmac.c */ │ │ │ │ │ -1638void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]); │ │ │ │ │ -1639 │ │ │ │ │ -1640 │ │ │ │ │ -1641/* challenge.c */ │ │ │ │ │ -1642#ifndef HAVE_SSPI │ │ │ │ │ -1643TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET * tds); │ │ │ │ │ -1644TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds); │ │ │ │ │ -1645#else │ │ │ │ │ -1646TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds); │ │ │ │ │ -1647#endif │ │ │ │ │ -1648TDSRET tds5_gss_send(TDSSOCKET *tds); │ │ │ │ │ -1649 │ │ │ │ │ -1650 │ │ │ │ │ -1651/* random.c */ │ │ │ │ │ -1652void tds_random_buffer(unsigned char *out, int len); │ │ │ │ │ -1653 │ │ │ │ │ -1654 │ │ │ │ │ -1655/* sec_negotiate.c */ │ │ │ │ │ -1656TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds); │ │ │ │ │ -1657inline static void │ │ │ │ │ -1658tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_ │ │ │ │ │ -type) │ │ │ │ │ -1659{ │ │ │ │ │ -1660 if (tds_auth) │ │ │ │ │ -1661 tds_auth->msg_type = msg_type; │ │ │ │ │ -1662} │ │ │ │ │ -1663 │ │ │ │ │ -1664 │ │ │ │ │ -1665/* bulk.c */ │ │ │ │ │ -1666 │ │ │ │ │ -1668enum tds_bcp_directions │ │ │ │ │ -1669{ │ │ │ │ │ -1670 TDS_BCP_IN = 1, │ │ │ │ │ -1671 TDS_BCP_OUT = 2, │ │ │ │ │ -1672 TDS_BCP_QUERYOUT = 3 │ │ │ │ │ -1673}; │ │ │ │ │ -1674 │ │ │ │ │ -1675typedef struct tds5_colinfo │ │ │ │ │ -1676{ │ │ │ │ │ -1677 TDS_TINYINT type; │ │ │ │ │ -1678 TDS_TINYINT status; │ │ │ │ │ -1679 TDS_SMALLINT offset; │ │ │ │ │ -1680 TDS_INT length; │ │ │ │ │ -1681} TDS5COLINFO; │ │ │ │ │ -1682 │ │ │ │ │ -1683struct tds_bcpinfo │ │ │ │ │ -1684{ │ │ │ │ │ -1685 void *parent; │ │ │ │ │ -1686 DSTR hint; │ │ │ │ │ -1687 DSTR tablename; │ │ │ │ │ -1688 TDS_CHAR *insert_stmt; │ │ │ │ │ -1689 TDS_INT direction; │ │ │ │ │ -1690 bool identity_insert_on; │ │ │ │ │ -1691 bool xfer_init; │ │ │ │ │ -1692 TDS_INT bind_count; │ │ │ │ │ -1693 TDSRESULTINFO *bindinfo; │ │ │ │ │ -1694 TDS5COLINFO *sybase_colinfo; │ │ │ │ │ -1695 TDS_INT sybase_count; │ │ │ │ │ -1696}; │ │ │ │ │ -1697 │ │ │ │ │ -1698TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ -1699typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN │ │ │ │ │ -*bcpcol, int offset); │ │ │ │ │ -1700typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int │ │ │ │ │ -offset); │ │ │ │ │ -1701TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_ │ │ │ │ │ -get_col_data get_col_data, tds_bcp_null_error null_error, int offset); │ │ │ │ │ -1702TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied); │ │ │ │ │ -1703TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ -1704TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ -1705 │ │ │ │ │ -1706TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream, │ │ │ │ │ -1707 const char *terminator, size_t term_len, char **outbuf, size_t * │ │ │ │ │ -outbytes); │ │ │ │ │ -1708 │ │ │ │ │ -1709TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char │ │ │ │ │ -*textptr, const char *timestamp, int with_log, TDS_UINT size); │ │ │ │ │ -1710TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_ │ │ │ │ │ -UINT size); │ │ │ │ │ -1711TDSRET tds_writetext_end(TDSSOCKET *tds); │ │ │ │ │ -1712 │ │ │ │ │ -1713 │ │ │ │ │ -1714inline static bool │ │ │ │ │ -1715tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num) │ │ │ │ │ -1716{ │ │ │ │ │ -1717 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & │ │ │ │ │ -1; │ │ │ │ │ -1718} │ │ │ │ │ -1719#define tds_capability_has_req(conn, cap) \ │ │ │ │ │ -1720 tds_capability_enabled(&conn->capabilities.types[0], cap) │ │ │ │ │ -1721#define tds_capability_has_res(conn, cap) \ │ │ │ │ │ -1722 tds_capability_enabled(&conn->capabilities.types[1], cap) │ │ │ │ │ -1723 │ │ │ │ │ -1724#define IS_TDS42(x) (x->tds_version==0x402) │ │ │ │ │ -1725#define IS_TDS46(x) (x->tds_version==0x406) │ │ │ │ │ -1726#define IS_TDS50(x) (x->tds_version==0x500) │ │ │ │ │ -1727#define IS_TDS70(x) (x->tds_version==0x700) │ │ │ │ │ -1728#define IS_TDS71(x) (x->tds_version==0x701) │ │ │ │ │ -1729#define IS_TDS72(x) (x->tds_version==0x702) │ │ │ │ │ -1730#define IS_TDS73(x) (x->tds_version==0x703) │ │ │ │ │ -1731 │ │ │ │ │ -1732#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500) │ │ │ │ │ -1733#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700) │ │ │ │ │ -1734#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701) │ │ │ │ │ -1735#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702) │ │ │ │ │ -1736#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703) │ │ │ │ │ -1737#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704) │ │ │ │ │ -1738#define IS_TDS80_PLUS(x) ((x)->tds_version>=0x800) │ │ │ │ │ -1739 │ │ │ │ │ -1740#define TDS_MAJOR(x) ((x)->tds_version >> 8) │ │ │ │ │ -1741#define TDS_MINOR(x) ((x)->tds_version & 0xff) │ │ │ │ │ -1742 │ │ │ │ │ -1743#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD) │ │ │ │ │ -1744 │ │ │ │ │ -1746#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u)) │ │ │ │ │ -1748#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0) │ │ │ │ │ -1749 │ │ │ │ │ -1753#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x)) │ │ │ │ │ -1754 │ │ │ │ │ -1755/* TODO test if not similar to ms one*/ │ │ │ │ │ -1757#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8) │ │ │ │ │ -1758 │ │ │ │ │ -1759#ifdef __cplusplus │ │ │ │ │ -1760#if 0 │ │ │ │ │ -1761{ │ │ │ │ │ -1762#endif │ │ │ │ │ -1763} │ │ │ │ │ -1764#endif │ │ │ │ │ -1765 │ │ │ │ │ -1766#include │ │ │ │ │ -1767 │ │ │ │ │ -1768#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v))) │ │ │ │ │ -1769#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT) │ │ │ │ │ -(v))) │ │ │ │ │ -1770#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v))) │ │ │ │ │ -1771 │ │ │ │ │ -1772#endif /* _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ */ │ │ │ │ │ -tds_iconv_alloc │ │ │ │ │ -int tds_iconv_alloc(TDSCONNECTION *conn) │ │ │ │ │ -Allocate iconv stuff. │ │ │ │ │ -Definition iconv.c:311 │ │ │ │ │ -tds_write_dump │ │ │ │ │ -bool tds_write_dump │ │ │ │ │ -Tell if TDS debug logging is turned on or off. │ │ │ │ │ -Definition log.c:58 │ │ │ │ │ -tds_get_conversion_type │ │ │ │ │ -TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize) │ │ │ │ │ -Return type suitable for conversions (convert all nullable types to fixed type) │ │ │ │ │ -Definition tds_types.h:125 │ │ │ │ │ -tds_set_state │ │ │ │ │ -TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state) │ │ │ │ │ -Set state of TDS connection, with logging and checking. │ │ │ │ │ -Definition util.c:58 │ │ │ │ │ -TDS_COMPILETIME_SETTINGS │ │ │ │ │ -struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS │ │ │ │ │ -A structure to hold all the compile-time settings. │ │ │ │ │ -TDSRESULTINFO │ │ │ │ │ -struct tds_result_info TDSRESULTINFO │ │ │ │ │ -Hold information for any results. │ │ │ │ │ -TDSVARIANT │ │ │ │ │ -struct tds_variant TDSVARIANT │ │ │ │ │ -Store variant information. │ │ │ │ │ -tdsdump_close │ │ │ │ │ -void tdsdump_close(void) │ │ │ │ │ -Close the TDS dump log file. │ │ │ │ │ -Definition log.c:212 │ │ │ │ │ -tds_set_column_type │ │ │ │ │ -void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_ │ │ │ │ │ -TYPE type) │ │ │ │ │ -Set type of column initializing all dependency. │ │ │ │ │ -Definition data.c:224 │ │ │ │ │ -tds_set_server │ │ │ │ │ -bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR │ │ │ │ │ -Set the servername in a TDSLOGIN structure. │ │ │ │ │ -Definition login.c:129 │ │ │ │ │ -TDSDATEREC │ │ │ │ │ -struct tdsdaterec TDSDATEREC │ │ │ │ │ -Used by tds_datecrack. │ │ │ │ │ -tds_get_locale │ │ │ │ │ -TDSLOCALE * tds_get_locale(void) │ │ │ │ │ -Get locale information. │ │ │ │ │ -Definition locale.c:50 │ │ │ │ │ -TDSENV │ │ │ │ │ -struct tds_env TDSENV │ │ │ │ │ -Current environment as reported by the server. │ │ │ │ │ -TDSBLOB │ │ │ │ │ -struct tds_blob TDSBLOB │ │ │ │ │ -Information about blobs (e.g. │ │ │ │ │ -tds_get_size_by_type │ │ │ │ │ -int tds_get_size_by_type(TDS_SERVER_TYPE servertype) │ │ │ │ │ -Return the number of bytes needed by specified type. │ │ │ │ │ -Definition tds_types.h:9 │ │ │ │ │ -tds_numeric_bytes_per_prec │ │ │ │ │ -const int tds_numeric_bytes_per_prec[] │ │ │ │ │ -The following little table is indexed by precision and will tell us the number │ │ │ │ │ -of bytes required to s... │ │ │ │ │ -Definition numeric.c:42 │ │ │ │ │ -tds_bcp_start_copy_in │ │ │ │ │ -TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ -Start bulk copy to server. │ │ │ │ │ -Definition bulk.c:1086 │ │ │ │ │ -tds_numeric_to_string │ │ │ │ │ -TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s) │ │ │ │ │ -Definition numeric.c:96 │ │ │ │ │ -tds_get_varint_size │ │ │ │ │ -int tds_get_varint_size(TDSCONNECTION *conn, int datatype) │ │ │ │ │ -tds_get_varint_size() returns the size of a variable length integer returned in │ │ │ │ │ -a result string │ │ │ │ │ -Definition tds_types.h:57 │ │ │ │ │ -tds_writetext_start │ │ │ │ │ -TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char │ │ │ │ │ -*textptr, const char *timestamp, int with_log, TDS_UINT size) │ │ │ │ │ -Start writing writetext request. │ │ │ │ │ -Definition bulk.c:1313 │ │ │ │ │ -tds_bcp_fread │ │ │ │ │ -TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char │ │ │ │ │ -*terminator, size_t term_len, char **outbuf, size_t *outbytes) │ │ │ │ │ -Read a data file, passing the data through iconv(). │ │ │ │ │ -Definition bulk.c:1244 │ │ │ │ │ -tds_bcp_start │ │ │ │ │ -TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ -Start sending BCP data to server. │ │ │ │ │ -Definition bulk.c:884 │ │ │ │ │ -TDSDYNAMIC │ │ │ │ │ -struct tds_dynamic TDSDYNAMIC │ │ │ │ │ -Holds information for a dynamic (also called prepared) query. │ │ │ │ │ -tds_set_param_type │ │ │ │ │ -void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE │ │ │ │ │ -type) │ │ │ │ │ -Set type of column initializing all dependency. │ │ │ │ │ -Definition data.c:246 │ │ │ │ │ -tds_states │ │ │ │ │ -tds_states │ │ │ │ │ -values for tds->state │ │ │ │ │ -Definition tds.h:774 │ │ │ │ │ -TDS_PENDING │ │ │ │ │ -@ TDS_PENDING │ │ │ │ │ -cilent is waiting for data │ │ │ │ │ -Definition tds.h:778 │ │ │ │ │ -TDS_SENDING │ │ │ │ │ -@ TDS_SENDING │ │ │ │ │ -client would send data │ │ │ │ │ -Definition tds.h:777 │ │ │ │ │ -TDS_READING │ │ │ │ │ -@ TDS_READING │ │ │ │ │ -client is reading data │ │ │ │ │ -Definition tds.h:779 │ │ │ │ │ -TDS_WRITING │ │ │ │ │ -@ TDS_WRITING │ │ │ │ │ -client is writing data │ │ │ │ │ -Definition tds.h:776 │ │ │ │ │ -TDS_IDLE │ │ │ │ │ -@ TDS_IDLE │ │ │ │ │ -no data expected │ │ │ │ │ -Definition tds.h:775 │ │ │ │ │ -TDS_DEAD │ │ │ │ │ -@ TDS_DEAD │ │ │ │ │ -no connection │ │ │ │ │ -Definition tds.h:780 │ │ │ │ │ -tdsdump_col │ │ │ │ │ -void tdsdump_col(const TDSCOLUMN *col) │ │ │ │ │ -Write a column value to the debug log. │ │ │ │ │ -Definition log.c:455 │ │ │ │ │ -tds_writetext_continue │ │ │ │ │ -TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT │ │ │ │ │ -size) │ │ │ │ │ -Send some data in the writetext request started by tds_writetext_start. │ │ │ │ │ -Definition bulk.c:1348 │ │ │ │ │ -tdserror │ │ │ │ │ -int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum) │ │ │ │ │ -Call the client library's error handler (for library-generated errors only) │ │ │ │ │ -Definition util.c:321 │ │ │ │ │ -TDS_STATE │ │ │ │ │ -enum tds_states TDS_STATE │ │ │ │ │ -values for tds->state │ │ │ │ │ -tds_writetext_end │ │ │ │ │ -TDSRET tds_writetext_end(TDSSOCKET *tds) │ │ │ │ │ -Finish sending writetext data. │ │ │ │ │ -Definition bulk.c:1365 │ │ │ │ │ -tds_bcp_init │ │ │ │ │ -TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ -Initialize BCP information. │ │ │ │ │ -Definition bulk.c:86 │ │ │ │ │ -tds_bcp_directions │ │ │ │ │ -tds_bcp_directions │ │ │ │ │ -bcp direction │ │ │ │ │ -Definition tds.h:1669 │ │ │ │ │ -tds_bcp_send_record │ │ │ │ │ -TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_ │ │ │ │ │ -col_data get_col_data, tds_bcp_null_error null_error, int offset) │ │ │ │ │ -Send one row of data to server. │ │ │ │ │ -Definition bulk.c:481 │ │ │ │ │ -tdsdump_open │ │ │ │ │ -int tdsdump_open(const tds_dir_char *filename) │ │ │ │ │ -Create and truncate a human readable dump file for the TDS traffic. │ │ │ │ │ -Definition log.c:131 │ │ │ │ │ -tds_bcp_done │ │ │ │ │ -TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied) │ │ │ │ │ -Tell we finished sending BCP data to server. │ │ │ │ │ -Definition bulk.c:858 │ │ │ │ │ -TDS_ENCODING │ │ │ │ │ -struct tds_encoding TDS_ENCODING │ │ │ │ │ -Information relevant to libiconv. │ │ │ │ │ -tdsdump_off │ │ │ │ │ -void tdsdump_off(TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ -Temporarily turn off logging for current thread. │ │ │ │ │ -Definition log.c:81 │ │ │ │ │ -tdsdump_on │ │ │ │ │ -void tdsdump_on(TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ -Turn logging back on for current thread. │ │ │ │ │ -Definition log.c:101 │ │ │ │ │ -TDSCURSOR │ │ │ │ │ -struct tds_cursor TDSCURSOR │ │ │ │ │ -Holds information about a cursor. │ │ │ │ │ -tds_ntlm_get_auth │ │ │ │ │ -TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds) │ │ │ │ │ -Build a NTLMSPP packet to send to server. │ │ │ │ │ -Definition challenge.c:721 │ │ │ │ │ -tds_config_verstr │ │ │ │ │ -TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login) │ │ │ │ │ -Set TDS version from given string. │ │ │ │ │ -Definition config.c:950 │ │ │ │ │ -tds_get_compiletime_settings │ │ │ │ │ -const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void) │ │ │ │ │ -Return a structure capturing the compile-time settings provided to the │ │ │ │ │ -configure script. │ │ │ │ │ -Definition config.c:1377 │ │ │ │ │ -tds_lookup_host │ │ │ │ │ -struct addrinfo * tds_lookup_host(const char *servername) │ │ │ │ │ -Get the IP address for a hostname. │ │ │ │ │ -Definition config.c:1015 │ │ │ │ │ -tds_read_conf_section │ │ │ │ │ -bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_ │ │ │ │ │ -conf_parse, void *parse_param) │ │ │ │ │ -Read a section of configuration file (INI style file) │ │ │ │ │ -Definition config.c:508 │ │ │ │ │ -tds_read_conf_file │ │ │ │ │ -bool tds_read_conf_file(TDSLOGIN *login, const char *server) │ │ │ │ │ -Read configuration info for given server return 0 on error. │ │ │ │ │ -Definition config.c:322 │ │ │ │ │ -tds_set_interfaces_file_loc │ │ │ │ │ -TDSRET tds_set_interfaces_file_loc(const char *interfloc) │ │ │ │ │ -Set the full name of interface file. │ │ │ │ │ -Definition config.c:989 │ │ │ │ │ -tds8_adjust_login │ │ │ │ │ -TDSRET tds8_adjust_login(TDSLOGIN *login) │ │ │ │ │ -Make sure proper setting are in place for TDS 8.0. │ │ │ │ │ -Definition config.c:1462 │ │ │ │ │ -tds_read_config_info │ │ │ │ │ -TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE │ │ │ │ │ -*locale) │ │ │ │ │ -tds_read_config_info() will fill the tds connection structure based on │ │ │ │ │ -configuration information gath... │ │ │ │ │ -Definition config.c:138 │ │ │ │ │ -tds_fix_login │ │ │ │ │ -void tds_fix_login(TDSLOGIN *login) │ │ │ │ │ -Fix configuration after reading it. │ │ │ │ │ -Definition config.c:280 │ │ │ │ │ -tds_datecrack │ │ │ │ │ -TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr) │ │ │ │ │ -Convert from db date format to a structured date format. │ │ │ │ │ -Definition convert.c:3258 │ │ │ │ │ -tds_iconv_from_collate │ │ │ │ │ -TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]) │ │ │ │ │ -Get iconv information from a LCID (to support different column encoding under │ │ │ │ │ -MSSQL2K) │ │ │ │ │ -Definition iconv.c:1249 │ │ │ │ │ -tds_alloc_row │ │ │ │ │ -TDSRET tds_alloc_row(TDSRESULTINFO *res_info) │ │ │ │ │ -Allocate space for row store return NULL on out of memory. │ │ │ │ │ -Definition mem.c:533 │ │ │ │ │ -tds_detach_results │ │ │ │ │ -void tds_detach_results(TDSRESULTINFO *info) │ │ │ │ │ -Detach result info from it current socket. │ │ │ │ │ -Definition mem.c:497 │ │ │ │ │ -tds_alloc_param_result │ │ │ │ │ -TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param) │ │ │ │ │ -Adds a output parameter to TDSPARAMINFO. │ │ │ │ │ -Definition mem.c:284 │ │ │ │ │ -tds_alloc_param_data │ │ │ │ │ -void * tds_alloc_param_data(TDSCOLUMN *curparam) │ │ │ │ │ -Allocate data for a parameter. │ │ │ │ │ -Definition mem.c:373 │ │ │ │ │ -tds_init_login │ │ │ │ │ -TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale) │ │ │ │ │ -Initialize login structure with locale information and other stuff for │ │ │ │ │ -connection. │ │ │ │ │ -Definition mem.c:808 │ │ │ │ │ -tds_free_param_result │ │ │ │ │ -void tds_free_param_result(TDSPARAMINFO *param_info) │ │ │ │ │ -Delete latest parameter. │ │ │ │ │ -Definition mem.c:320 │ │ │ │ │ -tds_alloc_dynamic │ │ │ │ │ -TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id) │ │ │ │ │ -Allocate a dynamic statement. │ │ │ │ │ -Definition mem.c:160 │ │ │ │ │ -tds_realloc │ │ │ │ │ -void * tds_realloc(void **pp, size_t new_size) │ │ │ │ │ -Reallocate a pointer and update it if success. │ │ │ │ │ -Definition mem.c:1896 │ │ │ │ │ -tds_free_input_params │ │ │ │ │ -void tds_free_input_params(TDSDYNAMIC *dyn) │ │ │ │ │ -Frees all allocated input parameters of a dynamic statement. │ │ │ │ │ -Definition mem.c:206 │ │ │ │ │ -tds_release_dynamic │ │ │ │ │ -void tds_release_dynamic(TDSDYNAMIC **dyn) │ │ │ │ │ -Frees dynamic statement. │ │ │ │ │ -Definition mem.c:253 │ │ │ │ │ -tds_needs_unprepare │ │ │ │ │ -int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ │ -Check if dynamic request must be unprepared. │ │ │ │ │ -Definition query.c:1800 │ │ │ │ │ -tds_skip_quoted │ │ │ │ │ -const char * tds_skip_quoted(const char *s) │ │ │ │ │ -Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd]) │ │ │ │ │ -Definition query.c:517 │ │ │ │ │ -tds71_submit_prepexec │ │ │ │ │ -TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, │ │ │ │ │ -TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ -Creates a temporary stored procedure in the server and execute it. │ │ │ │ │ -Definition query.c:1453 │ │ │ │ │ -tds_start_query │ │ │ │ │ -void tds_start_query(TDSSOCKET *tds, unsigned char packet_type) │ │ │ │ │ -Start query packet of a given type. │ │ │ │ │ -Definition query.c:334 │ │ │ │ │ -tds_send_cancel │ │ │ │ │ -TDSRET tds_send_cancel(TDSSOCKET *tds) │ │ │ │ │ -tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel │ │ │ │ │ -should be called dire... │ │ │ │ │ -Definition query.c:2069 │ │ │ │ │ -tds_submit_execute │ │ │ │ │ -TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ -Sends a previously prepared dynamic statement to the server. │ │ │ │ │ -Definition query.c:1678 │ │ │ │ │ -tds_quote_string │ │ │ │ │ -size_t tds_quote_string(TDSSOCKET *tds TDS_UNUSED, char *buffer, const char │ │ │ │ │ -*str, int len) │ │ │ │ │ -Quote a string. │ │ │ │ │ -Definition query.c:2281 │ │ │ │ │ -tds_get_column_declaration │ │ │ │ │ -TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out) │ │ │ │ │ -Return declaration for column (like "varchar(20)"). │ │ │ │ │ -Definition query.c:740 │ │ │ │ │ -tds_deferred_cursor_dealloc │ │ │ │ │ -TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │ │ -Deallocate cursor on idle. │ │ │ │ │ -Definition query.c:3097 │ │ │ │ │ -tds_submit_query │ │ │ │ │ -TDSRET tds_submit_query(TDSSOCKET *tds, const char *query) │ │ │ │ │ -Sends a language string to the database server for processing. │ │ │ │ │ -Definition query.c:212 │ │ │ │ │ -tds_submit_rpc │ │ │ │ │ -TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO │ │ │ │ │ -*params, TDSHEADERS *head) │ │ │ │ │ -Calls a RPC from server. │ │ │ │ │ -Definition query.c:1977 │ │ │ │ │ -tds_quote_id_rpc │ │ │ │ │ -size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int │ │ │ │ │ -idlen) │ │ │ │ │ -Quote an id for a RPC call. │ │ │ │ │ -Definition query.c:2256 │ │ │ │ │ -tds_submit_prepare │ │ │ │ │ -TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id, │ │ │ │ │ -TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ -Creates a temporary stored procedure in the server. │ │ │ │ │ -Definition query.c:1176 │ │ │ │ │ -tds_fix_column_size │ │ │ │ │ -size_t tds_fix_column_size(TDSSOCKET *tds TDS_UNUSED, TDSCOLUMN *curcol) │ │ │ │ │ -Get column size for wire. │ │ │ │ │ -Definition query.c:1543 │ │ │ │ │ -tds_submit_begin_tran │ │ │ │ │ -TDSRET tds_submit_begin_tran(TDSSOCKET *tds) │ │ │ │ │ -Send a rollback request. │ │ │ │ │ -Definition query.c:3705 │ │ │ │ │ -tds_submit_commit │ │ │ │ │ -TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont) │ │ │ │ │ -Send a commit request. │ │ │ │ │ -Definition query.c:3764 │ │ │ │ │ -tds_submit_rollback │ │ │ │ │ -TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont) │ │ │ │ │ -Send a rollback request. │ │ │ │ │ -Definition query.c:3733 │ │ │ │ │ -tds_quote_id │ │ │ │ │ -size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen) │ │ │ │ │ -Quote an id. │ │ │ │ │ -Definition query.c:2211 │ │ │ │ │ -tds_next_placeholder │ │ │ │ │ -const char * tds_next_placeholder(const char *start) │ │ │ │ │ -Get position of next placeholder. │ │ │ │ │ -Definition query.c:537 │ │ │ │ │ -tds_submit_query_params │ │ │ │ │ -TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO │ │ │ │ │ -*params, TDSHEADERS *head) │ │ │ │ │ -Sends a language string to the database server for processing. │ │ │ │ │ -Definition query.c:352 │ │ │ │ │ -tds_deferred_unprepare │ │ │ │ │ -TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ │ -Unprepare dynamic on idle. │ │ │ │ │ -Definition query.c:1822 │ │ │ │ │ -tds_count_placeholders │ │ │ │ │ -int tds_count_placeholders(const char *query) │ │ │ │ │ -Count the number of placeholders ('?') in a query. │ │ │ │ │ -Definition query.c:573 │ │ │ │ │ -tds_cursor_dealloc │ │ │ │ │ -TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ │ -Send a deallocation request to server. │ │ │ │ │ -Definition query.c:3046 │ │ │ │ │ -tds_skip_comment │ │ │ │ │ -const char * tds_skip_comment(const char *s) │ │ │ │ │ -Skip a comment in a query. │ │ │ │ │ -Definition query.c:492 │ │ │ │ │ -tds_convert_string │ │ │ │ │ -const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char │ │ │ │ │ -*s, int len, size_t *out_len) │ │ │ │ │ -Convert a string in an allocated buffer. │ │ │ │ │ -Definition query.c:126 │ │ │ │ │ -tds_submit_queryf │ │ │ │ │ -TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...) │ │ │ │ │ -Format and submit a query. │ │ │ │ │ -Definition query.c:469 │ │ │ │ │ -tds_submit_execdirect │ │ │ │ │ -TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO │ │ │ │ │ -*params, TDSHEADERS *head) │ │ │ │ │ -Submit a prepared query with parameters. │ │ │ │ │ -Definition query.c:1308 │ │ │ │ │ -tds_set_cur_dyn │ │ │ │ │ -void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ -Set current dynamic. │ │ │ │ │ -Definition query.c:194 │ │ │ │ │ -tds_submit_optioncmd │ │ │ │ │ -TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION │ │ │ │ │ -option, TDS_OPTION_ARG *param, TDS_INT param_size) │ │ │ │ │ -Send option commands to server. │ │ │ │ │ -Definition query.c:3429 │ │ │ │ │ -tds_submit_unprepare │ │ │ │ │ -TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ -Send a unprepare request for a prepared query. │ │ │ │ │ -Definition query.c:1845 │ │ │ │ │ -tds_dstr_get │ │ │ │ │ -DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len) │ │ │ │ │ -Reads a string from wire and put in a DSTR. │ │ │ │ │ -Definition read.c:294 │ │ │ │ │ -tds_freeze_close_string │ │ │ │ │ -TDSRET tds_freeze_close_string(TDSFREEZE *freeze) │ │ │ │ │ -Stop keeping data for this specific freeze. │ │ │ │ │ -Definition packet.c:1008 │ │ │ │ │ -tds_get_byte │ │ │ │ │ -unsigned char tds_get_byte(TDSSOCKET *tds) │ │ │ │ │ -Return a single byte from the input buffer. │ │ │ │ │ -Definition read.c:72 │ │ │ │ │ -tds_put_string │ │ │ │ │ -int tds_put_string(TDSSOCKET *tds, const char *buf, int len) │ │ │ │ │ -Output a string to wire automatic translate string to unicode if needed. │ │ │ │ │ -Definition write.c:97 │ │ │ │ │ -tds_peek │ │ │ │ │ -unsigned char tds_peek(TDSSOCKET *tds) │ │ │ │ │ -Reads a byte from the TDS stream without removing it. │ │ │ │ │ -Definition read.c:100 │ │ │ │ │ -tds_freeze_close_len │ │ │ │ │ -TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size) │ │ │ │ │ -Stop keeping data for this specific freeze. │ │ │ │ │ -Definition packet.c:1046 │ │ │ │ │ -tds_goodwrite │ │ │ │ │ -int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen) │ │ │ │ │ -Definition net.c:977 │ │ │ │ │ -tds_socket_set_nonblocking │ │ │ │ │ -int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock) │ │ │ │ │ -Set socket to non-blocking. │ │ │ │ │ -Definition net.c:145 │ │ │ │ │ -tds_close_socket │ │ │ │ │ -void tds_close_socket(TDSSOCKET *tds) │ │ │ │ │ -Close current socket. │ │ │ │ │ -Definition net.c:527 │ │ │ │ │ -tds_read_packet │ │ │ │ │ -int tds_read_packet(TDSSOCKET *tds) │ │ │ │ │ -Read in one 'packet' from the server. │ │ │ │ │ -Definition packet.c:523 │ │ │ │ │ -tds_freeze_written │ │ │ │ │ -size_t tds_freeze_written(TDSFREEZE *freeze) │ │ │ │ │ -Compute how many bytes has been written from freeze. │ │ │ │ │ -Definition packet.c:931 │ │ │ │ │ -tds_flush_packet │ │ │ │ │ -TDSRET tds_flush_packet(TDSSOCKET *tds) │ │ │ │ │ -Flush packet to server. │ │ │ │ │ -Definition write.c:224 │ │ │ │ │ -tds_freeze_close │ │ │ │ │ -TDSRET tds_freeze_close(TDSFREEZE *freeze) │ │ │ │ │ -Stop keeping data for this specific freeze. │ │ │ │ │ -Definition packet.c:992 │ │ │ │ │ -tds_goodread │ │ │ │ │ -int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen) │ │ │ │ │ -Loops until we have received some characters return -1 on failure. │ │ │ │ │ -Definition net.c:906 │ │ │ │ │ -tds_freeze_abort │ │ │ │ │ -TDSRET tds_freeze_abort(TDSFREEZE *freeze) │ │ │ │ │ -Discard all data written after the freeze. │ │ │ │ │ -Definition packet.c:957 │ │ │ │ │ -tds_get_uint8 │ │ │ │ │ -TDS_UINT8 tds_get_uint8(TDSSOCKET *tds) │ │ │ │ │ -Get an uint64 from the server. │ │ │ │ │ -Definition read.c:138 │ │ │ │ │ -tds_get_char_data │ │ │ │ │ -TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, │ │ │ │ │ -TDSCOLUMN *curcol) │ │ │ │ │ -Fetch character data the wire. │ │ │ │ │ -Definition read.c:193 │ │ │ │ │ -tds_get_string │ │ │ │ │ -size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_ │ │ │ │ │ -t dest_size) │ │ │ │ │ -Fetch a string from the wire. │ │ │ │ │ -Definition read.c:164 │ │ │ │ │ -tds7_get_instance_ports │ │ │ │ │ -int tds7_get_instance_ports(FILE *output, struct addrinfo *addr) │ │ │ │ │ -Get port of all instances. │ │ │ │ │ -Definition net.c:1099 │ │ │ │ │ -tds_get_uint │ │ │ │ │ -TDS_UINT tds_get_uint(TDSSOCKET *tds) │ │ │ │ │ -Get an uint32 from the server. │ │ │ │ │ -Definition read.c:125 │ │ │ │ │ -tds7_get_instance_port │ │ │ │ │ -int tds7_get_instance_port(struct addrinfo *addr, const char *instance) │ │ │ │ │ -Get port of given instance. │ │ │ │ │ -Definition net.c:1235 │ │ │ │ │ -tds_get_usmallint │ │ │ │ │ -TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds) │ │ │ │ │ -Get an uint16 from the server. │ │ │ │ │ -Definition read.c:112 │ │ │ │ │ -tds_unget_byte │ │ │ │ │ -void tds_unget_byte(TDSSOCKET *tds) │ │ │ │ │ -Unget will always work as long as you don't call it twice in a row. │ │ │ │ │ -Definition read.c:89 │ │ │ │ │ -tds_select │ │ │ │ │ -int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds) │ │ │ │ │ -Select on a socket until it's available or the timeout expires. │ │ │ │ │ -Definition net.c:589 │ │ │ │ │ -tds_get_n │ │ │ │ │ -bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n) │ │ │ │ │ -Get N bytes from the buffer and return them in the already allocated space │ │ │ │ │ -given to us. │ │ │ │ │ -Definition read.c:228 │ │ │ │ │ -tds_prtype │ │ │ │ │ -const char * tds_prtype(int token) │ │ │ │ │ -Returns string representation of the given type. │ │ │ │ │ -Definition token.c:3037 │ │ │ │ │ -tds_lookup_dynamic │ │ │ │ │ -TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id) │ │ │ │ │ -Finds a dynamic given string id. │ │ │ │ │ -Definition token.c:2592 │ │ │ │ │ -tds_process_login_tokens │ │ │ │ │ -TDSRET tds_process_login_tokens(TDSSOCKET *tds) │ │ │ │ │ -tds_process_login_tokens() is called after sending the login packet to the │ │ │ │ │ -server. │ │ │ │ │ -Definition token.c:416 │ │ │ │ │ -tds_process_tokens │ │ │ │ │ -TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_ │ │ │ │ │ -flags, unsigned flag) │ │ │ │ │ -process all streams. │ │ │ │ │ -Definition token.c:536 │ │ │ │ │ -tds_process_simple_query │ │ │ │ │ -TDSRET tds_process_simple_query(TDSSOCKET *tds) │ │ │ │ │ -Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the │ │ │ │ │ -statement returns results,... │ │ │ │ │ -Definition token.c:886 │ │ │ │ │ -tds_process_cancel │ │ │ │ │ -TDSRET tds_process_cancel(TDSSOCKET *tds) │ │ │ │ │ -Definition token.c:2559 │ │ │ │ │ -tdsiconvinfo │ │ │ │ │ -Definition iconv.h:92 │ │ │ │ │ -tdsnumeric │ │ │ │ │ -Definition proto.h:26 │ │ │ │ │ -tdsmoney │ │ │ │ │ -Definition proto.h:39 │ │ │ │ │ -tds_compiletime_settings │ │ │ │ │ -A structure to hold all the compile-time settings. │ │ │ │ │ -Definition tds.h:83 │ │ │ │ │ -TDS_DATETIMEALL │ │ │ │ │ -This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ -TIME information. │ │ │ │ │ -Definition tds.h:145 │ │ │ │ │ -TDS_DATETIMEALL::date │ │ │ │ │ -TDS_INT date │ │ │ │ │ -date, 0 = 1900-01-01 │ │ │ │ │ -Definition tds.h:147 │ │ │ │ │ -TDS_DATETIMEALL::offset │ │ │ │ │ -TDS_SMALLINT offset │ │ │ │ │ -time offset │ │ │ │ │ -Definition tds.h:148 │ │ │ │ │ -TDS_DATETIMEALL::time │ │ │ │ │ -TDS_UINT8 time │ │ │ │ │ -time, 7 digit precision │ │ │ │ │ -Definition tds.h:146 │ │ │ │ │ -tdsdaterec │ │ │ │ │ -Used by tds_datecrack. │ │ │ │ │ -Definition tds.h:158 │ │ │ │ │ -tdsdaterec::dayofyear │ │ │ │ │ -TDS_INT dayofyear │ │ │ │ │ -day of year (1-366) │ │ │ │ │ -Definition tds.h:163 │ │ │ │ │ -tdsdaterec::weekday │ │ │ │ │ -TDS_INT weekday │ │ │ │ │ -day of week (0-6, 0 = sunday) │ │ │ │ │ -Definition tds.h:164 │ │ │ │ │ -tdsdaterec::year │ │ │ │ │ -TDS_INT year │ │ │ │ │ -year │ │ │ │ │ -Definition tds.h:159 │ │ │ │ │ -tdsdaterec::timezone │ │ │ │ │ -TDS_INT timezone │ │ │ │ │ --840 - 840 minutes from UTC │ │ │ │ │ -Definition tds.h:169 │ │ │ │ │ -tdsdaterec::minute │ │ │ │ │ -TDS_INT minute │ │ │ │ │ -0-59 │ │ │ │ │ -Definition tds.h:166 │ │ │ │ │ -tdsdaterec::day │ │ │ │ │ -TDS_INT day │ │ │ │ │ -day of month (1-31) │ │ │ │ │ -Definition tds.h:162 │ │ │ │ │ -tdsdaterec::decimicrosecond │ │ │ │ │ -TDS_INT decimicrosecond │ │ │ │ │ -0-9999999 │ │ │ │ │ -Definition tds.h:168 │ │ │ │ │ -tdsdaterec::second │ │ │ │ │ -TDS_INT second │ │ │ │ │ -0-59 │ │ │ │ │ -Definition tds.h:167 │ │ │ │ │ -tdsdaterec::quarter │ │ │ │ │ -TDS_INT quarter │ │ │ │ │ -quarter (0-3) │ │ │ │ │ -Definition tds.h:160 │ │ │ │ │ -tdsdaterec::hour │ │ │ │ │ -TDS_INT hour │ │ │ │ │ -0-23 │ │ │ │ │ -Definition tds.h:165 │ │ │ │ │ -tdsdaterec::month │ │ │ │ │ -TDS_INT month │ │ │ │ │ -month number (0-11) │ │ │ │ │ -Definition tds.h:161 │ │ │ │ │ -tds_option_arg │ │ │ │ │ -Definition tds.h:305 │ │ │ │ │ -tds_align_struct │ │ │ │ │ -Definition tds.h:476 │ │ │ │ │ -tds_capability_type │ │ │ │ │ -Definition tds.h:485 │ │ │ │ │ -tds_capabilities │ │ │ │ │ -Definition tds.h:492 │ │ │ │ │ -tds_login │ │ │ │ │ -Definition tds.h:498 │ │ │ │ │ -tds_login::crlfile │ │ │ │ │ -DSTR crlfile │ │ │ │ │ -certificate revocation file │ │ │ │ │ -Definition tds.h:512 │ │ │ │ │ -tds_login::server_realm_name │ │ │ │ │ -DSTR server_realm_name │ │ │ │ │ -server realm name (in freetds.conf) │ │ │ │ │ -Definition tds.h:508 │ │ │ │ │ -tds_login::user_name │ │ │ │ │ -DSTR user_name │ │ │ │ │ -account for login │ │ │ │ │ -Definition tds.h:516 │ │ │ │ │ -tds_login::password │ │ │ │ │ -DSTR password │ │ │ │ │ -password of account login │ │ │ │ │ -Definition tds.h:517 │ │ │ │ │ -tds_login::db_filename │ │ │ │ │ -DSTR db_filename │ │ │ │ │ -database filename to attach (MSSQL) │ │ │ │ │ -Definition tds.h:510 │ │ │ │ │ -tds_login::certificate_host_name │ │ │ │ │ -DSTR certificate_host_name │ │ │ │ │ -certificate hostname to check, if empty use server_host_name │ │ │ │ │ -Definition tds.h:513 │ │ │ │ │ -tds_login::server_name │ │ │ │ │ -DSTR server_name │ │ │ │ │ -server name (in freetds.conf) │ │ │ │ │ -Definition tds.h:499 │ │ │ │ │ -tds_login::ip_addrs │ │ │ │ │ -struct addrinfo * ip_addrs │ │ │ │ │ -ip(s) of server │ │ │ │ │ -Definition tds.h:528 │ │ │ │ │ -tds_login::server_charset │ │ │ │ │ -DSTR server_charset │ │ │ │ │ -charset of server e.g. │ │ │ │ │ -Definition tds.h:504 │ │ │ │ │ -tds_login::tds_version │ │ │ │ │ -TDS_USMALLINT tds_version │ │ │ │ │ -TDS version. │ │ │ │ │ -Definition tds.h:501 │ │ │ │ │ -tds_login::new_password │ │ │ │ │ -DSTR new_password │ │ │ │ │ -new password to set (TDS 7.2+) │ │ │ │ │ -Definition tds.h:518 │ │ │ │ │ -tds_login::bulk_copy │ │ │ │ │ -unsigned int bulk_copy │ │ │ │ │ -if bulk copy should be enabled │ │ │ │ │ -Definition tds.h:538 │ │ │ │ │ -tds_login::cafile │ │ │ │ │ -DSTR cafile │ │ │ │ │ -certificate authorities file │ │ │ │ │ -Definition tds.h:511 │ │ │ │ │ -tds_login::server_spn │ │ │ │ │ -DSTR server_spn │ │ │ │ │ -server SPN (in freetds.conf) │ │ │ │ │ -Definition tds.h:509 │ │ │ │ │ -tds_login::port │ │ │ │ │ -int port │ │ │ │ │ -port of database service │ │ │ │ │ -Definition tds.h:500 │ │ │ │ │ -tds_headers │ │ │ │ │ -Definition tds.h:557 │ │ │ │ │ -tds_locale │ │ │ │ │ -Definition tds.h:565 │ │ │ │ │ -tds_blob │ │ │ │ │ -Information about blobs (e.g. │ │ │ │ │ -Definition tds.h:578 │ │ │ │ │ -tds_variant │ │ │ │ │ -Store variant information. │ │ │ │ │ -Definition tds.h:589 │ │ │ │ │ -tds_encoding │ │ │ │ │ -Information relevant to libiconv. │ │ │ │ │ -Definition tds.h:603 │ │ │ │ │ -tds_encoding::name │ │ │ │ │ -const char * name │ │ │ │ │ -name of the encoding (ie UTF-8) │ │ │ │ │ -Definition tds.h:605 │ │ │ │ │ -tds_encoding::canonic │ │ │ │ │ -unsigned char canonic │ │ │ │ │ -internal numeric index into array of all encodings │ │ │ │ │ -Definition tds.h:609 │ │ │ │ │ -tds_bcpcoldata │ │ │ │ │ -Definition tds.h:613 │ │ │ │ │ -tds_column_funcs │ │ │ │ │ -Definition tds.h:628 │ │ │ │ │ -tds_column_funcs::put_data │ │ │ │ │ -tds_func_put_data * put_data │ │ │ │ │ -Send column data to server. │ │ │ │ │ -Definition tds.h:647 │ │ │ │ │ -tds_column_funcs::put_info │ │ │ │ │ -tds_func_put_info * put_info │ │ │ │ │ -Send metadata column information to server. │ │ │ │ │ -Definition tds.h:637 │ │ │ │ │ -tds_column │ │ │ │ │ -Metadata about columns in regular and compute rows. │ │ │ │ │ -Definition tds.h:674 │ │ │ │ │ -tds_column::bcp_prefix_len │ │ │ │ │ -TDS_INT bcp_prefix_len │ │ │ │ │ -The length, in bytes, of any length prefix this column may have. │ │ │ │ │ -Definition tds.h:746 │ │ │ │ │ -tds_column::column_varint_size │ │ │ │ │ -TDS_TINYINT column_varint_size │ │ │ │ │ -size of length when reading from wire (0, 1, 2 or 4) │ │ │ │ │ -Definition tds.h:686 │ │ │ │ │ -tds_column::column_size │ │ │ │ │ -TDS_INT column_size │ │ │ │ │ -maximun size of data. │ │ │ │ │ -Definition tds.h:679 │ │ │ │ │ -tds_column::column_prec │ │ │ │ │ -TDS_TINYINT column_prec │ │ │ │ │ -precision for decimal/numeric │ │ │ │ │ -Definition tds.h:688 │ │ │ │ │ -tds_column::column_type │ │ │ │ │ -TDS_SERVER_TYPE column_type │ │ │ │ │ -This type can be different from wire type because conversion (e.g. │ │ │ │ │ -Definition tds.h:681 │ │ │ │ │ -tds_column::char_conv │ │ │ │ │ -TDSICONV * char_conv │ │ │ │ │ -refers to previously allocated iconv information │ │ │ │ │ -Definition tds.h:697 │ │ │ │ │ -tds_column::column_scale │ │ │ │ │ -TDS_TINYINT column_scale │ │ │ │ │ -scale for decimal/numeric │ │ │ │ │ -Definition tds.h:689 │ │ │ │ │ -tds_column::column_cur_size │ │ │ │ │ -TDS_INT column_cur_size │ │ │ │ │ -size written in variable (ie: char, text, binary). │ │ │ │ │ -Definition tds.h:721 │ │ │ │ │ -tds_result_info │ │ │ │ │ -Hold information for any results. │ │ │ │ │ -Definition tds.h:754 │ │ │ │ │ -tds_message │ │ │ │ │ -Definition tds.h:861 │ │ │ │ │ -tds_upd_col │ │ │ │ │ -Definition tds.h:877 │ │ │ │ │ -tds_cursor_status │ │ │ │ │ -Definition tds.h:891 │ │ │ │ │ -tds_cursor │ │ │ │ │ -Holds information about a cursor. │ │ │ │ │ -Definition tds.h:922 │ │ │ │ │ -tds_cursor::options │ │ │ │ │ -TDS_TINYINT options │ │ │ │ │ -read only|updatable TODO use it │ │ │ │ │ -Definition tds.h:927 │ │ │ │ │ -tds_cursor::defer_close │ │ │ │ │ -bool defer_close │ │ │ │ │ -true if cursor was marker to be closed when connection is idle │ │ │ │ │ -Definition tds.h:931 │ │ │ │ │ -tds_cursor::ref_count │ │ │ │ │ -TDS_INT ref_count │ │ │ │ │ -reference counter so client can retain safely a pointer │ │ │ │ │ -Definition tds.h:924 │ │ │ │ │ -tds_cursor::cursor_id │ │ │ │ │ -TDS_INT cursor_id │ │ │ │ │ -cursor id returned by the server after cursor declare │ │ │ │ │ -Definition tds.h:926 │ │ │ │ │ -tds_cursor::cursor_rows │ │ │ │ │ -TDS_INT cursor_rows │ │ │ │ │ -< number of updatable columns │ │ │ │ │ -Definition tds.h:936 │ │ │ │ │ -tds_cursor::next │ │ │ │ │ -struct tds_cursor * next │ │ │ │ │ -next in linked list, keep first │ │ │ │ │ -Definition tds.h:923 │ │ │ │ │ -tds_cursor::type │ │ │ │ │ -TDS_INT type │ │ │ │ │ -row fetched from this cursor │ │ │ │ │ -Definition tds.h:941 │ │ │ │ │ -tds_cursor::status │ │ │ │ │ -TDS_CURSOR_STATUS status │ │ │ │ │ -cursor parameter │ │ │ │ │ -Definition tds.h:938 │ │ │ │ │ -tds_cursor::query │ │ │ │ │ -char * query │ │ │ │ │ -SQL query. │ │ │ │ │ -Definition tds.h:932 │ │ │ │ │ -tds_cursor::cursor_name │ │ │ │ │ -char * cursor_name │ │ │ │ │ -name of the cursor │ │ │ │ │ -Definition tds.h:925 │ │ │ │ │ -tds_env │ │ │ │ │ -Current environment as reported by the server. │ │ │ │ │ -Definition tds.h:948 │ │ │ │ │ -tds_env::charset │ │ │ │ │ -char * charset │ │ │ │ │ -character set encoding │ │ │ │ │ -Definition tds.h:953 │ │ │ │ │ -tds_env::block_size │ │ │ │ │ -int block_size │ │ │ │ │ -packet size (512-65535) │ │ │ │ │ -Definition tds.h:950 │ │ │ │ │ -tds_env::database │ │ │ │ │ -char * database │ │ │ │ │ -database name │ │ │ │ │ -Definition tds.h:955 │ │ │ │ │ -tds_dynamic │ │ │ │ │ -Holds information for a dynamic (also called prepared) query. │ │ │ │ │ -Definition tds.h:962 │ │ │ │ │ -tds_dynamic::query │ │ │ │ │ -char * query │ │ │ │ │ -saved query, we need to know original query if prepare is impossible │ │ │ │ │ -Definition tds.h:994 │ │ │ │ │ -tds_dynamic::ref_count │ │ │ │ │ -TDS_INT ref_count │ │ │ │ │ -reference counter so client can retain safely a pointer │ │ │ │ │ -Definition tds.h:964 │ │ │ │ │ -tds_dynamic::emulated │ │ │ │ │ -bool emulated │ │ │ │ │ -this dynamic query cannot be prepared so libTDS have to construct a simple │ │ │ │ │ -query. │ │ │ │ │ -Definition tds.h:978 │ │ │ │ │ -tds_dynamic::defer_close │ │ │ │ │ -bool defer_close │ │ │ │ │ -true if dynamic was marker to be closed when connection is idle │ │ │ │ │ -Definition tds.h:982 │ │ │ │ │ -tds_dynamic::res_info │ │ │ │ │ -TDSPARAMINFO * res_info │ │ │ │ │ -query results │ │ │ │ │ -Definition tds.h:984 │ │ │ │ │ -tds_dynamic::params │ │ │ │ │ -TDSPARAMINFO * params │ │ │ │ │ -query parameters. │ │ │ │ │ -Definition tds.h:992 │ │ │ │ │ -tds_dynamic::next │ │ │ │ │ -struct tds_dynamic * next │ │ │ │ │ -next in linked list, keep first │ │ │ │ │ -Definition tds.h:963 │ │ │ │ │ -tds_dynamic::num_id │ │ │ │ │ -TDS_INT num_id │ │ │ │ │ -numeric id for mssql7+ │ │ │ │ │ -Definition tds.h:966 │ │ │ │ │ -tds_multiple │ │ │ │ │ -Definition tds.h:1004 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ -tds_authentication │ │ │ │ │ -Definition tds.h:1033 │ │ │ │ │ -tds_packet │ │ │ │ │ -Definition tds.h:1043 │ │ │ │ │ -tds_packet::data_len │ │ │ │ │ -unsigned data_len │ │ │ │ │ -data length, this does not account SMP header, only TDS part │ │ │ │ │ -Definition tds.h:1057 │ │ │ │ │ -tds_poll_wakeup │ │ │ │ │ -Definition tds.h:1071 │ │ │ │ │ -tds_connection │ │ │ │ │ -Definition tds.h:1077 │ │ │ │ │ -tds_connection::env │ │ │ │ │ -TDSENV env │ │ │ │ │ -environment is shared between all sessions │ │ │ │ │ -Definition tds.h:1088 │ │ │ │ │ -tds_connection::unicharsize │ │ │ │ │ -uint8_t unicharsize │ │ │ │ │ -Ratio between bytes allocated for a UNICHAR type and type length (Sybase). │ │ │ │ │ -Definition tds.h:1145 │ │ │ │ │ -tds_connection::cursors │ │ │ │ │ -TDSCURSOR * cursors │ │ │ │ │ -linked list of cursors allocated for this connection contains only cursors │ │ │ │ │ -allocated on the server │ │ │ │ │ -Definition tds.h:1094 │ │ │ │ │ -tds_connection::s │ │ │ │ │ -TDS_SYS_SOCKET s │ │ │ │ │ -tcp socket, INVALID_SOCKET if not connected │ │ │ │ │ -Definition tds.h:1083 │ │ │ │ │ -tds_connection::product_version │ │ │ │ │ -TDS_UINT product_version │ │ │ │ │ -version of product (Sybase/MS and full version) │ │ │ │ │ -Definition tds.h:1080 │ │ │ │ │ -tds_connection::dyns │ │ │ │ │ -TDSDYNAMIC * dyns │ │ │ │ │ -list of dynamic allocated for this connection contains only dynamic allocated │ │ │ │ │ -on the server │ │ │ │ │ -Definition tds.h:1099 │ │ │ │ │ -tds_connection::pending_close │ │ │ │ │ -unsigned int pending_close │ │ │ │ │ -true is connection has pending closing (cursors or dynamic) │ │ │ │ │ -Definition tds.h:1110 │ │ │ │ │ -tds_connection::ncharsize │ │ │ │ │ -uint8_t ncharsize │ │ │ │ │ -Ratio between bytes allocated for a NCHAR type and type length (Sybase). │ │ │ │ │ -Definition tds.h:1138 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ -tds_socket::login │ │ │ │ │ -TDSLOGIN * login │ │ │ │ │ -config for login stuff. │ │ │ │ │ -Definition tds.h:1258 │ │ │ │ │ -tds_socket::in_len │ │ │ │ │ -unsigned in_len │ │ │ │ │ -input buffer length │ │ │ │ │ -Definition tds.h:1194 │ │ │ │ │ -tds_socket::frozen_packets │ │ │ │ │ -TDSPACKET * frozen_packets │ │ │ │ │ -list of packets frozen, points to first one. │ │ │ │ │ -Definition tds.h:1203 │ │ │ │ │ -tds_socket::send_packet │ │ │ │ │ -TDSPACKET * send_packet │ │ │ │ │ -packet we are preparing to send │ │ │ │ │ -Definition tds.h:1231 │ │ │ │ │ -tds_socket::in_buf │ │ │ │ │ -unsigned char * in_buf │ │ │ │ │ -Input buffer. │ │ │ │ │ -Definition tds.h:1177 │ │ │ │ │ -tds_socket::ret_status │ │ │ │ │ -TDS_INT ret_status │ │ │ │ │ -return status from store procedure │ │ │ │ │ -Definition tds.h:1250 │ │ │ │ │ -tds_socket::out_pos │ │ │ │ │ -unsigned out_pos │ │ │ │ │ -current position in out_buf │ │ │ │ │ -Definition tds.h:1193 │ │ │ │ │ -tds_socket::current_results │ │ │ │ │ -TDSRESULTINFO * current_results │ │ │ │ │ -Current query information. │ │ │ │ │ -Definition tds.h:1238 │ │ │ │ │ -tds_socket::in_flag │ │ │ │ │ -unsigned char in_flag │ │ │ │ │ -input buffer type │ │ │ │ │ -Definition tds.h:1195 │ │ │ │ │ -tds_socket::rows_affected │ │ │ │ │ -TDS_INT8 rows_affected │ │ │ │ │ -rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid │ │ │ │ │ -Definition tds.h:1254 │ │ │ │ │ -tds_socket::out_flag │ │ │ │ │ -unsigned char out_flag │ │ │ │ │ -output buffer type │ │ │ │ │ -Definition tds.h:1196 │ │ │ │ │ -tds_socket::in_pos │ │ │ │ │ -unsigned in_pos │ │ │ │ │ -current position in in_buf │ │ │ │ │ -Definition tds.h:1192 │ │ │ │ │ -tds_socket::cur_cursor │ │ │ │ │ -TDSCURSOR * cur_cursor │ │ │ │ │ -cursor in use │ │ │ │ │ -Definition tds.h:1243 │ │ │ │ │ -tds_socket::in_row │ │ │ │ │ -bool in_row │ │ │ │ │ -true if we are getting rows │ │ │ │ │ -Definition tds.h:1246 │ │ │ │ │ -tds_socket::bulk_query │ │ │ │ │ -bool bulk_query │ │ │ │ │ -true is query sent was a bulk query so we need to switch state to QUERYING │ │ │ │ │ -Definition tds.h:1244 │ │ │ │ │ -tds_socket::has_status │ │ │ │ │ -bool has_status │ │ │ │ │ -true is ret_status is valid │ │ │ │ │ -Definition tds.h:1245 │ │ │ │ │ -tds_socket::out_buf │ │ │ │ │ -unsigned char * out_buf │ │ │ │ │ -Output buffer. │ │ │ │ │ -Definition tds.h:1185 │ │ │ │ │ -tds_socket::in_cancel │ │ │ │ │ -volatile unsigned char in_cancel │ │ │ │ │ -indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean │ │ │ │ │ -we have to send cance... │ │ │ │ │ -Definition tds.h:1248 │ │ │ │ │ -tds_socket::out_buf_max │ │ │ │ │ -unsigned int out_buf_max │ │ │ │ │ -Maximum size of packet pointed by out_buf. │ │ │ │ │ -Definition tds.h:1191 │ │ │ │ │ -tds_socket::cur_dyn │ │ │ │ │ -TDSDYNAMIC * cur_dyn │ │ │ │ │ -dynamic structure in use │ │ │ │ │ -Definition tds.h:1256 │ │ │ │ │ -tds_tvp_row │ │ │ │ │ -Definition tds.h:1275 │ │ │ │ │ -tds_tvp │ │ │ │ │ -Definition tds.h:1281 │ │ │ │ │ -tdsdump_off_item │ │ │ │ │ -Definition tds.h:1512 │ │ │ │ │ -tds_freeze │ │ │ │ │ -Definition tds.h:1584 │ │ │ │ │ -tds_freeze::tds │ │ │ │ │ -TDSSOCKET * tds │ │ │ │ │ -which socket we refer to │ │ │ │ │ -Definition tds.h:1586 │ │ │ │ │ -tds_freeze::pkt_pos │ │ │ │ │ -unsigned pkt_pos │ │ │ │ │ -position in pkt │ │ │ │ │ -Definition tds.h:1590 │ │ │ │ │ -tds_freeze::size_len │ │ │ │ │ -unsigned size_len │ │ │ │ │ -length size (0, 1, 2 or 4) │ │ │ │ │ -Definition tds.h:1592 │ │ │ │ │ -tds_freeze::pkt │ │ │ │ │ -TDSPACKET * pkt │ │ │ │ │ -first packet frozen │ │ │ │ │ -Definition tds.h:1588 │ │ │ │ │ -tds5_colinfo │ │ │ │ │ -Definition tds.h:1676 │ │ │ │ │ -tds_bcpinfo │ │ │ │ │ -Definition tds.h:1684 │ │ │ │ │ -tds_condition │ │ │ │ │ -Definition thread.h:279 │ │ │ │ │ -tds_dstr │ │ │ │ │ -Structure to hold a string. │ │ │ │ │ -Definition string.h:36 │ │ │ │ │ +24/* ignored */ │ │ │ │ │ +25# define POLLHUP 0x0010 │ │ │ │ │ +26# define POLLNVAL 0x0020 │ │ │ │ │ +27typedef struct pollfd { │ │ │ │ │ +28 int fd; /* file descriptor to poll */ │ │ │ │ │ +29 short events; /* events of interest on fd */ │ │ │ │ │ +30 short revents; /* events that occurred on fd */ │ │ │ │ │ +31} pollfd_t; │ │ │ │ │ +32 │ │ │ │ │ +33#else /* Windows */ │ │ │ │ │ +34/* │ │ │ │ │ +35 * Windows use different constants than Unix │ │ │ │ │ +36 * Newer version have a WSAPoll which is equal to Unix poll │ │ │ │ │ +37 */ │ │ │ │ │ +38# if !defined(POLLRDNORM) && !defined(POLLWRNORM) │ │ │ │ │ +39# define POLLIN 0x0300 │ │ │ │ │ +40# define POLLOUT 0x0010 │ │ │ │ │ +41# define POLLERR 0x0001 │ │ │ │ │ +42# define POLLHUP 0x0002 │ │ │ │ │ +43# define POLLNVAL 0x0004 │ │ │ │ │ +44# define POLLRDNORM 0x0100 │ │ │ │ │ +45# define POLLWRNORM 0x0010 │ │ │ │ │ +46typedef struct pollfd { │ │ │ │ │ +47 SOCKET fd; /* file descriptor to poll */ │ │ │ │ │ +48 short events; /* events of interest on fd */ │ │ │ │ │ +49 short revents; /* events that occurred on fd */ │ │ │ │ │ +50} pollfd_t; │ │ │ │ │ +51# else │ │ │ │ │ +52typedef struct pollfd pollfd_t; │ │ │ │ │ +53# endif │ │ │ │ │ +54#endif │ │ │ │ │ +55 │ │ │ │ │ +56#undef poll │ │ │ │ │ +57int tds_poll(struct pollfd fds[], size_t nfds, int timeout); │ │ │ │ │ +58#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout) │ │ │ │ │ +59 │ │ │ │ │ +60#include │ │ │ │ │ +61 │ │ │ │ │ +62#endif │ │ │ │ │ +pollfd │ │ │ │ │ +Definition poll.h:27 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00454.dot.gz │ │ │ │ ├── a00454.dot │ │ │ │ │ @@ -1,34 +1,41 @@ │ │ │ │ │ -digraph "include/freetds/tds.h" │ │ │ │ │ +digraph "include/freetds/replacements/poll.h" │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ bgcolor="transparent"; │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ - Node1 [id="Node000001",label="include/freetds/tds.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Main include file for libtds."]; │ │ │ │ │ + Node1 [id="Node000001",label="include/freetds/replacements\l/poll.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Provide poll call where missing."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node2 [id="Node000002",label="include/ctlib.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00524_source.html",tooltip=" "]; │ │ │ │ │ + Node2 [id="Node000002",label="include/freetds/replacements.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00494_source.html",tooltip=" "]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="src/ctlib/ct_checks.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00209_source.html",tooltip=" "]; │ │ │ │ │ - Node1 -> Node4 [id="edge3_Node000001_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="include/freetds/odbc.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00428_source.html",tooltip=" "]; │ │ │ │ │ - Node1 -> Node5 [id="edge4_Node000001_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node5 [id="Node000005",label="src/dblib/bcp.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01435.html",tooltip="Implementation of db-lib bulk copy functions."]; │ │ │ │ │ - Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node6 [id="Node000006",label="src/dblib/dblib.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html",tooltip="Main implementation file for db-lib."]; │ │ │ │ │ - Node1 -> Node7 [id="edge6_Node000001_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="src/pool/pool.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00128_source.html",tooltip=" "]; │ │ │ │ │ - Node1 -> Node8 [id="edge7_Node000001_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="src/replacements/iconv.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01462.html",tooltip="This file implements a very simple iconv."]; │ │ │ │ │ - Node1 -> Node9 [id="edge8_Node000001_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="src/tds/bulk.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html",tooltip="Handle bulk copy."]; │ │ │ │ │ - Node1 -> Node10 [id="edge9_Node000001_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="src/tds/data.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html",tooltip="Handle different data handling from network."]; │ │ │ │ │ - Node1 -> Node11 [id="edge10_Node000001_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="src/tds/iconv.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html",tooltip="Handle character conversions to/from server."]; │ │ │ │ │ - Node1 -> Node12 [id="edge11_Node000001_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="src/tds/read.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00296.html",tooltip="Grab data from TDS packets."]; │ │ │ │ │ - Node1 -> Node13 [id="edge12_Node000001_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node13 [id="Node000013",label="src/tds/stream.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html",tooltip="Handle stream of data."]; │ │ │ │ │ - Node1 -> Node14 [id="edge13_Node000001_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="src/tds/token.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00341.html",tooltip="Contains all routines to get replies from server."]; │ │ │ │ │ + Node3 [id="Node000003",label="include/freetds/tds.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00518.html",tooltip="Main include file for libtds."]; │ │ │ │ │ + Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node4 [id="Node000004",label="include/ctlib.h",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00524_source.html",tooltip=" "]; │ │ │ │ │ + Node3 -> Node6 [id="edge4_Node000003_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node6 [id="Node000006",label="include/freetds/odbc.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00413_source.html",tooltip=" "]; │ │ │ │ │ + Node3 -> Node7 [id="edge5_Node000003_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node7 [id="Node000007",label="src/dblib/bcp.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01435.html",tooltip="Implementation of db-lib bulk copy functions."]; │ │ │ │ │ + Node3 -> Node8 [id="edge6_Node000003_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node8 [id="Node000008",label="src/dblib/dblib.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html",tooltip="Main implementation file for db-lib."]; │ │ │ │ │ + Node3 -> Node9 [id="edge7_Node000003_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node9 [id="Node000009",label="src/pool/pool.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00278_source.html",tooltip=" "]; │ │ │ │ │ + Node3 -> Node10 [id="edge8_Node000003_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node10 [id="Node000010",label="src/replacements/iconv.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01450.html",tooltip="This file implements a very simple iconv."]; │ │ │ │ │ + Node3 -> Node11 [id="edge9_Node000003_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node11 [id="Node000011",label="src/tds/bulk.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html",tooltip="Handle bulk copy."]; │ │ │ │ │ + Node3 -> Node12 [id="edge10_Node000003_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node12 [id="Node000012",label="src/tds/data.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html",tooltip="Handle different data handling from network."]; │ │ │ │ │ + Node3 -> Node13 [id="edge11_Node000003_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node13 [id="Node000013",label="src/tds/iconv.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01453.html",tooltip="Handle character conversions to/from server."]; │ │ │ │ │ + Node3 -> Node14 [id="edge12_Node000003_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node14 [id="Node000014",label="src/tds/read.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00224.html",tooltip="Grab data from TDS packets."]; │ │ │ │ │ + Node3 -> Node15 [id="edge13_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node15 [id="Node000015",label="src/tds/stream.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html",tooltip="Handle stream of data."]; │ │ │ │ │ + Node3 -> Node16 [id="edge14_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node16 [id="Node000016",label="src/tds/token.c",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00191.html",tooltip="Contains all routines to get replies from server."]; │ │ │ │ │ + Node2 -> Node7 [id="edge15_Node000002_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node2 -> Node8 [id="edge16_Node000002_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node2 -> Node9 [id="edge17_Node000002_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node2 -> Node11 [id="edge18_Node000002_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ + Node2 -> Node16 [id="edge19_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00455_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/sysdep_types.h Source File │ │ │ │ +FreeTDS API: include/freetds/convert.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,19 +74,19 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
sysdep_types.h
│ │ │ │ +
convert.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2021 Frediano Ziglio
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,27 +96,120 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_fhDKKbNsWAy7n0lapo2Voc_
│ │ │ │ -
21#define _tdsguard_fhDKKbNsWAy7n0lapo2Voc_
│ │ │ │ +
20#ifndef _tdsguard_cXIvgxMqCzaBT7f54eQeMp_
│ │ │ │ +
21#define _tdsguard_cXIvgxMqCzaBT7f54eQeMp_
│ │ │ │
22
│ │ │ │ -
23#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ -
24#error Do not include directly, include <freetds/sysdep_private.h>
│ │ │ │ -
25#endif
│ │ │ │ -
26
│ │ │ │ -
27typedef signed long TDS_INTPTR;
│ │ │ │ -
28typedef unsigned long TDS_UINTPTR;
│ │ │ │ -
29
│ │ │ │ -
30#else
│ │ │ │ -
31#error Do not include directly, include <freetds/sysdep_private.h>
│ │ │ │ -
32#endif /* _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ */
│ │ │ │ +
23#include <freetds/pushvis.h>
│ │ │ │ +
24
│ │ │ │ +
25#ifdef __cplusplus
│ │ │ │ +
26extern "C"
│ │ │ │ +
27{
│ │ │ │ +
28#if 0
│ │ │ │ +
29}
│ │ │ │ +
30#endif
│ │ │ │ +
31#endif
│ │ │ │ +
32
│ │ │ │ +
│ │ │ │ +
33typedef union conv_result
│ │ │ │ +
34{
│ │ │ │ +
35 /* fixed */
│ │ │ │ +
36 TDS_TINYINT ti;
│ │ │ │ +
37 TDS_SMALLINT si;
│ │ │ │ +
38 TDS_USMALLINT usi;
│ │ │ │ +
39 TDS_INT i;
│ │ │ │ +
40 TDS_UINT ui;
│ │ │ │ +
41 TDS_INT8 bi;
│ │ │ │ +
42 TDS_UINT8 ubi;
│ │ │ │ +
43 TDS_FLOAT f;
│ │ │ │ +
44 TDS_REAL r;
│ │ │ │ +
45 TDS_MONEY m;
│ │ │ │ +
46 TDS_MONEY4 m4;
│ │ │ │ +
47 TDS_DATETIME dt;
│ │ │ │ +
48 TDS_DATETIME4 dt4;
│ │ │ │ + │ │ │ │ +
50 TDS_TIME time;
│ │ │ │ +
51 TDS_DATE date;
│ │ │ │ +
52 TDS_BIGTIME bigtime;
│ │ │ │ +
53 TDS_BIGDATETIME bigdatetime;
│ │ │ │ + │ │ │ │ +
55 TDS_UNIQUE u;
│ │ │ │ +
56
│ │ │ │ +
57 /* variable */
│ │ │ │ +
58 TDS_CHAR *c;
│ │ │ │ +
59 TDS_CHAR *ib;
│ │ │ │ +
60
│ │ │ │ +
61 /* sized buffer types */
│ │ │ │ +
│ │ │ │ +
62 struct cc_t {
│ │ │ │ +
63 TDS_CHAR *c;
│ │ │ │ +
64 TDS_UINT len;
│ │ │ │ +
65 } cc;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
66 struct cb_t {
│ │ │ │ +
67 TDS_CHAR *ib;
│ │ │ │ +
68 TDS_UINT len;
│ │ │ │ +
69 } cb;
│ │ │ │ +
│ │ │ │ +
70}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
72
│ │ │ │ +
73/*
│ │ │ │ +
74 * Failure return codes for tds_convert()
│ │ │ │ +
75 */
│ │ │ │ +
76#define TDS_CONVERT_FAIL -1 /* unspecified failure */
│ │ │ │ +
77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */
│ │ │ │ +
78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */
│ │ │ │ +
79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */
│ │ │ │ +
80#define TDS_CONVERT_OVERFLOW -5 /* result too large */
│ │ │ │ +
81
│ │ │ │ +
82/* sized types */
│ │ │ │ +
83#define TDS_CONVERT_CHAR 256
│ │ │ │ +
84#define TDS_CONVERT_BINARY 257
│ │ │ │ +
85
│ │ │ │ +
86unsigned char tds_willconvert(int srctype, int desttype);
│ │ │ │ +
87
│ │ │ │ +
88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);
│ │ │ │ +
89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, TDS_UINT srclen);
│ │ │ │ +
90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr);
│ │ │ │ +
91
│ │ │ │ +
92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC * timeptr, int prec);
│ │ │ │ +
93
│ │ │ │ +
94#ifdef __cplusplus
│ │ │ │ +
95#if 0
│ │ │ │ +
96{
│ │ │ │ +
97#endif
│ │ │ │ +
98}
│ │ │ │ +
99#endif
│ │ │ │ +
100
│ │ │ │ +
101#include <freetds/popvis.h>
│ │ │ │ +
102
│ │ │ │ +
103#endif /* _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ */
│ │ │ │ +
TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)
Get same type but nullable.
Definition convert.c:3009
│ │ │ │ +
unsigned char tds_willconvert(int srctype, int desttype)
Test if a conversion is possible.
Definition convert.c:3192
│ │ │ │ +
size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *timeptr, int prec)
format a date string according to an "extended" strftime(3) formatting definition.
Definition convert.c:3076
│ │ │ │ +
TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr)
tds_convert convert a type to another.
Definition convert.c:1970
│ │ │ │ +
Definition convert.h:34
│ │ │ │ +
Definition convert.h:62
│ │ │ │ +
Definition convert.h:66
│ │ │ │ +
Definition proto.h:26
│ │ │ │ +
Definition proto.h:39
│ │ │ │ +
Definition proto.h:45
│ │ │ │ +
Definition proto.h:50
│ │ │ │ +
Definition proto.h:56
│ │ │ │ +
Definition proto.h:62
│ │ │ │ +
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ +
Used by tds_datecrack.
Definition tds.h:158
│ │ │ │ +
Definition tds.h:1015
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -sysdep_types.h │ │ │ │ │ +convert.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2021 Frediano Ziglio │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,22 +20,142 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ │ │ │ │ │ -21#define _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ │ │ │ │ │ +20#ifndef _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ │ │ │ │ │ +21#define _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ │ │ │ │ │ 22 │ │ │ │ │ -23#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ -24#error Do not include directly, include │ │ │ │ │ -25#endif │ │ │ │ │ -26 │ │ │ │ │ -27typedef signed long TDS_INTPTR; │ │ │ │ │ -28typedef unsigned long TDS_UINTPTR; │ │ │ │ │ -29 │ │ │ │ │ -30#else │ │ │ │ │ -31#error Do not include directly, include │ │ │ │ │ -32#endif /* _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ */ │ │ │ │ │ +23#include │ │ │ │ │ +24 │ │ │ │ │ +25#ifdef __cplusplus │ │ │ │ │ +26extern "C" │ │ │ │ │ +27{ │ │ │ │ │ +28#if 0 │ │ │ │ │ +29} │ │ │ │ │ +30#endif │ │ │ │ │ +31#endif │ │ │ │ │ +32 │ │ │ │ │ +33typedef union conv_result │ │ │ │ │ +34{ │ │ │ │ │ +35 /* fixed */ │ │ │ │ │ +36 TDS_TINYINT ti; │ │ │ │ │ +37 TDS_SMALLINT si; │ │ │ │ │ +38 TDS_USMALLINT usi; │ │ │ │ │ +39 TDS_INT i; │ │ │ │ │ +40 TDS_UINT ui; │ │ │ │ │ +41 TDS_INT8 bi; │ │ │ │ │ +42 TDS_UINT8 ubi; │ │ │ │ │ +43 TDS_FLOAT f; │ │ │ │ │ +44 TDS_REAL r; │ │ │ │ │ +45 TDS_MONEY m; │ │ │ │ │ +46 TDS_MONEY4 m4; │ │ │ │ │ +47 TDS_DATETIME dt; │ │ │ │ │ +48 TDS_DATETIME4 dt4; │ │ │ │ │ +49 TDS_DATETIMEALL dta; │ │ │ │ │ +50 TDS_TIME time; │ │ │ │ │ +51 TDS_DATE date; │ │ │ │ │ +52 TDS_BIGTIME bigtime; │ │ │ │ │ +53 TDS_BIGDATETIME bigdatetime; │ │ │ │ │ +54 TDS_NUMERIC n; │ │ │ │ │ +55 TDS_UNIQUE u; │ │ │ │ │ +56 │ │ │ │ │ +57 /* variable */ │ │ │ │ │ +58 TDS_CHAR *c; │ │ │ │ │ +59 TDS_CHAR *ib; │ │ │ │ │ +60 │ │ │ │ │ +61 /* sized buffer types */ │ │ │ │ │ +62 struct cc_t { │ │ │ │ │ +63 TDS_CHAR *c; │ │ │ │ │ +64 TDS_UINT len; │ │ │ │ │ +65 } cc; │ │ │ │ │ +66 struct cb_t { │ │ │ │ │ +67 TDS_CHAR *ib; │ │ │ │ │ +68 TDS_UINT len; │ │ │ │ │ +69 } cb; │ │ │ │ │ +70} │ │ │ │ │ +71CONV_RESULT; │ │ │ │ │ +72 │ │ │ │ │ +73/* │ │ │ │ │ +74 * Failure return codes for tds_convert() │ │ │ │ │ +75 */ │ │ │ │ │ +76#define TDS_CONVERT_FAIL -1 /* unspecified failure */ │ │ │ │ │ +77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */ │ │ │ │ │ +78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */ │ │ │ │ │ +79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */ │ │ │ │ │ +80#define TDS_CONVERT_OVERFLOW -5 /* result too large */ │ │ │ │ │ +81 │ │ │ │ │ +82/* sized types */ │ │ │ │ │ +83#define TDS_CONVERT_CHAR 256 │ │ │ │ │ +84#define TDS_CONVERT_BINARY 257 │ │ │ │ │ +85 │ │ │ │ │ +86unsigned char tds_willconvert(int srctype, int desttype); │ │ │ │ │ +87 │ │ │ │ │ +88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype); │ │ │ │ │ +89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, │ │ │ │ │ +TDS_UINT srclen); │ │ │ │ │ +90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, │ │ │ │ │ +TDS_UINT srclen, int desttype, CONV_RESULT *cr); │ │ │ │ │ +91 │ │ │ │ │ +92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const │ │ │ │ │ +TDSDATEREC * timeptr, int prec); │ │ │ │ │ +93 │ │ │ │ │ +94#ifdef __cplusplus │ │ │ │ │ +95#if 0 │ │ │ │ │ +96{ │ │ │ │ │ +97#endif │ │ │ │ │ +98} │ │ │ │ │ +99#endif │ │ │ │ │ +100 │ │ │ │ │ +101#include │ │ │ │ │ +102 │ │ │ │ │ +103#endif /* _tdsguard_cXIvgxMqCzaBT7f54eQeMp_ */ │ │ │ │ │ +tds_get_null_type │ │ │ │ │ +TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype) │ │ │ │ │ +Get same type but nullable. │ │ │ │ │ +Definition convert.c:3009 │ │ │ │ │ +tds_willconvert │ │ │ │ │ +unsigned char tds_willconvert(int srctype, int desttype) │ │ │ │ │ +Test if a conversion is possible. │ │ │ │ │ +Definition convert.c:3192 │ │ │ │ │ +tds_strftime │ │ │ │ │ +size_t tds_strftime(char *buf, size_t maxsize, const char *format, const │ │ │ │ │ +TDSDATEREC *timeptr, int prec) │ │ │ │ │ +format a date string according to an "extended" strftime(3) formatting │ │ │ │ │ +definition. │ │ │ │ │ +Definition convert.c:3076 │ │ │ │ │ +tds_convert │ │ │ │ │ +TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, │ │ │ │ │ +TDS_UINT srclen, int desttype, CONV_RESULT *cr) │ │ │ │ │ +tds_convert convert a type to another. │ │ │ │ │ +Definition convert.c:1970 │ │ │ │ │ +conv_result │ │ │ │ │ +Definition convert.h:34 │ │ │ │ │ +conv_result::cc_t │ │ │ │ │ +Definition convert.h:62 │ │ │ │ │ +conv_result::cb_t │ │ │ │ │ +Definition convert.h:66 │ │ │ │ │ +tdsnumeric │ │ │ │ │ +Definition proto.h:26 │ │ │ │ │ +tdsmoney │ │ │ │ │ +Definition proto.h:39 │ │ │ │ │ +tdsmoney4 │ │ │ │ │ +Definition proto.h:45 │ │ │ │ │ +tdsdatetime │ │ │ │ │ +Definition proto.h:50 │ │ │ │ │ +tdsdatetime4 │ │ │ │ │ +Definition proto.h:56 │ │ │ │ │ +tdsunique │ │ │ │ │ +Definition proto.h:62 │ │ │ │ │ +TDS_DATETIMEALL │ │ │ │ │ +This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ +TIME information. │ │ │ │ │ +Definition tds.h:145 │ │ │ │ │ +tdsdaterec │ │ │ │ │ +Used by tds_datecrack. │ │ │ │ │ +Definition tds.h:158 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00458_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/replacements.h Source File │ │ │ │ +FreeTDS API: include/freetds/proto.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,223 +74,620 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
replacements.h
│ │ │ │ +
proto.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_fELDB9J1dGrLHROMPkGfXj_
│ │ │ │ -
21#define _tdsguard_fELDB9J1dGrLHROMPkGfXj_
│ │ │ │ -
22
│ │ │ │ -
23#ifndef _freetds_config_h_
│ │ │ │ -
24#error should include config.h before
│ │ │ │ -
25#endif
│ │ │ │ -
26
│ │ │ │ -
27#include <stdarg.h>
│ │ │ │ -
28#include "tds_sysdep_public.h"
│ │ │ │ -
29#include <freetds/sysdep_private.h>
│ │ │ │ -
30
│ │ │ │ -
31#include <freetds/replacements/readpassphrase.h>
│ │ │ │ -
32
│ │ │ │ -
33/* these headers are needed for basename */
│ │ │ │ -
34#ifdef HAVE_STRING_H
│ │ │ │ -
35# include <string.h>
│ │ │ │ -
36#endif
│ │ │ │ -
37#ifdef HAVE_LIBGEN_H
│ │ │ │ -
38# include <libgen.h>
│ │ │ │ -
39#endif
│ │ │ │ -
40#ifdef HAVE_GETOPT_H
│ │ │ │ -
41# include <getopt.h>
│ │ │ │ -
42#endif
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21/*
│ │ │ │ +
22 * This file contains defines and structures strictly related to TDS protocol
│ │ │ │ +
23 */
│ │ │ │ +
24
│ │ │ │ +
│ │ │ │ +
25typedef struct tdsnumeric
│ │ │ │ +
26{
│ │ │ │ +
27 unsigned char precision;
│ │ │ │ +
28 unsigned char scale;
│ │ │ │ +
29 unsigned char array[33];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
31
│ │ │ │ +
│ │ │ │ +
32typedef struct tdsoldmoney
│ │ │ │ +
33{
│ │ │ │ +
34 TDS_INT mnyhigh;
│ │ │ │ +
35 TDS_UINT mnylow;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
37
│ │ │ │ +
│ │ │ │ +
38typedef union tdsmoney
│ │ │ │ +
39{
│ │ │ │ + │ │ │ │ +
41 TDS_INT8 mny;
│ │ │ │ +
42} TDS_MONEY;
│ │ │ │ +
│ │ │ │
43
│ │ │ │ -
44#if !HAVE_POLL
│ │ │ │ - │ │ │ │ -
46#elif HAVE_POLL_H
│ │ │ │ -
47#include <poll.h>
│ │ │ │ -
48#endif /* !HAVE_POLL */
│ │ │ │ -
49
│ │ │ │ -
50#include <freetds/pushvis.h>
│ │ │ │ -
51
│ │ │ │ -
52#ifdef __cplusplus
│ │ │ │ -
53extern "C"
│ │ │ │ -
54{
│ │ │ │ -
55#endif
│ │ │ │ -
56
│ │ │ │ -
57#if !HAVE_ASPRINTF
│ │ │ │ -
58#undef asprintf
│ │ │ │ -
59int tds_asprintf(char **ret, const char *fmt, ...);
│ │ │ │ -
60#define asprintf tds_asprintf
│ │ │ │ -
61#endif /* !HAVE_ASPRINTF */
│ │ │ │ -
62
│ │ │ │ -
63#if !HAVE_VASPRINTF
│ │ │ │ -
64#undef vasprintf
│ │ │ │ -
65int tds_vasprintf(char **ret, const char *fmt, va_list ap);
│ │ │ │ -
66#define vasprintf tds_vasprintf
│ │ │ │ -
67#endif /* !HAVE_VASPRINTF */
│ │ │ │ +
│ │ │ │ +
44typedef struct tdsmoney4
│ │ │ │ +
45{
│ │ │ │ +
46 TDS_INT mny4;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ +
49typedef struct tdsdatetime
│ │ │ │ +
50{
│ │ │ │ +
51 TDS_INT dtdays;
│ │ │ │ +
52 TDS_INT dttime;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
54
│ │ │ │ +
│ │ │ │ +
55typedef struct tdsdatetime4
│ │ │ │ +
56{
│ │ │ │ +
57 TDS_USMALLINT days;
│ │ │ │ +
58 TDS_USMALLINT minutes;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
60
│ │ │ │ +
│ │ │ │ +
61typedef struct tdsunique
│ │ │ │ +
62{
│ │ │ │ +
63 TDS_UINT Data1;
│ │ │ │ +
64 TDS_USMALLINT Data2;
│ │ │ │ +
65 TDS_USMALLINT Data3;
│ │ │ │ +
66 TDS_UCHAR Data4[8];
│ │ │ │ + │ │ │ │ +
│ │ │ │
68
│ │ │ │ -
69#if !HAVE_STRTOK_R
│ │ │ │ -
70/* Some MinGW define strtok_r macro thread-safe but not reentrant but we
│ │ │ │ -
71 need both so avoid using the macro */
│ │ │ │ -
72#undef strtok_r
│ │ │ │ -
73#if defined(_WIN32) && HAVE_STRTOK_S
│ │ │ │ -
74#define strtok_r strtok_s
│ │ │ │ -
75#else
│ │ │ │ -
76char *tds_strtok_r(char *str, const char *sep, char **lasts);
│ │ │ │ -
77#define strtok_r tds_strtok_r
│ │ │ │ -
78#endif
│ │ │ │ -
79#endif /* !HAVE_STRTOK_R */
│ │ │ │ -
80
│ │ │ │ -
81#if !HAVE_STRSEP
│ │ │ │ -
82#undef strsep
│ │ │ │ -
83char *tds_strsep(char **stringp, const char *delim);
│ │ │ │ -
84#define strsep tds_strsep
│ │ │ │ -
85#endif /* !HAVE_STRSEP */
│ │ │ │ -
86
│ │ │ │ -
87#if !HAVE_STRLCPY
│ │ │ │ -
88size_t tds_strlcpy(char *dest, const char *src, size_t len);
│ │ │ │ -
89#undef strlcpy
│ │ │ │ -
90#define strlcpy(d,s,l) tds_strlcpy(d,s,l)
│ │ │ │ -
91#endif
│ │ │ │ -
92
│ │ │ │ -
93#if !HAVE_GETADDRINFO
│ │ │ │ -
│ │ │ │ -
94typedef struct tds_addrinfo {
│ │ │ │ -
95 int ai_flags;
│ │ │ │ -
96 int ai_family;
│ │ │ │ -
97 int ai_socktype;
│ │ │ │ -
98 int ai_protocol;
│ │ │ │ -
99 size_t ai_addrlen;
│ │ │ │ -
100 struct sockaddr *ai_addr;
│ │ │ │ -
101 char *ai_canonname;
│ │ │ │ -
102 struct tds_addrinfo *ai_next;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
104
│ │ │ │ -
105int tds_getaddrinfo(const char *node, const char *service, const struct tds_addrinfo *hints, struct tds_addrinfo **res);
│ │ │ │ -
106int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
│ │ │ │ -
107void tds_freeaddrinfo(struct tds_addrinfo *addr);
│ │ │ │ -
108#define addrinfo tds_addrinfo
│ │ │ │ -
109#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)
│ │ │ │ -
110#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)
│ │ │ │ -
111#define freeaddrinfo(a) tds_freeaddrinfo(a)
│ │ │ │ -
112#endif
│ │ │ │ -
113
│ │ │ │ -
114#ifndef AI_FQDN
│ │ │ │ -
115#define AI_FQDN 0
│ │ │ │ -
116#endif
│ │ │ │ -
117
│ │ │ │ -
118#if !HAVE_STRLCAT
│ │ │ │ -
119size_t tds_strlcat(char *dest, const char *src, size_t len);
│ │ │ │ -
120#undef strlcat
│ │ │ │ -
121#define strlcat(d,s,l) tds_strlcat(d,s,l)
│ │ │ │ -
122#endif
│ │ │ │ -
123
│ │ │ │ -
124#if !HAVE_BASENAME
│ │ │ │ -
125char *tds_basename(char *path);
│ │ │ │ -
126#define basename(path) tds_basename(path)
│ │ │ │ -
127#endif
│ │ │ │ -
128
│ │ │ │ -
129/*
│ │ │ │ -
130 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.
│ │ │ │ -
131 * Other Win32 C runtime libraries, notably MinGW, may define it.
│ │ │ │ -
132 * There is no symbol uniquely defined in Microsoft's header files that
│ │ │ │ -
133 * can be used by the preprocessor to know whether we're compiling for
│ │ │ │ -
134 * Microsoft's library or not (or which version). Thus there's no
│ │ │ │ -
135 * way to automatically decide whether or not to define strcasecmp
│ │ │ │ -
136 * in terms of stricmp.
│ │ │ │ -
137 *
│ │ │ │ -
138 * The Microsoft *compiler* defines _MSC_VER. On the assumption that
│ │ │ │ -
139 * anyone using their compiler is also using their library, the below
│ │ │ │ -
140 * tests check _MSC_VER as a proxy.
│ │ │ │ -
141 */
│ │ │ │ -
142#if defined(_WIN32)
│ │ │ │ -
143# if !defined(strcasecmp) && defined(_MSC_VER)
│ │ │ │ -
144# define strcasecmp(A, B) stricmp((A), (B))
│ │ │ │ -
145# endif
│ │ │ │ -
146# if !defined(strncasecmp) && defined(_MSC_VER)
│ │ │ │ -
147# define strncasecmp(x,y,z) strnicmp((x),(y),(z))
│ │ │ │ -
148# endif
│ │ │ │ -
149
│ │ │ │ -
150#undef gettimeofday
│ │ │ │ -
151int tds_gettimeofday (struct timeval *tv, void *tz);
│ │ │ │ -
152#define gettimeofday tds_gettimeofday
│ │ │ │ -
153
│ │ │ │ -
154/* Older MinGW-w64 versions don't define these flags. */
│ │ │ │ -
155#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)
│ │ │ │ -
156# define AI_ADDRCONFIG 0x00000400
│ │ │ │ -
157#endif
│ │ │ │ -
158#if defined(__MINGW32__) && !defined(AI_V4MAPPED)
│ │ │ │ -
159# define AI_V4MAPPED 0x00000800
│ │ │ │ -
160#endif
│ │ │ │ -
161
│ │ │ │ -
162#endif
│ │ │ │ -
163
│ │ │ │ -
164#if defined(_WIN32) && defined(_MSC_VER)
│ │ │ │ -
165#define tds_strtoll _strtoi64
│ │ │ │ -
166#else
│ │ │ │ -
167#define tds_strtoll strtoll
│ │ │ │ -
168#endif
│ │ │ │ -
169
│ │ │ │ -
170#if !HAVE_GETOPT
│ │ │ │ -
171#undef getopt
│ │ │ │ -
172int tds_getopt(int argc, char * const argv[], const char *optstring);
│ │ │ │ -
173#define getopt tds_getopt
│ │ │ │ -
174
│ │ │ │ -
175extern char *optarg;
│ │ │ │ -
176extern int optind, offset, opterr, optreset;
│ │ │ │ -
177#endif
│ │ │ │ -
178
│ │ │ │ -
179#if !HAVE_SOCKETPAIR
│ │ │ │ -
180int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv[2]);
│ │ │ │ -
181#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)
│ │ │ │ -
182#endif
│ │ │ │ -
183
│ │ │ │ -
184#if !HAVE_DAEMON
│ │ │ │ -
185int tds_daemon(int no_chdir, int no_close);
│ │ │ │ -
186#define daemon(d,c) tds_daemon(d,c)
│ │ │ │ -
187#endif
│ │ │ │ -
188
│ │ │ │ -
189#if !HAVE_SETENV
│ │ │ │ -
190int tds_setenv(const char *name, const char *value, int overwrite);
│ │ │ │ -
191#define setenv(n,v,o) tds_setenv(n,v,o)
│ │ │ │ -
192int tds_unsetenv(const char *name);
│ │ │ │ -
193#define unsetenv(n) tds_unsetenv(n)
│ │ │ │ -
194#endif
│ │ │ │ -
195
│ │ │ │ -
196#ifdef __cplusplus
│ │ │ │ -
197}
│ │ │ │ -
198#endif
│ │ │ │ -
199
│ │ │ │ -
200#include <freetds/popvis.h>
│ │ │ │ -
201
│ │ │ │ -
202#endif
│ │ │ │ -
Provide poll call where missing.
│ │ │ │ -
Definition replacements.h:94
│ │ │ │ +
69typedef TDS_INT TDS_DATE;
│ │ │ │ +
70typedef TDS_INT TDS_TIME;
│ │ │ │ +
71
│ │ │ │ +
72typedef TDS_UINT8 TDS_BIGTIME;
│ │ │ │ +
73typedef TDS_UINT8 TDS_BIGDATETIME;
│ │ │ │ +
74
│ │ │ │ +
75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */
│ │ │ │ +
76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */
│ │ │ │ +
77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */
│ │ │ │ +
78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */
│ │ │ │ +
79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */
│ │ │ │ +
80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */
│ │ │ │ +
81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */
│ │ │ │ +
82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */
│ │ │ │ +
83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */
│ │ │ │ +
84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */
│ │ │ │ +
85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */
│ │ │ │ +
86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */
│ │ │ │ +
87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */
│ │ │ │ +
88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */
│ │ │ │ +
89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */
│ │ │ │ +
90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */
│ │ │ │ +
91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */
│ │ │ │ +
92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */
│ │ │ │ +
93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */
│ │ │ │ +
94#define TDS_ERROR_TOKEN 170 /* 0xAA */
│ │ │ │ +
95#define TDS_INFO_TOKEN 171 /* 0xAB */
│ │ │ │ +
96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */
│ │ │ │ +
97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */
│ │ │ │ +
98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \
│ │ │ │ +
99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */
│ │ │ │ +
100#define TDS_ROW_TOKEN 209 /* 0xD1 */
│ │ │ │ +
101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */
│ │ │ │ +
102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */
│ │ │ │ +
103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */
│ │ │ │ +
104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */
│ │ │ │ +
105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */
│ │ │ │ +
106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */
│ │ │ │ +
107#define TDS_EED_TOKEN 229 /* 0xE5 */
│ │ │ │ +
108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */
│ │ │ │ +
109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */
│ │ │ │ +
110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */
│ │ │ │ +
111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */
│ │ │ │ +
112#define TDS_RESULT_TOKEN 238 /* 0xEE */
│ │ │ │ +
113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */
│ │ │ │ +
114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */
│ │ │ │ +
115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */
│ │ │ │ +
116
│ │ │ │ +
117/* CURSOR support: TDS 5.0 only*/
│ │ │ │ +
118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */
│ │ │ │ +
119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */
│ │ │ │ +
120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */
│ │ │ │ +
121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */
│ │ │ │ +
122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */
│ │ │ │ +
123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */
│ │ │ │ +
124
│ │ │ │ +
125
│ │ │ │ +
126/* environment type field */
│ │ │ │ +
127#define TDS_ENV_DATABASE 1
│ │ │ │ +
128#define TDS_ENV_LANG 2
│ │ │ │ +
129#define TDS_ENV_CHARSET 3
│ │ │ │ +
130#define TDS_ENV_PACKSIZE 4
│ │ │ │ +
131#define TDS_ENV_LCID 5
│ │ │ │ +
132#define TDS_ENV_SQLCOLLATION 7
│ │ │ │ +
133#define TDS_ENV_BEGINTRANS 8
│ │ │ │ +
134#define TDS_ENV_COMMITTRANS 9
│ │ │ │ +
135#define TDS_ENV_ROLLBACKTRANS 10
│ │ │ │ +
136#define TDS_ENV_ROUTING 20
│ │ │ │ +
137
│ │ │ │ +
138/* Microsoft internal stored procedure id's */
│ │ │ │ +
139#define TDS_SP_CURSOR 1
│ │ │ │ +
140#define TDS_SP_CURSOROPEN 2
│ │ │ │ +
141#define TDS_SP_CURSORPREPARE 3
│ │ │ │ +
142#define TDS_SP_CURSOREXECUTE 4
│ │ │ │ +
143#define TDS_SP_CURSORPREPEXEC 5
│ │ │ │ +
144#define TDS_SP_CURSORUNPREPARE 6
│ │ │ │ +
145#define TDS_SP_CURSORFETCH 7
│ │ │ │ +
146#define TDS_SP_CURSOROPTION 8
│ │ │ │ +
147#define TDS_SP_CURSORCLOSE 9
│ │ │ │ +
148#define TDS_SP_EXECUTESQL 10
│ │ │ │ +
149#define TDS_SP_PREPARE 11
│ │ │ │ +
150#define TDS_SP_EXECUTE 12
│ │ │ │ +
151#define TDS_SP_PREPEXEC 13
│ │ │ │ +
152#define TDS_SP_PREPEXECRPC 14
│ │ │ │ +
153#define TDS_SP_UNPREPARE 15
│ │ │ │ +
154
│ │ │ │ +
158enum {
│ │ │ │ +
159 TDS_DONE_FINAL = 0x00
│ │ │ │ +
160 , TDS_DONE_MORE_RESULTS = 0x01
│ │ │ │ +
161 , TDS_DONE_ERROR = 0x02
│ │ │ │ +
162 , TDS_DONE_INXACT = 0x04
│ │ │ │ +
163 , TDS_DONE_PROC = 0x08
│ │ │ │ +
164 , TDS_DONE_COUNT = 0x10
│ │ │ │ +
165 , TDS_DONE_CANCELLED = 0x20
│ │ │ │ +
166 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */
│ │ │ │ +
167 , TDS_DONE_SRVERROR = 0x100
│ │ │ │ +
169 /* after the above flags, a TDS_DONE packet has a field describing the state of the transaction */
│ │ │ │ +
170 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */
│ │ │ │ +
171 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */
│ │ │ │ +
172 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */
│ │ │ │ +
173 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */
│ │ │ │ +
174 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */
│ │ │ │ +
175};
│ │ │ │ +
176
│ │ │ │ +
177/*
│ │ │ │ +
178 * <rant> Sybase does an awful job of this stuff, non null ints of size 1 2
│ │ │ │ +
179 * and 4 have there own codes but nullable ints are lumped into INTN
│ │ │ │ +
180 * sheesh! </rant>
│ │ │ │ +
181 */
│ │ │ │ +
182typedef enum
│ │ │ │ +
183{
│ │ │ │ +
184 SYBCHAR = 47, /* 0x2F */
│ │ │ │ +
185 SYBVARCHAR = 39, /* 0x27 */
│ │ │ │ +
186 SYBINTN = 38, /* 0x26 */
│ │ │ │ +
187 SYBINT1 = 48, /* 0x30 */
│ │ │ │ +
188 SYBINT2 = 52, /* 0x34 */
│ │ │ │ +
189 SYBINT4 = 56, /* 0x38 */
│ │ │ │ +
190 SYBFLT8 = 62, /* 0x3E */
│ │ │ │ +
191 SYBDATETIME = 61, /* 0x3D */
│ │ │ │ +
192 SYBBIT = 50, /* 0x32 */
│ │ │ │ +
193 SYBTEXT = 35, /* 0x23 */
│ │ │ │ +
194 SYBNTEXT = 99, /* 0x63 */
│ │ │ │ +
195 SYBIMAGE = 34, /* 0x22 */
│ │ │ │ +
196 SYBMONEY4 = 122, /* 0x7A */
│ │ │ │ +
197 SYBMONEY = 60, /* 0x3C */
│ │ │ │ +
198 SYBDATETIME4 = 58, /* 0x3A */
│ │ │ │ +
199 SYBREAL = 59, /* 0x3B */
│ │ │ │ +
200 SYBBINARY = 45, /* 0x2D */
│ │ │ │ +
201 SYBVOID = 31, /* 0x1F */
│ │ │ │ +
202 SYBVARBINARY = 37, /* 0x25 */
│ │ │ │ +
203 SYBBITN = 104, /* 0x68 */
│ │ │ │ +
204 SYBNUMERIC = 108, /* 0x6C */
│ │ │ │ +
205 SYBDECIMAL = 106, /* 0x6A */
│ │ │ │ +
206 SYBFLTN = 109, /* 0x6D */
│ │ │ │ +
207 SYBMONEYN = 110, /* 0x6E */
│ │ │ │ +
208 SYBDATETIMN = 111, /* 0x6F */
│ │ │ │ +
209
│ │ │ │ +
210/*
│ │ │ │ +
211 * MS only types
│ │ │ │ +
212 */
│ │ │ │ +
213 SYBINT8 = 127, /* 0x7F */
│ │ │ │ +
214 XSYBCHAR = 175, /* 0xAF */
│ │ │ │ +
215 XSYBVARCHAR = 167, /* 0xA7 */
│ │ │ │ +
216 XSYBNVARCHAR = 231, /* 0xE7 */
│ │ │ │ +
217 XSYBNCHAR = 239, /* 0xEF */
│ │ │ │ +
218 XSYBVARBINARY = 165, /* 0xA5 */
│ │ │ │ +
219 XSYBBINARY = 173, /* 0xAD */
│ │ │ │ +
220 SYBUNIQUE = 36, /* 0x24 */
│ │ │ │ +
221 SYBVARIANT = 98, /* 0x62 */
│ │ │ │ +
222 SYBMSUDT = 240, /* 0xF0 */
│ │ │ │ +
223 SYBMSXML = 241, /* 0xF1 */
│ │ │ │ +
224 SYBMSDATE = 40, /* 0x28 */
│ │ │ │ +
225 SYBMSTIME = 41, /* 0x29 */
│ │ │ │ +
226 SYBMSDATETIME2 = 42, /* 0x2a */
│ │ │ │ +
227 SYBMSDATETIMEOFFSET = 43,/* 0x2b */
│ │ │ │ +
228 SYBMSTABLE = 243, /* 0xF3 */
│ │ │ │ +
229
│ │ │ │ +
230/*
│ │ │ │ +
231 * Sybase only types
│ │ │ │ +
232 */
│ │ │ │ +
233 SYBNVARCHAR = 103, /* 0x67 */
│ │ │ │ +
234 SYBLONGBINARY = 225, /* 0xE1 */
│ │ │ │ +
235 SYBUINT1 = 64, /* 0x40 */
│ │ │ │ +
236 SYBUINT2 = 65, /* 0x41 */
│ │ │ │ +
237 SYBUINT4 = 66, /* 0x42 */
│ │ │ │ +
238 SYBUINT8 = 67, /* 0x43 */
│ │ │ │ +
239 SYBBLOB = 36, /* 0x24 */
│ │ │ │ +
240 SYBBOUNDARY = 104, /* 0x68 */
│ │ │ │ +
241 SYBDATE = 49, /* 0x31 */
│ │ │ │ +
242 SYBDATEN = 123, /* 0x7B */
│ │ │ │ +
243 SYB5INT8 = 191, /* 0xBF */
│ │ │ │ +
244 SYBINTERVAL = 46, /* 0x2E */
│ │ │ │ +
245 SYBLONGCHAR = 175, /* 0xAF */
│ │ │ │ +
246 SYBSENSITIVITY = 103, /* 0x67 */
│ │ │ │ +
247 SYBSINT1 = 176, /* 0xB0 */
│ │ │ │ +
248 SYBTIME = 51, /* 0x33 */
│ │ │ │ +
249 SYBTIMEN = 147, /* 0x93 */
│ │ │ │ +
250 SYBUINTN = 68, /* 0x44 */
│ │ │ │ +
251 SYBUNITEXT = 174, /* 0xAE */
│ │ │ │ +
252 SYBXML = 163, /* 0xA3 */
│ │ │ │ +
253 SYB5BIGDATETIME = 187, /* 0xBB */
│ │ │ │ +
254 SYB5BIGTIME = 188, /* 0xBC */
│ │ │ │ +
255
│ │ │ │ +
256} TDS_SERVER_TYPE;
│ │ │ │ +
257
│ │ │ │ +
258typedef enum
│ │ │ │ +
259{
│ │ │ │ +
260 USER_CHAR_TYPE = 1, /* 0x01 */
│ │ │ │ +
261 USER_VARCHAR_TYPE = 2, /* 0x02 */
│ │ │ │ +
262 USER_SYSNAME_TYPE = 18, /* 0x12 */
│ │ │ │ +
263 USER_NCHAR_TYPE = 24, /* 0x18 */
│ │ │ │ +
264 USER_NVARCHAR_TYPE = 25, /* 0x19 */
│ │ │ │ +
265 USER_UNICHAR_TYPE = 34, /* 0x22 */
│ │ │ │ +
266 USER_UNIVARCHAR_TYPE = 35, /* 0x23 */
│ │ │ │ +
267 USER_UNITEXT_TYPE = 36, /* 0x24 */
│ │ │ │ +
268} TDS_USER_TYPE;
│ │ │ │ +
269
│ │ │ │ +
270/* compute operator */
│ │ │ │ +
271#define SYBAOPCNT 75 /* 0x4B */
│ │ │ │ +
272#define SYBAOPCNTU 76 /* 0x4C, obsolete */
│ │ │ │ +
273#define SYBAOPSUM 77 /* 0x4D */
│ │ │ │ +
274#define SYBAOPSUMU 78 /* 0x4E, obsolete */
│ │ │ │ +
275#define SYBAOPAVG 79 /* 0x4F */
│ │ │ │ +
276#define SYBAOPAVGU 80 /* 0x50, obsolete */
│ │ │ │ +
277#define SYBAOPMIN 81 /* 0x51 */
│ │ │ │ +
278#define SYBAOPMAX 82 /* 0x52 */
│ │ │ │ +
279
│ │ │ │ +
280/* mssql2k compute operator */
│ │ │ │ +
281#define SYBAOPCNT_BIG 9 /* 0x09 */
│ │ │ │ +
282#define SYBAOPSTDEV 48 /* 0x30 */
│ │ │ │ +
283#define SYBAOPSTDEVP 49 /* 0x31 */
│ │ │ │ +
284#define SYBAOPVAR 50 /* 0x32 */
│ │ │ │ +
285#define SYBAOPVARP 51 /* 0x33 */
│ │ │ │ +
286#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */
│ │ │ │ +
287
│ │ │ │ +
291typedef enum
│ │ │ │ +
292{
│ │ │ │ +
293 TDS_OPT_SET = 1
│ │ │ │ +
294 , TDS_OPT_DEFAULT = 2
│ │ │ │ +
295 , TDS_OPT_LIST = 3
│ │ │ │ +
296 , TDS_OPT_INFO = 4
│ │ │ │ +
297} TDS_OPTION_CMD;
│ │ │ │ +
298
│ │ │ │ +
299typedef enum
│ │ │ │ +
300{
│ │ │ │ +
301 TDS_OPT_DATEFIRST = 1 /* 0x01 */
│ │ │ │ +
302 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */
│ │ │ │ +
303 , TDS_OPT_STAT_TIME = 3 /* 0x03 */
│ │ │ │ +
304 , TDS_OPT_STAT_IO = 4 /* 0x04 */
│ │ │ │ +
305 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */
│ │ │ │ +
306 , TDS_OPT_NATLANG = 6 /* 0x06 */
│ │ │ │ +
307 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */
│ │ │ │ +
308 , TDS_OPT_ISOLATION = 8 /* 0x08 */
│ │ │ │ +
309 , TDS_OPT_AUTHON = 9 /* 0x09 */
│ │ │ │ +
310 , TDS_OPT_CHARSET = 10 /* 0x0a */
│ │ │ │ +
311 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */
│ │ │ │ +
312 , TDS_OPT_NOEXEC = 14 /* 0x0e */
│ │ │ │ +
313 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */
│ │ │ │ +
314 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */
│ │ │ │ +
315 , TDS_OPT_PARSEONLY = 18 /* 0x12 */
│ │ │ │ +
316 , TDS_OPT_GETDATA = 20 /* 0x14 */
│ │ │ │ +
317 , TDS_OPT_NOCOUNT = 21 /* 0x15 */
│ │ │ │ +
318 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */
│ │ │ │ +
319 , TDS_OPT_FORMATONLY = 24 /* 0x18 */
│ │ │ │ +
320 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */
│ │ │ │ +
321 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */
│ │ │ │ +
322 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */
│ │ │ │ +
323 , TDS_OPT_RESTREES = 28 /* 0x1c */
│ │ │ │ +
324 , TDS_OPT_IDENTITYON = 29 /* 0x1d */
│ │ │ │ +
325 , TDS_OPT_CURREAD = 30 /* 0x1e */
│ │ │ │ +
326 , TDS_OPT_CURWRITE = 31 /* 0x1f */
│ │ │ │ +
327 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */
│ │ │ │ +
328 , TDS_OPT_AUTHOFF = 33 /* 0x21 */
│ │ │ │ +
329 , TDS_OPT_ANSINULL = 34 /* 0x22 */
│ │ │ │ +
330 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */
│ │ │ │ +
331 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */
│ │ │ │ +
332 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */
│ │ │ │ +
333 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */
│ │ │ │ +
334} TDS_OPTION;
│ │ │ │ +
335
│ │ │ │ +
336enum {
│ │ │ │ +
337 TDS_OPT_ARITHOVERFLOW = 0x01,
│ │ │ │ +
338 TDS_OPT_NUMERICTRUNC = 0x02
│ │ │ │ +
339};
│ │ │ │ +
340
│ │ │ │ +
341enum TDS_OPT_DATEFIRST_CHOICE
│ │ │ │ +
342{
│ │ │ │ +
343 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =
│ │ │ │ +
344 6, TDS_OPT_SUNDAY = 7
│ │ │ │ +
345};
│ │ │ │ +
346
│ │ │ │ +
347enum TDS_OPT_DATEFORMAT_CHOICE
│ │ │ │ +
348{
│ │ │ │ +
349 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
│ │ │ │ +
350};
│ │ │ │ +
351enum TDS_OPT_ISOLATION_CHOICE
│ │ │ │ +
352{
│ │ │ │ +
353 TDS_OPT_LEVEL0 = 0,
│ │ │ │ +
354 TDS_OPT_LEVEL1 = 1,
│ │ │ │ +
355 TDS_OPT_LEVEL2 = 2,
│ │ │ │ +
356 TDS_OPT_LEVEL3 = 3
│ │ │ │ +
357};
│ │ │ │ +
358
│ │ │ │ +
359
│ │ │ │ +
360typedef enum tds_packet_type
│ │ │ │ +
361{
│ │ │ │ +
362 TDS_QUERY = 1,
│ │ │ │ +
363 TDS_LOGIN = 2,
│ │ │ │ +
364 TDS_RPC = 3,
│ │ │ │ +
365 TDS_REPLY = 4,
│ │ │ │ +
366 TDS_CANCEL = 6,
│ │ │ │ +
367 TDS_BULK = 7,
│ │ │ │ +
368 TDS7_TRANS = 14, /* transaction management */
│ │ │ │ +
369 TDS_NORMAL = 15,
│ │ │ │ +
370 TDS7_LOGIN = 16,
│ │ │ │ +
371 TDS7_AUTH = 17,
│ │ │ │ +
372 TDS71_PRELOGIN = 18,
│ │ │ │ +
373 TDS72_SMP = 0x53
│ │ │ │ +
374} TDS_PACKET_TYPE;
│ │ │ │ +
375
│ │ │ │ +
│ │ │ │ +
379typedef struct
│ │ │ │ +
380{
│ │ │ │ +
381 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */
│ │ │ │ +
382 TDS_USMALLINT flags;
│ │ │ │ +
383 TDS_UCHAR charset_id; /* or zero */
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
385
│ │ │ │ +
│ │ │ │ +
389typedef struct
│ │ │ │ +
390{
│ │ │ │ +
391 TDS_UCHAR type;
│ │ │ │ +
392 TDS_UCHAR status;
│ │ │ │ +
393 TDS_USMALLINT length;
│ │ │ │ +
394 TDS_USMALLINT spid;
│ │ │ │ +
395 TDS_UCHAR packet_id;
│ │ │ │ +
396 TDS_UCHAR window;
│ │ │ │ +
397} TDS_HEADER;
│ │ │ │ +
│ │ │ │ +
398
│ │ │ │ +
399enum {
│ │ │ │ +
400 TDS_STATUS_EOM = 1,
│ │ │ │ +
401 TDS_STATUS_RESETCONNECTION = 8,
│ │ │ │ +
402};
│ │ │ │ +
403
│ │ │ │ +
│ │ │ │ +
407typedef struct
│ │ │ │ +
408{
│ │ │ │ +
409 TDS_UCHAR signature; /* TDS72_SMP */
│ │ │ │ +
410 TDS_UCHAR type;
│ │ │ │ +
411 TDS_USMALLINT sid;
│ │ │ │ +
412 TDS_UINT size;
│ │ │ │ +
413 TDS_UINT seq;
│ │ │ │ +
414 TDS_UINT wnd;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
416
│ │ │ │ +
417enum {
│ │ │ │ +
418 TDS_SMP_SYN = 1,
│ │ │ │ +
419 TDS_SMP_ACK = 2,
│ │ │ │ +
420 TDS_SMP_FIN = 4,
│ │ │ │ +
421 TDS_SMP_DATA = 8,
│ │ │ │ +
422};
│ │ │ │ +
423
│ │ │ │ +
424/* SF stands for "sort flag" */
│ │ │ │ +
425#define TDS_SF_BIN (TDS_USMALLINT) 0x100
│ │ │ │ +
426#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080
│ │ │ │ +
427#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040
│ │ │ │ +
428#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020
│ │ │ │ +
429#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010
│ │ │ │ +
430
│ │ │ │ +
431/* UT stands for user type */
│ │ │ │ +
432#define TDS_UT_TIMESTAMP 80
│ │ │ │ +
433
│ │ │ │ +
434
│ │ │ │ +
435/* mssql login options flags */
│ │ │ │ +
436enum option_flag1_values {
│ │ │ │ +
437 TDS_BYTE_ORDER_X86 = 0,
│ │ │ │ +
438 TDS_CHARSET_ASCII = 0,
│ │ │ │ +
439 TDS_DUMPLOAD_ON = 0,
│ │ │ │ +
440 TDS_FLOAT_IEEE_754 = 0,
│ │ │ │ +
441 TDS_INIT_DB_WARN = 0,
│ │ │ │ +
442 TDS_SET_LANG_OFF = 0,
│ │ │ │ +
443 TDS_USE_DB_SILENT = 0,
│ │ │ │ +
444 TDS_BYTE_ORDER_68000 = 0x01,
│ │ │ │ +
445 TDS_CHARSET_EBDDIC = 0x02,
│ │ │ │ +
446 TDS_FLOAT_VAX = 0x04,
│ │ │ │ +
447 TDS_FLOAT_ND5000 = 0x08,
│ │ │ │ +
448 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */
│ │ │ │ +
449 TDS_USE_DB_NOTIFY = 0x20,
│ │ │ │ +
450 TDS_INIT_DB_FATAL = 0x40,
│ │ │ │ +
451 TDS_SET_LANG_ON = 0x80
│ │ │ │ +
452};
│ │ │ │ +
453
│ │ │ │ +
454enum option_flag2_values {
│ │ │ │ +
455 TDS_INIT_LANG_WARN = 0,
│ │ │ │ +
456 TDS_INTEGRATED_SECURTY_OFF = 0,
│ │ │ │ +
457 TDS_ODBC_OFF = 0,
│ │ │ │ +
458 TDS_USER_NORMAL = 0, /* SQL Server login */
│ │ │ │ +
459 TDS_INIT_LANG_REQUIRED = 0x01,
│ │ │ │ +
460 TDS_ODBC_ON = 0x02,
│ │ │ │ +
461 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */
│ │ │ │ +
462 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */
│ │ │ │ +
463 TDS_USER_SERVER = 0x10, /* reserved */
│ │ │ │ +
464 TDS_USER_REMUSER = 0x20, /* DQ login */
│ │ │ │ +
465 TDS_USER_SQLREPL = 0x40, /* replication login */
│ │ │ │ +
466 TDS_INTEGRATED_SECURITY_ON = 0x80
│ │ │ │ +
467};
│ │ │ │ +
468
│ │ │ │ +
469enum option_flag3_values {
│ │ │ │ +
470 TDS_RESTRICTED_COLLATION = 0,
│ │ │ │ +
471 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */
│ │ │ │ +
472 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */
│ │ │ │ +
473 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */
│ │ │ │ +
474 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */
│ │ │ │ +
475 TDS_EXTENSION = 0x10, /* TDS 7.4 */
│ │ │ │ +
476};
│ │ │ │ +
477
│ │ │ │ +
478enum type_flags {
│ │ │ │ +
479 TDS_OLEDB_ON = 0x10,
│ │ │ │ +
480 TDS_READONLY_INTENT = 0x20,
│ │ │ │ +
481};
│ │ │ │ +
482
│ │ │ │ +
483/* Sybase dynamic types */
│ │ │ │ +
484enum dynamic_types {
│ │ │ │ +
485 TDS_DYN_PREPARE = 0x01,
│ │ │ │ +
486 TDS_DYN_EXEC = 0x02,
│ │ │ │ +
487 TDS_DYN_DEALLOC = 0x04,
│ │ │ │ +
488 TDS_DYN_EXEC_IMMED = 0x08,
│ │ │ │ +
489 TDS_DYN_PROCNAME = 0x10,
│ │ │ │ +
490 TDS_DYN_ACK = 0x20,
│ │ │ │ +
491 TDS_DYN_DESCIN = 0x40,
│ │ │ │ +
492 TDS_DYN_DESCOUT = 0x80,
│ │ │ │ +
493};
│ │ │ │ +
494
│ │ │ │ +
495/* http://jtds.sourceforge.net/apiCursors.html */
│ │ │ │ +
496/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */
│ │ │ │ +
497enum {
│ │ │ │ +
498 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */
│ │ │ │ +
499 TDS_CUR_TYPE_DYNAMIC = 0x0002,
│ │ │ │ +
500 TDS_CUR_TYPE_FORWARD = 0x0004,
│ │ │ │ +
501 TDS_CUR_TYPE_STATIC = 0x0008,
│ │ │ │ +
502 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,
│ │ │ │ +
503 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,
│ │ │ │ +
504 TDS_CUR_TYPE_AUTO_FETCH = 0x2000
│ │ │ │ +
505};
│ │ │ │ +
506
│ │ │ │ +
507enum {
│ │ │ │ +
508 TDS_CUR_CONCUR_READ_ONLY = 1,
│ │ │ │ +
509 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,
│ │ │ │ +
510 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */
│ │ │ │ +
511 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8
│ │ │ │ +
512};
│ │ │ │ +
513
│ │ │ │ +
514/* TDS 4/5 login*/
│ │ │ │ +
515#define TDS_MAXNAME 30 /* maximum login name lenghts */
│ │ │ │ +
516#define TDS_PROGNLEN 10 /* maximum program lenght */
│ │ │ │ +
517#define TDS_PKTLEN 6 /* maximum packet lenght in login */
│ │ │ │ +
518
│ │ │ │ +
519/* TDS 5 login security flags */
│ │ │ │ +
520enum {
│ │ │ │ +
521 TDS5_SEC_LOG_ENCRYPT = 1,
│ │ │ │ +
522 TDS5_SEC_LOG_CHALLENGE = 2,
│ │ │ │ +
523 TDS5_SEC_LOG_LABELS = 4,
│ │ │ │ +
524 TDS5_SEC_LOG_APPDEFINED = 8,
│ │ │ │ +
525 TDS5_SEC_LOG_SECSESS = 16,
│ │ │ │ +
526 TDS5_SEC_LOG_ENCRYPT2 = 32,
│ │ │ │ +
527 TDS5_SEC_LOG_ENCRYPT3 = 128,
│ │ │ │ +
528};
│ │ │ │ +
529
│ │ │ │ +
531enum {
│ │ │ │ +
532 TDS5_MSG_SEC_ENCRYPT = 1,
│ │ │ │ +
533 TDS5_MSG_SEC_LOGPWD = 2,
│ │ │ │ +
534 TDS5_MSG_SEC_REMPWD = 3,
│ │ │ │ +
535 TDS5_MSG_SEC_CHALLENGE = 4,
│ │ │ │ +
536 TDS5_MSG_SEC_RESPONSE = 5,
│ │ │ │ +
537 TDS5_MSG_SEC_GETLABEL = 6,
│ │ │ │ +
538 TDS5_MSG_SEC_LABEL = 7,
│ │ │ │ +
539 TDS5_MSG_SQL_TBLNAME = 8,
│ │ │ │ +
540 TDS5_MSG_GW_RESERVED = 9,
│ │ │ │ +
541 TDS5_MSG_OMNI_CAPABILITIES = 10,
│ │ │ │ +
542 TDS5_MSG_SEC_OPAQUE = 11,
│ │ │ │ +
543 TDS5_MSG_HAFAILOVER = 12,
│ │ │ │ +
544 TDS5_MSG_EMPTY = 13,
│ │ │ │ +
547 TDS5_MSG_SEC_ENCRYPT2 = 14,
│ │ │ │ +
548 TDS5_MSG_SEC_LOGPWD2 = 15,
│ │ │ │ +
549 TDS5_MSG_SEC_SUP_CIPHER = 16,
│ │ │ │ +
550 TDS5_MSG_MIG_REQ = 17,
│ │ │ │ +
552 TDS5_MSG_MIG_SYNC = 18,
│ │ │ │ +
553 TDS5_MSG_MIG_CONT = 19,
│ │ │ │ +
554 TDS5_MSG_MIG_IGN = 20,
│ │ │ │ +
555 TDS5_MSG_MIG_FAIL = 21,
│ │ │ │ +
557 TDS5_MSG_SEC_REMPWD2 = 22,
│ │ │ │ +
558 TDS5_MSG_MIG_RESUME = 23,
│ │ │ │ +
559 TDS5_MSG_SEC_ENCRYPT3 = 30,
│ │ │ │ +
560 TDS5_MSG_SEC_LOGPWD3 = 31,
│ │ │ │ +
561 TDS5_MSG_SEC_REMPWD3 = 32,
│ │ │ │ +
562 TDS5_MSG_DR_MAP = 33,
│ │ │ │ +
563};
│ │ │ │ +
564
│ │ │ │ +
575enum {
│ │ │ │ +
576 TDS5_SEC_SECSESS = 1,
│ │ │ │ +
577 TDS5_SEC_FORWARD = 2,
│ │ │ │ +
578 TDS5_SEC_SIGN = 3,
│ │ │ │ +
579 TDS5_SEC_OTHER = 4,
│ │ │ │ +
580};
│ │ │ │ +
581
│ │ │ │ +
585enum {
│ │ │ │ +
586 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,
│ │ │ │ +
587 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,
│ │ │ │ +
588 TDS5_SEC_DELEGATION = 0x4,
│ │ │ │ +
589 TDS5_SEC_INTEGRITY = 0x8,
│ │ │ │ +
590 TDS5_SEC_CONFIDENTIALITY = 0x10,
│ │ │ │ +
591 TDS5_SEC_DETECT_REPLAY = 0x20,
│ │ │ │ +
592 TDS5_SEC_DETECT_SEQUENCE = 0x40,
│ │ │ │ +
593 TDS5_SEC_DATA_ORIGIN = 0x80,
│ │ │ │ +
594 TDS5_SEC_CHANNEL_BINDING = 0x100,
│ │ │ │ +
595};
│ │ │ │ +
596
│ │ │ │ +
597enum {
│ │ │ │ +
598 TDS5_SEC_VERSION = 50,
│ │ │ │ +
599};
│ │ │ │ +
600
│ │ │ │ +
601/* MS encryption byte (pre login) */
│ │ │ │ +
602enum {
│ │ │ │ +
603 TDS7_ENCRYPT_OFF,
│ │ │ │ +
604 TDS7_ENCRYPT_ON,
│ │ │ │ +
605 TDS7_ENCRYPT_NOT_SUP,
│ │ │ │ +
606 TDS7_ENCRYPT_REQ,
│ │ │ │ +
607};
│ │ │ │ +
Definition proto.h:26
│ │ │ │ +
Definition proto.h:33
│ │ │ │ +
Definition proto.h:39
│ │ │ │ +
Definition proto.h:45
│ │ │ │ +
Definition proto.h:50
│ │ │ │ +
Definition proto.h:56
│ │ │ │ +
Definition proto.h:62
│ │ │ │ +
TDS 7.1 collation information.
Definition proto.h:380
│ │ │ │ +
TDS packet header.
Definition proto.h:390
│ │ │ │ +
TDS 7.2 SMP packet header.
Definition proto.h:408
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,218 +1,608 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -replacements.h │ │ │ │ │ +proto.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_fELDB9J1dGrLHROMPkGfXj_ │ │ │ │ │ -21#define _tdsguard_fELDB9J1dGrLHROMPkGfXj_ │ │ │ │ │ -22 │ │ │ │ │ -23#ifndef _freetds_config_h_ │ │ │ │ │ -24#error should include config.h before │ │ │ │ │ -25#endif │ │ │ │ │ -26 │ │ │ │ │ -27#include │ │ │ │ │ -28#include "tds_sysdep_public.h" │ │ │ │ │ -29#include │ │ │ │ │ -30 │ │ │ │ │ -31#include │ │ │ │ │ -32 │ │ │ │ │ -33/* these headers are needed for basename */ │ │ │ │ │ -34#ifdef HAVE_STRING_H │ │ │ │ │ -35# include │ │ │ │ │ -36#endif │ │ │ │ │ -37#ifdef HAVE_LIBGEN_H │ │ │ │ │ -38# include │ │ │ │ │ -39#endif │ │ │ │ │ -40#ifdef HAVE_GETOPT_H │ │ │ │ │ -41# include │ │ │ │ │ -42#endif │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21/* │ │ │ │ │ +22 * This file contains defines and structures strictly related to TDS protocol │ │ │ │ │ +23 */ │ │ │ │ │ +24 │ │ │ │ │ +25typedef struct tdsnumeric │ │ │ │ │ +26{ │ │ │ │ │ +27 unsigned char precision; │ │ │ │ │ +28 unsigned char scale; │ │ │ │ │ +29 unsigned char array[33]; │ │ │ │ │ +30} TDS_NUMERIC; │ │ │ │ │ +31 │ │ │ │ │ +32typedef struct tdsoldmoney │ │ │ │ │ +33{ │ │ │ │ │ +34 TDS_INT mnyhigh; │ │ │ │ │ +35 TDS_UINT mnylow; │ │ │ │ │ +36} TDS_OLD_MONEY; │ │ │ │ │ +37 │ │ │ │ │ +38typedef union tdsmoney │ │ │ │ │ +39{ │ │ │ │ │ +40 TDS_OLD_MONEY tdsoldmoney; │ │ │ │ │ +41 TDS_INT8 mny; │ │ │ │ │ +42} TDS_MONEY; │ │ │ │ │ 43 │ │ │ │ │ -44#if !HAVE_POLL │ │ │ │ │ -45#include │ │ │ │ │ -46#elif HAVE_POLL_H │ │ │ │ │ -47#include │ │ │ │ │ -48#endif /* !HAVE_POLL */ │ │ │ │ │ -49 │ │ │ │ │ -50#include │ │ │ │ │ -51 │ │ │ │ │ -52#ifdef __cplusplus │ │ │ │ │ -53extern "C" │ │ │ │ │ -54{ │ │ │ │ │ -55#endif │ │ │ │ │ -56 │ │ │ │ │ -57#if !HAVE_ASPRINTF │ │ │ │ │ -58#undef asprintf │ │ │ │ │ -59int tds_asprintf(char **ret, const char *fmt, ...); │ │ │ │ │ -60#define asprintf tds_asprintf │ │ │ │ │ -61#endif /* !HAVE_ASPRINTF */ │ │ │ │ │ -62 │ │ │ │ │ -63#if !HAVE_VASPRINTF │ │ │ │ │ -64#undef vasprintf │ │ │ │ │ -65int tds_vasprintf(char **ret, const char *fmt, va_list ap); │ │ │ │ │ -66#define vasprintf tds_vasprintf │ │ │ │ │ -67#endif /* !HAVE_VASPRINTF */ │ │ │ │ │ +44typedef struct tdsmoney4 │ │ │ │ │ +45{ │ │ │ │ │ +46 TDS_INT mny4; │ │ │ │ │ +47} TDS_MONEY4; │ │ │ │ │ +48 │ │ │ │ │ +49typedef struct tdsdatetime │ │ │ │ │ +50{ │ │ │ │ │ +51 TDS_INT dtdays; │ │ │ │ │ +52 TDS_INT dttime; │ │ │ │ │ +53} TDS_DATETIME; │ │ │ │ │ +54 │ │ │ │ │ +55typedef struct tdsdatetime4 │ │ │ │ │ +56{ │ │ │ │ │ +57 TDS_USMALLINT days; │ │ │ │ │ +58 TDS_USMALLINT minutes; │ │ │ │ │ +59} TDS_DATETIME4; │ │ │ │ │ +60 │ │ │ │ │ +61typedef struct tdsunique │ │ │ │ │ +62{ │ │ │ │ │ +63 TDS_UINT Data1; │ │ │ │ │ +64 TDS_USMALLINT Data2; │ │ │ │ │ +65 TDS_USMALLINT Data3; │ │ │ │ │ +66 TDS_UCHAR Data4[8]; │ │ │ │ │ +67} TDS_UNIQUE; │ │ │ │ │ 68 │ │ │ │ │ -69#if !HAVE_STRTOK_R │ │ │ │ │ -70/* Some MinGW define strtok_r macro thread-safe but not reentrant but we │ │ │ │ │ -71 need both so avoid using the macro */ │ │ │ │ │ -72#undef strtok_r │ │ │ │ │ -73#if defined(_WIN32) && HAVE_STRTOK_S │ │ │ │ │ -74#define strtok_r strtok_s │ │ │ │ │ -75#else │ │ │ │ │ -76char *tds_strtok_r(char *str, const char *sep, char **lasts); │ │ │ │ │ -77#define strtok_r tds_strtok_r │ │ │ │ │ -78#endif │ │ │ │ │ -79#endif /* !HAVE_STRTOK_R */ │ │ │ │ │ -80 │ │ │ │ │ -81#if !HAVE_STRSEP │ │ │ │ │ -82#undef strsep │ │ │ │ │ -83char *tds_strsep(char **stringp, const char *delim); │ │ │ │ │ -84#define strsep tds_strsep │ │ │ │ │ -85#endif /* !HAVE_STRSEP */ │ │ │ │ │ -86 │ │ │ │ │ -87#if !HAVE_STRLCPY │ │ │ │ │ -88size_t tds_strlcpy(char *dest, const char *src, size_t len); │ │ │ │ │ -89#undef strlcpy │ │ │ │ │ -90#define strlcpy(d,s,l) tds_strlcpy(d,s,l) │ │ │ │ │ -91#endif │ │ │ │ │ -92 │ │ │ │ │ -93#if !HAVE_GETADDRINFO │ │ │ │ │ -94typedef struct tds_addrinfo { │ │ │ │ │ -95 int ai_flags; │ │ │ │ │ -96 int ai_family; │ │ │ │ │ -97 int ai_socktype; │ │ │ │ │ -98 int ai_protocol; │ │ │ │ │ -99 size_t ai_addrlen; │ │ │ │ │ -100 struct sockaddr *ai_addr; │ │ │ │ │ -101 char *ai_canonname; │ │ │ │ │ -102 struct tds_addrinfo *ai_next; │ │ │ │ │ -103} tds_addrinfo; │ │ │ │ │ -104 │ │ │ │ │ -105int tds_getaddrinfo(const char *node, const char *service, const struct tds_ │ │ │ │ │ -addrinfo *hints, struct tds_addrinfo **res); │ │ │ │ │ -106int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, │ │ │ │ │ -size_t hostlen, char *serv, size_t servlen, int flags); │ │ │ │ │ -107void tds_freeaddrinfo(struct tds_addrinfo *addr); │ │ │ │ │ -108#define addrinfo tds_addrinfo │ │ │ │ │ -109#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r) │ │ │ │ │ -110#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g) │ │ │ │ │ -111#define freeaddrinfo(a) tds_freeaddrinfo(a) │ │ │ │ │ -112#endif │ │ │ │ │ -113 │ │ │ │ │ -114#ifndef AI_FQDN │ │ │ │ │ -115#define AI_FQDN 0 │ │ │ │ │ -116#endif │ │ │ │ │ -117 │ │ │ │ │ -118#if !HAVE_STRLCAT │ │ │ │ │ -119size_t tds_strlcat(char *dest, const char *src, size_t len); │ │ │ │ │ -120#undef strlcat │ │ │ │ │ -121#define strlcat(d,s,l) tds_strlcat(d,s,l) │ │ │ │ │ -122#endif │ │ │ │ │ -123 │ │ │ │ │ -124#if !HAVE_BASENAME │ │ │ │ │ -125char *tds_basename(char *path); │ │ │ │ │ -126#define basename(path) tds_basename(path) │ │ │ │ │ -127#endif │ │ │ │ │ -128 │ │ │ │ │ -129/* │ │ │ │ │ -130 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp. │ │ │ │ │ -131 * Other Win32 C runtime libraries, notably MinGW, may define it. │ │ │ │ │ -132 * There is no symbol uniquely defined in Microsoft's header files that │ │ │ │ │ -133 * can be used by the preprocessor to know whether we're compiling for │ │ │ │ │ -134 * Microsoft's library or not (or which version). Thus there's no │ │ │ │ │ -135 * way to automatically decide whether or not to define strcasecmp │ │ │ │ │ -136 * in terms of stricmp. │ │ │ │ │ -137 * │ │ │ │ │ -138 * The Microsoft *compiler* defines _MSC_VER. On the assumption that │ │ │ │ │ -139 * anyone using their compiler is also using their library, the below │ │ │ │ │ -140 * tests check _MSC_VER as a proxy. │ │ │ │ │ -141 */ │ │ │ │ │ -142#if defined(_WIN32) │ │ │ │ │ -143# if !defined(strcasecmp) && defined(_MSC_VER) │ │ │ │ │ -144# define strcasecmp(A, B) stricmp((A), (B)) │ │ │ │ │ -145# endif │ │ │ │ │ -146# if !defined(strncasecmp) && defined(_MSC_VER) │ │ │ │ │ -147# define strncasecmp(x,y,z) strnicmp((x),(y),(z)) │ │ │ │ │ -148# endif │ │ │ │ │ -149 │ │ │ │ │ -150#undef gettimeofday │ │ │ │ │ -151int tds_gettimeofday (struct timeval *tv, void *tz); │ │ │ │ │ -152#define gettimeofday tds_gettimeofday │ │ │ │ │ -153 │ │ │ │ │ -154/* Older MinGW-w64 versions don't define these flags. */ │ │ │ │ │ -155#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG) │ │ │ │ │ -156# define AI_ADDRCONFIG 0x00000400 │ │ │ │ │ -157#endif │ │ │ │ │ -158#if defined(__MINGW32__) && !defined(AI_V4MAPPED) │ │ │ │ │ -159# define AI_V4MAPPED 0x00000800 │ │ │ │ │ -160#endif │ │ │ │ │ -161 │ │ │ │ │ -162#endif │ │ │ │ │ -163 │ │ │ │ │ -164#if defined(_WIN32) && defined(_MSC_VER) │ │ │ │ │ -165#define tds_strtoll _strtoi64 │ │ │ │ │ -166#else │ │ │ │ │ -167#define tds_strtoll strtoll │ │ │ │ │ -168#endif │ │ │ │ │ -169 │ │ │ │ │ -170#if !HAVE_GETOPT │ │ │ │ │ -171#undef getopt │ │ │ │ │ -172int tds_getopt(int argc, char * const argv[], const char *optstring); │ │ │ │ │ -173#define getopt tds_getopt │ │ │ │ │ -174 │ │ │ │ │ -175extern char *optarg; │ │ │ │ │ -176extern int optind, offset, opterr, optreset; │ │ │ │ │ -177#endif │ │ │ │ │ -178 │ │ │ │ │ -179#if !HAVE_SOCKETPAIR │ │ │ │ │ -180int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv │ │ │ │ │ -[2]); │ │ │ │ │ -181#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s) │ │ │ │ │ -182#endif │ │ │ │ │ -183 │ │ │ │ │ -184#if !HAVE_DAEMON │ │ │ │ │ -185int tds_daemon(int no_chdir, int no_close); │ │ │ │ │ -186#define daemon(d,c) tds_daemon(d,c) │ │ │ │ │ -187#endif │ │ │ │ │ -188 │ │ │ │ │ -189#if !HAVE_SETENV │ │ │ │ │ -190int tds_setenv(const char *name, const char *value, int overwrite); │ │ │ │ │ -191#define setenv(n,v,o) tds_setenv(n,v,o) │ │ │ │ │ -192int tds_unsetenv(const char *name); │ │ │ │ │ -193#define unsetenv(n) tds_unsetenv(n) │ │ │ │ │ -194#endif │ │ │ │ │ -195 │ │ │ │ │ -196#ifdef __cplusplus │ │ │ │ │ -197} │ │ │ │ │ -198#endif │ │ │ │ │ -199 │ │ │ │ │ -200#include │ │ │ │ │ -201 │ │ │ │ │ -202#endif │ │ │ │ │ -poll.h │ │ │ │ │ -Provide poll call where missing. │ │ │ │ │ -tds_addrinfo │ │ │ │ │ -Definition replacements.h:94 │ │ │ │ │ +69typedef TDS_INT TDS_DATE; │ │ │ │ │ +70typedef TDS_INT TDS_TIME; │ │ │ │ │ +71 │ │ │ │ │ +72typedef TDS_UINT8 TDS_BIGTIME; │ │ │ │ │ +73typedef TDS_UINT8 TDS_BIGDATETIME; │ │ │ │ │ +74 │ │ │ │ │ +75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */ │ │ │ │ │ +76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */ │ │ │ │ │ +77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */ │ │ │ │ │ +78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */ │ │ │ │ │ +79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */ │ │ │ │ │ +80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */ │ │ │ │ │ +81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */ │ │ │ │ │ +82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */ │ │ │ │ │ +83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */ │ │ │ │ │ +84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */ │ │ │ │ │ +85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */ │ │ │ │ │ +86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */ │ │ │ │ │ +87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */ │ │ │ │ │ +88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */ │ │ │ │ │ +89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */ │ │ │ │ │ +90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */ │ │ │ │ │ +91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */ │ │ │ │ │ +92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */ │ │ │ │ │ +93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */ │ │ │ │ │ +94#define TDS_ERROR_TOKEN 170 /* 0xAA */ │ │ │ │ │ +95#define TDS_INFO_TOKEN 171 /* 0xAB */ │ │ │ │ │ +96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */ │ │ │ │ │ +97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */ │ │ │ │ │ +98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \ │ │ │ │ │ +99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */ │ │ │ │ │ +100#define TDS_ROW_TOKEN 209 /* 0xD1 */ │ │ │ │ │ +101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */ │ │ │ │ │ +102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */ │ │ │ │ │ +103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */ │ │ │ │ │ +104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */ │ │ │ │ │ +105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */ │ │ │ │ │ +106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */ │ │ │ │ │ +107#define TDS_EED_TOKEN 229 /* 0xE5 */ │ │ │ │ │ +108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */ │ │ │ │ │ +109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */ │ │ │ │ │ +110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */ │ │ │ │ │ +111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */ │ │ │ │ │ +112#define TDS_RESULT_TOKEN 238 /* 0xEE */ │ │ │ │ │ +113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */ │ │ │ │ │ +114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */ │ │ │ │ │ +115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */ │ │ │ │ │ +116 │ │ │ │ │ +117/* CURSOR support: TDS 5.0 only*/ │ │ │ │ │ +118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */ │ │ │ │ │ +119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */ │ │ │ │ │ +120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */ │ │ │ │ │ +121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */ │ │ │ │ │ +122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */ │ │ │ │ │ +123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */ │ │ │ │ │ +124 │ │ │ │ │ +125 │ │ │ │ │ +126/* environment type field */ │ │ │ │ │ +127#define TDS_ENV_DATABASE 1 │ │ │ │ │ +128#define TDS_ENV_LANG 2 │ │ │ │ │ +129#define TDS_ENV_CHARSET 3 │ │ │ │ │ +130#define TDS_ENV_PACKSIZE 4 │ │ │ │ │ +131#define TDS_ENV_LCID 5 │ │ │ │ │ +132#define TDS_ENV_SQLCOLLATION 7 │ │ │ │ │ +133#define TDS_ENV_BEGINTRANS 8 │ │ │ │ │ +134#define TDS_ENV_COMMITTRANS 9 │ │ │ │ │ +135#define TDS_ENV_ROLLBACKTRANS 10 │ │ │ │ │ +136#define TDS_ENV_ROUTING 20 │ │ │ │ │ +137 │ │ │ │ │ +138/* Microsoft internal stored procedure id's */ │ │ │ │ │ +139#define TDS_SP_CURSOR 1 │ │ │ │ │ +140#define TDS_SP_CURSOROPEN 2 │ │ │ │ │ +141#define TDS_SP_CURSORPREPARE 3 │ │ │ │ │ +142#define TDS_SP_CURSOREXECUTE 4 │ │ │ │ │ +143#define TDS_SP_CURSORPREPEXEC 5 │ │ │ │ │ +144#define TDS_SP_CURSORUNPREPARE 6 │ │ │ │ │ +145#define TDS_SP_CURSORFETCH 7 │ │ │ │ │ +146#define TDS_SP_CURSOROPTION 8 │ │ │ │ │ +147#define TDS_SP_CURSORCLOSE 9 │ │ │ │ │ +148#define TDS_SP_EXECUTESQL 10 │ │ │ │ │ +149#define TDS_SP_PREPARE 11 │ │ │ │ │ +150#define TDS_SP_EXECUTE 12 │ │ │ │ │ +151#define TDS_SP_PREPEXEC 13 │ │ │ │ │ +152#define TDS_SP_PREPEXECRPC 14 │ │ │ │ │ +153#define TDS_SP_UNPREPARE 15 │ │ │ │ │ +154 │ │ │ │ │ +158enum { │ │ │ │ │ +159 TDS_DONE_FINAL = 0x00 │ │ │ │ │ +160 , TDS_DONE_MORE_RESULTS = 0x01 │ │ │ │ │ +161 , TDS_DONE_ERROR = 0x02 │ │ │ │ │ +162 , TDS_DONE_INXACT = 0x04 │ │ │ │ │ +163 , TDS_DONE_PROC = 0x08 │ │ │ │ │ +164 , TDS_DONE_COUNT = 0x10 │ │ │ │ │ +165 , TDS_DONE_CANCELLED = 0x20 │ │ │ │ │ +166 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */ │ │ │ │ │ +167 , TDS_DONE_SRVERROR = 0x100 │ │ │ │ │ +169 /* after the above flags, a TDS_DONE packet has a field describing the │ │ │ │ │ +state of the transaction */ │ │ │ │ │ +170 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */ │ │ │ │ │ +171 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */ │ │ │ │ │ +172 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */ │ │ │ │ │ +173 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */ │ │ │ │ │ +174 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */ │ │ │ │ │ +175}; │ │ │ │ │ +176 │ │ │ │ │ +177/* │ │ │ │ │ +178 * Sybase does an awful job of this stuff, non null ints of size 1 2 │ │ │ │ │ +179 * and 4 have there own codes but nullable ints are lumped into INTN │ │ │ │ │ +180 * sheesh! │ │ │ │ │ +181 */ │ │ │ │ │ +182typedef enum │ │ │ │ │ +183{ │ │ │ │ │ +184 SYBCHAR = 47, /* 0x2F */ │ │ │ │ │ +185 SYBVARCHAR = 39, /* 0x27 */ │ │ │ │ │ +186 SYBINTN = 38, /* 0x26 */ │ │ │ │ │ +187 SYBINT1 = 48, /* 0x30 */ │ │ │ │ │ +188 SYBINT2 = 52, /* 0x34 */ │ │ │ │ │ +189 SYBINT4 = 56, /* 0x38 */ │ │ │ │ │ +190 SYBFLT8 = 62, /* 0x3E */ │ │ │ │ │ +191 SYBDATETIME = 61, /* 0x3D */ │ │ │ │ │ +192 SYBBIT = 50, /* 0x32 */ │ │ │ │ │ +193 SYBTEXT = 35, /* 0x23 */ │ │ │ │ │ +194 SYBNTEXT = 99, /* 0x63 */ │ │ │ │ │ +195 SYBIMAGE = 34, /* 0x22 */ │ │ │ │ │ +196 SYBMONEY4 = 122, /* 0x7A */ │ │ │ │ │ +197 SYBMONEY = 60, /* 0x3C */ │ │ │ │ │ +198 SYBDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ +199 SYBREAL = 59, /* 0x3B */ │ │ │ │ │ +200 SYBBINARY = 45, /* 0x2D */ │ │ │ │ │ +201 SYBVOID = 31, /* 0x1F */ │ │ │ │ │ +202 SYBVARBINARY = 37, /* 0x25 */ │ │ │ │ │ +203 SYBBITN = 104, /* 0x68 */ │ │ │ │ │ +204 SYBNUMERIC = 108, /* 0x6C */ │ │ │ │ │ +205 SYBDECIMAL = 106, /* 0x6A */ │ │ │ │ │ +206 SYBFLTN = 109, /* 0x6D */ │ │ │ │ │ +207 SYBMONEYN = 110, /* 0x6E */ │ │ │ │ │ +208 SYBDATETIMN = 111, /* 0x6F */ │ │ │ │ │ +209 │ │ │ │ │ +210/* │ │ │ │ │ +211 * MS only types │ │ │ │ │ +212 */ │ │ │ │ │ +213 SYBINT8 = 127, /* 0x7F */ │ │ │ │ │ +214 XSYBCHAR = 175, /* 0xAF */ │ │ │ │ │ +215 XSYBVARCHAR = 167, /* 0xA7 */ │ │ │ │ │ +216 XSYBNVARCHAR = 231, /* 0xE7 */ │ │ │ │ │ +217 XSYBNCHAR = 239, /* 0xEF */ │ │ │ │ │ +218 XSYBVARBINARY = 165, /* 0xA5 */ │ │ │ │ │ +219 XSYBBINARY = 173, /* 0xAD */ │ │ │ │ │ +220 SYBUNIQUE = 36, /* 0x24 */ │ │ │ │ │ +221 SYBVARIANT = 98, /* 0x62 */ │ │ │ │ │ +222 SYBMSUDT = 240, /* 0xF0 */ │ │ │ │ │ +223 SYBMSXML = 241, /* 0xF1 */ │ │ │ │ │ +224 SYBMSDATE = 40, /* 0x28 */ │ │ │ │ │ +225 SYBMSTIME = 41, /* 0x29 */ │ │ │ │ │ +226 SYBMSDATETIME2 = 42, /* 0x2a */ │ │ │ │ │ +227 SYBMSDATETIMEOFFSET = 43,/* 0x2b */ │ │ │ │ │ +228 SYBMSTABLE = 243, /* 0xF3 */ │ │ │ │ │ +229 │ │ │ │ │ +230/* │ │ │ │ │ +231 * Sybase only types │ │ │ │ │ +232 */ │ │ │ │ │ +233 SYBNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ +234 SYBLONGBINARY = 225, /* 0xE1 */ │ │ │ │ │ +235 SYBUINT1 = 64, /* 0x40 */ │ │ │ │ │ +236 SYBUINT2 = 65, /* 0x41 */ │ │ │ │ │ +237 SYBUINT4 = 66, /* 0x42 */ │ │ │ │ │ +238 SYBUINT8 = 67, /* 0x43 */ │ │ │ │ │ +239 SYBBLOB = 36, /* 0x24 */ │ │ │ │ │ +240 SYBBOUNDARY = 104, /* 0x68 */ │ │ │ │ │ +241 SYBDATE = 49, /* 0x31 */ │ │ │ │ │ +242 SYBDATEN = 123, /* 0x7B */ │ │ │ │ │ +243 SYB5INT8 = 191, /* 0xBF */ │ │ │ │ │ +244 SYBINTERVAL = 46, /* 0x2E */ │ │ │ │ │ +245 SYBLONGCHAR = 175, /* 0xAF */ │ │ │ │ │ +246 SYBSENSITIVITY = 103, /* 0x67 */ │ │ │ │ │ +247 SYBSINT1 = 176, /* 0xB0 */ │ │ │ │ │ +248 SYBTIME = 51, /* 0x33 */ │ │ │ │ │ +249 SYBTIMEN = 147, /* 0x93 */ │ │ │ │ │ +250 SYBUINTN = 68, /* 0x44 */ │ │ │ │ │ +251 SYBUNITEXT = 174, /* 0xAE */ │ │ │ │ │ +252 SYBXML = 163, /* 0xA3 */ │ │ │ │ │ +253 SYB5BIGDATETIME = 187, /* 0xBB */ │ │ │ │ │ +254 SYB5BIGTIME = 188, /* 0xBC */ │ │ │ │ │ +255 │ │ │ │ │ +256} TDS_SERVER_TYPE; │ │ │ │ │ +257 │ │ │ │ │ +258typedef enum │ │ │ │ │ +259{ │ │ │ │ │ +260 USER_CHAR_TYPE = 1, /* 0x01 */ │ │ │ │ │ +261 USER_VARCHAR_TYPE = 2, /* 0x02 */ │ │ │ │ │ +262 USER_SYSNAME_TYPE = 18, /* 0x12 */ │ │ │ │ │ +263 USER_NCHAR_TYPE = 24, /* 0x18 */ │ │ │ │ │ +264 USER_NVARCHAR_TYPE = 25, /* 0x19 */ │ │ │ │ │ +265 USER_UNICHAR_TYPE = 34, /* 0x22 */ │ │ │ │ │ +266 USER_UNIVARCHAR_TYPE = 35, /* 0x23 */ │ │ │ │ │ +267 USER_UNITEXT_TYPE = 36, /* 0x24 */ │ │ │ │ │ +268} TDS_USER_TYPE; │ │ │ │ │ +269 │ │ │ │ │ +270/* compute operator */ │ │ │ │ │ +271#define SYBAOPCNT 75 /* 0x4B */ │ │ │ │ │ +272#define SYBAOPCNTU 76 /* 0x4C, obsolete */ │ │ │ │ │ +273#define SYBAOPSUM 77 /* 0x4D */ │ │ │ │ │ +274#define SYBAOPSUMU 78 /* 0x4E, obsolete */ │ │ │ │ │ +275#define SYBAOPAVG 79 /* 0x4F */ │ │ │ │ │ +276#define SYBAOPAVGU 80 /* 0x50, obsolete */ │ │ │ │ │ +277#define SYBAOPMIN 81 /* 0x51 */ │ │ │ │ │ +278#define SYBAOPMAX 82 /* 0x52 */ │ │ │ │ │ +279 │ │ │ │ │ +280/* mssql2k compute operator */ │ │ │ │ │ +281#define SYBAOPCNT_BIG 9 /* 0x09 */ │ │ │ │ │ +282#define SYBAOPSTDEV 48 /* 0x30 */ │ │ │ │ │ +283#define SYBAOPSTDEVP 49 /* 0x31 */ │ │ │ │ │ +284#define SYBAOPVAR 50 /* 0x32 */ │ │ │ │ │ +285#define SYBAOPVARP 51 /* 0x33 */ │ │ │ │ │ +286#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */ │ │ │ │ │ +287 │ │ │ │ │ +291typedef enum │ │ │ │ │ +292{ │ │ │ │ │ +293 TDS_OPT_SET = 1 │ │ │ │ │ +294 , TDS_OPT_DEFAULT = 2 │ │ │ │ │ +295 , TDS_OPT_LIST = 3 │ │ │ │ │ +296 , TDS_OPT_INFO = 4 │ │ │ │ │ +297} TDS_OPTION_CMD; │ │ │ │ │ +298 │ │ │ │ │ +299typedef enum │ │ │ │ │ +300{ │ │ │ │ │ +301 TDS_OPT_DATEFIRST = 1 /* 0x01 */ │ │ │ │ │ +302 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */ │ │ │ │ │ +303 , TDS_OPT_STAT_TIME = 3 /* 0x03 */ │ │ │ │ │ +304 , TDS_OPT_STAT_IO = 4 /* 0x04 */ │ │ │ │ │ +305 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */ │ │ │ │ │ +306 , TDS_OPT_NATLANG = 6 /* 0x06 */ │ │ │ │ │ +307 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */ │ │ │ │ │ +308 , TDS_OPT_ISOLATION = 8 /* 0x08 */ │ │ │ │ │ +309 , TDS_OPT_AUTHON = 9 /* 0x09 */ │ │ │ │ │ +310 , TDS_OPT_CHARSET = 10 /* 0x0a */ │ │ │ │ │ +311 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */ │ │ │ │ │ +312 , TDS_OPT_NOEXEC = 14 /* 0x0e */ │ │ │ │ │ +313 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */ │ │ │ │ │ +314 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */ │ │ │ │ │ +315 , TDS_OPT_PARSEONLY = 18 /* 0x12 */ │ │ │ │ │ +316 , TDS_OPT_GETDATA = 20 /* 0x14 */ │ │ │ │ │ +317 , TDS_OPT_NOCOUNT = 21 /* 0x15 */ │ │ │ │ │ +318 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */ │ │ │ │ │ +319 , TDS_OPT_FORMATONLY = 24 /* 0x18 */ │ │ │ │ │ +320 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */ │ │ │ │ │ +321 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */ │ │ │ │ │ +322 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */ │ │ │ │ │ +323 , TDS_OPT_RESTREES = 28 /* 0x1c */ │ │ │ │ │ +324 , TDS_OPT_IDENTITYON = 29 /* 0x1d */ │ │ │ │ │ +325 , TDS_OPT_CURREAD = 30 /* 0x1e */ │ │ │ │ │ +326 , TDS_OPT_CURWRITE = 31 /* 0x1f */ │ │ │ │ │ +327 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */ │ │ │ │ │ +328 , TDS_OPT_AUTHOFF = 33 /* 0x21 */ │ │ │ │ │ +329 , TDS_OPT_ANSINULL = 34 /* 0x22 */ │ │ │ │ │ +330 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */ │ │ │ │ │ +331 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */ │ │ │ │ │ +332 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */ │ │ │ │ │ +333 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */ │ │ │ │ │ +334} TDS_OPTION; │ │ │ │ │ +335 │ │ │ │ │ +336enum { │ │ │ │ │ +337 TDS_OPT_ARITHOVERFLOW = 0x01, │ │ │ │ │ +338 TDS_OPT_NUMERICTRUNC = 0x02 │ │ │ │ │ +339}; │ │ │ │ │ +340 │ │ │ │ │ +341enum TDS_OPT_DATEFIRST_CHOICE │ │ │ │ │ +342{ │ │ │ │ │ +343 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_ │ │ │ │ │ +THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY = │ │ │ │ │ +344 6, TDS_OPT_SUNDAY = 7 │ │ │ │ │ +345}; │ │ │ │ │ +346 │ │ │ │ │ +347enum TDS_OPT_DATEFORMAT_CHOICE │ │ │ │ │ +348{ │ │ │ │ │ +349 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM │ │ │ │ │ += 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6 │ │ │ │ │ +350}; │ │ │ │ │ +351enum TDS_OPT_ISOLATION_CHOICE │ │ │ │ │ +352{ │ │ │ │ │ +353 TDS_OPT_LEVEL0 = 0, │ │ │ │ │ +354 TDS_OPT_LEVEL1 = 1, │ │ │ │ │ +355 TDS_OPT_LEVEL2 = 2, │ │ │ │ │ +356 TDS_OPT_LEVEL3 = 3 │ │ │ │ │ +357}; │ │ │ │ │ +358 │ │ │ │ │ +359 │ │ │ │ │ +360typedef enum tds_packet_type │ │ │ │ │ +361{ │ │ │ │ │ +362 TDS_QUERY = 1, │ │ │ │ │ +363 TDS_LOGIN = 2, │ │ │ │ │ +364 TDS_RPC = 3, │ │ │ │ │ +365 TDS_REPLY = 4, │ │ │ │ │ +366 TDS_CANCEL = 6, │ │ │ │ │ +367 TDS_BULK = 7, │ │ │ │ │ +368 TDS7_TRANS = 14, /* transaction management */ │ │ │ │ │ +369 TDS_NORMAL = 15, │ │ │ │ │ +370 TDS7_LOGIN = 16, │ │ │ │ │ +371 TDS7_AUTH = 17, │ │ │ │ │ +372 TDS71_PRELOGIN = 18, │ │ │ │ │ +373 TDS72_SMP = 0x53 │ │ │ │ │ +374} TDS_PACKET_TYPE; │ │ │ │ │ +375 │ │ │ │ │ +379typedef struct │ │ │ │ │ +380{ │ │ │ │ │ +381 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */ │ │ │ │ │ +382 TDS_USMALLINT flags; │ │ │ │ │ +383 TDS_UCHAR charset_id; /* or zero */ │ │ │ │ │ +384} TDS71_COLLATION; │ │ │ │ │ +385 │ │ │ │ │ +389typedef struct │ │ │ │ │ +390{ │ │ │ │ │ +391 TDS_UCHAR type; │ │ │ │ │ +392 TDS_UCHAR status; │ │ │ │ │ +393 TDS_USMALLINT length; │ │ │ │ │ +394 TDS_USMALLINT spid; │ │ │ │ │ +395 TDS_UCHAR packet_id; │ │ │ │ │ +396 TDS_UCHAR window; │ │ │ │ │ +397} TDS_HEADER; │ │ │ │ │ +398 │ │ │ │ │ +399enum { │ │ │ │ │ +400 TDS_STATUS_EOM = 1, │ │ │ │ │ +401 TDS_STATUS_RESETCONNECTION = 8, │ │ │ │ │ +402}; │ │ │ │ │ +403 │ │ │ │ │ +407typedef struct │ │ │ │ │ +408{ │ │ │ │ │ +409 TDS_UCHAR signature; /* TDS72_SMP */ │ │ │ │ │ +410 TDS_UCHAR type; │ │ │ │ │ +411 TDS_USMALLINT sid; │ │ │ │ │ +412 TDS_UINT size; │ │ │ │ │ +413 TDS_UINT seq; │ │ │ │ │ +414 TDS_UINT wnd; │ │ │ │ │ +415} TDS72_SMP_HEADER; │ │ │ │ │ +416 │ │ │ │ │ +417enum { │ │ │ │ │ +418 TDS_SMP_SYN = 1, │ │ │ │ │ +419 TDS_SMP_ACK = 2, │ │ │ │ │ +420 TDS_SMP_FIN = 4, │ │ │ │ │ +421 TDS_SMP_DATA = 8, │ │ │ │ │ +422}; │ │ │ │ │ +423 │ │ │ │ │ +424/* SF stands for "sort flag" */ │ │ │ │ │ +425#define TDS_SF_BIN (TDS_USMALLINT) 0x100 │ │ │ │ │ +426#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080 │ │ │ │ │ +427#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040 │ │ │ │ │ +428#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020 │ │ │ │ │ +429#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010 │ │ │ │ │ +430 │ │ │ │ │ +431/* UT stands for user type */ │ │ │ │ │ +432#define TDS_UT_TIMESTAMP 80 │ │ │ │ │ +433 │ │ │ │ │ +434 │ │ │ │ │ +435/* mssql login options flags */ │ │ │ │ │ +436enum option_flag1_values { │ │ │ │ │ +437 TDS_BYTE_ORDER_X86 = 0, │ │ │ │ │ +438 TDS_CHARSET_ASCII = 0, │ │ │ │ │ +439 TDS_DUMPLOAD_ON = 0, │ │ │ │ │ +440 TDS_FLOAT_IEEE_754 = 0, │ │ │ │ │ +441 TDS_INIT_DB_WARN = 0, │ │ │ │ │ +442 TDS_SET_LANG_OFF = 0, │ │ │ │ │ +443 TDS_USE_DB_SILENT = 0, │ │ │ │ │ +444 TDS_BYTE_ORDER_68000 = 0x01, │ │ │ │ │ +445 TDS_CHARSET_EBDDIC = 0x02, │ │ │ │ │ +446 TDS_FLOAT_VAX = 0x04, │ │ │ │ │ +447 TDS_FLOAT_ND5000 = 0x08, │ │ │ │ │ +448 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */ │ │ │ │ │ +449 TDS_USE_DB_NOTIFY = 0x20, │ │ │ │ │ +450 TDS_INIT_DB_FATAL = 0x40, │ │ │ │ │ +451 TDS_SET_LANG_ON = 0x80 │ │ │ │ │ +452}; │ │ │ │ │ +453 │ │ │ │ │ +454enum option_flag2_values { │ │ │ │ │ +455 TDS_INIT_LANG_WARN = 0, │ │ │ │ │ +456 TDS_INTEGRATED_SECURTY_OFF = 0, │ │ │ │ │ +457 TDS_ODBC_OFF = 0, │ │ │ │ │ +458 TDS_USER_NORMAL = 0, /* SQL Server login */ │ │ │ │ │ +459 TDS_INIT_LANG_REQUIRED = 0x01, │ │ │ │ │ +460 TDS_ODBC_ON = 0x02, │ │ │ │ │ +461 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */ │ │ │ │ │ +462 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */ │ │ │ │ │ +463 TDS_USER_SERVER = 0x10, /* reserved */ │ │ │ │ │ +464 TDS_USER_REMUSER = 0x20, /* DQ login */ │ │ │ │ │ +465 TDS_USER_SQLREPL = 0x40, /* replication login */ │ │ │ │ │ +466 TDS_INTEGRATED_SECURITY_ON = 0x80 │ │ │ │ │ +467}; │ │ │ │ │ +468 │ │ │ │ │ +469enum option_flag3_values { │ │ │ │ │ +470 TDS_RESTRICTED_COLLATION = 0, │ │ │ │ │ +471 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */ │ │ │ │ │ +472 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */ │ │ │ │ │ +473 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */ │ │ │ │ │ +474 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */ │ │ │ │ │ +475 TDS_EXTENSION = 0x10, /* TDS 7.4 */ │ │ │ │ │ +476}; │ │ │ │ │ +477 │ │ │ │ │ +478enum type_flags { │ │ │ │ │ +479 TDS_OLEDB_ON = 0x10, │ │ │ │ │ +480 TDS_READONLY_INTENT = 0x20, │ │ │ │ │ +481}; │ │ │ │ │ +482 │ │ │ │ │ +483/* Sybase dynamic types */ │ │ │ │ │ +484enum dynamic_types { │ │ │ │ │ +485 TDS_DYN_PREPARE = 0x01, │ │ │ │ │ +486 TDS_DYN_EXEC = 0x02, │ │ │ │ │ +487 TDS_DYN_DEALLOC = 0x04, │ │ │ │ │ +488 TDS_DYN_EXEC_IMMED = 0x08, │ │ │ │ │ +489 TDS_DYN_PROCNAME = 0x10, │ │ │ │ │ +490 TDS_DYN_ACK = 0x20, │ │ │ │ │ +491 TDS_DYN_DESCIN = 0x40, │ │ │ │ │ +492 TDS_DYN_DESCOUT = 0x80, │ │ │ │ │ +493}; │ │ │ │ │ +494 │ │ │ │ │ +495/* http://jtds.sourceforge.net/apiCursors.html */ │ │ │ │ │ +496/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */ │ │ │ │ │ +497enum { │ │ │ │ │ +498 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */ │ │ │ │ │ +499 TDS_CUR_TYPE_DYNAMIC = 0x0002, │ │ │ │ │ +500 TDS_CUR_TYPE_FORWARD = 0x0004, │ │ │ │ │ +501 TDS_CUR_TYPE_STATIC = 0x0008, │ │ │ │ │ +502 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010, │ │ │ │ │ +503 TDS_CUR_TYPE_PARAMETERIZED = 0x1000, │ │ │ │ │ +504 TDS_CUR_TYPE_AUTO_FETCH = 0x2000 │ │ │ │ │ +505}; │ │ │ │ │ +506 │ │ │ │ │ +507enum { │ │ │ │ │ +508 TDS_CUR_CONCUR_READ_ONLY = 1, │ │ │ │ │ +509 TDS_CUR_CONCUR_SCROLL_LOCKS = 2, │ │ │ │ │ +510 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */ │ │ │ │ │ +511 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8 │ │ │ │ │ +512}; │ │ │ │ │ +513 │ │ │ │ │ +514/* TDS 4/5 login*/ │ │ │ │ │ +515#define TDS_MAXNAME 30 /* maximum login name lenghts */ │ │ │ │ │ +516#define TDS_PROGNLEN 10 /* maximum program lenght */ │ │ │ │ │ +517#define TDS_PKTLEN 6 /* maximum packet lenght in login */ │ │ │ │ │ +518 │ │ │ │ │ +519/* TDS 5 login security flags */ │ │ │ │ │ +520enum { │ │ │ │ │ +521 TDS5_SEC_LOG_ENCRYPT = 1, │ │ │ │ │ +522 TDS5_SEC_LOG_CHALLENGE = 2, │ │ │ │ │ +523 TDS5_SEC_LOG_LABELS = 4, │ │ │ │ │ +524 TDS5_SEC_LOG_APPDEFINED = 8, │ │ │ │ │ +525 TDS5_SEC_LOG_SECSESS = 16, │ │ │ │ │ +526 TDS5_SEC_LOG_ENCRYPT2 = 32, │ │ │ │ │ +527 TDS5_SEC_LOG_ENCRYPT3 = 128, │ │ │ │ │ +528}; │ │ │ │ │ +529 │ │ │ │ │ +531enum { │ │ │ │ │ +532 TDS5_MSG_SEC_ENCRYPT = 1, │ │ │ │ │ +533 TDS5_MSG_SEC_LOGPWD = 2, │ │ │ │ │ +534 TDS5_MSG_SEC_REMPWD = 3, │ │ │ │ │ +535 TDS5_MSG_SEC_CHALLENGE = 4, │ │ │ │ │ +536 TDS5_MSG_SEC_RESPONSE = 5, │ │ │ │ │ +537 TDS5_MSG_SEC_GETLABEL = 6, │ │ │ │ │ +538 TDS5_MSG_SEC_LABEL = 7, │ │ │ │ │ +539 TDS5_MSG_SQL_TBLNAME = 8, │ │ │ │ │ +540 TDS5_MSG_GW_RESERVED = 9, │ │ │ │ │ +541 TDS5_MSG_OMNI_CAPABILITIES = 10, │ │ │ │ │ +542 TDS5_MSG_SEC_OPAQUE = 11, │ │ │ │ │ +543 TDS5_MSG_HAFAILOVER = 12, │ │ │ │ │ +544 TDS5_MSG_EMPTY = 13, │ │ │ │ │ +547 TDS5_MSG_SEC_ENCRYPT2 = 14, │ │ │ │ │ +548 TDS5_MSG_SEC_LOGPWD2 = 15, │ │ │ │ │ +549 TDS5_MSG_SEC_SUP_CIPHER = 16, │ │ │ │ │ +550 TDS5_MSG_MIG_REQ = 17, │ │ │ │ │ +552 TDS5_MSG_MIG_SYNC = 18, │ │ │ │ │ +553 TDS5_MSG_MIG_CONT = 19, │ │ │ │ │ +554 TDS5_MSG_MIG_IGN = 20, │ │ │ │ │ +555 TDS5_MSG_MIG_FAIL = 21, │ │ │ │ │ +557 TDS5_MSG_SEC_REMPWD2 = 22, │ │ │ │ │ +558 TDS5_MSG_MIG_RESUME = 23, │ │ │ │ │ +559 TDS5_MSG_SEC_ENCRYPT3 = 30, │ │ │ │ │ +560 TDS5_MSG_SEC_LOGPWD3 = 31, │ │ │ │ │ +561 TDS5_MSG_SEC_REMPWD3 = 32, │ │ │ │ │ +562 TDS5_MSG_DR_MAP = 33, │ │ │ │ │ +563}; │ │ │ │ │ +564 │ │ │ │ │ +575enum { │ │ │ │ │ +576 TDS5_SEC_SECSESS = 1, │ │ │ │ │ +577 TDS5_SEC_FORWARD = 2, │ │ │ │ │ +578 TDS5_SEC_SIGN = 3, │ │ │ │ │ +579 TDS5_SEC_OTHER = 4, │ │ │ │ │ +580}; │ │ │ │ │ +581 │ │ │ │ │ +585enum { │ │ │ │ │ +586 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1, │ │ │ │ │ +587 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2, │ │ │ │ │ +588 TDS5_SEC_DELEGATION = 0x4, │ │ │ │ │ +589 TDS5_SEC_INTEGRITY = 0x8, │ │ │ │ │ +590 TDS5_SEC_CONFIDENTIALITY = 0x10, │ │ │ │ │ +591 TDS5_SEC_DETECT_REPLAY = 0x20, │ │ │ │ │ +592 TDS5_SEC_DETECT_SEQUENCE = 0x40, │ │ │ │ │ +593 TDS5_SEC_DATA_ORIGIN = 0x80, │ │ │ │ │ +594 TDS5_SEC_CHANNEL_BINDING = 0x100, │ │ │ │ │ +595}; │ │ │ │ │ +596 │ │ │ │ │ +597enum { │ │ │ │ │ +598 TDS5_SEC_VERSION = 50, │ │ │ │ │ +599}; │ │ │ │ │ +600 │ │ │ │ │ +601/* MS encryption byte (pre login) */ │ │ │ │ │ +602enum { │ │ │ │ │ +603 TDS7_ENCRYPT_OFF, │ │ │ │ │ +604 TDS7_ENCRYPT_ON, │ │ │ │ │ +605 TDS7_ENCRYPT_NOT_SUP, │ │ │ │ │ +606 TDS7_ENCRYPT_REQ, │ │ │ │ │ +607}; │ │ │ │ │ +tdsnumeric │ │ │ │ │ +Definition proto.h:26 │ │ │ │ │ +tdsoldmoney │ │ │ │ │ +Definition proto.h:33 │ │ │ │ │ +tdsmoney │ │ │ │ │ +Definition proto.h:39 │ │ │ │ │ +tdsmoney4 │ │ │ │ │ +Definition proto.h:45 │ │ │ │ │ +tdsdatetime │ │ │ │ │ +Definition proto.h:50 │ │ │ │ │ +tdsdatetime4 │ │ │ │ │ +Definition proto.h:56 │ │ │ │ │ +tdsunique │ │ │ │ │ +Definition proto.h:62 │ │ │ │ │ +TDS71_COLLATION │ │ │ │ │ +TDS 7.1 collation information. │ │ │ │ │ +Definition proto.h:380 │ │ │ │ │ +TDS_HEADER │ │ │ │ │ +TDS packet header. │ │ │ │ │ +Definition proto.h:390 │ │ │ │ │ +TDS72_SMP_HEADER │ │ │ │ │ +TDS 7.2 SMP packet header. │ │ │ │ │ +Definition proto.h:408 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00464_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/macros.h Source File │ │ │ │ +FreeTDS API: include/freetds/windows.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,102 +74,46 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
macros.h
│ │ │ │ +
windows.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ -
3 * Copyright (C) 2010-2017 Frediano Ziglio
│ │ │ │ -
4 *
│ │ │ │ -
5 * This library is free software; you can redistribute it and/or
│ │ │ │ -
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
7 * License as published by the Free Software Foundation; either
│ │ │ │ -
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
9 *
│ │ │ │ -
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
13 * Library General Public License for more details.
│ │ │ │ -
14 *
│ │ │ │ -
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
16 * License along with this library; if not, write to the
│ │ │ │ -
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
18 * Boston, MA 02111-1307, USA.
│ │ │ │ -
19 */
│ │ │ │ -
20
│ │ │ │ -
21#ifndef _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_
│ │ │ │ -
22#define _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_
│ │ │ │ -
23
│ │ │ │ -
24#ifndef _freetds_config_h_
│ │ │ │ -
25#error should include config.h before
│ │ │ │ -
26#endif
│ │ │ │ -
27
│ │ │ │ -
28#if HAVE_STDDEF_H
│ │ │ │ -
29#include <stddef.h>
│ │ │ │ -
30#endif /* HAVE_STDDEF_H */
│ │ │ │ -
31
│ │ │ │ -
32#include "tds_sysdep_public.h"
│ │ │ │ -
33#include <freetds/sysdep_private.h>
│ │ │ │ -
34
│ │ │ │ -
35#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)
│ │ │ │ -
36#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))
│ │ │ │ -
37
│ │ │ │ -
38#ifdef offsetof
│ │ │ │ -
39#define TDS_OFFSET(type, field) offsetof(type, field)
│ │ │ │ -
40#else
│ │ │ │ -
41#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))
│ │ │ │ -
42#endif
│ │ │ │ -
43
│ │ │ │ -
44#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
45# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
│ │ │ │ -
46# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ -
47 _Static_assert(check,#name)
│ │ │ │ -
48# else
│ │ │ │ -
49# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ -
50 extern int name[(check)?1:-1] TDS_UNUSED
│ │ │ │ -
51# endif
│ │ │ │ -
52# define TDS_EXTRA_CHECK(stmt) stmt
│ │ │ │ -
53#else
│ │ │ │ -
54# define TDS_COMPILE_CHECK(name,check) \
│ │ │ │ -
55 extern int disabled_check_##name TDS_UNUSED
│ │ │ │ -
56# define TDS_EXTRA_CHECK(stmt)
│ │ │ │ -
57#endif
│ │ │ │ -
58
│ │ │ │ -
59#if defined(__GNUC__) && __GNUC__ >= 3
│ │ │ │ -
60# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)
│ │ │ │ -
61# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)
│ │ │ │ -
62#else
│ │ │ │ -
63# define TDS_LIKELY(x) (x)
│ │ │ │ -
64# define TDS_UNLIKELY(x) (x)
│ │ │ │ -
65#endif
│ │ │ │ -
66
│ │ │ │ -
67#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4
│ │ │ │ -
68#define TDS_WUR __attribute__ ((__warn_unused_result__))
│ │ │ │ -
69#else
│ │ │ │ -
70#define TDS_WUR
│ │ │ │ -
71#endif
│ │ │ │ -
72
│ │ │ │ -
73#if defined(__GNUC__) && __GNUC__ >= 2
│ │ │ │ -
74#define TDS_UNUSED __attribute__ ((unused))
│ │ │ │ -
75#else
│ │ │ │ -
76#define TDS_UNUSED
│ │ │ │ -
77#endif
│ │ │ │ -
78
│ │ │ │ -
79#define TDS_INT2PTR(i) ((void*)(((char*)0)+((TDS_INTPTR)(i))))
│ │ │ │ -
80#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))
│ │ │ │ -
81
│ │ │ │ -
82#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))
│ │ │ │ -
83#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))
│ │ │ │ -
84
│ │ │ │ -
85#endif
│ │ │ │ +
2 * Copyright (C) 2018 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_e9mm80mk5L6wSKLouC2UaM_
│ │ │ │ +
21#define _tdsguard_e9mm80mk5L6wSKLouC2UaM_
│ │ │ │ +
22
│ │ │ │ +
23#ifdef _WIN32
│ │ │ │ +
24#include <winsock2.h>
│ │ │ │ +
25#include <ws2tcpip.h>
│ │ │ │ +
26#include <windows.h>
│ │ │ │ +
27#endif
│ │ │ │ +
28
│ │ │ │ +
29#endif /* _tdsguard_e9mm80mk5L6wSKLouC2UaM_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,95 +1,38 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -macros.h │ │ │ │ │ +windows.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ -3 * Copyright (C) 2010-2017 Frediano Ziglio │ │ │ │ │ -4 * │ │ │ │ │ -5 * This library is free software; you can redistribute it and/or │ │ │ │ │ -6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -7 * License as published by the Free Software Foundation; either │ │ │ │ │ -8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -9 * │ │ │ │ │ -10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -13 * Library General Public License for more details. │ │ │ │ │ -14 * │ │ │ │ │ -15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -16 * License along with this library; if not, write to the │ │ │ │ │ -17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -18 * Boston, MA 02111-1307, USA. │ │ │ │ │ -19 */ │ │ │ │ │ -20 │ │ │ │ │ -21#ifndef _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_ │ │ │ │ │ -22#define _tdsguard_dWrEWKe6Aqdq6AyZsaKD0V_ │ │ │ │ │ -23 │ │ │ │ │ -24#ifndef _freetds_config_h_ │ │ │ │ │ -25#error should include config.h before │ │ │ │ │ -26#endif │ │ │ │ │ -27 │ │ │ │ │ -28#if HAVE_STDDEF_H │ │ │ │ │ -29#include │ │ │ │ │ -30#endif /* HAVE_STDDEF_H */ │ │ │ │ │ -31 │ │ │ │ │ -32#include "tds_sysdep_public.h" │ │ │ │ │ -33#include │ │ │ │ │ -34 │ │ │ │ │ -35#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0) │ │ │ │ │ -36#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0])) │ │ │ │ │ -37 │ │ │ │ │ -38#ifdef offsetof │ │ │ │ │ -39#define TDS_OFFSET(type, field) offsetof(type, field) │ │ │ │ │ -40#else │ │ │ │ │ -41#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0)) │ │ │ │ │ -42#endif │ │ │ │ │ -43 │ │ │ │ │ -44#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -45# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == │ │ │ │ │ -4 && __GNUC_MINOR__ >= 6))) │ │ │ │ │ -46# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ -47 _Static_assert(check,#name) │ │ │ │ │ -48# else │ │ │ │ │ -49# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ -50 extern int name[(check)?1:-1] TDS_UNUSED │ │ │ │ │ -51# endif │ │ │ │ │ -52# define TDS_EXTRA_CHECK(stmt) stmt │ │ │ │ │ -53#else │ │ │ │ │ -54# define TDS_COMPILE_CHECK(name,check) \ │ │ │ │ │ -55 extern int disabled_check_##name TDS_UNUSED │ │ │ │ │ -56# define TDS_EXTRA_CHECK(stmt) │ │ │ │ │ -57#endif │ │ │ │ │ -58 │ │ │ │ │ -59#if defined(__GNUC__) && __GNUC__ >= 3 │ │ │ │ │ -60# define TDS_LIKELY(x) __builtin_expect(!!(x), 1) │ │ │ │ │ -61# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0) │ │ │ │ │ -62#else │ │ │ │ │ -63# define TDS_LIKELY(x) (x) │ │ │ │ │ -64# define TDS_UNLIKELY(x) (x) │ │ │ │ │ -65#endif │ │ │ │ │ -66 │ │ │ │ │ -67#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4 │ │ │ │ │ -68#define TDS_WUR __attribute__ ((__warn_unused_result__)) │ │ │ │ │ -69#else │ │ │ │ │ -70#define TDS_WUR │ │ │ │ │ -71#endif │ │ │ │ │ -72 │ │ │ │ │ -73#if defined(__GNUC__) && __GNUC__ >= 2 │ │ │ │ │ -74#define TDS_UNUSED __attribute__ ((unused)) │ │ │ │ │ -75#else │ │ │ │ │ -76#define TDS_UNUSED │ │ │ │ │ -77#endif │ │ │ │ │ -78 │ │ │ │ │ -79#define TDS_INT2PTR(i) ((void*)(((char*)0)+((TDS_INTPTR)(i)))) │ │ │ │ │ -80#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0))) │ │ │ │ │ -81 │ │ │ │ │ -82#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n))) │ │ │ │ │ -83#define tds_new0(type, n) ((type *) calloc(n, sizeof(type))) │ │ │ │ │ -84 │ │ │ │ │ -85#endif │ │ │ │ │ +2 * Copyright (C) 2018 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_e9mm80mk5L6wSKLouC2UaM_ │ │ │ │ │ +21#define _tdsguard_e9mm80mk5L6wSKLouC2UaM_ │ │ │ │ │ +22 │ │ │ │ │ +23#ifdef _WIN32 │ │ │ │ │ +24#include │ │ │ │ │ +25#include │ │ │ │ │ +26#include │ │ │ │ │ +27#endif │ │ │ │ │ +28 │ │ │ │ │ +29#endif /* _tdsguard_e9mm80mk5L6wSKLouC2UaM_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00467_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/thread.h Source File │ │ │ │ +FreeTDS API: include/freetds/alloca.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,459 +74,35 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
thread.h
│ │ │ │ +
alloca.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 *
│ │ │ │ -
3 * Copyright (C) 2005 Liam Widdowson
│ │ │ │ -
4 * Copyright (C) 2010-2012 Frediano Ziglio
│ │ │ │ -
5 *
│ │ │ │ -
6 * This library is free software; you can redistribute it and/or
│ │ │ │ -
7 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
8 * License as published by the Free Software Foundation; either
│ │ │ │ -
9 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
10 *
│ │ │ │ -
11 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
14 * Library General Public License for more details.
│ │ │ │ -
15 *
│ │ │ │ -
16 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
17 * License along with this library; if not, write to the
│ │ │ │ -
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
19 * Boston, MA 02111-1307, USA.
│ │ │ │ -
20 */
│ │ │ │ -
21
│ │ │ │ -
22#ifndef _tdsguard_cIfZP7JZiHtLLfanwl7ubP_
│ │ │ │ -
23#define _tdsguard_cIfZP7JZiHtLLfanwl7ubP_
│ │ │ │ -
24
│ │ │ │ -
25#undef TDS_HAVE_MUTEX
│ │ │ │ -
26
│ │ │ │ -
27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
│ │ │ │ -
28
│ │ │ │ -
29#include <tds_sysdep_public.h>
│ │ │ │ -
30#include <freetds/sysdep_private.h>
│ │ │ │ -
31#include <pthread.h>
│ │ │ │ -
32#include <errno.h>
│ │ │ │ -
33
│ │ │ │ -
34#include <freetds/pushvis.h>
│ │ │ │ -
35
│ │ │ │ -
36typedef pthread_mutex_t tds_raw_mutex;
│ │ │ │ -
37#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
│ │ │ │ -
38
│ │ │ │ -
39static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ -
40{
│ │ │ │ -
41 pthread_mutex_lock(mtx);
│ │ │ │ -
42}
│ │ │ │ -
43
│ │ │ │ -
44static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
│ │ │ │ -
45{
│ │ │ │ -
46 return pthread_mutex_trylock(mtx);
│ │ │ │ -
47}
│ │ │ │ -
48
│ │ │ │ -
49static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ -
50{
│ │ │ │ -
51 pthread_mutex_unlock(mtx);
│ │ │ │ -
52}
│ │ │ │ -
53
│ │ │ │ -
54static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ -
55{
│ │ │ │ -
56 return pthread_mutex_init(mtx, NULL);
│ │ │ │ -
57}
│ │ │ │ -
58
│ │ │ │ -
59static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ -
60{
│ │ │ │ -
61 pthread_mutex_destroy(mtx);
│ │ │ │ -
62}
│ │ │ │ -
63
│ │ │ │ -
64typedef pthread_cond_t tds_condition;
│ │ │ │ -
65
│ │ │ │ -
66int tds_raw_cond_init(tds_condition *cond);
│ │ │ │ -
67static inline int tds_raw_cond_destroy(tds_condition *cond)
│ │ │ │ -
68{
│ │ │ │ -
69 return pthread_cond_destroy(cond);
│ │ │ │ -
70}
│ │ │ │ -
71static inline int tds_raw_cond_signal(tds_condition *cond)
│ │ │ │ -
72{
│ │ │ │ -
73 return pthread_cond_signal(cond);
│ │ │ │ -
74}
│ │ │ │ -
75static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
│ │ │ │ -
76{
│ │ │ │ -
77 return pthread_cond_wait(cond, mtx);
│ │ │ │ -
78}
│ │ │ │ -
79int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
│ │ │ │ -
80
│ │ │ │ -
81#define TDS_HAVE_MUTEX 1
│ │ │ │ -
82
│ │ │ │ -
83typedef pthread_t tds_thread;
│ │ │ │ -
84typedef pthread_t tds_thread_id;
│ │ │ │ -
85typedef void *(*tds_thread_proc)(void *arg);
│ │ │ │ -
86#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ -
87 void *name(void *arg)
│ │ │ │ -
88#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n))
│ │ │ │ -
89
│ │ │ │ -
90static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
│ │ │ │ -
91{
│ │ │ │ -
92 return pthread_create(ret, NULL, proc, arg);
│ │ │ │ -
93}
│ │ │ │ -
94
│ │ │ │ -
95static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
│ │ │ │ -
96{
│ │ │ │ -
97 tds_thread th;
│ │ │ │ -
98 int ret = pthread_create(&th, NULL, proc, arg);
│ │ │ │ -
99 if (!ret)
│ │ │ │ -
100 pthread_detach(th);
│ │ │ │ -
101 return ret;
│ │ │ │ -
102}
│ │ │ │ -
103
│ │ │ │ -
104static inline int tds_thread_join(tds_thread th, void **ret)
│ │ │ │ -
105{
│ │ │ │ -
106 return pthread_join(th, ret);
│ │ │ │ -
107}
│ │ │ │ -
108
│ │ │ │ -
109static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ -
110{
│ │ │ │ -
111 return pthread_self();
│ │ │ │ -
112}
│ │ │ │ -
113
│ │ │ │ -
114static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ -
115{
│ │ │ │ -
116 return pthread_equal(th, pthread_self());
│ │ │ │ -
117}
│ │ │ │ -
118
│ │ │ │ -
119#include <freetds/popvis.h>
│ │ │ │ -
120
│ │ │ │ -
121#elif defined(_WIN32)
│ │ │ │ -
122
│ │ │ │ -
123#include <freetds/windows.h>
│ │ │ │ -
124#include <errno.h>
│ │ │ │ -
125
│ │ │ │ -
126/* old version of Windows do not define this constant */
│ │ │ │ -
127#ifndef ETIMEDOUT
│ │ │ │ -
128#define ETIMEDOUT 138
│ │ │ │ -
129#endif
│ │ │ │ -
130
│ │ │ │ -
131struct ptw32_mcs_node_t_;
│ │ │ │ -
132
│ │ │ │ -
133typedef struct {
│ │ │ │ -
134 struct ptw32_mcs_node_t_ *lock;
│ │ │ │ -
135 LONG done;
│ │ │ │ -
136 DWORD thread_id;
│ │ │ │ -
137 CRITICAL_SECTION crit;
│ │ │ │ - │ │ │ │ -
139
│ │ │ │ -
140#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }
│ │ │ │ -
141
│ │ │ │ -
142static inline int
│ │ │ │ -
143tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ -
144{
│ │ │ │ -
145 mtx->lock = NULL;
│ │ │ │ -
146 mtx->done = 0;
│ │ │ │ -
147 mtx->thread_id = 0;
│ │ │ │ -
148 return 0;
│ │ │ │ -
149}
│ │ │ │ -
150
│ │ │ │ -
151void tds_win_mutex_lock(tds_raw_mutex *mutex);
│ │ │ │ -
152
│ │ │ │ -
153static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ -
154{
│ │ │ │ -
155 if (mtx->done) {
│ │ │ │ -
156 EnterCriticalSection(&mtx->crit);
│ │ │ │ -
157 mtx->thread_id = GetCurrentThreadId();
│ │ │ │ -
158 } else {
│ │ │ │ -
159 tds_win_mutex_lock(mtx);
│ │ │ │ -
160 }
│ │ │ │ -
161}
│ │ │ │ -
162
│ │ │ │ -
163int tds_raw_mutex_trylock(tds_raw_mutex *mtx);
│ │ │ │ -
164
│ │ │ │ -
165static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ -
166{
│ │ │ │ -
167 mtx->thread_id = 0;
│ │ │ │ -
168 LeaveCriticalSection(&mtx->crit);
│ │ │ │ -
169}
│ │ │ │ -
170
│ │ │ │ -
171static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ -
172{
│ │ │ │ -
173 if (mtx->done) {
│ │ │ │ -
174 DeleteCriticalSection(&mtx->crit);
│ │ │ │ -
175 mtx->done = 0;
│ │ │ │ -
176 }
│ │ │ │ -
177}
│ │ │ │ -
178
│ │ │ │ -
179#define TDS_HAVE_MUTEX 1
│ │ │ │ -
180
│ │ │ │ -
181/* easy way, only single signal supported */
│ │ │ │ -
182typedef void *TDS_CONDITION_VARIABLE;
│ │ │ │ -
183typedef union {
│ │ │ │ -
184 HANDLE ev;
│ │ │ │ -
185 TDS_CONDITION_VARIABLE cv;
│ │ │ │ - │ │ │ │ -
187
│ │ │ │ -
188extern int (*tds_raw_cond_init)(tds_condition *cond);
│ │ │ │ -
189extern int (*tds_raw_cond_destroy)(tds_condition *cond);
│ │ │ │ -
190extern int (*tds_raw_cond_signal)(tds_condition *cond);
│ │ │ │ -
191extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
│ │ │ │ -
192static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
│ │ │ │ -
193{
│ │ │ │ -
194 return tds_raw_cond_timedwait(cond, mtx, -1);
│ │ │ │ -
195}
│ │ │ │ -
196
│ │ │ │ -
197typedef HANDLE tds_thread;
│ │ │ │ -
198typedef DWORD tds_thread_id;
│ │ │ │ -
199typedef DWORD (WINAPI *tds_thread_proc)(void *arg);
│ │ │ │ -
200#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ -
201 DWORD WINAPI name(void *arg)
│ │ │ │ -
202#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))
│ │ │ │ -
203
│ │ │ │ -
204static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
│ │ │ │ -
205{
│ │ │ │ -
206 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);
│ │ │ │ -
207 return *ret != NULL ? 0 : 11 /* EAGAIN */;
│ │ │ │ -
208}
│ │ │ │ -
209
│ │ │ │ -
210static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
│ │ │ │ -
211{
│ │ │ │ -
212 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);
│ │ │ │ -
213 if (h)
│ │ │ │ -
214 return 0;
│ │ │ │ -
215 CloseHandle(h);
│ │ │ │ -
216 return 11 /* EAGAIN */;
│ │ │ │ -
217}
│ │ │ │ -
218
│ │ │ │ -
219static inline int tds_thread_join(tds_thread th, void **ret)
│ │ │ │ -
220{
│ │ │ │ -
221 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {
│ │ │ │ -
222 if (ret) {
│ │ │ │ -
223 DWORD r;
│ │ │ │ -
224 if (!GetExitCodeThread(th, &r))
│ │ │ │ -
225 r = 0xffffffffu;
│ │ │ │ -
226 *ret = (void*) (((char*)0) + r);
│ │ │ │ -
227 }
│ │ │ │ -
228
│ │ │ │ -
229 CloseHandle(th);
│ │ │ │ -
230 return 0;
│ │ │ │ -
231 }
│ │ │ │ -
232 CloseHandle(th);
│ │ │ │ -
233 return 22 /* EINVAL */;
│ │ │ │ -
234}
│ │ │ │ -
235
│ │ │ │ -
236static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ -
237{
│ │ │ │ -
238 return GetCurrentThreadId();
│ │ │ │ -
239}
│ │ │ │ -
240
│ │ │ │ -
241static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ -
242{
│ │ │ │ -
243 return th == GetCurrentThreadId();
│ │ │ │ -
244}
│ │ │ │ -
245
│ │ │ │ -
246#else
│ │ │ │ -
247
│ │ │ │ -
248#include <tds_sysdep_public.h>
│ │ │ │ -
249
│ │ │ │ -
250/* define noops as "successful" */
│ │ │ │ -
│ │ │ │ -
251typedef struct {
│ │ │ │ -
252 char dummy[0]; /* compiler compatibility */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
254
│ │ │ │ -
255#define TDS_RAW_MUTEX_INITIALIZER {}
│ │ │ │ -
256
│ │ │ │ -
257static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
│ │ │ │ -
258{
│ │ │ │ -
259}
│ │ │ │ -
260
│ │ │ │ -
261static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
│ │ │ │ -
262{
│ │ │ │ -
263 return 0;
│ │ │ │ -
264}
│ │ │ │ -
265
│ │ │ │ -
266static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
│ │ │ │ -
267{
│ │ │ │ -
268}
│ │ │ │ -
269
│ │ │ │ -
270static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
│ │ │ │ -
271{
│ │ │ │ -
272 return 0;
│ │ │ │ -
273}
│ │ │ │ -
274
│ │ │ │ -
275static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
│ │ │ │ -
276{
│ │ │ │ -
277}
│ │ │ │ -
278
│ │ │ │ -
│ │ │ │ -
279typedef struct {
│ │ │ │ -
280 char dummy[0]; /* compiler compatibility */
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
282
│ │ │ │ -
283static inline int tds_raw_cond_init(tds_condition *cond)
│ │ │ │ -
284{
│ │ │ │ -
285 return 0;
│ │ │ │ -
286}
│ │ │ │ -
287static inline int tds_raw_cond_destroy(tds_condition *cond)
│ │ │ │ -
288{
│ │ │ │ -
289 return 0;
│ │ │ │ -
290}
│ │ │ │ -
291#define tds_raw_cond_signal(cond) \
│ │ │ │ -
292 FreeTDS_Condition_not_compiled
│ │ │ │ -
293
│ │ │ │ -
294#define tds_raw_cond_wait(cond, mtx) \
│ │ │ │ -
295 FreeTDS_Condition_not_compiled
│ │ │ │ -
296
│ │ │ │ -
297#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \
│ │ │ │ -
298 FreeTDS_Condition_not_compiled
│ │ │ │ -
299
│ │ │ │ -
│ │ │ │ -
300typedef struct {
│ │ │ │ -
301 char dummy[0]; /* compiler compatibility */
│ │ │ │ -
302} tds_thread;
│ │ │ │ -
│ │ │ │ -
303typedef int tds_thread_id;
│ │ │ │ -
304
│ │ │ │ -
305typedef void *(*tds_thread_proc)(void *arg);
│ │ │ │ -
306#define TDS_THREAD_PROC_DECLARE(name, arg) \
│ │ │ │ -
307 void *name(void *arg)
│ │ │ │ -
308#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n))
│ │ │ │ -
309
│ │ │ │ -
310#define tds_thread_create(ret, proc, arg) \
│ │ │ │ -
311 FreeTDS_Thread_not_compiled
│ │ │ │ -
312
│ │ │ │ -
313#define tds_thread_create_detached(proc, arg) \
│ │ │ │ -
314 FreeTDS_Thread_not_compiled
│ │ │ │ -
315
│ │ │ │ -
316#define tds_thread_join(th, ret) \
│ │ │ │ -
317 FreeTDS_Thread_not_compiled
│ │ │ │ -
318
│ │ │ │ -
319static inline tds_thread_id tds_thread_get_current_id(void)
│ │ │ │ -
320{
│ │ │ │ -
321 return 0;
│ │ │ │ -
322}
│ │ │ │ -
323
│ │ │ │ -
324static inline int tds_thread_is_current(tds_thread_id th)
│ │ │ │ -
325{
│ │ │ │ -
326 return 1;
│ │ │ │ -
327}
│ │ │ │ -
328
│ │ │ │ -
329#endif
│ │ │ │ -
330
│ │ │ │ -
331# define tds_cond_init tds_raw_cond_init
│ │ │ │ -
332# define tds_cond_destroy tds_raw_cond_destroy
│ │ │ │ -
333# define tds_cond_signal tds_raw_cond_signal
│ │ │ │ -
334# if !ENABLE_EXTRA_CHECKS
│ │ │ │ -
335# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER
│ │ │ │ -
336# define tds_mutex tds_raw_mutex
│ │ │ │ -
337# define tds_mutex_lock tds_raw_mutex_lock
│ │ │ │ -
338# define tds_mutex_trylock tds_raw_mutex_trylock
│ │ │ │ -
339# define tds_mutex_unlock tds_raw_mutex_unlock
│ │ │ │ -
340# define tds_mutex_check_owned(mtx) do {} while(0)
│ │ │ │ -
341# define tds_mutex_init tds_raw_mutex_init
│ │ │ │ -
342# define tds_mutex_free tds_raw_mutex_free
│ │ │ │ -
343# define tds_cond_wait tds_raw_cond_wait
│ │ │ │ -
344# define tds_cond_timedwait tds_raw_cond_timedwait
│ │ │ │ -
345# else
│ │ │ │ -
346# include <assert.h>
│ │ │ │ -
347
│ │ │ │ -
348typedef struct tds_mutex
│ │ │ │ -
349{
│ │ │ │ -
350 tds_raw_mutex mtx;
│ │ │ │ -
351 volatile int locked;
│ │ │ │ -
352 volatile tds_thread_id locked_by;
│ │ │ │ -
353} tds_mutex;
│ │ │ │ -
354
│ │ │ │ -
355# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }
│ │ │ │ -
356
│ │ │ │ -
357static inline void tds_mutex_lock(tds_mutex *mtx)
│ │ │ │ -
358{
│ │ │ │ -
359 assert(mtx);
│ │ │ │ -
360 tds_raw_mutex_lock(&mtx->mtx);
│ │ │ │ -
361 assert(!mtx->locked);
│ │ │ │ -
362 mtx->locked = 1;
│ │ │ │ -
363 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ -
364}
│ │ │ │ -
365
│ │ │ │ -
366static inline int tds_mutex_trylock(tds_mutex *mtx)
│ │ │ │ -
367{
│ │ │ │ -
368 int ret;
│ │ │ │ -
369 assert(mtx);
│ │ │ │ -
370 ret = tds_raw_mutex_trylock(&mtx->mtx);
│ │ │ │ -
371 if (!ret) {
│ │ │ │ -
372 assert(!mtx->locked);
│ │ │ │ -
373 mtx->locked = 1;
│ │ │ │ -
374 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ -
375 }
│ │ │ │ -
376 return ret;
│ │ │ │ -
377}
│ │ │ │ -
378
│ │ │ │ -
379static inline void tds_mutex_unlock(tds_mutex *mtx)
│ │ │ │ -
380{
│ │ │ │ -
381 assert(mtx && mtx->locked);
│ │ │ │ -
382 mtx->locked = 0;
│ │ │ │ -
383 tds_raw_mutex_unlock(&mtx->mtx);
│ │ │ │ -
384}
│ │ │ │ -
385
│ │ │ │ -
386static inline void tds_mutex_check_owned(tds_mutex *mtx)
│ │ │ │ -
387{
│ │ │ │ -
388 int ret;
│ │ │ │ -
389 assert(mtx);
│ │ │ │ -
390 ret = tds_raw_mutex_trylock(&mtx->mtx);
│ │ │ │ -
391 assert(ret);
│ │ │ │ -
392 assert(mtx->locked);
│ │ │ │ -
393 assert(tds_thread_is_current(mtx->locked_by));
│ │ │ │ -
394}
│ │ │ │ -
395
│ │ │ │ -
396static inline int tds_mutex_init(tds_mutex *mtx)
│ │ │ │ -
397{
│ │ │ │ -
398 mtx->locked = 0;
│ │ │ │ -
399 return tds_raw_mutex_init(&mtx->mtx);
│ │ │ │ -
400}
│ │ │ │ -
401
│ │ │ │ -
402static inline void tds_mutex_free(tds_mutex *mtx)
│ │ │ │ -
403{
│ │ │ │ -
404 assert(mtx && !mtx->locked);
│ │ │ │ -
405 tds_raw_mutex_free(&mtx->mtx);
│ │ │ │ -
406}
│ │ │ │ -
407
│ │ │ │ -
408static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)
│ │ │ │ -
409{
│ │ │ │ -
410 int ret;
│ │ │ │ -
411 assert(mtx && mtx->locked);
│ │ │ │ -
412 mtx->locked = 0;
│ │ │ │ -
413 ret = tds_raw_cond_wait(cond, &mtx->mtx);
│ │ │ │ -
414 mtx->locked = 1;
│ │ │ │ -
415 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ -
416 return ret;
│ │ │ │ -
417}
│ │ │ │ -
418
│ │ │ │ -
419static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, int timeout_sec)
│ │ │ │ -
420{
│ │ │ │ -
421 int ret;
│ │ │ │ -
422 assert(mtx && mtx->locked);
│ │ │ │ -
423 mtx->locked = 0;
│ │ │ │ -
424 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);
│ │ │ │ -
425 mtx->locked = 1;
│ │ │ │ -
426 mtx->locked_by = tds_thread_get_current_id();
│ │ │ │ -
427 return ret;
│ │ │ │ -
428}
│ │ │ │ -
429
│ │ │ │ -
430# endif
│ │ │ │ -
431
│ │ │ │ -
432#endif
│ │ │ │ -
Definition ptw32_MCS_lock.c:98
│ │ │ │ -
Definition thread.h:251
│ │ │ │ -
Definition thread.h:279
│ │ │ │ -
Definition thread.h:300
│ │ │ │ +
1/* Cfr https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Particular-Functions.html */
│ │ │ │ +
2#include <stdlib.h>
│ │ │ │ +
3#include <stddef.h>
│ │ │ │ +
4#ifdef HAVE_ALLOCA_H
│ │ │ │ +
5# include <alloca.h>
│ │ │ │ +
6#elif !defined alloca
│ │ │ │ +
7# ifdef __GNUC__
│ │ │ │ +
8# define alloca __builtin_alloca
│ │ │ │ +
9# elif defined _MSC_VER
│ │ │ │ +
10# include <malloc.h>
│ │ │ │ +
11# define alloca _alloca
│ │ │ │ +
12# elif !defined HAVE_ALLOCA
│ │ │ │ +
13# ifdef __cplusplus
│ │ │ │ +
14extern "C"
│ │ │ │ +
15# endif
│ │ │ │ +
16void *alloca (size_t);
│ │ │ │ +
17# endif
│ │ │ │ +
18#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,455 +1,28 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -thread.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * │ │ │ │ │ -3 * Copyright (C) 2005 Liam Widdowson │ │ │ │ │ -4 * Copyright (C) 2010-2012 Frediano Ziglio │ │ │ │ │ -5 * │ │ │ │ │ -6 * This library is free software; you can redistribute it and/or │ │ │ │ │ -7 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -8 * License as published by the Free Software Foundation; either │ │ │ │ │ -9 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -10 * │ │ │ │ │ -11 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -12 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -14 * Library General Public License for more details. │ │ │ │ │ -15 * │ │ │ │ │ -16 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -17 * License along with this library; if not, write to the │ │ │ │ │ -18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -19 * Boston, MA 02111-1307, USA. │ │ │ │ │ -20 */ │ │ │ │ │ -21 │ │ │ │ │ -22#ifndef _tdsguard_cIfZP7JZiHtLLfanwl7ubP_ │ │ │ │ │ -23#define _tdsguard_cIfZP7JZiHtLLfanwl7ubP_ │ │ │ │ │ -24 │ │ │ │ │ -25#undef TDS_HAVE_MUTEX │ │ │ │ │ -26 │ │ │ │ │ -27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX) │ │ │ │ │ -28 │ │ │ │ │ -29#include │ │ │ │ │ -30#include │ │ │ │ │ -31#include │ │ │ │ │ -32#include │ │ │ │ │ -33 │ │ │ │ │ -34#include │ │ │ │ │ -35 │ │ │ │ │ -36typedef pthread_mutex_t tds_raw_mutex; │ │ │ │ │ -37#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER │ │ │ │ │ -38 │ │ │ │ │ -39static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ -40{ │ │ │ │ │ -41 pthread_mutex_lock(mtx); │ │ │ │ │ -42} │ │ │ │ │ -43 │ │ │ │ │ -44static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx) │ │ │ │ │ -45{ │ │ │ │ │ -46 return pthread_mutex_trylock(mtx); │ │ │ │ │ -47} │ │ │ │ │ -48 │ │ │ │ │ -49static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ -50{ │ │ │ │ │ -51 pthread_mutex_unlock(mtx); │ │ │ │ │ -52} │ │ │ │ │ -53 │ │ │ │ │ -54static inline int tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ -55{ │ │ │ │ │ -56 return pthread_mutex_init(mtx, NULL); │ │ │ │ │ -57} │ │ │ │ │ -58 │ │ │ │ │ -59static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ -60{ │ │ │ │ │ -61 pthread_mutex_destroy(mtx); │ │ │ │ │ -62} │ │ │ │ │ -63 │ │ │ │ │ -64typedef pthread_cond_t tds_condition; │ │ │ │ │ -65 │ │ │ │ │ -66int tds_raw_cond_init(tds_condition *cond); │ │ │ │ │ -67static inline int tds_raw_cond_destroy(tds_condition *cond) │ │ │ │ │ -68{ │ │ │ │ │ -69 return pthread_cond_destroy(cond); │ │ │ │ │ -70} │ │ │ │ │ -71static inline int tds_raw_cond_signal(tds_condition *cond) │ │ │ │ │ -72{ │ │ │ │ │ -73 return pthread_cond_signal(cond); │ │ │ │ │ -74} │ │ │ │ │ -75static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx) │ │ │ │ │ -76{ │ │ │ │ │ -77 return pthread_cond_wait(cond, mtx); │ │ │ │ │ -78} │ │ │ │ │ -79int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int │ │ │ │ │ -timeout_sec); │ │ │ │ │ -80 │ │ │ │ │ -81#define TDS_HAVE_MUTEX 1 │ │ │ │ │ -82 │ │ │ │ │ -83typedef pthread_t tds_thread; │ │ │ │ │ -84typedef pthread_t tds_thread_id; │ │ │ │ │ -85typedef void *(*tds_thread_proc)(void *arg); │ │ │ │ │ -86#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ -87 void *name(void *arg) │ │ │ │ │ -88#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n)) │ │ │ │ │ -89 │ │ │ │ │ -90static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, │ │ │ │ │ -void *arg) │ │ │ │ │ -91{ │ │ │ │ │ -92 return pthread_create(ret, NULL, proc, arg); │ │ │ │ │ -93} │ │ │ │ │ -94 │ │ │ │ │ -95static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg) │ │ │ │ │ -96{ │ │ │ │ │ -97 tds_thread th; │ │ │ │ │ -98 int ret = pthread_create(&th, NULL, proc, arg); │ │ │ │ │ -99 if (!ret) │ │ │ │ │ -100 pthread_detach(th); │ │ │ │ │ -101 return ret; │ │ │ │ │ -102} │ │ │ │ │ -103 │ │ │ │ │ -104static inline int tds_thread_join(tds_thread th, void **ret) │ │ │ │ │ -105{ │ │ │ │ │ -106 return pthread_join(th, ret); │ │ │ │ │ -107} │ │ │ │ │ -108 │ │ │ │ │ -109static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ -110{ │ │ │ │ │ -111 return pthread_self(); │ │ │ │ │ -112} │ │ │ │ │ -113 │ │ │ │ │ -114static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ -115{ │ │ │ │ │ -116 return pthread_equal(th, pthread_self()); │ │ │ │ │ -117} │ │ │ │ │ -118 │ │ │ │ │ -119#include │ │ │ │ │ -120 │ │ │ │ │ -121#elif defined(_WIN32) │ │ │ │ │ -122 │ │ │ │ │ -123#include │ │ │ │ │ -124#include │ │ │ │ │ -125 │ │ │ │ │ -126/* old version of Windows do not define this constant */ │ │ │ │ │ -127#ifndef ETIMEDOUT │ │ │ │ │ -128#define ETIMEDOUT 138 │ │ │ │ │ -129#endif │ │ │ │ │ -130 │ │ │ │ │ -131struct ptw32_mcs_node_t_; │ │ │ │ │ -132 │ │ │ │ │ -133typedef struct { │ │ │ │ │ -134 struct ptw32_mcs_node_t_ *lock; │ │ │ │ │ -135 LONG done; │ │ │ │ │ -136 DWORD thread_id; │ │ │ │ │ -137 CRITICAL_SECTION crit; │ │ │ │ │ -138} tds_raw_mutex; │ │ │ │ │ -139 │ │ │ │ │ -140#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 } │ │ │ │ │ -141 │ │ │ │ │ -142static inline int │ │ │ │ │ -143tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ -144{ │ │ │ │ │ -145 mtx->lock = NULL; │ │ │ │ │ -146 mtx->done = 0; │ │ │ │ │ -147 mtx->thread_id = 0; │ │ │ │ │ -148 return 0; │ │ │ │ │ -149} │ │ │ │ │ -150 │ │ │ │ │ -151void tds_win_mutex_lock(tds_raw_mutex *mutex); │ │ │ │ │ -152 │ │ │ │ │ -153static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ -154{ │ │ │ │ │ -155 if (mtx->done) { │ │ │ │ │ -156 EnterCriticalSection(&mtx->crit); │ │ │ │ │ -157 mtx->thread_id = GetCurrentThreadId(); │ │ │ │ │ -158 } else { │ │ │ │ │ -159 tds_win_mutex_lock(mtx); │ │ │ │ │ -160 } │ │ │ │ │ -161} │ │ │ │ │ -162 │ │ │ │ │ -163int tds_raw_mutex_trylock(tds_raw_mutex *mtx); │ │ │ │ │ -164 │ │ │ │ │ -165static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ -166{ │ │ │ │ │ -167 mtx->thread_id = 0; │ │ │ │ │ -168 LeaveCriticalSection(&mtx->crit); │ │ │ │ │ -169} │ │ │ │ │ -170 │ │ │ │ │ -171static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ -172{ │ │ │ │ │ -173 if (mtx->done) { │ │ │ │ │ -174 DeleteCriticalSection(&mtx->crit); │ │ │ │ │ -175 mtx->done = 0; │ │ │ │ │ -176 } │ │ │ │ │ -177} │ │ │ │ │ -178 │ │ │ │ │ -179#define TDS_HAVE_MUTEX 1 │ │ │ │ │ -180 │ │ │ │ │ -181/* easy way, only single signal supported */ │ │ │ │ │ -182typedef void *TDS_CONDITION_VARIABLE; │ │ │ │ │ -183typedef union { │ │ │ │ │ -184 HANDLE ev; │ │ │ │ │ -185 TDS_CONDITION_VARIABLE cv; │ │ │ │ │ -186} tds_condition; │ │ │ │ │ -187 │ │ │ │ │ -188extern int (*tds_raw_cond_init)(tds_condition *cond); │ │ │ │ │ -189extern int (*tds_raw_cond_destroy)(tds_condition *cond); │ │ │ │ │ -190extern int (*tds_raw_cond_signal)(tds_condition *cond); │ │ │ │ │ -191extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex │ │ │ │ │ -*mtx, int timeout_sec); │ │ │ │ │ -192static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx) │ │ │ │ │ -193{ │ │ │ │ │ -194 return tds_raw_cond_timedwait(cond, mtx, -1); │ │ │ │ │ -195} │ │ │ │ │ -196 │ │ │ │ │ -197typedef HANDLE tds_thread; │ │ │ │ │ -198typedef DWORD tds_thread_id; │ │ │ │ │ -199typedef DWORD (WINAPI *tds_thread_proc)(void *arg); │ │ │ │ │ -200#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ -201 DWORD WINAPI name(void *arg) │ │ │ │ │ -202#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n)) │ │ │ │ │ -203 │ │ │ │ │ -204static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, │ │ │ │ │ -void *arg) │ │ │ │ │ -205{ │ │ │ │ │ -206 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL); │ │ │ │ │ -207 return *ret != NULL ? 0 : 11 /* EAGAIN */; │ │ │ │ │ -208} │ │ │ │ │ -209 │ │ │ │ │ -210static inline int tds_thread_create_detached(tds_thread_proc proc, void │ │ │ │ │ -*arg) │ │ │ │ │ -211{ │ │ │ │ │ -212 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL); │ │ │ │ │ -213 if (h) │ │ │ │ │ -214 return 0; │ │ │ │ │ -215 CloseHandle(h); │ │ │ │ │ -216 return 11 /* EAGAIN */; │ │ │ │ │ -217} │ │ │ │ │ -218 │ │ │ │ │ -219static inline int tds_thread_join(tds_thread th, void **ret) │ │ │ │ │ -220{ │ │ │ │ │ -221 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) { │ │ │ │ │ -222 if (ret) { │ │ │ │ │ -223 DWORD r; │ │ │ │ │ -224 if (!GetExitCodeThread(th, &r)) │ │ │ │ │ -225 r = 0xffffffffu; │ │ │ │ │ -226 *ret = (void*) (((char*)0) + r); │ │ │ │ │ -227 } │ │ │ │ │ -228 │ │ │ │ │ -229 CloseHandle(th); │ │ │ │ │ -230 return 0; │ │ │ │ │ -231 } │ │ │ │ │ -232 CloseHandle(th); │ │ │ │ │ -233 return 22 /* EINVAL */; │ │ │ │ │ -234} │ │ │ │ │ -235 │ │ │ │ │ -236static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ -237{ │ │ │ │ │ -238 return GetCurrentThreadId(); │ │ │ │ │ -239} │ │ │ │ │ -240 │ │ │ │ │ -241static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ -242{ │ │ │ │ │ -243 return th == GetCurrentThreadId(); │ │ │ │ │ -244} │ │ │ │ │ -245 │ │ │ │ │ -246#else │ │ │ │ │ -247 │ │ │ │ │ -248#include │ │ │ │ │ -249 │ │ │ │ │ -250/* define noops as "successful" */ │ │ │ │ │ -251typedef struct { │ │ │ │ │ -252 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ -253} tds_raw_mutex; │ │ │ │ │ -254 │ │ │ │ │ -255#define TDS_RAW_MUTEX_INITIALIZER {} │ │ │ │ │ -256 │ │ │ │ │ -257static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx) │ │ │ │ │ -258{ │ │ │ │ │ -259} │ │ │ │ │ -260 │ │ │ │ │ -261static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx) │ │ │ │ │ -262{ │ │ │ │ │ -263 return 0; │ │ │ │ │ -264} │ │ │ │ │ -265 │ │ │ │ │ -266static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx) │ │ │ │ │ -267{ │ │ │ │ │ -268} │ │ │ │ │ -269 │ │ │ │ │ -270static inline int tds_raw_mutex_init(tds_raw_mutex *mtx) │ │ │ │ │ -271{ │ │ │ │ │ -272 return 0; │ │ │ │ │ -273} │ │ │ │ │ -274 │ │ │ │ │ -275static inline void tds_raw_mutex_free(tds_raw_mutex *mtx) │ │ │ │ │ -276{ │ │ │ │ │ -277} │ │ │ │ │ -278 │ │ │ │ │ -279typedef struct { │ │ │ │ │ -280 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ -281} tds_condition; │ │ │ │ │ -282 │ │ │ │ │ -283static inline int tds_raw_cond_init(tds_condition *cond) │ │ │ │ │ -284{ │ │ │ │ │ -285 return 0; │ │ │ │ │ -286} │ │ │ │ │ -287static inline int tds_raw_cond_destroy(tds_condition *cond) │ │ │ │ │ -288{ │ │ │ │ │ -289 return 0; │ │ │ │ │ -290} │ │ │ │ │ -291#define tds_raw_cond_signal(cond) \ │ │ │ │ │ -292 FreeTDS_Condition_not_compiled │ │ │ │ │ -293 │ │ │ │ │ -294#define tds_raw_cond_wait(cond, mtx) \ │ │ │ │ │ -295 FreeTDS_Condition_not_compiled │ │ │ │ │ -296 │ │ │ │ │ -297#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \ │ │ │ │ │ -298 FreeTDS_Condition_not_compiled │ │ │ │ │ -299 │ │ │ │ │ -300typedef struct { │ │ │ │ │ -301 char dummy[0]; /* compiler compatibility */ │ │ │ │ │ -302} tds_thread; │ │ │ │ │ -303typedef int tds_thread_id; │ │ │ │ │ -304 │ │ │ │ │ -305typedef void *(*tds_thread_proc)(void *arg); │ │ │ │ │ -306#define TDS_THREAD_PROC_DECLARE(name, arg) \ │ │ │ │ │ -307 void *name(void *arg) │ │ │ │ │ -308#define TDS_THREAD_RESULT(n) ((void*)(TDS_INTPTR)(n)) │ │ │ │ │ -309 │ │ │ │ │ -310#define tds_thread_create(ret, proc, arg) \ │ │ │ │ │ -311 FreeTDS_Thread_not_compiled │ │ │ │ │ -312 │ │ │ │ │ -313#define tds_thread_create_detached(proc, arg) \ │ │ │ │ │ -314 FreeTDS_Thread_not_compiled │ │ │ │ │ -315 │ │ │ │ │ -316#define tds_thread_join(th, ret) \ │ │ │ │ │ -317 FreeTDS_Thread_not_compiled │ │ │ │ │ -318 │ │ │ │ │ -319static inline tds_thread_id tds_thread_get_current_id(void) │ │ │ │ │ -320{ │ │ │ │ │ -321 return 0; │ │ │ │ │ -322} │ │ │ │ │ -323 │ │ │ │ │ -324static inline int tds_thread_is_current(tds_thread_id th) │ │ │ │ │ -325{ │ │ │ │ │ -326 return 1; │ │ │ │ │ -327} │ │ │ │ │ -328 │ │ │ │ │ -329#endif │ │ │ │ │ -330 │ │ │ │ │ -331# define tds_cond_init tds_raw_cond_init │ │ │ │ │ -332# define tds_cond_destroy tds_raw_cond_destroy │ │ │ │ │ -333# define tds_cond_signal tds_raw_cond_signal │ │ │ │ │ -334# if !ENABLE_EXTRA_CHECKS │ │ │ │ │ -335# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER │ │ │ │ │ -336# define tds_mutex tds_raw_mutex │ │ │ │ │ -337# define tds_mutex_lock tds_raw_mutex_lock │ │ │ │ │ -338# define tds_mutex_trylock tds_raw_mutex_trylock │ │ │ │ │ -339# define tds_mutex_unlock tds_raw_mutex_unlock │ │ │ │ │ -340# define tds_mutex_check_owned(mtx) do {} while(0) │ │ │ │ │ -341# define tds_mutex_init tds_raw_mutex_init │ │ │ │ │ -342# define tds_mutex_free tds_raw_mutex_free │ │ │ │ │ -343# define tds_cond_wait tds_raw_cond_wait │ │ │ │ │ -344# define tds_cond_timedwait tds_raw_cond_timedwait │ │ │ │ │ -345# else │ │ │ │ │ -346# include │ │ │ │ │ -347 │ │ │ │ │ -348typedef struct tds_mutex │ │ │ │ │ -349{ │ │ │ │ │ -350 tds_raw_mutex mtx; │ │ │ │ │ -351 volatile int locked; │ │ │ │ │ -352 volatile tds_thread_id locked_by; │ │ │ │ │ -353} tds_mutex; │ │ │ │ │ -354 │ │ │ │ │ -355# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 } │ │ │ │ │ -356 │ │ │ │ │ -357static inline void tds_mutex_lock(tds_mutex *mtx) │ │ │ │ │ -358{ │ │ │ │ │ -359 assert(mtx); │ │ │ │ │ -360 tds_raw_mutex_lock(&mtx->mtx); │ │ │ │ │ -361 assert(!mtx->locked); │ │ │ │ │ -362 mtx->locked = 1; │ │ │ │ │ -363 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ -364} │ │ │ │ │ -365 │ │ │ │ │ -366static inline int tds_mutex_trylock(tds_mutex *mtx) │ │ │ │ │ -367{ │ │ │ │ │ -368 int ret; │ │ │ │ │ -369 assert(mtx); │ │ │ │ │ -370 ret = tds_raw_mutex_trylock(&mtx->mtx); │ │ │ │ │ -371 if (!ret) { │ │ │ │ │ -372 assert(!mtx->locked); │ │ │ │ │ -373 mtx->locked = 1; │ │ │ │ │ -374 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ -375 } │ │ │ │ │ -376 return ret; │ │ │ │ │ -377} │ │ │ │ │ -378 │ │ │ │ │ -379static inline void tds_mutex_unlock(tds_mutex *mtx) │ │ │ │ │ -380{ │ │ │ │ │ -381 assert(mtx && mtx->locked); │ │ │ │ │ -382 mtx->locked = 0; │ │ │ │ │ -383 tds_raw_mutex_unlock(&mtx->mtx); │ │ │ │ │ -384} │ │ │ │ │ -385 │ │ │ │ │ -386static inline void tds_mutex_check_owned(tds_mutex *mtx) │ │ │ │ │ -387{ │ │ │ │ │ -388 int ret; │ │ │ │ │ -389 assert(mtx); │ │ │ │ │ -390 ret = tds_raw_mutex_trylock(&mtx->mtx); │ │ │ │ │ -391 assert(ret); │ │ │ │ │ -392 assert(mtx->locked); │ │ │ │ │ -393 assert(tds_thread_is_current(mtx->locked_by)); │ │ │ │ │ -394} │ │ │ │ │ -395 │ │ │ │ │ -396static inline int tds_mutex_init(tds_mutex *mtx) │ │ │ │ │ -397{ │ │ │ │ │ -398 mtx->locked = 0; │ │ │ │ │ -399 return tds_raw_mutex_init(&mtx->mtx); │ │ │ │ │ -400} │ │ │ │ │ -401 │ │ │ │ │ -402static inline void tds_mutex_free(tds_mutex *mtx) │ │ │ │ │ -403{ │ │ │ │ │ -404 assert(mtx && !mtx->locked); │ │ │ │ │ -405 tds_raw_mutex_free(&mtx->mtx); │ │ │ │ │ -406} │ │ │ │ │ -407 │ │ │ │ │ -408static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx) │ │ │ │ │ -409{ │ │ │ │ │ -410 int ret; │ │ │ │ │ -411 assert(mtx && mtx->locked); │ │ │ │ │ -412 mtx->locked = 0; │ │ │ │ │ -413 ret = tds_raw_cond_wait(cond, &mtx->mtx); │ │ │ │ │ -414 mtx->locked = 1; │ │ │ │ │ -415 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ -416 return ret; │ │ │ │ │ -417} │ │ │ │ │ -418 │ │ │ │ │ -419static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, │ │ │ │ │ -int timeout_sec) │ │ │ │ │ -420{ │ │ │ │ │ -421 int ret; │ │ │ │ │ -422 assert(mtx && mtx->locked); │ │ │ │ │ -423 mtx->locked = 0; │ │ │ │ │ -424 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec); │ │ │ │ │ -425 mtx->locked = 1; │ │ │ │ │ -426 mtx->locked_by = tds_thread_get_current_id(); │ │ │ │ │ -427 return ret; │ │ │ │ │ -428} │ │ │ │ │ -429 │ │ │ │ │ -430# endif │ │ │ │ │ -431 │ │ │ │ │ -432#endif │ │ │ │ │ -ptw32_mcs_node_t_ │ │ │ │ │ -Definition ptw32_MCS_lock.c:98 │ │ │ │ │ -tds_raw_mutex │ │ │ │ │ -Definition thread.h:251 │ │ │ │ │ -tds_condition │ │ │ │ │ -Definition thread.h:279 │ │ │ │ │ -tds_thread │ │ │ │ │ -Definition thread.h:300 │ │ │ │ │ +alloca.h │ │ │ │ │ +1/* Cfr https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf- │ │ │ │ │ +2.71/html_node/Particular-Functions.html */ │ │ │ │ │ +2#include │ │ │ │ │ +3#include │ │ │ │ │ +4#ifdef HAVE_ALLOCA_H │ │ │ │ │ +5# include │ │ │ │ │ +6#elif !defined alloca │ │ │ │ │ +7# ifdef __GNUC__ │ │ │ │ │ +8# define alloca __builtin_alloca │ │ │ │ │ +9# elif defined _MSC_VER │ │ │ │ │ +10# include │ │ │ │ │ +11# define alloca _alloca │ │ │ │ │ +12# elif !defined HAVE_ALLOCA │ │ │ │ │ +13# ifdef __cplusplus │ │ │ │ │ +14extern "C" │ │ │ │ │ +15# endif │ │ │ │ │ +16void *alloca (size_t); │ │ │ │ │ +17# endif │ │ │ │ │ +18#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00470_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/bjoern-utf8.h Source File │ │ │ │ +FreeTDS API: include/freetds/bytes.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,52 +70,344 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
bjoern-utf8.h
│ │ │ │ +
bytes.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/*
│ │ │ │ -
2 * Copyright (c) 2008-2010 Bjoern Hoehrmann <bjoern@hoehrmann.de>
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2005-2008 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │ -
4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
│ │ │ │ -
5 *
│ │ │ │ -
6 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
│ │ │ │ -
7 *
│ │ │ │ -
8 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
│ │ │ │ -
9 *
│ │ │ │ -
10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.
│ │ │ │ -
11 */
│ │ │ │ -
12
│ │ │ │ -
13#include <tds_sysdep_public.h>
│ │ │ │ -
14
│ │ │ │ -
15#define UTF8_ACCEPT 0
│ │ │ │ -
16#define UTF8_REJECT 12
│ │ │ │ -
17
│ │ │ │ -
18extern const uint8_t utf8_table[];
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │
19
│ │ │ │ -
20static inline uint32_t
│ │ │ │ -
21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)
│ │ │ │ -
22{
│ │ │ │ -
23 uint32_t type = utf8_table[byte];
│ │ │ │ -
24
│ │ │ │ -
25 *codep = (*state != UTF8_ACCEPT) ?
│ │ │ │ -
26 (byte & 0x3fu) | (*codep << 6) :
│ │ │ │ -
27 (0xff >> type) & (byte);
│ │ │ │ -
28
│ │ │ │ -
29 *state = utf8_table[256 + *state + type];
│ │ │ │ -
30 return *state;
│ │ │ │ -
31}
│ │ │ │ +
20#ifndef _tdsguard_eO1lgptMUEXAnSnm4l3QiK_
│ │ │ │ +
21#define _tdsguard_eO1lgptMUEXAnSnm4l3QiK_
│ │ │ │ +
22
│ │ │ │ +
23/*
│ │ │ │ +
24 * read a word of n bytes aligned, architecture dependent endian
│ │ │ │ +
25 * TDS_GET_An
│ │ │ │ +
26 * read a word of n bytes aligned, little endian
│ │ │ │ +
27 * TDS_GET_AnLE
│ │ │ │ +
28 * read a word of n bytes aligned, big endian
│ │ │ │ +
29 * TDS_GET_AnBE
│ │ │ │ +
30 * read a word of n bytes unaligned, architecture dependent endian
│ │ │ │ +
31 * TDS_GET_UAn
│ │ │ │ +
32 * read a word of n bytes unaligned, little endian
│ │ │ │ +
33 * TDS_GET_UAnLE
│ │ │ │ +
34 * read a word of n bytes unaligned, big endian
│ │ │ │ +
35 * TDS_GET_UAnBE
│ │ │ │ +
36 */
│ │ │ │ +
37
│ │ │ │ +
38/* one byte, easy... */
│ │ │ │ +
39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])
│ │ │ │ +
40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ +
41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ +
42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ +
43
│ │ │ │ +
44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)
│ │ │ │ +
45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ +
46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ +
47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ +
48
│ │ │ │ +
49/* two bytes */
│ │ │ │ +
50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
│ │ │ │ +
51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)(ptr))[1])
│ │ │ │ +
52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)
│ │ │ │ +
53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)
│ │ │ │ +
54
│ │ │ │ +
55#define TDS_PUT_UA2LE(ptr,val) do {\
│ │ │ │ +
56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
│ │ │ │ +
57#define TDS_PUT_UA2BE(ptr,val) do {\
│ │ │ │ +
58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_t)(val); } while(0)
│ │ │ │ +
59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)
│ │ │ │ +
60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)
│ │ │ │ +
61
│ │ │ │ +
62/* four bytes */
│ │ │ │ +
63#define TDS_GET_UA4LE(ptr) \
│ │ │ │ +
64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\
│ │ │ │ +
65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
│ │ │ │ +
66#define TDS_GET_UA4BE(ptr) \
│ │ │ │ +
67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\
│ │ │ │ +
68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])
│ │ │ │ +
69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)
│ │ │ │ +
70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)
│ │ │ │ +
71
│ │ │ │ +
72#define TDS_PUT_UA4LE(ptr,val) do {\
│ │ │ │ +
73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>16);\
│ │ │ │ +
74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
│ │ │ │ +
75#define TDS_PUT_UA4BE(ptr,val) do {\
│ │ │ │ +
76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>16);\
│ │ │ │ +
77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_t)(val); } while(0)
│ │ │ │ +
78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)
│ │ │ │ +
79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)
│ │ │ │ +
80
│ │ │ │ +
81#if defined(__GNUC__)
│ │ │ │ +
82# define TDS_MAY_ALIAS __attribute__((__may_alias__))
│ │ │ │ +
83#else
│ │ │ │ +
84# define TDS_MAY_ALIAS
│ │ │ │ +
85#endif
│ │ │ │ +
86
│ │ │ │ +
│ │ │ │ +
87typedef union {
│ │ │ │ +
88 uint16_t usi;
│ │ │ │ +
89 uint8_t uc[2];
│ │ │ │ +
90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;
│ │ │ │ +
│ │ │ │ +
91
│ │ │ │ +
92typedef union {
│ │ │ │ +
93 uint32_t ui;
│ │ │ │ +
94 uint8_t uc[4];
│ │ │ │ +
95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;
│ │ │ │ +
96
│ │ │ │ +
97/* architecture dependent */
│ │ │ │ +
98/* map to generic macros or redefine for aligned and same endianess */
│ │ │ │ +
99#ifdef WORDS_BIGENDIAN
│ │ │ │ +
100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)
│ │ │ │ +
101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)
│ │ │ │ +
102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)
│ │ │ │ +
103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)
│ │ │ │ +
104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)
│ │ │ │ +
105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)
│ │ │ │ +
106# undef TDS_GET_A2BE
│ │ │ │ +
107# undef TDS_GET_A4BE
│ │ │ │ +
108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ +
109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ +
110
│ │ │ │ +
111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)
│ │ │ │ +
112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)
│ │ │ │ +
113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)
│ │ │ │ +
114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)
│ │ │ │ +
115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)
│ │ │ │ +
116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)
│ │ │ │ +
117# undef TDS_PUT_A2BE
│ │ │ │ +
118# undef TDS_PUT_A4BE
│ │ │ │ +
119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ +
120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ +
121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)
│ │ │ │ +
122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)
│ │ │ │ +
123# define TDS_HOST2BE(val) (val)
│ │ │ │ +
124# define TDS_HOST4BE(val) (val)
│ │ │ │ +
125#else
│ │ │ │ +
126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ +
127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)
│ │ │ │ +
128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)
│ │ │ │ +
129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)
│ │ │ │ +
130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)
│ │ │ │ +
131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)
│ │ │ │ +
132# undef TDS_GET_A2LE
│ │ │ │ +
133# undef TDS_GET_A4LE
│ │ │ │ +
134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ +
135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ +
136
│ │ │ │ +
137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ +
138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)
│ │ │ │ +
139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)
│ │ │ │ +
140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)
│ │ │ │ +
141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)
│ │ │ │ +
142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)
│ │ │ │ +
143# undef TDS_PUT_A2LE
│ │ │ │ +
144# undef TDS_PUT_A4LE
│ │ │ │ +
145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ +
146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ +
147# define TDS_HOST2LE(val) (val)
│ │ │ │ +
148# define TDS_HOST4LE(val) (val)
│ │ │ │ +
149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)
│ │ │ │ +
150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)
│ │ │ │ +
151#endif
│ │ │ │ +
152
│ │ │ │ +
153#if defined(__GNUC__) || defined(_MSC_VER)
│ │ │ │ +
154# if defined(__MINGW32__)
│ │ │ │ +
155# pragma pack(push,1)
│ │ │ │ +
156# elif defined(_MSC_VER)
│ │ │ │ +
157# pragma pack(push)
│ │ │ │ +
158# pragma pack(1)
│ │ │ │ +
159# endif
│ │ │ │ +
160
│ │ │ │ +
161# if defined(__GNUC__)
│ │ │ │ +
162# define TDS_PACKED __attribute__((__packed__))
│ │ │ │ +
163# else
│ │ │ │ +
164# define TDS_PACKED
│ │ │ │ +
165# endif
│ │ │ │ +
166
│ │ │ │ +
167typedef union TDS_PACKED
│ │ │ │ +
168{
│ │ │ │ +
169 uint16_t usi;
│ │ │ │ +
170 uint8_t uc[2];
│ │ │ │ +
171} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT2;
│ │ │ │ +
172
│ │ │ │ +
173typedef union TDS_PACKED
│ │ │ │ +
174{
│ │ │ │ +
175 uint32_t ui;
│ │ │ │ +
176 uint8_t uc[4];
│ │ │ │ +
177} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT4;
│ │ │ │ +
178
│ │ │ │ +
179# ifdef WORDS_BIGENDIAN
│ │ │ │ +
180# undef TDS_GET_UA2BE
│ │ │ │ +
181# undef TDS_GET_UA4BE
│ │ │ │ +
182# define TDS_GET_UA2BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ +
183# define TDS_GET_UA4BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ +
184
│ │ │ │ +
185# undef TDS_PUT_UA2BE
│ │ │ │ +
186# undef TDS_PUT_UA4BE
│ │ │ │ +
187# define TDS_PUT_UA2BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ +
188# define TDS_PUT_UA4BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ +
189# else
│ │ │ │ +
190# undef TDS_GET_UA2LE
│ │ │ │ +
191# undef TDS_GET_UA4LE
│ │ │ │ +
192# define TDS_GET_UA2LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ +
193# define TDS_GET_UA4LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ +
194
│ │ │ │ +
195# undef TDS_PUT_UA2LE
│ │ │ │ +
196# undef TDS_PUT_UA4LE
│ │ │ │ +
197# define TDS_PUT_UA2LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ +
198# define TDS_PUT_UA4LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ +
199# endif
│ │ │ │ +
200
│ │ │ │ +
201# if defined(__MINGW32__) || defined(_MSC_VER)
│ │ │ │ +
202# pragma pack(pop)
│ │ │ │ +
203# endif
│ │ │ │ +
204
│ │ │ │ +
205#else
│ │ │ │ +
206
│ │ │ │ +
207/* these platform support unaligned fetch/store */
│ │ │ │ +
208/* map unaligned macro to aligned ones */
│ │ │ │ +
209# if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\
│ │ │ │ +
210 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\
│ │ │ │ +
211 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\
│ │ │ │ +
212 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_X64))) ||\
│ │ │ │ +
213 defined(__ARM_FEATURE_UNALIGNED) ||\
│ │ │ │ +
214 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\
│ │ │ │ +
215 (defined(_M_ARM) && (_M_ARM >= 7))
│ │ │ │ +
216# ifdef WORDS_BIGENDIAN
│ │ │ │ +
217# undef TDS_GET_UA2BE
│ │ │ │ +
218# undef TDS_GET_UA4BE
│ │ │ │ +
219# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)
│ │ │ │ +
220# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)
│ │ │ │ +
221
│ │ │ │ +
222# undef TDS_PUT_UA2BE
│ │ │ │ +
223# undef TDS_PUT_UA4BE
│ │ │ │ +
224# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)
│ │ │ │ +
225# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)
│ │ │ │ +
226# else
│ │ │ │ +
227# undef TDS_GET_UA2LE
│ │ │ │ +
228# undef TDS_GET_UA4LE
│ │ │ │ +
229# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)
│ │ │ │ +
230# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)
│ │ │ │ +
231
│ │ │ │ +
232# undef TDS_PUT_UA2LE
│ │ │ │ +
233# undef TDS_PUT_UA4LE
│ │ │ │ +
234# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)
│ │ │ │ +
235# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)
│ │ │ │ +
236# endif
│ │ │ │ +
237# endif
│ │ │ │ +
238
│ │ │ │ +
239#endif
│ │ │ │ +
240
│ │ │ │ +
241#undef TDS_BSWAP16
│ │ │ │ +
242#undef TDS_BSWAP32
│ │ │ │ +
243/* __builtin_bswap16 was introduced in GCC 4.8 */
│ │ │ │ +
244#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && defined(__OPTIMIZE__)
│ │ │ │ +
245# define TDS_BSWAP16(val) __builtin_bswap16(val)
│ │ │ │ +
246# define TDS_BSWAP32(val) __builtin_bswap32(val)
│ │ │ │ +
247/* __builtin_bswap32 was introduced in GCC 4.3 */
│ │ │ │ +
248#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)
│ │ │ │ +
249# define TDS_BSWAP32(val) __builtin_bswap32(val)
│ │ │ │ +
250#elif defined(_MSC_VER)
│ │ │ │ +
251# include <stdlib.h>
│ │ │ │ +
252# define TDS_BSWAP16(val) _byteswap_ushort(val)
│ │ │ │ +
253# define TDS_BSWAP32(val) _byteswap_ulong(val)
│ │ │ │ +
254#endif
│ │ │ │ +
255
│ │ │ │ +
256#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)
│ │ │ │ +
257# undef TDS_GET_UA2BE
│ │ │ │ +
258# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))
│ │ │ │ +
259
│ │ │ │ +
260# undef TDS_PUT_UA2BE
│ │ │ │ +
261# define TDS_PUT_UA2BE(ptr,val) do {\
│ │ │ │ +
262 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0)
│ │ │ │ +
263#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)
│ │ │ │ +
264# undef TDS_GET_UA2LE
│ │ │ │ +
265# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))
│ │ │ │ +
266
│ │ │ │ +
267# undef TDS_PUT_UA2LE
│ │ │ │ +
268# define TDS_PUT_UA2LE(ptr,val) do {\
│ │ │ │ +
269 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0)
│ │ │ │ +
270#endif
│ │ │ │ +
271
│ │ │ │ +
272#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)
│ │ │ │ +
273# undef TDS_GET_UA4BE
│ │ │ │ +
274# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))
│ │ │ │ +
275
│ │ │ │ +
276# undef TDS_PUT_UA4BE
│ │ │ │ +
277# define TDS_PUT_UA4BE(ptr,val) do {\
│ │ │ │ +
278 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)
│ │ │ │ +
279#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)
│ │ │ │ +
280# undef TDS_GET_UA4LE
│ │ │ │ +
281# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))
│ │ │ │ +
282
│ │ │ │ +
283# undef TDS_PUT_UA4LE
│ │ │ │ +
284# define TDS_PUT_UA4LE(ptr,val) do {\
│ │ │ │ +
285 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)
│ │ │ │ +
286#endif
│ │ │ │ +
287
│ │ │ │ +
288#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)
│ │ │ │ +
289# undef TDS_GET_UA2LE
│ │ │ │ +
290# undef TDS_GET_UA4LE
│ │ │ │ +
291static inline uint16_t
│ │ │ │ +
292TDS_GET_UA2LE(void *ptr)
│ │ │ │ +
293{
│ │ │ │ +
294 unsigned long res;
│ │ │ │ +
295 __asm__ ("lhbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_t *)ptr));
│ │ │ │ +
296 return (uint16_t) res;
│ │ │ │ +
297}
│ │ │ │ +
298static inline uint32_t
│ │ │ │ +
299TDS_GET_UA4LE(void *ptr)
│ │ │ │ +
300{
│ │ │ │ +
301 unsigned long res;
│ │ │ │ +
302 __asm__ ("lwbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_t *)ptr));
│ │ │ │ +
303 return (uint32_t) res;
│ │ │ │ +
304}
│ │ │ │ +
305
│ │ │ │ +
306# undef TDS_PUT_UA2LE
│ │ │ │ +
307# undef TDS_PUT_UA4LE
│ │ │ │ +
308static inline void
│ │ │ │ +
309TDS_PUT_UA2LE(void *ptr, unsigned data)
│ │ │ │ +
310{
│ │ │ │ +
311 __asm__ ("sthbrx %1,0,%2\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" (ptr));
│ │ │ │ +
312}
│ │ │ │ +
313static inline void
│ │ │ │ +
314TDS_PUT_UA4LE(void *ptr, unsigned data)
│ │ │ │ +
315{
│ │ │ │ +
316 __asm__ ("stwbrx %1,0,%2\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" (ptr));
│ │ │ │ +
317}
│ │ │ │ +
318#endif
│ │ │ │ +
319
│ │ │ │ +
320#endif
│ │ │ │ +
Definition bytes.h:87
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,53 +1,351 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -bjoern-utf8.h │ │ │ │ │ -1/* │ │ │ │ │ -2 * Copyright (c) 2008-2010 Bjoern Hoehrmann │ │ │ │ │ +bytes.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2005-2008 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ -4 * Permission is hereby granted, free of charge, to any person obtaining a │ │ │ │ │ -copy of this software and associated documentation files (the "Software"), to │ │ │ │ │ -deal in the Software without restriction, including without limitation the │ │ │ │ │ -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or │ │ │ │ │ -sell copies of the Software, and to permit persons to whom the Software is │ │ │ │ │ -furnished to do so, subject to the following conditions: │ │ │ │ │ -5 * │ │ │ │ │ -6 * The above copyright notice and this permission notice shall be included in │ │ │ │ │ -all copies or substantial portions of the Software. │ │ │ │ │ -7 * │ │ │ │ │ -8 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR │ │ │ │ │ -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, │ │ │ │ │ -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE │ │ │ │ │ -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER │ │ │ │ │ -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, │ │ │ │ │ -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE │ │ │ │ │ -SOFTWARE. │ │ │ │ │ -9 * │ │ │ │ │ -10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. │ │ │ │ │ -11 */ │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ -14 │ │ │ │ │ -15#define UTF8_ACCEPT 0 │ │ │ │ │ -16#define UTF8_REJECT 12 │ │ │ │ │ -17 │ │ │ │ │ -18extern const uint8_t utf8_table[]; │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ 19 │ │ │ │ │ -20static inline uint32_t │ │ │ │ │ -21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte) │ │ │ │ │ -22{ │ │ │ │ │ -23 uint32_t type = utf8_table[byte]; │ │ │ │ │ -24 │ │ │ │ │ -25 *codep = (*state != UTF8_ACCEPT) ? │ │ │ │ │ -26 (byte & 0x3fu) | (*codep << 6) : │ │ │ │ │ -27 (0xff >> type) & (byte); │ │ │ │ │ -28 │ │ │ │ │ -29 *state = utf8_table[256 + *state + type]; │ │ │ │ │ -30 return *state; │ │ │ │ │ -31} │ │ │ │ │ +20#ifndef _tdsguard_eO1lgptMUEXAnSnm4l3QiK_ │ │ │ │ │ +21#define _tdsguard_eO1lgptMUEXAnSnm4l3QiK_ │ │ │ │ │ +22 │ │ │ │ │ +23/* │ │ │ │ │ +24 * read a word of n bytes aligned, architecture dependent endian │ │ │ │ │ +25 * TDS_GET_An │ │ │ │ │ +26 * read a word of n bytes aligned, little endian │ │ │ │ │ +27 * TDS_GET_AnLE │ │ │ │ │ +28 * read a word of n bytes aligned, big endian │ │ │ │ │ +29 * TDS_GET_AnBE │ │ │ │ │ +30 * read a word of n bytes unaligned, architecture dependent endian │ │ │ │ │ +31 * TDS_GET_UAn │ │ │ │ │ +32 * read a word of n bytes unaligned, little endian │ │ │ │ │ +33 * TDS_GET_UAnLE │ │ │ │ │ +34 * read a word of n bytes unaligned, big endian │ │ │ │ │ +35 * TDS_GET_UAnBE │ │ │ │ │ +36 */ │ │ │ │ │ +37 │ │ │ │ │ +38/* one byte, easy... */ │ │ │ │ │ +39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0]) │ │ │ │ │ +40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ +41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ +42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ +43 │ │ │ │ │ +44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0) │ │ │ │ │ +45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ +46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ +47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ +48 │ │ │ │ │ +49/* two bytes */ │ │ │ │ │ +50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *) │ │ │ │ │ +(ptr))[0]) │ │ │ │ │ +51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *) │ │ │ │ │ +(ptr))[1]) │ │ │ │ │ +52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr) │ │ │ │ │ +53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr) │ │ │ │ │ +54 │ │ │ │ │ +55#define TDS_PUT_UA2LE(ptr,val) do {\ │ │ │ │ │ +56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_ │ │ │ │ │ +t)(val); } while(0) │ │ │ │ │ +57#define TDS_PUT_UA2BE(ptr,val) do {\ │ │ │ │ │ +58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_ │ │ │ │ │ +t)(val); } while(0) │ │ │ │ │ +59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val) │ │ │ │ │ +60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val) │ │ │ │ │ +61 │ │ │ │ │ +62/* four bytes */ │ │ │ │ │ +63#define TDS_GET_UA4LE(ptr) \ │ │ │ │ │ +64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\ │ │ │ │ │ +65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0]) │ │ │ │ │ +66#define TDS_GET_UA4BE(ptr) \ │ │ │ │ │ +67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\ │ │ │ │ │ +68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3]) │ │ │ │ │ +69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr) │ │ │ │ │ +70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr) │ │ │ │ │ +71 │ │ │ │ │ +72#define TDS_PUT_UA4LE(ptr,val) do {\ │ │ │ │ │ +73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = │ │ │ │ │ +(uint8_t)((val)>>16);\ │ │ │ │ │ +74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_ │ │ │ │ │ +t)(val); } while(0) │ │ │ │ │ +75#define TDS_PUT_UA4BE(ptr,val) do {\ │ │ │ │ │ +76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = │ │ │ │ │ +(uint8_t)((val)>>16);\ │ │ │ │ │ +77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_ │ │ │ │ │ +t)(val); } while(0) │ │ │ │ │ +78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val) │ │ │ │ │ +79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val) │ │ │ │ │ +80 │ │ │ │ │ +81#if defined(__GNUC__) │ │ │ │ │ +82# define TDS_MAY_ALIAS __attribute__((__may_alias__)) │ │ │ │ │ +83#else │ │ │ │ │ +84# define TDS_MAY_ALIAS │ │ │ │ │ +85#endif │ │ │ │ │ +86 │ │ │ │ │ +87typedef union { │ │ │ │ │ +88 uint16_t usi; │ │ │ │ │ +89 uint8_t uc[2]; │ │ │ │ │ +90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2; │ │ │ │ │ +91 │ │ │ │ │ +92typedef union { │ │ │ │ │ +93 uint32_t ui; │ │ │ │ │ +94 uint8_t uc[4]; │ │ │ │ │ +95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4; │ │ │ │ │ +96 │ │ │ │ │ +97/* architecture dependent */ │ │ │ │ │ +98/* map to generic macros or redefine for aligned and same endianess */ │ │ │ │ │ +99#ifdef WORDS_BIGENDIAN │ │ │ │ │ +100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr) │ │ │ │ │ +101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr) │ │ │ │ │ +102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr) │ │ │ │ │ +103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr) │ │ │ │ │ +104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr) │ │ │ │ │ +105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr) │ │ │ │ │ +106# undef TDS_GET_A2BE │ │ │ │ │ +107# undef TDS_GET_A4BE │ │ │ │ │ +108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ +109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ +110 │ │ │ │ │ +111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val) │ │ │ │ │ +112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val) │ │ │ │ │ +113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val) │ │ │ │ │ +114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val) │ │ │ │ │ +115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val) │ │ │ │ │ +116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val) │ │ │ │ │ +117# undef TDS_PUT_A2BE │ │ │ │ │ +118# undef TDS_PUT_A4BE │ │ │ │ │ +119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) │ │ │ │ │ +120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) │ │ │ │ │ +121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val) │ │ │ │ │ +122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val) │ │ │ │ │ +123# define TDS_HOST2BE(val) (val) │ │ │ │ │ +124# define TDS_HOST4BE(val) (val) │ │ │ │ │ +125#else │ │ │ │ │ +126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ +127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr) │ │ │ │ │ +128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr) │ │ │ │ │ +129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr) │ │ │ │ │ +130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr) │ │ │ │ │ +131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr) │ │ │ │ │ +132# undef TDS_GET_A2LE │ │ │ │ │ +133# undef TDS_GET_A4LE │ │ │ │ │ +134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ +135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ +136 │ │ │ │ │ +137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ +138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val) │ │ │ │ │ +139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val) │ │ │ │ │ +140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val) │ │ │ │ │ +141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val) │ │ │ │ │ +142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val) │ │ │ │ │ +143# undef TDS_PUT_A2LE │ │ │ │ │ +144# undef TDS_PUT_A4LE │ │ │ │ │ +145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) │ │ │ │ │ +146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) │ │ │ │ │ +147# define TDS_HOST2LE(val) (val) │ │ │ │ │ +148# define TDS_HOST4LE(val) (val) │ │ │ │ │ +149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val) │ │ │ │ │ +150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val) │ │ │ │ │ +151#endif │ │ │ │ │ +152 │ │ │ │ │ +153#if defined(__GNUC__) || defined(_MSC_VER) │ │ │ │ │ +154# if defined(__MINGW32__) │ │ │ │ │ +155# pragma pack(push,1) │ │ │ │ │ +156# elif defined(_MSC_VER) │ │ │ │ │ +157# pragma pack(push) │ │ │ │ │ +158# pragma pack(1) │ │ │ │ │ +159# endif │ │ │ │ │ +160 │ │ │ │ │ +161# if defined(__GNUC__) │ │ │ │ │ +162# define TDS_PACKED __attribute__((__packed__)) │ │ │ │ │ +163# else │ │ │ │ │ +164# define TDS_PACKED │ │ │ │ │ +165# endif │ │ │ │ │ +166 │ │ │ │ │ +167typedef union TDS_PACKED │ │ │ │ │ +168{ │ │ │ │ │ +169 uint16_t usi; │ │ │ │ │ +170 uint8_t uc[2]; │ │ │ │ │ +171} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT2; │ │ │ │ │ +172 │ │ │ │ │ +173typedef union TDS_PACKED │ │ │ │ │ +174{ │ │ │ │ │ +175 uint32_t ui; │ │ │ │ │ +176 uint8_t uc[4]; │ │ │ │ │ +177} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT4; │ │ │ │ │ +178 │ │ │ │ │ +179# ifdef WORDS_BIGENDIAN │ │ │ │ │ +180# undef TDS_GET_UA2BE │ │ │ │ │ +181# undef TDS_GET_UA4BE │ │ │ │ │ +182# define TDS_GET_UA2BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ +183# define TDS_GET_UA4BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ +184 │ │ │ │ │ +185# undef TDS_PUT_UA2BE │ │ │ │ │ +186# undef TDS_PUT_UA4BE │ │ │ │ │ +187# define TDS_PUT_UA2BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi │ │ │ │ │ += (val)) │ │ │ │ │ +188# define TDS_PUT_UA4BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = │ │ │ │ │ +(val)) │ │ │ │ │ +189# else │ │ │ │ │ +190# undef TDS_GET_UA2LE │ │ │ │ │ +191# undef TDS_GET_UA4LE │ │ │ │ │ +192# define TDS_GET_UA2LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ +193# define TDS_GET_UA4LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ +194 │ │ │ │ │ +195# undef TDS_PUT_UA2LE │ │ │ │ │ +196# undef TDS_PUT_UA4LE │ │ │ │ │ +197# define TDS_PUT_UA2LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi │ │ │ │ │ += (val)) │ │ │ │ │ +198# define TDS_PUT_UA4LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = │ │ │ │ │ +(val)) │ │ │ │ │ +199# endif │ │ │ │ │ +200 │ │ │ │ │ +201# if defined(__MINGW32__) || defined(_MSC_VER) │ │ │ │ │ +202# pragma pack(pop) │ │ │ │ │ +203# endif │ │ │ │ │ +204 │ │ │ │ │ +205#else │ │ │ │ │ +206 │ │ │ │ │ +207/* these platform support unaligned fetch/store */ │ │ │ │ │ +208/* map unaligned macro to aligned ones */ │ │ │ │ │ +209# if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\ │ │ │ │ │ +210 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || │ │ │ │ │ +defined(__ppc64__) ||\ │ │ │ │ │ +211 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\ │ │ │ │ │ +212 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_ │ │ │ │ │ +X64))) ||\ │ │ │ │ │ +213 defined(__ARM_FEATURE_UNALIGNED) ||\ │ │ │ │ │ +214 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\ │ │ │ │ │ +215 (defined(_M_ARM) && (_M_ARM >= 7)) │ │ │ │ │ +216# ifdef WORDS_BIGENDIAN │ │ │ │ │ +217# undef TDS_GET_UA2BE │ │ │ │ │ +218# undef TDS_GET_UA4BE │ │ │ │ │ +219# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr) │ │ │ │ │ +220# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr) │ │ │ │ │ +221 │ │ │ │ │ +222# undef TDS_PUT_UA2BE │ │ │ │ │ +223# undef TDS_PUT_UA4BE │ │ │ │ │ +224# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val) │ │ │ │ │ +225# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val) │ │ │ │ │ +226# else │ │ │ │ │ +227# undef TDS_GET_UA2LE │ │ │ │ │ +228# undef TDS_GET_UA4LE │ │ │ │ │ +229# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr) │ │ │ │ │ +230# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr) │ │ │ │ │ +231 │ │ │ │ │ +232# undef TDS_PUT_UA2LE │ │ │ │ │ +233# undef TDS_PUT_UA4LE │ │ │ │ │ +234# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val) │ │ │ │ │ +235# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val) │ │ │ │ │ +236# endif │ │ │ │ │ +237# endif │ │ │ │ │ +238 │ │ │ │ │ +239#endif │ │ │ │ │ +240 │ │ │ │ │ +241#undef TDS_BSWAP16 │ │ │ │ │ +242#undef TDS_BSWAP32 │ │ │ │ │ +243/* __builtin_bswap16 was introduced in GCC 4.8 */ │ │ │ │ │ +244#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR_ │ │ │ │ │ +_ >= 8)) && defined(__OPTIMIZE__) │ │ │ │ │ +245# define TDS_BSWAP16(val) __builtin_bswap16(val) │ │ │ │ │ +246# define TDS_BSWAP32(val) __builtin_bswap32(val) │ │ │ │ │ +247/* __builtin_bswap32 was introduced in GCC 4.3 */ │ │ │ │ │ +248#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR_ │ │ │ │ │ +_ >= 3)) && defined(__OPTIMIZE__) │ │ │ │ │ +249# define TDS_BSWAP32(val) __builtin_bswap32(val) │ │ │ │ │ +250#elif defined(_MSC_VER) │ │ │ │ │ +251# include │ │ │ │ │ +252# define TDS_BSWAP16(val) _byteswap_ushort(val) │ │ │ │ │ +253# define TDS_BSWAP32(val) _byteswap_ulong(val) │ │ │ │ │ +254#endif │ │ │ │ │ +255 │ │ │ │ │ +256#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN) │ │ │ │ │ +257# undef TDS_GET_UA2BE │ │ │ │ │ +258# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr)) │ │ │ │ │ +259 │ │ │ │ │ +260# undef TDS_PUT_UA2BE │ │ │ │ │ +261# define TDS_PUT_UA2BE(ptr,val) do {\ │ │ │ │ │ +262 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0) │ │ │ │ │ +263#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN) │ │ │ │ │ +264# undef TDS_GET_UA2LE │ │ │ │ │ +265# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr)) │ │ │ │ │ +266 │ │ │ │ │ +267# undef TDS_PUT_UA2LE │ │ │ │ │ +268# define TDS_PUT_UA2LE(ptr,val) do {\ │ │ │ │ │ +269 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0) │ │ │ │ │ +270#endif │ │ │ │ │ +271 │ │ │ │ │ +272#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN) │ │ │ │ │ +273# undef TDS_GET_UA4BE │ │ │ │ │ +274# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr)) │ │ │ │ │ +275 │ │ │ │ │ +276# undef TDS_PUT_UA4BE │ │ │ │ │ +277# define TDS_PUT_UA4BE(ptr,val) do {\ │ │ │ │ │ +278 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0) │ │ │ │ │ +279#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN) │ │ │ │ │ +280# undef TDS_GET_UA4LE │ │ │ │ │ +281# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr)) │ │ │ │ │ +282 │ │ │ │ │ +283# undef TDS_PUT_UA4LE │ │ │ │ │ +284# define TDS_PUT_UA4LE(ptr,val) do {\ │ │ │ │ │ +285 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0) │ │ │ │ │ +286#endif │ │ │ │ │ +287 │ │ │ │ │ +288#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN) │ │ │ │ │ +289# undef TDS_GET_UA2LE │ │ │ │ │ +290# undef TDS_GET_UA4LE │ │ │ │ │ +291static inline uint16_t │ │ │ │ │ +292TDS_GET_UA2LE(void *ptr) │ │ │ │ │ +293{ │ │ │ │ │ +294 unsigned long res; │ │ │ │ │ +295 __asm__ ("lhbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_ │ │ │ │ │ +t *)ptr)); │ │ │ │ │ +296 return (uint16_t) res; │ │ │ │ │ +297} │ │ │ │ │ +298static inline uint32_t │ │ │ │ │ +299TDS_GET_UA4LE(void *ptr) │ │ │ │ │ +300{ │ │ │ │ │ +301 unsigned long res; │ │ │ │ │ +302 __asm__ ("lwbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_ │ │ │ │ │ +t *)ptr)); │ │ │ │ │ +303 return (uint32_t) res; │ │ │ │ │ +304} │ │ │ │ │ +305 │ │ │ │ │ +306# undef TDS_PUT_UA2LE │ │ │ │ │ +307# undef TDS_PUT_UA4LE │ │ │ │ │ +308static inline void │ │ │ │ │ +309TDS_PUT_UA2LE(void *ptr, unsigned data) │ │ │ │ │ +310{ │ │ │ │ │ +311 __asm__ ("sthbrx %1,0,%2\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" │ │ │ │ │ +(ptr)); │ │ │ │ │ +312} │ │ │ │ │ +313static inline void │ │ │ │ │ +314TDS_PUT_UA4LE(void *ptr, unsigned data) │ │ │ │ │ +315{ │ │ │ │ │ +316 __asm__ ("stwbrx %1,0,%2\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" │ │ │ │ │ +(ptr)); │ │ │ │ │ +317} │ │ │ │ │ +318#endif │ │ │ │ │ +319 │ │ │ │ │ +320#endif │ │ │ │ │ +TDS_MAY_ALIAS │ │ │ │ │ +Definition bytes.h:87 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00473_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/nosigpipe.h Source File │ │ │ │ +FreeTDS API: include/freetds/version.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
nosigpipe.h
│ │ │ │ +
version.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2024 Ziglio Frediano
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,32 +96,27 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_
│ │ │ │ -
21#define _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_
│ │ │ │ +
20#ifndef _tdsguard_fWmaUBUxPCWj6BPyET5377_
│ │ │ │ +
21#define _tdsguard_fWmaUBUxPCWj6BPyET5377_
│ │ │ │
22
│ │ │ │ -
23#if HAVE_SYS_TYPES_H
│ │ │ │ -
24#include <sys/types.h>
│ │ │ │ -
25#endif /* HAVE_SYS_TYPES_H */
│ │ │ │ +
23/* $Id: c69b1270e9bbde50d3708cbfbf8921f8e849c928 $ */
│ │ │ │ +
24
│ │ │ │ +
25#define TDS_VERSION_NO "freetds v1.5.5"
│ │ │ │
26
│ │ │ │ -
27#if HAVE_SYS_SOCKET_H
│ │ │ │ -
28#include <sys/socket.h>
│ │ │ │ -
29#endif /* HAVE_SYS_SOCKET_H */
│ │ │ │ -
30
│ │ │ │ -
31#if (!defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__FreeBSD) \
│ │ │ │ -
32 && !defined(__NetBSD__) && !defined(__NetBSD)) \
│ │ │ │ -
33 || defined(__SYMBIAN32__)
│ │ │ │ -
34#undef SO_NOSIGPIPE
│ │ │ │ -
35#endif
│ │ │ │ -
36
│ │ │ │ -
37#endif /* _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ */
│ │ │ │ +
27#define TDS_VERSION_MAJOR 1
│ │ │ │ +
28#define TDS_VERSION_MINOR 5
│ │ │ │ +
29#define TDS_VERSION_SUBVERSION 5
│ │ │ │ +
30#define TDS_VERSION_BUILD_NUMBER 1756608049
│ │ │ │ +
31
│ │ │ │ +
32#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -nosigpipe.h │ │ │ │ │ +version.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2024 Ziglio Frediano │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,27 +20,22 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ │ │ │ │ │ -21#define _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ │ │ │ │ │ +20#ifndef _tdsguard_fWmaUBUxPCWj6BPyET5377_ │ │ │ │ │ +21#define _tdsguard_fWmaUBUxPCWj6BPyET5377_ │ │ │ │ │ 22 │ │ │ │ │ -23#if HAVE_SYS_TYPES_H │ │ │ │ │ -24#include │ │ │ │ │ -25#endif /* HAVE_SYS_TYPES_H */ │ │ │ │ │ +23/* $Id: c69b1270e9bbde50d3708cbfbf8921f8e849c928 $ */ │ │ │ │ │ +24 │ │ │ │ │ +25#define TDS_VERSION_NO "freetds v1.5.5" │ │ │ │ │ 26 │ │ │ │ │ -27#if HAVE_SYS_SOCKET_H │ │ │ │ │ -28#include │ │ │ │ │ -29#endif /* HAVE_SYS_SOCKET_H */ │ │ │ │ │ -30 │ │ │ │ │ -31#if (!defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__FreeBSD) \ │ │ │ │ │ -32 && !defined(__NetBSD__) && !defined(__NetBSD)) \ │ │ │ │ │ -33 || defined(__SYMBIAN32__) │ │ │ │ │ -34#undef SO_NOSIGPIPE │ │ │ │ │ -35#endif │ │ │ │ │ -36 │ │ │ │ │ -37#endif /* _tdsguard_bZ9Gv69gt4HKEOuxm10QzP_ */ │ │ │ │ │ +27#define TDS_VERSION_MAJOR 1 │ │ │ │ │ +28#define TDS_VERSION_MINOR 5 │ │ │ │ │ +29#define TDS_VERSION_SUBVERSION 5 │ │ │ │ │ +30#define TDS_VERSION_BUILD_NUMBER 1756608049 │ │ │ │ │ +31 │ │ │ │ │ +32#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00476_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/dlist.tmpl.h Source File │ │ │ │ +FreeTDS API: include/freetds/pushvis.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,143 +70,24 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
dlist.tmpl.h
│ │ │ │ +
pushvis.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* Dlist - dynamic list
│ │ │ │ -
2 * Copyright (C) 2016-2024 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#include <freetds/bool.h>
│ │ │ │ -
21#include <freetds/utils.h>
│ │ │ │ -
22#include <freetds/macros.h>
│ │ │ │ -
23
│ │ │ │ -
24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_LIST_TYPE)
│ │ │ │ -
25#error Required defines for dlist missing!
│ │ │ │ -
26#endif
│ │ │ │ -
27
│ │ │ │ -
28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \
│ │ │ │ -
29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)
│ │ │ │ -
30#error Some internal dlist macros already defined
│ │ │ │ -
31#endif
│ │ │ │ -
32
│ │ │ │ -
│ │ │ │ -
33typedef struct
│ │ │ │ -
34{
│ │ │ │ -
35 dlist_ring ring;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
37
│ │ │ │ -
38#define DLIST_PASTER(x,y) x ## _ ## y
│ │ │ │ -
39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)
│ │ │ │ -
40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)
│ │ │ │ -
41#define DLIST_ITEM(ring) \
│ │ │ │ -
42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_NAME(item))))
│ │ │ │ -
43
│ │ │ │ -
44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list TDS_UNUSED)
│ │ │ │ -
45{
│ │ │ │ -
46#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
47 assert(list != NULL);
│ │ │ │ -
48 dlist_ring_check(&list->ring);
│ │ │ │ -
49#endif
│ │ │ │ -
50}
│ │ │ │ -
51
│ │ │ │ -
52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)
│ │ │ │ -
53{
│ │ │ │ -
54 list->ring.next = list->ring.prev = &list->ring;
│ │ │ │ -
55 DLIST_NAME(check)(list);
│ │ │ │ -
56}
│ │ │ │ -
57
│ │ │ │ -
58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)
│ │ │ │ -
59{
│ │ │ │ -
60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);
│ │ │ │ -
61}
│ │ │ │ -
62
│ │ │ │ -
63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)
│ │ │ │ -
64{
│ │ │ │ -
65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);
│ │ │ │ -
66}
│ │ │ │ -
67
│ │ │ │ -
68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
69{
│ │ │ │ -
70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).next);
│ │ │ │ -
71}
│ │ │ │ -
72
│ │ │ │ -
73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
74{
│ │ │ │ -
75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).prev);
│ │ │ │ -
76}
│ │ │ │ -
77
│ │ │ │ -
78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
79{
│ │ │ │ -
80 DLIST_NAME(check)(list);
│ │ │ │ -
81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));
│ │ │ │ -
82 DLIST_NAME(check)(list);
│ │ │ │ -
83}
│ │ │ │ -
84
│ │ │ │ -
85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
86{
│ │ │ │ -
87 DLIST_NAME(check)(list);
│ │ │ │ -
88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));
│ │ │ │ -
89 DLIST_NAME(check)(list);
│ │ │ │ -
90}
│ │ │ │ -
91
│ │ │ │ -
92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
93{
│ │ │ │ -
94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME(item).next;
│ │ │ │ -
95 DLIST_NAME(check)(list);
│ │ │ │ -
96 if (prev) {
│ │ │ │ -
97 prev->next = next;
│ │ │ │ -
98 next->prev = prev;
│ │ │ │ -
99 }
│ │ │ │ -
100 item->DLIST_NAME(item).prev = NULL;
│ │ │ │ -
101 item->DLIST_NAME(item).next = NULL;
│ │ │ │ -
102 DLIST_NAME(check)(list);
│ │ │ │ -
103}
│ │ │ │ -
104
│ │ │ │ -
105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
│ │ │ │ -
106{
│ │ │ │ -
107 DLIST_NAME(check)(list);
│ │ │ │ -
108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next != NULL;
│ │ │ │ -
109}
│ │ │ │ -
110
│ │ │ │ -
111#undef DLIST_ITEM
│ │ │ │ -
112#undef DLIST_NAME
│ │ │ │ -
113#undef DLIST_ITEM_TYPE
│ │ │ │ -
114#undef DLIST_LIST_TYPE
│ │ │ │ -
115#undef DLIST_PREFIX
│ │ │ │ -
116#undef DLIST_PASTER
│ │ │ │ -
117#undef DLIST_EVALUATOR
│ │ │ │ -
118
│ │ │ │ -
Definition dlist.h:23
│ │ │ │ -
Definition dlist.tmpl.h:34
│ │ │ │ +
1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ +
2#pragma GCC visibility push(hidden)
│ │ │ │ +
3#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,144 +1,12 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -dlist.tmpl.h │ │ │ │ │ -1/* Dlist - dynamic list │ │ │ │ │ -2 * Copyright (C) 2016-2024 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#include │ │ │ │ │ -21#include │ │ │ │ │ -22#include │ │ │ │ │ -23 │ │ │ │ │ -24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_ │ │ │ │ │ -LIST_TYPE) │ │ │ │ │ -25#error Required defines for dlist missing! │ │ │ │ │ -26#endif │ │ │ │ │ -27 │ │ │ │ │ -28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \ │ │ │ │ │ -29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM) │ │ │ │ │ -30#error Some internal dlist macros already defined │ │ │ │ │ -31#endif │ │ │ │ │ -32 │ │ │ │ │ -33typedef struct │ │ │ │ │ -34{ │ │ │ │ │ -35 dlist_ring ring; │ │ │ │ │ -36} DLIST_LIST_TYPE; │ │ │ │ │ -37 │ │ │ │ │ -38#define DLIST_PASTER(x,y) x ## _ ## y │ │ │ │ │ -39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y) │ │ │ │ │ -40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix) │ │ │ │ │ -41#define DLIST_ITEM(ring) \ │ │ │ │ │ -42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_ │ │ │ │ │ -NAME(item)))) │ │ │ │ │ -43 │ │ │ │ │ -44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list TDS_UNUSED) │ │ │ │ │ -45{ │ │ │ │ │ -46#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -47 assert(list != NULL); │ │ │ │ │ -48 dlist_ring_check(&list->ring); │ │ │ │ │ -49#endif │ │ │ │ │ -50} │ │ │ │ │ -51 │ │ │ │ │ -52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list) │ │ │ │ │ -53{ │ │ │ │ │ -54 list->ring.next = list->ring.prev = &list->ring; │ │ │ │ │ -55 DLIST_NAME(check)(list); │ │ │ │ │ -56} │ │ │ │ │ -57 │ │ │ │ │ -58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list) │ │ │ │ │ -59{ │ │ │ │ │ -60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next); │ │ │ │ │ -61} │ │ │ │ │ -62 │ │ │ │ │ -63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list) │ │ │ │ │ -64{ │ │ │ │ │ -65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev); │ │ │ │ │ -66} │ │ │ │ │ -67 │ │ │ │ │ -68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ │ │ │ │ │ -ITEM_TYPE *item) │ │ │ │ │ -69{ │ │ │ │ │ -70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item- │ │ │ │ │ ->DLIST_NAME(item).next); │ │ │ │ │ -71} │ │ │ │ │ -72 │ │ │ │ │ -73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ │ │ │ │ │ -ITEM_TYPE *item) │ │ │ │ │ -74{ │ │ │ │ │ -75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item- │ │ │ │ │ ->DLIST_NAME(item).prev); │ │ │ │ │ -76} │ │ │ │ │ -77 │ │ │ │ │ -78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ -*item) │ │ │ │ │ -79{ │ │ │ │ │ -80 DLIST_NAME(check)(list); │ │ │ │ │ -81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item)); │ │ │ │ │ -82 DLIST_NAME(check)(list); │ │ │ │ │ -83} │ │ │ │ │ -84 │ │ │ │ │ -85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ -*item) │ │ │ │ │ -86{ │ │ │ │ │ -87 DLIST_NAME(check)(list); │ │ │ │ │ -88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item)); │ │ │ │ │ -89 DLIST_NAME(check)(list); │ │ │ │ │ -90} │ │ │ │ │ -91 │ │ │ │ │ -92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE │ │ │ │ │ -*item) │ │ │ │ │ -93{ │ │ │ │ │ -94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME │ │ │ │ │ -(item).next; │ │ │ │ │ -95 DLIST_NAME(check)(list); │ │ │ │ │ -96 if (prev) { │ │ │ │ │ -97 prev->next = next; │ │ │ │ │ -98 next->prev = prev; │ │ │ │ │ -99 } │ │ │ │ │ -100 item->DLIST_NAME(item).prev = NULL; │ │ │ │ │ -101 item->DLIST_NAME(item).next = NULL; │ │ │ │ │ -102 DLIST_NAME(check)(list); │ │ │ │ │ -103} │ │ │ │ │ -104 │ │ │ │ │ -105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_ │ │ │ │ │ -TYPE *item) │ │ │ │ │ -106{ │ │ │ │ │ -107 DLIST_NAME(check)(list); │ │ │ │ │ -108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next │ │ │ │ │ -!= NULL; │ │ │ │ │ -109} │ │ │ │ │ -110 │ │ │ │ │ -111#undef DLIST_ITEM │ │ │ │ │ -112#undef DLIST_NAME │ │ │ │ │ -113#undef DLIST_ITEM_TYPE │ │ │ │ │ -114#undef DLIST_LIST_TYPE │ │ │ │ │ -115#undef DLIST_PREFIX │ │ │ │ │ -116#undef DLIST_PASTER │ │ │ │ │ -117#undef DLIST_EVALUATOR │ │ │ │ │ -118 │ │ │ │ │ -dlist_ring │ │ │ │ │ -Definition dlist.h:23 │ │ │ │ │ -DLIST_LIST_TYPE │ │ │ │ │ -Definition dlist.tmpl.h:34 │ │ │ │ │ +pushvis.h │ │ │ │ │ +1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ +2#pragma GCC visibility push(hidden) │ │ │ │ │ +3#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00479_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/hmac_md5.h Source File │ │ │ │ +FreeTDS API: include/freetds/charset_lookup.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,50 +70,1911 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
hmac_md5.h
│ │ │ │ +
charset_lookup.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2008 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_cKNGa1szdpreKWqKpKKcAA_
│ │ │ │ -
21#define _tdsguard_cKNGa1szdpreKWqKpKKcAA_
│ │ │ │ -
22
│ │ │ │ -
23#include <freetds/pushvis.h>
│ │ │ │ -
24void hmac_md5(const unsigned char key[16],
│ │ │ │ -
25 const unsigned char* data, size_t data_len,
│ │ │ │ -
26 unsigned char* digest);
│ │ │ │ -
27#include <freetds/popvis.h>
│ │ │ │ -
28
│ │ │ │ -
29#endif
│ │ │ │ +
1/* ANSI-C code produced by gperf version 3.1 */
│ │ │ │ +
2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P -H hash_charset -N charset_lookup -L ANSI-C --enum charset_lookup.gperf */
│ │ │ │ +
3/* Computed positions: -k'1,3-11,$' */
│ │ │ │ +
4
│ │ │ │ +
5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
│ │ │ │ +
6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
│ │ │ │ +
7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
│ │ │ │ +
8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
│ │ │ │ +
9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
│ │ │ │ +
10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
│ │ │ │ +
11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
│ │ │ │ +
12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
│ │ │ │ +
13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
│ │ │ │ +
14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
│ │ │ │ +
15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
│ │ │ │ +
16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
│ │ │ │ +
17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
│ │ │ │ +
18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
│ │ │ │ +
19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
│ │ │ │ +
20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
│ │ │ │ +
21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
│ │ │ │ +
22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
│ │ │ │ +
23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
│ │ │ │ +
24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
│ │ │ │ +
25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
│ │ │ │ +
26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
│ │ │ │ +
27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
│ │ │ │ +
28/* The character set is not based on ISO-646. */
│ │ │ │ +
29#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
│ │ │ │ +
30#endif
│ │ │ │ +
31
│ │ │ │ +
32#line 3 "charset_lookup.gperf"
│ │ │ │ +
33
│ │ │ │ +
34static const struct charset_alias *charset_lookup(register const char *str, register size_t len);
│ │ │ │ +
35#line 2 "charset_lookup.gperf"
│ │ │ │ +
36struct charset_alias { short int alias_pos; short int canonic; };
│ │ │ │ +
37/* maximum key range = 1038, duplicates = 0 */
│ │ │ │ +
38
│ │ │ │ +
39#ifdef __GNUC__
│ │ │ │ +
40__inline
│ │ │ │ +
41#else
│ │ │ │ +
42#ifdef __cplusplus
│ │ │ │ +
43inline
│ │ │ │ +
44#endif
│ │ │ │ +
45#endif
│ │ │ │ +
46static unsigned int
│ │ │ │ +
47hash_charset (register const char *str, register size_t len)
│ │ │ │ +
48{
│ │ │ │ +
49 static const unsigned short asso_values[] =
│ │ │ │ +
50 {
│ │ │ │ +
51 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
52 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
53 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
54 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
55 1070, 1070, 1070, 1070, 1070, 8, 113, 1070, 34, 7,
│ │ │ │ +
56 83, 104, 36, 9, 20, 85, 8, 10, 330, 1070,
│ │ │ │ +
57 1070, 1070, 1070, 1070, 1070, 50, 186, 97, 7, 84,
│ │ │ │ +
58 66, 32, 73, 7, 17, 186, 27, 183, 9, 7,
│ │ │ │ +
59 106, 1070, 51, 7, 11, 117, 229, 151, 339, 22,
│ │ │ │ +
60 10, 1070, 1070, 1070, 1070, 24, 1070, 13, 7, 179,
│ │ │ │ +
61 1070, 7, 9, 13, 27, 7, 1070, 7, 1070, 8,
│ │ │ │ +
62 7, 7, 1070, 1070, 8, 8, 7, 10, 1070, 1070,
│ │ │ │ +
63 1070, 12, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
64 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
65 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
66 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
67 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
68 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
69 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
70 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
71 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
72 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
73 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
74 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
75 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
│ │ │ │ +
76 1070, 1070, 1070, 1070, 1070, 1070
│ │ │ │ +
77 };
│ │ │ │ +
78 register unsigned int hval = len;
│ │ │ │ +
79
│ │ │ │ +
80 switch (hval)
│ │ │ │ +
81 {
│ │ │ │ +
82 default:
│ │ │ │ +
83 hval += asso_values[(unsigned char)str[10]];
│ │ │ │ +
84 /*FALLTHROUGH*/
│ │ │ │ +
85 case 10:
│ │ │ │ +
86 hval += asso_values[(unsigned char)str[9]];
│ │ │ │ +
87 /*FALLTHROUGH*/
│ │ │ │ +
88 case 9:
│ │ │ │ +
89 hval += asso_values[(unsigned char)str[8]];
│ │ │ │ +
90 /*FALLTHROUGH*/
│ │ │ │ +
91 case 8:
│ │ │ │ +
92 hval += asso_values[(unsigned char)str[7]];
│ │ │ │ +
93 /*FALLTHROUGH*/
│ │ │ │ +
94 case 7:
│ │ │ │ +
95 hval += asso_values[(unsigned char)str[6]];
│ │ │ │ +
96 /*FALLTHROUGH*/
│ │ │ │ +
97 case 6:
│ │ │ │ +
98 hval += asso_values[(unsigned char)str[5]];
│ │ │ │ +
99 /*FALLTHROUGH*/
│ │ │ │ +
100 case 5:
│ │ │ │ +
101 hval += asso_values[(unsigned char)str[4]];
│ │ │ │ +
102 /*FALLTHROUGH*/
│ │ │ │ +
103 case 4:
│ │ │ │ +
104 hval += asso_values[(unsigned char)str[3]];
│ │ │ │ +
105 /*FALLTHROUGH*/
│ │ │ │ +
106 case 3:
│ │ │ │ +
107 hval += asso_values[(unsigned char)str[2]];
│ │ │ │ +
108 /*FALLTHROUGH*/
│ │ │ │ +
109 case 2:
│ │ │ │ +
110 case 1:
│ │ │ │ +
111 hval += asso_values[(unsigned char)str[0]];
│ │ │ │ +
112 break;
│ │ │ │ +
113 }
│ │ │ │ +
114 return hval + asso_values[(unsigned char)str[len - 1]];
│ │ │ │ +
115}
│ │ │ │ +
116
│ │ │ │ +
│ │ │ │ +
117struct stringpool_t
│ │ │ │ +
118 {
│ │ │ │ +
119 char stringpool_str32[sizeof("SJIS")];
│ │ │ │ +
120 char stringpool_str34[sizeof("koi8")];
│ │ │ │ +
121 char stringpool_str35[sizeof("sjis")];
│ │ │ │ +
122 char stringpool_str36[sizeof("L1")];
│ │ │ │ +
123 char stringpool_str37[sizeof("L8")];
│ │ │ │ +
124 char stringpool_str38[sizeof("L5")];
│ │ │ │ +
125 char stringpool_str39[sizeof("utf8")];
│ │ │ │ +
126 char stringpool_str41[sizeof("iso81")];
│ │ │ │ +
127 char stringpool_str42[sizeof("big5")];
│ │ │ │ +
128 char stringpool_str43[sizeof("iso88")];
│ │ │ │ +
129 char stringpool_str44[sizeof("iso15")];
│ │ │ │ +
130 char stringpool_str45[sizeof("iso85")];
│ │ │ │ +
131 char stringpool_str47[sizeof("iso89")];
│ │ │ │ +
132 char stringpool_str48[sizeof("thai8")];
│ │ │ │ +
133 char stringpool_str49[sizeof("L6")];
│ │ │ │ +
134 char stringpool_str50[sizeof("roma8")];
│ │ │ │ +
135 char stringpool_str51[sizeof("866")];
│ │ │ │ +
136 char stringpool_str53[sizeof("iso815")];
│ │ │ │ +
137 char stringpool_str56[sizeof("greek8")];
│ │ │ │ +
138 char stringpool_str57[sizeof("iso_1")];
│ │ │ │ +
139 char stringpool_str58[sizeof("roman8")];
│ │ │ │ +
140 char stringpool_str61[sizeof("R8")];
│ │ │ │ +
141 char stringpool_str63[sizeof("646")];
│ │ │ │ +
142 char stringpool_str65[sizeof("L4")];
│ │ │ │ +
143 char stringpool_str67[sizeof("iso86")];
│ │ │ │ +
144 char stringpool_str71[sizeof("iso88591")];
│ │ │ │ +
145 char stringpool_str73[sizeof("iso88598")];
│ │ │ │ +
146 char stringpool_str74[sizeof("LATIN1")];
│ │ │ │ +
147 char stringpool_str75[sizeof("iso88595")];
│ │ │ │ +
148 char stringpool_str76[sizeof("LATIN8")];
│ │ │ │ +
149 char stringpool_str77[sizeof("iso88599")];
│ │ │ │ +
150 char stringpool_str78[sizeof("LATIN5")];
│ │ │ │ +
151 char stringpool_str79[sizeof("850")];
│ │ │ │ +
152 char stringpool_str80[sizeof("ISO8859-1")];
│ │ │ │ +
153 char stringpool_str82[sizeof("ISO8859-8")];
│ │ │ │ +
154 char stringpool_str83[sizeof("iso885915")];
│ │ │ │ +
155 char stringpool_str84[sizeof("ISO8859-5")];
│ │ │ │ +
156 char stringpool_str85[sizeof("HZ")];
│ │ │ │ +
157 char stringpool_str86[sizeof("ISO8859-9")];
│ │ │ │ +
158 char stringpool_str89[sizeof("ISO-8859-1")];
│ │ │ │ +
159 char stringpool_str91[sizeof("ISO-8859-8")];
│ │ │ │ +
160 char stringpool_str92[sizeof("ISO8859-15")];
│ │ │ │ +
161 char stringpool_str93[sizeof("ISO-8859-5")];
│ │ │ │ +
162 char stringpool_str94[sizeof("iso10")];
│ │ │ │ +
163 char stringpool_str95[sizeof("ISO-8859-9")];
│ │ │ │ +
164 char stringpool_str97[sizeof("iso88596")];
│ │ │ │ +
165 char stringpool_str98[sizeof("iso14")];
│ │ │ │ +
166 char stringpool_str99[sizeof("iso84")];
│ │ │ │ +
167 char stringpool_str100[sizeof("LATIN6")];
│ │ │ │ +
168 char stringpool_str101[sizeof("ISO-8859-15")];
│ │ │ │ +
169 char stringpool_str105[sizeof("ISO_8859-1")];
│ │ │ │ +
170 char stringpool_str106[sizeof("ISO8859-6")];
│ │ │ │ +
171 char stringpool_str107[sizeof("ISO_8859-8")];
│ │ │ │ +
172 char stringpool_str108[sizeof("CN")];
│ │ │ │ +
173 char stringpool_str109[sizeof("ISO_8859-5")];
│ │ │ │ +
174 char stringpool_str111[sizeof("ISO_8859-9")];
│ │ │ │ +
175 char stringpool_str112[sizeof("L2")];
│ │ │ │ +
176 char stringpool_str114[sizeof("L7")];
│ │ │ │ +
177 char stringpool_str115[sizeof("ISO-8859-6")];
│ │ │ │ +
178 char stringpool_str116[sizeof("iso646")];
│ │ │ │ +
179 char stringpool_str117[sizeof("ISO_8859-15")];
│ │ │ │ +
180 char stringpool_str120[sizeof("C99")];
│ │ │ │ +
181 char stringpool_str121[sizeof("ISO_8859-15:1998")];
│ │ │ │ +
182 char stringpool_str122[sizeof("ISO-IR-58")];
│ │ │ │ +
183 char stringpool_str123[sizeof("ISO-8859-16")];
│ │ │ │ +
184 char stringpool_str125[sizeof("JP")];
│ │ │ │ +
185 char stringpool_str126[sizeof("US")];
│ │ │ │ +
186 char stringpool_str129[sizeof("iso88594")];
│ │ │ │ +
187 char stringpool_str131[sizeof("ISO_8859-6")];
│ │ │ │ +
188 char stringpool_str132[sizeof("LATIN4")];
│ │ │ │ +
189 char stringpool_str133[sizeof("L3")];
│ │ │ │ +
190 char stringpool_str134[sizeof("ISO-IR-159")];
│ │ │ │ +
191 char stringpool_str135[sizeof("ISO-IR-199")];
│ │ │ │ +
192 char stringpool_str136[sizeof("ISO-IR-6")];
│ │ │ │ +
193 char stringpool_str137[sizeof("CP819")];
│ │ │ │ +
194 char stringpool_str138[sizeof("ISO8859-4")];
│ │ │ │ +
195 char stringpool_str139[sizeof("ISO_8859-16")];
│ │ │ │ +
196 char stringpool_str142[sizeof("ISO8859-10")];
│ │ │ │ +
197 char stringpool_str143[sizeof("ISO-IR-165")];
│ │ │ │ +
198 char stringpool_str146[sizeof("SHIFT-JIS")];
│ │ │ │ +
199 char stringpool_str147[sizeof("ISO-8859-4")];
│ │ │ │ +
200 char stringpool_str148[sizeof("ISO_8859-14:1998")];
│ │ │ │ +
201 char stringpool_str151[sizeof("ISO-8859-10")];
│ │ │ │ +
202 char stringpool_str153[sizeof("ISO-IR-101")];
│ │ │ │ +
203 char stringpool_str155[sizeof("ISO-8859-14")];
│ │ │ │ +
204 char stringpool_str157[sizeof("ISO-IR-148")];
│ │ │ │ +
205 char stringpool_str158[sizeof("ISO_8859-16:2000")];
│ │ │ │ +
206 char stringpool_str159[sizeof("ISO-IR-109")];
│ │ │ │ +
207 char stringpool_str161[sizeof("ISO-IR-149")];
│ │ │ │ +
208 char stringpool_str162[sizeof("SHIFT_JIS")];
│ │ │ │ +
209 char stringpool_str163[sizeof("ISO_8859-4")];
│ │ │ │ +
210 char stringpool_str164[sizeof("hp15CN")];
│ │ │ │ +
211 char stringpool_str165[sizeof("ISO-IR-166")];
│ │ │ │ +
212 char stringpool_str167[sizeof("ISO_8859-10")];
│ │ │ │ +
213 char stringpool_str168[sizeof("CP949")];
│ │ │ │ +
214 char stringpool_str170[sizeof("CP866")];
│ │ │ │ +
215 char stringpool_str171[sizeof("ISO_8859-14")];
│ │ │ │ +
216 char stringpool_str173[sizeof("ASCII")];
│ │ │ │ +
217 char stringpool_str176[sizeof("ISO-IR-14")];
│ │ │ │ +
218 char stringpool_str177[sizeof("862")];
│ │ │ │ +
219 char stringpool_str180[sizeof("ISO-IR-110")];
│ │ │ │ +
220 char stringpool_str183[sizeof("GB_1988-80")];
│ │ │ │ +
221 char stringpool_str187[sizeof("CP850")];
│ │ │ │ +
222 char stringpool_str189[sizeof("CP950")];
│ │ │ │ +
223 char stringpool_str192[sizeof("tis620")];
│ │ │ │ +
224 char stringpool_str193[sizeof("iso82")];
│ │ │ │ +
225 char stringpool_str195[sizeof("TIS620")];
│ │ │ │ +
226 char stringpool_str197[sizeof("iso87")];
│ │ │ │ +
227 char stringpool_str198[sizeof("JIS0208")];
│ │ │ │ +
228 char stringpool_str203[sizeof("UTF8")];
│ │ │ │ +
229 char stringpool_str204[sizeof("TIS-620")];
│ │ │ │ +
230 char stringpool_str207[sizeof("ISO-IR-100")];
│ │ │ │ +
231 char stringpool_str210[sizeof("ISO-IR-179")];
│ │ │ │ +
232 char stringpool_str212[sizeof("UTF-8")];
│ │ │ │ +
233 char stringpool_str213[sizeof("ISO-IR-144")];
│ │ │ │ +
234 char stringpool_str215[sizeof("CP65001")];
│ │ │ │ +
235 char stringpool_str216[sizeof("CP1251")];
│ │ │ │ +
236 char stringpool_str218[sizeof("CP1258")];
│ │ │ │ +
237 char stringpool_str220[sizeof("CP1255")];
│ │ │ │ +
238 char stringpool_str221[sizeof("ISO_8859-10:1992")];
│ │ │ │ +
239 char stringpool_str222[sizeof("ISO646-CN")];
│ │ │ │ +
240 char stringpool_str223[sizeof("iso88592")];
│ │ │ │ +
241 char stringpool_str225[sizeof("ISO-IR-138")];
│ │ │ │ +
242 char stringpool_str226[sizeof("LATIN2")];
│ │ │ │ +
243 char stringpool_str227[sizeof("iso88597")];
│ │ │ │ +
244 char stringpool_str228[sizeof("ISO-IR-126")];
│ │ │ │ +
245 char stringpool_str229[sizeof("CSISO159JISX02121990")];
│ │ │ │ +
246 char stringpool_str230[sizeof("LATIN7")];
│ │ │ │ +
247 char stringpool_str231[sizeof("IBM819")];
│ │ │ │ +
248 char stringpool_str232[sizeof("ISO8859-2")];
│ │ │ │ +
249 char stringpool_str233[sizeof("macturk")];
│ │ │ │ +
250 char stringpool_str234[sizeof("iso13")];
│ │ │ │ +
251 char stringpool_str235[sizeof("iso83")];
│ │ │ │ +
252 char stringpool_str236[sizeof("ISO8859-7")];
│ │ │ │ +
253 char stringpool_str237[sizeof("KOI8-T")];
│ │ │ │ +
254 char stringpool_str238[sizeof("ISO646-US")];
│ │ │ │ +
255 char stringpool_str239[sizeof("TIS620-0")];
│ │ │ │ +
256 char stringpool_str240[sizeof("BIG5")];
│ │ │ │ +
257 char stringpool_str241[sizeof("ISO-8859-2")];
│ │ │ │ +
258 char stringpool_str242[sizeof("CP1256")];
│ │ │ │ +
259 char stringpool_str243[sizeof("ELOT_928")];
│ │ │ │ +
260 char stringpool_str244[sizeof("macgreek")];
│ │ │ │ +
261 char stringpool_str245[sizeof("ISO-8859-7")];
│ │ │ │ +
262 char stringpool_str247[sizeof("CSISOLATIN1")];
│ │ │ │ +
263 char stringpool_str248[sizeof("CP1361")];
│ │ │ │ +
264 char stringpool_str249[sizeof("BIG-5")];
│ │ │ │ +
265 char stringpool_str250[sizeof("cp949")];
│ │ │ │ +
266 char stringpool_str251[sizeof("CSISOLATIN5")];
│ │ │ │ +
267 char stringpool_str252[sizeof("cp866")];
│ │ │ │ +
268 char stringpool_str253[sizeof("ascii_8")];
│ │ │ │ +
269 char stringpool_str255[sizeof("macthai")];
│ │ │ │ +
270 char stringpool_str256[sizeof("CP936")];
│ │ │ │ +
271 char stringpool_str257[sizeof("ISO_8859-2")];
│ │ │ │ +
272 char stringpool_str260[sizeof("GB18030")];
│ │ │ │ +
273 char stringpool_str261[sizeof("ISO_8859-7")];
│ │ │ │ +
274 char stringpool_str262[sizeof("TCVN")];
│ │ │ │ +
275 char stringpool_str264[sizeof("IBM866")];
│ │ │ │ +
276 char stringpool_str265[sizeof("iso88593")];
│ │ │ │ +
277 char stringpool_str267[sizeof("CP874")];
│ │ │ │ +
278 char stringpool_str268[sizeof("LATIN3")];
│ │ │ │ +
279 char stringpool_str269[sizeof("cp850")];
│ │ │ │ +
280 char stringpool_str270[sizeof("CP1250")];
│ │ │ │ +
281 char stringpool_str271[sizeof("cp950")];
│ │ │ │ +
282 char stringpool_str273[sizeof("CSISOLATIN6")];
│ │ │ │ +
283 char stringpool_str274[sizeof("CP1254")];
│ │ │ │ +
284 char stringpool_str275[sizeof("ISO-IR-87")];
│ │ │ │ +
285 char stringpool_str276[sizeof("ISO-IR-57")];
│ │ │ │ +
286 char stringpool_str278[sizeof("MS-ANSI")];
│ │ │ │ +
287 char stringpool_str279[sizeof("CSASCII")];
│ │ │ │ +
288 char stringpool_str281[sizeof("IBM850")];
│ │ │ │ +
289 char stringpool_str283[sizeof("ISO-8859-3")];
│ │ │ │ +
290 char stringpool_str284[sizeof("ISO-IR-157")];
│ │ │ │ +
291 char stringpool_str291[sizeof("ISO-8859-13")];
│ │ │ │ +
292 char stringpool_str296[sizeof("CP862")];
│ │ │ │ +
293 char stringpool_str298[sizeof("cp1251")];
│ │ │ │ +
294 char stringpool_str299[sizeof("ISO_8859-3")];
│ │ │ │ +
295 char stringpool_str300[sizeof("cp1258")];
│ │ │ │ +
296 char stringpool_str301[sizeof("EUCCN")];
│ │ │ │ +
297 char stringpool_str302[sizeof("cp1255")];
│ │ │ │ +
298 char stringpool_str304[sizeof("ISO-IR-226")];
│ │ │ │ +
299 char stringpool_str305[sizeof("CSISOLATIN4")];
│ │ │ │ +
300 char stringpool_str307[sizeof("ISO_8859-13")];
│ │ │ │ +
301 char stringpool_str308[sizeof("US-ASCII")];
│ │ │ │ +
302 char stringpool_str309[sizeof("CSSHIFTJIS")];
│ │ │ │ +
303 char stringpool_str310[sizeof("EUC-CN")];
│ │ │ │ +
304 char stringpool_str313[sizeof("CSISO14JISC6220RO")];
│ │ │ │ +
305 char stringpool_str314[sizeof("UHC")];
│ │ │ │ +
306 char stringpool_str315[sizeof("ROMAN8")];
│ │ │ │ +
307 char stringpool_str317[sizeof("KOI8-R")];
│ │ │ │ +
308 char stringpool_str324[sizeof("cp1256")];
│ │ │ │ +
309 char stringpool_str327[sizeof("GEORGIAN-PS")];
│ │ │ │ +
310 char stringpool_str336[sizeof("ISO646-JP")];
│ │ │ │ +
311 char stringpool_str338[sizeof("cp936")];
│ │ │ │ +
312 char stringpool_str346[sizeof("CSBIG5")];
│ │ │ │ +
313 char stringpool_str349[sizeof("cp874")];
│ │ │ │ +
314 char stringpool_str350[sizeof("JAVA")];
│ │ │ │ +
315 char stringpool_str352[sizeof("cp1250")];
│ │ │ │ +
316 char stringpool_str355[sizeof("CN-BIG5")];
│ │ │ │ +
317 char stringpool_str356[sizeof("cp1254")];
│ │ │ │ +
318 char stringpool_str357[sizeof("UTF7")];
│ │ │ │ +
319 char stringpool_str358[sizeof("ISO-IR-127")];
│ │ │ │ +
320 char stringpool_str360[sizeof("VISCII")];
│ │ │ │ +
321 char stringpool_str363[sizeof("ECMA-118")];
│ │ │ │ +
322 char stringpool_str366[sizeof("UTF-7")];
│ │ │ │ +
323 char stringpool_str367[sizeof("UNICODE-1-1")];
│ │ │ │ +
324 char stringpool_str368[sizeof("CP1252")];
│ │ │ │ +
325 char stringpool_str369[sizeof("mac")];
│ │ │ │ +
326 char stringpool_str370[sizeof("UCS-4LE")];
│ │ │ │ +
327 char stringpool_str372[sizeof("CP1257")];
│ │ │ │ +
328 char stringpool_str378[sizeof("cp862")];
│ │ │ │ +
329 char stringpool_str379[sizeof("CHINESE")];
│ │ │ │ +
330 char stringpool_str380[sizeof("MAC")];
│ │ │ │ +
331 char stringpool_str381[sizeof("GEORGIAN-ACADEMY")];
│ │ │ │ +
332 char stringpool_str382[sizeof("CP932")];
│ │ │ │ +
333 char stringpool_str384[sizeof("ARMSCII-8")];
│ │ │ │ +
334 char stringpool_str385[sizeof("CSISOLATINARABIC")];
│ │ │ │ +
335 char stringpool_str390[sizeof("IBM862")];
│ │ │ │ +
336 char stringpool_str391[sizeof("ASMO-708")];
│ │ │ │ +
337 char stringpool_str392[sizeof("KSC_5601")];
│ │ │ │ +
338 char stringpool_str395[sizeof("KOREAN")];
│ │ │ │ +
339 char stringpool_str396[sizeof("CP367")];
│ │ │ │ +
340 char stringpool_str398[sizeof("GB2312")];
│ │ │ │ +
341 char stringpool_str399[sizeof("CSISOLATIN2")];
│ │ │ │ +
342 char stringpool_str404[sizeof("JIS_C6220-1969-RO")];
│ │ │ │ +
343 char stringpool_str406[sizeof("HP-ROMAN8")];
│ │ │ │ +
344 char stringpool_str407[sizeof("GBK")];
│ │ │ │ +
345 char stringpool_str408[sizeof("GREEK8")];
│ │ │ │ +
346 char stringpool_str409[sizeof("MULELAO-1")];
│ │ │ │ +
347 char stringpool_str410[sizeof("CP1253")];
│ │ │ │ +
348 char stringpool_str412[sizeof("CP437")];
│ │ │ │ +
349 char stringpool_str414[sizeof("CSKOI8R")];
│ │ │ │ +
350 char stringpool_str415[sizeof("EUCJP")];
│ │ │ │ +
351 char stringpool_str417[sizeof("UCS-2LE")];
│ │ │ │ +
352 char stringpool_str418[sizeof("CYRILLIC")];
│ │ │ │ +
353 char stringpool_str419[sizeof("ECMA-114")];
│ │ │ │ +
354 char stringpool_str420[sizeof("eucJP")];
│ │ │ │ +
355 char stringpool_str421[sizeof("UTF-16LE")];
│ │ │ │ +
356 char stringpool_str422[sizeof("MS-CYRL")];
│ │ │ │ +
357 char stringpool_str423[sizeof("ISO-IR-203")];
│ │ │ │ +
358 char stringpool_str424[sizeof("EUC-JP")];
│ │ │ │ +
359 char stringpool_str425[sizeof("mac_cyr")];
│ │ │ │ +
360 char stringpool_str427[sizeof("GB_2312-80")];
│ │ │ │ +
361 char stringpool_str429[sizeof("CP1133")];
│ │ │ │ +
362 char stringpool_str433[sizeof("CN-GB-ISOIR165")];
│ │ │ │ +
363 char stringpool_str434[sizeof("CSISOLATINCYRILLIC")];
│ │ │ │ +
364 char stringpool_str435[sizeof("MACTHAI")];
│ │ │ │ +
365 char stringpool_str439[sizeof("ISO-2022-CN")];
│ │ │ │ +
366 char stringpool_str440[sizeof("KS_C_5601-1989")];
│ │ │ │ +
367 char stringpool_str441[sizeof("CSISOLATIN3")];
│ │ │ │ +
368 char stringpool_str442[sizeof("ISO_8859-8:1988")];
│ │ │ │ +
369 char stringpool_str443[sizeof("ISO_8859-5:1988")];
│ │ │ │ +
370 char stringpool_str445[sizeof("ISO-2022-CN-EXT")];
│ │ │ │ +
371 char stringpool_str446[sizeof("ISO_8859-9:1989")];
│ │ │ │ +
372 char stringpool_str448[sizeof("MS-EE")];
│ │ │ │ +
373 char stringpool_str449[sizeof("KOI8-U")];
│ │ │ │ +
374 char stringpool_str450[sizeof("cp1252")];
│ │ │ │ +
375 char stringpool_str451[sizeof("UNICODE-1-1-UTF-7")];
│ │ │ │ +
376 char stringpool_str452[sizeof("ISO-CELTIC")];
│ │ │ │ +
377 char stringpool_str454[sizeof("cp1257")];
│ │ │ │ +
378 char stringpool_str455[sizeof("CSISOLATINGREEK")];
│ │ │ │ +
379 char stringpool_str456[sizeof("ISO-2022-JP-1")];
│ │ │ │ +
380 char stringpool_str457[sizeof("CSUNICODE11")];
│ │ │ │ +
381 char stringpool_str458[sizeof("WINDOWS-1251")];
│ │ │ │ +
382 char stringpool_str459[sizeof("WINDOWS-1258")];
│ │ │ │ +
383 char stringpool_str460[sizeof("WINDOWS-1255")];
│ │ │ │ +
384 char stringpool_str462[sizeof("CSISOLATINHEBREW")];
│ │ │ │ +
385 char stringpool_str464[sizeof("cp932")];
│ │ │ │ +
386 char stringpool_str465[sizeof("TCVN5712-1")];
│ │ │ │ +
387 char stringpool_str466[sizeof("CSVISCII")];
│ │ │ │ +
388 char stringpool_str468[sizeof("CSISO57GB1988")];
│ │ │ │ +
389 char stringpool_str470[sizeof("ISO_8859-4:1988")];
│ │ │ │ +
390 char stringpool_str471[sizeof("WINDOWS-1256")];
│ │ │ │ +
391 char stringpool_str472[sizeof("UNICODELITTLE")];
│ │ │ │ +
392 char stringpool_str473[sizeof("TIS620.2529-1")];
│ │ │ │ +
393 char stringpool_str474[sizeof("EUCKR")];
│ │ │ │ +
394 char stringpool_str475[sizeof("X0201")];
│ │ │ │ +
395 char stringpool_str476[sizeof("MACINTOSH")];
│ │ │ │ +
396 char stringpool_str477[sizeof("X0208")];
│ │ │ │ +
397 char stringpool_str479[sizeof("eucKR")];
│ │ │ │ +
398 char stringpool_str483[sizeof("EUC-KR")];
│ │ │ │ +
399 char stringpool_str484[sizeof("JIS_C6226-1983")];
│ │ │ │ +
400 char stringpool_str485[sizeof("WINDOWS-1250")];
│ │ │ │ +
401 char stringpool_str487[sizeof("WINDOWS-1254")];
│ │ │ │ +
402 char stringpool_str490[sizeof("IBM367")];
│ │ │ │ +
403 char stringpool_str491[sizeof("MS_KANJI")];
│ │ │ │ +
404 char stringpool_str492[sizeof("cp1253")];
│ │ │ │ +
405 char stringpool_str493[sizeof("ARABIC")];
│ │ │ │ +
406 char stringpool_str494[sizeof("cp437")];
│ │ │ │ +
407 char stringpool_str499[sizeof("EUCTW")];
│ │ │ │ +
408 char stringpool_str501[sizeof("KOI8-RU")];
│ │ │ │ +
409 char stringpool_str504[sizeof("eucTW")];
│ │ │ │ +
410 char stringpool_str506[sizeof("IBM437")];
│ │ │ │ +
411 char stringpool_str507[sizeof("VISCII1.1-1")];
│ │ │ │ +
412 char stringpool_str508[sizeof("EUC-TW")];
│ │ │ │ +
413 char stringpool_str514[sizeof("CN-GB")];
│ │ │ │ +
414 char stringpool_str515[sizeof("KS_C_5601-1987")];
│ │ │ │ +
415 char stringpool_str516[sizeof("WINDOWS-874")];
│ │ │ │ +
416 char stringpool_str517[sizeof("JOHAB")];
│ │ │ │ +
417 char stringpool_str518[sizeof("ISO_8859-1:1987")];
│ │ │ │ +
418 char stringpool_str527[sizeof("CSISO2022CN")];
│ │ │ │ +
419 char stringpool_str529[sizeof("UCS-4BE")];
│ │ │ │ +
420 char stringpool_str531[sizeof("ISO_8859-6:1987")];
│ │ │ │ +
421 char stringpool_str532[sizeof("ISO-2022-JP-2")];
│ │ │ │ +
422 char stringpool_str533[sizeof("TCVN-5712")];
│ │ │ │ +
423 char stringpool_str534[sizeof("WINDOWS-1252")];
│ │ │ │ +
424 char stringpool_str536[sizeof("WINDOWS-1257")];
│ │ │ │ +
425 char stringpool_str537[sizeof("ISO_646.IRV:1991")];
│ │ │ │ +
426 char stringpool_str538[sizeof("ISO_8859-3:1988")];
│ │ │ │ +
427 char stringpool_str539[sizeof("CSUNICODE11UTF7")];
│ │ │ │ +
428 char stringpool_str549[sizeof("CSIBM866")];
│ │ │ │ +
429 char stringpool_str553[sizeof("ISO-2022-JP")];
│ │ │ │ +
430 char stringpool_str555[sizeof("WINDOWS-1253")];
│ │ │ │ +
431 char stringpool_str561[sizeof("JIS_X0201")];
│ │ │ │ +
432 char stringpool_str563[sizeof("JIS_X0208")];
│ │ │ │ +
433 char stringpool_str565[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")];
│ │ │ │ +
434 char stringpool_str572[sizeof("CSKSC56011987")];
│ │ │ │ +
435 char stringpool_str576[sizeof("UCS-2BE")];
│ │ │ │ +
436 char stringpool_str577[sizeof("GREEK")];
│ │ │ │ +
437 char stringpool_str578[sizeof("MACICELAND")];
│ │ │ │ +
438 char stringpool_str579[sizeof("JISX0201-1976")];
│ │ │ │ +
439 char stringpool_str580[sizeof("UTF-16BE")];
│ │ │ │ +
440 char stringpool_str581[sizeof("UTF-32LE")];
│ │ │ │ +
441 char stringpool_str582[sizeof("MACCROATIAN")];
│ │ │ │ +
442 char stringpool_str586[sizeof("UNICODEBIG")];
│ │ │ │ +
443 char stringpool_str588[sizeof("TIS620.2533-1")];
│ │ │ │ +
444 char stringpool_str589[sizeof("CSISO58GB231280")];
│ │ │ │ +
445 char stringpool_str594[sizeof("ISO_8859-2:1987")];
│ │ │ │ +
446 char stringpool_str596[sizeof("ISO_8859-7:1987")];
│ │ │ │ +
447 char stringpool_str597[sizeof("MACROMAN")];
│ │ │ │ +
448 char stringpool_str600[sizeof("X0212")];
│ │ │ │ +
449 char stringpool_str602[sizeof("CSHPROMAN8")];
│ │ │ │ +
450 char stringpool_str604[sizeof("CSISO87JISX0208")];
│ │ │ │ +
451 char stringpool_str609[sizeof("JIS_X0208-1990")];
│ │ │ │ +
452 char stringpool_str612[sizeof("ISO-2022-KR")];
│ │ │ │ +
453 char stringpool_str613[sizeof("BIG5HKSCS")];
│ │ │ │ +
454 char stringpool_str615[sizeof("TIS620.2533-0")];
│ │ │ │ +
455 char stringpool_str619[sizeof("CSISO2022JP2")];
│ │ │ │ +
456 char stringpool_str622[sizeof("BIG5-HKSCS")];
│ │ │ │ +
457 char stringpool_str625[sizeof("CSMACINTOSH")];
│ │ │ │ +
458 char stringpool_str631[sizeof("CSHALFWIDTHKATAKANA")];
│ │ │ │ +
459 char stringpool_str641[sizeof("CSISO2022JP")];
│ │ │ │ +
460 char stringpool_str643[sizeof("MS-HEBR")];
│ │ │ │ +
461 char stringpool_str657[sizeof("JIS_X0212-1990")];
│ │ │ │ +
462 char stringpool_str675[sizeof("CSPC862LATINHEBREW")];
│ │ │ │ +
463 char stringpool_str677[sizeof("HZ-GB-2312")];
│ │ │ │ +
464 char stringpool_str679[sizeof("JIS_X0208-1983")];
│ │ │ │ +
465 char stringpool_str681[sizeof("NEXTSTEP")];
│ │ │ │ +
466 char stringpool_str683[sizeof("CSGB2312")];
│ │ │ │ +
467 char stringpool_str686[sizeof("JIS_X0212")];
│ │ │ │ +
468 char stringpool_str690[sizeof("CSEUCKR")];
│ │ │ │ +
469 char stringpool_str695[sizeof("BIGFIVE")];
│ │ │ │ +
470 char stringpool_str697[sizeof("MACROMANIA")];
│ │ │ │ +
471 char stringpool_str700[sizeof("CSISO2022KR")];
│ │ │ │ +
472 char stringpool_str702[sizeof("HEBREW")];
│ │ │ │ +
473 char stringpool_str704[sizeof("BIG-FIVE")];
│ │ │ │ +
474 char stringpool_str715[sizeof("CSEUCTW")];
│ │ │ │ +
475 char stringpool_str717[sizeof("ANSI_X3.4-1968")];
│ │ │ │ +
476 char stringpool_str721[sizeof("MS-ARAB")];
│ │ │ │ +
477 char stringpool_str723[sizeof("MACCYRILLIC")];
│ │ │ │ +
478 char stringpool_str729[sizeof("ANSI_X3.4-1986")];
│ │ │ │ +
479 char stringpool_str735[sizeof("CSPC850MULTILINGUAL")];
│ │ │ │ +
480 char stringpool_str737[sizeof("IBM-CP1133")];
│ │ │ │ +
481 char stringpool_str740[sizeof("UTF-32BE")];
│ │ │ │ +
482 char stringpool_str749[sizeof("MS-TURK")];
│ │ │ │ +
483 char stringpool_str764[sizeof("JIS_X0212.1990-0")];
│ │ │ │ +
484 char stringpool_str793[sizeof("MACCENTRALEUROPE")];
│ │ │ │ +
485 char stringpool_str815[sizeof("MACTURKISH")];
│ │ │ │ +
486 char stringpool_str822[sizeof("MS-GREEK")];
│ │ │ │ +
487 char stringpool_str827[sizeof("MACARABIC")];
│ │ │ │ +
488 char stringpool_str868[sizeof("WINBALTRIM")];
│ │ │ │ +
489 char stringpool_str878[sizeof("MACUKRAINE")];
│ │ │ │ +
490 char stringpool_str897[sizeof("TCVN5712-1:1993")];
│ │ │ │ +
491 char stringpool_str911[sizeof("MACGREEK")];
│ │ │ │ +
492 char stringpool_str1057[sizeof("CSEUCPKDFMTJAPANESE")];
│ │ │ │ +
493 char stringpool_str1069[sizeof("MACHEBREW")];
│ │ │ │ +
494 };
│ │ │ │ +
│ │ │ │ +
495static const struct stringpool_t stringpool_contents =
│ │ │ │ +
496 {
│ │ │ │ +
497 "SJIS",
│ │ │ │ +
498 "koi8",
│ │ │ │ +
499 "sjis",
│ │ │ │ +
500 "L1",
│ │ │ │ +
501 "L8",
│ │ │ │ +
502 "L5",
│ │ │ │ +
503 "utf8",
│ │ │ │ +
504 "iso81",
│ │ │ │ +
505 "big5",
│ │ │ │ +
506 "iso88",
│ │ │ │ +
507 "iso15",
│ │ │ │ +
508 "iso85",
│ │ │ │ +
509 "iso89",
│ │ │ │ +
510 "thai8",
│ │ │ │ +
511 "L6",
│ │ │ │ +
512 "roma8",
│ │ │ │ +
513 "866",
│ │ │ │ +
514 "iso815",
│ │ │ │ +
515 "greek8",
│ │ │ │ +
516 "iso_1",
│ │ │ │ +
517 "roman8",
│ │ │ │ +
518 "R8",
│ │ │ │ +
519 "646",
│ │ │ │ +
520 "L4",
│ │ │ │ +
521 "iso86",
│ │ │ │ +
522 "iso88591",
│ │ │ │ +
523 "iso88598",
│ │ │ │ +
524 "LATIN1",
│ │ │ │ +
525 "iso88595",
│ │ │ │ +
526 "LATIN8",
│ │ │ │ +
527 "iso88599",
│ │ │ │ +
528 "LATIN5",
│ │ │ │ +
529 "850",
│ │ │ │ +
530 "ISO8859-1",
│ │ │ │ +
531 "ISO8859-8",
│ │ │ │ +
532 "iso885915",
│ │ │ │ +
533 "ISO8859-5",
│ │ │ │ +
534 "HZ",
│ │ │ │ +
535 "ISO8859-9",
│ │ │ │ +
536 "ISO-8859-1",
│ │ │ │ +
537 "ISO-8859-8",
│ │ │ │ +
538 "ISO8859-15",
│ │ │ │ +
539 "ISO-8859-5",
│ │ │ │ +
540 "iso10",
│ │ │ │ +
541 "ISO-8859-9",
│ │ │ │ +
542 "iso88596",
│ │ │ │ +
543 "iso14",
│ │ │ │ +
544 "iso84",
│ │ │ │ +
545 "LATIN6",
│ │ │ │ +
546 "ISO-8859-15",
│ │ │ │ +
547 "ISO_8859-1",
│ │ │ │ +
548 "ISO8859-6",
│ │ │ │ +
549 "ISO_8859-8",
│ │ │ │ +
550 "CN",
│ │ │ │ +
551 "ISO_8859-5",
│ │ │ │ +
552 "ISO_8859-9",
│ │ │ │ +
553 "L2",
│ │ │ │ +
554 "L7",
│ │ │ │ +
555 "ISO-8859-6",
│ │ │ │ +
556 "iso646",
│ │ │ │ +
557 "ISO_8859-15",
│ │ │ │ +
558 "C99",
│ │ │ │ +
559 "ISO_8859-15:1998",
│ │ │ │ +
560 "ISO-IR-58",
│ │ │ │ +
561 "ISO-8859-16",
│ │ │ │ +
562 "JP",
│ │ │ │ +
563 "US",
│ │ │ │ +
564 "iso88594",
│ │ │ │ +
565 "ISO_8859-6",
│ │ │ │ +
566 "LATIN4",
│ │ │ │ +
567 "L3",
│ │ │ │ +
568 "ISO-IR-159",
│ │ │ │ +
569 "ISO-IR-199",
│ │ │ │ +
570 "ISO-IR-6",
│ │ │ │ +
571 "CP819",
│ │ │ │ +
572 "ISO8859-4",
│ │ │ │ +
573 "ISO_8859-16",
│ │ │ │ +
574 "ISO8859-10",
│ │ │ │ +
575 "ISO-IR-165",
│ │ │ │ +
576 "SHIFT-JIS",
│ │ │ │ +
577 "ISO-8859-4",
│ │ │ │ +
578 "ISO_8859-14:1998",
│ │ │ │ +
579 "ISO-8859-10",
│ │ │ │ +
580 "ISO-IR-101",
│ │ │ │ +
581 "ISO-8859-14",
│ │ │ │ +
582 "ISO-IR-148",
│ │ │ │ +
583 "ISO_8859-16:2000",
│ │ │ │ +
584 "ISO-IR-109",
│ │ │ │ +
585 "ISO-IR-149",
│ │ │ │ +
586 "SHIFT_JIS",
│ │ │ │ +
587 "ISO_8859-4",
│ │ │ │ +
588 "hp15CN",
│ │ │ │ +
589 "ISO-IR-166",
│ │ │ │ +
590 "ISO_8859-10",
│ │ │ │ +
591 "CP949",
│ │ │ │ +
592 "CP866",
│ │ │ │ +
593 "ISO_8859-14",
│ │ │ │ +
594 "ASCII",
│ │ │ │ +
595 "ISO-IR-14",
│ │ │ │ +
596 "862",
│ │ │ │ +
597 "ISO-IR-110",
│ │ │ │ +
598 "GB_1988-80",
│ │ │ │ +
599 "CP850",
│ │ │ │ +
600 "CP950",
│ │ │ │ +
601 "tis620",
│ │ │ │ +
602 "iso82",
│ │ │ │ +
603 "TIS620",
│ │ │ │ +
604 "iso87",
│ │ │ │ +
605 "JIS0208",
│ │ │ │ +
606 "UTF8",
│ │ │ │ +
607 "TIS-620",
│ │ │ │ +
608 "ISO-IR-100",
│ │ │ │ +
609 "ISO-IR-179",
│ │ │ │ +
610 "UTF-8",
│ │ │ │ +
611 "ISO-IR-144",
│ │ │ │ +
612 "CP65001",
│ │ │ │ +
613 "CP1251",
│ │ │ │ +
614 "CP1258",
│ │ │ │ +
615 "CP1255",
│ │ │ │ +
616 "ISO_8859-10:1992",
│ │ │ │ +
617 "ISO646-CN",
│ │ │ │ +
618 "iso88592",
│ │ │ │ +
619 "ISO-IR-138",
│ │ │ │ +
620 "LATIN2",
│ │ │ │ +
621 "iso88597",
│ │ │ │ +
622 "ISO-IR-126",
│ │ │ │ +
623 "CSISO159JISX02121990",
│ │ │ │ +
624 "LATIN7",
│ │ │ │ +
625 "IBM819",
│ │ │ │ +
626 "ISO8859-2",
│ │ │ │ +
627 "macturk",
│ │ │ │ +
628 "iso13",
│ │ │ │ +
629 "iso83",
│ │ │ │ +
630 "ISO8859-7",
│ │ │ │ +
631 "KOI8-T",
│ │ │ │ +
632 "ISO646-US",
│ │ │ │ +
633 "TIS620-0",
│ │ │ │ +
634 "BIG5",
│ │ │ │ +
635 "ISO-8859-2",
│ │ │ │ +
636 "CP1256",
│ │ │ │ +
637 "ELOT_928",
│ │ │ │ +
638 "macgreek",
│ │ │ │ +
639 "ISO-8859-7",
│ │ │ │ +
640 "CSISOLATIN1",
│ │ │ │ +
641 "CP1361",
│ │ │ │ +
642 "BIG-5",
│ │ │ │ +
643 "cp949",
│ │ │ │ +
644 "CSISOLATIN5",
│ │ │ │ +
645 "cp866",
│ │ │ │ +
646 "ascii_8",
│ │ │ │ +
647 "macthai",
│ │ │ │ +
648 "CP936",
│ │ │ │ +
649 "ISO_8859-2",
│ │ │ │ +
650 "GB18030",
│ │ │ │ +
651 "ISO_8859-7",
│ │ │ │ +
652 "TCVN",
│ │ │ │ +
653 "IBM866",
│ │ │ │ +
654 "iso88593",
│ │ │ │ +
655 "CP874",
│ │ │ │ +
656 "LATIN3",
│ │ │ │ +
657 "cp850",
│ │ │ │ +
658 "CP1250",
│ │ │ │ +
659 "cp950",
│ │ │ │ +
660 "CSISOLATIN6",
│ │ │ │ +
661 "CP1254",
│ │ │ │ +
662 "ISO-IR-87",
│ │ │ │ +
663 "ISO-IR-57",
│ │ │ │ +
664 "MS-ANSI",
│ │ │ │ +
665 "CSASCII",
│ │ │ │ +
666 "IBM850",
│ │ │ │ +
667 "ISO-8859-3",
│ │ │ │ +
668 "ISO-IR-157",
│ │ │ │ +
669 "ISO-8859-13",
│ │ │ │ +
670 "CP862",
│ │ │ │ +
671 "cp1251",
│ │ │ │ +
672 "ISO_8859-3",
│ │ │ │ +
673 "cp1258",
│ │ │ │ +
674 "EUCCN",
│ │ │ │ +
675 "cp1255",
│ │ │ │ +
676 "ISO-IR-226",
│ │ │ │ +
677 "CSISOLATIN4",
│ │ │ │ +
678 "ISO_8859-13",
│ │ │ │ +
679 "US-ASCII",
│ │ │ │ +
680 "CSSHIFTJIS",
│ │ │ │ +
681 "EUC-CN",
│ │ │ │ +
682 "CSISO14JISC6220RO",
│ │ │ │ +
683 "UHC",
│ │ │ │ +
684 "ROMAN8",
│ │ │ │ +
685 "KOI8-R",
│ │ │ │ +
686 "cp1256",
│ │ │ │ +
687 "GEORGIAN-PS",
│ │ │ │ +
688 "ISO646-JP",
│ │ │ │ +
689 "cp936",
│ │ │ │ +
690 "CSBIG5",
│ │ │ │ +
691 "cp874",
│ │ │ │ +
692 "JAVA",
│ │ │ │ +
693 "cp1250",
│ │ │ │ +
694 "CN-BIG5",
│ │ │ │ +
695 "cp1254",
│ │ │ │ +
696 "UTF7",
│ │ │ │ +
697 "ISO-IR-127",
│ │ │ │ +
698 "VISCII",
│ │ │ │ +
699 "ECMA-118",
│ │ │ │ +
700 "UTF-7",
│ │ │ │ +
701 "UNICODE-1-1",
│ │ │ │ +
702 "CP1252",
│ │ │ │ +
703 "mac",
│ │ │ │ +
704 "UCS-4LE",
│ │ │ │ +
705 "CP1257",
│ │ │ │ +
706 "cp862",
│ │ │ │ +
707 "CHINESE",
│ │ │ │ +
708 "MAC",
│ │ │ │ +
709 "GEORGIAN-ACADEMY",
│ │ │ │ +
710 "CP932",
│ │ │ │ +
711 "ARMSCII-8",
│ │ │ │ +
712 "CSISOLATINARABIC",
│ │ │ │ +
713 "IBM862",
│ │ │ │ +
714 "ASMO-708",
│ │ │ │ +
715 "KSC_5601",
│ │ │ │ +
716 "KOREAN",
│ │ │ │ +
717 "CP367",
│ │ │ │ +
718 "GB2312",
│ │ │ │ +
719 "CSISOLATIN2",
│ │ │ │ +
720 "JIS_C6220-1969-RO",
│ │ │ │ +
721 "HP-ROMAN8",
│ │ │ │ +
722 "GBK",
│ │ │ │ +
723 "GREEK8",
│ │ │ │ +
724 "MULELAO-1",
│ │ │ │ +
725 "CP1253",
│ │ │ │ +
726 "CP437",
│ │ │ │ +
727 "CSKOI8R",
│ │ │ │ +
728 "EUCJP",
│ │ │ │ +
729 "UCS-2LE",
│ │ │ │ +
730 "CYRILLIC",
│ │ │ │ +
731 "ECMA-114",
│ │ │ │ +
732 "eucJP",
│ │ │ │ +
733 "UTF-16LE",
│ │ │ │ +
734 "MS-CYRL",
│ │ │ │ +
735 "ISO-IR-203",
│ │ │ │ +
736 "EUC-JP",
│ │ │ │ +
737 "mac_cyr",
│ │ │ │ +
738 "GB_2312-80",
│ │ │ │ +
739 "CP1133",
│ │ │ │ +
740 "CN-GB-ISOIR165",
│ │ │ │ +
741 "CSISOLATINCYRILLIC",
│ │ │ │ +
742 "MACTHAI",
│ │ │ │ +
743 "ISO-2022-CN",
│ │ │ │ +
744 "KS_C_5601-1989",
│ │ │ │ +
745 "CSISOLATIN3",
│ │ │ │ +
746 "ISO_8859-8:1988",
│ │ │ │ +
747 "ISO_8859-5:1988",
│ │ │ │ +
748 "ISO-2022-CN-EXT",
│ │ │ │ +
749 "ISO_8859-9:1989",
│ │ │ │ +
750 "MS-EE",
│ │ │ │ +
751 "KOI8-U",
│ │ │ │ +
752 "cp1252",
│ │ │ │ +
753 "UNICODE-1-1-UTF-7",
│ │ │ │ +
754 "ISO-CELTIC",
│ │ │ │ +
755 "cp1257",
│ │ │ │ +
756 "CSISOLATINGREEK",
│ │ │ │ +
757 "ISO-2022-JP-1",
│ │ │ │ +
758 "CSUNICODE11",
│ │ │ │ +
759 "WINDOWS-1251",
│ │ │ │ +
760 "WINDOWS-1258",
│ │ │ │ +
761 "WINDOWS-1255",
│ │ │ │ +
762 "CSISOLATINHEBREW",
│ │ │ │ +
763 "cp932",
│ │ │ │ +
764 "TCVN5712-1",
│ │ │ │ +
765 "CSVISCII",
│ │ │ │ +
766 "CSISO57GB1988",
│ │ │ │ +
767 "ISO_8859-4:1988",
│ │ │ │ +
768 "WINDOWS-1256",
│ │ │ │ +
769 "UNICODELITTLE",
│ │ │ │ +
770 "TIS620.2529-1",
│ │ │ │ +
771 "EUCKR",
│ │ │ │ +
772 "X0201",
│ │ │ │ +
773 "MACINTOSH",
│ │ │ │ +
774 "X0208",
│ │ │ │ +
775 "eucKR",
│ │ │ │ +
776 "EUC-KR",
│ │ │ │ +
777 "JIS_C6226-1983",
│ │ │ │ +
778 "WINDOWS-1250",
│ │ │ │ +
779 "WINDOWS-1254",
│ │ │ │ +
780 "IBM367",
│ │ │ │ +
781 "MS_KANJI",
│ │ │ │ +
782 "cp1253",
│ │ │ │ +
783 "ARABIC",
│ │ │ │ +
784 "cp437",
│ │ │ │ +
785 "EUCTW",
│ │ │ │ +
786 "KOI8-RU",
│ │ │ │ +
787 "eucTW",
│ │ │ │ +
788 "IBM437",
│ │ │ │ +
789 "VISCII1.1-1",
│ │ │ │ +
790 "EUC-TW",
│ │ │ │ +
791 "CN-GB",
│ │ │ │ +
792 "KS_C_5601-1987",
│ │ │ │ +
793 "WINDOWS-874",
│ │ │ │ +
794 "JOHAB",
│ │ │ │ +
795 "ISO_8859-1:1987",
│ │ │ │ +
796 "CSISO2022CN",
│ │ │ │ +
797 "UCS-4BE",
│ │ │ │ +
798 "ISO_8859-6:1987",
│ │ │ │ +
799 "ISO-2022-JP-2",
│ │ │ │ +
800 "TCVN-5712",
│ │ │ │ +
801 "WINDOWS-1252",
│ │ │ │ +
802 "WINDOWS-1257",
│ │ │ │ +
803 "ISO_646.IRV:1991",
│ │ │ │ +
804 "ISO_8859-3:1988",
│ │ │ │ +
805 "CSUNICODE11UTF7",
│ │ │ │ +
806 "CSIBM866",
│ │ │ │ +
807 "ISO-2022-JP",
│ │ │ │ +
808 "WINDOWS-1253",
│ │ │ │ +
809 "JIS_X0201",
│ │ │ │ +
810 "JIS_X0208",
│ │ │ │ +
811 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
│ │ │ │ +
812 "CSKSC56011987",
│ │ │ │ +
813 "UCS-2BE",
│ │ │ │ +
814 "GREEK",
│ │ │ │ +
815 "MACICELAND",
│ │ │ │ +
816 "JISX0201-1976",
│ │ │ │ +
817 "UTF-16BE",
│ │ │ │ +
818 "UTF-32LE",
│ │ │ │ +
819 "MACCROATIAN",
│ │ │ │ +
820 "UNICODEBIG",
│ │ │ │ +
821 "TIS620.2533-1",
│ │ │ │ +
822 "CSISO58GB231280",
│ │ │ │ +
823 "ISO_8859-2:1987",
│ │ │ │ +
824 "ISO_8859-7:1987",
│ │ │ │ +
825 "MACROMAN",
│ │ │ │ +
826 "X0212",
│ │ │ │ +
827 "CSHPROMAN8",
│ │ │ │ +
828 "CSISO87JISX0208",
│ │ │ │ +
829 "JIS_X0208-1990",
│ │ │ │ +
830 "ISO-2022-KR",
│ │ │ │ +
831 "BIG5HKSCS",
│ │ │ │ +
832 "TIS620.2533-0",
│ │ │ │ +
833 "CSISO2022JP2",
│ │ │ │ +
834 "BIG5-HKSCS",
│ │ │ │ +
835 "CSMACINTOSH",
│ │ │ │ +
836 "CSHALFWIDTHKATAKANA",
│ │ │ │ +
837 "CSISO2022JP",
│ │ │ │ +
838 "MS-HEBR",
│ │ │ │ +
839 "JIS_X0212-1990",
│ │ │ │ +
840 "CSPC862LATINHEBREW",
│ │ │ │ +
841 "HZ-GB-2312",
│ │ │ │ +
842 "JIS_X0208-1983",
│ │ │ │ +
843 "NEXTSTEP",
│ │ │ │ +
844 "CSGB2312",
│ │ │ │ +
845 "JIS_X0212",
│ │ │ │ +
846 "CSEUCKR",
│ │ │ │ +
847 "BIGFIVE",
│ │ │ │ +
848 "MACROMANIA",
│ │ │ │ +
849 "CSISO2022KR",
│ │ │ │ +
850 "HEBREW",
│ │ │ │ +
851 "BIG-FIVE",
│ │ │ │ +
852 "CSEUCTW",
│ │ │ │ +
853 "ANSI_X3.4-1968",
│ │ │ │ +
854 "MS-ARAB",
│ │ │ │ +
855 "MACCYRILLIC",
│ │ │ │ +
856 "ANSI_X3.4-1986",
│ │ │ │ +
857 "CSPC850MULTILINGUAL",
│ │ │ │ +
858 "IBM-CP1133",
│ │ │ │ +
859 "UTF-32BE",
│ │ │ │ +
860 "MS-TURK",
│ │ │ │ +
861 "JIS_X0212.1990-0",
│ │ │ │ +
862 "MACCENTRALEUROPE",
│ │ │ │ +
863 "MACTURKISH",
│ │ │ │ +
864 "MS-GREEK",
│ │ │ │ +
865 "MACARABIC",
│ │ │ │ +
866 "WINBALTRIM",
│ │ │ │ +
867 "MACUKRAINE",
│ │ │ │ +
868 "TCVN5712-1:1993",
│ │ │ │ +
869 "MACGREEK",
│ │ │ │ +
870 "CSEUCPKDFMTJAPANESE",
│ │ │ │ +
871 "MACHEBREW"
│ │ │ │ +
872 };
│ │ │ │ +
873#define stringpool ((const char *) &stringpool_contents)
│ │ │ │ +
874const struct charset_alias *
│ │ │ │ +
875charset_lookup (register const char *str, register size_t len)
│ │ │ │ +
876{
│ │ │ │ +
877 enum
│ │ │ │ +
878 {
│ │ │ │ +
879 TOTAL_KEYWORDS = 375,
│ │ │ │ +
880 MIN_WORD_LENGTH = 2,
│ │ │ │ +
881 MAX_WORD_LENGTH = 45,
│ │ │ │ +
882 MIN_HASH_VALUE = 32,
│ │ │ │ +
883 MAX_HASH_VALUE = 1069
│ │ │ │ +
884 };
│ │ │ │ +
885
│ │ │ │ +
886 static const struct charset_alias wordlist[] =
│ │ │ │ +
887 {
│ │ │ │ +
888 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
889 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
890 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
891 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
893 {-1,-1}, {-1,-1},
│ │ │ │ +
894#line 273 "charset_lookup.gperf"
│ │ │ │ +
895 {(int)offsetof(struct stringpool_t, stringpool_str32), 90},
│ │ │ │ +
896 {-1,-1},
│ │ │ │ +
897#line 376 "charset_lookup.gperf"
│ │ │ │ +
898 {(int)offsetof(struct stringpool_t, stringpool_str34), 71},
│ │ │ │ +
899#line 360 "charset_lookup.gperf"
│ │ │ │ +
900 {(int)offsetof(struct stringpool_t, stringpool_str35), 90},
│ │ │ │ +
901#line 229 "charset_lookup.gperf"
│ │ │ │ +
902 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},
│ │ │ │ +
903#line 236 "charset_lookup.gperf"
│ │ │ │ +
904 {(int)offsetof(struct stringpool_t, stringpool_str37), 53},
│ │ │ │ +
905#line 233 "charset_lookup.gperf"
│ │ │ │ +
906 {(int)offsetof(struct stringpool_t, stringpool_str38), 63},
│ │ │ │ +
907#line 363 "charset_lookup.gperf"
│ │ │ │ +
908 {(int)offsetof(struct stringpool_t, stringpool_str39), 1},
│ │ │ │ +
909 {-1,-1},
│ │ │ │ +
910#line 338 "charset_lookup.gperf"
│ │ │ │ +
911 {(int)offsetof(struct stringpool_t, stringpool_str41), 0},
│ │ │ │ +
912#line 319 "charset_lookup.gperf"
│ │ │ │ +
913 {(int)offsetof(struct stringpool_t, stringpool_str42), 11},
│ │ │ │ +
914#line 346 "charset_lookup.gperf"
│ │ │ │ +
915 {(int)offsetof(struct stringpool_t, stringpool_str43), 62},
│ │ │ │ +
916#line 373 "charset_lookup.gperf"
│ │ │ │ +
917 {(int)offsetof(struct stringpool_t, stringpool_str44), 54},
│ │ │ │ +
918#line 343 "charset_lookup.gperf"
│ │ │ │ +
919 {(int)offsetof(struct stringpool_t, stringpool_str45), 59},
│ │ │ │ +
920 {-1,-1},
│ │ │ │ +
921#line 357 "charset_lookup.gperf"
│ │ │ │ +
922 {(int)offsetof(struct stringpool_t, stringpool_str47), 63},
│ │ │ │ +
923#line 361 "charset_lookup.gperf"
│ │ │ │ +
924 {(int)offsetof(struct stringpool_t, stringpool_str48), 67},
│ │ │ │ +
925#line 234 "charset_lookup.gperf"
│ │ │ │ +
926 {(int)offsetof(struct stringpool_t, stringpool_str49), 51},
│ │ │ │ +
927#line 358 "charset_lookup.gperf"
│ │ │ │ +
928 {(int)offsetof(struct stringpool_t, stringpool_str50), 89},
│ │ │ │ +
929#line 10 "charset_lookup.gperf"
│ │ │ │ +
930 {(int)offsetof(struct stringpool_t, stringpool_str51), 32},
│ │ │ │ +
931 {-1,-1},
│ │ │ │ +
932#line 339 "charset_lookup.gperf"
│ │ │ │ +
933 {(int)offsetof(struct stringpool_t, stringpool_str53), 54},
│ │ │ │ +
934 {-1,-1}, {-1,-1},
│ │ │ │ +
935#line 369 "charset_lookup.gperf"
│ │ │ │ +
936 {(int)offsetof(struct stringpool_t, stringpool_str56), 61},
│ │ │ │ +
937#line 375 "charset_lookup.gperf"
│ │ │ │ +
938 {(int)offsetof(struct stringpool_t, stringpool_str57), 0},
│ │ │ │ +
939#line 359 "charset_lookup.gperf"
│ │ │ │ +
940 {(int)offsetof(struct stringpool_t, stringpool_str58), 89},
│ │ │ │ +
941 {-1,-1}, {-1,-1},
│ │ │ │ +
942#line 269 "charset_lookup.gperf"
│ │ │ │ +
943 {(int)offsetof(struct stringpool_t, stringpool_str61), 89},
│ │ │ │ +
944 {-1,-1},
│ │ │ │ +
945#line 7 "charset_lookup.gperf"
│ │ │ │ +
946 {(int)offsetof(struct stringpool_t, stringpool_str63), 92},
│ │ │ │ +
947 {-1,-1},
│ │ │ │ +
948#line 232 "charset_lookup.gperf"
│ │ │ │ +
949 {(int)offsetof(struct stringpool_t, stringpool_str65), 58},
│ │ │ │ +
950 {-1,-1},
│ │ │ │ +
951#line 344 "charset_lookup.gperf"
│ │ │ │ +
952 {(int)offsetof(struct stringpool_t, stringpool_str67), 60},
│ │ │ │ +
953 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
954#line 347 "charset_lookup.gperf"
│ │ │ │ +
955 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},
│ │ │ │ +
956 {-1,-1},
│ │ │ │ +
957#line 355 "charset_lookup.gperf"
│ │ │ │ +
958 {(int)offsetof(struct stringpool_t, stringpool_str73), 62},
│ │ │ │ +
959#line 237 "charset_lookup.gperf"
│ │ │ │ +
960 {(int)offsetof(struct stringpool_t, stringpool_str74), 0},
│ │ │ │ +
961#line 352 "charset_lookup.gperf"
│ │ │ │ +
962 {(int)offsetof(struct stringpool_t, stringpool_str75), 59},
│ │ │ │ +
963#line 244 "charset_lookup.gperf"
│ │ │ │ +
964 {(int)offsetof(struct stringpool_t, stringpool_str76), 53},
│ │ │ │ +
965#line 356 "charset_lookup.gperf"
│ │ │ │ +
966 {(int)offsetof(struct stringpool_t, stringpool_str77), 63},
│ │ │ │ +
967#line 241 "charset_lookup.gperf"
│ │ │ │ +
968 {(int)offsetof(struct stringpool_t, stringpool_str78), 63},
│ │ │ │ +
969#line 8 "charset_lookup.gperf"
│ │ │ │ +
970 {(int)offsetof(struct stringpool_t, stringpool_str79), 30},
│ │ │ │ +
971#line 169 "charset_lookup.gperf"
│ │ │ │ +
972 {(int)offsetof(struct stringpool_t, stringpool_str80), 0},
│ │ │ │ +
973 {-1,-1},
│ │ │ │ +
974#line 177 "charset_lookup.gperf"
│ │ │ │ +
975 {(int)offsetof(struct stringpool_t, stringpool_str82), 62},
│ │ │ │ +
976#line 348 "charset_lookup.gperf"
│ │ │ │ +
977 {(int)offsetof(struct stringpool_t, stringpool_str83), 54},
│ │ │ │ +
978#line 174 "charset_lookup.gperf"
│ │ │ │ +
979 {(int)offsetof(struct stringpool_t, stringpool_str84), 59},
│ │ │ │ +
980#line 113 "charset_lookup.gperf"
│ │ │ │ +
981 {(int)offsetof(struct stringpool_t, stringpool_str85), 44},
│ │ │ │ +
982#line 178 "charset_lookup.gperf"
│ │ │ │ +
983 {(int)offsetof(struct stringpool_t, stringpool_str86), 63},
│ │ │ │ +
984 {-1,-1}, {-1,-1},
│ │ │ │ +
985#line 128 "charset_lookup.gperf"
│ │ │ │ +
986 {(int)offsetof(struct stringpool_t, stringpool_str89), 0},
│ │ │ │ +
987 {-1,-1},
│ │ │ │ +
988#line 140 "charset_lookup.gperf"
│ │ │ │ +
989 {(int)offsetof(struct stringpool_t, stringpool_str91), 62},
│ │ │ │ +
990#line 171 "charset_lookup.gperf"
│ │ │ │ +
991 {(int)offsetof(struct stringpool_t, stringpool_str92), 54},
│ │ │ │ +
992#line 137 "charset_lookup.gperf"
│ │ │ │ +
993 {(int)offsetof(struct stringpool_t, stringpool_str93), 59},
│ │ │ │ +
994#line 370 "charset_lookup.gperf"
│ │ │ │ +
995 {(int)offsetof(struct stringpool_t, stringpool_str94), 51},
│ │ │ │ +
996#line 141 "charset_lookup.gperf"
│ │ │ │ +
997 {(int)offsetof(struct stringpool_t, stringpool_str95), 63},
│ │ │ │ +
998 {-1,-1},
│ │ │ │ +
999#line 353 "charset_lookup.gperf"
│ │ │ │ +
1000 {(int)offsetof(struct stringpool_t, stringpool_str97), 60},
│ │ │ │ +
1001#line 372 "charset_lookup.gperf"
│ │ │ │ +
1002 {(int)offsetof(struct stringpool_t, stringpool_str98), 53},
│ │ │ │ +
1003#line 342 "charset_lookup.gperf"
│ │ │ │ +
1004 {(int)offsetof(struct stringpool_t, stringpool_str99), 58},
│ │ │ │ +
1005#line 242 "charset_lookup.gperf"
│ │ │ │ +
1006 {(int)offsetof(struct stringpool_t, stringpool_str100), 51},
│ │ │ │ +
1007#line 132 "charset_lookup.gperf"
│ │ │ │ +
1008 {(int)offsetof(struct stringpool_t, stringpool_str101), 54},
│ │ │ │ +
1009 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1010#line 180 "charset_lookup.gperf"
│ │ │ │ +
1011 {(int)offsetof(struct stringpool_t, stringpool_str105), 0},
│ │ │ │ +
1012#line 175 "charset_lookup.gperf"
│ │ │ │ +
1013 {(int)offsetof(struct stringpool_t, stringpool_str106), 60},
│ │ │ │ +
1014#line 203 "charset_lookup.gperf"
│ │ │ │ +
1015 {(int)offsetof(struct stringpool_t, stringpool_str107), 62},
│ │ │ │ +
1016#line 25 "charset_lookup.gperf"
│ │ │ │ +
1017 {(int)offsetof(struct stringpool_t, stringpool_str108), 15},
│ │ │ │ +
1018#line 197 "charset_lookup.gperf"
│ │ │ │ +
1019 {(int)offsetof(struct stringpool_t, stringpool_str109), 59},
│ │ │ │ +
1020 {-1,-1},
│ │ │ │ +
1021#line 205 "charset_lookup.gperf"
│ │ │ │ +
1022 {(int)offsetof(struct stringpool_t, stringpool_str111), 63},
│ │ │ │ +
1023#line 230 "charset_lookup.gperf"
│ │ │ │ +
1024 {(int)offsetof(struct stringpool_t, stringpool_str112), 56},
│ │ │ │ +
1025 {-1,-1},
│ │ │ │ +
1026#line 235 "charset_lookup.gperf"
│ │ │ │ +
1027 {(int)offsetof(struct stringpool_t, stringpool_str114), 52},
│ │ │ │ +
1028#line 138 "charset_lookup.gperf"
│ │ │ │ +
1029 {(int)offsetof(struct stringpool_t, stringpool_str115), 60},
│ │ │ │ +
1030#line 374 "charset_lookup.gperf"
│ │ │ │ +
1031 {(int)offsetof(struct stringpool_t, stringpool_str116), 92},
│ │ │ │ +
1032#line 186 "charset_lookup.gperf"
│ │ │ │ +
1033 {(int)offsetof(struct stringpool_t, stringpool_str117), 54},
│ │ │ │ +
1034 {-1,-1}, {-1,-1},
│ │ │ │ +
1035#line 23 "charset_lookup.gperf"
│ │ │ │ +
1036 {(int)offsetof(struct stringpool_t, stringpool_str120), 13},
│ │ │ │ +
1037#line 187 "charset_lookup.gperf"
│ │ │ │ +
1038 {(int)offsetof(struct stringpool_t, stringpool_str121), 54},
│ │ │ │ +
1039#line 163 "charset_lookup.gperf"
│ │ │ │ +
1040 {(int)offsetof(struct stringpool_t, stringpool_str122), 14},
│ │ │ │ +
1041#line 133 "charset_lookup.gperf"
│ │ │ │ +
1042 {(int)offsetof(struct stringpool_t, stringpool_str123), 55},
│ │ │ │ +
1043 {-1,-1},
│ │ │ │ +
1044#line 220 "charset_lookup.gperf"
│ │ │ │ +
1045 {(int)offsetof(struct stringpool_t, stringpool_str125), 64},
│ │ │ │ +
1046#line 293 "charset_lookup.gperf"
│ │ │ │ +
1047 {(int)offsetof(struct stringpool_t, stringpool_str126), 92},
│ │ │ │ +
1048 {-1,-1}, {-1,-1},
│ │ │ │ +
1049#line 351 "charset_lookup.gperf"
│ │ │ │ +
1050 {(int)offsetof(struct stringpool_t, stringpool_str129), 58},
│ │ │ │ +
1051 {-1,-1},
│ │ │ │ +
1052#line 199 "charset_lookup.gperf"
│ │ │ │ +
1053 {(int)offsetof(struct stringpool_t, stringpool_str131), 60},
│ │ │ │ +
1054#line 240 "charset_lookup.gperf"
│ │ │ │ +
1055 {(int)offsetof(struct stringpool_t, stringpool_str132), 58},
│ │ │ │ +
1056#line 231 "charset_lookup.gperf"
│ │ │ │ +
1057 {(int)offsetof(struct stringpool_t, stringpool_str133), 57},
│ │ │ │ +
1058#line 155 "charset_lookup.gperf"
│ │ │ │ +
1059 {(int)offsetof(struct stringpool_t, stringpool_str134), 66},
│ │ │ │ +
1060#line 159 "charset_lookup.gperf"
│ │ │ │ +
1061 {(int)offsetof(struct stringpool_t, stringpool_str135), 53},
│ │ │ │ +
1062#line 164 "charset_lookup.gperf"
│ │ │ │ +
1063 {(int)offsetof(struct stringpool_t, stringpool_str136), 92},
│ │ │ │ +
1064#line 43 "charset_lookup.gperf"
│ │ │ │ +
1065 {(int)offsetof(struct stringpool_t, stringpool_str137), 0},
│ │ │ │ +
1066#line 173 "charset_lookup.gperf"
│ │ │ │ +
1067 {(int)offsetof(struct stringpool_t, stringpool_str138), 58},
│ │ │ │ +
1068#line 188 "charset_lookup.gperf"
│ │ │ │ +
1069 {(int)offsetof(struct stringpool_t, stringpool_str139), 55},
│ │ │ │ +
1070 {-1,-1}, {-1,-1},
│ │ │ │ +
1071#line 170 "charset_lookup.gperf"
│ │ │ │ +
1072 {(int)offsetof(struct stringpool_t, stringpool_str142), 51},
│ │ │ │ +
1073#line 156 "charset_lookup.gperf"
│ │ │ │ +
1074 {(int)offsetof(struct stringpool_t, stringpool_str143), 17},
│ │ │ │ +
1075 {-1,-1}, {-1,-1},
│ │ │ │ +
1076#line 271 "charset_lookup.gperf"
│ │ │ │ +
1077 {(int)offsetof(struct stringpool_t, stringpool_str146), 90},
│ │ │ │ +
1078#line 136 "charset_lookup.gperf"
│ │ │ │ +
1079 {(int)offsetof(struct stringpool_t, stringpool_str147), 58},
│ │ │ │ +
1080#line 185 "charset_lookup.gperf"
│ │ │ │ +
1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 53},
│ │ │ │ +
1082 {-1,-1}, {-1,-1},
│ │ │ │ +
1083#line 129 "charset_lookup.gperf"
│ │ │ │ +
1084 {(int)offsetof(struct stringpool_t, stringpool_str151), 51},
│ │ │ │ +
1085 {-1,-1},
│ │ │ │ +
1086#line 144 "charset_lookup.gperf"
│ │ │ │ +
1087 {(int)offsetof(struct stringpool_t, stringpool_str153), 56},
│ │ │ │ +
1088 {-1,-1},
│ │ │ │ +
1089#line 131 "charset_lookup.gperf"
│ │ │ │ +
1090 {(int)offsetof(struct stringpool_t, stringpool_str155), 53},
│ │ │ │ +
1091 {-1,-1},
│ │ │ │ +
1092#line 152 "charset_lookup.gperf"
│ │ │ │ +
1093 {(int)offsetof(struct stringpool_t, stringpool_str157), 63},
│ │ │ │ +
1094#line 189 "charset_lookup.gperf"
│ │ │ │ +
1095 {(int)offsetof(struct stringpool_t, stringpool_str158), 55},
│ │ │ │ +
1096#line 145 "charset_lookup.gperf"
│ │ │ │ +
1097 {(int)offsetof(struct stringpool_t, stringpool_str159), 57},
│ │ │ │ +
1098 {-1,-1},
│ │ │ │ +
1099#line 153 "charset_lookup.gperf"
│ │ │ │ +
1100 {(int)offsetof(struct stringpool_t, stringpool_str161), 65},
│ │ │ │ +
1101#line 272 "charset_lookup.gperf"
│ │ │ │ +
1102 {(int)offsetof(struct stringpool_t, stringpool_str162), 90},
│ │ │ │ +
1103#line 195 "charset_lookup.gperf"
│ │ │ │ +
1104 {(int)offsetof(struct stringpool_t, stringpool_str163), 58},
│ │ │ │ +
1105#line 337 "charset_lookup.gperf"
│ │ │ │ +
1106 {(int)offsetof(struct stringpool_t, stringpool_str164), 14},
│ │ │ │ +
1107#line 157 "charset_lookup.gperf"
│ │ │ │ +
1108 {(int)offsetof(struct stringpool_t, stringpool_str165), 67},
│ │ │ │ +
1109 {-1,-1},
│ │ │ │ +
1110#line 181 "charset_lookup.gperf"
│ │ │ │ +
1111 {(int)offsetof(struct stringpool_t, stringpool_str167), 51},
│ │ │ │ +
1112#line 50 "charset_lookup.gperf"
│ │ │ │ +
1113 {(int)offsetof(struct stringpool_t, stringpool_str168), 36},
│ │ │ │ +
1114 {-1,-1},
│ │ │ │ +
1115#line 46 "charset_lookup.gperf"
│ │ │ │ +
1116 {(int)offsetof(struct stringpool_t, stringpool_str170), 32},
│ │ │ │ +
1117#line 184 "charset_lookup.gperf"
│ │ │ │ +
1118 {(int)offsetof(struct stringpool_t, stringpool_str171), 53},
│ │ │ │ +
1119 {-1,-1},
│ │ │ │ +
1120#line 15 "charset_lookup.gperf"
│ │ │ │ +
1121 {(int)offsetof(struct stringpool_t, stringpool_str173), 92},
│ │ │ │ +
1122 {-1,-1}, {-1,-1},
│ │ │ │ +
1123#line 150 "charset_lookup.gperf"
│ │ │ │ +
1124 {(int)offsetof(struct stringpool_t, stringpool_str176), 64},
│ │ │ │ +
1125#line 9 "charset_lookup.gperf"
│ │ │ │ +
1126 {(int)offsetof(struct stringpool_t, stringpool_str177), 31},
│ │ │ │ +
1127 {-1,-1}, {-1,-1},
│ │ │ │ +
1128#line 146 "charset_lookup.gperf"
│ │ │ │ +
1129 {(int)offsetof(struct stringpool_t, stringpool_str180), 58},
│ │ │ │ +
1130 {-1,-1}, {-1,-1},
│ │ │ │ +
1131#line 105 "charset_lookup.gperf"
│ │ │ │ +
1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 15},
│ │ │ │ +
1133 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1134#line 44 "charset_lookup.gperf"
│ │ │ │ +
1135 {(int)offsetof(struct stringpool_t, stringpool_str187), 30},
│ │ │ │ +
1136 {-1,-1},
│ │ │ │ +
1137#line 51 "charset_lookup.gperf"
│ │ │ │ +
1138 {(int)offsetof(struct stringpool_t, stringpool_str189), 37},
│ │ │ │ +
1139 {-1,-1}, {-1,-1},
│ │ │ │ +
1140#line 362 "charset_lookup.gperf"
│ │ │ │ +
1141 {(int)offsetof(struct stringpool_t, stringpool_str192), 67},
│ │ │ │ +
1142#line 340 "charset_lookup.gperf"
│ │ │ │ +
1143 {(int)offsetof(struct stringpool_t, stringpool_str193), 56},
│ │ │ │ +
1144 {-1,-1},
│ │ │ │ +
1145#line 279 "charset_lookup.gperf"
│ │ │ │ +
1146 {(int)offsetof(struct stringpool_t, stringpool_str195), 67},
│ │ │ │ +
1147 {-1,-1},
│ │ │ │ +
1148#line 345 "charset_lookup.gperf"
│ │ │ │ +
1149 {(int)offsetof(struct stringpool_t, stringpool_str197), 61},
│ │ │ │ +
1150#line 208 "charset_lookup.gperf"
│ │ │ │ +
1151 {(int)offsetof(struct stringpool_t, stringpool_str198), 68},
│ │ │ │ +
1152 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1153#line 302 "charset_lookup.gperf"
│ │ │ │ +
1154 {(int)offsetof(struct stringpool_t, stringpool_str203), 1},
│ │ │ │ +
1155#line 278 "charset_lookup.gperf"
│ │ │ │ +
1156 {(int)offsetof(struct stringpool_t, stringpool_str204), 67},
│ │ │ │ +
1157 {-1,-1}, {-1,-1},
│ │ │ │ +
1158#line 143 "charset_lookup.gperf"
│ │ │ │ +
1159 {(int)offsetof(struct stringpool_t, stringpool_str207), 0},
│ │ │ │ +
1160 {-1,-1}, {-1,-1},
│ │ │ │ +
1161#line 158 "charset_lookup.gperf"
│ │ │ │ +
1162 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},
│ │ │ │ +
1163 {-1,-1},
│ │ │ │ +
1164#line 300 "charset_lookup.gperf"
│ │ │ │ +
1165 {(int)offsetof(struct stringpool_t, stringpool_str212), 1},
│ │ │ │ +
1166#line 151 "charset_lookup.gperf"
│ │ │ │ +
1167 {(int)offsetof(struct stringpool_t, stringpool_str213), 59},
│ │ │ │ +
1168 {-1,-1},
│ │ │ │ +
1169#line 42 "charset_lookup.gperf"
│ │ │ │ +
1170 {(int)offsetof(struct stringpool_t, stringpool_str215), 1},
│ │ │ │ +
1171#line 31 "charset_lookup.gperf"
│ │ │ │ +
1172 {(int)offsetof(struct stringpool_t, stringpool_str216), 20},
│ │ │ │ +
1173 {-1,-1},
│ │ │ │ +
1174#line 38 "charset_lookup.gperf"
│ │ │ │ +
1175 {(int)offsetof(struct stringpool_t, stringpool_str218), 27},
│ │ │ │ +
1176 {-1,-1},
│ │ │ │ +
1177#line 35 "charset_lookup.gperf"
│ │ │ │ +
1178 {(int)offsetof(struct stringpool_t, stringpool_str220), 24},
│ │ │ │ +
1179#line 182 "charset_lookup.gperf"
│ │ │ │ +
1180 {(int)offsetof(struct stringpool_t, stringpool_str221), 51},
│ │ │ │ +
1181#line 166 "charset_lookup.gperf"
│ │ │ │ +
1182 {(int)offsetof(struct stringpool_t, stringpool_str222), 15},
│ │ │ │ +
1183#line 349 "charset_lookup.gperf"
│ │ │ │ +
1184 {(int)offsetof(struct stringpool_t, stringpool_str223), 56},
│ │ │ │ +
1185 {-1,-1},
│ │ │ │ +
1186#line 149 "charset_lookup.gperf"
│ │ │ │ +
1187 {(int)offsetof(struct stringpool_t, stringpool_str225), 62},
│ │ │ │ +
1188#line 238 "charset_lookup.gperf"
│ │ │ │ +
1189 {(int)offsetof(struct stringpool_t, stringpool_str226), 56},
│ │ │ │ +
1190#line 354 "charset_lookup.gperf"
│ │ │ │ +
1191 {(int)offsetof(struct stringpool_t, stringpool_str227), 61},
│ │ │ │ +
1192#line 147 "charset_lookup.gperf"
│ │ │ │ +
1193 {(int)offsetof(struct stringpool_t, stringpool_str228), 61},
│ │ │ │ +
1194#line 62 "charset_lookup.gperf"
│ │ │ │ +
1195 {(int)offsetof(struct stringpool_t, stringpool_str229), 66},
│ │ │ │ +
1196#line 243 "charset_lookup.gperf"
│ │ │ │ +
1197 {(int)offsetof(struct stringpool_t, stringpool_str230), 52},
│ │ │ │ +
1198#line 118 "charset_lookup.gperf"
│ │ │ │ +
1199 {(int)offsetof(struct stringpool_t, stringpool_str231), 0},
│ │ │ │ +
1200#line 172 "charset_lookup.gperf"
│ │ │ │ +
1201 {(int)offsetof(struct stringpool_t, stringpool_str232), 56},
│ │ │ │ +
1202#line 381 "charset_lookup.gperf"
│ │ │ │ +
1203 {(int)offsetof(struct stringpool_t, stringpool_str233), 85},
│ │ │ │ +
1204#line 371 "charset_lookup.gperf"
│ │ │ │ +
1205 {(int)offsetof(struct stringpool_t, stringpool_str234), 52},
│ │ │ │ +
1206#line 341 "charset_lookup.gperf"
│ │ │ │ +
1207 {(int)offsetof(struct stringpool_t, stringpool_str235), 57},
│ │ │ │ +
1208#line 176 "charset_lookup.gperf"
│ │ │ │ +
1209 {(int)offsetof(struct stringpool_t, stringpool_str236), 61},
│ │ │ │ +
1210#line 223 "charset_lookup.gperf"
│ │ │ │ +
1211 {(int)offsetof(struct stringpool_t, stringpool_str237), 73},
│ │ │ │ +
1212#line 168 "charset_lookup.gperf"
│ │ │ │ +
1213 {(int)offsetof(struct stringpool_t, stringpool_str238), 92},
│ │ │ │ +
1214#line 280 "charset_lookup.gperf"
│ │ │ │ +
1215 {(int)offsetof(struct stringpool_t, stringpool_str239), 67},
│ │ │ │ +
1216#line 19 "charset_lookup.gperf"
│ │ │ │ +
1217 {(int)offsetof(struct stringpool_t, stringpool_str240), 11},
│ │ │ │ +
1218#line 134 "charset_lookup.gperf"
│ │ │ │ +
1219 {(int)offsetof(struct stringpool_t, stringpool_str241), 56},
│ │ │ │ +
1220#line 36 "charset_lookup.gperf"
│ │ │ │ +
1221 {(int)offsetof(struct stringpool_t, stringpool_str242), 25},
│ │ │ │ +
1222#line 92 "charset_lookup.gperf"
│ │ │ │ +
1223 {(int)offsetof(struct stringpool_t, stringpool_str243), 61},
│ │ │ │ +
1224#line 379 "charset_lookup.gperf"
│ │ │ │ +
1225 {(int)offsetof(struct stringpool_t, stringpool_str244), 80},
│ │ │ │ +
1226#line 139 "charset_lookup.gperf"
│ │ │ │ +
1227 {(int)offsetof(struct stringpool_t, stringpool_str245), 61},
│ │ │ │ +
1228 {-1,-1},
│ │ │ │ +
1229#line 70 "charset_lookup.gperf"
│ │ │ │ +
1230 {(int)offsetof(struct stringpool_t, stringpool_str247), 0},
│ │ │ │ +
1231#line 39 "charset_lookup.gperf"
│ │ │ │ +
1232 {(int)offsetof(struct stringpool_t, stringpool_str248), 28},
│ │ │ │ +
1233#line 17 "charset_lookup.gperf"
│ │ │ │ +
1234 {(int)offsetof(struct stringpool_t, stringpool_str249), 11},
│ │ │ │ +
1235#line 367 "charset_lookup.gperf"
│ │ │ │ +
1236 {(int)offsetof(struct stringpool_t, stringpool_str250), 36},
│ │ │ │ +
1237#line 74 "charset_lookup.gperf"
│ │ │ │ +
1238 {(int)offsetof(struct stringpool_t, stringpool_str251), 63},
│ │ │ │ +
1239#line 332 "charset_lookup.gperf"
│ │ │ │ +
1240 {(int)offsetof(struct stringpool_t, stringpool_str252), 32},
│ │ │ │ +
1241#line 364 "charset_lookup.gperf"
│ │ │ │ +
1242 {(int)offsetof(struct stringpool_t, stringpool_str253), 0},
│ │ │ │ +
1243 {-1,-1},
│ │ │ │ +
1244#line 380 "charset_lookup.gperf"
│ │ │ │ +
1245 {(int)offsetof(struct stringpool_t, stringpool_str255), 84},
│ │ │ │ +
1246#line 49 "charset_lookup.gperf"
│ │ │ │ +
1247 {(int)offsetof(struct stringpool_t, stringpool_str256), 35},
│ │ │ │ +
1248#line 191 "charset_lookup.gperf"
│ │ │ │ +
1249 {(int)offsetof(struct stringpool_t, stringpool_str257), 56},
│ │ │ │ +
1250 {-1,-1}, {-1,-1},
│ │ │ │ +
1251#line 102 "charset_lookup.gperf"
│ │ │ │ +
1252 {(int)offsetof(struct stringpool_t, stringpool_str260), 41},
│ │ │ │ +
1253#line 201 "charset_lookup.gperf"
│ │ │ │ +
1254 {(int)offsetof(struct stringpool_t, stringpool_str261), 61},
│ │ │ │ +
1255#line 274 "charset_lookup.gperf"
│ │ │ │ +
1256 {(int)offsetof(struct stringpool_t, stringpool_str262), 91},
│ │ │ │ +
1257 {-1,-1},
│ │ │ │ +
1258#line 121 "charset_lookup.gperf"
│ │ │ │ +
1259 {(int)offsetof(struct stringpool_t, stringpool_str264), 32},
│ │ │ │ +
1260#line 350 "charset_lookup.gperf"
│ │ │ │ +
1261 {(int)offsetof(struct stringpool_t, stringpool_str265), 57},
│ │ │ │ +
1262 {-1,-1},
│ │ │ │ +
1263#line 47 "charset_lookup.gperf"
│ │ │ │ +
1264 {(int)offsetof(struct stringpool_t, stringpool_str267), 33},
│ │ │ │ +
1265#line 239 "charset_lookup.gperf"
│ │ │ │ +
1266 {(int)offsetof(struct stringpool_t, stringpool_str268), 57},
│ │ │ │ +
1267#line 330 "charset_lookup.gperf"
│ │ │ │ +
1268 {(int)offsetof(struct stringpool_t, stringpool_str269), 30},
│ │ │ │ +
1269#line 30 "charset_lookup.gperf"
│ │ │ │ +
1270 {(int)offsetof(struct stringpool_t, stringpool_str270), 19},
│ │ │ │ +
1271#line 368 "charset_lookup.gperf"
│ │ │ │ +
1272 {(int)offsetof(struct stringpool_t, stringpool_str271), 37},
│ │ │ │ +
1273 {-1,-1},
│ │ │ │ +
1274#line 75 "charset_lookup.gperf"
│ │ │ │ +
1275 {(int)offsetof(struct stringpool_t, stringpool_str273), 51},
│ │ │ │ +
1276#line 34 "charset_lookup.gperf"
│ │ │ │ +
1277 {(int)offsetof(struct stringpool_t, stringpool_str274), 23},
│ │ │ │ +
1278#line 165 "charset_lookup.gperf"
│ │ │ │ +
1279 {(int)offsetof(struct stringpool_t, stringpool_str275), 68},
│ │ │ │ +
1280#line 162 "charset_lookup.gperf"
│ │ │ │ +
1281 {(int)offsetof(struct stringpool_t, stringpool_str276), 15},
│ │ │ │ +
1282 {-1,-1},
│ │ │ │ +
1283#line 259 "charset_lookup.gperf"
│ │ │ │ +
1284 {(int)offsetof(struct stringpool_t, stringpool_str278), 21},
│ │ │ │ +
1285#line 52 "charset_lookup.gperf"
│ │ │ │ +
1286 {(int)offsetof(struct stringpool_t, stringpool_str279), 92},
│ │ │ │ +
1287 {-1,-1},
│ │ │ │ +
1288#line 119 "charset_lookup.gperf"
│ │ │ │ +
1289 {(int)offsetof(struct stringpool_t, stringpool_str281), 30},
│ │ │ │ +
1290 {-1,-1},
│ │ │ │ +
1291#line 135 "charset_lookup.gperf"
│ │ │ │ +
1292 {(int)offsetof(struct stringpool_t, stringpool_str283), 57},
│ │ │ │ +
1293#line 154 "charset_lookup.gperf"
│ │ │ │ +
1294 {(int)offsetof(struct stringpool_t, stringpool_str284), 51},
│ │ │ │ +
1295 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1296#line 130 "charset_lookup.gperf"
│ │ │ │ +
1297 {(int)offsetof(struct stringpool_t, stringpool_str291), 52},
│ │ │ │ +
1298 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1299#line 45 "charset_lookup.gperf"
│ │ │ │ +
1300 {(int)offsetof(struct stringpool_t, stringpool_str296), 31},
│ │ │ │ +
1301 {-1,-1},
│ │ │ │ +
1302#line 321 "charset_lookup.gperf"
│ │ │ │ +
1303 {(int)offsetof(struct stringpool_t, stringpool_str298), 20},
│ │ │ │ +
1304#line 193 "charset_lookup.gperf"
│ │ │ │ +
1305 {(int)offsetof(struct stringpool_t, stringpool_str299), 57},
│ │ │ │ +
1306#line 328 "charset_lookup.gperf"
│ │ │ │ +
1307 {(int)offsetof(struct stringpool_t, stringpool_str300), 27},
│ │ │ │ +
1308#line 97 "charset_lookup.gperf"
│ │ │ │ +
1309 {(int)offsetof(struct stringpool_t, stringpool_str301), 16},
│ │ │ │ +
1310#line 325 "charset_lookup.gperf"
│ │ │ │ +
1311 {(int)offsetof(struct stringpool_t, stringpool_str302), 24},
│ │ │ │ +
1312 {-1,-1},
│ │ │ │ +
1313#line 161 "charset_lookup.gperf"
│ │ │ │ +
1314 {(int)offsetof(struct stringpool_t, stringpool_str304), 55},
│ │ │ │ +
1315#line 73 "charset_lookup.gperf"
│ │ │ │ +
1316 {(int)offsetof(struct stringpool_t, stringpool_str305), 58},
│ │ │ │ +
1317 {-1,-1},
│ │ │ │ +
1318#line 183 "charset_lookup.gperf"
│ │ │ │ +
1319 {(int)offsetof(struct stringpool_t, stringpool_str307), 52},
│ │ │ │ +
1320#line 294 "charset_lookup.gperf"
│ │ │ │ +
1321 {(int)offsetof(struct stringpool_t, stringpool_str308), 92},
│ │ │ │ +
1322#line 85 "charset_lookup.gperf"
│ │ │ │ +
1323 {(int)offsetof(struct stringpool_t, stringpool_str309), 90},
│ │ │ │ +
1324#line 93 "charset_lookup.gperf"
│ │ │ │ +
1325 {(int)offsetof(struct stringpool_t, stringpool_str310), 16},
│ │ │ │ +
1326 {-1,-1}, {-1,-1},
│ │ │ │ +
1327#line 61 "charset_lookup.gperf"
│ │ │ │ +
1328 {(int)offsetof(struct stringpool_t, stringpool_str313), 64},
│ │ │ │ +
1329#line 288 "charset_lookup.gperf"
│ │ │ │ +
1330 {(int)offsetof(struct stringpool_t, stringpool_str314), 36},
│ │ │ │ +
1331#line 270 "charset_lookup.gperf"
│ │ │ │ +
1332 {(int)offsetof(struct stringpool_t, stringpool_str315), 89},
│ │ │ │ +
1333 {-1,-1},
│ │ │ │ +
1334#line 221 "charset_lookup.gperf"
│ │ │ │ +
1335 {(int)offsetof(struct stringpool_t, stringpool_str317), 71},
│ │ │ │ +
1336 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1337#line 326 "charset_lookup.gperf"
│ │ │ │ +
1338 {(int)offsetof(struct stringpool_t, stringpool_str324), 25},
│ │ │ │ +
1339 {-1,-1}, {-1,-1},
│ │ │ │ +
1340#line 108 "charset_lookup.gperf"
│ │ │ │ +
1341 {(int)offsetof(struct stringpool_t, stringpool_str327), 43},
│ │ │ │ +
1342 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1343 {-1,-1}, {-1,-1},
│ │ │ │ +
1344#line 167 "charset_lookup.gperf"
│ │ │ │ +
1345 {(int)offsetof(struct stringpool_t, stringpool_str336), 64},
│ │ │ │ +
1346 {-1,-1},
│ │ │ │ +
1347#line 366 "charset_lookup.gperf"
│ │ │ │ +
1348 {(int)offsetof(struct stringpool_t, stringpool_str338), 35},
│ │ │ │ +
1349 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1350 {-1,-1},
│ │ │ │ +
1351#line 53 "charset_lookup.gperf"
│ │ │ │ +
1352 {(int)offsetof(struct stringpool_t, stringpool_str346), 11},
│ │ │ │ +
1353 {-1,-1}, {-1,-1},
│ │ │ │ +
1354#line 333 "charset_lookup.gperf"
│ │ │ │ +
1355 {(int)offsetof(struct stringpool_t, stringpool_str349), 33},
│ │ │ │ +
1356#line 207 "charset_lookup.gperf"
│ │ │ │ +
1357 {(int)offsetof(struct stringpool_t, stringpool_str350), 69},
│ │ │ │ +
1358 {-1,-1},
│ │ │ │ +
1359#line 320 "charset_lookup.gperf"
│ │ │ │ +
1360 {(int)offsetof(struct stringpool_t, stringpool_str352), 19},
│ │ │ │ +
1361 {-1,-1}, {-1,-1},
│ │ │ │ +
1362#line 26 "charset_lookup.gperf"
│ │ │ │ +
1363 {(int)offsetof(struct stringpool_t, stringpool_str355), 11},
│ │ │ │ +
1364#line 324 "charset_lookup.gperf"
│ │ │ │ +
1365 {(int)offsetof(struct stringpool_t, stringpool_str356), 23},
│ │ │ │ +
1366#line 301 "charset_lookup.gperf"
│ │ │ │ +
1367 {(int)offsetof(struct stringpool_t, stringpool_str357), 93},
│ │ │ │ +
1368#line 148 "charset_lookup.gperf"
│ │ │ │ +
1369 {(int)offsetof(struct stringpool_t, stringpool_str358), 60},
│ │ │ │ +
1370 {-1,-1},
│ │ │ │ +
1371#line 303 "charset_lookup.gperf"
│ │ │ │ +
1372 {(int)offsetof(struct stringpool_t, stringpool_str360), 94},
│ │ │ │ +
1373 {-1,-1}, {-1,-1},
│ │ │ │ +
1374#line 91 "charset_lookup.gperf"
│ │ │ │ +
1375 {(int)offsetof(struct stringpool_t, stringpool_str363), 61},
│ │ │ │ +
1376 {-1,-1}, {-1,-1},
│ │ │ │ +
1377#line 299 "charset_lookup.gperf"
│ │ │ │ +
1378 {(int)offsetof(struct stringpool_t, stringpool_str366), 93},
│ │ │ │ +
1379#line 289 "charset_lookup.gperf"
│ │ │ │ +
1380 {(int)offsetof(struct stringpool_t, stringpool_str367), 3},
│ │ │ │ +
1381#line 32 "charset_lookup.gperf"
│ │ │ │ +
1382 {(int)offsetof(struct stringpool_t, stringpool_str368), 21},
│ │ │ │ +
1383#line 377 "charset_lookup.gperf"
│ │ │ │ +
1384 {(int)offsetof(struct stringpool_t, stringpool_str369), 75},
│ │ │ │ +
1385#line 287 "charset_lookup.gperf"
│ │ │ │ +
1386 {(int)offsetof(struct stringpool_t, stringpool_str370), 6},
│ │ │ │ +
1387 {-1,-1},
│ │ │ │ +
1388#line 37 "charset_lookup.gperf"
│ │ │ │ +
1389 {(int)offsetof(struct stringpool_t, stringpool_str372), 26},
│ │ │ │ +
1390 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1391#line 331 "charset_lookup.gperf"
│ │ │ │ +
1392 {(int)offsetof(struct stringpool_t, stringpool_str378), 31},
│ │ │ │ +
1393#line 24 "charset_lookup.gperf"
│ │ │ │ +
1394 {(int)offsetof(struct stringpool_t, stringpool_str379), 14},
│ │ │ │ +
1395#line 245 "charset_lookup.gperf"
│ │ │ │ +
1396 {(int)offsetof(struct stringpool_t, stringpool_str380), 75},
│ │ │ │ +
1397#line 107 "charset_lookup.gperf"
│ │ │ │ +
1398 {(int)offsetof(struct stringpool_t, stringpool_str381), 42},
│ │ │ │ +
1399#line 48 "charset_lookup.gperf"
│ │ │ │ +
1400 {(int)offsetof(struct stringpool_t, stringpool_str382), 34},
│ │ │ │ +
1401 {-1,-1},
│ │ │ │ +
1402#line 14 "charset_lookup.gperf"
│ │ │ │ +
1403 {(int)offsetof(struct stringpool_t, stringpool_str384), 10},
│ │ │ │ +
1404#line 76 "charset_lookup.gperf"
│ │ │ │ +
1405 {(int)offsetof(struct stringpool_t, stringpool_str385), 60},
│ │ │ │ +
1406 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1407#line 120 "charset_lookup.gperf"
│ │ │ │ +
1408 {(int)offsetof(struct stringpool_t, stringpool_str390), 31},
│ │ │ │ +
1409#line 16 "charset_lookup.gperf"
│ │ │ │ +
1410 {(int)offsetof(struct stringpool_t, stringpool_str391), 60},
│ │ │ │ +
1411#line 226 "charset_lookup.gperf"
│ │ │ │ +
1412 {(int)offsetof(struct stringpool_t, stringpool_str392), 65},
│ │ │ │ +
1413 {-1,-1}, {-1,-1},
│ │ │ │ +
1414#line 225 "charset_lookup.gperf"
│ │ │ │ +
1415 {(int)offsetof(struct stringpool_t, stringpool_str395), 65},
│ │ │ │ +
1416#line 40 "charset_lookup.gperf"
│ │ │ │ +
1417 {(int)offsetof(struct stringpool_t, stringpool_str396), 92},
│ │ │ │ +
1418 {-1,-1},
│ │ │ │ +
1419#line 103 "charset_lookup.gperf"
│ │ │ │ +
1420 {(int)offsetof(struct stringpool_t, stringpool_str398), 16},
│ │ │ │ +
1421#line 71 "charset_lookup.gperf"
│ │ │ │ +
1422 {(int)offsetof(struct stringpool_t, stringpool_str399), 56},
│ │ │ │ +
1423 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1424#line 210 "charset_lookup.gperf"
│ │ │ │ +
1425 {(int)offsetof(struct stringpool_t, stringpool_str404), 64},
│ │ │ │ +
1426 {-1,-1},
│ │ │ │ +
1427#line 112 "charset_lookup.gperf"
│ │ │ │ +
1428 {(int)offsetof(struct stringpool_t, stringpool_str406), 89},
│ │ │ │ +
1429#line 104 "charset_lookup.gperf"
│ │ │ │ +
1430 {(int)offsetof(struct stringpool_t, stringpool_str407), 35},
│ │ │ │ +
1431#line 110 "charset_lookup.gperf"
│ │ │ │ +
1432 {(int)offsetof(struct stringpool_t, stringpool_str408), 61},
│ │ │ │ +
1433#line 267 "charset_lookup.gperf"
│ │ │ │ +
1434 {(int)offsetof(struct stringpool_t, stringpool_str409), 87},
│ │ │ │ +
1435#line 33 "charset_lookup.gperf"
│ │ │ │ +
1436 {(int)offsetof(struct stringpool_t, stringpool_str410), 22},
│ │ │ │ +
1437 {-1,-1},
│ │ │ │ +
1438#line 41 "charset_lookup.gperf"
│ │ │ │ +
1439 {(int)offsetof(struct stringpool_t, stringpool_str412), 29},
│ │ │ │ +
1440 {-1,-1},
│ │ │ │ +
1441#line 80 "charset_lookup.gperf"
│ │ │ │ +
1442 {(int)offsetof(struct stringpool_t, stringpool_str414), 71},
│ │ │ │ +
1443#line 98 "charset_lookup.gperf"
│ │ │ │ +
1444 {(int)offsetof(struct stringpool_t, stringpool_str415), 38},
│ │ │ │ +
1445 {-1,-1},
│ │ │ │ +
1446#line 285 "charset_lookup.gperf"
│ │ │ │ +
1447 {(int)offsetof(struct stringpool_t, stringpool_str417), 2},
│ │ │ │ +
1448#line 89 "charset_lookup.gperf"
│ │ │ │ +
1449 {(int)offsetof(struct stringpool_t, stringpool_str418), 59},
│ │ │ │ +
1450#line 90 "charset_lookup.gperf"
│ │ │ │ +
1451 {(int)offsetof(struct stringpool_t, stringpool_str419), 60},
│ │ │ │ +
1452#line 334 "charset_lookup.gperf"
│ │ │ │ +
1453 {(int)offsetof(struct stringpool_t, stringpool_str420), 38},
│ │ │ │ +
1454#line 296 "charset_lookup.gperf"
│ │ │ │ +
1455 {(int)offsetof(struct stringpool_t, stringpool_str421), 4},
│ │ │ │ +
1456#line 261 "charset_lookup.gperf"
│ │ │ │ +
1457 {(int)offsetof(struct stringpool_t, stringpool_str422), 20},
│ │ │ │ +
1458#line 160 "charset_lookup.gperf"
│ │ │ │ +
1459 {(int)offsetof(struct stringpool_t, stringpool_str423), 54},
│ │ │ │ +
1460#line 94 "charset_lookup.gperf"
│ │ │ │ +
1461 {(int)offsetof(struct stringpool_t, stringpool_str424), 38},
│ │ │ │ +
1462#line 378 "charset_lookup.gperf"
│ │ │ │ +
1463 {(int)offsetof(struct stringpool_t, stringpool_str425), 79},
│ │ │ │ +
1464 {-1,-1},
│ │ │ │ +
1465#line 106 "charset_lookup.gperf"
│ │ │ │ +
1466 {(int)offsetof(struct stringpool_t, stringpool_str427), 14},
│ │ │ │ +
1467 {-1,-1},
│ │ │ │ +
1468#line 29 "charset_lookup.gperf"
│ │ │ │ +
1469 {(int)offsetof(struct stringpool_t, stringpool_str429), 18},
│ │ │ │ +
1470 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1471#line 28 "charset_lookup.gperf"
│ │ │ │ +
1472 {(int)offsetof(struct stringpool_t, stringpool_str433), 17},
│ │ │ │ +
1473#line 77 "charset_lookup.gperf"
│ │ │ │ +
1474 {(int)offsetof(struct stringpool_t, stringpool_str434), 59},
│ │ │ │ +
1475#line 256 "charset_lookup.gperf"
│ │ │ │ +
1476 {(int)offsetof(struct stringpool_t, stringpool_str435), 84},
│ │ │ │ +
1477 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1478#line 122 "charset_lookup.gperf"
│ │ │ │ +
1479 {(int)offsetof(struct stringpool_t, stringpool_str439), 45},
│ │ │ │ +
1480#line 228 "charset_lookup.gperf"
│ │ │ │ +
1481 {(int)offsetof(struct stringpool_t, stringpool_str440), 65},
│ │ │ │ +
1482#line 72 "charset_lookup.gperf"
│ │ │ │ +
1483 {(int)offsetof(struct stringpool_t, stringpool_str441), 57},
│ │ │ │ +
1484#line 204 "charset_lookup.gperf"
│ │ │ │ +
1485 {(int)offsetof(struct stringpool_t, stringpool_str442), 62},
│ │ │ │ +
1486#line 198 "charset_lookup.gperf"
│ │ │ │ +
1487 {(int)offsetof(struct stringpool_t, stringpool_str443), 59},
│ │ │ │ +
1488 {-1,-1},
│ │ │ │ +
1489#line 123 "charset_lookup.gperf"
│ │ │ │ +
1490 {(int)offsetof(struct stringpool_t, stringpool_str445), 46},
│ │ │ │ +
1491#line 206 "charset_lookup.gperf"
│ │ │ │ +
1492 {(int)offsetof(struct stringpool_t, stringpool_str446), 63},
│ │ │ │ +
1493 {-1,-1},
│ │ │ │ +
1494#line 262 "charset_lookup.gperf"
│ │ │ │ +
1495 {(int)offsetof(struct stringpool_t, stringpool_str448), 19},
│ │ │ │ +
1496#line 224 "charset_lookup.gperf"
│ │ │ │ +
1497 {(int)offsetof(struct stringpool_t, stringpool_str449), 74},
│ │ │ │ +
1498#line 322 "charset_lookup.gperf"
│ │ │ │ +
1499 {(int)offsetof(struct stringpool_t, stringpool_str450), 21},
│ │ │ │ +
1500#line 290 "charset_lookup.gperf"
│ │ │ │ +
1501 {(int)offsetof(struct stringpool_t, stringpool_str451), 93},
│ │ │ │ +
1502#line 142 "charset_lookup.gperf"
│ │ │ │ +
1503 {(int)offsetof(struct stringpool_t, stringpool_str452), 53},
│ │ │ │ +
1504 {-1,-1},
│ │ │ │ +
1505#line 327 "charset_lookup.gperf"
│ │ │ │ +
1506 {(int)offsetof(struct stringpool_t, stringpool_str454), 26},
│ │ │ │ +
1507#line 78 "charset_lookup.gperf"
│ │ │ │ +
1508 {(int)offsetof(struct stringpool_t, stringpool_str455), 61},
│ │ │ │ +
1509#line 125 "charset_lookup.gperf"
│ │ │ │ +
1510 {(int)offsetof(struct stringpool_t, stringpool_str456), 48},
│ │ │ │ +
1511#line 86 "charset_lookup.gperf"
│ │ │ │ +
1512 {(int)offsetof(struct stringpool_t, stringpool_str457), 3},
│ │ │ │ +
1513#line 307 "charset_lookup.gperf"
│ │ │ │ +
1514 {(int)offsetof(struct stringpool_t, stringpool_str458), 20},
│ │ │ │ +
1515#line 314 "charset_lookup.gperf"
│ │ │ │ +
1516 {(int)offsetof(struct stringpool_t, stringpool_str459), 27},
│ │ │ │ +
1517#line 311 "charset_lookup.gperf"
│ │ │ │ +
1518 {(int)offsetof(struct stringpool_t, stringpool_str460), 24},
│ │ │ │ +
1519 {-1,-1},
│ │ │ │ +
1520#line 79 "charset_lookup.gperf"
│ │ │ │ +
1521 {(int)offsetof(struct stringpool_t, stringpool_str462), 62},
│ │ │ │ +
1522 {-1,-1},
│ │ │ │ +
1523#line 365 "charset_lookup.gperf"
│ │ │ │ +
1524 {(int)offsetof(struct stringpool_t, stringpool_str464), 34},
│ │ │ │ +
1525#line 276 "charset_lookup.gperf"
│ │ │ │ +
1526 {(int)offsetof(struct stringpool_t, stringpool_str465), 91},
│ │ │ │ +
1527#line 88 "charset_lookup.gperf"
│ │ │ │ +
1528 {(int)offsetof(struct stringpool_t, stringpool_str466), 94},
│ │ │ │ +
1529 {-1,-1},
│ │ │ │ +
1530#line 67 "charset_lookup.gperf"
│ │ │ │ +
1531 {(int)offsetof(struct stringpool_t, stringpool_str468), 15},
│ │ │ │ +
1532 {-1,-1},
│ │ │ │ +
1533#line 196 "charset_lookup.gperf"
│ │ │ │ +
1534 {(int)offsetof(struct stringpool_t, stringpool_str470), 58},
│ │ │ │ +
1535#line 312 "charset_lookup.gperf"
│ │ │ │ +
1536 {(int)offsetof(struct stringpool_t, stringpool_str471), 25},
│ │ │ │ +
1537#line 292 "charset_lookup.gperf"
│ │ │ │ +
1538 {(int)offsetof(struct stringpool_t, stringpool_str472), 2},
│ │ │ │ +
1539#line 281 "charset_lookup.gperf"
│ │ │ │ +
1540 {(int)offsetof(struct stringpool_t, stringpool_str473), 67},
│ │ │ │ +
1541#line 99 "charset_lookup.gperf"
│ │ │ │ +
1542 {(int)offsetof(struct stringpool_t, stringpool_str474), 39},
│ │ │ │ +
1543#line 316 "charset_lookup.gperf"
│ │ │ │ +
1544 {(int)offsetof(struct stringpool_t, stringpool_str475), 70},
│ │ │ │ +
1545#line 253 "charset_lookup.gperf"
│ │ │ │ +
1546 {(int)offsetof(struct stringpool_t, stringpool_str476), 75},
│ │ │ │ +
1547#line 317 "charset_lookup.gperf"
│ │ │ │ +
1548 {(int)offsetof(struct stringpool_t, stringpool_str477), 68},
│ │ │ │ +
1549 {-1,-1},
│ │ │ │ +
1550#line 335 "charset_lookup.gperf"
│ │ │ │ +
1551 {(int)offsetof(struct stringpool_t, stringpool_str479), 39},
│ │ │ │ +
1552 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1553#line 95 "charset_lookup.gperf"
│ │ │ │ +
1554 {(int)offsetof(struct stringpool_t, stringpool_str483), 39},
│ │ │ │ +
1555#line 211 "charset_lookup.gperf"
│ │ │ │ +
1556 {(int)offsetof(struct stringpool_t, stringpool_str484), 68},
│ │ │ │ +
1557#line 306 "charset_lookup.gperf"
│ │ │ │ +
1558 {(int)offsetof(struct stringpool_t, stringpool_str485), 19},
│ │ │ │ +
1559 {-1,-1},
│ │ │ │ +
1560#line 310 "charset_lookup.gperf"
│ │ │ │ +
1561 {(int)offsetof(struct stringpool_t, stringpool_str487), 23},
│ │ │ │ +
1562 {-1,-1}, {-1,-1},
│ │ │ │ +
1563#line 116 "charset_lookup.gperf"
│ │ │ │ +
1564 {(int)offsetof(struct stringpool_t, stringpool_str490), 92},
│ │ │ │ +
1565#line 266 "charset_lookup.gperf"
│ │ │ │ +
1566 {(int)offsetof(struct stringpool_t, stringpool_str491), 90},
│ │ │ │ +
1567#line 323 "charset_lookup.gperf"
│ │ │ │ +
1568 {(int)offsetof(struct stringpool_t, stringpool_str492), 22},
│ │ │ │ +
1569#line 13 "charset_lookup.gperf"
│ │ │ │ +
1570 {(int)offsetof(struct stringpool_t, stringpool_str493), 60},
│ │ │ │ +
1571#line 329 "charset_lookup.gperf"
│ │ │ │ +
1572 {(int)offsetof(struct stringpool_t, stringpool_str494), 29},
│ │ │ │ +
1573 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1574#line 100 "charset_lookup.gperf"
│ │ │ │ +
1575 {(int)offsetof(struct stringpool_t, stringpool_str499), 40},
│ │ │ │ +
1576 {-1,-1},
│ │ │ │ +
1577#line 222 "charset_lookup.gperf"
│ │ │ │ +
1578 {(int)offsetof(struct stringpool_t, stringpool_str501), 72},
│ │ │ │ +
1579 {-1,-1}, {-1,-1},
│ │ │ │ +
1580#line 336 "charset_lookup.gperf"
│ │ │ │ +
1581 {(int)offsetof(struct stringpool_t, stringpool_str504), 40},
│ │ │ │ +
1582 {-1,-1},
│ │ │ │ +
1583#line 117 "charset_lookup.gperf"
│ │ │ │ +
1584 {(int)offsetof(struct stringpool_t, stringpool_str506), 29},
│ │ │ │ +
1585#line 304 "charset_lookup.gperf"
│ │ │ │ +
1586 {(int)offsetof(struct stringpool_t, stringpool_str507), 94},
│ │ │ │ +
1587#line 96 "charset_lookup.gperf"
│ │ │ │ +
1588 {(int)offsetof(struct stringpool_t, stringpool_str508), 40},
│ │ │ │ +
1589 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1590#line 27 "charset_lookup.gperf"
│ │ │ │ +
1591 {(int)offsetof(struct stringpool_t, stringpool_str514), 16},
│ │ │ │ +
1592#line 227 "charset_lookup.gperf"
│ │ │ │ +
1593 {(int)offsetof(struct stringpool_t, stringpool_str515), 65},
│ │ │ │ +
1594#line 315 "charset_lookup.gperf"
│ │ │ │ +
1595 {(int)offsetof(struct stringpool_t, stringpool_str516), 33},
│ │ │ │ +
1596#line 219 "charset_lookup.gperf"
│ │ │ │ +
1597 {(int)offsetof(struct stringpool_t, stringpool_str517), 28},
│ │ │ │ +
1598#line 190 "charset_lookup.gperf"
│ │ │ │ +
1599 {(int)offsetof(struct stringpool_t, stringpool_str518), 0},
│ │ │ │ +
1600 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1601 {-1,-1}, {-1,-1},
│ │ │ │ +
1602#line 63 "charset_lookup.gperf"
│ │ │ │ +
1603 {(int)offsetof(struct stringpool_t, stringpool_str527), 45},
│ │ │ │ +
1604 {-1,-1},
│ │ │ │ +
1605#line 286 "charset_lookup.gperf"
│ │ │ │ +
1606 {(int)offsetof(struct stringpool_t, stringpool_str529), 7},
│ │ │ │ +
1607 {-1,-1},
│ │ │ │ +
1608#line 200 "charset_lookup.gperf"
│ │ │ │ +
1609 {(int)offsetof(struct stringpool_t, stringpool_str531), 60},
│ │ │ │ +
1610#line 126 "charset_lookup.gperf"
│ │ │ │ +
1611 {(int)offsetof(struct stringpool_t, stringpool_str532), 49},
│ │ │ │ +
1612#line 275 "charset_lookup.gperf"
│ │ │ │ +
1613 {(int)offsetof(struct stringpool_t, stringpool_str533), 91},
│ │ │ │ +
1614#line 308 "charset_lookup.gperf"
│ │ │ │ +
1615 {(int)offsetof(struct stringpool_t, stringpool_str534), 21},
│ │ │ │ +
1616 {-1,-1},
│ │ │ │ +
1617#line 313 "charset_lookup.gperf"
│ │ │ │ +
1618 {(int)offsetof(struct stringpool_t, stringpool_str536), 26},
│ │ │ │ +
1619#line 179 "charset_lookup.gperf"
│ │ │ │ +
1620 {(int)offsetof(struct stringpool_t, stringpool_str537), 92},
│ │ │ │ +
1621#line 194 "charset_lookup.gperf"
│ │ │ │ +
1622 {(int)offsetof(struct stringpool_t, stringpool_str538), 57},
│ │ │ │ +
1623#line 87 "charset_lookup.gperf"
│ │ │ │ +
1624 {(int)offsetof(struct stringpool_t, stringpool_str539), 93},
│ │ │ │ +
1625 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1626 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1627#line 60 "charset_lookup.gperf"
│ │ │ │ +
1628 {(int)offsetof(struct stringpool_t, stringpool_str549), 32},
│ │ │ │ +
1629 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1630#line 124 "charset_lookup.gperf"
│ │ │ │ +
1631 {(int)offsetof(struct stringpool_t, stringpool_str553), 47},
│ │ │ │ +
1632 {-1,-1},
│ │ │ │ +
1633#line 309 "charset_lookup.gperf"
│ │ │ │ +
1634 {(int)offsetof(struct stringpool_t, stringpool_str555), 22},
│ │ │ │ +
1635 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1636#line 212 "charset_lookup.gperf"
│ │ │ │ +
1637 {(int)offsetof(struct stringpool_t, stringpool_str561), 70},
│ │ │ │ +
1638 {-1,-1},
│ │ │ │ +
1639#line 213 "charset_lookup.gperf"
│ │ │ │ +
1640 {(int)offsetof(struct stringpool_t, stringpool_str563), 68},
│ │ │ │ +
1641 {-1,-1},
│ │ │ │ +
1642#line 101 "charset_lookup.gperf"
│ │ │ │ +
1643 {(int)offsetof(struct stringpool_t, stringpool_str565), 38},
│ │ │ │ +
1644 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1645#line 81 "charset_lookup.gperf"
│ │ │ │ +
1646 {(int)offsetof(struct stringpool_t, stringpool_str572), 65},
│ │ │ │ +
1647 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1648#line 284 "charset_lookup.gperf"
│ │ │ │ +
1649 {(int)offsetof(struct stringpool_t, stringpool_str576), 3},
│ │ │ │ +
1650#line 109 "charset_lookup.gperf"
│ │ │ │ +
1651 {(int)offsetof(struct stringpool_t, stringpool_str577), 61},
│ │ │ │ +
1652#line 252 "charset_lookup.gperf"
│ │ │ │ +
1653 {(int)offsetof(struct stringpool_t, stringpool_str578), 82},
│ │ │ │ +
1654#line 209 "charset_lookup.gperf"
│ │ │ │ +
1655 {(int)offsetof(struct stringpool_t, stringpool_str579), 70},
│ │ │ │ +
1656#line 295 "charset_lookup.gperf"
│ │ │ │ +
1657 {(int)offsetof(struct stringpool_t, stringpool_str580), 5},
│ │ │ │ +
1658#line 298 "charset_lookup.gperf"
│ │ │ │ +
1659 {(int)offsetof(struct stringpool_t, stringpool_str581), 8},
│ │ │ │ +
1660#line 248 "charset_lookup.gperf"
│ │ │ │ +
1661 {(int)offsetof(struct stringpool_t, stringpool_str582), 78},
│ │ │ │ +
1662 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1663#line 291 "charset_lookup.gperf"
│ │ │ │ +
1664 {(int)offsetof(struct stringpool_t, stringpool_str586), 3},
│ │ │ │ +
1665 {-1,-1},
│ │ │ │ +
1666#line 283 "charset_lookup.gperf"
│ │ │ │ +
1667 {(int)offsetof(struct stringpool_t, stringpool_str588), 67},
│ │ │ │ +
1668#line 68 "charset_lookup.gperf"
│ │ │ │ +
1669 {(int)offsetof(struct stringpool_t, stringpool_str589), 14},
│ │ │ │ +
1670 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1671#line 192 "charset_lookup.gperf"
│ │ │ │ +
1672 {(int)offsetof(struct stringpool_t, stringpool_str594), 56},
│ │ │ │ +
1673 {-1,-1},
│ │ │ │ +
1674#line 202 "charset_lookup.gperf"
│ │ │ │ +
1675 {(int)offsetof(struct stringpool_t, stringpool_str596), 61},
│ │ │ │ +
1676#line 254 "charset_lookup.gperf"
│ │ │ │ +
1677 {(int)offsetof(struct stringpool_t, stringpool_str597), 75},
│ │ │ │ +
1678 {-1,-1}, {-1,-1},
│ │ │ │ +
1679#line 318 "charset_lookup.gperf"
│ │ │ │ +
1680 {(int)offsetof(struct stringpool_t, stringpool_str600), 66},
│ │ │ │ +
1681 {-1,-1},
│ │ │ │ +
1682#line 59 "charset_lookup.gperf"
│ │ │ │ +
1683 {(int)offsetof(struct stringpool_t, stringpool_str602), 89},
│ │ │ │ +
1684 {-1,-1},
│ │ │ │ +
1685#line 69 "charset_lookup.gperf"
│ │ │ │ +
1686 {(int)offsetof(struct stringpool_t, stringpool_str604), 68},
│ │ │ │ +
1687 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1688#line 215 "charset_lookup.gperf"
│ │ │ │ +
1689 {(int)offsetof(struct stringpool_t, stringpool_str609), 68},
│ │ │ │ +
1690 {-1,-1}, {-1,-1},
│ │ │ │ +
1691#line 127 "charset_lookup.gperf"
│ │ │ │ +
1692 {(int)offsetof(struct stringpool_t, stringpool_str612), 50},
│ │ │ │ +
1693#line 21 "charset_lookup.gperf"
│ │ │ │ +
1694 {(int)offsetof(struct stringpool_t, stringpool_str613), 12},
│ │ │ │ +
1695 {-1,-1},
│ │ │ │ +
1696#line 282 "charset_lookup.gperf"
│ │ │ │ +
1697 {(int)offsetof(struct stringpool_t, stringpool_str615), 67},
│ │ │ │ +
1698 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1699#line 65 "charset_lookup.gperf"
│ │ │ │ +
1700 {(int)offsetof(struct stringpool_t, stringpool_str619), 49},
│ │ │ │ +
1701 {-1,-1}, {-1,-1},
│ │ │ │ +
1702#line 20 "charset_lookup.gperf"
│ │ │ │ +
1703 {(int)offsetof(struct stringpool_t, stringpool_str622), 12},
│ │ │ │ +
1704 {-1,-1}, {-1,-1},
│ │ │ │ +
1705#line 82 "charset_lookup.gperf"
│ │ │ │ +
1706 {(int)offsetof(struct stringpool_t, stringpool_str625), 75},
│ │ │ │ +
1707 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1708#line 58 "charset_lookup.gperf"
│ │ │ │ +
1709 {(int)offsetof(struct stringpool_t, stringpool_str631), 70},
│ │ │ │ +
1710 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1711 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1712#line 64 "charset_lookup.gperf"
│ │ │ │ +
1713 {(int)offsetof(struct stringpool_t, stringpool_str641), 47},
│ │ │ │ +
1714 {-1,-1},
│ │ │ │ +
1715#line 264 "charset_lookup.gperf"
│ │ │ │ +
1716 {(int)offsetof(struct stringpool_t, stringpool_str643), 24},
│ │ │ │ +
1717 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1718 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1719 {-1,-1},
│ │ │ │ +
1720#line 217 "charset_lookup.gperf"
│ │ │ │ +
1721 {(int)offsetof(struct stringpool_t, stringpool_str657), 66},
│ │ │ │ +
1722 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1723 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1725#line 84 "charset_lookup.gperf"
│ │ │ │ +
1726 {(int)offsetof(struct stringpool_t, stringpool_str675), 31},
│ │ │ │ +
1727 {-1,-1},
│ │ │ │ +
1728#line 114 "charset_lookup.gperf"
│ │ │ │ +
1729 {(int)offsetof(struct stringpool_t, stringpool_str677), 44},
│ │ │ │ +
1730 {-1,-1},
│ │ │ │ +
1731#line 214 "charset_lookup.gperf"
│ │ │ │ +
1732 {(int)offsetof(struct stringpool_t, stringpool_str679), 68},
│ │ │ │ +
1733 {-1,-1},
│ │ │ │ +
1734#line 268 "charset_lookup.gperf"
│ │ │ │ +
1735 {(int)offsetof(struct stringpool_t, stringpool_str681), 88},
│ │ │ │ +
1736 {-1,-1},
│ │ │ │ +
1737#line 57 "charset_lookup.gperf"
│ │ │ │ +
1738 {(int)offsetof(struct stringpool_t, stringpool_str683), 16},
│ │ │ │ +
1739 {-1,-1}, {-1,-1},
│ │ │ │ +
1740#line 216 "charset_lookup.gperf"
│ │ │ │ +
1741 {(int)offsetof(struct stringpool_t, stringpool_str686), 66},
│ │ │ │ +
1742 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1743#line 54 "charset_lookup.gperf"
│ │ │ │ +
1744 {(int)offsetof(struct stringpool_t, stringpool_str690), 39},
│ │ │ │ +
1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1746#line 22 "charset_lookup.gperf"
│ │ │ │ +
1747 {(int)offsetof(struct stringpool_t, stringpool_str695), 11},
│ │ │ │ +
1748 {-1,-1},
│ │ │ │ +
1749#line 255 "charset_lookup.gperf"
│ │ │ │ +
1750 {(int)offsetof(struct stringpool_t, stringpool_str697), 83},
│ │ │ │ +
1751 {-1,-1}, {-1,-1},
│ │ │ │ +
1752#line 66 "charset_lookup.gperf"
│ │ │ │ +
1753 {(int)offsetof(struct stringpool_t, stringpool_str700), 50},
│ │ │ │ +
1754 {-1,-1},
│ │ │ │ +
1755#line 111 "charset_lookup.gperf"
│ │ │ │ +
1756 {(int)offsetof(struct stringpool_t, stringpool_str702), 62},
│ │ │ │ +
1757 {-1,-1},
│ │ │ │ +
1758#line 18 "charset_lookup.gperf"
│ │ │ │ +
1759 {(int)offsetof(struct stringpool_t, stringpool_str704), 11},
│ │ │ │ +
1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1762#line 56 "charset_lookup.gperf"
│ │ │ │ +
1763 {(int)offsetof(struct stringpool_t, stringpool_str715), 40},
│ │ │ │ +
1764 {-1,-1},
│ │ │ │ +
1765#line 11 "charset_lookup.gperf"
│ │ │ │ +
1766 {(int)offsetof(struct stringpool_t, stringpool_str717), 92},
│ │ │ │ +
1767 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1768#line 260 "charset_lookup.gperf"
│ │ │ │ +
1769 {(int)offsetof(struct stringpool_t, stringpool_str721), 25},
│ │ │ │ +
1770 {-1,-1},
│ │ │ │ +
1771#line 249 "charset_lookup.gperf"
│ │ │ │ +
1772 {(int)offsetof(struct stringpool_t, stringpool_str723), 79},
│ │ │ │ +
1773 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1774#line 12 "charset_lookup.gperf"
│ │ │ │ +
1775 {(int)offsetof(struct stringpool_t, stringpool_str729), 92},
│ │ │ │ +
1776 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1777#line 83 "charset_lookup.gperf"
│ │ │ │ +
1778 {(int)offsetof(struct stringpool_t, stringpool_str735), 30},
│ │ │ │ +
1779 {-1,-1},
│ │ │ │ +
1780#line 115 "charset_lookup.gperf"
│ │ │ │ +
1781 {(int)offsetof(struct stringpool_t, stringpool_str737), 18},
│ │ │ │ +
1782 {-1,-1}, {-1,-1},
│ │ │ │ +
1783#line 297 "charset_lookup.gperf"
│ │ │ │ +
1784 {(int)offsetof(struct stringpool_t, stringpool_str740), 9},
│ │ │ │ +
1785 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1786 {-1,-1}, {-1,-1},
│ │ │ │ +
1787#line 265 "charset_lookup.gperf"
│ │ │ │ +
1788 {(int)offsetof(struct stringpool_t, stringpool_str749), 23},
│ │ │ │ +
1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1791 {-1,-1}, {-1,-1},
│ │ │ │ +
1792#line 218 "charset_lookup.gperf"
│ │ │ │ +
1793 {(int)offsetof(struct stringpool_t, stringpool_str764), 66},
│ │ │ │ +
1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1799#line 247 "charset_lookup.gperf"
│ │ │ │ +
1800 {(int)offsetof(struct stringpool_t, stringpool_str793), 77},
│ │ │ │ +
1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1803 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1804 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1805#line 257 "charset_lookup.gperf"
│ │ │ │ +
1806 {(int)offsetof(struct stringpool_t, stringpool_str815), 85},
│ │ │ │ +
1807 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1808#line 263 "charset_lookup.gperf"
│ │ │ │ +
1809 {(int)offsetof(struct stringpool_t, stringpool_str822), 22},
│ │ │ │ +
1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1811#line 246 "charset_lookup.gperf"
│ │ │ │ +
1812 {(int)offsetof(struct stringpool_t, stringpool_str827), 76},
│ │ │ │ +
1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1814 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1815 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1816 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1820#line 305 "charset_lookup.gperf"
│ │ │ │ +
1821 {(int)offsetof(struct stringpool_t, stringpool_str868), 26},
│ │ │ │ +
1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1823 {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1824#line 258 "charset_lookup.gperf"
│ │ │ │ +
1825 {(int)offsetof(struct stringpool_t, stringpool_str878), 86},
│ │ │ │ +
1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1829#line 277 "charset_lookup.gperf"
│ │ │ │ +
1830 {(int)offsetof(struct stringpool_t, stringpool_str897), 91},
│ │ │ │ +
1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1833 {-1,-1},
│ │ │ │ +
1834#line 250 "charset_lookup.gperf"
│ │ │ │ +
1835 {(int)offsetof(struct stringpool_t, stringpool_str911), 80},
│ │ │ │ +
1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1844 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1845 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1846 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1847 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1848 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1849 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1850 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1851 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1852 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1853 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1854 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1855 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1856 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1857 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1858 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1859 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1860 {-1,-1},
│ │ │ │ +
1861#line 55 "charset_lookup.gperf"
│ │ │ │ +
1862 {(int)offsetof(struct stringpool_t, stringpool_str1057), 38},
│ │ │ │ +
1863 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1864 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
│ │ │ │ +
1865#line 251 "charset_lookup.gperf"
│ │ │ │ +
1866 {(int)offsetof(struct stringpool_t, stringpool_str1069), 81}
│ │ │ │ +
1867 };
│ │ │ │ +
1868
│ │ │ │ +
1869 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
│ │ │ │ +
1870 {
│ │ │ │ +
1871 register unsigned int key = hash_charset (str, len);
│ │ │ │ +
1872
│ │ │ │ +
1873 if (key <= MAX_HASH_VALUE)
│ │ │ │ +
1874 {
│ │ │ │ +
1875 register int o = wordlist[key].alias_pos;
│ │ │ │ +
1876 if (o >= 0)
│ │ │ │ +
1877 {
│ │ │ │ +
1878 register const char *s = o + stringpool;
│ │ │ │ +
1879
│ │ │ │ +
1880 if (*str == *s && !strcmp (str + 1, s + 1))
│ │ │ │ +
1881 return &wordlist[key];
│ │ │ │ +
1882 }
│ │ │ │ +
1883 }
│ │ │ │ +
1884 }
│ │ │ │ +
1885 return 0;
│ │ │ │ +
1886}
│ │ │ │ +
1887#line 382 "charset_lookup.gperf"
│ │ │ │ +
1888
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,39 +1,1901 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -hmac_md5.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2008 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_cKNGa1szdpreKWqKpKKcAA_ │ │ │ │ │ -21#define _tdsguard_cKNGa1szdpreKWqKpKKcAA_ │ │ │ │ │ -22 │ │ │ │ │ -23#include │ │ │ │ │ -24void hmac_md5(const unsigned char key[16], │ │ │ │ │ -25 const unsigned char* data, size_t data_len, │ │ │ │ │ -26 unsigned char* digest); │ │ │ │ │ -27#include │ │ │ │ │ -28 │ │ │ │ │ -29#endif │ │ │ │ │ +charset_lookup.h │ │ │ │ │ +1/* ANSI-C code produced by gperf version 3.1 */ │ │ │ │ │ +2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P - │ │ │ │ │ +H hash_charset -N charset_lookup -L ANSI-C --enum charset_lookup.gperf */ │ │ │ │ │ +3/* Computed positions: -k'1,3-11,$' */ │ │ │ │ │ +4 │ │ │ │ │ +5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ │ │ │ │ │ +6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ │ │ │ │ │ +7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ │ │ │ │ │ +8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ │ │ │ │ │ +9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ │ │ │ │ │ +10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ │ │ │ │ │ +11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ │ │ │ │ │ +12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ │ │ │ │ │ +13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ │ │ │ │ │ +14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ │ │ │ │ │ +15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ │ │ │ │ │ +16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ │ │ │ │ │ +17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ │ │ │ │ │ +18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ │ │ │ │ │ +19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ │ │ │ │ │ +20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ │ │ │ │ │ +21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ │ │ │ │ │ +22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ │ │ │ │ │ +23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ │ │ │ │ │ +24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ │ │ │ │ │ +25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ │ │ │ │ │ +26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ │ │ │ │ │ +27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) │ │ │ │ │ +28/* The character set is not based on ISO-646. */ │ │ │ │ │ +29#error "gperf generated tables don't work with this execution character set. │ │ │ │ │ +Please report a bug to ." │ │ │ │ │ +30#endif │ │ │ │ │ +31 │ │ │ │ │ +32#line 3 "charset_lookup.gperf" │ │ │ │ │ +33 │ │ │ │ │ +34static const struct charset_alias *charset_lookup(register const char *str, │ │ │ │ │ +register size_t len); │ │ │ │ │ +35#line 2 "charset_lookup.gperf" │ │ │ │ │ +36struct charset_alias { short int alias_pos; short int canonic; }; │ │ │ │ │ +37/* maximum key range = 1038, duplicates = 0 */ │ │ │ │ │ +38 │ │ │ │ │ +39#ifdef __GNUC__ │ │ │ │ │ +40__inline │ │ │ │ │ +41#else │ │ │ │ │ +42#ifdef __cplusplus │ │ │ │ │ +43inline │ │ │ │ │ +44#endif │ │ │ │ │ +45#endif │ │ │ │ │ +46static unsigned int │ │ │ │ │ +47hash_charset (register const char *str, register size_t len) │ │ │ │ │ +48{ │ │ │ │ │ +49 static const unsigned short asso_values[] = │ │ │ │ │ +50 { │ │ │ │ │ +51 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +52 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +53 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +54 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +55 1070, 1070, 1070, 1070, 1070, 8, 113, 1070, 34, 7, │ │ │ │ │ +56 83, 104, 36, 9, 20, 85, 8, 10, 330, 1070, │ │ │ │ │ +57 1070, 1070, 1070, 1070, 1070, 50, 186, 97, 7, 84, │ │ │ │ │ +58 66, 32, 73, 7, 17, 186, 27, 183, 9, 7, │ │ │ │ │ +59 106, 1070, 51, 7, 11, 117, 229, 151, 339, 22, │ │ │ │ │ +60 10, 1070, 1070, 1070, 1070, 24, 1070, 13, 7, 179, │ │ │ │ │ +61 1070, 7, 9, 13, 27, 7, 1070, 7, 1070, 8, │ │ │ │ │ +62 7, 7, 1070, 1070, 8, 8, 7, 10, 1070, 1070, │ │ │ │ │ +63 1070, 12, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +64 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +65 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +66 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +67 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +68 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +69 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +70 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +71 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +72 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +73 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +74 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +75 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, │ │ │ │ │ +76 1070, 1070, 1070, 1070, 1070, 1070 │ │ │ │ │ +77 }; │ │ │ │ │ +78 register unsigned int hval = len; │ │ │ │ │ +79 │ │ │ │ │ +80 switch (hval) │ │ │ │ │ +81 { │ │ │ │ │ +82 default: │ │ │ │ │ +83 hval += asso_values[(unsigned char)str[10]]; │ │ │ │ │ +84 /*FALLTHROUGH*/ │ │ │ │ │ +85 case 10: │ │ │ │ │ +86 hval += asso_values[(unsigned char)str[9]]; │ │ │ │ │ +87 /*FALLTHROUGH*/ │ │ │ │ │ +88 case 9: │ │ │ │ │ +89 hval += asso_values[(unsigned char)str[8]]; │ │ │ │ │ +90 /*FALLTHROUGH*/ │ │ │ │ │ +91 case 8: │ │ │ │ │ +92 hval += asso_values[(unsigned char)str[7]]; │ │ │ │ │ +93 /*FALLTHROUGH*/ │ │ │ │ │ +94 case 7: │ │ │ │ │ +95 hval += asso_values[(unsigned char)str[6]]; │ │ │ │ │ +96 /*FALLTHROUGH*/ │ │ │ │ │ +97 case 6: │ │ │ │ │ +98 hval += asso_values[(unsigned char)str[5]]; │ │ │ │ │ +99 /*FALLTHROUGH*/ │ │ │ │ │ +100 case 5: │ │ │ │ │ +101 hval += asso_values[(unsigned char)str[4]]; │ │ │ │ │ +102 /*FALLTHROUGH*/ │ │ │ │ │ +103 case 4: │ │ │ │ │ +104 hval += asso_values[(unsigned char)str[3]]; │ │ │ │ │ +105 /*FALLTHROUGH*/ │ │ │ │ │ +106 case 3: │ │ │ │ │ +107 hval += asso_values[(unsigned char)str[2]]; │ │ │ │ │ +108 /*FALLTHROUGH*/ │ │ │ │ │ +109 case 2: │ │ │ │ │ +110 case 1: │ │ │ │ │ +111 hval += asso_values[(unsigned char)str[0]]; │ │ │ │ │ +112 break; │ │ │ │ │ +113 } │ │ │ │ │ +114 return hval + asso_values[(unsigned char)str[len - 1]]; │ │ │ │ │ +115} │ │ │ │ │ +116 │ │ │ │ │ +117struct stringpool_t │ │ │ │ │ +118 { │ │ │ │ │ +119 char stringpool_str32[sizeof("SJIS")]; │ │ │ │ │ +120 char stringpool_str34[sizeof("koi8")]; │ │ │ │ │ +121 char stringpool_str35[sizeof("sjis")]; │ │ │ │ │ +122 char stringpool_str36[sizeof("L1")]; │ │ │ │ │ +123 char stringpool_str37[sizeof("L8")]; │ │ │ │ │ +124 char stringpool_str38[sizeof("L5")]; │ │ │ │ │ +125 char stringpool_str39[sizeof("utf8")]; │ │ │ │ │ +126 char stringpool_str41[sizeof("iso81")]; │ │ │ │ │ +127 char stringpool_str42[sizeof("big5")]; │ │ │ │ │ +128 char stringpool_str43[sizeof("iso88")]; │ │ │ │ │ +129 char stringpool_str44[sizeof("iso15")]; │ │ │ │ │ +130 char stringpool_str45[sizeof("iso85")]; │ │ │ │ │ +131 char stringpool_str47[sizeof("iso89")]; │ │ │ │ │ +132 char stringpool_str48[sizeof("thai8")]; │ │ │ │ │ +133 char stringpool_str49[sizeof("L6")]; │ │ │ │ │ +134 char stringpool_str50[sizeof("roma8")]; │ │ │ │ │ +135 char stringpool_str51[sizeof("866")]; │ │ │ │ │ +136 char stringpool_str53[sizeof("iso815")]; │ │ │ │ │ +137 char stringpool_str56[sizeof("greek8")]; │ │ │ │ │ +138 char stringpool_str57[sizeof("iso_1")]; │ │ │ │ │ +139 char stringpool_str58[sizeof("roman8")]; │ │ │ │ │ +140 char stringpool_str61[sizeof("R8")]; │ │ │ │ │ +141 char stringpool_str63[sizeof("646")]; │ │ │ │ │ +142 char stringpool_str65[sizeof("L4")]; │ │ │ │ │ +143 char stringpool_str67[sizeof("iso86")]; │ │ │ │ │ +144 char stringpool_str71[sizeof("iso88591")]; │ │ │ │ │ +145 char stringpool_str73[sizeof("iso88598")]; │ │ │ │ │ +146 char stringpool_str74[sizeof("LATIN1")]; │ │ │ │ │ +147 char stringpool_str75[sizeof("iso88595")]; │ │ │ │ │ +148 char stringpool_str76[sizeof("LATIN8")]; │ │ │ │ │ +149 char stringpool_str77[sizeof("iso88599")]; │ │ │ │ │ +150 char stringpool_str78[sizeof("LATIN5")]; │ │ │ │ │ +151 char stringpool_str79[sizeof("850")]; │ │ │ │ │ +152 char stringpool_str80[sizeof("ISO8859-1")]; │ │ │ │ │ +153 char stringpool_str82[sizeof("ISO8859-8")]; │ │ │ │ │ +154 char stringpool_str83[sizeof("iso885915")]; │ │ │ │ │ +155 char stringpool_str84[sizeof("ISO8859-5")]; │ │ │ │ │ +156 char stringpool_str85[sizeof("HZ")]; │ │ │ │ │ +157 char stringpool_str86[sizeof("ISO8859-9")]; │ │ │ │ │ +158 char stringpool_str89[sizeof("ISO-8859-1")]; │ │ │ │ │ +159 char stringpool_str91[sizeof("ISO-8859-8")]; │ │ │ │ │ +160 char stringpool_str92[sizeof("ISO8859-15")]; │ │ │ │ │ +161 char stringpool_str93[sizeof("ISO-8859-5")]; │ │ │ │ │ +162 char stringpool_str94[sizeof("iso10")]; │ │ │ │ │ +163 char stringpool_str95[sizeof("ISO-8859-9")]; │ │ │ │ │ +164 char stringpool_str97[sizeof("iso88596")]; │ │ │ │ │ +165 char stringpool_str98[sizeof("iso14")]; │ │ │ │ │ +166 char stringpool_str99[sizeof("iso84")]; │ │ │ │ │ +167 char stringpool_str100[sizeof("LATIN6")]; │ │ │ │ │ +168 char stringpool_str101[sizeof("ISO-8859-15")]; │ │ │ │ │ +169 char stringpool_str105[sizeof("ISO_8859-1")]; │ │ │ │ │ +170 char stringpool_str106[sizeof("ISO8859-6")]; │ │ │ │ │ +171 char stringpool_str107[sizeof("ISO_8859-8")]; │ │ │ │ │ +172 char stringpool_str108[sizeof("CN")]; │ │ │ │ │ +173 char stringpool_str109[sizeof("ISO_8859-5")]; │ │ │ │ │ +174 char stringpool_str111[sizeof("ISO_8859-9")]; │ │ │ │ │ +175 char stringpool_str112[sizeof("L2")]; │ │ │ │ │ +176 char stringpool_str114[sizeof("L7")]; │ │ │ │ │ +177 char stringpool_str115[sizeof("ISO-8859-6")]; │ │ │ │ │ +178 char stringpool_str116[sizeof("iso646")]; │ │ │ │ │ +179 char stringpool_str117[sizeof("ISO_8859-15")]; │ │ │ │ │ +180 char stringpool_str120[sizeof("C99")]; │ │ │ │ │ +181 char stringpool_str121[sizeof("ISO_8859-15:1998")]; │ │ │ │ │ +182 char stringpool_str122[sizeof("ISO-IR-58")]; │ │ │ │ │ +183 char stringpool_str123[sizeof("ISO-8859-16")]; │ │ │ │ │ +184 char stringpool_str125[sizeof("JP")]; │ │ │ │ │ +185 char stringpool_str126[sizeof("US")]; │ │ │ │ │ +186 char stringpool_str129[sizeof("iso88594")]; │ │ │ │ │ +187 char stringpool_str131[sizeof("ISO_8859-6")]; │ │ │ │ │ +188 char stringpool_str132[sizeof("LATIN4")]; │ │ │ │ │ +189 char stringpool_str133[sizeof("L3")]; │ │ │ │ │ +190 char stringpool_str134[sizeof("ISO-IR-159")]; │ │ │ │ │ +191 char stringpool_str135[sizeof("ISO-IR-199")]; │ │ │ │ │ +192 char stringpool_str136[sizeof("ISO-IR-6")]; │ │ │ │ │ +193 char stringpool_str137[sizeof("CP819")]; │ │ │ │ │ +194 char stringpool_str138[sizeof("ISO8859-4")]; │ │ │ │ │ +195 char stringpool_str139[sizeof("ISO_8859-16")]; │ │ │ │ │ +196 char stringpool_str142[sizeof("ISO8859-10")]; │ │ │ │ │ +197 char stringpool_str143[sizeof("ISO-IR-165")]; │ │ │ │ │ +198 char stringpool_str146[sizeof("SHIFT-JIS")]; │ │ │ │ │ +199 char stringpool_str147[sizeof("ISO-8859-4")]; │ │ │ │ │ +200 char stringpool_str148[sizeof("ISO_8859-14:1998")]; │ │ │ │ │ +201 char stringpool_str151[sizeof("ISO-8859-10")]; │ │ │ │ │ +202 char stringpool_str153[sizeof("ISO-IR-101")]; │ │ │ │ │ +203 char stringpool_str155[sizeof("ISO-8859-14")]; │ │ │ │ │ +204 char stringpool_str157[sizeof("ISO-IR-148")]; │ │ │ │ │ +205 char stringpool_str158[sizeof("ISO_8859-16:2000")]; │ │ │ │ │ +206 char stringpool_str159[sizeof("ISO-IR-109")]; │ │ │ │ │ +207 char stringpool_str161[sizeof("ISO-IR-149")]; │ │ │ │ │ +208 char stringpool_str162[sizeof("SHIFT_JIS")]; │ │ │ │ │ +209 char stringpool_str163[sizeof("ISO_8859-4")]; │ │ │ │ │ +210 char stringpool_str164[sizeof("hp15CN")]; │ │ │ │ │ +211 char stringpool_str165[sizeof("ISO-IR-166")]; │ │ │ │ │ +212 char stringpool_str167[sizeof("ISO_8859-10")]; │ │ │ │ │ +213 char stringpool_str168[sizeof("CP949")]; │ │ │ │ │ +214 char stringpool_str170[sizeof("CP866")]; │ │ │ │ │ +215 char stringpool_str171[sizeof("ISO_8859-14")]; │ │ │ │ │ +216 char stringpool_str173[sizeof("ASCII")]; │ │ │ │ │ +217 char stringpool_str176[sizeof("ISO-IR-14")]; │ │ │ │ │ +218 char stringpool_str177[sizeof("862")]; │ │ │ │ │ +219 char stringpool_str180[sizeof("ISO-IR-110")]; │ │ │ │ │ +220 char stringpool_str183[sizeof("GB_1988-80")]; │ │ │ │ │ +221 char stringpool_str187[sizeof("CP850")]; │ │ │ │ │ +222 char stringpool_str189[sizeof("CP950")]; │ │ │ │ │ +223 char stringpool_str192[sizeof("tis620")]; │ │ │ │ │ +224 char stringpool_str193[sizeof("iso82")]; │ │ │ │ │ +225 char stringpool_str195[sizeof("TIS620")]; │ │ │ │ │ +226 char stringpool_str197[sizeof("iso87")]; │ │ │ │ │ +227 char stringpool_str198[sizeof("JIS0208")]; │ │ │ │ │ +228 char stringpool_str203[sizeof("UTF8")]; │ │ │ │ │ +229 char stringpool_str204[sizeof("TIS-620")]; │ │ │ │ │ +230 char stringpool_str207[sizeof("ISO-IR-100")]; │ │ │ │ │ +231 char stringpool_str210[sizeof("ISO-IR-179")]; │ │ │ │ │ +232 char stringpool_str212[sizeof("UTF-8")]; │ │ │ │ │ +233 char stringpool_str213[sizeof("ISO-IR-144")]; │ │ │ │ │ +234 char stringpool_str215[sizeof("CP65001")]; │ │ │ │ │ +235 char stringpool_str216[sizeof("CP1251")]; │ │ │ │ │ +236 char stringpool_str218[sizeof("CP1258")]; │ │ │ │ │ +237 char stringpool_str220[sizeof("CP1255")]; │ │ │ │ │ +238 char stringpool_str221[sizeof("ISO_8859-10:1992")]; │ │ │ │ │ +239 char stringpool_str222[sizeof("ISO646-CN")]; │ │ │ │ │ +240 char stringpool_str223[sizeof("iso88592")]; │ │ │ │ │ +241 char stringpool_str225[sizeof("ISO-IR-138")]; │ │ │ │ │ +242 char stringpool_str226[sizeof("LATIN2")]; │ │ │ │ │ +243 char stringpool_str227[sizeof("iso88597")]; │ │ │ │ │ +244 char stringpool_str228[sizeof("ISO-IR-126")]; │ │ │ │ │ +245 char stringpool_str229[sizeof("CSISO159JISX02121990")]; │ │ │ │ │ +246 char stringpool_str230[sizeof("LATIN7")]; │ │ │ │ │ +247 char stringpool_str231[sizeof("IBM819")]; │ │ │ │ │ +248 char stringpool_str232[sizeof("ISO8859-2")]; │ │ │ │ │ +249 char stringpool_str233[sizeof("macturk")]; │ │ │ │ │ +250 char stringpool_str234[sizeof("iso13")]; │ │ │ │ │ +251 char stringpool_str235[sizeof("iso83")]; │ │ │ │ │ +252 char stringpool_str236[sizeof("ISO8859-7")]; │ │ │ │ │ +253 char stringpool_str237[sizeof("KOI8-T")]; │ │ │ │ │ +254 char stringpool_str238[sizeof("ISO646-US")]; │ │ │ │ │ +255 char stringpool_str239[sizeof("TIS620-0")]; │ │ │ │ │ +256 char stringpool_str240[sizeof("BIG5")]; │ │ │ │ │ +257 char stringpool_str241[sizeof("ISO-8859-2")]; │ │ │ │ │ +258 char stringpool_str242[sizeof("CP1256")]; │ │ │ │ │ +259 char stringpool_str243[sizeof("ELOT_928")]; │ │ │ │ │ +260 char stringpool_str244[sizeof("macgreek")]; │ │ │ │ │ +261 char stringpool_str245[sizeof("ISO-8859-7")]; │ │ │ │ │ +262 char stringpool_str247[sizeof("CSISOLATIN1")]; │ │ │ │ │ +263 char stringpool_str248[sizeof("CP1361")]; │ │ │ │ │ +264 char stringpool_str249[sizeof("BIG-5")]; │ │ │ │ │ +265 char stringpool_str250[sizeof("cp949")]; │ │ │ │ │ +266 char stringpool_str251[sizeof("CSISOLATIN5")]; │ │ │ │ │ +267 char stringpool_str252[sizeof("cp866")]; │ │ │ │ │ +268 char stringpool_str253[sizeof("ascii_8")]; │ │ │ │ │ +269 char stringpool_str255[sizeof("macthai")]; │ │ │ │ │ +270 char stringpool_str256[sizeof("CP936")]; │ │ │ │ │ +271 char stringpool_str257[sizeof("ISO_8859-2")]; │ │ │ │ │ +272 char stringpool_str260[sizeof("GB18030")]; │ │ │ │ │ +273 char stringpool_str261[sizeof("ISO_8859-7")]; │ │ │ │ │ +274 char stringpool_str262[sizeof("TCVN")]; │ │ │ │ │ +275 char stringpool_str264[sizeof("IBM866")]; │ │ │ │ │ +276 char stringpool_str265[sizeof("iso88593")]; │ │ │ │ │ +277 char stringpool_str267[sizeof("CP874")]; │ │ │ │ │ +278 char stringpool_str268[sizeof("LATIN3")]; │ │ │ │ │ +279 char stringpool_str269[sizeof("cp850")]; │ │ │ │ │ +280 char stringpool_str270[sizeof("CP1250")]; │ │ │ │ │ +281 char stringpool_str271[sizeof("cp950")]; │ │ │ │ │ +282 char stringpool_str273[sizeof("CSISOLATIN6")]; │ │ │ │ │ +283 char stringpool_str274[sizeof("CP1254")]; │ │ │ │ │ +284 char stringpool_str275[sizeof("ISO-IR-87")]; │ │ │ │ │ +285 char stringpool_str276[sizeof("ISO-IR-57")]; │ │ │ │ │ +286 char stringpool_str278[sizeof("MS-ANSI")]; │ │ │ │ │ +287 char stringpool_str279[sizeof("CSASCII")]; │ │ │ │ │ +288 char stringpool_str281[sizeof("IBM850")]; │ │ │ │ │ +289 char stringpool_str283[sizeof("ISO-8859-3")]; │ │ │ │ │ +290 char stringpool_str284[sizeof("ISO-IR-157")]; │ │ │ │ │ +291 char stringpool_str291[sizeof("ISO-8859-13")]; │ │ │ │ │ +292 char stringpool_str296[sizeof("CP862")]; │ │ │ │ │ +293 char stringpool_str298[sizeof("cp1251")]; │ │ │ │ │ +294 char stringpool_str299[sizeof("ISO_8859-3")]; │ │ │ │ │ +295 char stringpool_str300[sizeof("cp1258")]; │ │ │ │ │ +296 char stringpool_str301[sizeof("EUCCN")]; │ │ │ │ │ +297 char stringpool_str302[sizeof("cp1255")]; │ │ │ │ │ +298 char stringpool_str304[sizeof("ISO-IR-226")]; │ │ │ │ │ +299 char stringpool_str305[sizeof("CSISOLATIN4")]; │ │ │ │ │ +300 char stringpool_str307[sizeof("ISO_8859-13")]; │ │ │ │ │ +301 char stringpool_str308[sizeof("US-ASCII")]; │ │ │ │ │ +302 char stringpool_str309[sizeof("CSSHIFTJIS")]; │ │ │ │ │ +303 char stringpool_str310[sizeof("EUC-CN")]; │ │ │ │ │ +304 char stringpool_str313[sizeof("CSISO14JISC6220RO")]; │ │ │ │ │ +305 char stringpool_str314[sizeof("UHC")]; │ │ │ │ │ +306 char stringpool_str315[sizeof("ROMAN8")]; │ │ │ │ │ +307 char stringpool_str317[sizeof("KOI8-R")]; │ │ │ │ │ +308 char stringpool_str324[sizeof("cp1256")]; │ │ │ │ │ +309 char stringpool_str327[sizeof("GEORGIAN-PS")]; │ │ │ │ │ +310 char stringpool_str336[sizeof("ISO646-JP")]; │ │ │ │ │ +311 char stringpool_str338[sizeof("cp936")]; │ │ │ │ │ +312 char stringpool_str346[sizeof("CSBIG5")]; │ │ │ │ │ +313 char stringpool_str349[sizeof("cp874")]; │ │ │ │ │ +314 char stringpool_str350[sizeof("JAVA")]; │ │ │ │ │ +315 char stringpool_str352[sizeof("cp1250")]; │ │ │ │ │ +316 char stringpool_str355[sizeof("CN-BIG5")]; │ │ │ │ │ +317 char stringpool_str356[sizeof("cp1254")]; │ │ │ │ │ +318 char stringpool_str357[sizeof("UTF7")]; │ │ │ │ │ +319 char stringpool_str358[sizeof("ISO-IR-127")]; │ │ │ │ │ +320 char stringpool_str360[sizeof("VISCII")]; │ │ │ │ │ +321 char stringpool_str363[sizeof("ECMA-118")]; │ │ │ │ │ +322 char stringpool_str366[sizeof("UTF-7")]; │ │ │ │ │ +323 char stringpool_str367[sizeof("UNICODE-1-1")]; │ │ │ │ │ +324 char stringpool_str368[sizeof("CP1252")]; │ │ │ │ │ +325 char stringpool_str369[sizeof("mac")]; │ │ │ │ │ +326 char stringpool_str370[sizeof("UCS-4LE")]; │ │ │ │ │ +327 char stringpool_str372[sizeof("CP1257")]; │ │ │ │ │ +328 char stringpool_str378[sizeof("cp862")]; │ │ │ │ │ +329 char stringpool_str379[sizeof("CHINESE")]; │ │ │ │ │ +330 char stringpool_str380[sizeof("MAC")]; │ │ │ │ │ +331 char stringpool_str381[sizeof("GEORGIAN-ACADEMY")]; │ │ │ │ │ +332 char stringpool_str382[sizeof("CP932")]; │ │ │ │ │ +333 char stringpool_str384[sizeof("ARMSCII-8")]; │ │ │ │ │ +334 char stringpool_str385[sizeof("CSISOLATINARABIC")]; │ │ │ │ │ +335 char stringpool_str390[sizeof("IBM862")]; │ │ │ │ │ +336 char stringpool_str391[sizeof("ASMO-708")]; │ │ │ │ │ +337 char stringpool_str392[sizeof("KSC_5601")]; │ │ │ │ │ +338 char stringpool_str395[sizeof("KOREAN")]; │ │ │ │ │ +339 char stringpool_str396[sizeof("CP367")]; │ │ │ │ │ +340 char stringpool_str398[sizeof("GB2312")]; │ │ │ │ │ +341 char stringpool_str399[sizeof("CSISOLATIN2")]; │ │ │ │ │ +342 char stringpool_str404[sizeof("JIS_C6220-1969-RO")]; │ │ │ │ │ +343 char stringpool_str406[sizeof("HP-ROMAN8")]; │ │ │ │ │ +344 char stringpool_str407[sizeof("GBK")]; │ │ │ │ │ +345 char stringpool_str408[sizeof("GREEK8")]; │ │ │ │ │ +346 char stringpool_str409[sizeof("MULELAO-1")]; │ │ │ │ │ +347 char stringpool_str410[sizeof("CP1253")]; │ │ │ │ │ +348 char stringpool_str412[sizeof("CP437")]; │ │ │ │ │ +349 char stringpool_str414[sizeof("CSKOI8R")]; │ │ │ │ │ +350 char stringpool_str415[sizeof("EUCJP")]; │ │ │ │ │ +351 char stringpool_str417[sizeof("UCS-2LE")]; │ │ │ │ │ +352 char stringpool_str418[sizeof("CYRILLIC")]; │ │ │ │ │ +353 char stringpool_str419[sizeof("ECMA-114")]; │ │ │ │ │ +354 char stringpool_str420[sizeof("eucJP")]; │ │ │ │ │ +355 char stringpool_str421[sizeof("UTF-16LE")]; │ │ │ │ │ +356 char stringpool_str422[sizeof("MS-CYRL")]; │ │ │ │ │ +357 char stringpool_str423[sizeof("ISO-IR-203")]; │ │ │ │ │ +358 char stringpool_str424[sizeof("EUC-JP")]; │ │ │ │ │ +359 char stringpool_str425[sizeof("mac_cyr")]; │ │ │ │ │ +360 char stringpool_str427[sizeof("GB_2312-80")]; │ │ │ │ │ +361 char stringpool_str429[sizeof("CP1133")]; │ │ │ │ │ +362 char stringpool_str433[sizeof("CN-GB-ISOIR165")]; │ │ │ │ │ +363 char stringpool_str434[sizeof("CSISOLATINCYRILLIC")]; │ │ │ │ │ +364 char stringpool_str435[sizeof("MACTHAI")]; │ │ │ │ │ +365 char stringpool_str439[sizeof("ISO-2022-CN")]; │ │ │ │ │ +366 char stringpool_str440[sizeof("KS_C_5601-1989")]; │ │ │ │ │ +367 char stringpool_str441[sizeof("CSISOLATIN3")]; │ │ │ │ │ +368 char stringpool_str442[sizeof("ISO_8859-8:1988")]; │ │ │ │ │ +369 char stringpool_str443[sizeof("ISO_8859-5:1988")]; │ │ │ │ │ +370 char stringpool_str445[sizeof("ISO-2022-CN-EXT")]; │ │ │ │ │ +371 char stringpool_str446[sizeof("ISO_8859-9:1989")]; │ │ │ │ │ +372 char stringpool_str448[sizeof("MS-EE")]; │ │ │ │ │ +373 char stringpool_str449[sizeof("KOI8-U")]; │ │ │ │ │ +374 char stringpool_str450[sizeof("cp1252")]; │ │ │ │ │ +375 char stringpool_str451[sizeof("UNICODE-1-1-UTF-7")]; │ │ │ │ │ +376 char stringpool_str452[sizeof("ISO-CELTIC")]; │ │ │ │ │ +377 char stringpool_str454[sizeof("cp1257")]; │ │ │ │ │ +378 char stringpool_str455[sizeof("CSISOLATINGREEK")]; │ │ │ │ │ +379 char stringpool_str456[sizeof("ISO-2022-JP-1")]; │ │ │ │ │ +380 char stringpool_str457[sizeof("CSUNICODE11")]; │ │ │ │ │ +381 char stringpool_str458[sizeof("WINDOWS-1251")]; │ │ │ │ │ +382 char stringpool_str459[sizeof("WINDOWS-1258")]; │ │ │ │ │ +383 char stringpool_str460[sizeof("WINDOWS-1255")]; │ │ │ │ │ +384 char stringpool_str462[sizeof("CSISOLATINHEBREW")]; │ │ │ │ │ +385 char stringpool_str464[sizeof("cp932")]; │ │ │ │ │ +386 char stringpool_str465[sizeof("TCVN5712-1")]; │ │ │ │ │ +387 char stringpool_str466[sizeof("CSVISCII")]; │ │ │ │ │ +388 char stringpool_str468[sizeof("CSISO57GB1988")]; │ │ │ │ │ +389 char stringpool_str470[sizeof("ISO_8859-4:1988")]; │ │ │ │ │ +390 char stringpool_str471[sizeof("WINDOWS-1256")]; │ │ │ │ │ +391 char stringpool_str472[sizeof("UNICODELITTLE")]; │ │ │ │ │ +392 char stringpool_str473[sizeof("TIS620.2529-1")]; │ │ │ │ │ +393 char stringpool_str474[sizeof("EUCKR")]; │ │ │ │ │ +394 char stringpool_str475[sizeof("X0201")]; │ │ │ │ │ +395 char stringpool_str476[sizeof("MACINTOSH")]; │ │ │ │ │ +396 char stringpool_str477[sizeof("X0208")]; │ │ │ │ │ +397 char stringpool_str479[sizeof("eucKR")]; │ │ │ │ │ +398 char stringpool_str483[sizeof("EUC-KR")]; │ │ │ │ │ +399 char stringpool_str484[sizeof("JIS_C6226-1983")]; │ │ │ │ │ +400 char stringpool_str485[sizeof("WINDOWS-1250")]; │ │ │ │ │ +401 char stringpool_str487[sizeof("WINDOWS-1254")]; │ │ │ │ │ +402 char stringpool_str490[sizeof("IBM367")]; │ │ │ │ │ +403 char stringpool_str491[sizeof("MS_KANJI")]; │ │ │ │ │ +404 char stringpool_str492[sizeof("cp1253")]; │ │ │ │ │ +405 char stringpool_str493[sizeof("ARABIC")]; │ │ │ │ │ +406 char stringpool_str494[sizeof("cp437")]; │ │ │ │ │ +407 char stringpool_str499[sizeof("EUCTW")]; │ │ │ │ │ +408 char stringpool_str501[sizeof("KOI8-RU")]; │ │ │ │ │ +409 char stringpool_str504[sizeof("eucTW")]; │ │ │ │ │ +410 char stringpool_str506[sizeof("IBM437")]; │ │ │ │ │ +411 char stringpool_str507[sizeof("VISCII1.1-1")]; │ │ │ │ │ +412 char stringpool_str508[sizeof("EUC-TW")]; │ │ │ │ │ +413 char stringpool_str514[sizeof("CN-GB")]; │ │ │ │ │ +414 char stringpool_str515[sizeof("KS_C_5601-1987")]; │ │ │ │ │ +415 char stringpool_str516[sizeof("WINDOWS-874")]; │ │ │ │ │ +416 char stringpool_str517[sizeof("JOHAB")]; │ │ │ │ │ +417 char stringpool_str518[sizeof("ISO_8859-1:1987")]; │ │ │ │ │ +418 char stringpool_str527[sizeof("CSISO2022CN")]; │ │ │ │ │ +419 char stringpool_str529[sizeof("UCS-4BE")]; │ │ │ │ │ +420 char stringpool_str531[sizeof("ISO_8859-6:1987")]; │ │ │ │ │ +421 char stringpool_str532[sizeof("ISO-2022-JP-2")]; │ │ │ │ │ +422 char stringpool_str533[sizeof("TCVN-5712")]; │ │ │ │ │ +423 char stringpool_str534[sizeof("WINDOWS-1252")]; │ │ │ │ │ +424 char stringpool_str536[sizeof("WINDOWS-1257")]; │ │ │ │ │ +425 char stringpool_str537[sizeof("ISO_646.IRV:1991")]; │ │ │ │ │ +426 char stringpool_str538[sizeof("ISO_8859-3:1988")]; │ │ │ │ │ +427 char stringpool_str539[sizeof("CSUNICODE11UTF7")]; │ │ │ │ │ +428 char stringpool_str549[sizeof("CSIBM866")]; │ │ │ │ │ +429 char stringpool_str553[sizeof("ISO-2022-JP")]; │ │ │ │ │ +430 char stringpool_str555[sizeof("WINDOWS-1253")]; │ │ │ │ │ +431 char stringpool_str561[sizeof("JIS_X0201")]; │ │ │ │ │ +432 char stringpool_str563[sizeof("JIS_X0208")]; │ │ │ │ │ +433 char stringpool_str565[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_ │ │ │ │ │ +JAPANESE")]; │ │ │ │ │ +434 char stringpool_str572[sizeof("CSKSC56011987")]; │ │ │ │ │ +435 char stringpool_str576[sizeof("UCS-2BE")]; │ │ │ │ │ +436 char stringpool_str577[sizeof("GREEK")]; │ │ │ │ │ +437 char stringpool_str578[sizeof("MACICELAND")]; │ │ │ │ │ +438 char stringpool_str579[sizeof("JISX0201-1976")]; │ │ │ │ │ +439 char stringpool_str580[sizeof("UTF-16BE")]; │ │ │ │ │ +440 char stringpool_str581[sizeof("UTF-32LE")]; │ │ │ │ │ +441 char stringpool_str582[sizeof("MACCROATIAN")]; │ │ │ │ │ +442 char stringpool_str586[sizeof("UNICODEBIG")]; │ │ │ │ │ +443 char stringpool_str588[sizeof("TIS620.2533-1")]; │ │ │ │ │ +444 char stringpool_str589[sizeof("CSISO58GB231280")]; │ │ │ │ │ +445 char stringpool_str594[sizeof("ISO_8859-2:1987")]; │ │ │ │ │ +446 char stringpool_str596[sizeof("ISO_8859-7:1987")]; │ │ │ │ │ +447 char stringpool_str597[sizeof("MACROMAN")]; │ │ │ │ │ +448 char stringpool_str600[sizeof("X0212")]; │ │ │ │ │ +449 char stringpool_str602[sizeof("CSHPROMAN8")]; │ │ │ │ │ +450 char stringpool_str604[sizeof("CSISO87JISX0208")]; │ │ │ │ │ +451 char stringpool_str609[sizeof("JIS_X0208-1990")]; │ │ │ │ │ +452 char stringpool_str612[sizeof("ISO-2022-KR")]; │ │ │ │ │ +453 char stringpool_str613[sizeof("BIG5HKSCS")]; │ │ │ │ │ +454 char stringpool_str615[sizeof("TIS620.2533-0")]; │ │ │ │ │ +455 char stringpool_str619[sizeof("CSISO2022JP2")]; │ │ │ │ │ +456 char stringpool_str622[sizeof("BIG5-HKSCS")]; │ │ │ │ │ +457 char stringpool_str625[sizeof("CSMACINTOSH")]; │ │ │ │ │ +458 char stringpool_str631[sizeof("CSHALFWIDTHKATAKANA")]; │ │ │ │ │ +459 char stringpool_str641[sizeof("CSISO2022JP")]; │ │ │ │ │ +460 char stringpool_str643[sizeof("MS-HEBR")]; │ │ │ │ │ +461 char stringpool_str657[sizeof("JIS_X0212-1990")]; │ │ │ │ │ +462 char stringpool_str675[sizeof("CSPC862LATINHEBREW")]; │ │ │ │ │ +463 char stringpool_str677[sizeof("HZ-GB-2312")]; │ │ │ │ │ +464 char stringpool_str679[sizeof("JIS_X0208-1983")]; │ │ │ │ │ +465 char stringpool_str681[sizeof("NEXTSTEP")]; │ │ │ │ │ +466 char stringpool_str683[sizeof("CSGB2312")]; │ │ │ │ │ +467 char stringpool_str686[sizeof("JIS_X0212")]; │ │ │ │ │ +468 char stringpool_str690[sizeof("CSEUCKR")]; │ │ │ │ │ +469 char stringpool_str695[sizeof("BIGFIVE")]; │ │ │ │ │ +470 char stringpool_str697[sizeof("MACROMANIA")]; │ │ │ │ │ +471 char stringpool_str700[sizeof("CSISO2022KR")]; │ │ │ │ │ +472 char stringpool_str702[sizeof("HEBREW")]; │ │ │ │ │ +473 char stringpool_str704[sizeof("BIG-FIVE")]; │ │ │ │ │ +474 char stringpool_str715[sizeof("CSEUCTW")]; │ │ │ │ │ +475 char stringpool_str717[sizeof("ANSI_X3.4-1968")]; │ │ │ │ │ +476 char stringpool_str721[sizeof("MS-ARAB")]; │ │ │ │ │ +477 char stringpool_str723[sizeof("MACCYRILLIC")]; │ │ │ │ │ +478 char stringpool_str729[sizeof("ANSI_X3.4-1986")]; │ │ │ │ │ +479 char stringpool_str735[sizeof("CSPC850MULTILINGUAL")]; │ │ │ │ │ +480 char stringpool_str737[sizeof("IBM-CP1133")]; │ │ │ │ │ +481 char stringpool_str740[sizeof("UTF-32BE")]; │ │ │ │ │ +482 char stringpool_str749[sizeof("MS-TURK")]; │ │ │ │ │ +483 char stringpool_str764[sizeof("JIS_X0212.1990-0")]; │ │ │ │ │ +484 char stringpool_str793[sizeof("MACCENTRALEUROPE")]; │ │ │ │ │ +485 char stringpool_str815[sizeof("MACTURKISH")]; │ │ │ │ │ +486 char stringpool_str822[sizeof("MS-GREEK")]; │ │ │ │ │ +487 char stringpool_str827[sizeof("MACARABIC")]; │ │ │ │ │ +488 char stringpool_str868[sizeof("WINBALTRIM")]; │ │ │ │ │ +489 char stringpool_str878[sizeof("MACUKRAINE")]; │ │ │ │ │ +490 char stringpool_str897[sizeof("TCVN5712-1:1993")]; │ │ │ │ │ +491 char stringpool_str911[sizeof("MACGREEK")]; │ │ │ │ │ +492 char stringpool_str1057[sizeof("CSEUCPKDFMTJAPANESE")]; │ │ │ │ │ +493 char stringpool_str1069[sizeof("MACHEBREW")]; │ │ │ │ │ +494 }; │ │ │ │ │ +495static const struct stringpool_t stringpool_contents = │ │ │ │ │ +496 { │ │ │ │ │ +497 "SJIS", │ │ │ │ │ +498 "koi8", │ │ │ │ │ +499 "sjis", │ │ │ │ │ +500 "L1", │ │ │ │ │ +501 "L8", │ │ │ │ │ +502 "L5", │ │ │ │ │ +503 "utf8", │ │ │ │ │ +504 "iso81", │ │ │ │ │ +505 "big5", │ │ │ │ │ +506 "iso88", │ │ │ │ │ +507 "iso15", │ │ │ │ │ +508 "iso85", │ │ │ │ │ +509 "iso89", │ │ │ │ │ +510 "thai8", │ │ │ │ │ +511 "L6", │ │ │ │ │ +512 "roma8", │ │ │ │ │ +513 "866", │ │ │ │ │ +514 "iso815", │ │ │ │ │ +515 "greek8", │ │ │ │ │ +516 "iso_1", │ │ │ │ │ +517 "roman8", │ │ │ │ │ +518 "R8", │ │ │ │ │ +519 "646", │ │ │ │ │ +520 "L4", │ │ │ │ │ +521 "iso86", │ │ │ │ │ +522 "iso88591", │ │ │ │ │ +523 "iso88598", │ │ │ │ │ +524 "LATIN1", │ │ │ │ │ +525 "iso88595", │ │ │ │ │ +526 "LATIN8", │ │ │ │ │ +527 "iso88599", │ │ │ │ │ +528 "LATIN5", │ │ │ │ │ +529 "850", │ │ │ │ │ +530 "ISO8859-1", │ │ │ │ │ +531 "ISO8859-8", │ │ │ │ │ +532 "iso885915", │ │ │ │ │ +533 "ISO8859-5", │ │ │ │ │ +534 "HZ", │ │ │ │ │ +535 "ISO8859-9", │ │ │ │ │ +536 "ISO-8859-1", │ │ │ │ │ +537 "ISO-8859-8", │ │ │ │ │ +538 "ISO8859-15", │ │ │ │ │ +539 "ISO-8859-5", │ │ │ │ │ +540 "iso10", │ │ │ │ │ +541 "ISO-8859-9", │ │ │ │ │ +542 "iso88596", │ │ │ │ │ +543 "iso14", │ │ │ │ │ +544 "iso84", │ │ │ │ │ +545 "LATIN6", │ │ │ │ │ +546 "ISO-8859-15", │ │ │ │ │ +547 "ISO_8859-1", │ │ │ │ │ +548 "ISO8859-6", │ │ │ │ │ +549 "ISO_8859-8", │ │ │ │ │ +550 "CN", │ │ │ │ │ +551 "ISO_8859-5", │ │ │ │ │ +552 "ISO_8859-9", │ │ │ │ │ +553 "L2", │ │ │ │ │ +554 "L7", │ │ │ │ │ +555 "ISO-8859-6", │ │ │ │ │ +556 "iso646", │ │ │ │ │ +557 "ISO_8859-15", │ │ │ │ │ +558 "C99", │ │ │ │ │ +559 "ISO_8859-15:1998", │ │ │ │ │ +560 "ISO-IR-58", │ │ │ │ │ +561 "ISO-8859-16", │ │ │ │ │ +562 "JP", │ │ │ │ │ +563 "US", │ │ │ │ │ +564 "iso88594", │ │ │ │ │ +565 "ISO_8859-6", │ │ │ │ │ +566 "LATIN4", │ │ │ │ │ +567 "L3", │ │ │ │ │ +568 "ISO-IR-159", │ │ │ │ │ +569 "ISO-IR-199", │ │ │ │ │ +570 "ISO-IR-6", │ │ │ │ │ +571 "CP819", │ │ │ │ │ +572 "ISO8859-4", │ │ │ │ │ +573 "ISO_8859-16", │ │ │ │ │ +574 "ISO8859-10", │ │ │ │ │ +575 "ISO-IR-165", │ │ │ │ │ +576 "SHIFT-JIS", │ │ │ │ │ +577 "ISO-8859-4", │ │ │ │ │ +578 "ISO_8859-14:1998", │ │ │ │ │ +579 "ISO-8859-10", │ │ │ │ │ +580 "ISO-IR-101", │ │ │ │ │ +581 "ISO-8859-14", │ │ │ │ │ +582 "ISO-IR-148", │ │ │ │ │ +583 "ISO_8859-16:2000", │ │ │ │ │ +584 "ISO-IR-109", │ │ │ │ │ +585 "ISO-IR-149", │ │ │ │ │ +586 "SHIFT_JIS", │ │ │ │ │ +587 "ISO_8859-4", │ │ │ │ │ +588 "hp15CN", │ │ │ │ │ +589 "ISO-IR-166", │ │ │ │ │ +590 "ISO_8859-10", │ │ │ │ │ +591 "CP949", │ │ │ │ │ +592 "CP866", │ │ │ │ │ +593 "ISO_8859-14", │ │ │ │ │ +594 "ASCII", │ │ │ │ │ +595 "ISO-IR-14", │ │ │ │ │ +596 "862", │ │ │ │ │ +597 "ISO-IR-110", │ │ │ │ │ +598 "GB_1988-80", │ │ │ │ │ +599 "CP850", │ │ │ │ │ +600 "CP950", │ │ │ │ │ +601 "tis620", │ │ │ │ │ +602 "iso82", │ │ │ │ │ +603 "TIS620", │ │ │ │ │ +604 "iso87", │ │ │ │ │ +605 "JIS0208", │ │ │ │ │ +606 "UTF8", │ │ │ │ │ +607 "TIS-620", │ │ │ │ │ +608 "ISO-IR-100", │ │ │ │ │ +609 "ISO-IR-179", │ │ │ │ │ +610 "UTF-8", │ │ │ │ │ +611 "ISO-IR-144", │ │ │ │ │ +612 "CP65001", │ │ │ │ │ +613 "CP1251", │ │ │ │ │ +614 "CP1258", │ │ │ │ │ +615 "CP1255", │ │ │ │ │ +616 "ISO_8859-10:1992", │ │ │ │ │ +617 "ISO646-CN", │ │ │ │ │ +618 "iso88592", │ │ │ │ │ +619 "ISO-IR-138", │ │ │ │ │ +620 "LATIN2", │ │ │ │ │ +621 "iso88597", │ │ │ │ │ +622 "ISO-IR-126", │ │ │ │ │ +623 "CSISO159JISX02121990", │ │ │ │ │ +624 "LATIN7", │ │ │ │ │ +625 "IBM819", │ │ │ │ │ +626 "ISO8859-2", │ │ │ │ │ +627 "macturk", │ │ │ │ │ +628 "iso13", │ │ │ │ │ +629 "iso83", │ │ │ │ │ +630 "ISO8859-7", │ │ │ │ │ +631 "KOI8-T", │ │ │ │ │ +632 "ISO646-US", │ │ │ │ │ +633 "TIS620-0", │ │ │ │ │ +634 "BIG5", │ │ │ │ │ +635 "ISO-8859-2", │ │ │ │ │ +636 "CP1256", │ │ │ │ │ +637 "ELOT_928", │ │ │ │ │ +638 "macgreek", │ │ │ │ │ +639 "ISO-8859-7", │ │ │ │ │ +640 "CSISOLATIN1", │ │ │ │ │ +641 "CP1361", │ │ │ │ │ +642 "BIG-5", │ │ │ │ │ +643 "cp949", │ │ │ │ │ +644 "CSISOLATIN5", │ │ │ │ │ +645 "cp866", │ │ │ │ │ +646 "ascii_8", │ │ │ │ │ +647 "macthai", │ │ │ │ │ +648 "CP936", │ │ │ │ │ +649 "ISO_8859-2", │ │ │ │ │ +650 "GB18030", │ │ │ │ │ +651 "ISO_8859-7", │ │ │ │ │ +652 "TCVN", │ │ │ │ │ +653 "IBM866", │ │ │ │ │ +654 "iso88593", │ │ │ │ │ +655 "CP874", │ │ │ │ │ +656 "LATIN3", │ │ │ │ │ +657 "cp850", │ │ │ │ │ +658 "CP1250", │ │ │ │ │ +659 "cp950", │ │ │ │ │ +660 "CSISOLATIN6", │ │ │ │ │ +661 "CP1254", │ │ │ │ │ +662 "ISO-IR-87", │ │ │ │ │ +663 "ISO-IR-57", │ │ │ │ │ +664 "MS-ANSI", │ │ │ │ │ +665 "CSASCII", │ │ │ │ │ +666 "IBM850", │ │ │ │ │ +667 "ISO-8859-3", │ │ │ │ │ +668 "ISO-IR-157", │ │ │ │ │ +669 "ISO-8859-13", │ │ │ │ │ +670 "CP862", │ │ │ │ │ +671 "cp1251", │ │ │ │ │ +672 "ISO_8859-3", │ │ │ │ │ +673 "cp1258", │ │ │ │ │ +674 "EUCCN", │ │ │ │ │ +675 "cp1255", │ │ │ │ │ +676 "ISO-IR-226", │ │ │ │ │ +677 "CSISOLATIN4", │ │ │ │ │ +678 "ISO_8859-13", │ │ │ │ │ +679 "US-ASCII", │ │ │ │ │ +680 "CSSHIFTJIS", │ │ │ │ │ +681 "EUC-CN", │ │ │ │ │ +682 "CSISO14JISC6220RO", │ │ │ │ │ +683 "UHC", │ │ │ │ │ +684 "ROMAN8", │ │ │ │ │ +685 "KOI8-R", │ │ │ │ │ +686 "cp1256", │ │ │ │ │ +687 "GEORGIAN-PS", │ │ │ │ │ +688 "ISO646-JP", │ │ │ │ │ +689 "cp936", │ │ │ │ │ +690 "CSBIG5", │ │ │ │ │ +691 "cp874", │ │ │ │ │ +692 "JAVA", │ │ │ │ │ +693 "cp1250", │ │ │ │ │ +694 "CN-BIG5", │ │ │ │ │ +695 "cp1254", │ │ │ │ │ +696 "UTF7", │ │ │ │ │ +697 "ISO-IR-127", │ │ │ │ │ +698 "VISCII", │ │ │ │ │ +699 "ECMA-118", │ │ │ │ │ +700 "UTF-7", │ │ │ │ │ +701 "UNICODE-1-1", │ │ │ │ │ +702 "CP1252", │ │ │ │ │ +703 "mac", │ │ │ │ │ +704 "UCS-4LE", │ │ │ │ │ +705 "CP1257", │ │ │ │ │ +706 "cp862", │ │ │ │ │ +707 "CHINESE", │ │ │ │ │ +708 "MAC", │ │ │ │ │ +709 "GEORGIAN-ACADEMY", │ │ │ │ │ +710 "CP932", │ │ │ │ │ +711 "ARMSCII-8", │ │ │ │ │ +712 "CSISOLATINARABIC", │ │ │ │ │ +713 "IBM862", │ │ │ │ │ +714 "ASMO-708", │ │ │ │ │ +715 "KSC_5601", │ │ │ │ │ +716 "KOREAN", │ │ │ │ │ +717 "CP367", │ │ │ │ │ +718 "GB2312", │ │ │ │ │ +719 "CSISOLATIN2", │ │ │ │ │ +720 "JIS_C6220-1969-RO", │ │ │ │ │ +721 "HP-ROMAN8", │ │ │ │ │ +722 "GBK", │ │ │ │ │ +723 "GREEK8", │ │ │ │ │ +724 "MULELAO-1", │ │ │ │ │ +725 "CP1253", │ │ │ │ │ +726 "CP437", │ │ │ │ │ +727 "CSKOI8R", │ │ │ │ │ +728 "EUCJP", │ │ │ │ │ +729 "UCS-2LE", │ │ │ │ │ +730 "CYRILLIC", │ │ │ │ │ +731 "ECMA-114", │ │ │ │ │ +732 "eucJP", │ │ │ │ │ +733 "UTF-16LE", │ │ │ │ │ +734 "MS-CYRL", │ │ │ │ │ +735 "ISO-IR-203", │ │ │ │ │ +736 "EUC-JP", │ │ │ │ │ +737 "mac_cyr", │ │ │ │ │ +738 "GB_2312-80", │ │ │ │ │ +739 "CP1133", │ │ │ │ │ +740 "CN-GB-ISOIR165", │ │ │ │ │ +741 "CSISOLATINCYRILLIC", │ │ │ │ │ +742 "MACTHAI", │ │ │ │ │ +743 "ISO-2022-CN", │ │ │ │ │ +744 "KS_C_5601-1989", │ │ │ │ │ +745 "CSISOLATIN3", │ │ │ │ │ +746 "ISO_8859-8:1988", │ │ │ │ │ +747 "ISO_8859-5:1988", │ │ │ │ │ +748 "ISO-2022-CN-EXT", │ │ │ │ │ +749 "ISO_8859-9:1989", │ │ │ │ │ +750 "MS-EE", │ │ │ │ │ +751 "KOI8-U", │ │ │ │ │ +752 "cp1252", │ │ │ │ │ +753 "UNICODE-1-1-UTF-7", │ │ │ │ │ +754 "ISO-CELTIC", │ │ │ │ │ +755 "cp1257", │ │ │ │ │ +756 "CSISOLATINGREEK", │ │ │ │ │ +757 "ISO-2022-JP-1", │ │ │ │ │ +758 "CSUNICODE11", │ │ │ │ │ +759 "WINDOWS-1251", │ │ │ │ │ +760 "WINDOWS-1258", │ │ │ │ │ +761 "WINDOWS-1255", │ │ │ │ │ +762 "CSISOLATINHEBREW", │ │ │ │ │ +763 "cp932", │ │ │ │ │ +764 "TCVN5712-1", │ │ │ │ │ +765 "CSVISCII", │ │ │ │ │ +766 "CSISO57GB1988", │ │ │ │ │ +767 "ISO_8859-4:1988", │ │ │ │ │ +768 "WINDOWS-1256", │ │ │ │ │ +769 "UNICODELITTLE", │ │ │ │ │ +770 "TIS620.2529-1", │ │ │ │ │ +771 "EUCKR", │ │ │ │ │ +772 "X0201", │ │ │ │ │ +773 "MACINTOSH", │ │ │ │ │ +774 "X0208", │ │ │ │ │ +775 "eucKR", │ │ │ │ │ +776 "EUC-KR", │ │ │ │ │ +777 "JIS_C6226-1983", │ │ │ │ │ +778 "WINDOWS-1250", │ │ │ │ │ +779 "WINDOWS-1254", │ │ │ │ │ +780 "IBM367", │ │ │ │ │ +781 "MS_KANJI", │ │ │ │ │ +782 "cp1253", │ │ │ │ │ +783 "ARABIC", │ │ │ │ │ +784 "cp437", │ │ │ │ │ +785 "EUCTW", │ │ │ │ │ +786 "KOI8-RU", │ │ │ │ │ +787 "eucTW", │ │ │ │ │ +788 "IBM437", │ │ │ │ │ +789 "VISCII1.1-1", │ │ │ │ │ +790 "EUC-TW", │ │ │ │ │ +791 "CN-GB", │ │ │ │ │ +792 "KS_C_5601-1987", │ │ │ │ │ +793 "WINDOWS-874", │ │ │ │ │ +794 "JOHAB", │ │ │ │ │ +795 "ISO_8859-1:1987", │ │ │ │ │ +796 "CSISO2022CN", │ │ │ │ │ +797 "UCS-4BE", │ │ │ │ │ +798 "ISO_8859-6:1987", │ │ │ │ │ +799 "ISO-2022-JP-2", │ │ │ │ │ +800 "TCVN-5712", │ │ │ │ │ +801 "WINDOWS-1252", │ │ │ │ │ +802 "WINDOWS-1257", │ │ │ │ │ +803 "ISO_646.IRV:1991", │ │ │ │ │ +804 "ISO_8859-3:1988", │ │ │ │ │ +805 "CSUNICODE11UTF7", │ │ │ │ │ +806 "CSIBM866", │ │ │ │ │ +807 "ISO-2022-JP", │ │ │ │ │ +808 "WINDOWS-1253", │ │ │ │ │ +809 "JIS_X0201", │ │ │ │ │ +810 "JIS_X0208", │ │ │ │ │ +811 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", │ │ │ │ │ +812 "CSKSC56011987", │ │ │ │ │ +813 "UCS-2BE", │ │ │ │ │ +814 "GREEK", │ │ │ │ │ +815 "MACICELAND", │ │ │ │ │ +816 "JISX0201-1976", │ │ │ │ │ +817 "UTF-16BE", │ │ │ │ │ +818 "UTF-32LE", │ │ │ │ │ +819 "MACCROATIAN", │ │ │ │ │ +820 "UNICODEBIG", │ │ │ │ │ +821 "TIS620.2533-1", │ │ │ │ │ +822 "CSISO58GB231280", │ │ │ │ │ +823 "ISO_8859-2:1987", │ │ │ │ │ +824 "ISO_8859-7:1987", │ │ │ │ │ +825 "MACROMAN", │ │ │ │ │ +826 "X0212", │ │ │ │ │ +827 "CSHPROMAN8", │ │ │ │ │ +828 "CSISO87JISX0208", │ │ │ │ │ +829 "JIS_X0208-1990", │ │ │ │ │ +830 "ISO-2022-KR", │ │ │ │ │ +831 "BIG5HKSCS", │ │ │ │ │ +832 "TIS620.2533-0", │ │ │ │ │ +833 "CSISO2022JP2", │ │ │ │ │ +834 "BIG5-HKSCS", │ │ │ │ │ +835 "CSMACINTOSH", │ │ │ │ │ +836 "CSHALFWIDTHKATAKANA", │ │ │ │ │ +837 "CSISO2022JP", │ │ │ │ │ +838 "MS-HEBR", │ │ │ │ │ +839 "JIS_X0212-1990", │ │ │ │ │ +840 "CSPC862LATINHEBREW", │ │ │ │ │ +841 "HZ-GB-2312", │ │ │ │ │ +842 "JIS_X0208-1983", │ │ │ │ │ +843 "NEXTSTEP", │ │ │ │ │ +844 "CSGB2312", │ │ │ │ │ +845 "JIS_X0212", │ │ │ │ │ +846 "CSEUCKR", │ │ │ │ │ +847 "BIGFIVE", │ │ │ │ │ +848 "MACROMANIA", │ │ │ │ │ +849 "CSISO2022KR", │ │ │ │ │ +850 "HEBREW", │ │ │ │ │ +851 "BIG-FIVE", │ │ │ │ │ +852 "CSEUCTW", │ │ │ │ │ +853 "ANSI_X3.4-1968", │ │ │ │ │ +854 "MS-ARAB", │ │ │ │ │ +855 "MACCYRILLIC", │ │ │ │ │ +856 "ANSI_X3.4-1986", │ │ │ │ │ +857 "CSPC850MULTILINGUAL", │ │ │ │ │ +858 "IBM-CP1133", │ │ │ │ │ +859 "UTF-32BE", │ │ │ │ │ +860 "MS-TURK", │ │ │ │ │ +861 "JIS_X0212.1990-0", │ │ │ │ │ +862 "MACCENTRALEUROPE", │ │ │ │ │ +863 "MACTURKISH", │ │ │ │ │ +864 "MS-GREEK", │ │ │ │ │ +865 "MACARABIC", │ │ │ │ │ +866 "WINBALTRIM", │ │ │ │ │ +867 "MACUKRAINE", │ │ │ │ │ +868 "TCVN5712-1:1993", │ │ │ │ │ +869 "MACGREEK", │ │ │ │ │ +870 "CSEUCPKDFMTJAPANESE", │ │ │ │ │ +871 "MACHEBREW" │ │ │ │ │ +872 }; │ │ │ │ │ +873#define stringpool ((const char *) &stringpool_contents) │ │ │ │ │ +874const struct charset_alias * │ │ │ │ │ +875charset_lookup (register const char *str, register size_t len) │ │ │ │ │ +876{ │ │ │ │ │ +877 enum │ │ │ │ │ +878 { │ │ │ │ │ +879 TOTAL_KEYWORDS = 375, │ │ │ │ │ +880 MIN_WORD_LENGTH = 2, │ │ │ │ │ +881 MAX_WORD_LENGTH = 45, │ │ │ │ │ +882 MIN_HASH_VALUE = 32, │ │ │ │ │ +883 MAX_HASH_VALUE = 1069 │ │ │ │ │ +884 }; │ │ │ │ │ +885 │ │ │ │ │ +886 static const struct charset_alias wordlist[] = │ │ │ │ │ +887 { │ │ │ │ │ +888 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +889 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +890 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +891 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +893 {-1,-1}, {-1,-1}, │ │ │ │ │ +894#line 273 "charset_lookup.gperf" │ │ │ │ │ +895 {(int)offsetof(struct stringpool_t, stringpool_str32), 90}, │ │ │ │ │ +896 {-1,-1}, │ │ │ │ │ +897#line 376 "charset_lookup.gperf" │ │ │ │ │ +898 {(int)offsetof(struct stringpool_t, stringpool_str34), 71}, │ │ │ │ │ +899#line 360 "charset_lookup.gperf" │ │ │ │ │ +900 {(int)offsetof(struct stringpool_t, stringpool_str35), 90}, │ │ │ │ │ +901#line 229 "charset_lookup.gperf" │ │ │ │ │ +902 {(int)offsetof(struct stringpool_t, stringpool_str36), 0}, │ │ │ │ │ +903#line 236 "charset_lookup.gperf" │ │ │ │ │ +904 {(int)offsetof(struct stringpool_t, stringpool_str37), 53}, │ │ │ │ │ +905#line 233 "charset_lookup.gperf" │ │ │ │ │ +906 {(int)offsetof(struct stringpool_t, stringpool_str38), 63}, │ │ │ │ │ +907#line 363 "charset_lookup.gperf" │ │ │ │ │ +908 {(int)offsetof(struct stringpool_t, stringpool_str39), 1}, │ │ │ │ │ +909 {-1,-1}, │ │ │ │ │ +910#line 338 "charset_lookup.gperf" │ │ │ │ │ +911 {(int)offsetof(struct stringpool_t, stringpool_str41), 0}, │ │ │ │ │ +912#line 319 "charset_lookup.gperf" │ │ │ │ │ +913 {(int)offsetof(struct stringpool_t, stringpool_str42), 11}, │ │ │ │ │ +914#line 346 "charset_lookup.gperf" │ │ │ │ │ +915 {(int)offsetof(struct stringpool_t, stringpool_str43), 62}, │ │ │ │ │ +916#line 373 "charset_lookup.gperf" │ │ │ │ │ +917 {(int)offsetof(struct stringpool_t, stringpool_str44), 54}, │ │ │ │ │ +918#line 343 "charset_lookup.gperf" │ │ │ │ │ +919 {(int)offsetof(struct stringpool_t, stringpool_str45), 59}, │ │ │ │ │ +920 {-1,-1}, │ │ │ │ │ +921#line 357 "charset_lookup.gperf" │ │ │ │ │ +922 {(int)offsetof(struct stringpool_t, stringpool_str47), 63}, │ │ │ │ │ +923#line 361 "charset_lookup.gperf" │ │ │ │ │ +924 {(int)offsetof(struct stringpool_t, stringpool_str48), 67}, │ │ │ │ │ +925#line 234 "charset_lookup.gperf" │ │ │ │ │ +926 {(int)offsetof(struct stringpool_t, stringpool_str49), 51}, │ │ │ │ │ +927#line 358 "charset_lookup.gperf" │ │ │ │ │ +928 {(int)offsetof(struct stringpool_t, stringpool_str50), 89}, │ │ │ │ │ +929#line 10 "charset_lookup.gperf" │ │ │ │ │ +930 {(int)offsetof(struct stringpool_t, stringpool_str51), 32}, │ │ │ │ │ +931 {-1,-1}, │ │ │ │ │ +932#line 339 "charset_lookup.gperf" │ │ │ │ │ +933 {(int)offsetof(struct stringpool_t, stringpool_str53), 54}, │ │ │ │ │ +934 {-1,-1}, {-1,-1}, │ │ │ │ │ +935#line 369 "charset_lookup.gperf" │ │ │ │ │ +936 {(int)offsetof(struct stringpool_t, stringpool_str56), 61}, │ │ │ │ │ +937#line 375 "charset_lookup.gperf" │ │ │ │ │ +938 {(int)offsetof(struct stringpool_t, stringpool_str57), 0}, │ │ │ │ │ +939#line 359 "charset_lookup.gperf" │ │ │ │ │ +940 {(int)offsetof(struct stringpool_t, stringpool_str58), 89}, │ │ │ │ │ +941 {-1,-1}, {-1,-1}, │ │ │ │ │ +942#line 269 "charset_lookup.gperf" │ │ │ │ │ +943 {(int)offsetof(struct stringpool_t, stringpool_str61), 89}, │ │ │ │ │ +944 {-1,-1}, │ │ │ │ │ +945#line 7 "charset_lookup.gperf" │ │ │ │ │ +946 {(int)offsetof(struct stringpool_t, stringpool_str63), 92}, │ │ │ │ │ +947 {-1,-1}, │ │ │ │ │ +948#line 232 "charset_lookup.gperf" │ │ │ │ │ +949 {(int)offsetof(struct stringpool_t, stringpool_str65), 58}, │ │ │ │ │ +950 {-1,-1}, │ │ │ │ │ +951#line 344 "charset_lookup.gperf" │ │ │ │ │ +952 {(int)offsetof(struct stringpool_t, stringpool_str67), 60}, │ │ │ │ │ +953 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +954#line 347 "charset_lookup.gperf" │ │ │ │ │ +955 {(int)offsetof(struct stringpool_t, stringpool_str71), 0}, │ │ │ │ │ +956 {-1,-1}, │ │ │ │ │ +957#line 355 "charset_lookup.gperf" │ │ │ │ │ +958 {(int)offsetof(struct stringpool_t, stringpool_str73), 62}, │ │ │ │ │ +959#line 237 "charset_lookup.gperf" │ │ │ │ │ +960 {(int)offsetof(struct stringpool_t, stringpool_str74), 0}, │ │ │ │ │ +961#line 352 "charset_lookup.gperf" │ │ │ │ │ +962 {(int)offsetof(struct stringpool_t, stringpool_str75), 59}, │ │ │ │ │ +963#line 244 "charset_lookup.gperf" │ │ │ │ │ +964 {(int)offsetof(struct stringpool_t, stringpool_str76), 53}, │ │ │ │ │ +965#line 356 "charset_lookup.gperf" │ │ │ │ │ +966 {(int)offsetof(struct stringpool_t, stringpool_str77), 63}, │ │ │ │ │ +967#line 241 "charset_lookup.gperf" │ │ │ │ │ +968 {(int)offsetof(struct stringpool_t, stringpool_str78), 63}, │ │ │ │ │ +969#line 8 "charset_lookup.gperf" │ │ │ │ │ +970 {(int)offsetof(struct stringpool_t, stringpool_str79), 30}, │ │ │ │ │ +971#line 169 "charset_lookup.gperf" │ │ │ │ │ +972 {(int)offsetof(struct stringpool_t, stringpool_str80), 0}, │ │ │ │ │ +973 {-1,-1}, │ │ │ │ │ +974#line 177 "charset_lookup.gperf" │ │ │ │ │ +975 {(int)offsetof(struct stringpool_t, stringpool_str82), 62}, │ │ │ │ │ +976#line 348 "charset_lookup.gperf" │ │ │ │ │ +977 {(int)offsetof(struct stringpool_t, stringpool_str83), 54}, │ │ │ │ │ +978#line 174 "charset_lookup.gperf" │ │ │ │ │ +979 {(int)offsetof(struct stringpool_t, stringpool_str84), 59}, │ │ │ │ │ +980#line 113 "charset_lookup.gperf" │ │ │ │ │ +981 {(int)offsetof(struct stringpool_t, stringpool_str85), 44}, │ │ │ │ │ +982#line 178 "charset_lookup.gperf" │ │ │ │ │ +983 {(int)offsetof(struct stringpool_t, stringpool_str86), 63}, │ │ │ │ │ +984 {-1,-1}, {-1,-1}, │ │ │ │ │ +985#line 128 "charset_lookup.gperf" │ │ │ │ │ +986 {(int)offsetof(struct stringpool_t, stringpool_str89), 0}, │ │ │ │ │ +987 {-1,-1}, │ │ │ │ │ +988#line 140 "charset_lookup.gperf" │ │ │ │ │ +989 {(int)offsetof(struct stringpool_t, stringpool_str91), 62}, │ │ │ │ │ +990#line 171 "charset_lookup.gperf" │ │ │ │ │ +991 {(int)offsetof(struct stringpool_t, stringpool_str92), 54}, │ │ │ │ │ +992#line 137 "charset_lookup.gperf" │ │ │ │ │ +993 {(int)offsetof(struct stringpool_t, stringpool_str93), 59}, │ │ │ │ │ +994#line 370 "charset_lookup.gperf" │ │ │ │ │ +995 {(int)offsetof(struct stringpool_t, stringpool_str94), 51}, │ │ │ │ │ +996#line 141 "charset_lookup.gperf" │ │ │ │ │ +997 {(int)offsetof(struct stringpool_t, stringpool_str95), 63}, │ │ │ │ │ +998 {-1,-1}, │ │ │ │ │ +999#line 353 "charset_lookup.gperf" │ │ │ │ │ +1000 {(int)offsetof(struct stringpool_t, stringpool_str97), 60}, │ │ │ │ │ +1001#line 372 "charset_lookup.gperf" │ │ │ │ │ +1002 {(int)offsetof(struct stringpool_t, stringpool_str98), 53}, │ │ │ │ │ +1003#line 342 "charset_lookup.gperf" │ │ │ │ │ +1004 {(int)offsetof(struct stringpool_t, stringpool_str99), 58}, │ │ │ │ │ +1005#line 242 "charset_lookup.gperf" │ │ │ │ │ +1006 {(int)offsetof(struct stringpool_t, stringpool_str100), 51}, │ │ │ │ │ +1007#line 132 "charset_lookup.gperf" │ │ │ │ │ +1008 {(int)offsetof(struct stringpool_t, stringpool_str101), 54}, │ │ │ │ │ +1009 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1010#line 180 "charset_lookup.gperf" │ │ │ │ │ +1011 {(int)offsetof(struct stringpool_t, stringpool_str105), 0}, │ │ │ │ │ +1012#line 175 "charset_lookup.gperf" │ │ │ │ │ +1013 {(int)offsetof(struct stringpool_t, stringpool_str106), 60}, │ │ │ │ │ +1014#line 203 "charset_lookup.gperf" │ │ │ │ │ +1015 {(int)offsetof(struct stringpool_t, stringpool_str107), 62}, │ │ │ │ │ +1016#line 25 "charset_lookup.gperf" │ │ │ │ │ +1017 {(int)offsetof(struct stringpool_t, stringpool_str108), 15}, │ │ │ │ │ +1018#line 197 "charset_lookup.gperf" │ │ │ │ │ +1019 {(int)offsetof(struct stringpool_t, stringpool_str109), 59}, │ │ │ │ │ +1020 {-1,-1}, │ │ │ │ │ +1021#line 205 "charset_lookup.gperf" │ │ │ │ │ +1022 {(int)offsetof(struct stringpool_t, stringpool_str111), 63}, │ │ │ │ │ +1023#line 230 "charset_lookup.gperf" │ │ │ │ │ +1024 {(int)offsetof(struct stringpool_t, stringpool_str112), 56}, │ │ │ │ │ +1025 {-1,-1}, │ │ │ │ │ +1026#line 235 "charset_lookup.gperf" │ │ │ │ │ +1027 {(int)offsetof(struct stringpool_t, stringpool_str114), 52}, │ │ │ │ │ +1028#line 138 "charset_lookup.gperf" │ │ │ │ │ +1029 {(int)offsetof(struct stringpool_t, stringpool_str115), 60}, │ │ │ │ │ +1030#line 374 "charset_lookup.gperf" │ │ │ │ │ +1031 {(int)offsetof(struct stringpool_t, stringpool_str116), 92}, │ │ │ │ │ +1032#line 186 "charset_lookup.gperf" │ │ │ │ │ +1033 {(int)offsetof(struct stringpool_t, stringpool_str117), 54}, │ │ │ │ │ +1034 {-1,-1}, {-1,-1}, │ │ │ │ │ +1035#line 23 "charset_lookup.gperf" │ │ │ │ │ +1036 {(int)offsetof(struct stringpool_t, stringpool_str120), 13}, │ │ │ │ │ +1037#line 187 "charset_lookup.gperf" │ │ │ │ │ +1038 {(int)offsetof(struct stringpool_t, stringpool_str121), 54}, │ │ │ │ │ +1039#line 163 "charset_lookup.gperf" │ │ │ │ │ +1040 {(int)offsetof(struct stringpool_t, stringpool_str122), 14}, │ │ │ │ │ +1041#line 133 "charset_lookup.gperf" │ │ │ │ │ +1042 {(int)offsetof(struct stringpool_t, stringpool_str123), 55}, │ │ │ │ │ +1043 {-1,-1}, │ │ │ │ │ +1044#line 220 "charset_lookup.gperf" │ │ │ │ │ +1045 {(int)offsetof(struct stringpool_t, stringpool_str125), 64}, │ │ │ │ │ +1046#line 293 "charset_lookup.gperf" │ │ │ │ │ +1047 {(int)offsetof(struct stringpool_t, stringpool_str126), 92}, │ │ │ │ │ +1048 {-1,-1}, {-1,-1}, │ │ │ │ │ +1049#line 351 "charset_lookup.gperf" │ │ │ │ │ +1050 {(int)offsetof(struct stringpool_t, stringpool_str129), 58}, │ │ │ │ │ +1051 {-1,-1}, │ │ │ │ │ +1052#line 199 "charset_lookup.gperf" │ │ │ │ │ +1053 {(int)offsetof(struct stringpool_t, stringpool_str131), 60}, │ │ │ │ │ +1054#line 240 "charset_lookup.gperf" │ │ │ │ │ +1055 {(int)offsetof(struct stringpool_t, stringpool_str132), 58}, │ │ │ │ │ +1056#line 231 "charset_lookup.gperf" │ │ │ │ │ +1057 {(int)offsetof(struct stringpool_t, stringpool_str133), 57}, │ │ │ │ │ +1058#line 155 "charset_lookup.gperf" │ │ │ │ │ +1059 {(int)offsetof(struct stringpool_t, stringpool_str134), 66}, │ │ │ │ │ +1060#line 159 "charset_lookup.gperf" │ │ │ │ │ +1061 {(int)offsetof(struct stringpool_t, stringpool_str135), 53}, │ │ │ │ │ +1062#line 164 "charset_lookup.gperf" │ │ │ │ │ +1063 {(int)offsetof(struct stringpool_t, stringpool_str136), 92}, │ │ │ │ │ +1064#line 43 "charset_lookup.gperf" │ │ │ │ │ +1065 {(int)offsetof(struct stringpool_t, stringpool_str137), 0}, │ │ │ │ │ +1066#line 173 "charset_lookup.gperf" │ │ │ │ │ +1067 {(int)offsetof(struct stringpool_t, stringpool_str138), 58}, │ │ │ │ │ +1068#line 188 "charset_lookup.gperf" │ │ │ │ │ +1069 {(int)offsetof(struct stringpool_t, stringpool_str139), 55}, │ │ │ │ │ +1070 {-1,-1}, {-1,-1}, │ │ │ │ │ +1071#line 170 "charset_lookup.gperf" │ │ │ │ │ +1072 {(int)offsetof(struct stringpool_t, stringpool_str142), 51}, │ │ │ │ │ +1073#line 156 "charset_lookup.gperf" │ │ │ │ │ +1074 {(int)offsetof(struct stringpool_t, stringpool_str143), 17}, │ │ │ │ │ +1075 {-1,-1}, {-1,-1}, │ │ │ │ │ +1076#line 271 "charset_lookup.gperf" │ │ │ │ │ +1077 {(int)offsetof(struct stringpool_t, stringpool_str146), 90}, │ │ │ │ │ +1078#line 136 "charset_lookup.gperf" │ │ │ │ │ +1079 {(int)offsetof(struct stringpool_t, stringpool_str147), 58}, │ │ │ │ │ +1080#line 185 "charset_lookup.gperf" │ │ │ │ │ +1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 53}, │ │ │ │ │ +1082 {-1,-1}, {-1,-1}, │ │ │ │ │ +1083#line 129 "charset_lookup.gperf" │ │ │ │ │ +1084 {(int)offsetof(struct stringpool_t, stringpool_str151), 51}, │ │ │ │ │ +1085 {-1,-1}, │ │ │ │ │ +1086#line 144 "charset_lookup.gperf" │ │ │ │ │ +1087 {(int)offsetof(struct stringpool_t, stringpool_str153), 56}, │ │ │ │ │ +1088 {-1,-1}, │ │ │ │ │ +1089#line 131 "charset_lookup.gperf" │ │ │ │ │ +1090 {(int)offsetof(struct stringpool_t, stringpool_str155), 53}, │ │ │ │ │ +1091 {-1,-1}, │ │ │ │ │ +1092#line 152 "charset_lookup.gperf" │ │ │ │ │ +1093 {(int)offsetof(struct stringpool_t, stringpool_str157), 63}, │ │ │ │ │ +1094#line 189 "charset_lookup.gperf" │ │ │ │ │ +1095 {(int)offsetof(struct stringpool_t, stringpool_str158), 55}, │ │ │ │ │ +1096#line 145 "charset_lookup.gperf" │ │ │ │ │ +1097 {(int)offsetof(struct stringpool_t, stringpool_str159), 57}, │ │ │ │ │ +1098 {-1,-1}, │ │ │ │ │ +1099#line 153 "charset_lookup.gperf" │ │ │ │ │ +1100 {(int)offsetof(struct stringpool_t, stringpool_str161), 65}, │ │ │ │ │ +1101#line 272 "charset_lookup.gperf" │ │ │ │ │ +1102 {(int)offsetof(struct stringpool_t, stringpool_str162), 90}, │ │ │ │ │ +1103#line 195 "charset_lookup.gperf" │ │ │ │ │ +1104 {(int)offsetof(struct stringpool_t, stringpool_str163), 58}, │ │ │ │ │ +1105#line 337 "charset_lookup.gperf" │ │ │ │ │ +1106 {(int)offsetof(struct stringpool_t, stringpool_str164), 14}, │ │ │ │ │ +1107#line 157 "charset_lookup.gperf" │ │ │ │ │ +1108 {(int)offsetof(struct stringpool_t, stringpool_str165), 67}, │ │ │ │ │ +1109 {-1,-1}, │ │ │ │ │ +1110#line 181 "charset_lookup.gperf" │ │ │ │ │ +1111 {(int)offsetof(struct stringpool_t, stringpool_str167), 51}, │ │ │ │ │ +1112#line 50 "charset_lookup.gperf" │ │ │ │ │ +1113 {(int)offsetof(struct stringpool_t, stringpool_str168), 36}, │ │ │ │ │ +1114 {-1,-1}, │ │ │ │ │ +1115#line 46 "charset_lookup.gperf" │ │ │ │ │ +1116 {(int)offsetof(struct stringpool_t, stringpool_str170), 32}, │ │ │ │ │ +1117#line 184 "charset_lookup.gperf" │ │ │ │ │ +1118 {(int)offsetof(struct stringpool_t, stringpool_str171), 53}, │ │ │ │ │ +1119 {-1,-1}, │ │ │ │ │ +1120#line 15 "charset_lookup.gperf" │ │ │ │ │ +1121 {(int)offsetof(struct stringpool_t, stringpool_str173), 92}, │ │ │ │ │ +1122 {-1,-1}, {-1,-1}, │ │ │ │ │ +1123#line 150 "charset_lookup.gperf" │ │ │ │ │ +1124 {(int)offsetof(struct stringpool_t, stringpool_str176), 64}, │ │ │ │ │ +1125#line 9 "charset_lookup.gperf" │ │ │ │ │ +1126 {(int)offsetof(struct stringpool_t, stringpool_str177), 31}, │ │ │ │ │ +1127 {-1,-1}, {-1,-1}, │ │ │ │ │ +1128#line 146 "charset_lookup.gperf" │ │ │ │ │ +1129 {(int)offsetof(struct stringpool_t, stringpool_str180), 58}, │ │ │ │ │ +1130 {-1,-1}, {-1,-1}, │ │ │ │ │ +1131#line 105 "charset_lookup.gperf" │ │ │ │ │ +1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 15}, │ │ │ │ │ +1133 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1134#line 44 "charset_lookup.gperf" │ │ │ │ │ +1135 {(int)offsetof(struct stringpool_t, stringpool_str187), 30}, │ │ │ │ │ +1136 {-1,-1}, │ │ │ │ │ +1137#line 51 "charset_lookup.gperf" │ │ │ │ │ +1138 {(int)offsetof(struct stringpool_t, stringpool_str189), 37}, │ │ │ │ │ +1139 {-1,-1}, {-1,-1}, │ │ │ │ │ +1140#line 362 "charset_lookup.gperf" │ │ │ │ │ +1141 {(int)offsetof(struct stringpool_t, stringpool_str192), 67}, │ │ │ │ │ +1142#line 340 "charset_lookup.gperf" │ │ │ │ │ +1143 {(int)offsetof(struct stringpool_t, stringpool_str193), 56}, │ │ │ │ │ +1144 {-1,-1}, │ │ │ │ │ +1145#line 279 "charset_lookup.gperf" │ │ │ │ │ +1146 {(int)offsetof(struct stringpool_t, stringpool_str195), 67}, │ │ │ │ │ +1147 {-1,-1}, │ │ │ │ │ +1148#line 345 "charset_lookup.gperf" │ │ │ │ │ +1149 {(int)offsetof(struct stringpool_t, stringpool_str197), 61}, │ │ │ │ │ +1150#line 208 "charset_lookup.gperf" │ │ │ │ │ +1151 {(int)offsetof(struct stringpool_t, stringpool_str198), 68}, │ │ │ │ │ +1152 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1153#line 302 "charset_lookup.gperf" │ │ │ │ │ +1154 {(int)offsetof(struct stringpool_t, stringpool_str203), 1}, │ │ │ │ │ +1155#line 278 "charset_lookup.gperf" │ │ │ │ │ +1156 {(int)offsetof(struct stringpool_t, stringpool_str204), 67}, │ │ │ │ │ +1157 {-1,-1}, {-1,-1}, │ │ │ │ │ +1158#line 143 "charset_lookup.gperf" │ │ │ │ │ +1159 {(int)offsetof(struct stringpool_t, stringpool_str207), 0}, │ │ │ │ │ +1160 {-1,-1}, {-1,-1}, │ │ │ │ │ +1161#line 158 "charset_lookup.gperf" │ │ │ │ │ +1162 {(int)offsetof(struct stringpool_t, stringpool_str210), 52}, │ │ │ │ │ +1163 {-1,-1}, │ │ │ │ │ +1164#line 300 "charset_lookup.gperf" │ │ │ │ │ +1165 {(int)offsetof(struct stringpool_t, stringpool_str212), 1}, │ │ │ │ │ +1166#line 151 "charset_lookup.gperf" │ │ │ │ │ +1167 {(int)offsetof(struct stringpool_t, stringpool_str213), 59}, │ │ │ │ │ +1168 {-1,-1}, │ │ │ │ │ +1169#line 42 "charset_lookup.gperf" │ │ │ │ │ +1170 {(int)offsetof(struct stringpool_t, stringpool_str215), 1}, │ │ │ │ │ +1171#line 31 "charset_lookup.gperf" │ │ │ │ │ +1172 {(int)offsetof(struct stringpool_t, stringpool_str216), 20}, │ │ │ │ │ +1173 {-1,-1}, │ │ │ │ │ +1174#line 38 "charset_lookup.gperf" │ │ │ │ │ +1175 {(int)offsetof(struct stringpool_t, stringpool_str218), 27}, │ │ │ │ │ +1176 {-1,-1}, │ │ │ │ │ +1177#line 35 "charset_lookup.gperf" │ │ │ │ │ +1178 {(int)offsetof(struct stringpool_t, stringpool_str220), 24}, │ │ │ │ │ +1179#line 182 "charset_lookup.gperf" │ │ │ │ │ +1180 {(int)offsetof(struct stringpool_t, stringpool_str221), 51}, │ │ │ │ │ +1181#line 166 "charset_lookup.gperf" │ │ │ │ │ +1182 {(int)offsetof(struct stringpool_t, stringpool_str222), 15}, │ │ │ │ │ +1183#line 349 "charset_lookup.gperf" │ │ │ │ │ +1184 {(int)offsetof(struct stringpool_t, stringpool_str223), 56}, │ │ │ │ │ +1185 {-1,-1}, │ │ │ │ │ +1186#line 149 "charset_lookup.gperf" │ │ │ │ │ +1187 {(int)offsetof(struct stringpool_t, stringpool_str225), 62}, │ │ │ │ │ +1188#line 238 "charset_lookup.gperf" │ │ │ │ │ +1189 {(int)offsetof(struct stringpool_t, stringpool_str226), 56}, │ │ │ │ │ +1190#line 354 "charset_lookup.gperf" │ │ │ │ │ +1191 {(int)offsetof(struct stringpool_t, stringpool_str227), 61}, │ │ │ │ │ +1192#line 147 "charset_lookup.gperf" │ │ │ │ │ +1193 {(int)offsetof(struct stringpool_t, stringpool_str228), 61}, │ │ │ │ │ +1194#line 62 "charset_lookup.gperf" │ │ │ │ │ +1195 {(int)offsetof(struct stringpool_t, stringpool_str229), 66}, │ │ │ │ │ +1196#line 243 "charset_lookup.gperf" │ │ │ │ │ +1197 {(int)offsetof(struct stringpool_t, stringpool_str230), 52}, │ │ │ │ │ +1198#line 118 "charset_lookup.gperf" │ │ │ │ │ +1199 {(int)offsetof(struct stringpool_t, stringpool_str231), 0}, │ │ │ │ │ +1200#line 172 "charset_lookup.gperf" │ │ │ │ │ +1201 {(int)offsetof(struct stringpool_t, stringpool_str232), 56}, │ │ │ │ │ +1202#line 381 "charset_lookup.gperf" │ │ │ │ │ +1203 {(int)offsetof(struct stringpool_t, stringpool_str233), 85}, │ │ │ │ │ +1204#line 371 "charset_lookup.gperf" │ │ │ │ │ +1205 {(int)offsetof(struct stringpool_t, stringpool_str234), 52}, │ │ │ │ │ +1206#line 341 "charset_lookup.gperf" │ │ │ │ │ +1207 {(int)offsetof(struct stringpool_t, stringpool_str235), 57}, │ │ │ │ │ +1208#line 176 "charset_lookup.gperf" │ │ │ │ │ +1209 {(int)offsetof(struct stringpool_t, stringpool_str236), 61}, │ │ │ │ │ +1210#line 223 "charset_lookup.gperf" │ │ │ │ │ +1211 {(int)offsetof(struct stringpool_t, stringpool_str237), 73}, │ │ │ │ │ +1212#line 168 "charset_lookup.gperf" │ │ │ │ │ +1213 {(int)offsetof(struct stringpool_t, stringpool_str238), 92}, │ │ │ │ │ +1214#line 280 "charset_lookup.gperf" │ │ │ │ │ +1215 {(int)offsetof(struct stringpool_t, stringpool_str239), 67}, │ │ │ │ │ +1216#line 19 "charset_lookup.gperf" │ │ │ │ │ +1217 {(int)offsetof(struct stringpool_t, stringpool_str240), 11}, │ │ │ │ │ +1218#line 134 "charset_lookup.gperf" │ │ │ │ │ +1219 {(int)offsetof(struct stringpool_t, stringpool_str241), 56}, │ │ │ │ │ +1220#line 36 "charset_lookup.gperf" │ │ │ │ │ +1221 {(int)offsetof(struct stringpool_t, stringpool_str242), 25}, │ │ │ │ │ +1222#line 92 "charset_lookup.gperf" │ │ │ │ │ +1223 {(int)offsetof(struct stringpool_t, stringpool_str243), 61}, │ │ │ │ │ +1224#line 379 "charset_lookup.gperf" │ │ │ │ │ +1225 {(int)offsetof(struct stringpool_t, stringpool_str244), 80}, │ │ │ │ │ +1226#line 139 "charset_lookup.gperf" │ │ │ │ │ +1227 {(int)offsetof(struct stringpool_t, stringpool_str245), 61}, │ │ │ │ │ +1228 {-1,-1}, │ │ │ │ │ +1229#line 70 "charset_lookup.gperf" │ │ │ │ │ +1230 {(int)offsetof(struct stringpool_t, stringpool_str247), 0}, │ │ │ │ │ +1231#line 39 "charset_lookup.gperf" │ │ │ │ │ +1232 {(int)offsetof(struct stringpool_t, stringpool_str248), 28}, │ │ │ │ │ +1233#line 17 "charset_lookup.gperf" │ │ │ │ │ +1234 {(int)offsetof(struct stringpool_t, stringpool_str249), 11}, │ │ │ │ │ +1235#line 367 "charset_lookup.gperf" │ │ │ │ │ +1236 {(int)offsetof(struct stringpool_t, stringpool_str250), 36}, │ │ │ │ │ +1237#line 74 "charset_lookup.gperf" │ │ │ │ │ +1238 {(int)offsetof(struct stringpool_t, stringpool_str251), 63}, │ │ │ │ │ +1239#line 332 "charset_lookup.gperf" │ │ │ │ │ +1240 {(int)offsetof(struct stringpool_t, stringpool_str252), 32}, │ │ │ │ │ +1241#line 364 "charset_lookup.gperf" │ │ │ │ │ +1242 {(int)offsetof(struct stringpool_t, stringpool_str253), 0}, │ │ │ │ │ +1243 {-1,-1}, │ │ │ │ │ +1244#line 380 "charset_lookup.gperf" │ │ │ │ │ +1245 {(int)offsetof(struct stringpool_t, stringpool_str255), 84}, │ │ │ │ │ +1246#line 49 "charset_lookup.gperf" │ │ │ │ │ +1247 {(int)offsetof(struct stringpool_t, stringpool_str256), 35}, │ │ │ │ │ +1248#line 191 "charset_lookup.gperf" │ │ │ │ │ +1249 {(int)offsetof(struct stringpool_t, stringpool_str257), 56}, │ │ │ │ │ +1250 {-1,-1}, {-1,-1}, │ │ │ │ │ +1251#line 102 "charset_lookup.gperf" │ │ │ │ │ +1252 {(int)offsetof(struct stringpool_t, stringpool_str260), 41}, │ │ │ │ │ +1253#line 201 "charset_lookup.gperf" │ │ │ │ │ +1254 {(int)offsetof(struct stringpool_t, stringpool_str261), 61}, │ │ │ │ │ +1255#line 274 "charset_lookup.gperf" │ │ │ │ │ +1256 {(int)offsetof(struct stringpool_t, stringpool_str262), 91}, │ │ │ │ │ +1257 {-1,-1}, │ │ │ │ │ +1258#line 121 "charset_lookup.gperf" │ │ │ │ │ +1259 {(int)offsetof(struct stringpool_t, stringpool_str264), 32}, │ │ │ │ │ +1260#line 350 "charset_lookup.gperf" │ │ │ │ │ +1261 {(int)offsetof(struct stringpool_t, stringpool_str265), 57}, │ │ │ │ │ +1262 {-1,-1}, │ │ │ │ │ +1263#line 47 "charset_lookup.gperf" │ │ │ │ │ +1264 {(int)offsetof(struct stringpool_t, stringpool_str267), 33}, │ │ │ │ │ +1265#line 239 "charset_lookup.gperf" │ │ │ │ │ +1266 {(int)offsetof(struct stringpool_t, stringpool_str268), 57}, │ │ │ │ │ +1267#line 330 "charset_lookup.gperf" │ │ │ │ │ +1268 {(int)offsetof(struct stringpool_t, stringpool_str269), 30}, │ │ │ │ │ +1269#line 30 "charset_lookup.gperf" │ │ │ │ │ +1270 {(int)offsetof(struct stringpool_t, stringpool_str270), 19}, │ │ │ │ │ +1271#line 368 "charset_lookup.gperf" │ │ │ │ │ +1272 {(int)offsetof(struct stringpool_t, stringpool_str271), 37}, │ │ │ │ │ +1273 {-1,-1}, │ │ │ │ │ +1274#line 75 "charset_lookup.gperf" │ │ │ │ │ +1275 {(int)offsetof(struct stringpool_t, stringpool_str273), 51}, │ │ │ │ │ +1276#line 34 "charset_lookup.gperf" │ │ │ │ │ +1277 {(int)offsetof(struct stringpool_t, stringpool_str274), 23}, │ │ │ │ │ +1278#line 165 "charset_lookup.gperf" │ │ │ │ │ +1279 {(int)offsetof(struct stringpool_t, stringpool_str275), 68}, │ │ │ │ │ +1280#line 162 "charset_lookup.gperf" │ │ │ │ │ +1281 {(int)offsetof(struct stringpool_t, stringpool_str276), 15}, │ │ │ │ │ +1282 {-1,-1}, │ │ │ │ │ +1283#line 259 "charset_lookup.gperf" │ │ │ │ │ +1284 {(int)offsetof(struct stringpool_t, stringpool_str278), 21}, │ │ │ │ │ +1285#line 52 "charset_lookup.gperf" │ │ │ │ │ +1286 {(int)offsetof(struct stringpool_t, stringpool_str279), 92}, │ │ │ │ │ +1287 {-1,-1}, │ │ │ │ │ +1288#line 119 "charset_lookup.gperf" │ │ │ │ │ +1289 {(int)offsetof(struct stringpool_t, stringpool_str281), 30}, │ │ │ │ │ +1290 {-1,-1}, │ │ │ │ │ +1291#line 135 "charset_lookup.gperf" │ │ │ │ │ +1292 {(int)offsetof(struct stringpool_t, stringpool_str283), 57}, │ │ │ │ │ +1293#line 154 "charset_lookup.gperf" │ │ │ │ │ +1294 {(int)offsetof(struct stringpool_t, stringpool_str284), 51}, │ │ │ │ │ +1295 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1296#line 130 "charset_lookup.gperf" │ │ │ │ │ +1297 {(int)offsetof(struct stringpool_t, stringpool_str291), 52}, │ │ │ │ │ +1298 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1299#line 45 "charset_lookup.gperf" │ │ │ │ │ +1300 {(int)offsetof(struct stringpool_t, stringpool_str296), 31}, │ │ │ │ │ +1301 {-1,-1}, │ │ │ │ │ +1302#line 321 "charset_lookup.gperf" │ │ │ │ │ +1303 {(int)offsetof(struct stringpool_t, stringpool_str298), 20}, │ │ │ │ │ +1304#line 193 "charset_lookup.gperf" │ │ │ │ │ +1305 {(int)offsetof(struct stringpool_t, stringpool_str299), 57}, │ │ │ │ │ +1306#line 328 "charset_lookup.gperf" │ │ │ │ │ +1307 {(int)offsetof(struct stringpool_t, stringpool_str300), 27}, │ │ │ │ │ +1308#line 97 "charset_lookup.gperf" │ │ │ │ │ +1309 {(int)offsetof(struct stringpool_t, stringpool_str301), 16}, │ │ │ │ │ +1310#line 325 "charset_lookup.gperf" │ │ │ │ │ +1311 {(int)offsetof(struct stringpool_t, stringpool_str302), 24}, │ │ │ │ │ +1312 {-1,-1}, │ │ │ │ │ +1313#line 161 "charset_lookup.gperf" │ │ │ │ │ +1314 {(int)offsetof(struct stringpool_t, stringpool_str304), 55}, │ │ │ │ │ +1315#line 73 "charset_lookup.gperf" │ │ │ │ │ +1316 {(int)offsetof(struct stringpool_t, stringpool_str305), 58}, │ │ │ │ │ +1317 {-1,-1}, │ │ │ │ │ +1318#line 183 "charset_lookup.gperf" │ │ │ │ │ +1319 {(int)offsetof(struct stringpool_t, stringpool_str307), 52}, │ │ │ │ │ +1320#line 294 "charset_lookup.gperf" │ │ │ │ │ +1321 {(int)offsetof(struct stringpool_t, stringpool_str308), 92}, │ │ │ │ │ +1322#line 85 "charset_lookup.gperf" │ │ │ │ │ +1323 {(int)offsetof(struct stringpool_t, stringpool_str309), 90}, │ │ │ │ │ +1324#line 93 "charset_lookup.gperf" │ │ │ │ │ +1325 {(int)offsetof(struct stringpool_t, stringpool_str310), 16}, │ │ │ │ │ +1326 {-1,-1}, {-1,-1}, │ │ │ │ │ +1327#line 61 "charset_lookup.gperf" │ │ │ │ │ +1328 {(int)offsetof(struct stringpool_t, stringpool_str313), 64}, │ │ │ │ │ +1329#line 288 "charset_lookup.gperf" │ │ │ │ │ +1330 {(int)offsetof(struct stringpool_t, stringpool_str314), 36}, │ │ │ │ │ +1331#line 270 "charset_lookup.gperf" │ │ │ │ │ +1332 {(int)offsetof(struct stringpool_t, stringpool_str315), 89}, │ │ │ │ │ +1333 {-1,-1}, │ │ │ │ │ +1334#line 221 "charset_lookup.gperf" │ │ │ │ │ +1335 {(int)offsetof(struct stringpool_t, stringpool_str317), 71}, │ │ │ │ │ +1336 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1337#line 326 "charset_lookup.gperf" │ │ │ │ │ +1338 {(int)offsetof(struct stringpool_t, stringpool_str324), 25}, │ │ │ │ │ +1339 {-1,-1}, {-1,-1}, │ │ │ │ │ +1340#line 108 "charset_lookup.gperf" │ │ │ │ │ +1341 {(int)offsetof(struct stringpool_t, stringpool_str327), 43}, │ │ │ │ │ +1342 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1343 {-1,-1}, {-1,-1}, │ │ │ │ │ +1344#line 167 "charset_lookup.gperf" │ │ │ │ │ +1345 {(int)offsetof(struct stringpool_t, stringpool_str336), 64}, │ │ │ │ │ +1346 {-1,-1}, │ │ │ │ │ +1347#line 366 "charset_lookup.gperf" │ │ │ │ │ +1348 {(int)offsetof(struct stringpool_t, stringpool_str338), 35}, │ │ │ │ │ +1349 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1350 {-1,-1}, │ │ │ │ │ +1351#line 53 "charset_lookup.gperf" │ │ │ │ │ +1352 {(int)offsetof(struct stringpool_t, stringpool_str346), 11}, │ │ │ │ │ +1353 {-1,-1}, {-1,-1}, │ │ │ │ │ +1354#line 333 "charset_lookup.gperf" │ │ │ │ │ +1355 {(int)offsetof(struct stringpool_t, stringpool_str349), 33}, │ │ │ │ │ +1356#line 207 "charset_lookup.gperf" │ │ │ │ │ +1357 {(int)offsetof(struct stringpool_t, stringpool_str350), 69}, │ │ │ │ │ +1358 {-1,-1}, │ │ │ │ │ +1359#line 320 "charset_lookup.gperf" │ │ │ │ │ +1360 {(int)offsetof(struct stringpool_t, stringpool_str352), 19}, │ │ │ │ │ +1361 {-1,-1}, {-1,-1}, │ │ │ │ │ +1362#line 26 "charset_lookup.gperf" │ │ │ │ │ +1363 {(int)offsetof(struct stringpool_t, stringpool_str355), 11}, │ │ │ │ │ +1364#line 324 "charset_lookup.gperf" │ │ │ │ │ +1365 {(int)offsetof(struct stringpool_t, stringpool_str356), 23}, │ │ │ │ │ +1366#line 301 "charset_lookup.gperf" │ │ │ │ │ +1367 {(int)offsetof(struct stringpool_t, stringpool_str357), 93}, │ │ │ │ │ +1368#line 148 "charset_lookup.gperf" │ │ │ │ │ +1369 {(int)offsetof(struct stringpool_t, stringpool_str358), 60}, │ │ │ │ │ +1370 {-1,-1}, │ │ │ │ │ +1371#line 303 "charset_lookup.gperf" │ │ │ │ │ +1372 {(int)offsetof(struct stringpool_t, stringpool_str360), 94}, │ │ │ │ │ +1373 {-1,-1}, {-1,-1}, │ │ │ │ │ +1374#line 91 "charset_lookup.gperf" │ │ │ │ │ +1375 {(int)offsetof(struct stringpool_t, stringpool_str363), 61}, │ │ │ │ │ +1376 {-1,-1}, {-1,-1}, │ │ │ │ │ +1377#line 299 "charset_lookup.gperf" │ │ │ │ │ +1378 {(int)offsetof(struct stringpool_t, stringpool_str366), 93}, │ │ │ │ │ +1379#line 289 "charset_lookup.gperf" │ │ │ │ │ +1380 {(int)offsetof(struct stringpool_t, stringpool_str367), 3}, │ │ │ │ │ +1381#line 32 "charset_lookup.gperf" │ │ │ │ │ +1382 {(int)offsetof(struct stringpool_t, stringpool_str368), 21}, │ │ │ │ │ +1383#line 377 "charset_lookup.gperf" │ │ │ │ │ +1384 {(int)offsetof(struct stringpool_t, stringpool_str369), 75}, │ │ │ │ │ +1385#line 287 "charset_lookup.gperf" │ │ │ │ │ +1386 {(int)offsetof(struct stringpool_t, stringpool_str370), 6}, │ │ │ │ │ +1387 {-1,-1}, │ │ │ │ │ +1388#line 37 "charset_lookup.gperf" │ │ │ │ │ +1389 {(int)offsetof(struct stringpool_t, stringpool_str372), 26}, │ │ │ │ │ +1390 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1391#line 331 "charset_lookup.gperf" │ │ │ │ │ +1392 {(int)offsetof(struct stringpool_t, stringpool_str378), 31}, │ │ │ │ │ +1393#line 24 "charset_lookup.gperf" │ │ │ │ │ +1394 {(int)offsetof(struct stringpool_t, stringpool_str379), 14}, │ │ │ │ │ +1395#line 245 "charset_lookup.gperf" │ │ │ │ │ +1396 {(int)offsetof(struct stringpool_t, stringpool_str380), 75}, │ │ │ │ │ +1397#line 107 "charset_lookup.gperf" │ │ │ │ │ +1398 {(int)offsetof(struct stringpool_t, stringpool_str381), 42}, │ │ │ │ │ +1399#line 48 "charset_lookup.gperf" │ │ │ │ │ +1400 {(int)offsetof(struct stringpool_t, stringpool_str382), 34}, │ │ │ │ │ +1401 {-1,-1}, │ │ │ │ │ +1402#line 14 "charset_lookup.gperf" │ │ │ │ │ +1403 {(int)offsetof(struct stringpool_t, stringpool_str384), 10}, │ │ │ │ │ +1404#line 76 "charset_lookup.gperf" │ │ │ │ │ +1405 {(int)offsetof(struct stringpool_t, stringpool_str385), 60}, │ │ │ │ │ +1406 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1407#line 120 "charset_lookup.gperf" │ │ │ │ │ +1408 {(int)offsetof(struct stringpool_t, stringpool_str390), 31}, │ │ │ │ │ +1409#line 16 "charset_lookup.gperf" │ │ │ │ │ +1410 {(int)offsetof(struct stringpool_t, stringpool_str391), 60}, │ │ │ │ │ +1411#line 226 "charset_lookup.gperf" │ │ │ │ │ +1412 {(int)offsetof(struct stringpool_t, stringpool_str392), 65}, │ │ │ │ │ +1413 {-1,-1}, {-1,-1}, │ │ │ │ │ +1414#line 225 "charset_lookup.gperf" │ │ │ │ │ +1415 {(int)offsetof(struct stringpool_t, stringpool_str395), 65}, │ │ │ │ │ +1416#line 40 "charset_lookup.gperf" │ │ │ │ │ +1417 {(int)offsetof(struct stringpool_t, stringpool_str396), 92}, │ │ │ │ │ +1418 {-1,-1}, │ │ │ │ │ +1419#line 103 "charset_lookup.gperf" │ │ │ │ │ +1420 {(int)offsetof(struct stringpool_t, stringpool_str398), 16}, │ │ │ │ │ +1421#line 71 "charset_lookup.gperf" │ │ │ │ │ +1422 {(int)offsetof(struct stringpool_t, stringpool_str399), 56}, │ │ │ │ │ +1423 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1424#line 210 "charset_lookup.gperf" │ │ │ │ │ +1425 {(int)offsetof(struct stringpool_t, stringpool_str404), 64}, │ │ │ │ │ +1426 {-1,-1}, │ │ │ │ │ +1427#line 112 "charset_lookup.gperf" │ │ │ │ │ +1428 {(int)offsetof(struct stringpool_t, stringpool_str406), 89}, │ │ │ │ │ +1429#line 104 "charset_lookup.gperf" │ │ │ │ │ +1430 {(int)offsetof(struct stringpool_t, stringpool_str407), 35}, │ │ │ │ │ +1431#line 110 "charset_lookup.gperf" │ │ │ │ │ +1432 {(int)offsetof(struct stringpool_t, stringpool_str408), 61}, │ │ │ │ │ +1433#line 267 "charset_lookup.gperf" │ │ │ │ │ +1434 {(int)offsetof(struct stringpool_t, stringpool_str409), 87}, │ │ │ │ │ +1435#line 33 "charset_lookup.gperf" │ │ │ │ │ +1436 {(int)offsetof(struct stringpool_t, stringpool_str410), 22}, │ │ │ │ │ +1437 {-1,-1}, │ │ │ │ │ +1438#line 41 "charset_lookup.gperf" │ │ │ │ │ +1439 {(int)offsetof(struct stringpool_t, stringpool_str412), 29}, │ │ │ │ │ +1440 {-1,-1}, │ │ │ │ │ +1441#line 80 "charset_lookup.gperf" │ │ │ │ │ +1442 {(int)offsetof(struct stringpool_t, stringpool_str414), 71}, │ │ │ │ │ +1443#line 98 "charset_lookup.gperf" │ │ │ │ │ +1444 {(int)offsetof(struct stringpool_t, stringpool_str415), 38}, │ │ │ │ │ +1445 {-1,-1}, │ │ │ │ │ +1446#line 285 "charset_lookup.gperf" │ │ │ │ │ +1447 {(int)offsetof(struct stringpool_t, stringpool_str417), 2}, │ │ │ │ │ +1448#line 89 "charset_lookup.gperf" │ │ │ │ │ +1449 {(int)offsetof(struct stringpool_t, stringpool_str418), 59}, │ │ │ │ │ +1450#line 90 "charset_lookup.gperf" │ │ │ │ │ +1451 {(int)offsetof(struct stringpool_t, stringpool_str419), 60}, │ │ │ │ │ +1452#line 334 "charset_lookup.gperf" │ │ │ │ │ +1453 {(int)offsetof(struct stringpool_t, stringpool_str420), 38}, │ │ │ │ │ +1454#line 296 "charset_lookup.gperf" │ │ │ │ │ +1455 {(int)offsetof(struct stringpool_t, stringpool_str421), 4}, │ │ │ │ │ +1456#line 261 "charset_lookup.gperf" │ │ │ │ │ +1457 {(int)offsetof(struct stringpool_t, stringpool_str422), 20}, │ │ │ │ │ +1458#line 160 "charset_lookup.gperf" │ │ │ │ │ +1459 {(int)offsetof(struct stringpool_t, stringpool_str423), 54}, │ │ │ │ │ +1460#line 94 "charset_lookup.gperf" │ │ │ │ │ +1461 {(int)offsetof(struct stringpool_t, stringpool_str424), 38}, │ │ │ │ │ +1462#line 378 "charset_lookup.gperf" │ │ │ │ │ +1463 {(int)offsetof(struct stringpool_t, stringpool_str425), 79}, │ │ │ │ │ +1464 {-1,-1}, │ │ │ │ │ +1465#line 106 "charset_lookup.gperf" │ │ │ │ │ +1466 {(int)offsetof(struct stringpool_t, stringpool_str427), 14}, │ │ │ │ │ +1467 {-1,-1}, │ │ │ │ │ +1468#line 29 "charset_lookup.gperf" │ │ │ │ │ +1469 {(int)offsetof(struct stringpool_t, stringpool_str429), 18}, │ │ │ │ │ +1470 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1471#line 28 "charset_lookup.gperf" │ │ │ │ │ +1472 {(int)offsetof(struct stringpool_t, stringpool_str433), 17}, │ │ │ │ │ +1473#line 77 "charset_lookup.gperf" │ │ │ │ │ +1474 {(int)offsetof(struct stringpool_t, stringpool_str434), 59}, │ │ │ │ │ +1475#line 256 "charset_lookup.gperf" │ │ │ │ │ +1476 {(int)offsetof(struct stringpool_t, stringpool_str435), 84}, │ │ │ │ │ +1477 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1478#line 122 "charset_lookup.gperf" │ │ │ │ │ +1479 {(int)offsetof(struct stringpool_t, stringpool_str439), 45}, │ │ │ │ │ +1480#line 228 "charset_lookup.gperf" │ │ │ │ │ +1481 {(int)offsetof(struct stringpool_t, stringpool_str440), 65}, │ │ │ │ │ +1482#line 72 "charset_lookup.gperf" │ │ │ │ │ +1483 {(int)offsetof(struct stringpool_t, stringpool_str441), 57}, │ │ │ │ │ +1484#line 204 "charset_lookup.gperf" │ │ │ │ │ +1485 {(int)offsetof(struct stringpool_t, stringpool_str442), 62}, │ │ │ │ │ +1486#line 198 "charset_lookup.gperf" │ │ │ │ │ +1487 {(int)offsetof(struct stringpool_t, stringpool_str443), 59}, │ │ │ │ │ +1488 {-1,-1}, │ │ │ │ │ +1489#line 123 "charset_lookup.gperf" │ │ │ │ │ +1490 {(int)offsetof(struct stringpool_t, stringpool_str445), 46}, │ │ │ │ │ +1491#line 206 "charset_lookup.gperf" │ │ │ │ │ +1492 {(int)offsetof(struct stringpool_t, stringpool_str446), 63}, │ │ │ │ │ +1493 {-1,-1}, │ │ │ │ │ +1494#line 262 "charset_lookup.gperf" │ │ │ │ │ +1495 {(int)offsetof(struct stringpool_t, stringpool_str448), 19}, │ │ │ │ │ +1496#line 224 "charset_lookup.gperf" │ │ │ │ │ +1497 {(int)offsetof(struct stringpool_t, stringpool_str449), 74}, │ │ │ │ │ +1498#line 322 "charset_lookup.gperf" │ │ │ │ │ +1499 {(int)offsetof(struct stringpool_t, stringpool_str450), 21}, │ │ │ │ │ +1500#line 290 "charset_lookup.gperf" │ │ │ │ │ +1501 {(int)offsetof(struct stringpool_t, stringpool_str451), 93}, │ │ │ │ │ +1502#line 142 "charset_lookup.gperf" │ │ │ │ │ +1503 {(int)offsetof(struct stringpool_t, stringpool_str452), 53}, │ │ │ │ │ +1504 {-1,-1}, │ │ │ │ │ +1505#line 327 "charset_lookup.gperf" │ │ │ │ │ +1506 {(int)offsetof(struct stringpool_t, stringpool_str454), 26}, │ │ │ │ │ +1507#line 78 "charset_lookup.gperf" │ │ │ │ │ +1508 {(int)offsetof(struct stringpool_t, stringpool_str455), 61}, │ │ │ │ │ +1509#line 125 "charset_lookup.gperf" │ │ │ │ │ +1510 {(int)offsetof(struct stringpool_t, stringpool_str456), 48}, │ │ │ │ │ +1511#line 86 "charset_lookup.gperf" │ │ │ │ │ +1512 {(int)offsetof(struct stringpool_t, stringpool_str457), 3}, │ │ │ │ │ +1513#line 307 "charset_lookup.gperf" │ │ │ │ │ +1514 {(int)offsetof(struct stringpool_t, stringpool_str458), 20}, │ │ │ │ │ +1515#line 314 "charset_lookup.gperf" │ │ │ │ │ +1516 {(int)offsetof(struct stringpool_t, stringpool_str459), 27}, │ │ │ │ │ +1517#line 311 "charset_lookup.gperf" │ │ │ │ │ +1518 {(int)offsetof(struct stringpool_t, stringpool_str460), 24}, │ │ │ │ │ +1519 {-1,-1}, │ │ │ │ │ +1520#line 79 "charset_lookup.gperf" │ │ │ │ │ +1521 {(int)offsetof(struct stringpool_t, stringpool_str462), 62}, │ │ │ │ │ +1522 {-1,-1}, │ │ │ │ │ +1523#line 365 "charset_lookup.gperf" │ │ │ │ │ +1524 {(int)offsetof(struct stringpool_t, stringpool_str464), 34}, │ │ │ │ │ +1525#line 276 "charset_lookup.gperf" │ │ │ │ │ +1526 {(int)offsetof(struct stringpool_t, stringpool_str465), 91}, │ │ │ │ │ +1527#line 88 "charset_lookup.gperf" │ │ │ │ │ +1528 {(int)offsetof(struct stringpool_t, stringpool_str466), 94}, │ │ │ │ │ +1529 {-1,-1}, │ │ │ │ │ +1530#line 67 "charset_lookup.gperf" │ │ │ │ │ +1531 {(int)offsetof(struct stringpool_t, stringpool_str468), 15}, │ │ │ │ │ +1532 {-1,-1}, │ │ │ │ │ +1533#line 196 "charset_lookup.gperf" │ │ │ │ │ +1534 {(int)offsetof(struct stringpool_t, stringpool_str470), 58}, │ │ │ │ │ +1535#line 312 "charset_lookup.gperf" │ │ │ │ │ +1536 {(int)offsetof(struct stringpool_t, stringpool_str471), 25}, │ │ │ │ │ +1537#line 292 "charset_lookup.gperf" │ │ │ │ │ +1538 {(int)offsetof(struct stringpool_t, stringpool_str472), 2}, │ │ │ │ │ +1539#line 281 "charset_lookup.gperf" │ │ │ │ │ +1540 {(int)offsetof(struct stringpool_t, stringpool_str473), 67}, │ │ │ │ │ +1541#line 99 "charset_lookup.gperf" │ │ │ │ │ +1542 {(int)offsetof(struct stringpool_t, stringpool_str474), 39}, │ │ │ │ │ +1543#line 316 "charset_lookup.gperf" │ │ │ │ │ +1544 {(int)offsetof(struct stringpool_t, stringpool_str475), 70}, │ │ │ │ │ +1545#line 253 "charset_lookup.gperf" │ │ │ │ │ +1546 {(int)offsetof(struct stringpool_t, stringpool_str476), 75}, │ │ │ │ │ +1547#line 317 "charset_lookup.gperf" │ │ │ │ │ +1548 {(int)offsetof(struct stringpool_t, stringpool_str477), 68}, │ │ │ │ │ +1549 {-1,-1}, │ │ │ │ │ +1550#line 335 "charset_lookup.gperf" │ │ │ │ │ +1551 {(int)offsetof(struct stringpool_t, stringpool_str479), 39}, │ │ │ │ │ +1552 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1553#line 95 "charset_lookup.gperf" │ │ │ │ │ +1554 {(int)offsetof(struct stringpool_t, stringpool_str483), 39}, │ │ │ │ │ +1555#line 211 "charset_lookup.gperf" │ │ │ │ │ +1556 {(int)offsetof(struct stringpool_t, stringpool_str484), 68}, │ │ │ │ │ +1557#line 306 "charset_lookup.gperf" │ │ │ │ │ +1558 {(int)offsetof(struct stringpool_t, stringpool_str485), 19}, │ │ │ │ │ +1559 {-1,-1}, │ │ │ │ │ +1560#line 310 "charset_lookup.gperf" │ │ │ │ │ +1561 {(int)offsetof(struct stringpool_t, stringpool_str487), 23}, │ │ │ │ │ +1562 {-1,-1}, {-1,-1}, │ │ │ │ │ +1563#line 116 "charset_lookup.gperf" │ │ │ │ │ +1564 {(int)offsetof(struct stringpool_t, stringpool_str490), 92}, │ │ │ │ │ +1565#line 266 "charset_lookup.gperf" │ │ │ │ │ +1566 {(int)offsetof(struct stringpool_t, stringpool_str491), 90}, │ │ │ │ │ +1567#line 323 "charset_lookup.gperf" │ │ │ │ │ +1568 {(int)offsetof(struct stringpool_t, stringpool_str492), 22}, │ │ │ │ │ +1569#line 13 "charset_lookup.gperf" │ │ │ │ │ +1570 {(int)offsetof(struct stringpool_t, stringpool_str493), 60}, │ │ │ │ │ +1571#line 329 "charset_lookup.gperf" │ │ │ │ │ +1572 {(int)offsetof(struct stringpool_t, stringpool_str494), 29}, │ │ │ │ │ +1573 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1574#line 100 "charset_lookup.gperf" │ │ │ │ │ +1575 {(int)offsetof(struct stringpool_t, stringpool_str499), 40}, │ │ │ │ │ +1576 {-1,-1}, │ │ │ │ │ +1577#line 222 "charset_lookup.gperf" │ │ │ │ │ +1578 {(int)offsetof(struct stringpool_t, stringpool_str501), 72}, │ │ │ │ │ +1579 {-1,-1}, {-1,-1}, │ │ │ │ │ +1580#line 336 "charset_lookup.gperf" │ │ │ │ │ +1581 {(int)offsetof(struct stringpool_t, stringpool_str504), 40}, │ │ │ │ │ +1582 {-1,-1}, │ │ │ │ │ +1583#line 117 "charset_lookup.gperf" │ │ │ │ │ +1584 {(int)offsetof(struct stringpool_t, stringpool_str506), 29}, │ │ │ │ │ +1585#line 304 "charset_lookup.gperf" │ │ │ │ │ +1586 {(int)offsetof(struct stringpool_t, stringpool_str507), 94}, │ │ │ │ │ +1587#line 96 "charset_lookup.gperf" │ │ │ │ │ +1588 {(int)offsetof(struct stringpool_t, stringpool_str508), 40}, │ │ │ │ │ +1589 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1590#line 27 "charset_lookup.gperf" │ │ │ │ │ +1591 {(int)offsetof(struct stringpool_t, stringpool_str514), 16}, │ │ │ │ │ +1592#line 227 "charset_lookup.gperf" │ │ │ │ │ +1593 {(int)offsetof(struct stringpool_t, stringpool_str515), 65}, │ │ │ │ │ +1594#line 315 "charset_lookup.gperf" │ │ │ │ │ +1595 {(int)offsetof(struct stringpool_t, stringpool_str516), 33}, │ │ │ │ │ +1596#line 219 "charset_lookup.gperf" │ │ │ │ │ +1597 {(int)offsetof(struct stringpool_t, stringpool_str517), 28}, │ │ │ │ │ +1598#line 190 "charset_lookup.gperf" │ │ │ │ │ +1599 {(int)offsetof(struct stringpool_t, stringpool_str518), 0}, │ │ │ │ │ +1600 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1601 {-1,-1}, {-1,-1}, │ │ │ │ │ +1602#line 63 "charset_lookup.gperf" │ │ │ │ │ +1603 {(int)offsetof(struct stringpool_t, stringpool_str527), 45}, │ │ │ │ │ +1604 {-1,-1}, │ │ │ │ │ +1605#line 286 "charset_lookup.gperf" │ │ │ │ │ +1606 {(int)offsetof(struct stringpool_t, stringpool_str529), 7}, │ │ │ │ │ +1607 {-1,-1}, │ │ │ │ │ +1608#line 200 "charset_lookup.gperf" │ │ │ │ │ +1609 {(int)offsetof(struct stringpool_t, stringpool_str531), 60}, │ │ │ │ │ +1610#line 126 "charset_lookup.gperf" │ │ │ │ │ +1611 {(int)offsetof(struct stringpool_t, stringpool_str532), 49}, │ │ │ │ │ +1612#line 275 "charset_lookup.gperf" │ │ │ │ │ +1613 {(int)offsetof(struct stringpool_t, stringpool_str533), 91}, │ │ │ │ │ +1614#line 308 "charset_lookup.gperf" │ │ │ │ │ +1615 {(int)offsetof(struct stringpool_t, stringpool_str534), 21}, │ │ │ │ │ +1616 {-1,-1}, │ │ │ │ │ +1617#line 313 "charset_lookup.gperf" │ │ │ │ │ +1618 {(int)offsetof(struct stringpool_t, stringpool_str536), 26}, │ │ │ │ │ +1619#line 179 "charset_lookup.gperf" │ │ │ │ │ +1620 {(int)offsetof(struct stringpool_t, stringpool_str537), 92}, │ │ │ │ │ +1621#line 194 "charset_lookup.gperf" │ │ │ │ │ +1622 {(int)offsetof(struct stringpool_t, stringpool_str538), 57}, │ │ │ │ │ +1623#line 87 "charset_lookup.gperf" │ │ │ │ │ +1624 {(int)offsetof(struct stringpool_t, stringpool_str539), 93}, │ │ │ │ │ +1625 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1626 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1627#line 60 "charset_lookup.gperf" │ │ │ │ │ +1628 {(int)offsetof(struct stringpool_t, stringpool_str549), 32}, │ │ │ │ │ +1629 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1630#line 124 "charset_lookup.gperf" │ │ │ │ │ +1631 {(int)offsetof(struct stringpool_t, stringpool_str553), 47}, │ │ │ │ │ +1632 {-1,-1}, │ │ │ │ │ +1633#line 309 "charset_lookup.gperf" │ │ │ │ │ +1634 {(int)offsetof(struct stringpool_t, stringpool_str555), 22}, │ │ │ │ │ +1635 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1636#line 212 "charset_lookup.gperf" │ │ │ │ │ +1637 {(int)offsetof(struct stringpool_t, stringpool_str561), 70}, │ │ │ │ │ +1638 {-1,-1}, │ │ │ │ │ +1639#line 213 "charset_lookup.gperf" │ │ │ │ │ +1640 {(int)offsetof(struct stringpool_t, stringpool_str563), 68}, │ │ │ │ │ +1641 {-1,-1}, │ │ │ │ │ +1642#line 101 "charset_lookup.gperf" │ │ │ │ │ +1643 {(int)offsetof(struct stringpool_t, stringpool_str565), 38}, │ │ │ │ │ +1644 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1645#line 81 "charset_lookup.gperf" │ │ │ │ │ +1646 {(int)offsetof(struct stringpool_t, stringpool_str572), 65}, │ │ │ │ │ +1647 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1648#line 284 "charset_lookup.gperf" │ │ │ │ │ +1649 {(int)offsetof(struct stringpool_t, stringpool_str576), 3}, │ │ │ │ │ +1650#line 109 "charset_lookup.gperf" │ │ │ │ │ +1651 {(int)offsetof(struct stringpool_t, stringpool_str577), 61}, │ │ │ │ │ +1652#line 252 "charset_lookup.gperf" │ │ │ │ │ +1653 {(int)offsetof(struct stringpool_t, stringpool_str578), 82}, │ │ │ │ │ +1654#line 209 "charset_lookup.gperf" │ │ │ │ │ +1655 {(int)offsetof(struct stringpool_t, stringpool_str579), 70}, │ │ │ │ │ +1656#line 295 "charset_lookup.gperf" │ │ │ │ │ +1657 {(int)offsetof(struct stringpool_t, stringpool_str580), 5}, │ │ │ │ │ +1658#line 298 "charset_lookup.gperf" │ │ │ │ │ +1659 {(int)offsetof(struct stringpool_t, stringpool_str581), 8}, │ │ │ │ │ +1660#line 248 "charset_lookup.gperf" │ │ │ │ │ +1661 {(int)offsetof(struct stringpool_t, stringpool_str582), 78}, │ │ │ │ │ +1662 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1663#line 291 "charset_lookup.gperf" │ │ │ │ │ +1664 {(int)offsetof(struct stringpool_t, stringpool_str586), 3}, │ │ │ │ │ +1665 {-1,-1}, │ │ │ │ │ +1666#line 283 "charset_lookup.gperf" │ │ │ │ │ +1667 {(int)offsetof(struct stringpool_t, stringpool_str588), 67}, │ │ │ │ │ +1668#line 68 "charset_lookup.gperf" │ │ │ │ │ +1669 {(int)offsetof(struct stringpool_t, stringpool_str589), 14}, │ │ │ │ │ +1670 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1671#line 192 "charset_lookup.gperf" │ │ │ │ │ +1672 {(int)offsetof(struct stringpool_t, stringpool_str594), 56}, │ │ │ │ │ +1673 {-1,-1}, │ │ │ │ │ +1674#line 202 "charset_lookup.gperf" │ │ │ │ │ +1675 {(int)offsetof(struct stringpool_t, stringpool_str596), 61}, │ │ │ │ │ +1676#line 254 "charset_lookup.gperf" │ │ │ │ │ +1677 {(int)offsetof(struct stringpool_t, stringpool_str597), 75}, │ │ │ │ │ +1678 {-1,-1}, {-1,-1}, │ │ │ │ │ +1679#line 318 "charset_lookup.gperf" │ │ │ │ │ +1680 {(int)offsetof(struct stringpool_t, stringpool_str600), 66}, │ │ │ │ │ +1681 {-1,-1}, │ │ │ │ │ +1682#line 59 "charset_lookup.gperf" │ │ │ │ │ +1683 {(int)offsetof(struct stringpool_t, stringpool_str602), 89}, │ │ │ │ │ +1684 {-1,-1}, │ │ │ │ │ +1685#line 69 "charset_lookup.gperf" │ │ │ │ │ +1686 {(int)offsetof(struct stringpool_t, stringpool_str604), 68}, │ │ │ │ │ +1687 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1688#line 215 "charset_lookup.gperf" │ │ │ │ │ +1689 {(int)offsetof(struct stringpool_t, stringpool_str609), 68}, │ │ │ │ │ +1690 {-1,-1}, {-1,-1}, │ │ │ │ │ +1691#line 127 "charset_lookup.gperf" │ │ │ │ │ +1692 {(int)offsetof(struct stringpool_t, stringpool_str612), 50}, │ │ │ │ │ +1693#line 21 "charset_lookup.gperf" │ │ │ │ │ +1694 {(int)offsetof(struct stringpool_t, stringpool_str613), 12}, │ │ │ │ │ +1695 {-1,-1}, │ │ │ │ │ +1696#line 282 "charset_lookup.gperf" │ │ │ │ │ +1697 {(int)offsetof(struct stringpool_t, stringpool_str615), 67}, │ │ │ │ │ +1698 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1699#line 65 "charset_lookup.gperf" │ │ │ │ │ +1700 {(int)offsetof(struct stringpool_t, stringpool_str619), 49}, │ │ │ │ │ +1701 {-1,-1}, {-1,-1}, │ │ │ │ │ +1702#line 20 "charset_lookup.gperf" │ │ │ │ │ +1703 {(int)offsetof(struct stringpool_t, stringpool_str622), 12}, │ │ │ │ │ +1704 {-1,-1}, {-1,-1}, │ │ │ │ │ +1705#line 82 "charset_lookup.gperf" │ │ │ │ │ +1706 {(int)offsetof(struct stringpool_t, stringpool_str625), 75}, │ │ │ │ │ +1707 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1708#line 58 "charset_lookup.gperf" │ │ │ │ │ +1709 {(int)offsetof(struct stringpool_t, stringpool_str631), 70}, │ │ │ │ │ +1710 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1711 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1712#line 64 "charset_lookup.gperf" │ │ │ │ │ +1713 {(int)offsetof(struct stringpool_t, stringpool_str641), 47}, │ │ │ │ │ +1714 {-1,-1}, │ │ │ │ │ +1715#line 264 "charset_lookup.gperf" │ │ │ │ │ +1716 {(int)offsetof(struct stringpool_t, stringpool_str643), 24}, │ │ │ │ │ +1717 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1718 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1719 {-1,-1}, │ │ │ │ │ +1720#line 217 "charset_lookup.gperf" │ │ │ │ │ +1721 {(int)offsetof(struct stringpool_t, stringpool_str657), 66}, │ │ │ │ │ +1722 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1723 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1725#line 84 "charset_lookup.gperf" │ │ │ │ │ +1726 {(int)offsetof(struct stringpool_t, stringpool_str675), 31}, │ │ │ │ │ +1727 {-1,-1}, │ │ │ │ │ +1728#line 114 "charset_lookup.gperf" │ │ │ │ │ +1729 {(int)offsetof(struct stringpool_t, stringpool_str677), 44}, │ │ │ │ │ +1730 {-1,-1}, │ │ │ │ │ +1731#line 214 "charset_lookup.gperf" │ │ │ │ │ +1732 {(int)offsetof(struct stringpool_t, stringpool_str679), 68}, │ │ │ │ │ +1733 {-1,-1}, │ │ │ │ │ +1734#line 268 "charset_lookup.gperf" │ │ │ │ │ +1735 {(int)offsetof(struct stringpool_t, stringpool_str681), 88}, │ │ │ │ │ +1736 {-1,-1}, │ │ │ │ │ +1737#line 57 "charset_lookup.gperf" │ │ │ │ │ +1738 {(int)offsetof(struct stringpool_t, stringpool_str683), 16}, │ │ │ │ │ +1739 {-1,-1}, {-1,-1}, │ │ │ │ │ +1740#line 216 "charset_lookup.gperf" │ │ │ │ │ +1741 {(int)offsetof(struct stringpool_t, stringpool_str686), 66}, │ │ │ │ │ +1742 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1743#line 54 "charset_lookup.gperf" │ │ │ │ │ +1744 {(int)offsetof(struct stringpool_t, stringpool_str690), 39}, │ │ │ │ │ +1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1746#line 22 "charset_lookup.gperf" │ │ │ │ │ +1747 {(int)offsetof(struct stringpool_t, stringpool_str695), 11}, │ │ │ │ │ +1748 {-1,-1}, │ │ │ │ │ +1749#line 255 "charset_lookup.gperf" │ │ │ │ │ +1750 {(int)offsetof(struct stringpool_t, stringpool_str697), 83}, │ │ │ │ │ +1751 {-1,-1}, {-1,-1}, │ │ │ │ │ +1752#line 66 "charset_lookup.gperf" │ │ │ │ │ +1753 {(int)offsetof(struct stringpool_t, stringpool_str700), 50}, │ │ │ │ │ +1754 {-1,-1}, │ │ │ │ │ +1755#line 111 "charset_lookup.gperf" │ │ │ │ │ +1756 {(int)offsetof(struct stringpool_t, stringpool_str702), 62}, │ │ │ │ │ +1757 {-1,-1}, │ │ │ │ │ +1758#line 18 "charset_lookup.gperf" │ │ │ │ │ +1759 {(int)offsetof(struct stringpool_t, stringpool_str704), 11}, │ │ │ │ │ +1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1762#line 56 "charset_lookup.gperf" │ │ │ │ │ +1763 {(int)offsetof(struct stringpool_t, stringpool_str715), 40}, │ │ │ │ │ +1764 {-1,-1}, │ │ │ │ │ +1765#line 11 "charset_lookup.gperf" │ │ │ │ │ +1766 {(int)offsetof(struct stringpool_t, stringpool_str717), 92}, │ │ │ │ │ +1767 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1768#line 260 "charset_lookup.gperf" │ │ │ │ │ +1769 {(int)offsetof(struct stringpool_t, stringpool_str721), 25}, │ │ │ │ │ +1770 {-1,-1}, │ │ │ │ │ +1771#line 249 "charset_lookup.gperf" │ │ │ │ │ +1772 {(int)offsetof(struct stringpool_t, stringpool_str723), 79}, │ │ │ │ │ +1773 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1774#line 12 "charset_lookup.gperf" │ │ │ │ │ +1775 {(int)offsetof(struct stringpool_t, stringpool_str729), 92}, │ │ │ │ │ +1776 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1777#line 83 "charset_lookup.gperf" │ │ │ │ │ +1778 {(int)offsetof(struct stringpool_t, stringpool_str735), 30}, │ │ │ │ │ +1779 {-1,-1}, │ │ │ │ │ +1780#line 115 "charset_lookup.gperf" │ │ │ │ │ +1781 {(int)offsetof(struct stringpool_t, stringpool_str737), 18}, │ │ │ │ │ +1782 {-1,-1}, {-1,-1}, │ │ │ │ │ +1783#line 297 "charset_lookup.gperf" │ │ │ │ │ +1784 {(int)offsetof(struct stringpool_t, stringpool_str740), 9}, │ │ │ │ │ +1785 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1786 {-1,-1}, {-1,-1}, │ │ │ │ │ +1787#line 265 "charset_lookup.gperf" │ │ │ │ │ +1788 {(int)offsetof(struct stringpool_t, stringpool_str749), 23}, │ │ │ │ │ +1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1791 {-1,-1}, {-1,-1}, │ │ │ │ │ +1792#line 218 "charset_lookup.gperf" │ │ │ │ │ +1793 {(int)offsetof(struct stringpool_t, stringpool_str764), 66}, │ │ │ │ │ +1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1799#line 247 "charset_lookup.gperf" │ │ │ │ │ +1800 {(int)offsetof(struct stringpool_t, stringpool_str793), 77}, │ │ │ │ │ +1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1803 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1804 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1805#line 257 "charset_lookup.gperf" │ │ │ │ │ +1806 {(int)offsetof(struct stringpool_t, stringpool_str815), 85}, │ │ │ │ │ +1807 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1808#line 263 "charset_lookup.gperf" │ │ │ │ │ +1809 {(int)offsetof(struct stringpool_t, stringpool_str822), 22}, │ │ │ │ │ +1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1811#line 246 "charset_lookup.gperf" │ │ │ │ │ +1812 {(int)offsetof(struct stringpool_t, stringpool_str827), 76}, │ │ │ │ │ +1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1814 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1815 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1816 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1820#line 305 "charset_lookup.gperf" │ │ │ │ │ +1821 {(int)offsetof(struct stringpool_t, stringpool_str868), 26}, │ │ │ │ │ +1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1823 {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1824#line 258 "charset_lookup.gperf" │ │ │ │ │ +1825 {(int)offsetof(struct stringpool_t, stringpool_str878), 86}, │ │ │ │ │ +1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1829#line 277 "charset_lookup.gperf" │ │ │ │ │ +1830 {(int)offsetof(struct stringpool_t, stringpool_str897), 91}, │ │ │ │ │ +1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1833 {-1,-1}, │ │ │ │ │ +1834#line 250 "charset_lookup.gperf" │ │ │ │ │ +1835 {(int)offsetof(struct stringpool_t, stringpool_str911), 80}, │ │ │ │ │ +1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1844 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1845 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1846 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1847 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1848 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1849 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1850 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1851 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1852 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1853 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1854 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1855 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1856 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1857 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1858 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1859 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1860 {-1,-1}, │ │ │ │ │ +1861#line 55 "charset_lookup.gperf" │ │ │ │ │ +1862 {(int)offsetof(struct stringpool_t, stringpool_str1057), 38}, │ │ │ │ │ +1863 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1864 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, │ │ │ │ │ +1865#line 251 "charset_lookup.gperf" │ │ │ │ │ +1866 {(int)offsetof(struct stringpool_t, stringpool_str1069), 81} │ │ │ │ │ +1867 }; │ │ │ │ │ +1868 │ │ │ │ │ +1869 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) │ │ │ │ │ +1870 { │ │ │ │ │ +1871 register unsigned int key = hash_charset (str, len); │ │ │ │ │ +1872 │ │ │ │ │ +1873 if (key <= MAX_HASH_VALUE) │ │ │ │ │ +1874 { │ │ │ │ │ +1875 register int o = wordlist[key].alias_pos; │ │ │ │ │ +1876 if (o >= 0) │ │ │ │ │ +1877 { │ │ │ │ │ +1878 register const char *s = o + stringpool; │ │ │ │ │ +1879 │ │ │ │ │ +1880 if (*str == *s && !strcmp (str + 1, s + 1)) │ │ │ │ │ +1881 return &wordlist[key]; │ │ │ │ │ +1882 } │ │ │ │ │ +1883 } │ │ │ │ │ +1884 } │ │ │ │ │ +1885 return 0; │ │ │ │ │ +1886} │ │ │ │ │ +1887#line 382 "charset_lookup.gperf" │ │ │ │ │ +1888 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00482_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/path.h Source File │ │ │ │ +FreeTDS API: include/freetds/stream.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
path.h
│ │ │ │ +
stream.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2023 Frediano Ziglio
│ │ │ │ +
2 * Copyright (C) 2013 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,56 +96,119 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_eI8iNo9FExd6aRlc3im79S_
│ │ │ │ -
21#define _tdsguard_eI8iNo9FExd6aRlc3im79S_
│ │ │ │ +
20#ifndef _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_
│ │ │ │ +
21#define _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_
│ │ │ │
22
│ │ │ │ -
23#ifdef _WIN32
│ │ │ │ -
24#include <wchar.h>
│ │ │ │ +
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +
24#error Include tds.h first
│ │ │ │
25#endif
│ │ │ │
26
│ │ │ │
27#include <freetds/pushvis.h>
│ │ │ │
28
│ │ │ │ -
29#ifdef _WIN32
│ │ │ │ -
30#define TDS_SDIR_SEPARATOR L"\\"
│ │ │ │ -
31typedef wchar_t tds_dir_char;
│ │ │ │ -
32#define tds_dir_open _wfopen
│ │ │ │ -
33#define tds_dir_getenv _wgetenv
│ │ │ │ -
34#define tds_dir_dup _wcsdup
│ │ │ │ -
35#define tds_dir_len wcslen
│ │ │ │ -
36#define tds_dir_cmp wcscmp
│ │ │ │ -
37#define tds_dir_snprintf _snwprintf
│ │ │ │ -
38#define TDS_DIR(s) L ## s
│ │ │ │ -
39#define tdsPRIdir "ls"
│ │ │ │ -
40tds_dir_char *tds_dir_from_cstr(const char *path);
│ │ │ │ -
41#else
│ │ │ │ -
42#define TDS_SDIR_SEPARATOR "/"
│ │ │ │ -
43typedef char tds_dir_char;
│ │ │ │ -
44#define tds_dir_open fopen
│ │ │ │ -
45#define tds_dir_getenv getenv
│ │ │ │ -
46#define tds_dir_dup strdup
│ │ │ │ -
47#define tds_dir_len strlen
│ │ │ │ -
48#define tds_dir_cmp strcmp
│ │ │ │ -
49#define tds_dir_snprintf snprintf
│ │ │ │ -
50#define TDS_DIR(s) s
│ │ │ │ -
51#define tdsPRIdir "s"
│ │ │ │ -
52#define tds_dir_from_cstr(s) strdup(s)
│ │ │ │ -
53#endif
│ │ │ │ -
54
│ │ │ │ -
55tds_dir_char *tds_get_homedir(void);
│ │ │ │ -
56tds_dir_char* tds_join_path(const tds_dir_char *dir, const tds_dir_char *file);
│ │ │ │ -
57tds_dir_char *tds_get_home_file(const tds_dir_char *file);
│ │ │ │ -
58
│ │ │ │ -
59#include <freetds/popvis.h>
│ │ │ │ -
60
│ │ │ │ -
61#endif /* _tdsguard_eI8iNo9FExd6aRlc3im79S_ */
│ │ │ │ +
│ │ │ │ +
30typedef struct tds_input_stream {
│ │ │ │ +
35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
37
│ │ │ │ +
│ │ │ │ +
39typedef struct tds_output_stream {
│ │ │ │ +
41 int (*write)(struct tds_output_stream *stream, size_t len);
│ │ │ │ +
50 char *buffer;
│ │ │ │ +
51 size_t buf_len;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
53
│ │ │ │ +
55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION direction,
│ │ │ │ +
56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);
│ │ │ │ +
58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);
│ │ │ │ +
59
│ │ │ │ +
60/* Additional streams */
│ │ │ │ +
61
│ │ │ │ +
│ │ │ │ +
63typedef struct tds_datain_stream {
│ │ │ │ +
64 TDSINSTREAM stream;
│ │ │ │ +
65 size_t wire_size;
│ │ │ │ +
66 TDSSOCKET *tds;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_t wire_size);
│ │ │ │ +
70
│ │ │ │ +
│ │ │ │ +
72typedef struct tds_dataout_stream {
│ │ │ │ +
73 TDSOUTSTREAM stream;
│ │ │ │ +
74 TDSSOCKET *tds;
│ │ │ │ +
75 size_t written;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
77
│ │ │ │ + │ │ │ │ +
79
│ │ │ │ +
│ │ │ │ +
81typedef struct tds_staticin_stream {
│ │ │ │ +
82 TDSINSTREAM stream;
│ │ │ │ +
83 const char *buffer;
│ │ │ │ +
84 size_t buf_left;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
86
│ │ │ │ +
87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, size_t len);
│ │ │ │ +
88
│ │ │ │ +
│ │ │ │ +
92typedef struct tds_staticout_stream {
│ │ │ │ +
93 TDSOUTSTREAM stream;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
95
│ │ │ │ +
96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_t len);
│ │ │ │ +
97
│ │ │ │ +
│ │ │ │ +
99typedef struct tds_dynamic_stream {
│ │ │ │ +
100 TDSOUTSTREAM stream;
│ │ │ │ +
102 void **buf;
│ │ │ │ +
104 size_t allocated;
│ │ │ │ +
106 size_t size;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
108
│ │ │ │ +
109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_t allocated);
│ │ │ │ +
110
│ │ │ │ +
111#include <freetds/popvis.h>
│ │ │ │ +
112
│ │ │ │ +
113#endif
│ │ │ │ +
114
│ │ │ │ +
TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
Initialize a dynamic output stream.
Definition stream.c:354
│ │ │ │ +
TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
Reads and writes from a stream to another.
Definition stream.c:163
│ │ │ │ +
TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
Reads and writes from a stream converting characters.
Definition stream.c:71
│ │ │ │ +
void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_t len)
Initialize an output stream for write into a static allocated buffer.
Definition stream.c:313
│ │ │ │ +
void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
Initialize a data output stream.
Definition stream.c:244
│ │ │ │ +
void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr, size_t len)
Initialize an input stream for read from a static allocated buffer.
Definition stream.c:286
│ │ │ │ +
void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
Initialize a data input stream.
Definition stream.c:204
│ │ │ │ +
Definition iconv.h:92
│ │ │ │ +
define a stream of data used for input
Definition stream.h:30
│ │ │ │ +
int(* read)(struct tds_input_stream *stream, void *ptr, size_t len)
read some data Return 0 if end of stream Return <0 if error (actually not defined)
Definition stream.h:35
│ │ │ │ +
define a stream of data used for output
Definition stream.h:39
│ │ │ │ +
char * buffer
write buffer.
Definition stream.h:50
│ │ │ │ +
int(* write)(struct tds_output_stream *stream, size_t len)
write len bytes from buffer, return <0 if error or len
Definition stream.h:41
│ │ │ │ +
input stream to read data from tds protocol
Definition stream.h:63
│ │ │ │ +
size_t wire_size
bytes still to read
Definition stream.h:65
│ │ │ │ +
output stream to write data to tds protocol
Definition stream.h:72
│ │ │ │ +
input stream to read data from a static buffer
Definition stream.h:81
│ │ │ │ +
output stream to write data to a static buffer.
Definition stream.h:92
│ │ │ │ +
output stream to write data to a dynamic buffer
Definition stream.h:99
│ │ │ │ +
void ** buf
where is stored the pointer
Definition stream.h:102
│ │ │ │ +
size_t size
size of data inside buffer
Definition stream.h:106
│ │ │ │ +
size_t allocated
currently allocated buffer
Definition stream.h:104
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -path.h │ │ │ │ │ +stream.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2023 Frediano Ziglio │ │ │ │ │ +2 * Copyright (C) 2013 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,52 +20,170 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_eI8iNo9FExd6aRlc3im79S_ │ │ │ │ │ -21#define _tdsguard_eI8iNo9FExd6aRlc3im79S_ │ │ │ │ │ +20#ifndef _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_ │ │ │ │ │ +21#define _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_ │ │ │ │ │ 22 │ │ │ │ │ -23#ifdef _WIN32 │ │ │ │ │ -24#include │ │ │ │ │ +23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +24#error Include tds.h first │ │ │ │ │ 25#endif │ │ │ │ │ 26 │ │ │ │ │ 27#include │ │ │ │ │ 28 │ │ │ │ │ -29#ifdef _WIN32 │ │ │ │ │ -30#define TDS_SDIR_SEPARATOR L"\\" │ │ │ │ │ -31typedef wchar_t tds_dir_char; │ │ │ │ │ -32#define tds_dir_open _wfopen │ │ │ │ │ -33#define tds_dir_getenv _wgetenv │ │ │ │ │ -34#define tds_dir_dup _wcsdup │ │ │ │ │ -35#define tds_dir_len wcslen │ │ │ │ │ -36#define tds_dir_cmp wcscmp │ │ │ │ │ -37#define tds_dir_snprintf _snwprintf │ │ │ │ │ -38#define TDS_DIR(s) L ## s │ │ │ │ │ -39#define tdsPRIdir "ls" │ │ │ │ │ -40tds_dir_char *tds_dir_from_cstr(const char *path); │ │ │ │ │ -41#else │ │ │ │ │ -42#define TDS_SDIR_SEPARATOR "/" │ │ │ │ │ -43typedef char tds_dir_char; │ │ │ │ │ -44#define tds_dir_open fopen │ │ │ │ │ -45#define tds_dir_getenv getenv │ │ │ │ │ -46#define tds_dir_dup strdup │ │ │ │ │ -47#define tds_dir_len strlen │ │ │ │ │ -48#define tds_dir_cmp strcmp │ │ │ │ │ -49#define tds_dir_snprintf snprintf │ │ │ │ │ -50#define TDS_DIR(s) s │ │ │ │ │ -51#define tdsPRIdir "s" │ │ │ │ │ -52#define tds_dir_from_cstr(s) strdup(s) │ │ │ │ │ -53#endif │ │ │ │ │ -54 │ │ │ │ │ -55tds_dir_char *tds_get_homedir(void); │ │ │ │ │ -56tds_dir_char* tds_join_path(const tds_dir_char *dir, const tds_dir_char │ │ │ │ │ -*file); │ │ │ │ │ -57tds_dir_char *tds_get_home_file(const tds_dir_char *file); │ │ │ │ │ -58 │ │ │ │ │ -59#include │ │ │ │ │ -60 │ │ │ │ │ -61#endif /* _tdsguard_eI8iNo9FExd6aRlc3im79S_ */ │ │ │ │ │ +30typedef struct tds_input_stream { │ │ │ │ │ +35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len); │ │ │ │ │ +36} TDSINSTREAM; │ │ │ │ │ +37 │ │ │ │ │ +39typedef struct tds_output_stream { │ │ │ │ │ +41 int (*write)(struct tds_output_stream *stream, size_t len); │ │ │ │ │ +50 char *buffer; │ │ │ │ │ +51 size_t buf_len; │ │ │ │ │ +52} TDSOUTSTREAM; │ │ │ │ │ +53 │ │ │ │ │ +55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_ │ │ │ │ │ +DIRECTION direction, │ │ │ │ │ +56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream); │ │ │ │ │ +58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream); │ │ │ │ │ +59 │ │ │ │ │ +60/* Additional streams */ │ │ │ │ │ +61 │ │ │ │ │ +63typedef struct tds_datain_stream { │ │ │ │ │ +64 TDSINSTREAM stream; │ │ │ │ │ +65 size_t wire_size; │ │ │ │ │ +66 TDSSOCKET *tds; │ │ │ │ │ +67} TDSDATAINSTREAM; │ │ │ │ │ +68 │ │ │ │ │ +69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_ │ │ │ │ │ +t wire_size); │ │ │ │ │ +70 │ │ │ │ │ +72typedef struct tds_dataout_stream { │ │ │ │ │ +73 TDSOUTSTREAM stream; │ │ │ │ │ +74 TDSSOCKET *tds; │ │ │ │ │ +75 size_t written; │ │ │ │ │ +76} TDSDATAOUTSTREAM; │ │ │ │ │ +77 │ │ │ │ │ +78void tds_dataout_stream_init(TDSDATAOUTSTREAM * stream, TDSSOCKET * tds); │ │ │ │ │ +79 │ │ │ │ │ +81typedef struct tds_staticin_stream { │ │ │ │ │ +82 TDSINSTREAM stream; │ │ │ │ │ +83 const char *buffer; │ │ │ │ │ +84 size_t buf_left; │ │ │ │ │ +85} TDSSTATICINSTREAM; │ │ │ │ │ +86 │ │ │ │ │ +87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, │ │ │ │ │ +size_t len); │ │ │ │ │ +88 │ │ │ │ │ +92typedef struct tds_staticout_stream { │ │ │ │ │ +93 TDSOUTSTREAM stream; │ │ │ │ │ +94} TDSSTATICOUTSTREAM; │ │ │ │ │ +95 │ │ │ │ │ +96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_ │ │ │ │ │ +t len); │ │ │ │ │ +97 │ │ │ │ │ +99typedef struct tds_dynamic_stream { │ │ │ │ │ +100 TDSOUTSTREAM stream; │ │ │ │ │ +102 void **buf; │ │ │ │ │ +104 size_t allocated; │ │ │ │ │ +106 size_t size; │ │ │ │ │ +107} TDSDYNAMICSTREAM; │ │ │ │ │ +108 │ │ │ │ │ +109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_ │ │ │ │ │ +t allocated); │ │ │ │ │ +110 │ │ │ │ │ +111#include │ │ │ │ │ +112 │ │ │ │ │ +113#endif │ │ │ │ │ +114 │ │ │ │ │ +tds_dynamic_stream_init │ │ │ │ │ +TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_ │ │ │ │ │ +t allocated) │ │ │ │ │ +Initialize a dynamic output stream. │ │ │ │ │ +Definition stream.c:354 │ │ │ │ │ +tds_copy_stream │ │ │ │ │ +TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream) │ │ │ │ │ +Reads and writes from a stream to another. │ │ │ │ │ +Definition stream.c:163 │ │ │ │ │ +tds_convert_stream │ │ │ │ │ +TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_ │ │ │ │ │ +DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream) │ │ │ │ │ +Reads and writes from a stream converting characters. │ │ │ │ │ +Definition stream.c:71 │ │ │ │ │ +tds_staticout_stream_init │ │ │ │ │ +void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_ │ │ │ │ │ +t len) │ │ │ │ │ +Initialize an output stream for write into a static allocated buffer. │ │ │ │ │ +Definition stream.c:313 │ │ │ │ │ +tds_dataout_stream_init │ │ │ │ │ +void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds) │ │ │ │ │ +Initialize a data output stream. │ │ │ │ │ +Definition stream.c:244 │ │ │ │ │ +tds_staticin_stream_init │ │ │ │ │ +void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr, size_ │ │ │ │ │ +t len) │ │ │ │ │ +Initialize an input stream for read from a static allocated buffer. │ │ │ │ │ +Definition stream.c:286 │ │ │ │ │ +tds_datain_stream_init │ │ │ │ │ +void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_ │ │ │ │ │ +t wire_size) │ │ │ │ │ +Initialize a data input stream. │ │ │ │ │ +Definition stream.c:204 │ │ │ │ │ +tdsiconvinfo │ │ │ │ │ +Definition iconv.h:92 │ │ │ │ │ +tds_input_stream │ │ │ │ │ +define a stream of data used for input │ │ │ │ │ +Definition stream.h:30 │ │ │ │ │ +tds_input_stream::read │ │ │ │ │ +int(* read)(struct tds_input_stream *stream, void *ptr, size_t len) │ │ │ │ │ +read some data Return 0 if end of stream Return <0 if error (actually not │ │ │ │ │ +defined) │ │ │ │ │ +Definition stream.h:35 │ │ │ │ │ +tds_output_stream │ │ │ │ │ +define a stream of data used for output │ │ │ │ │ +Definition stream.h:39 │ │ │ │ │ +tds_output_stream::buffer │ │ │ │ │ +char * buffer │ │ │ │ │ +write buffer. │ │ │ │ │ +Definition stream.h:50 │ │ │ │ │ +tds_output_stream::write │ │ │ │ │ +int(* write)(struct tds_output_stream *stream, size_t len) │ │ │ │ │ +write len bytes from buffer, return <0 if error or len │ │ │ │ │ +Definition stream.h:41 │ │ │ │ │ +tds_datain_stream │ │ │ │ │ +input stream to read data from tds protocol │ │ │ │ │ +Definition stream.h:63 │ │ │ │ │ +tds_datain_stream::wire_size │ │ │ │ │ +size_t wire_size │ │ │ │ │ +bytes still to read │ │ │ │ │ +Definition stream.h:65 │ │ │ │ │ +tds_dataout_stream │ │ │ │ │ +output stream to write data to tds protocol │ │ │ │ │ +Definition stream.h:72 │ │ │ │ │ +tds_staticin_stream │ │ │ │ │ +input stream to read data from a static buffer │ │ │ │ │ +Definition stream.h:81 │ │ │ │ │ +tds_staticout_stream │ │ │ │ │ +output stream to write data to a static buffer. │ │ │ │ │ +Definition stream.h:92 │ │ │ │ │ +tds_dynamic_stream │ │ │ │ │ +output stream to write data to a dynamic buffer │ │ │ │ │ +Definition stream.h:99 │ │ │ │ │ +tds_dynamic_stream::buf │ │ │ │ │ +void ** buf │ │ │ │ │ +where is stored the pointer │ │ │ │ │ +Definition stream.h:102 │ │ │ │ │ +tds_dynamic_stream::size │ │ │ │ │ +size_t size │ │ │ │ │ +size of data inside buffer │ │ │ │ │ +Definition stream.h:106 │ │ │ │ │ +tds_dynamic_stream::allocated │ │ │ │ │ +size_t allocated │ │ │ │ │ +currently allocated buffer │ │ │ │ │ +Definition stream.h:104 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00485_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/md5.h Source File │ │ │ │ +FreeTDS API: include/freetds/iconv.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,72 +70,169 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
md5.h
│ │ │ │ +
iconv.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#ifndef _tdsguard_d0MZPmUZs0d3gpgxVUiFES_
│ │ │ │ -
2#define _tdsguard_d0MZPmUZs0d3gpgxVUiFES_
│ │ │ │ -
3
│ │ │ │ -
4#ifndef HAVE_NETTLE
│ │ │ │ -
5
│ │ │ │ -
6#include <freetds/pushvis.h>
│ │ │ │ -
7
│ │ │ │ -
│ │ │ │ -
8struct MD5Context {
│ │ │ │ -
9 uint32_t buf[4];
│ │ │ │ -
10 uint64_t bytes;
│ │ │ │ -
11 uint32_t in[16];
│ │ │ │ -
12};
│ │ │ │ -
│ │ │ │ -
13
│ │ │ │ -
14void MD5Init(struct MD5Context *context);
│ │ │ │ -
15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);
│ │ │ │ -
16void MD5Final(struct MD5Context *context, uint8_t *digest);
│ │ │ │ -
17
│ │ │ │ -
18/*
│ │ │ │ -
19 * This is needed to make RSAREF happy on some MS-DOS compilers.
│ │ │ │ -
20 */
│ │ │ │ -
21typedef struct MD5Context MD5_CTX;
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_c6YssGkHHqKMDRUMOWVASl_
│ │ │ │ +
21#define _tdsguard_c6YssGkHHqKMDRUMOWVASl_
│ │ │ │
22
│ │ │ │ -
23#include <freetds/popvis.h>
│ │ │ │ -
24
│ │ │ │ +
23#if HAVE_ICONV
│ │ │ │ +
24#include <iconv.h>
│ │ │ │
25#else
│ │ │ │ -
26
│ │ │ │ -
27#include <nettle/md5.h>
│ │ │ │ -
28
│ │ │ │ -
29typedef struct md5_ctx MD5_CTX;
│ │ │ │ +
26/* Define iconv_t for src/replacements/iconv.c. */
│ │ │ │ +
27#undef iconv_t
│ │ │ │ +
28typedef void *iconv_t;
│ │ │ │ +
29#endif /* HAVE_ICONV */
│ │ │ │
30
│ │ │ │ -
31static inline void MD5Init(MD5_CTX *ctx)
│ │ │ │ -
32{
│ │ │ │ -
33 nettle_md5_init(ctx);
│ │ │ │ -
34}
│ │ │ │ -
35
│ │ │ │ -
36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)
│ │ │ │ -
37{
│ │ │ │ -
38 nettle_md5_update(ctx, len, buf);
│ │ │ │ -
39}
│ │ │ │ -
40
│ │ │ │ -
41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)
│ │ │ │ -
42{
│ │ │ │ -
43 nettle_md5_digest(ctx, 16, digest);
│ │ │ │ -
44}
│ │ │ │ -
45
│ │ │ │ -
46#endif
│ │ │ │ -
47
│ │ │ │ -
48#endif /* !_tdsguard_d0MZPmUZs0d3gpgxVUiFES_ */
│ │ │ │ -
Definition md5.h:8
│ │ │ │ +
31#if HAVE_ERRNO_H
│ │ │ │ +
32#include <errno.h>
│ │ │ │ +
33#endif
│ │ │ │ +
34
│ │ │ │ +
35#if HAVE_WCHAR_H
│ │ │ │ +
36#include <wchar.h>
│ │ │ │ +
37#endif
│ │ │ │ +
38
│ │ │ │ +
39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */
│ │ │ │ +
40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,
│ │ │ │ +
41 have EILSEQ in a different header. On these systems, define EILSEQ
│ │ │ │ +
42 ourselves. */
│ │ │ │ +
43#ifndef EILSEQ
│ │ │ │ +
44# define EILSEQ ENOENT
│ │ │ │ +
45#endif
│ │ │ │ +
46
│ │ │ │ +
47#if HAVE_STDLIB_H
│ │ │ │ +
48#include <stdlib.h>
│ │ │ │ +
49#endif /* HAVE_STDLIB_H */
│ │ │ │ +
50
│ │ │ │ +
51#include <freetds/pushvis.h>
│ │ │ │ +
52
│ │ │ │ +
53#ifdef __cplusplus
│ │ │ │ +
54extern "C"
│ │ │ │ +
55{
│ │ │ │ +
56#endif
│ │ │ │ +
57
│ │ │ │ +
58#if ! HAVE_ICONV
│ │ │ │ +
59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);
│ │ │ │ +
60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
│ │ │ │ +
61int tds_sys_iconv_close(iconv_t cd);
│ │ │ │ +
62#else
│ │ │ │ +
63#define tds_sys_iconv_open iconv_open
│ │ │ │ +
64#define tds_sys_iconv iconv
│ │ │ │ +
65#define tds_sys_iconv_close iconv_close
│ │ │ │ +
66#endif /* !HAVE_ICONV */
│ │ │ │ +
67
│ │ │ │ +
68
│ │ │ │ +
69typedef enum
│ │ │ │ +
70{ to_server, to_client } TDS_ICONV_DIRECTION;
│ │ │ │ +
71
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
73{
│ │ │ │ +
74 const char *alias;
│ │ │ │ +
75 int canonic;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
77
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
79 unsigned int e2big:1;
│ │ │ │ +
80 unsigned int eilseq:1;
│ │ │ │ +
81 unsigned int einval:1;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
83
│ │ │ │ +
│ │ │ │ +
84typedef struct tdsiconvdir
│ │ │ │ +
85{
│ │ │ │ +
86 TDS_ENCODING charset;
│ │ │ │ +
87
│ │ │ │ +
88 iconv_t cd;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
90
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
92{
│ │ │ │ +
93 struct tdsiconvdir to, from;
│ │ │ │ +
94
│ │ │ │ +
95#define TDS_ENCODING_MEMCPY 1
│ │ │ │ +
96 unsigned int flags;
│ │ │ │ +
97
│ │ │ │ +
98 /*
│ │ │ │ +
99 * Suppress error messages that would otherwise be emitted by tds_iconv().
│ │ │ │ +
100 * Functions that process large buffers ask tds_iconv to convert it in "chunks".
│ │ │ │ +
101 * We don't want to emit spurious EILSEQ errors or multiple errors for one
│ │ │ │ +
102 * buffer. tds_iconv() checks this structure before emiting a message, and
│ │ │ │ +
103 * adds to it whenever it emits one. Callers that handle a particular situation themselves
│ │ │ │ +
104 * can prepopulate it.
│ │ │ │ +
105 */
│ │ │ │ + │ │ │ │ +
107
│ │ │ │ +
108};
│ │ │ │ +
│ │ │ │ +
109
│ │ │ │ +
110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */
│ │ │ │ +
111#ifndef ICONV_CONST
│ │ │ │ +
112# define ICONV_CONST const
│ │ │ │ +
113#endif
│ │ │ │ +
114
│ │ │ │ +
115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION io,
│ │ │ │ +
116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
│ │ │ │ +
117int tds_canonical_charset(const char *charset_name);
│ │ │ │ +
118const char *tds_canonical_charset_name(const char *charset_name);
│ │ │ │ +
119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, const char *server_charset);
│ │ │ │ +
120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int canonic_server);
│ │ │ │ +
121
│ │ │ │ +
122#ifdef __cplusplus
│ │ │ │ +
123}
│ │ │ │ +
124#endif
│ │ │ │ +
125
│ │ │ │ +
126#include <freetds/popvis.h>
│ │ │ │ +
127
│ │ │ │ +
128#endif /* _tdsguard_c6YssGkHHqKMDRUMOWVASl_ */
│ │ │ │ +
TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server)
Get a iconv info structure, allocate and initialize if needed.
Definition iconv.c:762
│ │ │ │ +
const char * tds_canonical_charset_name(const char *charset_name)
Determine canonical iconv character set name.
Definition iconv.c:986
│ │ │ │ +
size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
Wrapper around iconv(3).
Definition iconv.c:593
│ │ │ │ +
iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)
Inputs are FreeTDS canonical names, no other.
Definition iconv.c:345
│ │ │ │ +
int tds_canonical_charset(const char *charset_name)
Determine canonical iconv character set.
Definition iconv.c:974
│ │ │ │ +
Definition iconv.h:73
│ │ │ │ +
Definition iconv.h:78
│ │ │ │ +
Definition iconv.h:85
│ │ │ │ +
Definition iconv.h:92
│ │ │ │ +
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │ +
Definition tds.h:1077
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,60 +1,182 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -md5.h │ │ │ │ │ -1#ifndef _tdsguard_d0MZPmUZs0d3gpgxVUiFES_ │ │ │ │ │ -2#define _tdsguard_d0MZPmUZs0d3gpgxVUiFES_ │ │ │ │ │ -3 │ │ │ │ │ -4#ifndef HAVE_NETTLE │ │ │ │ │ -5 │ │ │ │ │ -6#include │ │ │ │ │ -7 │ │ │ │ │ -8struct MD5Context { │ │ │ │ │ -9 uint32_t buf[4]; │ │ │ │ │ -10 uint64_t bytes; │ │ │ │ │ -11 uint32_t in[16]; │ │ │ │ │ -12}; │ │ │ │ │ -13 │ │ │ │ │ -14void MD5Init(struct MD5Context *context); │ │ │ │ │ -15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len); │ │ │ │ │ -16void MD5Final(struct MD5Context *context, uint8_t *digest); │ │ │ │ │ -17 │ │ │ │ │ -18/* │ │ │ │ │ -19 * This is needed to make RSAREF happy on some MS-DOS compilers. │ │ │ │ │ -20 */ │ │ │ │ │ -21typedef struct MD5Context MD5_CTX; │ │ │ │ │ +iconv.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_c6YssGkHHqKMDRUMOWVASl_ │ │ │ │ │ +21#define _tdsguard_c6YssGkHHqKMDRUMOWVASl_ │ │ │ │ │ 22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ +23#if HAVE_ICONV │ │ │ │ │ +24#include │ │ │ │ │ 25#else │ │ │ │ │ -26 │ │ │ │ │ -27#include │ │ │ │ │ -28 │ │ │ │ │ -29typedef struct md5_ctx MD5_CTX; │ │ │ │ │ +26/* Define iconv_t for src/replacements/iconv.c. */ │ │ │ │ │ +27#undef iconv_t │ │ │ │ │ +28typedef void *iconv_t; │ │ │ │ │ +29#endif /* HAVE_ICONV */ │ │ │ │ │ 30 │ │ │ │ │ -31static inline void MD5Init(MD5_CTX *ctx) │ │ │ │ │ -32{ │ │ │ │ │ -33 nettle_md5_init(ctx); │ │ │ │ │ -34} │ │ │ │ │ -35 │ │ │ │ │ -36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len) │ │ │ │ │ -37{ │ │ │ │ │ -38 nettle_md5_update(ctx, len, buf); │ │ │ │ │ -39} │ │ │ │ │ -40 │ │ │ │ │ -41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest) │ │ │ │ │ -42{ │ │ │ │ │ -43 nettle_md5_digest(ctx, 16, digest); │ │ │ │ │ -44} │ │ │ │ │ -45 │ │ │ │ │ -46#endif │ │ │ │ │ -47 │ │ │ │ │ -48#endif /* !_tdsguard_d0MZPmUZs0d3gpgxVUiFES_ */ │ │ │ │ │ -MD5Context │ │ │ │ │ -Definition md5.h:8 │ │ │ │ │ +31#if HAVE_ERRNO_H │ │ │ │ │ +32#include │ │ │ │ │ +33#endif │ │ │ │ │ +34 │ │ │ │ │ +35#if HAVE_WCHAR_H │ │ │ │ │ +36#include │ │ │ │ │ +37#endif │ │ │ │ │ +38 │ │ │ │ │ +39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */ │ │ │ │ │ +40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS, │ │ │ │ │ +41 have EILSEQ in a different header. On these systems, define EILSEQ │ │ │ │ │ +42 ourselves. */ │ │ │ │ │ +43#ifndef EILSEQ │ │ │ │ │ +44# define EILSEQ ENOENT │ │ │ │ │ +45#endif │ │ │ │ │ +46 │ │ │ │ │ +47#if HAVE_STDLIB_H │ │ │ │ │ +48#include │ │ │ │ │ +49#endif /* HAVE_STDLIB_H */ │ │ │ │ │ +50 │ │ │ │ │ +51#include │ │ │ │ │ +52 │ │ │ │ │ +53#ifdef __cplusplus │ │ │ │ │ +54extern "C" │ │ │ │ │ +55{ │ │ │ │ │ +56#endif │ │ │ │ │ +57 │ │ │ │ │ +58#if ! HAVE_ICONV │ │ │ │ │ +59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode); │ │ │ │ │ +60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, │ │ │ │ │ +char **outbuf, size_t * outbytesleft); │ │ │ │ │ +61int tds_sys_iconv_close(iconv_t cd); │ │ │ │ │ +62#else │ │ │ │ │ +63#define tds_sys_iconv_open iconv_open │ │ │ │ │ +64#define tds_sys_iconv iconv │ │ │ │ │ +65#define tds_sys_iconv_close iconv_close │ │ │ │ │ +66#endif /* !HAVE_ICONV */ │ │ │ │ │ +67 │ │ │ │ │ +68 │ │ │ │ │ +69typedef enum │ │ │ │ │ +70{ to_server, to_client } TDS_ICONV_DIRECTION; │ │ │ │ │ +71 │ │ │ │ │ +72typedef struct _character_set_alias │ │ │ │ │ +73{ │ │ │ │ │ +74 const char *alias; │ │ │ │ │ +75 int canonic; │ │ │ │ │ +76} CHARACTER_SET_ALIAS; │ │ │ │ │ +77 │ │ │ │ │ +78typedef struct tds_errno_message_flags { │ │ │ │ │ +79 unsigned int e2big:1; │ │ │ │ │ +80 unsigned int eilseq:1; │ │ │ │ │ +81 unsigned int einval:1; │ │ │ │ │ +82} TDS_ERRNO_MESSAGE_FLAGS; │ │ │ │ │ +83 │ │ │ │ │ +84typedef struct tdsiconvdir │ │ │ │ │ +85{ │ │ │ │ │ +86 TDS_ENCODING charset; │ │ │ │ │ +87 │ │ │ │ │ +88 iconv_t cd; │ │ │ │ │ +89} TDSICONVDIR; │ │ │ │ │ +90 │ │ │ │ │ +91struct tdsiconvinfo │ │ │ │ │ +92{ │ │ │ │ │ +93 struct tdsiconvdir to, from; │ │ │ │ │ +94 │ │ │ │ │ +95#define TDS_ENCODING_MEMCPY 1 │ │ │ │ │ +96 unsigned int flags; │ │ │ │ │ +97 │ │ │ │ │ +98 /* │ │ │ │ │ +99 * Suppress error messages that would otherwise be emitted by tds_iconv(). │ │ │ │ │ +100 * Functions that process large buffers ask tds_iconv to convert it in │ │ │ │ │ +"chunks". │ │ │ │ │ +101 * We don't want to emit spurious EILSEQ errors or multiple errors for one │ │ │ │ │ +102 * buffer. tds_iconv() checks this structure before emiting a message, and │ │ │ │ │ +103 * adds to it whenever it emits one. Callers that handle a particular │ │ │ │ │ +situation themselves │ │ │ │ │ +104 * can prepopulate it. │ │ │ │ │ +105 */ │ │ │ │ │ +106 TDS_ERRNO_MESSAGE_FLAGS suppress; │ │ │ │ │ +107 │ │ │ │ │ +108}; │ │ │ │ │ +109 │ │ │ │ │ +110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */ │ │ │ │ │ +111#ifndef ICONV_CONST │ │ │ │ │ +112# define ICONV_CONST const │ │ │ │ │ +113#endif │ │ │ │ │ +114 │ │ │ │ │ +115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION │ │ │ │ │ +io, │ │ │ │ │ +116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * │ │ │ │ │ +outbytesleft); │ │ │ │ │ +117int tds_canonical_charset(const char *charset_name); │ │ │ │ │ +118const char *tds_canonical_charset_name(const char *charset_name); │ │ │ │ │ +119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, │ │ │ │ │ +const char *server_charset); │ │ │ │ │ +120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int │ │ │ │ │ +canonic_server); │ │ │ │ │ +121 │ │ │ │ │ +122#ifdef __cplusplus │ │ │ │ │ +123} │ │ │ │ │ +124#endif │ │ │ │ │ +125 │ │ │ │ │ +126#include │ │ │ │ │ +127 │ │ │ │ │ +128#endif /* _tdsguard_c6YssGkHHqKMDRUMOWVASl_ */ │ │ │ │ │ +tds_iconv_get_info │ │ │ │ │ +TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int │ │ │ │ │ +canonic_server) │ │ │ │ │ +Get a iconv info structure, allocate and initialize if needed. │ │ │ │ │ +Definition iconv.c:762 │ │ │ │ │ +tds_canonical_charset_name │ │ │ │ │ +const char * tds_canonical_charset_name(const char *charset_name) │ │ │ │ │ +Determine canonical iconv character set name. │ │ │ │ │ +Definition iconv.c:986 │ │ │ │ │ +tds_iconv │ │ │ │ │ +size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io, │ │ │ │ │ +const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) │ │ │ │ │ +Wrapper around iconv(3). │ │ │ │ │ +Definition iconv.c:593 │ │ │ │ │ +tds_sys_iconv_open │ │ │ │ │ +iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode) │ │ │ │ │ +Inputs are FreeTDS canonical names, no other. │ │ │ │ │ +Definition iconv.c:345 │ │ │ │ │ +tds_canonical_charset │ │ │ │ │ +int tds_canonical_charset(const char *charset_name) │ │ │ │ │ +Determine canonical iconv character set. │ │ │ │ │ +Definition iconv.c:974 │ │ │ │ │ +_character_set_alias │ │ │ │ │ +Definition iconv.h:73 │ │ │ │ │ +tds_errno_message_flags │ │ │ │ │ +Definition iconv.h:78 │ │ │ │ │ +tdsiconvdir │ │ │ │ │ +Definition iconv.h:85 │ │ │ │ │ +tdsiconvinfo │ │ │ │ │ +Definition iconv.h:92 │ │ │ │ │ +tds_encoding │ │ │ │ │ +Information relevant to libiconv. │ │ │ │ │ +Definition tds.h:603 │ │ │ │ │ +tds_connection │ │ │ │ │ +Definition tds.h:1077 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00488_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/des.h Source File │ │ │ │ +FreeTDS API: include/freetds/data.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,68 +70,132 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
des.h
│ │ │ │ +
data.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#ifndef _tdsguard_frXREepoqzIh7i5y4TSoh7_
│ │ │ │ -
2#define _tdsguard_frXREepoqzIh7i5y4TSoh7_
│ │ │ │ -
3
│ │ │ │ -
4#ifdef HAVE_NETTLE
│ │ │ │ -
5#include <nettle/des.h>
│ │ │ │ -
6
│ │ │ │ -
7typedef struct des_ctx DES_KEY;
│ │ │ │ -
8#endif
│ │ │ │ -
9
│ │ │ │ -
10#include <freetds/pushvis.h>
│ │ │ │ -
11
│ │ │ │ -
12typedef uint8_t des_cblock[8];
│ │ │ │ -
13
│ │ │ │ -
14#ifndef HAVE_NETTLE
│ │ │ │ -
│ │ │ │ -
15typedef struct des_key
│ │ │ │ -
16{
│ │ │ │ -
17 uint8_t kn[16][8];
│ │ │ │ -
18 uint32_t sp[8][64];
│ │ │ │ -
19 uint8_t iperm[16][16][8];
│ │ │ │ -
20 uint8_t fperm[16][16][8];
│ │ │ │ -
21} DES_KEY;
│ │ │ │ -
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2014 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_gGNZG1PGQbnTbRweOYXD8U_
│ │ │ │ +
21#define _tdsguard_gGNZG1PGQbnTbRweOYXD8U_
│ │ │ │
22
│ │ │ │ -
23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key);
│ │ │ │ -
24void tds_des_encrypt(const DES_KEY * key, des_cblock block);
│ │ │ │ +
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +
24# error Include tds.h before data.h
│ │ │ │
25#endif
│ │ │ │
26
│ │ │ │ -
27void tds_des_set_odd_parity(des_cblock key);
│ │ │ │ -
28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, uint8_t *output);
│ │ │ │ -
29
│ │ │ │ -
30#include <freetds/popvis.h>
│ │ │ │ -
31
│ │ │ │ -
32#ifdef HAVE_NETTLE
│ │ │ │ -
33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)
│ │ │ │ -
34{
│ │ │ │ -
35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);
│ │ │ │ -
36}
│ │ │ │ -
37
│ │ │ │ -
38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key)
│ │ │ │ -
39{
│ │ │ │ -
40 return nettle_des_set_key(dkey, user_key);
│ │ │ │ -
41}
│ │ │ │ -
42#endif
│ │ │ │ -
43
│ │ │ │ -
44#endif /* !_tdsguard_frXREepoqzIh7i5y4TSoh7_ */
│ │ │ │ -
Definition des.h:16
│ │ │ │ +
27#include <freetds/pushvis.h>
│ │ │ │ +
28
│ │ │ │ +
29#define TDS_COMMON_FUNCS(name) \
│ │ │ │ +
30{ \
│ │ │ │ +
31 tds_ ## name ## _get_info, \
│ │ │ │ +
32 tds_ ## name ## _get, \
│ │ │ │ +
33 tds_ ## name ## _row_len, \
│ │ │ │ +
34 tds_ ## name ## _put_info, \
│ │ │ │ +
35 tds_ ## name ## _put, \
│ │ │ │ +
36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \
│ │ │ │ +
37}
│ │ │ │ +
38
│ │ │ │ +
39tds_func_get_info tds_invalid_get_info;
│ │ │ │ +
40tds_func_row_len tds_invalid_row_len;
│ │ │ │ +
41tds_func_get_data tds_invalid_get;
│ │ │ │ +
42tds_func_put_info tds_invalid_put_info;
│ │ │ │ +
43tds_func_put_data tds_invalid_put;
│ │ │ │ +
44tds_func_check tds_invalid_check;
│ │ │ │ +
45
│ │ │ │ +
46tds_func_get_info tds_generic_get_info;
│ │ │ │ +
47tds_func_row_len tds_generic_row_len;
│ │ │ │ +
48tds_func_get_data tds_generic_get;
│ │ │ │ +
49tds_func_put_info tds_generic_put_info;
│ │ │ │ +
50tds_func_put_data tds_generic_put;
│ │ │ │ +
51tds_func_check tds_generic_check;
│ │ │ │ +
52
│ │ │ │ +
53tds_func_get_info tds_numeric_get_info;
│ │ │ │ +
54tds_func_row_len tds_numeric_row_len;
│ │ │ │ +
55tds_func_get_data tds_numeric_get;
│ │ │ │ +
56tds_func_put_info tds_numeric_put_info;
│ │ │ │ +
57tds_func_put_data tds_numeric_put;
│ │ │ │ +
58tds_func_check tds_numeric_check;
│ │ │ │ +
59
│ │ │ │ +
60#define tds_variant_get_info tds_generic_get_info
│ │ │ │ +
61#define tds_variant_row_len tds_generic_row_len
│ │ │ │ +
62tds_func_get_data tds_variant_get;
│ │ │ │ +
63tds_func_put_info tds_variant_put_info;
│ │ │ │ +
64tds_func_put_data tds_variant_put;
│ │ │ │ +
65tds_func_check tds_variant_check;
│ │ │ │ +
66
│ │ │ │ +
67tds_func_get_info tds_msdatetime_get_info;
│ │ │ │ +
68tds_func_row_len tds_msdatetime_row_len;
│ │ │ │ +
69tds_func_get_data tds_msdatetime_get;
│ │ │ │ +
70tds_func_put_info tds_msdatetime_put_info;
│ │ │ │ +
71tds_func_put_data tds_msdatetime_put;
│ │ │ │ +
72tds_func_check tds_msdatetime_check;
│ │ │ │ +
73
│ │ │ │ +
74tds_func_get_info tds_clrudt_get_info;
│ │ │ │ +
75tds_func_row_len tds_clrudt_row_len;
│ │ │ │ +
76#define tds_clrudt_get tds_generic_get
│ │ │ │ +
77tds_func_put_info tds_clrudt_put_info;
│ │ │ │ +
78#define tds_clrudt_put tds_generic_put
│ │ │ │ +
79tds_func_check tds_clrudt_check;
│ │ │ │ +
80
│ │ │ │ +
81tds_func_get_info tds_sybbigtime_get_info;
│ │ │ │ +
82tds_func_row_len tds_sybbigtime_row_len;
│ │ │ │ +
83tds_func_get_data tds_sybbigtime_get;
│ │ │ │ +
84tds_func_put_info tds_sybbigtime_put_info;
│ │ │ │ +
85tds_func_put_data tds_sybbigtime_put;
│ │ │ │ +
86tds_func_check tds_sybbigtime_check;
│ │ │ │ +
87
│ │ │ │ +
88tds_func_get_info tds_mstabletype_get_info;
│ │ │ │ +
89tds_func_row_len tds_mstabletype_row_len;
│ │ │ │ +
90tds_func_get_data tds_mstabletype_get;
│ │ │ │ +
91tds_func_put_info tds_mstabletype_put_info;
│ │ │ │ +
92tds_func_put_data tds_mstabletype_put;
│ │ │ │ +
93tds_func_check tds_mstabletype_check;
│ │ │ │ +
94
│ │ │ │ +
99#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
│ │ │ │ +
100# define TDS_DEFINE_DEFAULT_FUNCS(name) \
│ │ │ │ +
101 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)
│ │ │ │ +
102
│ │ │ │ +
103TDS_DEFINE_DEFAULT_FUNCS(invalid);
│ │ │ │ +
104TDS_DEFINE_DEFAULT_FUNCS(generic);
│ │ │ │ +
105TDS_DEFINE_DEFAULT_FUNCS(numeric);
│ │ │ │ +
106TDS_DEFINE_DEFAULT_FUNCS(variant);
│ │ │ │ +
107TDS_DEFINE_DEFAULT_FUNCS(msdatetime);
│ │ │ │ +
108TDS_DEFINE_DEFAULT_FUNCS(clrudt);
│ │ │ │ +
109TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);
│ │ │ │ +
110TDS_DEFINE_DEFAULT_FUNCS(mstabletype);
│ │ │ │ +
111#endif
│ │ │ │ +
112
│ │ │ │ +
113#include <freetds/popvis.h>
│ │ │ │ +
114
│ │ │ │ +
115#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,57 +1,120 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -des.h │ │ │ │ │ -1#ifndef _tdsguard_frXREepoqzIh7i5y4TSoh7_ │ │ │ │ │ -2#define _tdsguard_frXREepoqzIh7i5y4TSoh7_ │ │ │ │ │ -3 │ │ │ │ │ -4#ifdef HAVE_NETTLE │ │ │ │ │ -5#include │ │ │ │ │ -6 │ │ │ │ │ -7typedef struct des_ctx DES_KEY; │ │ │ │ │ -8#endif │ │ │ │ │ -9 │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12typedef uint8_t des_cblock[8]; │ │ │ │ │ -13 │ │ │ │ │ -14#ifndef HAVE_NETTLE │ │ │ │ │ -15typedef struct des_key │ │ │ │ │ -16{ │ │ │ │ │ -17 uint8_t kn[16][8]; │ │ │ │ │ -18 uint32_t sp[8][64]; │ │ │ │ │ -19 uint8_t iperm[16][16][8]; │ │ │ │ │ -20 uint8_t fperm[16][16][8]; │ │ │ │ │ -21} DES_KEY; │ │ │ │ │ +data.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2014 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_gGNZG1PGQbnTbRweOYXD8U_ │ │ │ │ │ +21#define _tdsguard_gGNZG1PGQbnTbRweOYXD8U_ │ │ │ │ │ 22 │ │ │ │ │ -23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key); │ │ │ │ │ -24void tds_des_encrypt(const DES_KEY * key, des_cblock block); │ │ │ │ │ +23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +24# error Include tds.h before data.h │ │ │ │ │ 25#endif │ │ │ │ │ 26 │ │ │ │ │ -27void tds_des_set_odd_parity(des_cblock key); │ │ │ │ │ -28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, │ │ │ │ │ -uint8_t *output); │ │ │ │ │ -29 │ │ │ │ │ -30#include │ │ │ │ │ -31 │ │ │ │ │ -32#ifdef HAVE_NETTLE │ │ │ │ │ -33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block) │ │ │ │ │ -34{ │ │ │ │ │ -35 nettle_des_encrypt(key, sizeof(des_cblock), block, block); │ │ │ │ │ -36} │ │ │ │ │ -37 │ │ │ │ │ -38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key) │ │ │ │ │ -39{ │ │ │ │ │ -40 return nettle_des_set_key(dkey, user_key); │ │ │ │ │ -41} │ │ │ │ │ -42#endif │ │ │ │ │ -43 │ │ │ │ │ -44#endif /* !_tdsguard_frXREepoqzIh7i5y4TSoh7_ */ │ │ │ │ │ -des_key │ │ │ │ │ -Definition des.h:16 │ │ │ │ │ +27#include │ │ │ │ │ +28 │ │ │ │ │ +29#define TDS_COMMON_FUNCS(name) \ │ │ │ │ │ +30{ \ │ │ │ │ │ +31 tds_ ## name ## _get_info, \ │ │ │ │ │ +32 tds_ ## name ## _get, \ │ │ │ │ │ +33 tds_ ## name ## _row_len, \ │ │ │ │ │ +34 tds_ ## name ## _put_info, \ │ │ │ │ │ +35 tds_ ## name ## _put, \ │ │ │ │ │ +36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \ │ │ │ │ │ +37} │ │ │ │ │ +38 │ │ │ │ │ +39tds_func_get_info tds_invalid_get_info; │ │ │ │ │ +40tds_func_row_len tds_invalid_row_len; │ │ │ │ │ +41tds_func_get_data tds_invalid_get; │ │ │ │ │ +42tds_func_put_info tds_invalid_put_info; │ │ │ │ │ +43tds_func_put_data tds_invalid_put; │ │ │ │ │ +44tds_func_check tds_invalid_check; │ │ │ │ │ +45 │ │ │ │ │ +46tds_func_get_info tds_generic_get_info; │ │ │ │ │ +47tds_func_row_len tds_generic_row_len; │ │ │ │ │ +48tds_func_get_data tds_generic_get; │ │ │ │ │ +49tds_func_put_info tds_generic_put_info; │ │ │ │ │ +50tds_func_put_data tds_generic_put; │ │ │ │ │ +51tds_func_check tds_generic_check; │ │ │ │ │ +52 │ │ │ │ │ +53tds_func_get_info tds_numeric_get_info; │ │ │ │ │ +54tds_func_row_len tds_numeric_row_len; │ │ │ │ │ +55tds_func_get_data tds_numeric_get; │ │ │ │ │ +56tds_func_put_info tds_numeric_put_info; │ │ │ │ │ +57tds_func_put_data tds_numeric_put; │ │ │ │ │ +58tds_func_check tds_numeric_check; │ │ │ │ │ +59 │ │ │ │ │ +60#define tds_variant_get_info tds_generic_get_info │ │ │ │ │ +61#define tds_variant_row_len tds_generic_row_len │ │ │ │ │ +62tds_func_get_data tds_variant_get; │ │ │ │ │ +63tds_func_put_info tds_variant_put_info; │ │ │ │ │ +64tds_func_put_data tds_variant_put; │ │ │ │ │ +65tds_func_check tds_variant_check; │ │ │ │ │ +66 │ │ │ │ │ +67tds_func_get_info tds_msdatetime_get_info; │ │ │ │ │ +68tds_func_row_len tds_msdatetime_row_len; │ │ │ │ │ +69tds_func_get_data tds_msdatetime_get; │ │ │ │ │ +70tds_func_put_info tds_msdatetime_put_info; │ │ │ │ │ +71tds_func_put_data tds_msdatetime_put; │ │ │ │ │ +72tds_func_check tds_msdatetime_check; │ │ │ │ │ +73 │ │ │ │ │ +74tds_func_get_info tds_clrudt_get_info; │ │ │ │ │ +75tds_func_row_len tds_clrudt_row_len; │ │ │ │ │ +76#define tds_clrudt_get tds_generic_get │ │ │ │ │ +77tds_func_put_info tds_clrudt_put_info; │ │ │ │ │ +78#define tds_clrudt_put tds_generic_put │ │ │ │ │ +79tds_func_check tds_clrudt_check; │ │ │ │ │ +80 │ │ │ │ │ +81tds_func_get_info tds_sybbigtime_get_info; │ │ │ │ │ +82tds_func_row_len tds_sybbigtime_row_len; │ │ │ │ │ +83tds_func_get_data tds_sybbigtime_get; │ │ │ │ │ +84tds_func_put_info tds_sybbigtime_put_info; │ │ │ │ │ +85tds_func_put_data tds_sybbigtime_put; │ │ │ │ │ +86tds_func_check tds_sybbigtime_check; │ │ │ │ │ +87 │ │ │ │ │ +88tds_func_get_info tds_mstabletype_get_info; │ │ │ │ │ +89tds_func_row_len tds_mstabletype_row_len; │ │ │ │ │ +90tds_func_get_data tds_mstabletype_get; │ │ │ │ │ +91tds_func_put_info tds_mstabletype_put_info; │ │ │ │ │ +92tds_func_put_data tds_mstabletype_put; │ │ │ │ │ +93tds_func_check tds_mstabletype_check; │ │ │ │ │ +94 │ │ │ │ │ +99#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS │ │ │ │ │ +100# define TDS_DEFINE_DEFAULT_FUNCS(name) \ │ │ │ │ │ +101 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name) │ │ │ │ │ +102 │ │ │ │ │ +103TDS_DEFINE_DEFAULT_FUNCS(invalid); │ │ │ │ │ +104TDS_DEFINE_DEFAULT_FUNCS(generic); │ │ │ │ │ +105TDS_DEFINE_DEFAULT_FUNCS(numeric); │ │ │ │ │ +106TDS_DEFINE_DEFAULT_FUNCS(variant); │ │ │ │ │ +107TDS_DEFINE_DEFAULT_FUNCS(msdatetime); │ │ │ │ │ +108TDS_DEFINE_DEFAULT_FUNCS(clrudt); │ │ │ │ │ +109TDS_DEFINE_DEFAULT_FUNCS(sybbigtime); │ │ │ │ │ +110TDS_DEFINE_DEFAULT_FUNCS(mstabletype); │ │ │ │ │ +111#endif │ │ │ │ │ +112 │ │ │ │ │ +113#include │ │ │ │ │ +114 │ │ │ │ │ +115#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00491_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/string.h Source File │ │ │ │ +FreeTDS API: include/freetds/utils.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
string.h
│ │ │ │ +
utils.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
2 * Copyright (C) 2016 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,108 +96,52 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_d2McTbRS3vmVcq0ls4BzwH_
│ │ │ │ -
21#define _tdsguard_d2McTbRS3vmVcq0ls4BzwH_
│ │ │ │ +
20#ifndef _tdsguard_eFYZwccrMRZEhF1ruz6j9O_
│ │ │ │ +
21#define _tdsguard_eFYZwccrMRZEhF1ruz6j9O_
│ │ │ │
22
│ │ │ │ -
23#include <freetds/macros.h>
│ │ │ │ -
24
│ │ │ │ -
25#include <freetds/pushvis.h>
│ │ │ │ +
23#if HAVE_STDDEF_H
│ │ │ │ +
24#include <stddef.h>
│ │ │ │ +
25#endif /* HAVE_STDDEF_H */
│ │ │ │
26
│ │ │ │ -
│ │ │ │ -
36typedef struct tds_dstr {
│ │ │ │ -
37 size_t dstr_size;
│ │ │ │ -
38 char dstr_s[1];
│ │ │ │ - │ │ │ │ -
│ │ │ │ +
27#include <freetds/time.h>
│ │ │ │ +
28#include <freetds/sysdep_private.h>
│ │ │ │ +
29
│ │ │ │ +
30#include <freetds/pushvis.h>
│ │ │ │ +
31
│ │ │ │ +
32#ifdef __cplusplus
│ │ │ │ +
33extern "C" {
│ │ │ │ +
34#endif
│ │ │ │ +
35
│ │ │ │ +
36void tds_sleep_s(unsigned sec);
│ │ │ │ +
37void tds_sleep_ms(unsigned ms);
│ │ │ │ +
38
│ │ │ │ +
39char *tds_getpassarg(char *arg);
│ │ │ │
40
│ │ │ │ -
42extern const struct tds_dstr tds_str_empty;
│ │ │ │ -
43
│ │ │ │ -
49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)
│ │ │ │ -
50
│ │ │ │ -
52static inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
54{
│ │ │ │ -
55 *(s) = DSTR_INITIALIZER;
│ │ │ │ -
56}
│ │ │ │ -
│ │ │ │ -
57
│ │ │ │ -
59static inline int
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
61{
│ │ │ │ -
62 return (*s)->dstr_size == 0;
│ │ │ │ -
63}
│ │ │ │ -
│ │ │ │ -
64
│ │ │ │ -
70static inline char *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
72{
│ │ │ │ -
73 return (*s)->dstr_s;
│ │ │ │ -
74}
│ │ │ │ -
│ │ │ │ -
75
│ │ │ │ -
77static inline const char *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
79{
│ │ │ │ -
80 return (*s)->dstr_s;
│ │ │ │ -
81}
│ │ │ │ -
│ │ │ │ -
82
│ │ │ │ -
84static inline size_t
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
86{
│ │ │ │ -
87 return (*s)->dstr_size;
│ │ │ │ -
88}
│ │ │ │ -
│ │ │ │ -
89
│ │ │ │ -
│ │ │ │ -
91#define tds_dstr_empty(s) \
│ │ │ │ -
92 tds_dstr_free(s)
│ │ │ │ -
│ │ │ │ -
93
│ │ │ │ -
94void tds_dstr_zero(DSTR * s);
│ │ │ │ -
95void tds_dstr_free(DSTR * s);
│ │ │ │ -
96
│ │ │ │ -
97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;
│ │ │ │ -
98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;
│ │ │ │ -
99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;
│ │ │ │ -
100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;
│ │ │ │ -
101
│ │ │ │ -
102DSTR* tds_dstr_setlen(DSTR *s, size_t length);
│ │ │ │ -
103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;
│ │ │ │ -
104
│ │ │ │ -
107#include <freetds/popvis.h>
│ │ │ │ -
108
│ │ │ │ -
109#endif /* _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ */
│ │ │ │ -
DSTR * tds_dstr_setlen(DSTR *s, size_t length)
limit length of string, MUST be <= current length
Definition tdsstring.c:145
│ │ │ │ -
static int tds_dstr_isempty(const DSTR *s)
test if string is empty
Definition string.h:60
│ │ │ │ -
void tds_dstr_zero(DSTR *s)
clear all string filling with zeroes (mainly for security reason)
Definition tdsstring.c:55
│ │ │ │ -
static size_t tds_dstr_len(const DSTR *s)
Returns the length of the string in bytes.
Definition string.h:85
│ │ │ │ -
DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)
Duplicate a string from another dynamic string.
Definition tdsstring.c:134
│ │ │ │ -
#define DSTR_INITIALIZER
Initializer, used to initialize string like in the following example.
Definition string.h:49
│ │ │ │ -
DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)
Set string to a given buffer of characters.
Definition tdsstring.c:77
│ │ │ │ -
const struct tds_dstr tds_str_empty
Internal representation for an empty string.
Definition tdsstring.c:45
│ │ │ │ -
DSTR * tds_dstr_alloc(DSTR *s, size_t length)
allocate space for length char
Definition tdsstring.c:165
│ │ │ │ -
static void tds_dstr_init(DSTR *s)
init a string with empty
Definition string.h:53
│ │ │ │ -
DSTR * tds_dstr_set(DSTR *s, char *src)
set a string from another buffer.
Definition tdsstring.c:107
│ │ │ │ -
static const char * tds_dstr_cstr(const DSTR *s)
Returns a C version (NUL terminated string) of dstr.
Definition string.h:78
│ │ │ │ -
void tds_dstr_free(DSTR *s)
free string
Definition tdsstring.c:62
│ │ │ │ -
DSTR * tds_dstr_copy(DSTR *s, const char *src)
copy a string from another
Definition tdsstring.c:122
│ │ │ │ -
static char * tds_dstr_buf(DSTR *s)
Returns a buffer to edit the string.
Definition string.h:71
│ │ │ │ -
struct tds_dstr * DSTR
Structure to hold a string.
│ │ │ │ -
Structure to hold a string.
Definition string.h:36
│ │ │ │ +
41char *tds_timestamp_str(char *str, int maxlen);
│ │ │ │ +
42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);
│ │ │ │ +
43int tds_getservice(const char *name);
│ │ │ │ +
44
│ │ │ │ +
45int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);
│ │ │ │ +
46int tds_socket_set_nodelay(TDS_SYS_SOCKET sock);
│ │ │ │ +
47
│ │ │ │ +
48char *tds_strndup(const void *s, TDS_INTPTR len);
│ │ │ │ +
49
│ │ │ │ +
50#ifdef __cplusplus
│ │ │ │ +
51}
│ │ │ │ +
52#endif
│ │ │ │ +
53
│ │ │ │ +
54#include <freetds/popvis.h>
│ │ │ │ +
55
│ │ │ │ +
56#endif
│ │ │ │ +
int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)
Set socket to not throw SIGPIPE.
Definition net.c:89
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -string.h │ │ │ │ │ +utils.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +2 * Copyright (C) 2016 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,138 +20,50 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ │ │ │ │ │ -21#define _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ │ │ │ │ │ +20#ifndef _tdsguard_eFYZwccrMRZEhF1ruz6j9O_ │ │ │ │ │ +21#define _tdsguard_eFYZwccrMRZEhF1ruz6j9O_ │ │ │ │ │ 22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#include │ │ │ │ │ +23#if HAVE_STDDEF_H │ │ │ │ │ +24#include │ │ │ │ │ +25#endif /* HAVE_STDDEF_H */ │ │ │ │ │ 26 │ │ │ │ │ -36typedef struct tds_dstr { │ │ │ │ │ -37 size_t dstr_size; │ │ │ │ │ -38 char dstr_s[1]; │ │ │ │ │ -39} *DSTR; │ │ │ │ │ +27#include │ │ │ │ │ +28#include │ │ │ │ │ +29 │ │ │ │ │ +30#include │ │ │ │ │ +31 │ │ │ │ │ +32#ifdef __cplusplus │ │ │ │ │ +33extern "C" { │ │ │ │ │ +34#endif │ │ │ │ │ +35 │ │ │ │ │ +36void tds_sleep_s(unsigned sec); │ │ │ │ │ +37void tds_sleep_ms(unsigned ms); │ │ │ │ │ +38 │ │ │ │ │ +39char *tds_getpassarg(char *arg); │ │ │ │ │ 40 │ │ │ │ │ -42extern const struct tds_dstr tds_str_empty; │ │ │ │ │ -43 │ │ │ │ │ -49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty) │ │ │ │ │ -50 │ │ │ │ │ -52static inline void │ │ │ │ │ -53tds_dstr_init(DSTR * s) │ │ │ │ │ -54{ │ │ │ │ │ -55 *(s) = DSTR_INITIALIZER; │ │ │ │ │ -56} │ │ │ │ │ -57 │ │ │ │ │ -59static inline int │ │ │ │ │ -60tds_dstr_isempty(const DSTR * s) │ │ │ │ │ -61{ │ │ │ │ │ -62 return (*s)->dstr_size == 0; │ │ │ │ │ -63} │ │ │ │ │ -64 │ │ │ │ │ -70static inline char * │ │ │ │ │ -71tds_dstr_buf(DSTR * s) │ │ │ │ │ -72{ │ │ │ │ │ -73 return (*s)->dstr_s; │ │ │ │ │ -74} │ │ │ │ │ -75 │ │ │ │ │ -77static inline const char * │ │ │ │ │ -78tds_dstr_cstr(const DSTR * s) │ │ │ │ │ -79{ │ │ │ │ │ -80 return (*s)->dstr_s; │ │ │ │ │ -81} │ │ │ │ │ -82 │ │ │ │ │ -84static inline size_t │ │ │ │ │ -85tds_dstr_len(const DSTR * s) │ │ │ │ │ -86{ │ │ │ │ │ -87 return (*s)->dstr_size; │ │ │ │ │ -88} │ │ │ │ │ -89 │ │ │ │ │ -91#define tds_dstr_empty(s) \ │ │ │ │ │ -92 tds_dstr_free(s) │ │ │ │ │ -93 │ │ │ │ │ -94void tds_dstr_zero(DSTR * s); │ │ │ │ │ -95void tds_dstr_free(DSTR * s); │ │ │ │ │ -96 │ │ │ │ │ -97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR; │ │ │ │ │ -98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR; │ │ │ │ │ -99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR; │ │ │ │ │ -100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR; │ │ │ │ │ -101 │ │ │ │ │ -102DSTR* tds_dstr_setlen(DSTR *s, size_t length); │ │ │ │ │ -103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR; │ │ │ │ │ -104 │ │ │ │ │ -107#include │ │ │ │ │ -108 │ │ │ │ │ -109#endif /* _tdsguard_d2McTbRS3vmVcq0ls4BzwH_ */ │ │ │ │ │ -tds_dstr_setlen │ │ │ │ │ -DSTR * tds_dstr_setlen(DSTR *s, size_t length) │ │ │ │ │ -limit length of string, MUST be <= current length │ │ │ │ │ -Definition tdsstring.c:145 │ │ │ │ │ -tds_dstr_isempty │ │ │ │ │ -static int tds_dstr_isempty(const DSTR *s) │ │ │ │ │ -test if string is empty │ │ │ │ │ -Definition string.h:60 │ │ │ │ │ -tds_dstr_zero │ │ │ │ │ -void tds_dstr_zero(DSTR *s) │ │ │ │ │ -clear all string filling with zeroes (mainly for security reason) │ │ │ │ │ -Definition tdsstring.c:55 │ │ │ │ │ -tds_dstr_len │ │ │ │ │ -static size_t tds_dstr_len(const DSTR *s) │ │ │ │ │ -Returns the length of the string in bytes. │ │ │ │ │ -Definition string.h:85 │ │ │ │ │ -tds_dstr_dup │ │ │ │ │ -DSTR * tds_dstr_dup(DSTR *s, const DSTR *src) │ │ │ │ │ -Duplicate a string from another dynamic string. │ │ │ │ │ -Definition tdsstring.c:134 │ │ │ │ │ -DSTR_INITIALIZER │ │ │ │ │ -#define DSTR_INITIALIZER │ │ │ │ │ -Initializer, used to initialize string like in the following example. │ │ │ │ │ -Definition string.h:49 │ │ │ │ │ -tds_dstr_copyn │ │ │ │ │ -DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length) │ │ │ │ │ -Set string to a given buffer of characters. │ │ │ │ │ -Definition tdsstring.c:77 │ │ │ │ │ -tds_str_empty │ │ │ │ │ -const struct tds_dstr tds_str_empty │ │ │ │ │ -Internal representation for an empty string. │ │ │ │ │ -Definition tdsstring.c:45 │ │ │ │ │ -tds_dstr_alloc │ │ │ │ │ -DSTR * tds_dstr_alloc(DSTR *s, size_t length) │ │ │ │ │ -allocate space for length char │ │ │ │ │ -Definition tdsstring.c:165 │ │ │ │ │ -tds_dstr_init │ │ │ │ │ -static void tds_dstr_init(DSTR *s) │ │ │ │ │ -init a string with empty │ │ │ │ │ -Definition string.h:53 │ │ │ │ │ -tds_dstr_set │ │ │ │ │ -DSTR * tds_dstr_set(DSTR *s, char *src) │ │ │ │ │ -set a string from another buffer. │ │ │ │ │ -Definition tdsstring.c:107 │ │ │ │ │ -tds_dstr_cstr │ │ │ │ │ -static const char * tds_dstr_cstr(const DSTR *s) │ │ │ │ │ -Returns a C version (NUL terminated string) of dstr. │ │ │ │ │ -Definition string.h:78 │ │ │ │ │ -tds_dstr_free │ │ │ │ │ -void tds_dstr_free(DSTR *s) │ │ │ │ │ -free string │ │ │ │ │ -Definition tdsstring.c:62 │ │ │ │ │ -tds_dstr_copy │ │ │ │ │ -DSTR * tds_dstr_copy(DSTR *s, const char *src) │ │ │ │ │ -copy a string from another │ │ │ │ │ -Definition tdsstring.c:122 │ │ │ │ │ -tds_dstr_buf │ │ │ │ │ -static char * tds_dstr_buf(DSTR *s) │ │ │ │ │ -Returns a buffer to edit the string. │ │ │ │ │ -Definition string.h:71 │ │ │ │ │ -DSTR │ │ │ │ │ -struct tds_dstr * DSTR │ │ │ │ │ -Structure to hold a string. │ │ │ │ │ -tds_dstr │ │ │ │ │ -Structure to hold a string. │ │ │ │ │ -Definition string.h:36 │ │ │ │ │ +41char *tds_timestamp_str(char *str, int maxlen); │ │ │ │ │ +42struct tm *tds_localtime_r(const time_t *timep, struct tm *result); │ │ │ │ │ +43int tds_getservice(const char *name); │ │ │ │ │ +44 │ │ │ │ │ +45int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on); │ │ │ │ │ +46int tds_socket_set_nodelay(TDS_SYS_SOCKET sock); │ │ │ │ │ +47 │ │ │ │ │ +48char *tds_strndup(const void *s, TDS_INTPTR len); │ │ │ │ │ +49 │ │ │ │ │ +50#ifdef __cplusplus │ │ │ │ │ +51} │ │ │ │ │ +52#endif │ │ │ │ │ +53 │ │ │ │ │ +54#include │ │ │ │ │ +55 │ │ │ │ │ +56#endif │ │ │ │ │ +tds_socket_set_nosigpipe │ │ │ │ │ +int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on) │ │ │ │ │ +Set socket to not throw SIGPIPE. │ │ │ │ │ +Definition net.c:89 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00494_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/smp.h Source File │ │ │ │ +FreeTDS API: include/freetds/replacements.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
smp.h
│ │ │ │ +
replacements.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* Simple multiprecision - small MP library for testing
│ │ │ │ -
2 * Copyright (C) 2022-2024 Frediano Ziglio
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,53 +96,201 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_
│ │ │ │ -
21#define _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_
│ │ │ │ +
20#ifndef _tdsguard_fELDB9J1dGrLHROMPkGfXj_
│ │ │ │ +
21#define _tdsguard_fELDB9J1dGrLHROMPkGfXj_
│ │ │ │
22
│ │ │ │ -
23#include <tds_sysdep_public.h>
│ │ │ │ -
24#include <freetds/bool.h>
│ │ │ │ -
25
│ │ │ │ -
│ │ │ │ -
26typedef struct {
│ │ │ │ -
27 uint16_t comp[8];
│ │ │ │ -
28} smp;
│ │ │ │ -
│ │ │ │ -
29
│ │ │ │ -
30extern const smp smp_zero;
│ │ │ │ -
31extern const smp smp_one;
│ │ │ │ +
23#ifndef _freetds_config_h_
│ │ │ │ +
24#error should include config.h before
│ │ │ │ +
25#endif
│ │ │ │ +
26
│ │ │ │ +
27#include <stdarg.h>
│ │ │ │ +
28#include "tds_sysdep_public.h"
│ │ │ │ +
29#include <freetds/sysdep_private.h>
│ │ │ │ +
30
│ │ │ │ +
31#include <freetds/replacements/readpassphrase.h>
│ │ │ │
32
│ │ │ │ -
34smp smp_add(smp a, smp b);
│ │ │ │ -
35
│ │ │ │ -
37smp smp_sub(smp a, smp b);
│ │ │ │ -
38
│ │ │ │ -
40smp smp_not(smp a);
│ │ │ │ -
41
│ │ │ │ -
43smp smp_negate(smp a);
│ │ │ │ -
44
│ │ │ │ -
46smp smp_from_int(int64_t n);
│ │ │ │ -
47
│ │ │ │ -
49bool smp_is_negative(smp a);
│ │ │ │ -
50
│ │ │ │ -
52bool smp_is_zero(smp a);
│ │ │ │ -
53
│ │ │ │ -
55int smp_cmp(smp a, smp b);
│ │ │ │ +
33/* these headers are needed for basename */
│ │ │ │ +
34#ifdef HAVE_STRING_H
│ │ │ │ +
35# include <string.h>
│ │ │ │ +
36#endif
│ │ │ │ +
37#ifdef HAVE_LIBGEN_H
│ │ │ │ +
38# include <libgen.h>
│ │ │ │ +
39#endif
│ │ │ │ +
40#ifdef HAVE_GETOPT_H
│ │ │ │ +
41# include <getopt.h>
│ │ │ │ +
42#endif
│ │ │ │ +
43
│ │ │ │ +
44#if !HAVE_POLL
│ │ │ │ + │ │ │ │ +
46#elif HAVE_POLL_H
│ │ │ │ +
47#include <poll.h>
│ │ │ │ +
48#endif /* !HAVE_POLL */
│ │ │ │ +
49
│ │ │ │ +
50#include <freetds/pushvis.h>
│ │ │ │ +
51
│ │ │ │ +
52#ifdef __cplusplus
│ │ │ │ +
53extern "C"
│ │ │ │ +
54{
│ │ │ │ +
55#endif
│ │ │ │
56
│ │ │ │ -
58double smp_to_double(smp a);
│ │ │ │ -
59
│ │ │ │ -
61char *smp_to_string(smp a);
│ │ │ │ +
57#if !HAVE_ASPRINTF
│ │ │ │ +
58#undef asprintf
│ │ │ │ +
59int tds_asprintf(char **ret, const char *fmt, ...);
│ │ │ │ +
60#define asprintf tds_asprintf
│ │ │ │ +
61#endif /* !HAVE_ASPRINTF */
│ │ │ │
62
│ │ │ │ -
64smp smp_from_string(const char *s);
│ │ │ │ -
65
│ │ │ │ -
66#endif /* _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ */
│ │ │ │ -
Definition smp.h:26
│ │ │ │ +
63#if !HAVE_VASPRINTF
│ │ │ │ +
64#undef vasprintf
│ │ │ │ +
65int tds_vasprintf(char **ret, const char *fmt, va_list ap);
│ │ │ │ +
66#define vasprintf tds_vasprintf
│ │ │ │ +
67#endif /* !HAVE_VASPRINTF */
│ │ │ │ +
68
│ │ │ │ +
69#if !HAVE_STRTOK_R
│ │ │ │ +
70/* Some MinGW define strtok_r macro thread-safe but not reentrant but we
│ │ │ │ +
71 need both so avoid using the macro */
│ │ │ │ +
72#undef strtok_r
│ │ │ │ +
73#if defined(_WIN32) && HAVE_STRTOK_S
│ │ │ │ +
74#define strtok_r strtok_s
│ │ │ │ +
75#else
│ │ │ │ +
76char *tds_strtok_r(char *str, const char *sep, char **lasts);
│ │ │ │ +
77#define strtok_r tds_strtok_r
│ │ │ │ +
78#endif
│ │ │ │ +
79#endif /* !HAVE_STRTOK_R */
│ │ │ │ +
80
│ │ │ │ +
81#if !HAVE_STRSEP
│ │ │ │ +
82#undef strsep
│ │ │ │ +
83char *tds_strsep(char **stringp, const char *delim);
│ │ │ │ +
84#define strsep tds_strsep
│ │ │ │ +
85#endif /* !HAVE_STRSEP */
│ │ │ │ +
86
│ │ │ │ +
87#if !HAVE_STRLCPY
│ │ │ │ +
88size_t tds_strlcpy(char *dest, const char *src, size_t len);
│ │ │ │ +
89#undef strlcpy
│ │ │ │ +
90#define strlcpy(d,s,l) tds_strlcpy(d,s,l)
│ │ │ │ +
91#endif
│ │ │ │ +
92
│ │ │ │ +
93#if !HAVE_GETADDRINFO
│ │ │ │ +
│ │ │ │ +
94typedef struct tds_addrinfo {
│ │ │ │ +
95 int ai_flags;
│ │ │ │ +
96 int ai_family;
│ │ │ │ +
97 int ai_socktype;
│ │ │ │ +
98 int ai_protocol;
│ │ │ │ +
99 size_t ai_addrlen;
│ │ │ │ +
100 struct sockaddr *ai_addr;
│ │ │ │ +
101 char *ai_canonname;
│ │ │ │ +
102 struct tds_addrinfo *ai_next;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
104
│ │ │ │ +
105int tds_getaddrinfo(const char *node, const char *service, const struct tds_addrinfo *hints, struct tds_addrinfo **res);
│ │ │ │ +
106int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
│ │ │ │ +
107void tds_freeaddrinfo(struct tds_addrinfo *addr);
│ │ │ │ +
108#define addrinfo tds_addrinfo
│ │ │ │ +
109#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)
│ │ │ │ +
110#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)
│ │ │ │ +
111#define freeaddrinfo(a) tds_freeaddrinfo(a)
│ │ │ │ +
112#endif
│ │ │ │ +
113
│ │ │ │ +
114#ifndef AI_FQDN
│ │ │ │ +
115#define AI_FQDN 0
│ │ │ │ +
116#endif
│ │ │ │ +
117
│ │ │ │ +
118#if !HAVE_STRLCAT
│ │ │ │ +
119size_t tds_strlcat(char *dest, const char *src, size_t len);
│ │ │ │ +
120#undef strlcat
│ │ │ │ +
121#define strlcat(d,s,l) tds_strlcat(d,s,l)
│ │ │ │ +
122#endif
│ │ │ │ +
123
│ │ │ │ +
124#if !HAVE_BASENAME
│ │ │ │ +
125char *tds_basename(char *path);
│ │ │ │ +
126#define basename(path) tds_basename(path)
│ │ │ │ +
127#endif
│ │ │ │ +
128
│ │ │ │ +
129/*
│ │ │ │ +
130 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.
│ │ │ │ +
131 * Other Win32 C runtime libraries, notably MinGW, may define it.
│ │ │ │ +
132 * There is no symbol uniquely defined in Microsoft's header files that
│ │ │ │ +
133 * can be used by the preprocessor to know whether we're compiling for
│ │ │ │ +
134 * Microsoft's library or not (or which version). Thus there's no
│ │ │ │ +
135 * way to automatically decide whether or not to define strcasecmp
│ │ │ │ +
136 * in terms of stricmp.
│ │ │ │ +
137 *
│ │ │ │ +
138 * The Microsoft *compiler* defines _MSC_VER. On the assumption that
│ │ │ │ +
139 * anyone using their compiler is also using their library, the below
│ │ │ │ +
140 * tests check _MSC_VER as a proxy.
│ │ │ │ +
141 */
│ │ │ │ +
142#if defined(_WIN32)
│ │ │ │ +
143# if !defined(strcasecmp) && defined(_MSC_VER)
│ │ │ │ +
144# define strcasecmp(A, B) stricmp((A), (B))
│ │ │ │ +
145# endif
│ │ │ │ +
146# if !defined(strncasecmp) && defined(_MSC_VER)
│ │ │ │ +
147# define strncasecmp(x,y,z) strnicmp((x),(y),(z))
│ │ │ │ +
148# endif
│ │ │ │ +
149
│ │ │ │ +
150#undef gettimeofday
│ │ │ │ +
151int tds_gettimeofday (struct timeval *tv, void *tz);
│ │ │ │ +
152#define gettimeofday tds_gettimeofday
│ │ │ │ +
153
│ │ │ │ +
154/* Older MinGW-w64 versions don't define these flags. */
│ │ │ │ +
155#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)
│ │ │ │ +
156# define AI_ADDRCONFIG 0x00000400
│ │ │ │ +
157#endif
│ │ │ │ +
158#if defined(__MINGW32__) && !defined(AI_V4MAPPED)
│ │ │ │ +
159# define AI_V4MAPPED 0x00000800
│ │ │ │ +
160#endif
│ │ │ │ +
161
│ │ │ │ +
162#endif
│ │ │ │ +
163
│ │ │ │ +
164#if defined(_WIN32) && defined(_MSC_VER)
│ │ │ │ +
165#define tds_strtoll _strtoi64
│ │ │ │ +
166#else
│ │ │ │ +
167#define tds_strtoll strtoll
│ │ │ │ +
168#endif
│ │ │ │ +
169
│ │ │ │ +
170#if !HAVE_GETOPT
│ │ │ │ +
171#undef getopt
│ │ │ │ +
172int tds_getopt(int argc, char * const argv[], const char *optstring);
│ │ │ │ +
173#define getopt tds_getopt
│ │ │ │ +
174
│ │ │ │ +
175extern char *optarg;
│ │ │ │ +
176extern int optind, offset, opterr, optreset;
│ │ │ │ +
177#endif
│ │ │ │ +
178
│ │ │ │ +
179#if !HAVE_SOCKETPAIR
│ │ │ │ +
180int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv[2]);
│ │ │ │ +
181#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)
│ │ │ │ +
182#endif
│ │ │ │ +
183
│ │ │ │ +
184#if !HAVE_DAEMON
│ │ │ │ +
185int tds_daemon(int no_chdir, int no_close);
│ │ │ │ +
186#define daemon(d,c) tds_daemon(d,c)
│ │ │ │ +
187#endif
│ │ │ │ +
188
│ │ │ │ +
189#if !HAVE_SETENV
│ │ │ │ +
190int tds_setenv(const char *name, const char *value, int overwrite);
│ │ │ │ +
191#define setenv(n,v,o) tds_setenv(n,v,o)
│ │ │ │ +
192int tds_unsetenv(const char *name);
│ │ │ │ +
193#define unsetenv(n) tds_unsetenv(n)
│ │ │ │ +
194#endif
│ │ │ │ +
195
│ │ │ │ +
196#ifdef __cplusplus
│ │ │ │ +
197}
│ │ │ │ +
198#endif
│ │ │ │ +
199
│ │ │ │ +
200#include <freetds/popvis.h>
│ │ │ │ +
201
│ │ │ │ +
202#endif
│ │ │ │ +
Provide poll call where missing.
│ │ │ │ +
Definition replacements.h:94
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -smp.h │ │ │ │ │ -1/* Simple multiprecision - small MP library for testing │ │ │ │ │ -2 * Copyright (C) 2022-2024 Frediano Ziglio │ │ │ │ │ +replacements.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,47 +20,199 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ │ │ │ │ │ -21#define _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ │ │ │ │ │ +20#ifndef _tdsguard_fELDB9J1dGrLHROMPkGfXj_ │ │ │ │ │ +21#define _tdsguard_fELDB9J1dGrLHROMPkGfXj_ │ │ │ │ │ 22 │ │ │ │ │ -23#include │ │ │ │ │ -24#include │ │ │ │ │ -25 │ │ │ │ │ -26typedef struct { │ │ │ │ │ -27 uint16_t comp[8]; │ │ │ │ │ -28} smp; │ │ │ │ │ -29 │ │ │ │ │ -30extern const smp smp_zero; │ │ │ │ │ -31extern const smp smp_one; │ │ │ │ │ +23#ifndef _freetds_config_h_ │ │ │ │ │ +24#error should include config.h before │ │ │ │ │ +25#endif │ │ │ │ │ +26 │ │ │ │ │ +27#include │ │ │ │ │ +28#include "tds_sysdep_public.h" │ │ │ │ │ +29#include │ │ │ │ │ +30 │ │ │ │ │ +31#include │ │ │ │ │ 32 │ │ │ │ │ -34smp smp_add(smp a, smp b); │ │ │ │ │ -35 │ │ │ │ │ -37smp smp_sub(smp a, smp b); │ │ │ │ │ -38 │ │ │ │ │ -40smp smp_not(smp a); │ │ │ │ │ -41 │ │ │ │ │ -43smp smp_negate(smp a); │ │ │ │ │ -44 │ │ │ │ │ -46smp smp_from_int(int64_t n); │ │ │ │ │ -47 │ │ │ │ │ -49bool smp_is_negative(smp a); │ │ │ │ │ -50 │ │ │ │ │ -52bool smp_is_zero(smp a); │ │ │ │ │ -53 │ │ │ │ │ -55int smp_cmp(smp a, smp b); │ │ │ │ │ +33/* these headers are needed for basename */ │ │ │ │ │ +34#ifdef HAVE_STRING_H │ │ │ │ │ +35# include │ │ │ │ │ +36#endif │ │ │ │ │ +37#ifdef HAVE_LIBGEN_H │ │ │ │ │ +38# include │ │ │ │ │ +39#endif │ │ │ │ │ +40#ifdef HAVE_GETOPT_H │ │ │ │ │ +41# include │ │ │ │ │ +42#endif │ │ │ │ │ +43 │ │ │ │ │ +44#if !HAVE_POLL │ │ │ │ │ +45#include │ │ │ │ │ +46#elif HAVE_POLL_H │ │ │ │ │ +47#include │ │ │ │ │ +48#endif /* !HAVE_POLL */ │ │ │ │ │ +49 │ │ │ │ │ +50#include │ │ │ │ │ +51 │ │ │ │ │ +52#ifdef __cplusplus │ │ │ │ │ +53extern "C" │ │ │ │ │ +54{ │ │ │ │ │ +55#endif │ │ │ │ │ 56 │ │ │ │ │ -58double smp_to_double(smp a); │ │ │ │ │ -59 │ │ │ │ │ -61char *smp_to_string(smp a); │ │ │ │ │ +57#if !HAVE_ASPRINTF │ │ │ │ │ +58#undef asprintf │ │ │ │ │ +59int tds_asprintf(char **ret, const char *fmt, ...); │ │ │ │ │ +60#define asprintf tds_asprintf │ │ │ │ │ +61#endif /* !HAVE_ASPRINTF */ │ │ │ │ │ 62 │ │ │ │ │ -64smp smp_from_string(const char *s); │ │ │ │ │ -65 │ │ │ │ │ -66#endif /* _tdsguard_hfFl8IZw2Vf65YyyYQLJTS_ */ │ │ │ │ │ -smp │ │ │ │ │ -Definition smp.h:26 │ │ │ │ │ +63#if !HAVE_VASPRINTF │ │ │ │ │ +64#undef vasprintf │ │ │ │ │ +65int tds_vasprintf(char **ret, const char *fmt, va_list ap); │ │ │ │ │ +66#define vasprintf tds_vasprintf │ │ │ │ │ +67#endif /* !HAVE_VASPRINTF */ │ │ │ │ │ +68 │ │ │ │ │ +69#if !HAVE_STRTOK_R │ │ │ │ │ +70/* Some MinGW define strtok_r macro thread-safe but not reentrant but we │ │ │ │ │ +71 need both so avoid using the macro */ │ │ │ │ │ +72#undef strtok_r │ │ │ │ │ +73#if defined(_WIN32) && HAVE_STRTOK_S │ │ │ │ │ +74#define strtok_r strtok_s │ │ │ │ │ +75#else │ │ │ │ │ +76char *tds_strtok_r(char *str, const char *sep, char **lasts); │ │ │ │ │ +77#define strtok_r tds_strtok_r │ │ │ │ │ +78#endif │ │ │ │ │ +79#endif /* !HAVE_STRTOK_R */ │ │ │ │ │ +80 │ │ │ │ │ +81#if !HAVE_STRSEP │ │ │ │ │ +82#undef strsep │ │ │ │ │ +83char *tds_strsep(char **stringp, const char *delim); │ │ │ │ │ +84#define strsep tds_strsep │ │ │ │ │ +85#endif /* !HAVE_STRSEP */ │ │ │ │ │ +86 │ │ │ │ │ +87#if !HAVE_STRLCPY │ │ │ │ │ +88size_t tds_strlcpy(char *dest, const char *src, size_t len); │ │ │ │ │ +89#undef strlcpy │ │ │ │ │ +90#define strlcpy(d,s,l) tds_strlcpy(d,s,l) │ │ │ │ │ +91#endif │ │ │ │ │ +92 │ │ │ │ │ +93#if !HAVE_GETADDRINFO │ │ │ │ │ +94typedef struct tds_addrinfo { │ │ │ │ │ +95 int ai_flags; │ │ │ │ │ +96 int ai_family; │ │ │ │ │ +97 int ai_socktype; │ │ │ │ │ +98 int ai_protocol; │ │ │ │ │ +99 size_t ai_addrlen; │ │ │ │ │ +100 struct sockaddr *ai_addr; │ │ │ │ │ +101 char *ai_canonname; │ │ │ │ │ +102 struct tds_addrinfo *ai_next; │ │ │ │ │ +103} tds_addrinfo; │ │ │ │ │ +104 │ │ │ │ │ +105int tds_getaddrinfo(const char *node, const char *service, const struct tds_ │ │ │ │ │ +addrinfo *hints, struct tds_addrinfo **res); │ │ │ │ │ +106int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, │ │ │ │ │ +size_t hostlen, char *serv, size_t servlen, int flags); │ │ │ │ │ +107void tds_freeaddrinfo(struct tds_addrinfo *addr); │ │ │ │ │ +108#define addrinfo tds_addrinfo │ │ │ │ │ +109#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r) │ │ │ │ │ +110#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g) │ │ │ │ │ +111#define freeaddrinfo(a) tds_freeaddrinfo(a) │ │ │ │ │ +112#endif │ │ │ │ │ +113 │ │ │ │ │ +114#ifndef AI_FQDN │ │ │ │ │ +115#define AI_FQDN 0 │ │ │ │ │ +116#endif │ │ │ │ │ +117 │ │ │ │ │ +118#if !HAVE_STRLCAT │ │ │ │ │ +119size_t tds_strlcat(char *dest, const char *src, size_t len); │ │ │ │ │ +120#undef strlcat │ │ │ │ │ +121#define strlcat(d,s,l) tds_strlcat(d,s,l) │ │ │ │ │ +122#endif │ │ │ │ │ +123 │ │ │ │ │ +124#if !HAVE_BASENAME │ │ │ │ │ +125char *tds_basename(char *path); │ │ │ │ │ +126#define basename(path) tds_basename(path) │ │ │ │ │ +127#endif │ │ │ │ │ +128 │ │ │ │ │ +129/* │ │ │ │ │ +130 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp. │ │ │ │ │ +131 * Other Win32 C runtime libraries, notably MinGW, may define it. │ │ │ │ │ +132 * There is no symbol uniquely defined in Microsoft's header files that │ │ │ │ │ +133 * can be used by the preprocessor to know whether we're compiling for │ │ │ │ │ +134 * Microsoft's library or not (or which version). Thus there's no │ │ │ │ │ +135 * way to automatically decide whether or not to define strcasecmp │ │ │ │ │ +136 * in terms of stricmp. │ │ │ │ │ +137 * │ │ │ │ │ +138 * The Microsoft *compiler* defines _MSC_VER. On the assumption that │ │ │ │ │ +139 * anyone using their compiler is also using their library, the below │ │ │ │ │ +140 * tests check _MSC_VER as a proxy. │ │ │ │ │ +141 */ │ │ │ │ │ +142#if defined(_WIN32) │ │ │ │ │ +143# if !defined(strcasecmp) && defined(_MSC_VER) │ │ │ │ │ +144# define strcasecmp(A, B) stricmp((A), (B)) │ │ │ │ │ +145# endif │ │ │ │ │ +146# if !defined(strncasecmp) && defined(_MSC_VER) │ │ │ │ │ +147# define strncasecmp(x,y,z) strnicmp((x),(y),(z)) │ │ │ │ │ +148# endif │ │ │ │ │ +149 │ │ │ │ │ +150#undef gettimeofday │ │ │ │ │ +151int tds_gettimeofday (struct timeval *tv, void *tz); │ │ │ │ │ +152#define gettimeofday tds_gettimeofday │ │ │ │ │ +153 │ │ │ │ │ +154/* Older MinGW-w64 versions don't define these flags. */ │ │ │ │ │ +155#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG) │ │ │ │ │ +156# define AI_ADDRCONFIG 0x00000400 │ │ │ │ │ +157#endif │ │ │ │ │ +158#if defined(__MINGW32__) && !defined(AI_V4MAPPED) │ │ │ │ │ +159# define AI_V4MAPPED 0x00000800 │ │ │ │ │ +160#endif │ │ │ │ │ +161 │ │ │ │ │ +162#endif │ │ │ │ │ +163 │ │ │ │ │ +164#if defined(_WIN32) && defined(_MSC_VER) │ │ │ │ │ +165#define tds_strtoll _strtoi64 │ │ │ │ │ +166#else │ │ │ │ │ +167#define tds_strtoll strtoll │ │ │ │ │ +168#endif │ │ │ │ │ +169 │ │ │ │ │ +170#if !HAVE_GETOPT │ │ │ │ │ +171#undef getopt │ │ │ │ │ +172int tds_getopt(int argc, char * const argv[], const char *optstring); │ │ │ │ │ +173#define getopt tds_getopt │ │ │ │ │ +174 │ │ │ │ │ +175extern char *optarg; │ │ │ │ │ +176extern int optind, offset, opterr, optreset; │ │ │ │ │ +177#endif │ │ │ │ │ +178 │ │ │ │ │ +179#if !HAVE_SOCKETPAIR │ │ │ │ │ +180int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv │ │ │ │ │ +[2]); │ │ │ │ │ +181#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s) │ │ │ │ │ +182#endif │ │ │ │ │ +183 │ │ │ │ │ +184#if !HAVE_DAEMON │ │ │ │ │ +185int tds_daemon(int no_chdir, int no_close); │ │ │ │ │ +186#define daemon(d,c) tds_daemon(d,c) │ │ │ │ │ +187#endif │ │ │ │ │ +188 │ │ │ │ │ +189#if !HAVE_SETENV │ │ │ │ │ +190int tds_setenv(const char *name, const char *value, int overwrite); │ │ │ │ │ +191#define setenv(n,v,o) tds_setenv(n,v,o) │ │ │ │ │ +192int tds_unsetenv(const char *name); │ │ │ │ │ +193#define unsetenv(n) tds_unsetenv(n) │ │ │ │ │ +194#endif │ │ │ │ │ +195 │ │ │ │ │ +196#ifdef __cplusplus │ │ │ │ │ +197} │ │ │ │ │ +198#endif │ │ │ │ │ +199 │ │ │ │ │ +200#include │ │ │ │ │ +201 │ │ │ │ │ +202#endif │ │ │ │ │ +poll.h │ │ │ │ │ +Provide poll call where missing. │ │ │ │ │ +tds_addrinfo │ │ │ │ │ +Definition replacements.h:94 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00497_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/dlist.h Source File │ │ │ │ +FreeTDS API: include/freetds/sysdep_types.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,23 +70,23 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
dlist.h
│ │ │ │ +
sysdep_types.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* Dlist - dynamic list
│ │ │ │ -
2 * Copyright (C) 2016-2024 Frediano Ziglio
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2021 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,46 +96,27 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
│ │ │ │ -
21#define _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
│ │ │ │ +
20#ifndef _tdsguard_fhDKKbNsWAy7n0lapo2Voc_
│ │ │ │ +
21#define _tdsguard_fhDKKbNsWAy7n0lapo2Voc_
│ │ │ │
22
│ │ │ │ -
│ │ │ │ -
23typedef struct dlist_ring {
│ │ │ │ -
24 struct dlist_ring *next;
│ │ │ │ -
25 struct dlist_ring *prev;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
27
│ │ │ │ -
28#if ENABLE_EXTRA_CHECKS
│ │ │ │ -
29void dlist_ring_check(dlist_ring *ring);
│ │ │ │ -
30#endif
│ │ │ │ -
31
│ │ │ │ -
32#define DLIST_FIELDS(name) \
│ │ │ │ -
33 dlist_ring name
│ │ │ │ -
34
│ │ │ │ -
35#define DLIST_FOREACH(prefix, list, p) \
│ │ │ │ -
36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next(list, p))
│ │ │ │ -
37
│ │ │ │ -
38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_item)
│ │ │ │ -
39{
│ │ │ │ -
40 assert(!ring_item->next && !ring_item->prev);
│ │ │ │ -
41 ring_pos->next->prev = ring_item;
│ │ │ │ -
42 ring_item->prev = ring_pos;
│ │ │ │ -
43 ring_item->next = ring_pos->next;
│ │ │ │ -
44 ring_pos->next = ring_item;
│ │ │ │ -
45 assert(ring_item->next && ring_item->prev);
│ │ │ │ -
46}
│ │ │ │ -
47
│ │ │ │ -
48#endif /* _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ */
│ │ │ │ -
Definition dlist.h:23
│ │ │ │ +
23#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_
│ │ │ │ +
24#error Do not include directly, include <freetds/sysdep_private.h>
│ │ │ │ +
25#endif
│ │ │ │ +
26
│ │ │ │ +
27typedef signed long TDS_INTPTR;
│ │ │ │ +
28typedef unsigned long TDS_UINTPTR;
│ │ │ │ +
29
│ │ │ │ +
30#else
│ │ │ │ +
31#error Do not include directly, include <freetds/sysdep_private.h>
│ │ │ │ +
32#endif /* _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -dlist.h │ │ │ │ │ -1/* Dlist - dynamic list │ │ │ │ │ -2 * Copyright (C) 2016-2024 Frediano Ziglio │ │ │ │ │ +sysdep_types.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2021 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -21,42 +20,22 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ │ │ │ │ │ -21#define _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ │ │ │ │ │ +20#ifndef _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ │ │ │ │ │ +21#define _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ │ │ │ │ │ 22 │ │ │ │ │ -23typedef struct dlist_ring { │ │ │ │ │ -24 struct dlist_ring *next; │ │ │ │ │ -25 struct dlist_ring *prev; │ │ │ │ │ -26} dlist_ring; │ │ │ │ │ -27 │ │ │ │ │ -28#if ENABLE_EXTRA_CHECKS │ │ │ │ │ -29void dlist_ring_check(dlist_ring *ring); │ │ │ │ │ -30#endif │ │ │ │ │ -31 │ │ │ │ │ -32#define DLIST_FIELDS(name) \ │ │ │ │ │ -33 dlist_ring name │ │ │ │ │ -34 │ │ │ │ │ -35#define DLIST_FOREACH(prefix, list, p) \ │ │ │ │ │ -36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next │ │ │ │ │ -(list, p)) │ │ │ │ │ -37 │ │ │ │ │ -38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_ │ │ │ │ │ -item) │ │ │ │ │ -39{ │ │ │ │ │ -40 assert(!ring_item->next && !ring_item->prev); │ │ │ │ │ -41 ring_pos->next->prev = ring_item; │ │ │ │ │ -42 ring_item->prev = ring_pos; │ │ │ │ │ -43 ring_item->next = ring_pos->next; │ │ │ │ │ -44 ring_pos->next = ring_item; │ │ │ │ │ -45 assert(ring_item->next && ring_item->prev); │ │ │ │ │ -46} │ │ │ │ │ -47 │ │ │ │ │ -48#endif /* _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ */ │ │ │ │ │ -dlist_ring │ │ │ │ │ -Definition dlist.h:23 │ │ │ │ │ +23#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_ │ │ │ │ │ +24#error Do not include directly, include │ │ │ │ │ +25#endif │ │ │ │ │ +26 │ │ │ │ │ +27typedef signed long TDS_INTPTR; │ │ │ │ │ +28typedef unsigned long TDS_UINTPTR; │ │ │ │ │ +29 │ │ │ │ │ +30#else │ │ │ │ │ +31#error Do not include directly, include │ │ │ │ │ +32#endif /* _tdsguard_fhDKKbNsWAy7n0lapo2Voc_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00500_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/utils/md4.h Source File │ │ │ │ +FreeTDS API: include/freetds/checks.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,71 +70,99 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
md4.h
│ │ │ │ +
checks.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1#ifndef _tdsguard_bJRBdagK4r9w58mnUbyvA0_
│ │ │ │ -
2#define _tdsguard_bJRBdagK4r9w58mnUbyvA0_
│ │ │ │ -
3
│ │ │ │ -
4#ifndef HAVE_NETTLE
│ │ │ │ -
5
│ │ │ │ -
6#include <freetds/pushvis.h>
│ │ │ │ -
7
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
9{
│ │ │ │ -
10 uint32_t buf[4];
│ │ │ │ -
11 uint64_t bytes;
│ │ │ │ -
12 uint32_t in[16];
│ │ │ │ -
13};
│ │ │ │ -
│ │ │ │ -
14
│ │ │ │ -
15void MD4Init(struct MD4Context *context);
│ │ │ │ -
16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len);
│ │ │ │ -
17void MD4Final(struct MD4Context *context, uint8_t *digest);
│ │ │ │ -
18
│ │ │ │ -
19typedef struct MD4Context MD4_CTX;
│ │ │ │ -
20
│ │ │ │ -
21#include <freetds/popvis.h>
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 2004 Frediano Ziglio
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_
│ │ │ │ +
21#define _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_
│ │ │ │
22
│ │ │ │ -
23#else
│ │ │ │ +
23#include <freetds/pushvis.h>
│ │ │ │
24
│ │ │ │ -
25#include <nettle/md4.h>
│ │ │ │ -
26
│ │ │ │ -
27typedef struct md4_ctx MD4_CTX;
│ │ │ │ -
28
│ │ │ │ -
29static inline void MD4Init(MD4_CTX *ctx)
│ │ │ │ -
30{
│ │ │ │ -
31 nettle_md4_init(ctx);
│ │ │ │ -
32}
│ │ │ │ -
33
│ │ │ │ -
34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len)
│ │ │ │ -
35{
│ │ │ │ -
36 nettle_md4_update(ctx, len, buf);
│ │ │ │ -
37}
│ │ │ │ -
38
│ │ │ │ -
39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest)
│ │ │ │ -
40{
│ │ │ │ -
41 nettle_md4_digest(ctx, 16, digest);
│ │ │ │ -
42}
│ │ │ │ -
43
│ │ │ │ -
44
│ │ │ │ -
45#endif
│ │ │ │ -
46
│ │ │ │ -
47#endif /* !_tdsguard_bJRBdagK4r9w58mnUbyvA0_ */
│ │ │ │ -
Definition md4.h:9
│ │ │ │ +
25#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
26#define CHECK_STRUCT_EXTRA(func,s) func(s)
│ │ │ │ +
27#else
│ │ │ │ +
28#define CHECK_STRUCT_EXTRA(func,s)
│ │ │ │ +
29#endif
│ │ │ │ +
30
│ │ │ │ +
31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)
│ │ │ │ +
32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_extra,ctx)
│ │ │ │ +
33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)
│ │ │ │ +
34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_extra,column)
│ │ │ │ +
35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
│ │ │ │ +
36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
│ │ │ │ +
37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_extra,cursor)
│ │ │ │ +
38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_extra,dynamic)
│ │ │ │ +
39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_extra,freeze)
│ │ │ │ +
40#define CHECK_CONN_EXTRA(conn)
│ │ │ │ +
41
│ │ │ │ +
42#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
43void tds_check_tds_extra(const TDSSOCKET * tds);
│ │ │ │ +
44void tds_check_context_extra(const TDSCONTEXT * ctx);
│ │ │ │ +
45void tds_check_env_extra(const TDSENV * env);
│ │ │ │ +
46void tds_check_column_extra(const TDSCOLUMN * column);
│ │ │ │ +
47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);
│ │ │ │ +
48void tds_check_cursor_extra(const TDSCURSOR * cursor);
│ │ │ │ +
49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);
│ │ │ │ +
50void tds_check_freeze_extra(const TDSFREEZE * freeze);
│ │ │ │ +
51#endif
│ │ │ │ +
52
│ │ │ │ +
53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS
│ │ │ │ +
54# include <valgrind/memcheck.h>
│ │ │ │ +
55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)
│ │ │ │ +
56#else
│ │ │ │ +
57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)
│ │ │ │ +
58#endif
│ │ │ │ +
59
│ │ │ │ +
60#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
61void tds_extra_assert_check(const char *fn, int line, int cond, const char *cond_str);
│ │ │ │ +
62# define tds_extra_assert(cond) \
│ │ │ │ +
63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)
│ │ │ │ +
64#else
│ │ │ │ +
65# define tds_extra_assert(cond) do { } while(0)
│ │ │ │ +
66#endif
│ │ │ │ +
67
│ │ │ │ +
68#include <freetds/popvis.h>
│ │ │ │ +
69
│ │ │ │ +
70#endif /* _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ */
│ │ │ │ +
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ +
Hold information for any results.
Definition tds.h:754
│ │ │ │ +
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ +
Current environment as reported by the server.
Definition tds.h:948
│ │ │ │ +
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ +
Definition tds.h:1015
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
Definition tds.h:1584
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,59 +1,109 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ - * utils │ │ │ │ │ -md4.h │ │ │ │ │ -1#ifndef _tdsguard_bJRBdagK4r9w58mnUbyvA0_ │ │ │ │ │ -2#define _tdsguard_bJRBdagK4r9w58mnUbyvA0_ │ │ │ │ │ -3 │ │ │ │ │ -4#ifndef HAVE_NETTLE │ │ │ │ │ -5 │ │ │ │ │ -6#include │ │ │ │ │ -7 │ │ │ │ │ -8struct MD4Context │ │ │ │ │ -9{ │ │ │ │ │ -10 uint32_t buf[4]; │ │ │ │ │ -11 uint64_t bytes; │ │ │ │ │ -12 uint32_t in[16]; │ │ │ │ │ -13}; │ │ │ │ │ -14 │ │ │ │ │ -15void MD4Init(struct MD4Context *context); │ │ │ │ │ -16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len); │ │ │ │ │ -17void MD4Final(struct MD4Context *context, uint8_t *digest); │ │ │ │ │ -18 │ │ │ │ │ -19typedef struct MD4Context MD4_CTX; │ │ │ │ │ -20 │ │ │ │ │ -21#include │ │ │ │ │ +checks.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 2004 Frediano Ziglio │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ │ │ │ │ │ +21#define _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ │ │ │ │ │ 22 │ │ │ │ │ -23#else │ │ │ │ │ +23#include │ │ │ │ │ 24 │ │ │ │ │ -25#include │ │ │ │ │ -26 │ │ │ │ │ -27typedef struct md4_ctx MD4_CTX; │ │ │ │ │ -28 │ │ │ │ │ -29static inline void MD4Init(MD4_CTX *ctx) │ │ │ │ │ -30{ │ │ │ │ │ -31 nettle_md4_init(ctx); │ │ │ │ │ -32} │ │ │ │ │ -33 │ │ │ │ │ -34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len) │ │ │ │ │ -35{ │ │ │ │ │ -36 nettle_md4_update(ctx, len, buf); │ │ │ │ │ -37} │ │ │ │ │ -38 │ │ │ │ │ -39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest) │ │ │ │ │ -40{ │ │ │ │ │ -41 nettle_md4_digest(ctx, 16, digest); │ │ │ │ │ -42} │ │ │ │ │ -43 │ │ │ │ │ -44 │ │ │ │ │ -45#endif │ │ │ │ │ -46 │ │ │ │ │ -47#endif /* !_tdsguard_bJRBdagK4r9w58mnUbyvA0_ */ │ │ │ │ │ -MD4Context │ │ │ │ │ -Definition md4.h:9 │ │ │ │ │ +25#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +26#define CHECK_STRUCT_EXTRA(func,s) func(s) │ │ │ │ │ +27#else │ │ │ │ │ +28#define CHECK_STRUCT_EXTRA(func,s) │ │ │ │ │ +29#endif │ │ │ │ │ +30 │ │ │ │ │ +31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds) │ │ │ │ │ +32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_ │ │ │ │ │ +extra,ctx) │ │ │ │ │ +33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env) │ │ │ │ │ +34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_ │ │ │ │ │ +extra,column) │ │ │ │ │ +35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_ │ │ │ │ │ +resultinfo_extra,res_info) │ │ │ │ │ +36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_ │ │ │ │ │ +resultinfo_extra,res_info) │ │ │ │ │ +37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_ │ │ │ │ │ +extra,cursor) │ │ │ │ │ +38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_ │ │ │ │ │ +extra,dynamic) │ │ │ │ │ +39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_ │ │ │ │ │ +extra,freeze) │ │ │ │ │ +40#define CHECK_CONN_EXTRA(conn) │ │ │ │ │ +41 │ │ │ │ │ +42#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +43void tds_check_tds_extra(const TDSSOCKET * tds); │ │ │ │ │ +44void tds_check_context_extra(const TDSCONTEXT * ctx); │ │ │ │ │ +45void tds_check_env_extra(const TDSENV * env); │ │ │ │ │ +46void tds_check_column_extra(const TDSCOLUMN * column); │ │ │ │ │ +47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info); │ │ │ │ │ +48void tds_check_cursor_extra(const TDSCURSOR * cursor); │ │ │ │ │ +49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic); │ │ │ │ │ +50void tds_check_freeze_extra(const TDSFREEZE * freeze); │ │ │ │ │ +51#endif │ │ │ │ │ +52 │ │ │ │ │ +53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS │ │ │ │ │ +54# include │ │ │ │ │ +55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len) │ │ │ │ │ +56#else │ │ │ │ │ +57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0) │ │ │ │ │ +58#endif │ │ │ │ │ +59 │ │ │ │ │ +60#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +61void tds_extra_assert_check(const char *fn, int line, int cond, const char │ │ │ │ │ +*cond_str); │ │ │ │ │ +62# define tds_extra_assert(cond) \ │ │ │ │ │ +63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond) │ │ │ │ │ +64#else │ │ │ │ │ +65# define tds_extra_assert(cond) do { } while(0) │ │ │ │ │ +66#endif │ │ │ │ │ +67 │ │ │ │ │ +68#include │ │ │ │ │ +69 │ │ │ │ │ +70#endif /* _tdsguard_ejjdEEiHR3F7xWi9vVKOIa_ */ │ │ │ │ │ +tds_column │ │ │ │ │ +Metadata about columns in regular and compute rows. │ │ │ │ │ +Definition tds.h:674 │ │ │ │ │ +tds_result_info │ │ │ │ │ +Hold information for any results. │ │ │ │ │ +Definition tds.h:754 │ │ │ │ │ +tds_cursor │ │ │ │ │ +Holds information about a cursor. │ │ │ │ │ +Definition tds.h:922 │ │ │ │ │ +tds_env │ │ │ │ │ +Current environment as reported by the server. │ │ │ │ │ +Definition tds.h:948 │ │ │ │ │ +tds_dynamic │ │ │ │ │ +Holds information for a dynamic (also called prepared) query. │ │ │ │ │ +Definition tds.h:962 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ +tds_freeze │ │ │ │ │ +Definition tds.h:1584 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00503_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/server.h Source File │ │ │ │ +FreeTDS API: include/freetds/bool.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,19 +74,19 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
server.h
│ │ │ │ +
bool.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ +
2 * Copyright (C) 2015 Frediano Ziglio
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,66 +96,38 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_
│ │ │ │ -
21#define _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_
│ │ │ │ -
22#endif
│ │ │ │ -
23
│ │ │ │ -
24#ifdef __cplusplus
│ │ │ │ -
25extern "C"
│ │ │ │ -
26{
│ │ │ │ -
27#endif
│ │ │ │ -
28#if 0
│ │ │ │ -
29}
│ │ │ │ -
30#endif
│ │ │ │ -
31
│ │ │ │ -
32/* login.c */
│ │ │ │ -
33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, unsigned char *clear_pass);
│ │ │ │ -
34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);
│ │ │ │ -
35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ -
36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ -
37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);
│ │ │ │ +
20#ifndef _tdsguard_hKphrpWEELXHaaZkiGPQUV_
│ │ │ │ +
21#define _tdsguard_hKphrpWEELXHaaZkiGPQUV_
│ │ │ │ +
22
│ │ │ │ +
23#ifndef __cplusplus
│ │ │ │ +
24
│ │ │ │ +
25#ifdef HAVE_STDBOOL_H
│ │ │ │ +
26
│ │ │ │ +
27#include <stdbool.h>
│ │ │ │ +
28
│ │ │ │ +
29#else
│ │ │ │ +
30
│ │ │ │ +
31#undef true
│ │ │ │ +
32#undef false
│ │ │ │ +
33#undef bool
│ │ │ │ +
34typedef unsigned char freetds_boolean_t;
│ │ │ │ +
35#define bool freetds_boolean_t
│ │ │ │ +
36#define true 1
│ │ │ │ +
37#define false 0
│ │ │ │
38
│ │ │ │ -
39/* query.c */
│ │ │ │ -
40char *tds_get_query(TDSSOCKET * tds);
│ │ │ │ -
41char *tds_get_generic_query(TDSSOCKET * tds);
│ │ │ │ -
42void tds_free_query(void);
│ │ │ │ -
43
│ │ │ │ -
44/* server.c */
│ │ │ │ -
45void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const char *newvalue);
│ │ │ │ -
46void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ -
47 const char *procname, int line);
│ │ │ │ -
48void tds_send_login_ack(TDSSOCKET * tds, const char *progname);
│ │ │ │ -
49void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ -
50 const char *procname, int line, const char *sqlstate);
│ │ │ │ -
51void tds_send_err(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ -
52 const char *procname, int line);
│ │ │ │ -
53void tds_send_capabilities_token(TDSSOCKET * tds);
│ │ │ │ -
54/* TODO remove, use tds_send_done */
│ │ │ │ -
55void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT numrows);
│ │ │ │ -
56void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT numrows);
│ │ │ │ -
57void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);
│ │ │ │ -
58TDSRET tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
│ │ │ │ -
59TDSRET tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
│ │ │ │ -
60void tds71_send_prelogin(TDSSOCKET * tds);
│ │ │ │ -
61
│ │ │ │ -
62#if 0
│ │ │ │ -
63{
│ │ │ │ -
64#endif
│ │ │ │ -
65#ifdef __cplusplus
│ │ │ │ -
66}
│ │ │ │ -
67#endif
│ │ │ │ -
Definition tds.h:498
│ │ │ │ -
Hold information for any results.
Definition tds.h:754
│ │ │ │ -
Definition tds.h:1015
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
39#endif
│ │ │ │ +
40
│ │ │ │ +
41#endif
│ │ │ │ +
42
│ │ │ │ +
43#endif /* _tdsguard_hKphrpWEELXHaaZkiGPQUV_ */
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,16 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -server.h │ │ │ │ │ +bool.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ +2 * Copyright (C) 2015 Frediano Ziglio │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -20,74 +20,33 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_ │ │ │ │ │ -21#define _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_ │ │ │ │ │ -22#endif │ │ │ │ │ -23 │ │ │ │ │ -24#ifdef __cplusplus │ │ │ │ │ -25extern "C" │ │ │ │ │ -26{ │ │ │ │ │ -27#endif │ │ │ │ │ -28#if 0 │ │ │ │ │ -29} │ │ │ │ │ -30#endif │ │ │ │ │ -31 │ │ │ │ │ -32/* login.c */ │ │ │ │ │ -33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, │ │ │ │ │ -unsigned char *clear_pass); │ │ │ │ │ -34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port); │ │ │ │ │ -35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ -36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ -37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds); │ │ │ │ │ +20#ifndef _tdsguard_hKphrpWEELXHaaZkiGPQUV_ │ │ │ │ │ +21#define _tdsguard_hKphrpWEELXHaaZkiGPQUV_ │ │ │ │ │ +22 │ │ │ │ │ +23#ifndef __cplusplus │ │ │ │ │ +24 │ │ │ │ │ +25#ifdef HAVE_STDBOOL_H │ │ │ │ │ +26 │ │ │ │ │ +27#include │ │ │ │ │ +28 │ │ │ │ │ +29#else │ │ │ │ │ +30 │ │ │ │ │ +31#undef true │ │ │ │ │ +32#undef false │ │ │ │ │ +33#undef bool │ │ │ │ │ +34typedef unsigned char freetds_boolean_t; │ │ │ │ │ +35#define bool freetds_boolean_t │ │ │ │ │ +36#define true 1 │ │ │ │ │ +37#define false 0 │ │ │ │ │ 38 │ │ │ │ │ -39/* query.c */ │ │ │ │ │ -40char *tds_get_query(TDSSOCKET * tds); │ │ │ │ │ -41char *tds_get_generic_query(TDSSOCKET * tds); │ │ │ │ │ -42void tds_free_query(void); │ │ │ │ │ -43 │ │ │ │ │ -44/* server.c */ │ │ │ │ │ -45void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const │ │ │ │ │ -char *newvalue); │ │ │ │ │ -46void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ -const char *msgtext, const char *srvname, │ │ │ │ │ -47 const char *procname, int line); │ │ │ │ │ -48void tds_send_login_ack(TDSSOCKET * tds, const char *progname); │ │ │ │ │ -49void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ -const char *msgtext, const char *srvname, │ │ │ │ │ -50 const char *procname, int line, const char *sqlstate); │ │ │ │ │ -51void tds_send_err(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ -const char *msgtext, const char *srvname, │ │ │ │ │ -52 const char *procname, int line); │ │ │ │ │ -53void tds_send_capabilities_token(TDSSOCKET * tds); │ │ │ │ │ -54/* TODO remove, use tds_send_done */ │ │ │ │ │ -55void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT │ │ │ │ │ -numrows); │ │ │ │ │ -56void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT │ │ │ │ │ -numrows); │ │ │ │ │ -57void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols); │ │ │ │ │ -58TDSRET tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo); │ │ │ │ │ -59TDSRET tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo); │ │ │ │ │ -60void tds71_send_prelogin(TDSSOCKET * tds); │ │ │ │ │ -61 │ │ │ │ │ -62#if 0 │ │ │ │ │ -63{ │ │ │ │ │ -64#endif │ │ │ │ │ -65#ifdef __cplusplus │ │ │ │ │ -66} │ │ │ │ │ -67#endif │ │ │ │ │ -tds_login │ │ │ │ │ -Definition tds.h:498 │ │ │ │ │ -tds_result_info │ │ │ │ │ -Hold information for any results. │ │ │ │ │ -Definition tds.h:754 │ │ │ │ │ -tds_context │ │ │ │ │ -Definition tds.h:1015 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ +39#endif │ │ │ │ │ +40 │ │ │ │ │ +41#endif │ │ │ │ │ +42 │ │ │ │ │ +43#endif /* _tdsguard_hKphrpWEELXHaaZkiGPQUV_ */ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00506_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/stream.h Source File │ │ │ │ +FreeTDS API: include/freetds/encodings.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,141 +74,584 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
stream.h
│ │ │ │ +
encodings.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2013 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_
│ │ │ │ -
21#define _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_
│ │ │ │ -
22
│ │ │ │ -
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ -
24#error Include tds.h first
│ │ │ │ -
25#endif
│ │ │ │ -
26
│ │ │ │ -
27#include <freetds/pushvis.h>
│ │ │ │ -
28
│ │ │ │ -
│ │ │ │ -
30typedef struct tds_input_stream {
│ │ │ │ -
35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
37
│ │ │ │ -
│ │ │ │ -
39typedef struct tds_output_stream {
│ │ │ │ -
41 int (*write)(struct tds_output_stream *stream, size_t len);
│ │ │ │ -
50 char *buffer;
│ │ │ │ -
51 size_t buf_len;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION direction,
│ │ │ │ -
56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);
│ │ │ │ -
58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);
│ │ │ │ -
59
│ │ │ │ -
60/* Additional streams */
│ │ │ │ -
61
│ │ │ │ -
│ │ │ │ -
63typedef struct tds_datain_stream {
│ │ │ │ -
64 TDSINSTREAM stream;
│ │ │ │ -
65 size_t wire_size;
│ │ │ │ -
66 TDSSOCKET *tds;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_t wire_size);
│ │ │ │ -
70
│ │ │ │ -
│ │ │ │ -
72typedef struct tds_dataout_stream {
│ │ │ │ -
73 TDSOUTSTREAM stream;
│ │ │ │ -
74 TDSSOCKET *tds;
│ │ │ │ -
75 size_t written;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
77
│ │ │ │ - │ │ │ │ -
79
│ │ │ │ -
│ │ │ │ -
81typedef struct tds_staticin_stream {
│ │ │ │ -
82 TDSINSTREAM stream;
│ │ │ │ -
83 const char *buffer;
│ │ │ │ -
84 size_t buf_left;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
86
│ │ │ │ -
87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, size_t len);
│ │ │ │ -
88
│ │ │ │ -
│ │ │ │ -
92typedef struct tds_staticout_stream {
│ │ │ │ -
93 TDSOUTSTREAM stream;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
95
│ │ │ │ -
96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_t len);
│ │ │ │ -
97
│ │ │ │ -
│ │ │ │ -
99typedef struct tds_dynamic_stream {
│ │ │ │ -
100 TDSOUTSTREAM stream;
│ │ │ │ -
102 void **buf;
│ │ │ │ -
104 size_t allocated;
│ │ │ │ -
106 size_t size;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
108
│ │ │ │ -
109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_t allocated);
│ │ │ │ -
110
│ │ │ │ -
111#include <freetds/popvis.h>
│ │ │ │ -
112
│ │ │ │ -
113#endif
│ │ │ │ -
114
│ │ │ │ -
TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
Initialize a dynamic output stream.
Definition stream.c:354
│ │ │ │ -
TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
Reads and writes from a stream to another.
Definition stream.c:163
│ │ │ │ -
TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
Reads and writes from a stream converting characters.
Definition stream.c:71
│ │ │ │ -
void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_t len)
Initialize an output stream for write into a static allocated buffer.
Definition stream.c:313
│ │ │ │ -
void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
Initialize a data output stream.
Definition stream.c:244
│ │ │ │ -
void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr, size_t len)
Initialize an input stream for read from a static allocated buffer.
Definition stream.c:286
│ │ │ │ -
void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
Initialize a data input stream.
Definition stream.c:204
│ │ │ │ -
Definition iconv.h:92
│ │ │ │ -
define a stream of data used for input
Definition stream.h:30
│ │ │ │ -
int(* read)(struct tds_input_stream *stream, void *ptr, size_t len)
read some data Return 0 if end of stream Return <0 if error (actually not defined)
Definition stream.h:35
│ │ │ │ -
define a stream of data used for output
Definition stream.h:39
│ │ │ │ -
char * buffer
write buffer.
Definition stream.h:50
│ │ │ │ -
int(* write)(struct tds_output_stream *stream, size_t len)
write len bytes from buffer, return <0 if error or len
Definition stream.h:41
│ │ │ │ -
input stream to read data from tds protocol
Definition stream.h:63
│ │ │ │ -
size_t wire_size
bytes still to read
Definition stream.h:65
│ │ │ │ -
output stream to write data to tds protocol
Definition stream.h:72
│ │ │ │ -
input stream to read data from a static buffer
Definition stream.h:81
│ │ │ │ -
output stream to write data to a static buffer.
Definition stream.h:92
│ │ │ │ -
output stream to write data to a dynamic buffer
Definition stream.h:99
│ │ │ │ -
void ** buf
where is stored the pointer
Definition stream.h:102
│ │ │ │ -
size_t size
size of data inside buffer
Definition stream.h:106
│ │ │ │ -
size_t allocated
currently allocated buffer
Definition stream.h:104
│ │ │ │ -
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
1/*
│ │ │ │ +
2 * This file produced from ./encodings.pl on Sat Aug 30 09:01:31 2025
│ │ │ │ +
3 */
│ │ │ │ +
4#ifdef TDS_ICONV_ENCODING_TABLES
│ │ │ │ +
5
│ │ │ │ +
6static const TDS_ENCODING canonic_charsets[] = {
│ │ │ │ +
7 { "ISO-8859-1", 1, 1, 0}, /* 0 */
│ │ │ │ +
8 { "UTF-8", 1, 4, 1}, /* 1 */
│ │ │ │ +
9 { "UCS-2LE", 2, 2, 2}, /* 2 */
│ │ │ │ +
10 { "UCS-2BE", 2, 2, 3}, /* 3 */
│ │ │ │ +
11 { "UTF-16LE", 2, 4, 4}, /* 4 */
│ │ │ │ +
12 { "UTF-16BE", 2, 4, 5}, /* 5 */
│ │ │ │ +
13 { "UCS-4LE", 4, 4, 6}, /* 6 */
│ │ │ │ +
14 { "UCS-4BE", 4, 4, 7}, /* 7 */
│ │ │ │ +
15 { "UTF-32LE", 4, 4, 8}, /* 8 */
│ │ │ │ +
16 { "UTF-32BE", 4, 4, 9}, /* 9 */
│ │ │ │ +
17 { "ARMSCII-8", 1, 1, 10}, /* 10 */
│ │ │ │ +
18 { "BIG-5", 1, 2, 11}, /* 11 */
│ │ │ │ +
19 { "BIG5-HKSCS", 1, 2, 12}, /* 12 */
│ │ │ │ +
20 { "C99", 1, 1, 13}, /* 13 */
│ │ │ │ +
21 { "CHINESE", 1, 1, 14}, /* 14 */
│ │ │ │ +
22 { "CN", 1, 1, 15}, /* 15 */
│ │ │ │ +
23 { "CN-GB", 1, 2, 16}, /* 16 */
│ │ │ │ +
24 { "CN-GB-ISOIR165", 1, 1, 17}, /* 17 */
│ │ │ │ +
25 { "CP1133", 1, 1, 18}, /* 18 */
│ │ │ │ +
26 { "CP1250", 1, 1, 19}, /* 19 */
│ │ │ │ +
27 { "CP1251", 1, 1, 20}, /* 20 */
│ │ │ │ +
28 { "CP1252", 1, 1, 21}, /* 21 */
│ │ │ │ +
29 { "CP1253", 1, 1, 22}, /* 22 */
│ │ │ │ +
30 { "CP1254", 1, 1, 23}, /* 23 */
│ │ │ │ +
31 { "CP1255", 1, 1, 24}, /* 24 */
│ │ │ │ +
32 { "CP1256", 1, 1, 25}, /* 25 */
│ │ │ │ +
33 { "CP1257", 1, 1, 26}, /* 26 */
│ │ │ │ +
34 { "CP1258", 1, 1, 27}, /* 27 */
│ │ │ │ +
35 { "CP1361", 1, 2, 28}, /* 28 */
│ │ │ │ +
36 { "CP437", 1, 1, 29}, /* 29 */
│ │ │ │ +
37 { "CP850", 1, 1, 30}, /* 30 */
│ │ │ │ +
38 { "CP862", 1, 1, 31}, /* 31 */
│ │ │ │ +
39 { "CP866", 1, 1, 32}, /* 32 */
│ │ │ │ +
40 { "CP874", 1, 1, 33}, /* 33 */
│ │ │ │ +
41 { "CP932", 1, 2, 34}, /* 34 */
│ │ │ │ +
42 { "CP936", 1, 2, 35}, /* 35 */
│ │ │ │ +
43 { "CP949", 1, 2, 36}, /* 36 */
│ │ │ │ +
44 { "CP950", 1, 2, 37}, /* 37 */
│ │ │ │ +
45 { "EUC-JP", 1, 3, 38}, /* 38 */
│ │ │ │ +
46 { "EUC-KR", 1, 2, 39}, /* 39 */
│ │ │ │ +
47 { "EUC-TW", 1, 4, 40}, /* 40 */
│ │ │ │ +
48 { "GB18030", 1, 4, 41}, /* 41 */
│ │ │ │ +
49 { "GEORGIAN-ACADEMY", 1, 1, 42}, /* 42 */
│ │ │ │ +
50 { "GEORGIAN-PS", 1, 1, 43}, /* 43 */
│ │ │ │ +
51 { "HZ", 1, 1, 44}, /* 44 */
│ │ │ │ +
52 { "ISO-2022-CN", 1, 4, 45}, /* 45 */
│ │ │ │ +
53 { "ISO-2022-CN-EXT", 1, 4, 46}, /* 46 */
│ │ │ │ +
54 { "ISO-2022-JP", 1, 1, 47}, /* 47 */
│ │ │ │ +
55 { "ISO-2022-JP-1", 1, 1, 48}, /* 48 */
│ │ │ │ +
56 { "ISO-2022-JP-2", 1, 1, 49}, /* 49 */
│ │ │ │ +
57 { "ISO-2022-KR", 1, 2, 50}, /* 50 */
│ │ │ │ +
58 { "ISO-8859-10", 1, 1, 51}, /* 51 */
│ │ │ │ +
59 { "ISO-8859-13", 1, 1, 52}, /* 52 */
│ │ │ │ +
60 { "ISO-8859-14", 1, 1, 53}, /* 53 */
│ │ │ │ +
61 { "ISO-8859-15", 1, 1, 54}, /* 54 */
│ │ │ │ +
62 { "ISO-8859-16", 1, 1, 55}, /* 55 */
│ │ │ │ +
63 { "ISO-8859-2", 1, 1, 56}, /* 56 */
│ │ │ │ +
64 { "ISO-8859-3", 1, 1, 57}, /* 57 */
│ │ │ │ +
65 { "ISO-8859-4", 1, 1, 58}, /* 58 */
│ │ │ │ +
66 { "ISO-8859-5", 1, 1, 59}, /* 59 */
│ │ │ │ +
67 { "ISO-8859-6", 1, 1, 60}, /* 60 */
│ │ │ │ +
68 { "ISO-8859-7", 1, 1, 61}, /* 61 */
│ │ │ │ +
69 { "ISO-8859-8", 1, 1, 62}, /* 62 */
│ │ │ │ +
70 { "ISO-8859-9", 1, 1, 63}, /* 63 */
│ │ │ │ +
71 { "ISO-IR-14", 1, 1, 64}, /* 64 */
│ │ │ │ +
72 { "ISO-IR-149", 1, 1, 65}, /* 65 */
│ │ │ │ +
73 { "ISO-IR-159", 1, 1, 66}, /* 66 */
│ │ │ │ +
74 { "ISO-IR-166", 1, 1, 67}, /* 67 */
│ │ │ │ +
75 { "ISO-IR-87", 1, 1, 68}, /* 68 */
│ │ │ │ +
76 { "JAVA", 1, 1, 69}, /* 69 */
│ │ │ │ +
77 { "JISX0201-1976", 1, 1, 70}, /* 70 */
│ │ │ │ +
78 { "KOI8-R", 1, 1, 71}, /* 71 */
│ │ │ │ +
79 { "KOI8-RU", 1, 1, 72}, /* 72 */
│ │ │ │ +
80 { "KOI8-T", 1, 1, 73}, /* 73 */
│ │ │ │ +
81 { "KOI8-U", 1, 1, 74}, /* 74 */
│ │ │ │ +
82 { "MAC", 1, 1, 75}, /* 75 */
│ │ │ │ +
83 { "MACARABIC", 1, 1, 76}, /* 76 */
│ │ │ │ +
84 { "MACCENTRALEUROPE", 1, 1, 77}, /* 77 */
│ │ │ │ +
85 { "MACCROATIAN", 1, 1, 78}, /* 78 */
│ │ │ │ +
86 { "MACCYRILLIC", 1, 1, 79}, /* 79 */
│ │ │ │ +
87 { "MACGREEK", 1, 1, 80}, /* 80 */
│ │ │ │ +
88 { "MACHEBREW", 1, 1, 81}, /* 81 */
│ │ │ │ +
89 { "MACICELAND", 1, 1, 82}, /* 82 */
│ │ │ │ +
90 { "MACROMANIA", 1, 1, 83}, /* 83 */
│ │ │ │ +
91 { "MACTHAI", 1, 1, 84}, /* 84 */
│ │ │ │ +
92 { "MACTURKISH", 1, 1, 85}, /* 85 */
│ │ │ │ +
93 { "MACUKRAINE", 1, 1, 86}, /* 86 */
│ │ │ │ +
94 { "MULELAO-1", 1, 1, 87}, /* 87 */
│ │ │ │ +
95 { "NEXTSTEP", 1, 1, 88}, /* 88 */
│ │ │ │ +
96 { "ROMAN8", 1, 1, 89}, /* 89 */
│ │ │ │ +
97 { "SJIS", 1, 2, 90}, /* 90 */
│ │ │ │ +
98 { "TCVN", 1, 1, 91}, /* 91 */
│ │ │ │ +
99 { "US-ASCII", 1, 1, 92}, /* 92 */
│ │ │ │ +
100 { "UTF-7", 1, 4, 93}, /* 93 */
│ │ │ │ +
101 { "VISCII", 1, 1, 94}, /* 94 */
│ │ │ │ +
102};
│ │ │ │ +
103
│ │ │ │ +
104static const CHARACTER_SET_ALIAS iconv_aliases[] = {
│ │ │ │ +
105 { "646", 92 },
│ │ │ │ +
106 { "850", 30 },
│ │ │ │ +
107 { "862", 31 },
│ │ │ │ +
108 { "866", 32 },
│ │ │ │ +
109 { "ANSI_X3.4-1968", 92 },
│ │ │ │ +
110 { "ANSI_X3.4-1986", 92 },
│ │ │ │ +
111 { "ARABIC", 60 },
│ │ │ │ +
112 { "ARMSCII-8", 10 },
│ │ │ │ +
113 { "ASCII", 92 },
│ │ │ │ +
114 { "ASMO-708", 60 },
│ │ │ │ +
115 { "BIG-5", 11 },
│ │ │ │ +
116 { "BIG-FIVE", 11 },
│ │ │ │ +
117 { "BIG5", 11 },
│ │ │ │ +
118 { "BIG5-HKSCS", 12 },
│ │ │ │ +
119 { "BIG5HKSCS", 12 },
│ │ │ │ +
120 { "BIGFIVE", 11 },
│ │ │ │ +
121 { "C99", 13 },
│ │ │ │ +
122 { "CHINESE", 14 },
│ │ │ │ +
123 { "CN", 15 },
│ │ │ │ +
124 { "CN-BIG5", 11 },
│ │ │ │ +
125 { "CN-GB", 16 },
│ │ │ │ +
126 { "CN-GB-ISOIR165", 17 },
│ │ │ │ +
127 { "CP1133", 18 },
│ │ │ │ +
128 { "CP1250", 19 },
│ │ │ │ +
129 { "CP1251", 20 },
│ │ │ │ +
130 { "CP1252", 21 },
│ │ │ │ +
131 { "CP1253", 22 },
│ │ │ │ +
132 { "CP1254", 23 },
│ │ │ │ +
133 { "CP1255", 24 },
│ │ │ │ +
134 { "CP1256", 25 },
│ │ │ │ +
135 { "CP1257", 26 },
│ │ │ │ +
136 { "CP1258", 27 },
│ │ │ │ +
137 { "CP1361", 28 },
│ │ │ │ +
138 { "CP367", 92 },
│ │ │ │ +
139 { "CP437", 29 },
│ │ │ │ +
140 { "CP65001", 1 },
│ │ │ │ +
141 { "CP819", 0 },
│ │ │ │ +
142 { "CP850", 30 },
│ │ │ │ +
143 { "CP862", 31 },
│ │ │ │ +
144 { "CP866", 32 },
│ │ │ │ +
145 { "CP874", 33 },
│ │ │ │ +
146 { "CP932", 34 },
│ │ │ │ +
147 { "CP936", 35 },
│ │ │ │ +
148 { "CP949", 36 },
│ │ │ │ +
149 { "CP950", 37 },
│ │ │ │ +
150 { "CSASCII", 92 },
│ │ │ │ +
151 { "CSBIG5", 11 },
│ │ │ │ +
152 { "CSEUCKR", 39 },
│ │ │ │ +
153 { "CSEUCPKDFMTJAPANESE", 38 },
│ │ │ │ +
154 { "CSEUCTW", 40 },
│ │ │ │ +
155 { "CSGB2312", 16 },
│ │ │ │ +
156 { "CSHALFWIDTHKATAKANA", 70 },
│ │ │ │ +
157 { "CSHPROMAN8", 89 },
│ │ │ │ +
158 { "CSIBM866", 32 },
│ │ │ │ +
159 { "CSISO14JISC6220RO", 64 },
│ │ │ │ +
160 { "CSISO159JISX02121990", 66 },
│ │ │ │ +
161 { "CSISO2022CN", 45 },
│ │ │ │ +
162 { "CSISO2022JP", 47 },
│ │ │ │ +
163 { "CSISO2022JP2", 49 },
│ │ │ │ +
164 { "CSISO2022KR", 50 },
│ │ │ │ +
165 { "CSISO57GB1988", 15 },
│ │ │ │ +
166 { "CSISO58GB231280", 14 },
│ │ │ │ +
167 { "CSISO87JISX0208", 68 },
│ │ │ │ +
168 { "CSISOLATIN1", 0 },
│ │ │ │ +
169 { "CSISOLATIN2", 56 },
│ │ │ │ +
170 { "CSISOLATIN3", 57 },
│ │ │ │ +
171 { "CSISOLATIN4", 58 },
│ │ │ │ +
172 { "CSISOLATIN5", 63 },
│ │ │ │ +
173 { "CSISOLATIN6", 51 },
│ │ │ │ +
174 { "CSISOLATINARABIC", 60 },
│ │ │ │ +
175 { "CSISOLATINCYRILLIC", 59 },
│ │ │ │ +
176 { "CSISOLATINGREEK", 61 },
│ │ │ │ +
177 { "CSISOLATINHEBREW", 62 },
│ │ │ │ +
178 { "CSKOI8R", 71 },
│ │ │ │ +
179 { "CSKSC56011987", 65 },
│ │ │ │ +
180 { "CSMACINTOSH", 75 },
│ │ │ │ +
181 { "CSPC850MULTILINGUAL", 30 },
│ │ │ │ +
182 { "CSPC862LATINHEBREW", 31 },
│ │ │ │ +
183 { "CSSHIFTJIS", 90 },
│ │ │ │ +
184 { "CSUNICODE11", 3 },
│ │ │ │ +
185 { "CSUNICODE11UTF7", 93 },
│ │ │ │ +
186 { "CSVISCII", 94 },
│ │ │ │ +
187 { "CYRILLIC", 59 },
│ │ │ │ +
188 { "ECMA-114", 60 },
│ │ │ │ +
189 { "ECMA-118", 61 },
│ │ │ │ +
190 { "ELOT_928", 61 },
│ │ │ │ +
191 { "EUC-CN", 16 },
│ │ │ │ +
192 { "EUC-JP", 38 },
│ │ │ │ +
193 { "EUC-KR", 39 },
│ │ │ │ +
194 { "EUC-TW", 40 },
│ │ │ │ +
195 { "EUCCN", 16 },
│ │ │ │ +
196 { "EUCJP", 38 },
│ │ │ │ +
197 { "EUCKR", 39 },
│ │ │ │ +
198 { "EUCTW", 40 },
│ │ │ │ +
199 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 38 },
│ │ │ │ +
200 { "GB18030", 41 },
│ │ │ │ +
201 { "GB2312", 16 },
│ │ │ │ +
202 { "GBK", 35 },
│ │ │ │ +
203 { "GB_1988-80", 15 },
│ │ │ │ +
204 { "GB_2312-80", 14 },
│ │ │ │ +
205 { "GEORGIAN-ACADEMY", 42 },
│ │ │ │ +
206 { "GEORGIAN-PS", 43 },
│ │ │ │ +
207 { "GREEK", 61 },
│ │ │ │ +
208 { "GREEK8", 61 },
│ │ │ │ +
209 { "HEBREW", 62 },
│ │ │ │ +
210 { "HP-ROMAN8", 89 },
│ │ │ │ +
211 { "HZ", 44 },
│ │ │ │ +
212 { "HZ-GB-2312", 44 },
│ │ │ │ +
213 { "IBM-CP1133", 18 },
│ │ │ │ +
214 { "IBM367", 92 },
│ │ │ │ +
215 { "IBM437", 29 },
│ │ │ │ +
216 { "IBM819", 0 },
│ │ │ │ +
217 { "IBM850", 30 },
│ │ │ │ +
218 { "IBM862", 31 },
│ │ │ │ +
219 { "IBM866", 32 },
│ │ │ │ +
220 { "ISO-2022-CN", 45 },
│ │ │ │ +
221 { "ISO-2022-CN-EXT", 46 },
│ │ │ │ +
222 { "ISO-2022-JP", 47 },
│ │ │ │ +
223 { "ISO-2022-JP-1", 48 },
│ │ │ │ +
224 { "ISO-2022-JP-2", 49 },
│ │ │ │ +
225 { "ISO-2022-KR", 50 },
│ │ │ │ +
226 { "ISO-8859-1", 0 },
│ │ │ │ +
227 { "ISO-8859-10", 51 },
│ │ │ │ +
228 { "ISO-8859-13", 52 },
│ │ │ │ +
229 { "ISO-8859-14", 53 },
│ │ │ │ +
230 { "ISO-8859-15", 54 },
│ │ │ │ +
231 { "ISO-8859-16", 55 },
│ │ │ │ +
232 { "ISO-8859-2", 56 },
│ │ │ │ +
233 { "ISO-8859-3", 57 },
│ │ │ │ +
234 { "ISO-8859-4", 58 },
│ │ │ │ +
235 { "ISO-8859-5", 59 },
│ │ │ │ +
236 { "ISO-8859-6", 60 },
│ │ │ │ +
237 { "ISO-8859-7", 61 },
│ │ │ │ +
238 { "ISO-8859-8", 62 },
│ │ │ │ +
239 { "ISO-8859-9", 63 },
│ │ │ │ +
240 { "ISO-CELTIC", 53 },
│ │ │ │ +
241 { "ISO-IR-100", 0 },
│ │ │ │ +
242 { "ISO-IR-101", 56 },
│ │ │ │ +
243 { "ISO-IR-109", 57 },
│ │ │ │ +
244 { "ISO-IR-110", 58 },
│ │ │ │ +
245 { "ISO-IR-126", 61 },
│ │ │ │ +
246 { "ISO-IR-127", 60 },
│ │ │ │ +
247 { "ISO-IR-138", 62 },
│ │ │ │ +
248 { "ISO-IR-14", 64 },
│ │ │ │ +
249 { "ISO-IR-144", 59 },
│ │ │ │ +
250 { "ISO-IR-148", 63 },
│ │ │ │ +
251 { "ISO-IR-149", 65 },
│ │ │ │ +
252 { "ISO-IR-157", 51 },
│ │ │ │ +
253 { "ISO-IR-159", 66 },
│ │ │ │ +
254 { "ISO-IR-165", 17 },
│ │ │ │ +
255 { "ISO-IR-166", 67 },
│ │ │ │ +
256 { "ISO-IR-179", 52 },
│ │ │ │ +
257 { "ISO-IR-199", 53 },
│ │ │ │ +
258 { "ISO-IR-203", 54 },
│ │ │ │ +
259 { "ISO-IR-226", 55 },
│ │ │ │ +
260 { "ISO-IR-57", 15 },
│ │ │ │ +
261 { "ISO-IR-58", 14 },
│ │ │ │ +
262 { "ISO-IR-6", 92 },
│ │ │ │ +
263 { "ISO-IR-87", 68 },
│ │ │ │ +
264 { "ISO646-CN", 15 },
│ │ │ │ +
265 { "ISO646-JP", 64 },
│ │ │ │ +
266 { "ISO646-US", 92 },
│ │ │ │ +
267 { "ISO8859-1", 0 },
│ │ │ │ +
268 { "ISO8859-10", 51 },
│ │ │ │ +
269 { "ISO8859-15", 54 },
│ │ │ │ +
270 { "ISO8859-2", 56 },
│ │ │ │ +
271 { "ISO8859-4", 58 },
│ │ │ │ +
272 { "ISO8859-5", 59 },
│ │ │ │ +
273 { "ISO8859-6", 60 },
│ │ │ │ +
274 { "ISO8859-7", 61 },
│ │ │ │ +
275 { "ISO8859-8", 62 },
│ │ │ │ +
276 { "ISO8859-9", 63 },
│ │ │ │ +
277 { "ISO_646.IRV:1991", 92 },
│ │ │ │ +
278 { "ISO_8859-1", 0 },
│ │ │ │ +
279 { "ISO_8859-10", 51 },
│ │ │ │ +
280 { "ISO_8859-10:1992", 51 },
│ │ │ │ +
281 { "ISO_8859-13", 52 },
│ │ │ │ +
282 { "ISO_8859-14", 53 },
│ │ │ │ +
283 { "ISO_8859-14:1998", 53 },
│ │ │ │ +
284 { "ISO_8859-15", 54 },
│ │ │ │ +
285 { "ISO_8859-15:1998", 54 },
│ │ │ │ +
286 { "ISO_8859-16", 55 },
│ │ │ │ +
287 { "ISO_8859-16:2000", 55 },
│ │ │ │ +
288 { "ISO_8859-1:1987", 0 },
│ │ │ │ +
289 { "ISO_8859-2", 56 },
│ │ │ │ +
290 { "ISO_8859-2:1987", 56 },
│ │ │ │ +
291 { "ISO_8859-3", 57 },
│ │ │ │ +
292 { "ISO_8859-3:1988", 57 },
│ │ │ │ +
293 { "ISO_8859-4", 58 },
│ │ │ │ +
294 { "ISO_8859-4:1988", 58 },
│ │ │ │ +
295 { "ISO_8859-5", 59 },
│ │ │ │ +
296 { "ISO_8859-5:1988", 59 },
│ │ │ │ +
297 { "ISO_8859-6", 60 },
│ │ │ │ +
298 { "ISO_8859-6:1987", 60 },
│ │ │ │ +
299 { "ISO_8859-7", 61 },
│ │ │ │ +
300 { "ISO_8859-7:1987", 61 },
│ │ │ │ +
301 { "ISO_8859-8", 62 },
│ │ │ │ +
302 { "ISO_8859-8:1988", 62 },
│ │ │ │ +
303 { "ISO_8859-9", 63 },
│ │ │ │ +
304 { "ISO_8859-9:1989", 63 },
│ │ │ │ +
305 { "JAVA", 69 },
│ │ │ │ +
306 { "JIS0208", 68 },
│ │ │ │ +
307 { "JISX0201-1976", 70 },
│ │ │ │ +
308 { "JIS_C6220-1969-RO", 64 },
│ │ │ │ +
309 { "JIS_C6226-1983", 68 },
│ │ │ │ +
310 { "JIS_X0201", 70 },
│ │ │ │ +
311 { "JIS_X0208", 68 },
│ │ │ │ +
312 { "JIS_X0208-1983", 68 },
│ │ │ │ +
313 { "JIS_X0208-1990", 68 },
│ │ │ │ +
314 { "JIS_X0212", 66 },
│ │ │ │ +
315 { "JIS_X0212-1990", 66 },
│ │ │ │ +
316 { "JIS_X0212.1990-0", 66 },
│ │ │ │ +
317 { "JOHAB", 28 },
│ │ │ │ +
318 { "JP", 64 },
│ │ │ │ +
319 { "KOI8-R", 71 },
│ │ │ │ +
320 { "KOI8-RU", 72 },
│ │ │ │ +
321 { "KOI8-T", 73 },
│ │ │ │ +
322 { "KOI8-U", 74 },
│ │ │ │ +
323 { "KOREAN", 65 },
│ │ │ │ +
324 { "KSC_5601", 65 },
│ │ │ │ +
325 { "KS_C_5601-1987", 65 },
│ │ │ │ +
326 { "KS_C_5601-1989", 65 },
│ │ │ │ +
327 { "L1", 0 },
│ │ │ │ +
328 { "L2", 56 },
│ │ │ │ +
329 { "L3", 57 },
│ │ │ │ +
330 { "L4", 58 },
│ │ │ │ +
331 { "L5", 63 },
│ │ │ │ +
332 { "L6", 51 },
│ │ │ │ +
333 { "L7", 52 },
│ │ │ │ +
334 { "L8", 53 },
│ │ │ │ +
335 { "LATIN1", 0 },
│ │ │ │ +
336 { "LATIN2", 56 },
│ │ │ │ +
337 { "LATIN3", 57 },
│ │ │ │ +
338 { "LATIN4", 58 },
│ │ │ │ +
339 { "LATIN5", 63 },
│ │ │ │ +
340 { "LATIN6", 51 },
│ │ │ │ +
341 { "LATIN7", 52 },
│ │ │ │ +
342 { "LATIN8", 53 },
│ │ │ │ +
343 { "MAC", 75 },
│ │ │ │ +
344 { "MACARABIC", 76 },
│ │ │ │ +
345 { "MACCENTRALEUROPE", 77 },
│ │ │ │ +
346 { "MACCROATIAN", 78 },
│ │ │ │ +
347 { "MACCYRILLIC", 79 },
│ │ │ │ +
348 { "MACGREEK", 80 },
│ │ │ │ +
349 { "MACHEBREW", 81 },
│ │ │ │ +
350 { "MACICELAND", 82 },
│ │ │ │ +
351 { "MACINTOSH", 75 },
│ │ │ │ +
352 { "MACROMAN", 75 },
│ │ │ │ +
353 { "MACROMANIA", 83 },
│ │ │ │ +
354 { "MACTHAI", 84 },
│ │ │ │ +
355 { "MACTURKISH", 85 },
│ │ │ │ +
356 { "MACUKRAINE", 86 },
│ │ │ │ +
357 { "MS-ANSI", 21 },
│ │ │ │ +
358 { "MS-ARAB", 25 },
│ │ │ │ +
359 { "MS-CYRL", 20 },
│ │ │ │ +
360 { "MS-EE", 19 },
│ │ │ │ +
361 { "MS-GREEK", 22 },
│ │ │ │ +
362 { "MS-HEBR", 24 },
│ │ │ │ +
363 { "MS-TURK", 23 },
│ │ │ │ +
364 { "MS_KANJI", 90 },
│ │ │ │ +
365 { "MULELAO-1", 87 },
│ │ │ │ +
366 { "NEXTSTEP", 88 },
│ │ │ │ +
367 { "R8", 89 },
│ │ │ │ +
368 { "ROMAN8", 89 },
│ │ │ │ +
369 { "SHIFT-JIS", 90 },
│ │ │ │ +
370 { "SHIFT_JIS", 90 },
│ │ │ │ +
371 { "SJIS", 90 },
│ │ │ │ +
372 { "TCVN", 91 },
│ │ │ │ +
373 { "TCVN-5712", 91 },
│ │ │ │ +
374 { "TCVN5712-1", 91 },
│ │ │ │ +
375 { "TCVN5712-1:1993", 91 },
│ │ │ │ +
376 { "TIS-620", 67 },
│ │ │ │ +
377 { "TIS620", 67 },
│ │ │ │ +
378 { "TIS620-0", 67 },
│ │ │ │ +
379 { "TIS620.2529-1", 67 },
│ │ │ │ +
380 { "TIS620.2533-0", 67 },
│ │ │ │ +
381 { "TIS620.2533-1", 67 },
│ │ │ │ +
382 { "UCS-2BE", 3 },
│ │ │ │ +
383 { "UCS-2LE", 2 },
│ │ │ │ +
384 { "UCS-4BE", 7 },
│ │ │ │ +
385 { "UCS-4LE", 6 },
│ │ │ │ +
386 { "UHC", 36 },
│ │ │ │ +
387 { "UNICODE-1-1", 3 },
│ │ │ │ +
388 { "UNICODE-1-1-UTF-7", 93 },
│ │ │ │ +
389 { "UNICODEBIG", 3 },
│ │ │ │ +
390 { "UNICODELITTLE", 2 },
│ │ │ │ +
391 { "US", 92 },
│ │ │ │ +
392 { "US-ASCII", 92 },
│ │ │ │ +
393 { "UTF-16BE", 5 },
│ │ │ │ +
394 { "UTF-16LE", 4 },
│ │ │ │ +
395 { "UTF-32BE", 9 },
│ │ │ │ +
396 { "UTF-32LE", 8 },
│ │ │ │ +
397 { "UTF-7", 93 },
│ │ │ │ +
398 { "UTF-8", 1 },
│ │ │ │ +
399 { "UTF7", 93 },
│ │ │ │ +
400 { "UTF8", 1 },
│ │ │ │ +
401 { "VISCII", 94 },
│ │ │ │ +
402 { "VISCII1.1-1", 94 },
│ │ │ │ +
403 { "WINBALTRIM", 26 },
│ │ │ │ +
404 { "WINDOWS-1250", 19 },
│ │ │ │ +
405 { "WINDOWS-1251", 20 },
│ │ │ │ +
406 { "WINDOWS-1252", 21 },
│ │ │ │ +
407 { "WINDOWS-1253", 22 },
│ │ │ │ +
408 { "WINDOWS-1254", 23 },
│ │ │ │ +
409 { "WINDOWS-1255", 24 },
│ │ │ │ +
410 { "WINDOWS-1256", 25 },
│ │ │ │ +
411 { "WINDOWS-1257", 26 },
│ │ │ │ +
412 { "WINDOWS-1258", 27 },
│ │ │ │ +
413 { "WINDOWS-874", 33 },
│ │ │ │ +
414 { "X0201", 70 },
│ │ │ │ +
415 { "X0208", 68 },
│ │ │ │ +
416 { "X0212", 66 },
│ │ │ │ +
417 { "big5", 11 },
│ │ │ │ +
418 { "cp1250", 19 },
│ │ │ │ +
419 { "cp1251", 20 },
│ │ │ │ +
420 { "cp1252", 21 },
│ │ │ │ +
421 { "cp1253", 22 },
│ │ │ │ +
422 { "cp1254", 23 },
│ │ │ │ +
423 { "cp1255", 24 },
│ │ │ │ +
424 { "cp1256", 25 },
│ │ │ │ +
425 { "cp1257", 26 },
│ │ │ │ +
426 { "cp1258", 27 },
│ │ │ │ +
427 { "cp437", 29 },
│ │ │ │ +
428 { "cp850", 30 },
│ │ │ │ +
429 { "cp862", 31 },
│ │ │ │ +
430 { "cp866", 32 },
│ │ │ │ +
431 { "cp874", 33 },
│ │ │ │ +
432 { "eucJP", 38 },
│ │ │ │ +
433 { "eucKR", 39 },
│ │ │ │ +
434 { "eucTW", 40 },
│ │ │ │ +
435 { "hp15CN", 14 },
│ │ │ │ +
436 { "iso81", 0 },
│ │ │ │ +
437 { "iso815", 54 },
│ │ │ │ +
438 { "iso82", 56 },
│ │ │ │ +
439 { "iso83", 57 },
│ │ │ │ +
440 { "iso84", 58 },
│ │ │ │ +
441 { "iso85", 59 },
│ │ │ │ +
442 { "iso86", 60 },
│ │ │ │ +
443 { "iso87", 61 },
│ │ │ │ +
444 { "iso88", 62 },
│ │ │ │ +
445 { "iso88591", 0 },
│ │ │ │ +
446 { "iso885915", 54 },
│ │ │ │ +
447 { "iso88592", 56 },
│ │ │ │ +
448 { "iso88593", 57 },
│ │ │ │ +
449 { "iso88594", 58 },
│ │ │ │ +
450 { "iso88595", 59 },
│ │ │ │ +
451 { "iso88596", 60 },
│ │ │ │ +
452 { "iso88597", 61 },
│ │ │ │ +
453 { "iso88598", 62 },
│ │ │ │ +
454 { "iso88599", 63 },
│ │ │ │ +
455 { "iso89", 63 },
│ │ │ │ +
456 { "roma8", 89 },
│ │ │ │ +
457 { "roman8", 89 },
│ │ │ │ +
458 { "sjis", 90 },
│ │ │ │ +
459 { "thai8", 67 },
│ │ │ │ +
460 { "tis620", 67 },
│ │ │ │ +
461 { "utf8", 1 },
│ │ │ │ +
462 {NULL, 0}
│ │ │ │ +
463};
│ │ │ │ +
464
│ │ │ │ +
465#endif
│ │ │ │ +
466
│ │ │ │ +
467enum {
│ │ │ │ +
468 TDS_CHARSET_ISO_8859_1 = 0,
│ │ │ │ +
469 TDS_CHARSET_UTF_8 = 1,
│ │ │ │ +
470 TDS_CHARSET_UCS_2LE = 2,
│ │ │ │ +
471 TDS_CHARSET_UCS_2BE = 3,
│ │ │ │ +
472 TDS_CHARSET_UTF_16LE = 4,
│ │ │ │ +
473 TDS_CHARSET_UTF_16BE = 5,
│ │ │ │ +
474 TDS_CHARSET_UCS_4LE = 6,
│ │ │ │ +
475 TDS_CHARSET_UCS_4BE = 7,
│ │ │ │ +
476 TDS_CHARSET_UTF_32LE = 8,
│ │ │ │ +
477 TDS_CHARSET_UTF_32BE = 9,
│ │ │ │ +
478 TDS_CHARSET_ARMSCII_8 = 10,
│ │ │ │ +
479 TDS_CHARSET_BIG_5 = 11,
│ │ │ │ +
480 TDS_CHARSET_BIG5_HKSCS = 12,
│ │ │ │ +
481 TDS_CHARSET_C99 = 13,
│ │ │ │ +
482 TDS_CHARSET_CHINESE = 14,
│ │ │ │ +
483 TDS_CHARSET_CN = 15,
│ │ │ │ +
484 TDS_CHARSET_CN_GB = 16,
│ │ │ │ +
485 TDS_CHARSET_CN_GB_ISOIR165 = 17,
│ │ │ │ +
486 TDS_CHARSET_CP1133 = 18,
│ │ │ │ +
487 TDS_CHARSET_CP1250 = 19,
│ │ │ │ +
488 TDS_CHARSET_CP1251 = 20,
│ │ │ │ +
489 TDS_CHARSET_CP1252 = 21,
│ │ │ │ +
490 TDS_CHARSET_CP1253 = 22,
│ │ │ │ +
491 TDS_CHARSET_CP1254 = 23,
│ │ │ │ +
492 TDS_CHARSET_CP1255 = 24,
│ │ │ │ +
493 TDS_CHARSET_CP1256 = 25,
│ │ │ │ +
494 TDS_CHARSET_CP1257 = 26,
│ │ │ │ +
495 TDS_CHARSET_CP1258 = 27,
│ │ │ │ +
496 TDS_CHARSET_CP1361 = 28,
│ │ │ │ +
497 TDS_CHARSET_CP437 = 29,
│ │ │ │ +
498 TDS_CHARSET_CP850 = 30,
│ │ │ │ +
499 TDS_CHARSET_CP862 = 31,
│ │ │ │ +
500 TDS_CHARSET_CP866 = 32,
│ │ │ │ +
501 TDS_CHARSET_CP874 = 33,
│ │ │ │ +
502 TDS_CHARSET_CP932 = 34,
│ │ │ │ +
503 TDS_CHARSET_CP936 = 35,
│ │ │ │ +
504 TDS_CHARSET_CP949 = 36,
│ │ │ │ +
505 TDS_CHARSET_CP950 = 37,
│ │ │ │ +
506 TDS_CHARSET_EUC_JP = 38,
│ │ │ │ +
507 TDS_CHARSET_EUC_KR = 39,
│ │ │ │ +
508 TDS_CHARSET_EUC_TW = 40,
│ │ │ │ +
509 TDS_CHARSET_GB18030 = 41,
│ │ │ │ +
510 TDS_CHARSET_GEORGIAN_ACADEMY = 42,
│ │ │ │ +
511 TDS_CHARSET_GEORGIAN_PS = 43,
│ │ │ │ +
512 TDS_CHARSET_HZ = 44,
│ │ │ │ +
513 TDS_CHARSET_ISO_2022_CN = 45,
│ │ │ │ +
514 TDS_CHARSET_ISO_2022_CN_EXT = 46,
│ │ │ │ +
515 TDS_CHARSET_ISO_2022_JP = 47,
│ │ │ │ +
516 TDS_CHARSET_ISO_2022_JP_1 = 48,
│ │ │ │ +
517 TDS_CHARSET_ISO_2022_JP_2 = 49,
│ │ │ │ +
518 TDS_CHARSET_ISO_2022_KR = 50,
│ │ │ │ +
519 TDS_CHARSET_ISO_8859_10 = 51,
│ │ │ │ +
520 TDS_CHARSET_ISO_8859_13 = 52,
│ │ │ │ +
521 TDS_CHARSET_ISO_8859_14 = 53,
│ │ │ │ +
522 TDS_CHARSET_ISO_8859_15 = 54,
│ │ │ │ +
523 TDS_CHARSET_ISO_8859_16 = 55,
│ │ │ │ +
524 TDS_CHARSET_ISO_8859_2 = 56,
│ │ │ │ +
525 TDS_CHARSET_ISO_8859_3 = 57,
│ │ │ │ +
526 TDS_CHARSET_ISO_8859_4 = 58,
│ │ │ │ +
527 TDS_CHARSET_ISO_8859_5 = 59,
│ │ │ │ +
528 TDS_CHARSET_ISO_8859_6 = 60,
│ │ │ │ +
529 TDS_CHARSET_ISO_8859_7 = 61,
│ │ │ │ +
530 TDS_CHARSET_ISO_8859_8 = 62,
│ │ │ │ +
531 TDS_CHARSET_ISO_8859_9 = 63,
│ │ │ │ +
532 TDS_CHARSET_ISO_IR_14 = 64,
│ │ │ │ +
533 TDS_CHARSET_ISO_IR_149 = 65,
│ │ │ │ +
534 TDS_CHARSET_ISO_IR_159 = 66,
│ │ │ │ +
535 TDS_CHARSET_ISO_IR_166 = 67,
│ │ │ │ +
536 TDS_CHARSET_ISO_IR_87 = 68,
│ │ │ │ +
537 TDS_CHARSET_JAVA = 69,
│ │ │ │ +
538 TDS_CHARSET_JISX0201_1976 = 70,
│ │ │ │ +
539 TDS_CHARSET_KOI8_R = 71,
│ │ │ │ +
540 TDS_CHARSET_KOI8_RU = 72,
│ │ │ │ +
541 TDS_CHARSET_KOI8_T = 73,
│ │ │ │ +
542 TDS_CHARSET_KOI8_U = 74,
│ │ │ │ +
543 TDS_CHARSET_MAC = 75,
│ │ │ │ +
544 TDS_CHARSET_MACARABIC = 76,
│ │ │ │ +
545 TDS_CHARSET_MACCENTRALEUROPE = 77,
│ │ │ │ +
546 TDS_CHARSET_MACCROATIAN = 78,
│ │ │ │ +
547 TDS_CHARSET_MACCYRILLIC = 79,
│ │ │ │ +
548 TDS_CHARSET_MACGREEK = 80,
│ │ │ │ +
549 TDS_CHARSET_MACHEBREW = 81,
│ │ │ │ +
550 TDS_CHARSET_MACICELAND = 82,
│ │ │ │ +
551 TDS_CHARSET_MACROMANIA = 83,
│ │ │ │ +
552 TDS_CHARSET_MACTHAI = 84,
│ │ │ │ +
553 TDS_CHARSET_MACTURKISH = 85,
│ │ │ │ +
554 TDS_CHARSET_MACUKRAINE = 86,
│ │ │ │ +
555 TDS_CHARSET_MULELAO_1 = 87,
│ │ │ │ +
556 TDS_CHARSET_NEXTSTEP = 88,
│ │ │ │ +
557 TDS_CHARSET_ROMAN8 = 89,
│ │ │ │ +
558 TDS_CHARSET_SJIS = 90,
│ │ │ │ +
559 TDS_CHARSET_TCVN = 91,
│ │ │ │ +
560 TDS_CHARSET_US_ASCII = 92,
│ │ │ │ +
561 TDS_CHARSET_UTF_7 = 93,
│ │ │ │ +
562 TDS_CHARSET_VISCII = 94,
│ │ │ │ +
563 TDS_NUM_CHARSETS = 95
│ │ │ │ +
564};
│ │ │ │ +
565
│ │ │ │ +
Definition iconv.h:73
│ │ │ │ +
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,189 +1,579 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -stream.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2013 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_ │ │ │ │ │ -21#define _tdsguard_a5iqP6Ed7kDGP9L1OvOL7W_ │ │ │ │ │ -22 │ │ │ │ │ -23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ -24#error Include tds.h first │ │ │ │ │ -25#endif │ │ │ │ │ -26 │ │ │ │ │ -27#include │ │ │ │ │ -28 │ │ │ │ │ -30typedef struct tds_input_stream { │ │ │ │ │ -35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len); │ │ │ │ │ -36} TDSINSTREAM; │ │ │ │ │ -37 │ │ │ │ │ -39typedef struct tds_output_stream { │ │ │ │ │ -41 int (*write)(struct tds_output_stream *stream, size_t len); │ │ │ │ │ -50 char *buffer; │ │ │ │ │ -51 size_t buf_len; │ │ │ │ │ -52} TDSOUTSTREAM; │ │ │ │ │ -53 │ │ │ │ │ -55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_ │ │ │ │ │ -DIRECTION direction, │ │ │ │ │ -56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream); │ │ │ │ │ -58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream); │ │ │ │ │ -59 │ │ │ │ │ -60/* Additional streams */ │ │ │ │ │ -61 │ │ │ │ │ -63typedef struct tds_datain_stream { │ │ │ │ │ -64 TDSINSTREAM stream; │ │ │ │ │ -65 size_t wire_size; │ │ │ │ │ -66 TDSSOCKET *tds; │ │ │ │ │ -67} TDSDATAINSTREAM; │ │ │ │ │ -68 │ │ │ │ │ -69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_ │ │ │ │ │ -t wire_size); │ │ │ │ │ -70 │ │ │ │ │ -72typedef struct tds_dataout_stream { │ │ │ │ │ -73 TDSOUTSTREAM stream; │ │ │ │ │ -74 TDSSOCKET *tds; │ │ │ │ │ -75 size_t written; │ │ │ │ │ -76} TDSDATAOUTSTREAM; │ │ │ │ │ -77 │ │ │ │ │ -78void tds_dataout_stream_init(TDSDATAOUTSTREAM * stream, TDSSOCKET * tds); │ │ │ │ │ -79 │ │ │ │ │ -81typedef struct tds_staticin_stream { │ │ │ │ │ -82 TDSINSTREAM stream; │ │ │ │ │ -83 const char *buffer; │ │ │ │ │ -84 size_t buf_left; │ │ │ │ │ -85} TDSSTATICINSTREAM; │ │ │ │ │ -86 │ │ │ │ │ -87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, │ │ │ │ │ -size_t len); │ │ │ │ │ -88 │ │ │ │ │ -92typedef struct tds_staticout_stream { │ │ │ │ │ -93 TDSOUTSTREAM stream; │ │ │ │ │ -94} TDSSTATICOUTSTREAM; │ │ │ │ │ -95 │ │ │ │ │ -96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_ │ │ │ │ │ -t len); │ │ │ │ │ -97 │ │ │ │ │ -99typedef struct tds_dynamic_stream { │ │ │ │ │ -100 TDSOUTSTREAM stream; │ │ │ │ │ -102 void **buf; │ │ │ │ │ -104 size_t allocated; │ │ │ │ │ -106 size_t size; │ │ │ │ │ -107} TDSDYNAMICSTREAM; │ │ │ │ │ -108 │ │ │ │ │ -109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_ │ │ │ │ │ -t allocated); │ │ │ │ │ -110 │ │ │ │ │ -111#include │ │ │ │ │ -112 │ │ │ │ │ -113#endif │ │ │ │ │ -114 │ │ │ │ │ -tds_dynamic_stream_init │ │ │ │ │ -TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_ │ │ │ │ │ -t allocated) │ │ │ │ │ -Initialize a dynamic output stream. │ │ │ │ │ -Definition stream.c:354 │ │ │ │ │ -tds_copy_stream │ │ │ │ │ -TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream) │ │ │ │ │ -Reads and writes from a stream to another. │ │ │ │ │ -Definition stream.c:163 │ │ │ │ │ -tds_convert_stream │ │ │ │ │ -TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_ │ │ │ │ │ -DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream) │ │ │ │ │ -Reads and writes from a stream converting characters. │ │ │ │ │ -Definition stream.c:71 │ │ │ │ │ -tds_staticout_stream_init │ │ │ │ │ -void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_ │ │ │ │ │ -t len) │ │ │ │ │ -Initialize an output stream for write into a static allocated buffer. │ │ │ │ │ -Definition stream.c:313 │ │ │ │ │ -tds_dataout_stream_init │ │ │ │ │ -void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds) │ │ │ │ │ -Initialize a data output stream. │ │ │ │ │ -Definition stream.c:244 │ │ │ │ │ -tds_staticin_stream_init │ │ │ │ │ -void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr, size_ │ │ │ │ │ -t len) │ │ │ │ │ -Initialize an input stream for read from a static allocated buffer. │ │ │ │ │ -Definition stream.c:286 │ │ │ │ │ -tds_datain_stream_init │ │ │ │ │ -void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_ │ │ │ │ │ -t wire_size) │ │ │ │ │ -Initialize a data input stream. │ │ │ │ │ -Definition stream.c:204 │ │ │ │ │ -tdsiconvinfo │ │ │ │ │ -Definition iconv.h:92 │ │ │ │ │ -tds_input_stream │ │ │ │ │ -define a stream of data used for input │ │ │ │ │ -Definition stream.h:30 │ │ │ │ │ -tds_input_stream::read │ │ │ │ │ -int(* read)(struct tds_input_stream *stream, void *ptr, size_t len) │ │ │ │ │ -read some data Return 0 if end of stream Return <0 if error (actually not │ │ │ │ │ -defined) │ │ │ │ │ -Definition stream.h:35 │ │ │ │ │ -tds_output_stream │ │ │ │ │ -define a stream of data used for output │ │ │ │ │ -Definition stream.h:39 │ │ │ │ │ -tds_output_stream::buffer │ │ │ │ │ -char * buffer │ │ │ │ │ -write buffer. │ │ │ │ │ -Definition stream.h:50 │ │ │ │ │ -tds_output_stream::write │ │ │ │ │ -int(* write)(struct tds_output_stream *stream, size_t len) │ │ │ │ │ -write len bytes from buffer, return <0 if error or len │ │ │ │ │ -Definition stream.h:41 │ │ │ │ │ -tds_datain_stream │ │ │ │ │ -input stream to read data from tds protocol │ │ │ │ │ -Definition stream.h:63 │ │ │ │ │ -tds_datain_stream::wire_size │ │ │ │ │ -size_t wire_size │ │ │ │ │ -bytes still to read │ │ │ │ │ -Definition stream.h:65 │ │ │ │ │ -tds_dataout_stream │ │ │ │ │ -output stream to write data to tds protocol │ │ │ │ │ -Definition stream.h:72 │ │ │ │ │ -tds_staticin_stream │ │ │ │ │ -input stream to read data from a static buffer │ │ │ │ │ -Definition stream.h:81 │ │ │ │ │ -tds_staticout_stream │ │ │ │ │ -output stream to write data to a static buffer. │ │ │ │ │ -Definition stream.h:92 │ │ │ │ │ -tds_dynamic_stream │ │ │ │ │ -output stream to write data to a dynamic buffer │ │ │ │ │ -Definition stream.h:99 │ │ │ │ │ -tds_dynamic_stream::buf │ │ │ │ │ -void ** buf │ │ │ │ │ -where is stored the pointer │ │ │ │ │ -Definition stream.h:102 │ │ │ │ │ -tds_dynamic_stream::size │ │ │ │ │ -size_t size │ │ │ │ │ -size of data inside buffer │ │ │ │ │ -Definition stream.h:106 │ │ │ │ │ -tds_dynamic_stream::allocated │ │ │ │ │ -size_t allocated │ │ │ │ │ -currently allocated buffer │ │ │ │ │ -Definition stream.h:104 │ │ │ │ │ -tds_socket │ │ │ │ │ -Information for a server connection. │ │ │ │ │ -Definition tds.h:1163 │ │ │ │ │ +encodings.h │ │ │ │ │ +1/* │ │ │ │ │ +2 * This file produced from ./encodings.pl on Sat Aug 30 09:01:31 2025 │ │ │ │ │ +3 */ │ │ │ │ │ +4#ifdef TDS_ICONV_ENCODING_TABLES │ │ │ │ │ +5 │ │ │ │ │ +6static const TDS_ENCODING canonic_charsets[] = { │ │ │ │ │ +7 { "ISO-8859-1", 1, 1, 0}, /* 0 */ │ │ │ │ │ +8 { "UTF-8", 1, 4, 1}, /* 1 */ │ │ │ │ │ +9 { "UCS-2LE", 2, 2, 2}, /* 2 */ │ │ │ │ │ +10 { "UCS-2BE", 2, 2, 3}, /* 3 */ │ │ │ │ │ +11 { "UTF-16LE", 2, 4, 4}, /* 4 */ │ │ │ │ │ +12 { "UTF-16BE", 2, 4, 5}, /* 5 */ │ │ │ │ │ +13 { "UCS-4LE", 4, 4, 6}, /* 6 */ │ │ │ │ │ +14 { "UCS-4BE", 4, 4, 7}, /* 7 */ │ │ │ │ │ +15 { "UTF-32LE", 4, 4, 8}, /* 8 */ │ │ │ │ │ +16 { "UTF-32BE", 4, 4, 9}, /* 9 */ │ │ │ │ │ +17 { "ARMSCII-8", 1, 1, 10}, /* 10 */ │ │ │ │ │ +18 { "BIG-5", 1, 2, 11}, /* 11 */ │ │ │ │ │ +19 { "BIG5-HKSCS", 1, 2, 12}, /* 12 */ │ │ │ │ │ +20 { "C99", 1, 1, 13}, /* 13 */ │ │ │ │ │ +21 { "CHINESE", 1, 1, 14}, /* 14 */ │ │ │ │ │ +22 { "CN", 1, 1, 15}, /* 15 */ │ │ │ │ │ +23 { "CN-GB", 1, 2, 16}, /* 16 */ │ │ │ │ │ +24 { "CN-GB-ISOIR165", 1, 1, 17}, /* 17 */ │ │ │ │ │ +25 { "CP1133", 1, 1, 18}, /* 18 */ │ │ │ │ │ +26 { "CP1250", 1, 1, 19}, /* 19 */ │ │ │ │ │ +27 { "CP1251", 1, 1, 20}, /* 20 */ │ │ │ │ │ +28 { "CP1252", 1, 1, 21}, /* 21 */ │ │ │ │ │ +29 { "CP1253", 1, 1, 22}, /* 22 */ │ │ │ │ │ +30 { "CP1254", 1, 1, 23}, /* 23 */ │ │ │ │ │ +31 { "CP1255", 1, 1, 24}, /* 24 */ │ │ │ │ │ +32 { "CP1256", 1, 1, 25}, /* 25 */ │ │ │ │ │ +33 { "CP1257", 1, 1, 26}, /* 26 */ │ │ │ │ │ +34 { "CP1258", 1, 1, 27}, /* 27 */ │ │ │ │ │ +35 { "CP1361", 1, 2, 28}, /* 28 */ │ │ │ │ │ +36 { "CP437", 1, 1, 29}, /* 29 */ │ │ │ │ │ +37 { "CP850", 1, 1, 30}, /* 30 */ │ │ │ │ │ +38 { "CP862", 1, 1, 31}, /* 31 */ │ │ │ │ │ +39 { "CP866", 1, 1, 32}, /* 32 */ │ │ │ │ │ +40 { "CP874", 1, 1, 33}, /* 33 */ │ │ │ │ │ +41 { "CP932", 1, 2, 34}, /* 34 */ │ │ │ │ │ +42 { "CP936", 1, 2, 35}, /* 35 */ │ │ │ │ │ +43 { "CP949", 1, 2, 36}, /* 36 */ │ │ │ │ │ +44 { "CP950", 1, 2, 37}, /* 37 */ │ │ │ │ │ +45 { "EUC-JP", 1, 3, 38}, /* 38 */ │ │ │ │ │ +46 { "EUC-KR", 1, 2, 39}, /* 39 */ │ │ │ │ │ +47 { "EUC-TW", 1, 4, 40}, /* 40 */ │ │ │ │ │ +48 { "GB18030", 1, 4, 41}, /* 41 */ │ │ │ │ │ +49 { "GEORGIAN-ACADEMY", 1, 1, 42}, /* 42 */ │ │ │ │ │ +50 { "GEORGIAN-PS", 1, 1, 43}, /* 43 */ │ │ │ │ │ +51 { "HZ", 1, 1, 44}, /* 44 */ │ │ │ │ │ +52 { "ISO-2022-CN", 1, 4, 45}, /* 45 */ │ │ │ │ │ +53 { "ISO-2022-CN-EXT", 1, 4, 46}, /* 46 */ │ │ │ │ │ +54 { "ISO-2022-JP", 1, 1, 47}, /* 47 */ │ │ │ │ │ +55 { "ISO-2022-JP-1", 1, 1, 48}, /* 48 */ │ │ │ │ │ +56 { "ISO-2022-JP-2", 1, 1, 49}, /* 49 */ │ │ │ │ │ +57 { "ISO-2022-KR", 1, 2, 50}, /* 50 */ │ │ │ │ │ +58 { "ISO-8859-10", 1, 1, 51}, /* 51 */ │ │ │ │ │ +59 { "ISO-8859-13", 1, 1, 52}, /* 52 */ │ │ │ │ │ +60 { "ISO-8859-14", 1, 1, 53}, /* 53 */ │ │ │ │ │ +61 { "ISO-8859-15", 1, 1, 54}, /* 54 */ │ │ │ │ │ +62 { "ISO-8859-16", 1, 1, 55}, /* 55 */ │ │ │ │ │ +63 { "ISO-8859-2", 1, 1, 56}, /* 56 */ │ │ │ │ │ +64 { "ISO-8859-3", 1, 1, 57}, /* 57 */ │ │ │ │ │ +65 { "ISO-8859-4", 1, 1, 58}, /* 58 */ │ │ │ │ │ +66 { "ISO-8859-5", 1, 1, 59}, /* 59 */ │ │ │ │ │ +67 { "ISO-8859-6", 1, 1, 60}, /* 60 */ │ │ │ │ │ +68 { "ISO-8859-7", 1, 1, 61}, /* 61 */ │ │ │ │ │ +69 { "ISO-8859-8", 1, 1, 62}, /* 62 */ │ │ │ │ │ +70 { "ISO-8859-9", 1, 1, 63}, /* 63 */ │ │ │ │ │ +71 { "ISO-IR-14", 1, 1, 64}, /* 64 */ │ │ │ │ │ +72 { "ISO-IR-149", 1, 1, 65}, /* 65 */ │ │ │ │ │ +73 { "ISO-IR-159", 1, 1, 66}, /* 66 */ │ │ │ │ │ +74 { "ISO-IR-166", 1, 1, 67}, /* 67 */ │ │ │ │ │ +75 { "ISO-IR-87", 1, 1, 68}, /* 68 */ │ │ │ │ │ +76 { "JAVA", 1, 1, 69}, /* 69 */ │ │ │ │ │ +77 { "JISX0201-1976", 1, 1, 70}, /* 70 */ │ │ │ │ │ +78 { "KOI8-R", 1, 1, 71}, /* 71 */ │ │ │ │ │ +79 { "KOI8-RU", 1, 1, 72}, /* 72 */ │ │ │ │ │ +80 { "KOI8-T", 1, 1, 73}, /* 73 */ │ │ │ │ │ +81 { "KOI8-U", 1, 1, 74}, /* 74 */ │ │ │ │ │ +82 { "MAC", 1, 1, 75}, /* 75 */ │ │ │ │ │ +83 { "MACARABIC", 1, 1, 76}, /* 76 */ │ │ │ │ │ +84 { "MACCENTRALEUROPE", 1, 1, 77}, /* 77 */ │ │ │ │ │ +85 { "MACCROATIAN", 1, 1, 78}, /* 78 */ │ │ │ │ │ +86 { "MACCYRILLIC", 1, 1, 79}, /* 79 */ │ │ │ │ │ +87 { "MACGREEK", 1, 1, 80}, /* 80 */ │ │ │ │ │ +88 { "MACHEBREW", 1, 1, 81}, /* 81 */ │ │ │ │ │ +89 { "MACICELAND", 1, 1, 82}, /* 82 */ │ │ │ │ │ +90 { "MACROMANIA", 1, 1, 83}, /* 83 */ │ │ │ │ │ +91 { "MACTHAI", 1, 1, 84}, /* 84 */ │ │ │ │ │ +92 { "MACTURKISH", 1, 1, 85}, /* 85 */ │ │ │ │ │ +93 { "MACUKRAINE", 1, 1, 86}, /* 86 */ │ │ │ │ │ +94 { "MULELAO-1", 1, 1, 87}, /* 87 */ │ │ │ │ │ +95 { "NEXTSTEP", 1, 1, 88}, /* 88 */ │ │ │ │ │ +96 { "ROMAN8", 1, 1, 89}, /* 89 */ │ │ │ │ │ +97 { "SJIS", 1, 2, 90}, /* 90 */ │ │ │ │ │ +98 { "TCVN", 1, 1, 91}, /* 91 */ │ │ │ │ │ +99 { "US-ASCII", 1, 1, 92}, /* 92 */ │ │ │ │ │ +100 { "UTF-7", 1, 4, 93}, /* 93 */ │ │ │ │ │ +101 { "VISCII", 1, 1, 94}, /* 94 */ │ │ │ │ │ +102}; │ │ │ │ │ +103 │ │ │ │ │ +104static const CHARACTER_SET_ALIAS iconv_aliases[] = { │ │ │ │ │ +105 { "646", 92 }, │ │ │ │ │ +106 { "850", 30 }, │ │ │ │ │ +107 { "862", 31 }, │ │ │ │ │ +108 { "866", 32 }, │ │ │ │ │ +109 { "ANSI_X3.4-1968", 92 }, │ │ │ │ │ +110 { "ANSI_X3.4-1986", 92 }, │ │ │ │ │ +111 { "ARABIC", 60 }, │ │ │ │ │ +112 { "ARMSCII-8", 10 }, │ │ │ │ │ +113 { "ASCII", 92 }, │ │ │ │ │ +114 { "ASMO-708", 60 }, │ │ │ │ │ +115 { "BIG-5", 11 }, │ │ │ │ │ +116 { "BIG-FIVE", 11 }, │ │ │ │ │ +117 { "BIG5", 11 }, │ │ │ │ │ +118 { "BIG5-HKSCS", 12 }, │ │ │ │ │ +119 { "BIG5HKSCS", 12 }, │ │ │ │ │ +120 { "BIGFIVE", 11 }, │ │ │ │ │ +121 { "C99", 13 }, │ │ │ │ │ +122 { "CHINESE", 14 }, │ │ │ │ │ +123 { "CN", 15 }, │ │ │ │ │ +124 { "CN-BIG5", 11 }, │ │ │ │ │ +125 { "CN-GB", 16 }, │ │ │ │ │ +126 { "CN-GB-ISOIR165", 17 }, │ │ │ │ │ +127 { "CP1133", 18 }, │ │ │ │ │ +128 { "CP1250", 19 }, │ │ │ │ │ +129 { "CP1251", 20 }, │ │ │ │ │ +130 { "CP1252", 21 }, │ │ │ │ │ +131 { "CP1253", 22 }, │ │ │ │ │ +132 { "CP1254", 23 }, │ │ │ │ │ +133 { "CP1255", 24 }, │ │ │ │ │ +134 { "CP1256", 25 }, │ │ │ │ │ +135 { "CP1257", 26 }, │ │ │ │ │ +136 { "CP1258", 27 }, │ │ │ │ │ +137 { "CP1361", 28 }, │ │ │ │ │ +138 { "CP367", 92 }, │ │ │ │ │ +139 { "CP437", 29 }, │ │ │ │ │ +140 { "CP65001", 1 }, │ │ │ │ │ +141 { "CP819", 0 }, │ │ │ │ │ +142 { "CP850", 30 }, │ │ │ │ │ +143 { "CP862", 31 }, │ │ │ │ │ +144 { "CP866", 32 }, │ │ │ │ │ +145 { "CP874", 33 }, │ │ │ │ │ +146 { "CP932", 34 }, │ │ │ │ │ +147 { "CP936", 35 }, │ │ │ │ │ +148 { "CP949", 36 }, │ │ │ │ │ +149 { "CP950", 37 }, │ │ │ │ │ +150 { "CSASCII", 92 }, │ │ │ │ │ +151 { "CSBIG5", 11 }, │ │ │ │ │ +152 { "CSEUCKR", 39 }, │ │ │ │ │ +153 { "CSEUCPKDFMTJAPANESE", 38 }, │ │ │ │ │ +154 { "CSEUCTW", 40 }, │ │ │ │ │ +155 { "CSGB2312", 16 }, │ │ │ │ │ +156 { "CSHALFWIDTHKATAKANA", 70 }, │ │ │ │ │ +157 { "CSHPROMAN8", 89 }, │ │ │ │ │ +158 { "CSIBM866", 32 }, │ │ │ │ │ +159 { "CSISO14JISC6220RO", 64 }, │ │ │ │ │ +160 { "CSISO159JISX02121990", 66 }, │ │ │ │ │ +161 { "CSISO2022CN", 45 }, │ │ │ │ │ +162 { "CSISO2022JP", 47 }, │ │ │ │ │ +163 { "CSISO2022JP2", 49 }, │ │ │ │ │ +164 { "CSISO2022KR", 50 }, │ │ │ │ │ +165 { "CSISO57GB1988", 15 }, │ │ │ │ │ +166 { "CSISO58GB231280", 14 }, │ │ │ │ │ +167 { "CSISO87JISX0208", 68 }, │ │ │ │ │ +168 { "CSISOLATIN1", 0 }, │ │ │ │ │ +169 { "CSISOLATIN2", 56 }, │ │ │ │ │ +170 { "CSISOLATIN3", 57 }, │ │ │ │ │ +171 { "CSISOLATIN4", 58 }, │ │ │ │ │ +172 { "CSISOLATIN5", 63 }, │ │ │ │ │ +173 { "CSISOLATIN6", 51 }, │ │ │ │ │ +174 { "CSISOLATINARABIC", 60 }, │ │ │ │ │ +175 { "CSISOLATINCYRILLIC", 59 }, │ │ │ │ │ +176 { "CSISOLATINGREEK", 61 }, │ │ │ │ │ +177 { "CSISOLATINHEBREW", 62 }, │ │ │ │ │ +178 { "CSKOI8R", 71 }, │ │ │ │ │ +179 { "CSKSC56011987", 65 }, │ │ │ │ │ +180 { "CSMACINTOSH", 75 }, │ │ │ │ │ +181 { "CSPC850MULTILINGUAL", 30 }, │ │ │ │ │ +182 { "CSPC862LATINHEBREW", 31 }, │ │ │ │ │ +183 { "CSSHIFTJIS", 90 }, │ │ │ │ │ +184 { "CSUNICODE11", 3 }, │ │ │ │ │ +185 { "CSUNICODE11UTF7", 93 }, │ │ │ │ │ +186 { "CSVISCII", 94 }, │ │ │ │ │ +187 { "CYRILLIC", 59 }, │ │ │ │ │ +188 { "ECMA-114", 60 }, │ │ │ │ │ +189 { "ECMA-118", 61 }, │ │ │ │ │ +190 { "ELOT_928", 61 }, │ │ │ │ │ +191 { "EUC-CN", 16 }, │ │ │ │ │ +192 { "EUC-JP", 38 }, │ │ │ │ │ +193 { "EUC-KR", 39 }, │ │ │ │ │ +194 { "EUC-TW", 40 }, │ │ │ │ │ +195 { "EUCCN", 16 }, │ │ │ │ │ +196 { "EUCJP", 38 }, │ │ │ │ │ +197 { "EUCKR", 39 }, │ │ │ │ │ +198 { "EUCTW", 40 }, │ │ │ │ │ +199 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 38 }, │ │ │ │ │ +200 { "GB18030", 41 }, │ │ │ │ │ +201 { "GB2312", 16 }, │ │ │ │ │ +202 { "GBK", 35 }, │ │ │ │ │ +203 { "GB_1988-80", 15 }, │ │ │ │ │ +204 { "GB_2312-80", 14 }, │ │ │ │ │ +205 { "GEORGIAN-ACADEMY", 42 }, │ │ │ │ │ +206 { "GEORGIAN-PS", 43 }, │ │ │ │ │ +207 { "GREEK", 61 }, │ │ │ │ │ +208 { "GREEK8", 61 }, │ │ │ │ │ +209 { "HEBREW", 62 }, │ │ │ │ │ +210 { "HP-ROMAN8", 89 }, │ │ │ │ │ +211 { "HZ", 44 }, │ │ │ │ │ +212 { "HZ-GB-2312", 44 }, │ │ │ │ │ +213 { "IBM-CP1133", 18 }, │ │ │ │ │ +214 { "IBM367", 92 }, │ │ │ │ │ +215 { "IBM437", 29 }, │ │ │ │ │ +216 { "IBM819", 0 }, │ │ │ │ │ +217 { "IBM850", 30 }, │ │ │ │ │ +218 { "IBM862", 31 }, │ │ │ │ │ +219 { "IBM866", 32 }, │ │ │ │ │ +220 { "ISO-2022-CN", 45 }, │ │ │ │ │ +221 { "ISO-2022-CN-EXT", 46 }, │ │ │ │ │ +222 { "ISO-2022-JP", 47 }, │ │ │ │ │ +223 { "ISO-2022-JP-1", 48 }, │ │ │ │ │ +224 { "ISO-2022-JP-2", 49 }, │ │ │ │ │ +225 { "ISO-2022-KR", 50 }, │ │ │ │ │ +226 { "ISO-8859-1", 0 }, │ │ │ │ │ +227 { "ISO-8859-10", 51 }, │ │ │ │ │ +228 { "ISO-8859-13", 52 }, │ │ │ │ │ +229 { "ISO-8859-14", 53 }, │ │ │ │ │ +230 { "ISO-8859-15", 54 }, │ │ │ │ │ +231 { "ISO-8859-16", 55 }, │ │ │ │ │ +232 { "ISO-8859-2", 56 }, │ │ │ │ │ +233 { "ISO-8859-3", 57 }, │ │ │ │ │ +234 { "ISO-8859-4", 58 }, │ │ │ │ │ +235 { "ISO-8859-5", 59 }, │ │ │ │ │ +236 { "ISO-8859-6", 60 }, │ │ │ │ │ +237 { "ISO-8859-7", 61 }, │ │ │ │ │ +238 { "ISO-8859-8", 62 }, │ │ │ │ │ +239 { "ISO-8859-9", 63 }, │ │ │ │ │ +240 { "ISO-CELTIC", 53 }, │ │ │ │ │ +241 { "ISO-IR-100", 0 }, │ │ │ │ │ +242 { "ISO-IR-101", 56 }, │ │ │ │ │ +243 { "ISO-IR-109", 57 }, │ │ │ │ │ +244 { "ISO-IR-110", 58 }, │ │ │ │ │ +245 { "ISO-IR-126", 61 }, │ │ │ │ │ +246 { "ISO-IR-127", 60 }, │ │ │ │ │ +247 { "ISO-IR-138", 62 }, │ │ │ │ │ +248 { "ISO-IR-14", 64 }, │ │ │ │ │ +249 { "ISO-IR-144", 59 }, │ │ │ │ │ +250 { "ISO-IR-148", 63 }, │ │ │ │ │ +251 { "ISO-IR-149", 65 }, │ │ │ │ │ +252 { "ISO-IR-157", 51 }, │ │ │ │ │ +253 { "ISO-IR-159", 66 }, │ │ │ │ │ +254 { "ISO-IR-165", 17 }, │ │ │ │ │ +255 { "ISO-IR-166", 67 }, │ │ │ │ │ +256 { "ISO-IR-179", 52 }, │ │ │ │ │ +257 { "ISO-IR-199", 53 }, │ │ │ │ │ +258 { "ISO-IR-203", 54 }, │ │ │ │ │ +259 { "ISO-IR-226", 55 }, │ │ │ │ │ +260 { "ISO-IR-57", 15 }, │ │ │ │ │ +261 { "ISO-IR-58", 14 }, │ │ │ │ │ +262 { "ISO-IR-6", 92 }, │ │ │ │ │ +263 { "ISO-IR-87", 68 }, │ │ │ │ │ +264 { "ISO646-CN", 15 }, │ │ │ │ │ +265 { "ISO646-JP", 64 }, │ │ │ │ │ +266 { "ISO646-US", 92 }, │ │ │ │ │ +267 { "ISO8859-1", 0 }, │ │ │ │ │ +268 { "ISO8859-10", 51 }, │ │ │ │ │ +269 { "ISO8859-15", 54 }, │ │ │ │ │ +270 { "ISO8859-2", 56 }, │ │ │ │ │ +271 { "ISO8859-4", 58 }, │ │ │ │ │ +272 { "ISO8859-5", 59 }, │ │ │ │ │ +273 { "ISO8859-6", 60 }, │ │ │ │ │ +274 { "ISO8859-7", 61 }, │ │ │ │ │ +275 { "ISO8859-8", 62 }, │ │ │ │ │ +276 { "ISO8859-9", 63 }, │ │ │ │ │ +277 { "ISO_646.IRV:1991", 92 }, │ │ │ │ │ +278 { "ISO_8859-1", 0 }, │ │ │ │ │ +279 { "ISO_8859-10", 51 }, │ │ │ │ │ +280 { "ISO_8859-10:1992", 51 }, │ │ │ │ │ +281 { "ISO_8859-13", 52 }, │ │ │ │ │ +282 { "ISO_8859-14", 53 }, │ │ │ │ │ +283 { "ISO_8859-14:1998", 53 }, │ │ │ │ │ +284 { "ISO_8859-15", 54 }, │ │ │ │ │ +285 { "ISO_8859-15:1998", 54 }, │ │ │ │ │ +286 { "ISO_8859-16", 55 }, │ │ │ │ │ +287 { "ISO_8859-16:2000", 55 }, │ │ │ │ │ +288 { "ISO_8859-1:1987", 0 }, │ │ │ │ │ +289 { "ISO_8859-2", 56 }, │ │ │ │ │ +290 { "ISO_8859-2:1987", 56 }, │ │ │ │ │ +291 { "ISO_8859-3", 57 }, │ │ │ │ │ +292 { "ISO_8859-3:1988", 57 }, │ │ │ │ │ +293 { "ISO_8859-4", 58 }, │ │ │ │ │ +294 { "ISO_8859-4:1988", 58 }, │ │ │ │ │ +295 { "ISO_8859-5", 59 }, │ │ │ │ │ +296 { "ISO_8859-5:1988", 59 }, │ │ │ │ │ +297 { "ISO_8859-6", 60 }, │ │ │ │ │ +298 { "ISO_8859-6:1987", 60 }, │ │ │ │ │ +299 { "ISO_8859-7", 61 }, │ │ │ │ │ +300 { "ISO_8859-7:1987", 61 }, │ │ │ │ │ +301 { "ISO_8859-8", 62 }, │ │ │ │ │ +302 { "ISO_8859-8:1988", 62 }, │ │ │ │ │ +303 { "ISO_8859-9", 63 }, │ │ │ │ │ +304 { "ISO_8859-9:1989", 63 }, │ │ │ │ │ +305 { "JAVA", 69 }, │ │ │ │ │ +306 { "JIS0208", 68 }, │ │ │ │ │ +307 { "JISX0201-1976", 70 }, │ │ │ │ │ +308 { "JIS_C6220-1969-RO", 64 }, │ │ │ │ │ +309 { "JIS_C6226-1983", 68 }, │ │ │ │ │ +310 { "JIS_X0201", 70 }, │ │ │ │ │ +311 { "JIS_X0208", 68 }, │ │ │ │ │ +312 { "JIS_X0208-1983", 68 }, │ │ │ │ │ +313 { "JIS_X0208-1990", 68 }, │ │ │ │ │ +314 { "JIS_X0212", 66 }, │ │ │ │ │ +315 { "JIS_X0212-1990", 66 }, │ │ │ │ │ +316 { "JIS_X0212.1990-0", 66 }, │ │ │ │ │ +317 { "JOHAB", 28 }, │ │ │ │ │ +318 { "JP", 64 }, │ │ │ │ │ +319 { "KOI8-R", 71 }, │ │ │ │ │ +320 { "KOI8-RU", 72 }, │ │ │ │ │ +321 { "KOI8-T", 73 }, │ │ │ │ │ +322 { "KOI8-U", 74 }, │ │ │ │ │ +323 { "KOREAN", 65 }, │ │ │ │ │ +324 { "KSC_5601", 65 }, │ │ │ │ │ +325 { "KS_C_5601-1987", 65 }, │ │ │ │ │ +326 { "KS_C_5601-1989", 65 }, │ │ │ │ │ +327 { "L1", 0 }, │ │ │ │ │ +328 { "L2", 56 }, │ │ │ │ │ +329 { "L3", 57 }, │ │ │ │ │ +330 { "L4", 58 }, │ │ │ │ │ +331 { "L5", 63 }, │ │ │ │ │ +332 { "L6", 51 }, │ │ │ │ │ +333 { "L7", 52 }, │ │ │ │ │ +334 { "L8", 53 }, │ │ │ │ │ +335 { "LATIN1", 0 }, │ │ │ │ │ +336 { "LATIN2", 56 }, │ │ │ │ │ +337 { "LATIN3", 57 }, │ │ │ │ │ +338 { "LATIN4", 58 }, │ │ │ │ │ +339 { "LATIN5", 63 }, │ │ │ │ │ +340 { "LATIN6", 51 }, │ │ │ │ │ +341 { "LATIN7", 52 }, │ │ │ │ │ +342 { "LATIN8", 53 }, │ │ │ │ │ +343 { "MAC", 75 }, │ │ │ │ │ +344 { "MACARABIC", 76 }, │ │ │ │ │ +345 { "MACCENTRALEUROPE", 77 }, │ │ │ │ │ +346 { "MACCROATIAN", 78 }, │ │ │ │ │ +347 { "MACCYRILLIC", 79 }, │ │ │ │ │ +348 { "MACGREEK", 80 }, │ │ │ │ │ +349 { "MACHEBREW", 81 }, │ │ │ │ │ +350 { "MACICELAND", 82 }, │ │ │ │ │ +351 { "MACINTOSH", 75 }, │ │ │ │ │ +352 { "MACROMAN", 75 }, │ │ │ │ │ +353 { "MACROMANIA", 83 }, │ │ │ │ │ +354 { "MACTHAI", 84 }, │ │ │ │ │ +355 { "MACTURKISH", 85 }, │ │ │ │ │ +356 { "MACUKRAINE", 86 }, │ │ │ │ │ +357 { "MS-ANSI", 21 }, │ │ │ │ │ +358 { "MS-ARAB", 25 }, │ │ │ │ │ +359 { "MS-CYRL", 20 }, │ │ │ │ │ +360 { "MS-EE", 19 }, │ │ │ │ │ +361 { "MS-GREEK", 22 }, │ │ │ │ │ +362 { "MS-HEBR", 24 }, │ │ │ │ │ +363 { "MS-TURK", 23 }, │ │ │ │ │ +364 { "MS_KANJI", 90 }, │ │ │ │ │ +365 { "MULELAO-1", 87 }, │ │ │ │ │ +366 { "NEXTSTEP", 88 }, │ │ │ │ │ +367 { "R8", 89 }, │ │ │ │ │ +368 { "ROMAN8", 89 }, │ │ │ │ │ +369 { "SHIFT-JIS", 90 }, │ │ │ │ │ +370 { "SHIFT_JIS", 90 }, │ │ │ │ │ +371 { "SJIS", 90 }, │ │ │ │ │ +372 { "TCVN", 91 }, │ │ │ │ │ +373 { "TCVN-5712", 91 }, │ │ │ │ │ +374 { "TCVN5712-1", 91 }, │ │ │ │ │ +375 { "TCVN5712-1:1993", 91 }, │ │ │ │ │ +376 { "TIS-620", 67 }, │ │ │ │ │ +377 { "TIS620", 67 }, │ │ │ │ │ +378 { "TIS620-0", 67 }, │ │ │ │ │ +379 { "TIS620.2529-1", 67 }, │ │ │ │ │ +380 { "TIS620.2533-0", 67 }, │ │ │ │ │ +381 { "TIS620.2533-1", 67 }, │ │ │ │ │ +382 { "UCS-2BE", 3 }, │ │ │ │ │ +383 { "UCS-2LE", 2 }, │ │ │ │ │ +384 { "UCS-4BE", 7 }, │ │ │ │ │ +385 { "UCS-4LE", 6 }, │ │ │ │ │ +386 { "UHC", 36 }, │ │ │ │ │ +387 { "UNICODE-1-1", 3 }, │ │ │ │ │ +388 { "UNICODE-1-1-UTF-7", 93 }, │ │ │ │ │ +389 { "UNICODEBIG", 3 }, │ │ │ │ │ +390 { "UNICODELITTLE", 2 }, │ │ │ │ │ +391 { "US", 92 }, │ │ │ │ │ +392 { "US-ASCII", 92 }, │ │ │ │ │ +393 { "UTF-16BE", 5 }, │ │ │ │ │ +394 { "UTF-16LE", 4 }, │ │ │ │ │ +395 { "UTF-32BE", 9 }, │ │ │ │ │ +396 { "UTF-32LE", 8 }, │ │ │ │ │ +397 { "UTF-7", 93 }, │ │ │ │ │ +398 { "UTF-8", 1 }, │ │ │ │ │ +399 { "UTF7", 93 }, │ │ │ │ │ +400 { "UTF8", 1 }, │ │ │ │ │ +401 { "VISCII", 94 }, │ │ │ │ │ +402 { "VISCII1.1-1", 94 }, │ │ │ │ │ +403 { "WINBALTRIM", 26 }, │ │ │ │ │ +404 { "WINDOWS-1250", 19 }, │ │ │ │ │ +405 { "WINDOWS-1251", 20 }, │ │ │ │ │ +406 { "WINDOWS-1252", 21 }, │ │ │ │ │ +407 { "WINDOWS-1253", 22 }, │ │ │ │ │ +408 { "WINDOWS-1254", 23 }, │ │ │ │ │ +409 { "WINDOWS-1255", 24 }, │ │ │ │ │ +410 { "WINDOWS-1256", 25 }, │ │ │ │ │ +411 { "WINDOWS-1257", 26 }, │ │ │ │ │ +412 { "WINDOWS-1258", 27 }, │ │ │ │ │ +413 { "WINDOWS-874", 33 }, │ │ │ │ │ +414 { "X0201", 70 }, │ │ │ │ │ +415 { "X0208", 68 }, │ │ │ │ │ +416 { "X0212", 66 }, │ │ │ │ │ +417 { "big5", 11 }, │ │ │ │ │ +418 { "cp1250", 19 }, │ │ │ │ │ +419 { "cp1251", 20 }, │ │ │ │ │ +420 { "cp1252", 21 }, │ │ │ │ │ +421 { "cp1253", 22 }, │ │ │ │ │ +422 { "cp1254", 23 }, │ │ │ │ │ +423 { "cp1255", 24 }, │ │ │ │ │ +424 { "cp1256", 25 }, │ │ │ │ │ +425 { "cp1257", 26 }, │ │ │ │ │ +426 { "cp1258", 27 }, │ │ │ │ │ +427 { "cp437", 29 }, │ │ │ │ │ +428 { "cp850", 30 }, │ │ │ │ │ +429 { "cp862", 31 }, │ │ │ │ │ +430 { "cp866", 32 }, │ │ │ │ │ +431 { "cp874", 33 }, │ │ │ │ │ +432 { "eucJP", 38 }, │ │ │ │ │ +433 { "eucKR", 39 }, │ │ │ │ │ +434 { "eucTW", 40 }, │ │ │ │ │ +435 { "hp15CN", 14 }, │ │ │ │ │ +436 { "iso81", 0 }, │ │ │ │ │ +437 { "iso815", 54 }, │ │ │ │ │ +438 { "iso82", 56 }, │ │ │ │ │ +439 { "iso83", 57 }, │ │ │ │ │ +440 { "iso84", 58 }, │ │ │ │ │ +441 { "iso85", 59 }, │ │ │ │ │ +442 { "iso86", 60 }, │ │ │ │ │ +443 { "iso87", 61 }, │ │ │ │ │ +444 { "iso88", 62 }, │ │ │ │ │ +445 { "iso88591", 0 }, │ │ │ │ │ +446 { "iso885915", 54 }, │ │ │ │ │ +447 { "iso88592", 56 }, │ │ │ │ │ +448 { "iso88593", 57 }, │ │ │ │ │ +449 { "iso88594", 58 }, │ │ │ │ │ +450 { "iso88595", 59 }, │ │ │ │ │ +451 { "iso88596", 60 }, │ │ │ │ │ +452 { "iso88597", 61 }, │ │ │ │ │ +453 { "iso88598", 62 }, │ │ │ │ │ +454 { "iso88599", 63 }, │ │ │ │ │ +455 { "iso89", 63 }, │ │ │ │ │ +456 { "roma8", 89 }, │ │ │ │ │ +457 { "roman8", 89 }, │ │ │ │ │ +458 { "sjis", 90 }, │ │ │ │ │ +459 { "thai8", 67 }, │ │ │ │ │ +460 { "tis620", 67 }, │ │ │ │ │ +461 { "utf8", 1 }, │ │ │ │ │ +462 {NULL, 0} │ │ │ │ │ +463}; │ │ │ │ │ +464 │ │ │ │ │ +465#endif │ │ │ │ │ +466 │ │ │ │ │ +467enum { │ │ │ │ │ +468 TDS_CHARSET_ISO_8859_1 = 0, │ │ │ │ │ +469 TDS_CHARSET_UTF_8 = 1, │ │ │ │ │ +470 TDS_CHARSET_UCS_2LE = 2, │ │ │ │ │ +471 TDS_CHARSET_UCS_2BE = 3, │ │ │ │ │ +472 TDS_CHARSET_UTF_16LE = 4, │ │ │ │ │ +473 TDS_CHARSET_UTF_16BE = 5, │ │ │ │ │ +474 TDS_CHARSET_UCS_4LE = 6, │ │ │ │ │ +475 TDS_CHARSET_UCS_4BE = 7, │ │ │ │ │ +476 TDS_CHARSET_UTF_32LE = 8, │ │ │ │ │ +477 TDS_CHARSET_UTF_32BE = 9, │ │ │ │ │ +478 TDS_CHARSET_ARMSCII_8 = 10, │ │ │ │ │ +479 TDS_CHARSET_BIG_5 = 11, │ │ │ │ │ +480 TDS_CHARSET_BIG5_HKSCS = 12, │ │ │ │ │ +481 TDS_CHARSET_C99 = 13, │ │ │ │ │ +482 TDS_CHARSET_CHINESE = 14, │ │ │ │ │ +483 TDS_CHARSET_CN = 15, │ │ │ │ │ +484 TDS_CHARSET_CN_GB = 16, │ │ │ │ │ +485 TDS_CHARSET_CN_GB_ISOIR165 = 17, │ │ │ │ │ +486 TDS_CHARSET_CP1133 = 18, │ │ │ │ │ +487 TDS_CHARSET_CP1250 = 19, │ │ │ │ │ +488 TDS_CHARSET_CP1251 = 20, │ │ │ │ │ +489 TDS_CHARSET_CP1252 = 21, │ │ │ │ │ +490 TDS_CHARSET_CP1253 = 22, │ │ │ │ │ +491 TDS_CHARSET_CP1254 = 23, │ │ │ │ │ +492 TDS_CHARSET_CP1255 = 24, │ │ │ │ │ +493 TDS_CHARSET_CP1256 = 25, │ │ │ │ │ +494 TDS_CHARSET_CP1257 = 26, │ │ │ │ │ +495 TDS_CHARSET_CP1258 = 27, │ │ │ │ │ +496 TDS_CHARSET_CP1361 = 28, │ │ │ │ │ +497 TDS_CHARSET_CP437 = 29, │ │ │ │ │ +498 TDS_CHARSET_CP850 = 30, │ │ │ │ │ +499 TDS_CHARSET_CP862 = 31, │ │ │ │ │ +500 TDS_CHARSET_CP866 = 32, │ │ │ │ │ +501 TDS_CHARSET_CP874 = 33, │ │ │ │ │ +502 TDS_CHARSET_CP932 = 34, │ │ │ │ │ +503 TDS_CHARSET_CP936 = 35, │ │ │ │ │ +504 TDS_CHARSET_CP949 = 36, │ │ │ │ │ +505 TDS_CHARSET_CP950 = 37, │ │ │ │ │ +506 TDS_CHARSET_EUC_JP = 38, │ │ │ │ │ +507 TDS_CHARSET_EUC_KR = 39, │ │ │ │ │ +508 TDS_CHARSET_EUC_TW = 40, │ │ │ │ │ +509 TDS_CHARSET_GB18030 = 41, │ │ │ │ │ +510 TDS_CHARSET_GEORGIAN_ACADEMY = 42, │ │ │ │ │ +511 TDS_CHARSET_GEORGIAN_PS = 43, │ │ │ │ │ +512 TDS_CHARSET_HZ = 44, │ │ │ │ │ +513 TDS_CHARSET_ISO_2022_CN = 45, │ │ │ │ │ +514 TDS_CHARSET_ISO_2022_CN_EXT = 46, │ │ │ │ │ +515 TDS_CHARSET_ISO_2022_JP = 47, │ │ │ │ │ +516 TDS_CHARSET_ISO_2022_JP_1 = 48, │ │ │ │ │ +517 TDS_CHARSET_ISO_2022_JP_2 = 49, │ │ │ │ │ +518 TDS_CHARSET_ISO_2022_KR = 50, │ │ │ │ │ +519 TDS_CHARSET_ISO_8859_10 = 51, │ │ │ │ │ +520 TDS_CHARSET_ISO_8859_13 = 52, │ │ │ │ │ +521 TDS_CHARSET_ISO_8859_14 = 53, │ │ │ │ │ +522 TDS_CHARSET_ISO_8859_15 = 54, │ │ │ │ │ +523 TDS_CHARSET_ISO_8859_16 = 55, │ │ │ │ │ +524 TDS_CHARSET_ISO_8859_2 = 56, │ │ │ │ │ +525 TDS_CHARSET_ISO_8859_3 = 57, │ │ │ │ │ +526 TDS_CHARSET_ISO_8859_4 = 58, │ │ │ │ │ +527 TDS_CHARSET_ISO_8859_5 = 59, │ │ │ │ │ +528 TDS_CHARSET_ISO_8859_6 = 60, │ │ │ │ │ +529 TDS_CHARSET_ISO_8859_7 = 61, │ │ │ │ │ +530 TDS_CHARSET_ISO_8859_8 = 62, │ │ │ │ │ +531 TDS_CHARSET_ISO_8859_9 = 63, │ │ │ │ │ +532 TDS_CHARSET_ISO_IR_14 = 64, │ │ │ │ │ +533 TDS_CHARSET_ISO_IR_149 = 65, │ │ │ │ │ +534 TDS_CHARSET_ISO_IR_159 = 66, │ │ │ │ │ +535 TDS_CHARSET_ISO_IR_166 = 67, │ │ │ │ │ +536 TDS_CHARSET_ISO_IR_87 = 68, │ │ │ │ │ +537 TDS_CHARSET_JAVA = 69, │ │ │ │ │ +538 TDS_CHARSET_JISX0201_1976 = 70, │ │ │ │ │ +539 TDS_CHARSET_KOI8_R = 71, │ │ │ │ │ +540 TDS_CHARSET_KOI8_RU = 72, │ │ │ │ │ +541 TDS_CHARSET_KOI8_T = 73, │ │ │ │ │ +542 TDS_CHARSET_KOI8_U = 74, │ │ │ │ │ +543 TDS_CHARSET_MAC = 75, │ │ │ │ │ +544 TDS_CHARSET_MACARABIC = 76, │ │ │ │ │ +545 TDS_CHARSET_MACCENTRALEUROPE = 77, │ │ │ │ │ +546 TDS_CHARSET_MACCROATIAN = 78, │ │ │ │ │ +547 TDS_CHARSET_MACCYRILLIC = 79, │ │ │ │ │ +548 TDS_CHARSET_MACGREEK = 80, │ │ │ │ │ +549 TDS_CHARSET_MACHEBREW = 81, │ │ │ │ │ +550 TDS_CHARSET_MACICELAND = 82, │ │ │ │ │ +551 TDS_CHARSET_MACROMANIA = 83, │ │ │ │ │ +552 TDS_CHARSET_MACTHAI = 84, │ │ │ │ │ +553 TDS_CHARSET_MACTURKISH = 85, │ │ │ │ │ +554 TDS_CHARSET_MACUKRAINE = 86, │ │ │ │ │ +555 TDS_CHARSET_MULELAO_1 = 87, │ │ │ │ │ +556 TDS_CHARSET_NEXTSTEP = 88, │ │ │ │ │ +557 TDS_CHARSET_ROMAN8 = 89, │ │ │ │ │ +558 TDS_CHARSET_SJIS = 90, │ │ │ │ │ +559 TDS_CHARSET_TCVN = 91, │ │ │ │ │ +560 TDS_CHARSET_US_ASCII = 92, │ │ │ │ │ +561 TDS_CHARSET_UTF_7 = 93, │ │ │ │ │ +562 TDS_CHARSET_VISCII = 94, │ │ │ │ │ +563 TDS_NUM_CHARSETS = 95 │ │ │ │ │ +564}; │ │ │ │ │ +565 │ │ │ │ │ +_character_set_alias │ │ │ │ │ +Definition iconv.h:73 │ │ │ │ │ +tds_encoding │ │ │ │ │ +Information relevant to libiconv. │ │ │ │ │ +Definition tds.h:603 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00509_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/enum_cap.h Source File │ │ │ │ +FreeTDS API: include/freetds/server.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,175 +74,88 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
enum_cap.h
│ │ │ │ +
server.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1typedef enum tds_request_capability
│ │ │ │ -
2 { TDS_REQ_LANG = 1
│ │ │ │ -
3 , TDS_REQ_RPC = 2
│ │ │ │ -
4 , TDS_REQ_EVT = 3
│ │ │ │ -
5 , TDS_REQ_MSTMT = 4
│ │ │ │ -
6 , TDS_REQ_BCP = 5
│ │ │ │ -
7 , TDS_REQ_CURSOR = 6
│ │ │ │ -
8 , TDS_REQ_DYNF = 7
│ │ │ │ -
9 , TDS_REQ_MSG = 8
│ │ │ │ -
10 , TDS_REQ_PARAM = 9
│ │ │ │ -
11 , TDS_REQ_DATA_INT1 = 10
│ │ │ │ -
12 , TDS_REQ_DATA_INT2 = 11
│ │ │ │ -
13 , TDS_REQ_DATA_INT4 = 12
│ │ │ │ -
14 , TDS_REQ_DATA_BIT = 13
│ │ │ │ -
15 , TDS_REQ_DATA_CHAR = 14
│ │ │ │ -
16 , TDS_REQ_DATA_VCHAR = 15
│ │ │ │ -
17 , TDS_REQ_DATA_BIN = 16
│ │ │ │ -
18 , TDS_REQ_DATA_VBIN = 17
│ │ │ │ -
19 , TDS_REQ_DATA_MNY8 = 18
│ │ │ │ -
20 , TDS_REQ_DATA_MNY4 = 19
│ │ │ │ -
21 , TDS_REQ_DATA_DATE8 = 20
│ │ │ │ -
22 , TDS_REQ_DATA_DATE4 = 21
│ │ │ │ -
23 , TDS_REQ_DATA_FLT4 = 22
│ │ │ │ -
24 , TDS_REQ_DATA_FLT8 = 23
│ │ │ │ -
25 , TDS_REQ_DATA_NUM = 24
│ │ │ │ -
26 , TDS_REQ_DATA_TEXT = 25
│ │ │ │ -
27 , TDS_REQ_DATA_IMAGE = 26
│ │ │ │ -
28 , TDS_REQ_DATA_DEC = 27
│ │ │ │ -
29 , TDS_REQ_DATA_LCHAR = 28
│ │ │ │ -
30 , TDS_REQ_DATA_LBIN = 29
│ │ │ │ -
31 , TDS_REQ_DATA_INTN = 30
│ │ │ │ -
32 , TDS_REQ_DATA_DATETIMEN = 31
│ │ │ │ -
33 , TDS_REQ_DATA_MONEYN = 32
│ │ │ │ -
34 , TDS_REQ_CSR_PREV = 33
│ │ │ │ -
35 , TDS_REQ_CSR_FIRST = 34
│ │ │ │ -
36 , TDS_REQ_CSR_LAST = 35
│ │ │ │ -
37 , TDS_REQ_CSR_ABS = 36
│ │ │ │ -
38 , TDS_REQ_CSR_REL = 37
│ │ │ │ -
39 , TDS_REQ_CSR_MULTI = 38
│ │ │ │ -
40 , TDS_REQ_CON_OOB = 39
│ │ │ │ -
41 , TDS_REQ_CON_INBAND = 40
│ │ │ │ -
42 , TDS_REQ_CON_LOGICAL = 41
│ │ │ │ -
43 , TDS_REQ_PROTO_TEXT = 42
│ │ │ │ -
44 , TDS_REQ_PROTO_BULK = 43
│ │ │ │ -
45 , TDS_REQ_URGEVT = 44
│ │ │ │ -
46 , TDS_REQ_DATA_SENSITIVITY = 45
│ │ │ │ -
47 , TDS_REQ_DATA_BOUNDARY = 46
│ │ │ │ -
48 , TDS_REQ_PROTO_DYNAMIC = 47
│ │ │ │ -
49 , TDS_REQ_PROTO_DYNPROC = 48
│ │ │ │ -
50 , TDS_REQ_DATA_FLTN = 49
│ │ │ │ -
51 , TDS_REQ_DATA_BITN = 50
│ │ │ │ -
52 , TDS_REQ_DATA_INT8 = 51
│ │ │ │ -
53 , TDS_REQ_DATA_VOID = 52
│ │ │ │ -
54 , TDS_REQ_DOL_BULK = 53
│ │ │ │ -
55 , TDS_REQ_OBJECT_JAVA1 = 54
│ │ │ │ -
56 , TDS_REQ_OBJECT_CHAR = 55
│ │ │ │ -
57 , TDS_REQ_OBJECT_BINARY = 57
│ │ │ │ -
58 , TDS_REQ_DATA_COLUMNSTATUS = 58
│ │ │ │ -
59 , TDS_REQ_WIDETABLE = 59
│ │ │ │ -
60 , TDS_REQ_DATA_UINT2 = 61
│ │ │ │ -
61 , TDS_REQ_DATA_UINT4 = 62
│ │ │ │ -
62 , TDS_REQ_DATA_UINT8 = 63
│ │ │ │ -
63 , TDS_REQ_DATA_UINTN = 64
│ │ │ │ -
64 , TDS_REQ_CUR_IMPLICIT = 65
│ │ │ │ -
65 , TDS_REQ_DATA_NLBIN = 66
│ │ │ │ -
66 , TDS_REQ_IMAGE_NCHAR = 67
│ │ │ │ -
67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */
│ │ │ │ -
68 , TDS_REQ_BLOB_NCHAR_8 = 69
│ │ │ │ -
69 , TDS_REQ_BLOB_NCHAR_SCSU = 70
│ │ │ │ -
70 , TDS_REQ_DATA_DATE = 71
│ │ │ │ -
71 , TDS_REQ_DATA_TIME = 72
│ │ │ │ -
72 , TDS_REQ_DATA_INTERVAL = 73
│ │ │ │ -
73 , TDS_REQ_CSR_SCROLL = 74
│ │ │ │ -
74 , TDS_REQ_CSR_SENSITIVE = 75
│ │ │ │ -
75 , TDS_REQ_CSR_INSENSITIVE = 76
│ │ │ │ -
76 , TDS_REQ_CSR_SEMISENSITIVE = 77
│ │ │ │ -
77 , TDS_REQ_CSR_KEYSETDRIVEN = 78
│ │ │ │ -
78 , TDS_REQ_SRVPKTSIZE = 79
│ │ │ │ -
79 , TDS_REQ_DATA_UNITEXT = 80
│ │ │ │ -
80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81
│ │ │ │ -
81 , TDS_REQ_DATA_SINT1 = 82
│ │ │ │ -
82 , TDS_REQ_LARGEIDENT = 83
│ │ │ │ -
83 , TDS_REQ_BLOB_NCHAR_16 = 84
│ │ │ │ -
84 , TDS_REQ_DATA_XML = 85
│ │ │ │ -
85 , TDS_REQ_CURINFO3 = 86
│ │ │ │ -
86 , TDS_REQ_DBRPC2 = 87
│ │ │ │ -
87 , TDS_REQ_MIGRATE = 89
│ │ │ │ -
88 , TDS_REQ_DATA_BIGDATETIME = 93
│ │ │ │ -
89 , TDS_REQ_DATA_BIGTIME = 94
│ │ │ │ -
90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */
│ │ │ │ -
91 } TDS_REQUEST_CAPABILITY;
│ │ │ │ -
92
│ │ │ │ -
93typedef enum tds_response_capability
│ │ │ │ -
94 { TDS_RES_NOMSG = 1
│ │ │ │ -
95 , TDS_RES_NOEED = 2
│ │ │ │ -
96 , TDS_RES_NOPARAM = 3
│ │ │ │ -
97 , TDS_RES_DATA_NOINT1 = 4
│ │ │ │ -
98 , TDS_RES_DATA_NOINT2 = 5
│ │ │ │ -
99 , TDS_RES_DATA_NOINT4 = 6
│ │ │ │ -
100 , TDS_RES_DATA_NOBIT = 7
│ │ │ │ -
101 , TDS_RES_DATA_NOCHAR = 8
│ │ │ │ -
102 , TDS_RES_DATA_NOVCHAR = 9
│ │ │ │ -
103 , TDS_RES_DATA_NOBIN = 10
│ │ │ │ -
104 , TDS_RES_DATA_NOVBIN = 11
│ │ │ │ -
105 , TDS_RES_DATA_NOMNY8 = 12
│ │ │ │ -
106 , TDS_RES_DATA_NOMNY4 = 13
│ │ │ │ -
107 , TDS_RES_DATA_NODATE8 = 14
│ │ │ │ -
108 , TDS_RES_DATA_NODATE4 = 15
│ │ │ │ -
109 , TDS_RES_DATA_NOFLT4 = 16
│ │ │ │ -
110 , TDS_RES_DATA_NOFLT8 = 17
│ │ │ │ -
111 , TDS_RES_DATA_NONUM = 18
│ │ │ │ -
112 , TDS_RES_DATA_NOTEXT = 19
│ │ │ │ -
113 , TDS_RES_DATA_NOIMAGE = 20
│ │ │ │ -
114 , TDS_RES_DATA_NODEC = 21
│ │ │ │ -
115 , TDS_RES_DATA_NOLCHAR = 22
│ │ │ │ -
116 , TDS_RES_DATA_NOLBIN = 23
│ │ │ │ -
117 , TDS_RES_DATA_INTN = 24
│ │ │ │ -
118 , TDS_RES_DATA_NODATETIMEN = 25
│ │ │ │ -
119 , TDS_RES_DATA_NOMONEYN = 26
│ │ │ │ -
120 , TDS_RES_CON_NOOOB = 27
│ │ │ │ -
121 , TDS_RES_CON_NOINBAND = 28
│ │ │ │ -
122 , TDS_RES_PROTO_NOTEXT = 29
│ │ │ │ -
123 , TDS_RES_PROTO_NOBULK = 30
│ │ │ │ -
124 , TDS_RES_DATA_NOSENSITIVITY = 31
│ │ │ │ -
125 , TDS_RES_DATA_NOBOUNDARY = 32
│ │ │ │ -
126 , TDS_RES_NOTDSDEBUG = 33
│ │ │ │ -
127 , TDS_RES_NOSTRIPBLANKS = 34
│ │ │ │ -
128 , TDS_RES_DATA_NOINT8 = 35
│ │ │ │ -
129 , TDS_RES_OBJECT_NOJAVA1 = 36
│ │ │ │ -
130 , TDS_RES_OBJECT_NOCHAR = 37
│ │ │ │ -
131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38
│ │ │ │ -
132 , TDS_RES_OBJECT_NOBINARY = 39
│ │ │ │ -
133 , TDS_RES_DATA_NOUINT2 = 41
│ │ │ │ -
134 , TDS_RES_DATA_NOUINT4 = 42
│ │ │ │ -
135 , TDS_RES_DATA_NOUINT8 = 43
│ │ │ │ -
136 , TDS_RES_DATA_NOUINTN = 44
│ │ │ │ -
137 , TDS_RES_NO_WIDETABLES = 45
│ │ │ │ -
138 , TDS_RES_DATA_NONLBIN = 46
│ │ │ │ -
139 , TDS_RES_IMAGE_NONCHAR = 47
│ │ │ │ -
140 , TDS_RES_BLOB_NONCHAR_16 = 48
│ │ │ │ -
141 , TDS_RES_BLOB_NONCHAR_8 = 49
│ │ │ │ -
142 , TDS_RES_BLOB_NONCHAR_SCSU = 50
│ │ │ │ -
143 , TDS_RES_DATA_NODATE = 51
│ │ │ │ -
144 , TDS_RES_DATA_NOTIME = 52
│ │ │ │ -
145 , TDS_RES_DATA_NOINTERVAL = 53
│ │ │ │ -
146 , TDS_RES_DATA_NOUNITEXT = 54
│ │ │ │ -
147 , TDS_RES_DATA_NOSINT1 = 55
│ │ │ │ -
148 , TDS_RES_NO_LARGEIDENT = 56
│ │ │ │ -
149 , TDS_RES_NO_BLOB_NCHAR_16 = 57
│ │ │ │ -
150 , TDS_RES_NO_SRVPKTSIZE = 58
│ │ │ │ -
151 , TDS_RES_DATA_NOXML = 59
│ │ │ │ -
152 , TDS_RES_NONINT_RETURN_VALUE = 60
│ │ │ │ -
153 , TDS_RES_NOXNLDATA = 61
│ │ │ │ -
154 , TDS_RES_SUPPRESS_FMT = 62
│ │ │ │ -
155 , TDS_RES_SUPPRESS_DONEINPROC = 63
│ │ │ │ -
156 , TDS_RES_FORCE_ROWFMT2 = 64
│ │ │ │ -
157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */
│ │ │ │ -
158 } TDS_RESPONSE_CAPABILITY;
│ │ │ │ +
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ +
3 *
│ │ │ │ +
4 * This library is free software; you can redistribute it and/or
│ │ │ │ +
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
6 * License as published by the Free Software Foundation; either
│ │ │ │ +
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
8 *
│ │ │ │ +
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
12 * Library General Public License for more details.
│ │ │ │ +
13 *
│ │ │ │ +
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
15 * License along with this library; if not, write to the
│ │ │ │ +
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
17 * Boston, MA 02111-1307, USA.
│ │ │ │ +
18 */
│ │ │ │ +
19
│ │ │ │ +
20#ifndef _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_
│ │ │ │ +
21#define _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_
│ │ │ │ +
22#endif
│ │ │ │ +
23
│ │ │ │ +
24#ifdef __cplusplus
│ │ │ │ +
25extern "C"
│ │ │ │ +
26{
│ │ │ │ +
27#endif
│ │ │ │ +
28#if 0
│ │ │ │ +
29}
│ │ │ │ +
30#endif
│ │ │ │ +
31
│ │ │ │ +
32/* login.c */
│ │ │ │ +
33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, unsigned char *clear_pass);
│ │ │ │ +
34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);
│ │ │ │ +
35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ +
36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ +
37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);
│ │ │ │ +
38
│ │ │ │ +
39/* query.c */
│ │ │ │ +
40char *tds_get_query(TDSSOCKET * tds);
│ │ │ │ +
41char *tds_get_generic_query(TDSSOCKET * tds);
│ │ │ │ +
42void tds_free_query(void);
│ │ │ │ +
43
│ │ │ │ +
44/* server.c */
│ │ │ │ +
45void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const char *newvalue);
│ │ │ │ +
46void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ +
47 const char *procname, int line);
│ │ │ │ +
48void tds_send_login_ack(TDSSOCKET * tds, const char *progname);
│ │ │ │ +
49void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ +
50 const char *procname, int line, const char *sqlstate);
│ │ │ │ +
51void tds_send_err(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
│ │ │ │ +
52 const char *procname, int line);
│ │ │ │ +
53void tds_send_capabilities_token(TDSSOCKET * tds);
│ │ │ │ +
54/* TODO remove, use tds_send_done */
│ │ │ │ +
55void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT numrows);
│ │ │ │ +
56void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT numrows);
│ │ │ │ +
57void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);
│ │ │ │ +
58TDSRET tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
│ │ │ │ +
59TDSRET tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
│ │ │ │ +
60void tds71_send_prelogin(TDSSOCKET * tds);
│ │ │ │ +
61
│ │ │ │ +
62#if 0
│ │ │ │ +
63{
│ │ │ │ +
64#endif
│ │ │ │ +
65#ifdef __cplusplus
│ │ │ │ +
66}
│ │ │ │ +
67#endif
│ │ │ │ +
Definition tds.h:498
│ │ │ │ +
Hold information for any results.
Definition tds.h:754
│ │ │ │ +
Definition tds.h:1015
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,167 +1,93 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -enum_cap.h │ │ │ │ │ -1typedef enum tds_request_capability │ │ │ │ │ -2 { TDS_REQ_LANG = 1 │ │ │ │ │ -3 , TDS_REQ_RPC = 2 │ │ │ │ │ -4 , TDS_REQ_EVT = 3 │ │ │ │ │ -5 , TDS_REQ_MSTMT = 4 │ │ │ │ │ -6 , TDS_REQ_BCP = 5 │ │ │ │ │ -7 , TDS_REQ_CURSOR = 6 │ │ │ │ │ -8 , TDS_REQ_DYNF = 7 │ │ │ │ │ -9 , TDS_REQ_MSG = 8 │ │ │ │ │ -10 , TDS_REQ_PARAM = 9 │ │ │ │ │ -11 , TDS_REQ_DATA_INT1 = 10 │ │ │ │ │ -12 , TDS_REQ_DATA_INT2 = 11 │ │ │ │ │ -13 , TDS_REQ_DATA_INT4 = 12 │ │ │ │ │ -14 , TDS_REQ_DATA_BIT = 13 │ │ │ │ │ -15 , TDS_REQ_DATA_CHAR = 14 │ │ │ │ │ -16 , TDS_REQ_DATA_VCHAR = 15 │ │ │ │ │ -17 , TDS_REQ_DATA_BIN = 16 │ │ │ │ │ -18 , TDS_REQ_DATA_VBIN = 17 │ │ │ │ │ -19 , TDS_REQ_DATA_MNY8 = 18 │ │ │ │ │ -20 , TDS_REQ_DATA_MNY4 = 19 │ │ │ │ │ -21 , TDS_REQ_DATA_DATE8 = 20 │ │ │ │ │ -22 , TDS_REQ_DATA_DATE4 = 21 │ │ │ │ │ -23 , TDS_REQ_DATA_FLT4 = 22 │ │ │ │ │ -24 , TDS_REQ_DATA_FLT8 = 23 │ │ │ │ │ -25 , TDS_REQ_DATA_NUM = 24 │ │ │ │ │ -26 , TDS_REQ_DATA_TEXT = 25 │ │ │ │ │ -27 , TDS_REQ_DATA_IMAGE = 26 │ │ │ │ │ -28 , TDS_REQ_DATA_DEC = 27 │ │ │ │ │ -29 , TDS_REQ_DATA_LCHAR = 28 │ │ │ │ │ -30 , TDS_REQ_DATA_LBIN = 29 │ │ │ │ │ -31 , TDS_REQ_DATA_INTN = 30 │ │ │ │ │ -32 , TDS_REQ_DATA_DATETIMEN = 31 │ │ │ │ │ -33 , TDS_REQ_DATA_MONEYN = 32 │ │ │ │ │ -34 , TDS_REQ_CSR_PREV = 33 │ │ │ │ │ -35 , TDS_REQ_CSR_FIRST = 34 │ │ │ │ │ -36 , TDS_REQ_CSR_LAST = 35 │ │ │ │ │ -37 , TDS_REQ_CSR_ABS = 36 │ │ │ │ │ -38 , TDS_REQ_CSR_REL = 37 │ │ │ │ │ -39 , TDS_REQ_CSR_MULTI = 38 │ │ │ │ │ -40 , TDS_REQ_CON_OOB = 39 │ │ │ │ │ -41 , TDS_REQ_CON_INBAND = 40 │ │ │ │ │ -42 , TDS_REQ_CON_LOGICAL = 41 │ │ │ │ │ -43 , TDS_REQ_PROTO_TEXT = 42 │ │ │ │ │ -44 , TDS_REQ_PROTO_BULK = 43 │ │ │ │ │ -45 , TDS_REQ_URGEVT = 44 │ │ │ │ │ -46 , TDS_REQ_DATA_SENSITIVITY = 45 │ │ │ │ │ -47 , TDS_REQ_DATA_BOUNDARY = 46 │ │ │ │ │ -48 , TDS_REQ_PROTO_DYNAMIC = 47 │ │ │ │ │ -49 , TDS_REQ_PROTO_DYNPROC = 48 │ │ │ │ │ -50 , TDS_REQ_DATA_FLTN = 49 │ │ │ │ │ -51 , TDS_REQ_DATA_BITN = 50 │ │ │ │ │ -52 , TDS_REQ_DATA_INT8 = 51 │ │ │ │ │ -53 , TDS_REQ_DATA_VOID = 52 │ │ │ │ │ -54 , TDS_REQ_DOL_BULK = 53 │ │ │ │ │ -55 , TDS_REQ_OBJECT_JAVA1 = 54 │ │ │ │ │ -56 , TDS_REQ_OBJECT_CHAR = 55 │ │ │ │ │ -57 , TDS_REQ_OBJECT_BINARY = 57 │ │ │ │ │ -58 , TDS_REQ_DATA_COLUMNSTATUS = 58 │ │ │ │ │ -59 , TDS_REQ_WIDETABLE = 59 │ │ │ │ │ -60 , TDS_REQ_DATA_UINT2 = 61 │ │ │ │ │ -61 , TDS_REQ_DATA_UINT4 = 62 │ │ │ │ │ -62 , TDS_REQ_DATA_UINT8 = 63 │ │ │ │ │ -63 , TDS_REQ_DATA_UINTN = 64 │ │ │ │ │ -64 , TDS_REQ_CUR_IMPLICIT = 65 │ │ │ │ │ -65 , TDS_REQ_DATA_NLBIN = 66 │ │ │ │ │ -66 , TDS_REQ_IMAGE_NCHAR = 67 │ │ │ │ │ -67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */ │ │ │ │ │ -68 , TDS_REQ_BLOB_NCHAR_8 = 69 │ │ │ │ │ -69 , TDS_REQ_BLOB_NCHAR_SCSU = 70 │ │ │ │ │ -70 , TDS_REQ_DATA_DATE = 71 │ │ │ │ │ -71 , TDS_REQ_DATA_TIME = 72 │ │ │ │ │ -72 , TDS_REQ_DATA_INTERVAL = 73 │ │ │ │ │ -73 , TDS_REQ_CSR_SCROLL = 74 │ │ │ │ │ -74 , TDS_REQ_CSR_SENSITIVE = 75 │ │ │ │ │ -75 , TDS_REQ_CSR_INSENSITIVE = 76 │ │ │ │ │ -76 , TDS_REQ_CSR_SEMISENSITIVE = 77 │ │ │ │ │ -77 , TDS_REQ_CSR_KEYSETDRIVEN = 78 │ │ │ │ │ -78 , TDS_REQ_SRVPKTSIZE = 79 │ │ │ │ │ -79 , TDS_REQ_DATA_UNITEXT = 80 │ │ │ │ │ -80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81 │ │ │ │ │ -81 , TDS_REQ_DATA_SINT1 = 82 │ │ │ │ │ -82 , TDS_REQ_LARGEIDENT = 83 │ │ │ │ │ -83 , TDS_REQ_BLOB_NCHAR_16 = 84 │ │ │ │ │ -84 , TDS_REQ_DATA_XML = 85 │ │ │ │ │ -85 , TDS_REQ_CURINFO3 = 86 │ │ │ │ │ -86 , TDS_REQ_DBRPC2 = 87 │ │ │ │ │ -87 , TDS_REQ_MIGRATE = 89 │ │ │ │ │ -88 , TDS_REQ_DATA_BIGDATETIME = 93 │ │ │ │ │ -89 , TDS_REQ_DATA_BIGTIME = 94 │ │ │ │ │ -90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */ │ │ │ │ │ -91 } TDS_REQUEST_CAPABILITY; │ │ │ │ │ -92 │ │ │ │ │ -93typedef enum tds_response_capability │ │ │ │ │ -94 { TDS_RES_NOMSG = 1 │ │ │ │ │ -95 , TDS_RES_NOEED = 2 │ │ │ │ │ -96 , TDS_RES_NOPARAM = 3 │ │ │ │ │ -97 , TDS_RES_DATA_NOINT1 = 4 │ │ │ │ │ -98 , TDS_RES_DATA_NOINT2 = 5 │ │ │ │ │ -99 , TDS_RES_DATA_NOINT4 = 6 │ │ │ │ │ -100 , TDS_RES_DATA_NOBIT = 7 │ │ │ │ │ -101 , TDS_RES_DATA_NOCHAR = 8 │ │ │ │ │ -102 , TDS_RES_DATA_NOVCHAR = 9 │ │ │ │ │ -103 , TDS_RES_DATA_NOBIN = 10 │ │ │ │ │ -104 , TDS_RES_DATA_NOVBIN = 11 │ │ │ │ │ -105 , TDS_RES_DATA_NOMNY8 = 12 │ │ │ │ │ -106 , TDS_RES_DATA_NOMNY4 = 13 │ │ │ │ │ -107 , TDS_RES_DATA_NODATE8 = 14 │ │ │ │ │ -108 , TDS_RES_DATA_NODATE4 = 15 │ │ │ │ │ -109 , TDS_RES_DATA_NOFLT4 = 16 │ │ │ │ │ -110 , TDS_RES_DATA_NOFLT8 = 17 │ │ │ │ │ -111 , TDS_RES_DATA_NONUM = 18 │ │ │ │ │ -112 , TDS_RES_DATA_NOTEXT = 19 │ │ │ │ │ -113 , TDS_RES_DATA_NOIMAGE = 20 │ │ │ │ │ -114 , TDS_RES_DATA_NODEC = 21 │ │ │ │ │ -115 , TDS_RES_DATA_NOLCHAR = 22 │ │ │ │ │ -116 , TDS_RES_DATA_NOLBIN = 23 │ │ │ │ │ -117 , TDS_RES_DATA_INTN = 24 │ │ │ │ │ -118 , TDS_RES_DATA_NODATETIMEN = 25 │ │ │ │ │ -119 , TDS_RES_DATA_NOMONEYN = 26 │ │ │ │ │ -120 , TDS_RES_CON_NOOOB = 27 │ │ │ │ │ -121 , TDS_RES_CON_NOINBAND = 28 │ │ │ │ │ -122 , TDS_RES_PROTO_NOTEXT = 29 │ │ │ │ │ -123 , TDS_RES_PROTO_NOBULK = 30 │ │ │ │ │ -124 , TDS_RES_DATA_NOSENSITIVITY = 31 │ │ │ │ │ -125 , TDS_RES_DATA_NOBOUNDARY = 32 │ │ │ │ │ -126 , TDS_RES_NOTDSDEBUG = 33 │ │ │ │ │ -127 , TDS_RES_NOSTRIPBLANKS = 34 │ │ │ │ │ -128 , TDS_RES_DATA_NOINT8 = 35 │ │ │ │ │ -129 , TDS_RES_OBJECT_NOJAVA1 = 36 │ │ │ │ │ -130 , TDS_RES_OBJECT_NOCHAR = 37 │ │ │ │ │ -131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38 │ │ │ │ │ -132 , TDS_RES_OBJECT_NOBINARY = 39 │ │ │ │ │ -133 , TDS_RES_DATA_NOUINT2 = 41 │ │ │ │ │ -134 , TDS_RES_DATA_NOUINT4 = 42 │ │ │ │ │ -135 , TDS_RES_DATA_NOUINT8 = 43 │ │ │ │ │ -136 , TDS_RES_DATA_NOUINTN = 44 │ │ │ │ │ -137 , TDS_RES_NO_WIDETABLES = 45 │ │ │ │ │ -138 , TDS_RES_DATA_NONLBIN = 46 │ │ │ │ │ -139 , TDS_RES_IMAGE_NONCHAR = 47 │ │ │ │ │ -140 , TDS_RES_BLOB_NONCHAR_16 = 48 │ │ │ │ │ -141 , TDS_RES_BLOB_NONCHAR_8 = 49 │ │ │ │ │ -142 , TDS_RES_BLOB_NONCHAR_SCSU = 50 │ │ │ │ │ -143 , TDS_RES_DATA_NODATE = 51 │ │ │ │ │ -144 , TDS_RES_DATA_NOTIME = 52 │ │ │ │ │ -145 , TDS_RES_DATA_NOINTERVAL = 53 │ │ │ │ │ -146 , TDS_RES_DATA_NOUNITEXT = 54 │ │ │ │ │ -147 , TDS_RES_DATA_NOSINT1 = 55 │ │ │ │ │ -148 , TDS_RES_NO_LARGEIDENT = 56 │ │ │ │ │ -149 , TDS_RES_NO_BLOB_NCHAR_16 = 57 │ │ │ │ │ -150 , TDS_RES_NO_SRVPKTSIZE = 58 │ │ │ │ │ -151 , TDS_RES_DATA_NOXML = 59 │ │ │ │ │ -152 , TDS_RES_NONINT_RETURN_VALUE = 60 │ │ │ │ │ -153 , TDS_RES_NOXNLDATA = 61 │ │ │ │ │ -154 , TDS_RES_SUPPRESS_FMT = 62 │ │ │ │ │ -155 , TDS_RES_SUPPRESS_DONEINPROC = 63 │ │ │ │ │ -156 , TDS_RES_FORCE_ROWFMT2 = 64 │ │ │ │ │ -157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */ │ │ │ │ │ -158 } TDS_RESPONSE_CAPABILITY; │ │ │ │ │ +server.h │ │ │ │ │ +1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ +3 * │ │ │ │ │ +4 * This library is free software; you can redistribute it and/or │ │ │ │ │ +5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +6 * License as published by the Free Software Foundation; either │ │ │ │ │ +7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +8 * │ │ │ │ │ +9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +12 * Library General Public License for more details. │ │ │ │ │ +13 * │ │ │ │ │ +14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +15 * License along with this library; if not, write to the │ │ │ │ │ +16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +17 * Boston, MA 02111-1307, USA. │ │ │ │ │ +18 */ │ │ │ │ │ +19 │ │ │ │ │ +20#ifndef _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_ │ │ │ │ │ +21#define _tdsguard_gt6cowOjOuyOf2Og3Ypj8u_ │ │ │ │ │ +22#endif │ │ │ │ │ +23 │ │ │ │ │ +24#ifdef __cplusplus │ │ │ │ │ +25extern "C" │ │ │ │ │ +26{ │ │ │ │ │ +27#endif │ │ │ │ │ +28#if 0 │ │ │ │ │ +29} │ │ │ │ │ +30#endif │ │ │ │ │ +31 │ │ │ │ │ +32/* login.c */ │ │ │ │ │ +33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, │ │ │ │ │ +unsigned char *clear_pass); │ │ │ │ │ +34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port); │ │ │ │ │ +35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ +36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ +37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds); │ │ │ │ │ +38 │ │ │ │ │ +39/* query.c */ │ │ │ │ │ +40char *tds_get_query(TDSSOCKET * tds); │ │ │ │ │ +41char *tds_get_generic_query(TDSSOCKET * tds); │ │ │ │ │ +42void tds_free_query(void); │ │ │ │ │ +43 │ │ │ │ │ +44/* server.c */ │ │ │ │ │ +45void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const │ │ │ │ │ +char *newvalue); │ │ │ │ │ +46void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ +const char *msgtext, const char *srvname, │ │ │ │ │ +47 const char *procname, int line); │ │ │ │ │ +48void tds_send_login_ack(TDSSOCKET * tds, const char *progname); │ │ │ │ │ +49void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ +const char *msgtext, const char *srvname, │ │ │ │ │ +50 const char *procname, int line, const char *sqlstate); │ │ │ │ │ +51void tds_send_err(TDSSOCKET * tds, int msgno, int msgstate, int severity, │ │ │ │ │ +const char *msgtext, const char *srvname, │ │ │ │ │ +52 const char *procname, int line); │ │ │ │ │ +53void tds_send_capabilities_token(TDSSOCKET * tds); │ │ │ │ │ +54/* TODO remove, use tds_send_done */ │ │ │ │ │ +55void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT │ │ │ │ │ +numrows); │ │ │ │ │ +56void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT │ │ │ │ │ +numrows); │ │ │ │ │ +57void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols); │ │ │ │ │ +58TDSRET tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo); │ │ │ │ │ +59TDSRET tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo); │ │ │ │ │ +60void tds71_send_prelogin(TDSSOCKET * tds); │ │ │ │ │ +61 │ │ │ │ │ +62#if 0 │ │ │ │ │ +63{ │ │ │ │ │ +64#endif │ │ │ │ │ +65#ifdef __cplusplus │ │ │ │ │ +66} │ │ │ │ │ +67#endif │ │ │ │ │ +tds_login │ │ │ │ │ +Definition tds.h:498 │ │ │ │ │ +tds_result_info │ │ │ │ │ +Hold information for any results. │ │ │ │ │ +Definition tds.h:754 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00512_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/freetds/bytes.h Source File │ │ │ │ +FreeTDS API: include/freetds/enum_cap.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,340 +74,175 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
bytes.h
│ │ │ │ +
enum_cap.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2005-2008 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _tdsguard_eO1lgptMUEXAnSnm4l3QiK_
│ │ │ │ -
21#define _tdsguard_eO1lgptMUEXAnSnm4l3QiK_
│ │ │ │ -
22
│ │ │ │ -
23/*
│ │ │ │ -
24 * read a word of n bytes aligned, architecture dependent endian
│ │ │ │ -
25 * TDS_GET_An
│ │ │ │ -
26 * read a word of n bytes aligned, little endian
│ │ │ │ -
27 * TDS_GET_AnLE
│ │ │ │ -
28 * read a word of n bytes aligned, big endian
│ │ │ │ -
29 * TDS_GET_AnBE
│ │ │ │ -
30 * read a word of n bytes unaligned, architecture dependent endian
│ │ │ │ -
31 * TDS_GET_UAn
│ │ │ │ -
32 * read a word of n bytes unaligned, little endian
│ │ │ │ -
33 * TDS_GET_UAnLE
│ │ │ │ -
34 * read a word of n bytes unaligned, big endian
│ │ │ │ -
35 * TDS_GET_UAnBE
│ │ │ │ -
36 */
│ │ │ │ -
37
│ │ │ │ -
38/* one byte, easy... */
│ │ │ │ -
39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])
│ │ │ │ -
40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ -
41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ -
42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ -
43
│ │ │ │ -
44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)
│ │ │ │ -
45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ -
46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ -
47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ -
48
│ │ │ │ -
49/* two bytes */
│ │ │ │ -
50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
│ │ │ │ -
51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)(ptr))[1])
│ │ │ │ -
52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)
│ │ │ │ -
53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)
│ │ │ │ -
54
│ │ │ │ -
55#define TDS_PUT_UA2LE(ptr,val) do {\
│ │ │ │ -
56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
│ │ │ │ -
57#define TDS_PUT_UA2BE(ptr,val) do {\
│ │ │ │ -
58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_t)(val); } while(0)
│ │ │ │ -
59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)
│ │ │ │ -
60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)
│ │ │ │ -
61
│ │ │ │ -
62/* four bytes */
│ │ │ │ -
63#define TDS_GET_UA4LE(ptr) \
│ │ │ │ -
64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\
│ │ │ │ -
65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
│ │ │ │ -
66#define TDS_GET_UA4BE(ptr) \
│ │ │ │ -
67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\
│ │ │ │ -
68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])
│ │ │ │ -
69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)
│ │ │ │ -
70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)
│ │ │ │ -
71
│ │ │ │ -
72#define TDS_PUT_UA4LE(ptr,val) do {\
│ │ │ │ -
73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>16);\
│ │ │ │ -
74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
│ │ │ │ -
75#define TDS_PUT_UA4BE(ptr,val) do {\
│ │ │ │ -
76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>16);\
│ │ │ │ -
77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_t)(val); } while(0)
│ │ │ │ -
78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)
│ │ │ │ -
79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)
│ │ │ │ -
80
│ │ │ │ -
81#if defined(__GNUC__)
│ │ │ │ -
82# define TDS_MAY_ALIAS __attribute__((__may_alias__))
│ │ │ │ -
83#else
│ │ │ │ -
84# define TDS_MAY_ALIAS
│ │ │ │ -
85#endif
│ │ │ │ -
86
│ │ │ │ -
│ │ │ │ -
87typedef union {
│ │ │ │ -
88 uint16_t usi;
│ │ │ │ -
89 uint8_t uc[2];
│ │ │ │ -
90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;
│ │ │ │ -
│ │ │ │ -
91
│ │ │ │ -
92typedef union {
│ │ │ │ -
93 uint32_t ui;
│ │ │ │ -
94 uint8_t uc[4];
│ │ │ │ -
95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;
│ │ │ │ -
96
│ │ │ │ -
97/* architecture dependent */
│ │ │ │ -
98/* map to generic macros or redefine for aligned and same endianess */
│ │ │ │ -
99#ifdef WORDS_BIGENDIAN
│ │ │ │ -
100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)
│ │ │ │ -
101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)
│ │ │ │ -
102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)
│ │ │ │ -
103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)
│ │ │ │ -
104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)
│ │ │ │ -
105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)
│ │ │ │ -
106# undef TDS_GET_A2BE
│ │ │ │ -
107# undef TDS_GET_A4BE
│ │ │ │ -
108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ -
109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ -
110
│ │ │ │ -
111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)
│ │ │ │ -
112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)
│ │ │ │ -
113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)
│ │ │ │ -
114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)
│ │ │ │ -
115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)
│ │ │ │ -
116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)
│ │ │ │ -
117# undef TDS_PUT_A2BE
│ │ │ │ -
118# undef TDS_PUT_A4BE
│ │ │ │ -
119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ -
120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ -
121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)
│ │ │ │ -
122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)
│ │ │ │ -
123# define TDS_HOST2BE(val) (val)
│ │ │ │ -
124# define TDS_HOST4BE(val) (val)
│ │ │ │ -
125#else
│ │ │ │ -
126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)
│ │ │ │ -
127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)
│ │ │ │ -
128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)
│ │ │ │ -
129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)
│ │ │ │ -
130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)
│ │ │ │ -
131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)
│ │ │ │ -
132# undef TDS_GET_A2LE
│ │ │ │ -
133# undef TDS_GET_A4LE
│ │ │ │ -
134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ -
135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ -
136
│ │ │ │ -
137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)
│ │ │ │ -
138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)
│ │ │ │ -
139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)
│ │ │ │ -
140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)
│ │ │ │ -
141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)
│ │ │ │ -
142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)
│ │ │ │ -
143# undef TDS_PUT_A2LE
│ │ │ │ -
144# undef TDS_PUT_A4LE
│ │ │ │ -
145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ -
146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ -
147# define TDS_HOST2LE(val) (val)
│ │ │ │ -
148# define TDS_HOST4LE(val) (val)
│ │ │ │ -
149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)
│ │ │ │ -
150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)
│ │ │ │ -
151#endif
│ │ │ │ -
152
│ │ │ │ -
153#if defined(__GNUC__) || defined(_MSC_VER)
│ │ │ │ -
154# if defined(__MINGW32__)
│ │ │ │ -
155# pragma pack(push,1)
│ │ │ │ -
156# elif defined(_MSC_VER)
│ │ │ │ -
157# pragma pack(push)
│ │ │ │ -
158# pragma pack(1)
│ │ │ │ -
159# endif
│ │ │ │ -
160
│ │ │ │ -
161# if defined(__GNUC__)
│ │ │ │ -
162# define TDS_PACKED __attribute__((__packed__))
│ │ │ │ -
163# else
│ │ │ │ -
164# define TDS_PACKED
│ │ │ │ -
165# endif
│ │ │ │ -
166
│ │ │ │ -
167typedef union TDS_PACKED
│ │ │ │ -
168{
│ │ │ │ -
169 uint16_t usi;
│ │ │ │ -
170 uint8_t uc[2];
│ │ │ │ -
171} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT2;
│ │ │ │ -
172
│ │ │ │ -
173typedef union TDS_PACKED
│ │ │ │ -
174{
│ │ │ │ -
175 uint32_t ui;
│ │ │ │ -
176 uint8_t uc[4];
│ │ │ │ -
177} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT4;
│ │ │ │ -
178
│ │ │ │ -
179# ifdef WORDS_BIGENDIAN
│ │ │ │ -
180# undef TDS_GET_UA2BE
│ │ │ │ -
181# undef TDS_GET_UA4BE
│ │ │ │ -
182# define TDS_GET_UA2BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ -
183# define TDS_GET_UA4BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ -
184
│ │ │ │ -
185# undef TDS_PUT_UA2BE
│ │ │ │ -
186# undef TDS_PUT_UA4BE
│ │ │ │ -
187# define TDS_PUT_UA2BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ -
188# define TDS_PUT_UA4BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ -
189# else
│ │ │ │ -
190# undef TDS_GET_UA2LE
│ │ │ │ -
191# undef TDS_GET_UA4LE
│ │ │ │ -
192# define TDS_GET_UA2LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi)
│ │ │ │ -
193# define TDS_GET_UA4LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui)
│ │ │ │ -
194
│ │ │ │ -
195# undef TDS_PUT_UA2LE
│ │ │ │ -
196# undef TDS_PUT_UA4LE
│ │ │ │ -
197# define TDS_PUT_UA2LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi = (val))
│ │ │ │ -
198# define TDS_PUT_UA4LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = (val))
│ │ │ │ -
199# endif
│ │ │ │ -
200
│ │ │ │ -
201# if defined(__MINGW32__) || defined(_MSC_VER)
│ │ │ │ -
202# pragma pack(pop)
│ │ │ │ -
203# endif
│ │ │ │ -
204
│ │ │ │ -
205#else
│ │ │ │ -
206
│ │ │ │ -
207/* these platform support unaligned fetch/store */
│ │ │ │ -
208/* map unaligned macro to aligned ones */
│ │ │ │ -
209# if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\
│ │ │ │ -
210 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\
│ │ │ │ -
211 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\
│ │ │ │ -
212 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_X64))) ||\
│ │ │ │ -
213 defined(__ARM_FEATURE_UNALIGNED) ||\
│ │ │ │ -
214 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\
│ │ │ │ -
215 (defined(_M_ARM) && (_M_ARM >= 7))
│ │ │ │ -
216# ifdef WORDS_BIGENDIAN
│ │ │ │ -
217# undef TDS_GET_UA2BE
│ │ │ │ -
218# undef TDS_GET_UA4BE
│ │ │ │ -
219# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)
│ │ │ │ -
220# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)
│ │ │ │ -
221
│ │ │ │ -
222# undef TDS_PUT_UA2BE
│ │ │ │ -
223# undef TDS_PUT_UA4BE
│ │ │ │ -
224# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)
│ │ │ │ -
225# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)
│ │ │ │ -
226# else
│ │ │ │ -
227# undef TDS_GET_UA2LE
│ │ │ │ -
228# undef TDS_GET_UA4LE
│ │ │ │ -
229# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)
│ │ │ │ -
230# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)
│ │ │ │ -
231
│ │ │ │ -
232# undef TDS_PUT_UA2LE
│ │ │ │ -
233# undef TDS_PUT_UA4LE
│ │ │ │ -
234# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)
│ │ │ │ -
235# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)
│ │ │ │ -
236# endif
│ │ │ │ -
237# endif
│ │ │ │ -
238
│ │ │ │ -
239#endif
│ │ │ │ -
240
│ │ │ │ -
241#undef TDS_BSWAP16
│ │ │ │ -
242#undef TDS_BSWAP32
│ │ │ │ -
243/* __builtin_bswap16 was introduced in GCC 4.8 */
│ │ │ │ -
244#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && defined(__OPTIMIZE__)
│ │ │ │ -
245# define TDS_BSWAP16(val) __builtin_bswap16(val)
│ │ │ │ -
246# define TDS_BSWAP32(val) __builtin_bswap32(val)
│ │ │ │ -
247/* __builtin_bswap32 was introduced in GCC 4.3 */
│ │ │ │ -
248#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)
│ │ │ │ -
249# define TDS_BSWAP32(val) __builtin_bswap32(val)
│ │ │ │ -
250#elif defined(_MSC_VER)
│ │ │ │ -
251# include <stdlib.h>
│ │ │ │ -
252# define TDS_BSWAP16(val) _byteswap_ushort(val)
│ │ │ │ -
253# define TDS_BSWAP32(val) _byteswap_ulong(val)
│ │ │ │ -
254#endif
│ │ │ │ -
255
│ │ │ │ -
256#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)
│ │ │ │ -
257# undef TDS_GET_UA2BE
│ │ │ │ -
258# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))
│ │ │ │ -
259
│ │ │ │ -
260# undef TDS_PUT_UA2BE
│ │ │ │ -
261# define TDS_PUT_UA2BE(ptr,val) do {\
│ │ │ │ -
262 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0)
│ │ │ │ -
263#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)
│ │ │ │ -
264# undef TDS_GET_UA2LE
│ │ │ │ -
265# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))
│ │ │ │ -
266
│ │ │ │ -
267# undef TDS_PUT_UA2LE
│ │ │ │ -
268# define TDS_PUT_UA2LE(ptr,val) do {\
│ │ │ │ -
269 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0)
│ │ │ │ -
270#endif
│ │ │ │ -
271
│ │ │ │ -
272#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)
│ │ │ │ -
273# undef TDS_GET_UA4BE
│ │ │ │ -
274# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))
│ │ │ │ -
275
│ │ │ │ -
276# undef TDS_PUT_UA4BE
│ │ │ │ -
277# define TDS_PUT_UA4BE(ptr,val) do {\
│ │ │ │ -
278 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)
│ │ │ │ -
279#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)
│ │ │ │ -
280# undef TDS_GET_UA4LE
│ │ │ │ -
281# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))
│ │ │ │ -
282
│ │ │ │ -
283# undef TDS_PUT_UA4LE
│ │ │ │ -
284# define TDS_PUT_UA4LE(ptr,val) do {\
│ │ │ │ -
285 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)
│ │ │ │ -
286#endif
│ │ │ │ -
287
│ │ │ │ -
288#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)
│ │ │ │ -
289# undef TDS_GET_UA2LE
│ │ │ │ -
290# undef TDS_GET_UA4LE
│ │ │ │ -
291static inline uint16_t
│ │ │ │ -
292TDS_GET_UA2LE(void *ptr)
│ │ │ │ -
293{
│ │ │ │ -
294 unsigned long res;
│ │ │ │ -
295 __asm__ ("lhbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_t *)ptr));
│ │ │ │ -
296 return (uint16_t) res;
│ │ │ │ -
297}
│ │ │ │ -
298static inline uint32_t
│ │ │ │ -
299TDS_GET_UA4LE(void *ptr)
│ │ │ │ -
300{
│ │ │ │ -
301 unsigned long res;
│ │ │ │ -
302 __asm__ ("lwbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_t *)ptr));
│ │ │ │ -
303 return (uint32_t) res;
│ │ │ │ -
304}
│ │ │ │ -
305
│ │ │ │ -
306# undef TDS_PUT_UA2LE
│ │ │ │ -
307# undef TDS_PUT_UA4LE
│ │ │ │ -
308static inline void
│ │ │ │ -
309TDS_PUT_UA2LE(void *ptr, unsigned data)
│ │ │ │ -
310{
│ │ │ │ -
311 __asm__ ("sthbrx %1,0,%2\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" (ptr));
│ │ │ │ -
312}
│ │ │ │ -
313static inline void
│ │ │ │ -
314TDS_PUT_UA4LE(void *ptr, unsigned data)
│ │ │ │ -
315{
│ │ │ │ -
316 __asm__ ("stwbrx %1,0,%2\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" (ptr));
│ │ │ │ -
317}
│ │ │ │ -
318#endif
│ │ │ │ -
319
│ │ │ │ -
320#endif
│ │ │ │ -
Definition bytes.h:87
│ │ │ │ +
1typedef enum tds_request_capability
│ │ │ │ +
2 { TDS_REQ_LANG = 1
│ │ │ │ +
3 , TDS_REQ_RPC = 2
│ │ │ │ +
4 , TDS_REQ_EVT = 3
│ │ │ │ +
5 , TDS_REQ_MSTMT = 4
│ │ │ │ +
6 , TDS_REQ_BCP = 5
│ │ │ │ +
7 , TDS_REQ_CURSOR = 6
│ │ │ │ +
8 , TDS_REQ_DYNF = 7
│ │ │ │ +
9 , TDS_REQ_MSG = 8
│ │ │ │ +
10 , TDS_REQ_PARAM = 9
│ │ │ │ +
11 , TDS_REQ_DATA_INT1 = 10
│ │ │ │ +
12 , TDS_REQ_DATA_INT2 = 11
│ │ │ │ +
13 , TDS_REQ_DATA_INT4 = 12
│ │ │ │ +
14 , TDS_REQ_DATA_BIT = 13
│ │ │ │ +
15 , TDS_REQ_DATA_CHAR = 14
│ │ │ │ +
16 , TDS_REQ_DATA_VCHAR = 15
│ │ │ │ +
17 , TDS_REQ_DATA_BIN = 16
│ │ │ │ +
18 , TDS_REQ_DATA_VBIN = 17
│ │ │ │ +
19 , TDS_REQ_DATA_MNY8 = 18
│ │ │ │ +
20 , TDS_REQ_DATA_MNY4 = 19
│ │ │ │ +
21 , TDS_REQ_DATA_DATE8 = 20
│ │ │ │ +
22 , TDS_REQ_DATA_DATE4 = 21
│ │ │ │ +
23 , TDS_REQ_DATA_FLT4 = 22
│ │ │ │ +
24 , TDS_REQ_DATA_FLT8 = 23
│ │ │ │ +
25 , TDS_REQ_DATA_NUM = 24
│ │ │ │ +
26 , TDS_REQ_DATA_TEXT = 25
│ │ │ │ +
27 , TDS_REQ_DATA_IMAGE = 26
│ │ │ │ +
28 , TDS_REQ_DATA_DEC = 27
│ │ │ │ +
29 , TDS_REQ_DATA_LCHAR = 28
│ │ │ │ +
30 , TDS_REQ_DATA_LBIN = 29
│ │ │ │ +
31 , TDS_REQ_DATA_INTN = 30
│ │ │ │ +
32 , TDS_REQ_DATA_DATETIMEN = 31
│ │ │ │ +
33 , TDS_REQ_DATA_MONEYN = 32
│ │ │ │ +
34 , TDS_REQ_CSR_PREV = 33
│ │ │ │ +
35 , TDS_REQ_CSR_FIRST = 34
│ │ │ │ +
36 , TDS_REQ_CSR_LAST = 35
│ │ │ │ +
37 , TDS_REQ_CSR_ABS = 36
│ │ │ │ +
38 , TDS_REQ_CSR_REL = 37
│ │ │ │ +
39 , TDS_REQ_CSR_MULTI = 38
│ │ │ │ +
40 , TDS_REQ_CON_OOB = 39
│ │ │ │ +
41 , TDS_REQ_CON_INBAND = 40
│ │ │ │ +
42 , TDS_REQ_CON_LOGICAL = 41
│ │ │ │ +
43 , TDS_REQ_PROTO_TEXT = 42
│ │ │ │ +
44 , TDS_REQ_PROTO_BULK = 43
│ │ │ │ +
45 , TDS_REQ_URGEVT = 44
│ │ │ │ +
46 , TDS_REQ_DATA_SENSITIVITY = 45
│ │ │ │ +
47 , TDS_REQ_DATA_BOUNDARY = 46
│ │ │ │ +
48 , TDS_REQ_PROTO_DYNAMIC = 47
│ │ │ │ +
49 , TDS_REQ_PROTO_DYNPROC = 48
│ │ │ │ +
50 , TDS_REQ_DATA_FLTN = 49
│ │ │ │ +
51 , TDS_REQ_DATA_BITN = 50
│ │ │ │ +
52 , TDS_REQ_DATA_INT8 = 51
│ │ │ │ +
53 , TDS_REQ_DATA_VOID = 52
│ │ │ │ +
54 , TDS_REQ_DOL_BULK = 53
│ │ │ │ +
55 , TDS_REQ_OBJECT_JAVA1 = 54
│ │ │ │ +
56 , TDS_REQ_OBJECT_CHAR = 55
│ │ │ │ +
57 , TDS_REQ_OBJECT_BINARY = 57
│ │ │ │ +
58 , TDS_REQ_DATA_COLUMNSTATUS = 58
│ │ │ │ +
59 , TDS_REQ_WIDETABLE = 59
│ │ │ │ +
60 , TDS_REQ_DATA_UINT2 = 61
│ │ │ │ +
61 , TDS_REQ_DATA_UINT4 = 62
│ │ │ │ +
62 , TDS_REQ_DATA_UINT8 = 63
│ │ │ │ +
63 , TDS_REQ_DATA_UINTN = 64
│ │ │ │ +
64 , TDS_REQ_CUR_IMPLICIT = 65
│ │ │ │ +
65 , TDS_REQ_DATA_NLBIN = 66
│ │ │ │ +
66 , TDS_REQ_IMAGE_NCHAR = 67
│ │ │ │ +
67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */
│ │ │ │ +
68 , TDS_REQ_BLOB_NCHAR_8 = 69
│ │ │ │ +
69 , TDS_REQ_BLOB_NCHAR_SCSU = 70
│ │ │ │ +
70 , TDS_REQ_DATA_DATE = 71
│ │ │ │ +
71 , TDS_REQ_DATA_TIME = 72
│ │ │ │ +
72 , TDS_REQ_DATA_INTERVAL = 73
│ │ │ │ +
73 , TDS_REQ_CSR_SCROLL = 74
│ │ │ │ +
74 , TDS_REQ_CSR_SENSITIVE = 75
│ │ │ │ +
75 , TDS_REQ_CSR_INSENSITIVE = 76
│ │ │ │ +
76 , TDS_REQ_CSR_SEMISENSITIVE = 77
│ │ │ │ +
77 , TDS_REQ_CSR_KEYSETDRIVEN = 78
│ │ │ │ +
78 , TDS_REQ_SRVPKTSIZE = 79
│ │ │ │ +
79 , TDS_REQ_DATA_UNITEXT = 80
│ │ │ │ +
80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81
│ │ │ │ +
81 , TDS_REQ_DATA_SINT1 = 82
│ │ │ │ +
82 , TDS_REQ_LARGEIDENT = 83
│ │ │ │ +
83 , TDS_REQ_BLOB_NCHAR_16 = 84
│ │ │ │ +
84 , TDS_REQ_DATA_XML = 85
│ │ │ │ +
85 , TDS_REQ_CURINFO3 = 86
│ │ │ │ +
86 , TDS_REQ_DBRPC2 = 87
│ │ │ │ +
87 , TDS_REQ_MIGRATE = 89
│ │ │ │ +
88 , TDS_REQ_DATA_BIGDATETIME = 93
│ │ │ │ +
89 , TDS_REQ_DATA_BIGTIME = 94
│ │ │ │ +
90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */
│ │ │ │ +
91 } TDS_REQUEST_CAPABILITY;
│ │ │ │ +
92
│ │ │ │ +
93typedef enum tds_response_capability
│ │ │ │ +
94 { TDS_RES_NOMSG = 1
│ │ │ │ +
95 , TDS_RES_NOEED = 2
│ │ │ │ +
96 , TDS_RES_NOPARAM = 3
│ │ │ │ +
97 , TDS_RES_DATA_NOINT1 = 4
│ │ │ │ +
98 , TDS_RES_DATA_NOINT2 = 5
│ │ │ │ +
99 , TDS_RES_DATA_NOINT4 = 6
│ │ │ │ +
100 , TDS_RES_DATA_NOBIT = 7
│ │ │ │ +
101 , TDS_RES_DATA_NOCHAR = 8
│ │ │ │ +
102 , TDS_RES_DATA_NOVCHAR = 9
│ │ │ │ +
103 , TDS_RES_DATA_NOBIN = 10
│ │ │ │ +
104 , TDS_RES_DATA_NOVBIN = 11
│ │ │ │ +
105 , TDS_RES_DATA_NOMNY8 = 12
│ │ │ │ +
106 , TDS_RES_DATA_NOMNY4 = 13
│ │ │ │ +
107 , TDS_RES_DATA_NODATE8 = 14
│ │ │ │ +
108 , TDS_RES_DATA_NODATE4 = 15
│ │ │ │ +
109 , TDS_RES_DATA_NOFLT4 = 16
│ │ │ │ +
110 , TDS_RES_DATA_NOFLT8 = 17
│ │ │ │ +
111 , TDS_RES_DATA_NONUM = 18
│ │ │ │ +
112 , TDS_RES_DATA_NOTEXT = 19
│ │ │ │ +
113 , TDS_RES_DATA_NOIMAGE = 20
│ │ │ │ +
114 , TDS_RES_DATA_NODEC = 21
│ │ │ │ +
115 , TDS_RES_DATA_NOLCHAR = 22
│ │ │ │ +
116 , TDS_RES_DATA_NOLBIN = 23
│ │ │ │ +
117 , TDS_RES_DATA_INTN = 24
│ │ │ │ +
118 , TDS_RES_DATA_NODATETIMEN = 25
│ │ │ │ +
119 , TDS_RES_DATA_NOMONEYN = 26
│ │ │ │ +
120 , TDS_RES_CON_NOOOB = 27
│ │ │ │ +
121 , TDS_RES_CON_NOINBAND = 28
│ │ │ │ +
122 , TDS_RES_PROTO_NOTEXT = 29
│ │ │ │ +
123 , TDS_RES_PROTO_NOBULK = 30
│ │ │ │ +
124 , TDS_RES_DATA_NOSENSITIVITY = 31
│ │ │ │ +
125 , TDS_RES_DATA_NOBOUNDARY = 32
│ │ │ │ +
126 , TDS_RES_NOTDSDEBUG = 33
│ │ │ │ +
127 , TDS_RES_NOSTRIPBLANKS = 34
│ │ │ │ +
128 , TDS_RES_DATA_NOINT8 = 35
│ │ │ │ +
129 , TDS_RES_OBJECT_NOJAVA1 = 36
│ │ │ │ +
130 , TDS_RES_OBJECT_NOCHAR = 37
│ │ │ │ +
131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38
│ │ │ │ +
132 , TDS_RES_OBJECT_NOBINARY = 39
│ │ │ │ +
133 , TDS_RES_DATA_NOUINT2 = 41
│ │ │ │ +
134 , TDS_RES_DATA_NOUINT4 = 42
│ │ │ │ +
135 , TDS_RES_DATA_NOUINT8 = 43
│ │ │ │ +
136 , TDS_RES_DATA_NOUINTN = 44
│ │ │ │ +
137 , TDS_RES_NO_WIDETABLES = 45
│ │ │ │ +
138 , TDS_RES_DATA_NONLBIN = 46
│ │ │ │ +
139 , TDS_RES_IMAGE_NONCHAR = 47
│ │ │ │ +
140 , TDS_RES_BLOB_NONCHAR_16 = 48
│ │ │ │ +
141 , TDS_RES_BLOB_NONCHAR_8 = 49
│ │ │ │ +
142 , TDS_RES_BLOB_NONCHAR_SCSU = 50
│ │ │ │ +
143 , TDS_RES_DATA_NODATE = 51
│ │ │ │ +
144 , TDS_RES_DATA_NOTIME = 52
│ │ │ │ +
145 , TDS_RES_DATA_NOINTERVAL = 53
│ │ │ │ +
146 , TDS_RES_DATA_NOUNITEXT = 54
│ │ │ │ +
147 , TDS_RES_DATA_NOSINT1 = 55
│ │ │ │ +
148 , TDS_RES_NO_LARGEIDENT = 56
│ │ │ │ +
149 , TDS_RES_NO_BLOB_NCHAR_16 = 57
│ │ │ │ +
150 , TDS_RES_NO_SRVPKTSIZE = 58
│ │ │ │ +
151 , TDS_RES_DATA_NOXML = 59
│ │ │ │ +
152 , TDS_RES_NONINT_RETURN_VALUE = 60
│ │ │ │ +
153 , TDS_RES_NOXNLDATA = 61
│ │ │ │ +
154 , TDS_RES_SUPPRESS_FMT = 62
│ │ │ │ +
155 , TDS_RES_SUPPRESS_DONEINPROC = 63
│ │ │ │ +
156 , TDS_RES_FORCE_ROWFMT2 = 64
│ │ │ │ +
157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */
│ │ │ │ +
158 } TDS_RESPONSE_CAPABILITY;
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,351 +1,167 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ * freetds │ │ │ │ │ -bytes.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2005-2008 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _tdsguard_eO1lgptMUEXAnSnm4l3QiK_ │ │ │ │ │ -21#define _tdsguard_eO1lgptMUEXAnSnm4l3QiK_ │ │ │ │ │ -22 │ │ │ │ │ -23/* │ │ │ │ │ -24 * read a word of n bytes aligned, architecture dependent endian │ │ │ │ │ -25 * TDS_GET_An │ │ │ │ │ -26 * read a word of n bytes aligned, little endian │ │ │ │ │ -27 * TDS_GET_AnLE │ │ │ │ │ -28 * read a word of n bytes aligned, big endian │ │ │ │ │ -29 * TDS_GET_AnBE │ │ │ │ │ -30 * read a word of n bytes unaligned, architecture dependent endian │ │ │ │ │ -31 * TDS_GET_UAn │ │ │ │ │ -32 * read a word of n bytes unaligned, little endian │ │ │ │ │ -33 * TDS_GET_UAnLE │ │ │ │ │ -34 * read a word of n bytes unaligned, big endian │ │ │ │ │ -35 * TDS_GET_UAnBE │ │ │ │ │ -36 */ │ │ │ │ │ -37 │ │ │ │ │ -38/* one byte, easy... */ │ │ │ │ │ -39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0]) │ │ │ │ │ -40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ -41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ -42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ -43 │ │ │ │ │ -44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0) │ │ │ │ │ -45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ -46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ -47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ -48 │ │ │ │ │ -49/* two bytes */ │ │ │ │ │ -50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *) │ │ │ │ │ -(ptr))[0]) │ │ │ │ │ -51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *) │ │ │ │ │ -(ptr))[1]) │ │ │ │ │ -52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr) │ │ │ │ │ -53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr) │ │ │ │ │ -54 │ │ │ │ │ -55#define TDS_PUT_UA2LE(ptr,val) do {\ │ │ │ │ │ -56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_ │ │ │ │ │ -t)(val); } while(0) │ │ │ │ │ -57#define TDS_PUT_UA2BE(ptr,val) do {\ │ │ │ │ │ -58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_ │ │ │ │ │ -t)(val); } while(0) │ │ │ │ │ -59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val) │ │ │ │ │ -60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val) │ │ │ │ │ -61 │ │ │ │ │ -62/* four bytes */ │ │ │ │ │ -63#define TDS_GET_UA4LE(ptr) \ │ │ │ │ │ -64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\ │ │ │ │ │ -65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0]) │ │ │ │ │ -66#define TDS_GET_UA4BE(ptr) \ │ │ │ │ │ -67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\ │ │ │ │ │ -68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3]) │ │ │ │ │ -69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr) │ │ │ │ │ -70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr) │ │ │ │ │ -71 │ │ │ │ │ -72#define TDS_PUT_UA4LE(ptr,val) do {\ │ │ │ │ │ -73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = │ │ │ │ │ -(uint8_t)((val)>>16);\ │ │ │ │ │ -74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_ │ │ │ │ │ -t)(val); } while(0) │ │ │ │ │ -75#define TDS_PUT_UA4BE(ptr,val) do {\ │ │ │ │ │ -76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = │ │ │ │ │ -(uint8_t)((val)>>16);\ │ │ │ │ │ -77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_ │ │ │ │ │ -t)(val); } while(0) │ │ │ │ │ -78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val) │ │ │ │ │ -79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val) │ │ │ │ │ -80 │ │ │ │ │ -81#if defined(__GNUC__) │ │ │ │ │ -82# define TDS_MAY_ALIAS __attribute__((__may_alias__)) │ │ │ │ │ -83#else │ │ │ │ │ -84# define TDS_MAY_ALIAS │ │ │ │ │ -85#endif │ │ │ │ │ -86 │ │ │ │ │ -87typedef union { │ │ │ │ │ -88 uint16_t usi; │ │ │ │ │ -89 uint8_t uc[2]; │ │ │ │ │ -90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2; │ │ │ │ │ -91 │ │ │ │ │ -92typedef union { │ │ │ │ │ -93 uint32_t ui; │ │ │ │ │ -94 uint8_t uc[4]; │ │ │ │ │ -95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4; │ │ │ │ │ -96 │ │ │ │ │ -97/* architecture dependent */ │ │ │ │ │ -98/* map to generic macros or redefine for aligned and same endianess */ │ │ │ │ │ -99#ifdef WORDS_BIGENDIAN │ │ │ │ │ -100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr) │ │ │ │ │ -101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr) │ │ │ │ │ -102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr) │ │ │ │ │ -103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr) │ │ │ │ │ -104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr) │ │ │ │ │ -105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr) │ │ │ │ │ -106# undef TDS_GET_A2BE │ │ │ │ │ -107# undef TDS_GET_A4BE │ │ │ │ │ -108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ -109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ -110 │ │ │ │ │ -111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val) │ │ │ │ │ -112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val) │ │ │ │ │ -113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val) │ │ │ │ │ -114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val) │ │ │ │ │ -115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val) │ │ │ │ │ -116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val) │ │ │ │ │ -117# undef TDS_PUT_A2BE │ │ │ │ │ -118# undef TDS_PUT_A4BE │ │ │ │ │ -119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) │ │ │ │ │ -120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) │ │ │ │ │ -121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val) │ │ │ │ │ -122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val) │ │ │ │ │ -123# define TDS_HOST2BE(val) (val) │ │ │ │ │ -124# define TDS_HOST4BE(val) (val) │ │ │ │ │ -125#else │ │ │ │ │ -126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr) │ │ │ │ │ -127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr) │ │ │ │ │ -128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr) │ │ │ │ │ -129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr) │ │ │ │ │ -130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr) │ │ │ │ │ -131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr) │ │ │ │ │ -132# undef TDS_GET_A2LE │ │ │ │ │ -133# undef TDS_GET_A4LE │ │ │ │ │ -134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ -135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ -136 │ │ │ │ │ -137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val) │ │ │ │ │ -138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val) │ │ │ │ │ -139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val) │ │ │ │ │ -140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val) │ │ │ │ │ -141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val) │ │ │ │ │ -142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val) │ │ │ │ │ -143# undef TDS_PUT_A2LE │ │ │ │ │ -144# undef TDS_PUT_A4LE │ │ │ │ │ -145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) │ │ │ │ │ -146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) │ │ │ │ │ -147# define TDS_HOST2LE(val) (val) │ │ │ │ │ -148# define TDS_HOST4LE(val) (val) │ │ │ │ │ -149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val) │ │ │ │ │ -150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val) │ │ │ │ │ -151#endif │ │ │ │ │ -152 │ │ │ │ │ -153#if defined(__GNUC__) || defined(_MSC_VER) │ │ │ │ │ -154# if defined(__MINGW32__) │ │ │ │ │ -155# pragma pack(push,1) │ │ │ │ │ -156# elif defined(_MSC_VER) │ │ │ │ │ -157# pragma pack(push) │ │ │ │ │ -158# pragma pack(1) │ │ │ │ │ -159# endif │ │ │ │ │ -160 │ │ │ │ │ -161# if defined(__GNUC__) │ │ │ │ │ -162# define TDS_PACKED __attribute__((__packed__)) │ │ │ │ │ -163# else │ │ │ │ │ -164# define TDS_PACKED │ │ │ │ │ -165# endif │ │ │ │ │ -166 │ │ │ │ │ -167typedef union TDS_PACKED │ │ │ │ │ -168{ │ │ │ │ │ -169 uint16_t usi; │ │ │ │ │ -170 uint8_t uc[2]; │ │ │ │ │ -171} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT2; │ │ │ │ │ -172 │ │ │ │ │ -173typedef union TDS_PACKED │ │ │ │ │ -174{ │ │ │ │ │ -175 uint32_t ui; │ │ │ │ │ -176 uint8_t uc[4]; │ │ │ │ │ -177} TDS_MAY_ALIAS TDS_UNALIGNED_BYTE_CONVERT4; │ │ │ │ │ -178 │ │ │ │ │ -179# ifdef WORDS_BIGENDIAN │ │ │ │ │ -180# undef TDS_GET_UA2BE │ │ │ │ │ -181# undef TDS_GET_UA4BE │ │ │ │ │ -182# define TDS_GET_UA2BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ -183# define TDS_GET_UA4BE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ -184 │ │ │ │ │ -185# undef TDS_PUT_UA2BE │ │ │ │ │ -186# undef TDS_PUT_UA4BE │ │ │ │ │ -187# define TDS_PUT_UA2BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi │ │ │ │ │ -= (val)) │ │ │ │ │ -188# define TDS_PUT_UA4BE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = │ │ │ │ │ -(val)) │ │ │ │ │ -189# else │ │ │ │ │ -190# undef TDS_GET_UA2LE │ │ │ │ │ -191# undef TDS_GET_UA4LE │ │ │ │ │ -192# define TDS_GET_UA2LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi) │ │ │ │ │ -193# define TDS_GET_UA4LE(ptr) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui) │ │ │ │ │ -194 │ │ │ │ │ -195# undef TDS_PUT_UA2LE │ │ │ │ │ -196# undef TDS_PUT_UA4LE │ │ │ │ │ -197# define TDS_PUT_UA2LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT2*)(ptr))->usi │ │ │ │ │ -= (val)) │ │ │ │ │ -198# define TDS_PUT_UA4LE(ptr,val) (((TDS_UNALIGNED_BYTE_CONVERT4*)(ptr))->ui = │ │ │ │ │ -(val)) │ │ │ │ │ -199# endif │ │ │ │ │ -200 │ │ │ │ │ -201# if defined(__MINGW32__) || defined(_MSC_VER) │ │ │ │ │ -202# pragma pack(pop) │ │ │ │ │ -203# endif │ │ │ │ │ -204 │ │ │ │ │ -205#else │ │ │ │ │ -206 │ │ │ │ │ -207/* these platform support unaligned fetch/store */ │ │ │ │ │ -208/* map unaligned macro to aligned ones */ │ │ │ │ │ -209# if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\ │ │ │ │ │ -210 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || │ │ │ │ │ -defined(__ppc64__) ||\ │ │ │ │ │ -211 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\ │ │ │ │ │ -212 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_ │ │ │ │ │ -X64))) ||\ │ │ │ │ │ -213 defined(__ARM_FEATURE_UNALIGNED) ||\ │ │ │ │ │ -214 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\ │ │ │ │ │ -215 (defined(_M_ARM) && (_M_ARM >= 7)) │ │ │ │ │ -216# ifdef WORDS_BIGENDIAN │ │ │ │ │ -217# undef TDS_GET_UA2BE │ │ │ │ │ -218# undef TDS_GET_UA4BE │ │ │ │ │ -219# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr) │ │ │ │ │ -220# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr) │ │ │ │ │ -221 │ │ │ │ │ -222# undef TDS_PUT_UA2BE │ │ │ │ │ -223# undef TDS_PUT_UA4BE │ │ │ │ │ -224# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val) │ │ │ │ │ -225# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val) │ │ │ │ │ -226# else │ │ │ │ │ -227# undef TDS_GET_UA2LE │ │ │ │ │ -228# undef TDS_GET_UA4LE │ │ │ │ │ -229# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr) │ │ │ │ │ -230# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr) │ │ │ │ │ -231 │ │ │ │ │ -232# undef TDS_PUT_UA2LE │ │ │ │ │ -233# undef TDS_PUT_UA4LE │ │ │ │ │ -234# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val) │ │ │ │ │ -235# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val) │ │ │ │ │ -236# endif │ │ │ │ │ -237# endif │ │ │ │ │ -238 │ │ │ │ │ -239#endif │ │ │ │ │ -240 │ │ │ │ │ -241#undef TDS_BSWAP16 │ │ │ │ │ -242#undef TDS_BSWAP32 │ │ │ │ │ -243/* __builtin_bswap16 was introduced in GCC 4.8 */ │ │ │ │ │ -244#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR_ │ │ │ │ │ -_ >= 8)) && defined(__OPTIMIZE__) │ │ │ │ │ -245# define TDS_BSWAP16(val) __builtin_bswap16(val) │ │ │ │ │ -246# define TDS_BSWAP32(val) __builtin_bswap32(val) │ │ │ │ │ -247/* __builtin_bswap32 was introduced in GCC 4.3 */ │ │ │ │ │ -248#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR_ │ │ │ │ │ -_ >= 3)) && defined(__OPTIMIZE__) │ │ │ │ │ -249# define TDS_BSWAP32(val) __builtin_bswap32(val) │ │ │ │ │ -250#elif defined(_MSC_VER) │ │ │ │ │ -251# include │ │ │ │ │ -252# define TDS_BSWAP16(val) _byteswap_ushort(val) │ │ │ │ │ -253# define TDS_BSWAP32(val) _byteswap_ulong(val) │ │ │ │ │ -254#endif │ │ │ │ │ -255 │ │ │ │ │ -256#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN) │ │ │ │ │ -257# undef TDS_GET_UA2BE │ │ │ │ │ -258# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr)) │ │ │ │ │ -259 │ │ │ │ │ -260# undef TDS_PUT_UA2BE │ │ │ │ │ -261# define TDS_PUT_UA2BE(ptr,val) do {\ │ │ │ │ │ -262 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0) │ │ │ │ │ -263#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN) │ │ │ │ │ -264# undef TDS_GET_UA2LE │ │ │ │ │ -265# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr)) │ │ │ │ │ -266 │ │ │ │ │ -267# undef TDS_PUT_UA2LE │ │ │ │ │ -268# define TDS_PUT_UA2LE(ptr,val) do {\ │ │ │ │ │ -269 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0) │ │ │ │ │ -270#endif │ │ │ │ │ -271 │ │ │ │ │ -272#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN) │ │ │ │ │ -273# undef TDS_GET_UA4BE │ │ │ │ │ -274# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr)) │ │ │ │ │ -275 │ │ │ │ │ -276# undef TDS_PUT_UA4BE │ │ │ │ │ -277# define TDS_PUT_UA4BE(ptr,val) do {\ │ │ │ │ │ -278 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0) │ │ │ │ │ -279#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN) │ │ │ │ │ -280# undef TDS_GET_UA4LE │ │ │ │ │ -281# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr)) │ │ │ │ │ -282 │ │ │ │ │ -283# undef TDS_PUT_UA4LE │ │ │ │ │ -284# define TDS_PUT_UA4LE(ptr,val) do {\ │ │ │ │ │ -285 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0) │ │ │ │ │ -286#endif │ │ │ │ │ -287 │ │ │ │ │ -288#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN) │ │ │ │ │ -289# undef TDS_GET_UA2LE │ │ │ │ │ -290# undef TDS_GET_UA4LE │ │ │ │ │ -291static inline uint16_t │ │ │ │ │ -292TDS_GET_UA2LE(void *ptr) │ │ │ │ │ -293{ │ │ │ │ │ -294 unsigned long res; │ │ │ │ │ -295 __asm__ ("lhbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_ │ │ │ │ │ -t *)ptr)); │ │ │ │ │ -296 return (uint16_t) res; │ │ │ │ │ -297} │ │ │ │ │ -298static inline uint32_t │ │ │ │ │ -299TDS_GET_UA4LE(void *ptr) │ │ │ │ │ -300{ │ │ │ │ │ -301 unsigned long res; │ │ │ │ │ -302 __asm__ ("lwbrx %0,0,%1\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_ │ │ │ │ │ -t *)ptr)); │ │ │ │ │ -303 return (uint32_t) res; │ │ │ │ │ -304} │ │ │ │ │ -305 │ │ │ │ │ -306# undef TDS_PUT_UA2LE │ │ │ │ │ -307# undef TDS_PUT_UA4LE │ │ │ │ │ -308static inline void │ │ │ │ │ -309TDS_PUT_UA2LE(void *ptr, unsigned data) │ │ │ │ │ -310{ │ │ │ │ │ -311 __asm__ ("sthbrx %1,0,%2\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" │ │ │ │ │ -(ptr)); │ │ │ │ │ -312} │ │ │ │ │ -313static inline void │ │ │ │ │ -314TDS_PUT_UA4LE(void *ptr, unsigned data) │ │ │ │ │ -315{ │ │ │ │ │ -316 __asm__ ("stwbrx %1,0,%2\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" │ │ │ │ │ -(ptr)); │ │ │ │ │ -317} │ │ │ │ │ -318#endif │ │ │ │ │ -319 │ │ │ │ │ -320#endif │ │ │ │ │ -TDS_MAY_ALIAS │ │ │ │ │ -Definition bytes.h:87 │ │ │ │ │ +enum_cap.h │ │ │ │ │ +1typedef enum tds_request_capability │ │ │ │ │ +2 { TDS_REQ_LANG = 1 │ │ │ │ │ +3 , TDS_REQ_RPC = 2 │ │ │ │ │ +4 , TDS_REQ_EVT = 3 │ │ │ │ │ +5 , TDS_REQ_MSTMT = 4 │ │ │ │ │ +6 , TDS_REQ_BCP = 5 │ │ │ │ │ +7 , TDS_REQ_CURSOR = 6 │ │ │ │ │ +8 , TDS_REQ_DYNF = 7 │ │ │ │ │ +9 , TDS_REQ_MSG = 8 │ │ │ │ │ +10 , TDS_REQ_PARAM = 9 │ │ │ │ │ +11 , TDS_REQ_DATA_INT1 = 10 │ │ │ │ │ +12 , TDS_REQ_DATA_INT2 = 11 │ │ │ │ │ +13 , TDS_REQ_DATA_INT4 = 12 │ │ │ │ │ +14 , TDS_REQ_DATA_BIT = 13 │ │ │ │ │ +15 , TDS_REQ_DATA_CHAR = 14 │ │ │ │ │ +16 , TDS_REQ_DATA_VCHAR = 15 │ │ │ │ │ +17 , TDS_REQ_DATA_BIN = 16 │ │ │ │ │ +18 , TDS_REQ_DATA_VBIN = 17 │ │ │ │ │ +19 , TDS_REQ_DATA_MNY8 = 18 │ │ │ │ │ +20 , TDS_REQ_DATA_MNY4 = 19 │ │ │ │ │ +21 , TDS_REQ_DATA_DATE8 = 20 │ │ │ │ │ +22 , TDS_REQ_DATA_DATE4 = 21 │ │ │ │ │ +23 , TDS_REQ_DATA_FLT4 = 22 │ │ │ │ │ +24 , TDS_REQ_DATA_FLT8 = 23 │ │ │ │ │ +25 , TDS_REQ_DATA_NUM = 24 │ │ │ │ │ +26 , TDS_REQ_DATA_TEXT = 25 │ │ │ │ │ +27 , TDS_REQ_DATA_IMAGE = 26 │ │ │ │ │ +28 , TDS_REQ_DATA_DEC = 27 │ │ │ │ │ +29 , TDS_REQ_DATA_LCHAR = 28 │ │ │ │ │ +30 , TDS_REQ_DATA_LBIN = 29 │ │ │ │ │ +31 , TDS_REQ_DATA_INTN = 30 │ │ │ │ │ +32 , TDS_REQ_DATA_DATETIMEN = 31 │ │ │ │ │ +33 , TDS_REQ_DATA_MONEYN = 32 │ │ │ │ │ +34 , TDS_REQ_CSR_PREV = 33 │ │ │ │ │ +35 , TDS_REQ_CSR_FIRST = 34 │ │ │ │ │ +36 , TDS_REQ_CSR_LAST = 35 │ │ │ │ │ +37 , TDS_REQ_CSR_ABS = 36 │ │ │ │ │ +38 , TDS_REQ_CSR_REL = 37 │ │ │ │ │ +39 , TDS_REQ_CSR_MULTI = 38 │ │ │ │ │ +40 , TDS_REQ_CON_OOB = 39 │ │ │ │ │ +41 , TDS_REQ_CON_INBAND = 40 │ │ │ │ │ +42 , TDS_REQ_CON_LOGICAL = 41 │ │ │ │ │ +43 , TDS_REQ_PROTO_TEXT = 42 │ │ │ │ │ +44 , TDS_REQ_PROTO_BULK = 43 │ │ │ │ │ +45 , TDS_REQ_URGEVT = 44 │ │ │ │ │ +46 , TDS_REQ_DATA_SENSITIVITY = 45 │ │ │ │ │ +47 , TDS_REQ_DATA_BOUNDARY = 46 │ │ │ │ │ +48 , TDS_REQ_PROTO_DYNAMIC = 47 │ │ │ │ │ +49 , TDS_REQ_PROTO_DYNPROC = 48 │ │ │ │ │ +50 , TDS_REQ_DATA_FLTN = 49 │ │ │ │ │ +51 , TDS_REQ_DATA_BITN = 50 │ │ │ │ │ +52 , TDS_REQ_DATA_INT8 = 51 │ │ │ │ │ +53 , TDS_REQ_DATA_VOID = 52 │ │ │ │ │ +54 , TDS_REQ_DOL_BULK = 53 │ │ │ │ │ +55 , TDS_REQ_OBJECT_JAVA1 = 54 │ │ │ │ │ +56 , TDS_REQ_OBJECT_CHAR = 55 │ │ │ │ │ +57 , TDS_REQ_OBJECT_BINARY = 57 │ │ │ │ │ +58 , TDS_REQ_DATA_COLUMNSTATUS = 58 │ │ │ │ │ +59 , TDS_REQ_WIDETABLE = 59 │ │ │ │ │ +60 , TDS_REQ_DATA_UINT2 = 61 │ │ │ │ │ +61 , TDS_REQ_DATA_UINT4 = 62 │ │ │ │ │ +62 , TDS_REQ_DATA_UINT8 = 63 │ │ │ │ │ +63 , TDS_REQ_DATA_UINTN = 64 │ │ │ │ │ +64 , TDS_REQ_CUR_IMPLICIT = 65 │ │ │ │ │ +65 , TDS_REQ_DATA_NLBIN = 66 │ │ │ │ │ +66 , TDS_REQ_IMAGE_NCHAR = 67 │ │ │ │ │ +67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */ │ │ │ │ │ +68 , TDS_REQ_BLOB_NCHAR_8 = 69 │ │ │ │ │ +69 , TDS_REQ_BLOB_NCHAR_SCSU = 70 │ │ │ │ │ +70 , TDS_REQ_DATA_DATE = 71 │ │ │ │ │ +71 , TDS_REQ_DATA_TIME = 72 │ │ │ │ │ +72 , TDS_REQ_DATA_INTERVAL = 73 │ │ │ │ │ +73 , TDS_REQ_CSR_SCROLL = 74 │ │ │ │ │ +74 , TDS_REQ_CSR_SENSITIVE = 75 │ │ │ │ │ +75 , TDS_REQ_CSR_INSENSITIVE = 76 │ │ │ │ │ +76 , TDS_REQ_CSR_SEMISENSITIVE = 77 │ │ │ │ │ +77 , TDS_REQ_CSR_KEYSETDRIVEN = 78 │ │ │ │ │ +78 , TDS_REQ_SRVPKTSIZE = 79 │ │ │ │ │ +79 , TDS_REQ_DATA_UNITEXT = 80 │ │ │ │ │ +80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81 │ │ │ │ │ +81 , TDS_REQ_DATA_SINT1 = 82 │ │ │ │ │ +82 , TDS_REQ_LARGEIDENT = 83 │ │ │ │ │ +83 , TDS_REQ_BLOB_NCHAR_16 = 84 │ │ │ │ │ +84 , TDS_REQ_DATA_XML = 85 │ │ │ │ │ +85 , TDS_REQ_CURINFO3 = 86 │ │ │ │ │ +86 , TDS_REQ_DBRPC2 = 87 │ │ │ │ │ +87 , TDS_REQ_MIGRATE = 89 │ │ │ │ │ +88 , TDS_REQ_DATA_BIGDATETIME = 93 │ │ │ │ │ +89 , TDS_REQ_DATA_BIGTIME = 94 │ │ │ │ │ +90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */ │ │ │ │ │ +91 } TDS_REQUEST_CAPABILITY; │ │ │ │ │ +92 │ │ │ │ │ +93typedef enum tds_response_capability │ │ │ │ │ +94 { TDS_RES_NOMSG = 1 │ │ │ │ │ +95 , TDS_RES_NOEED = 2 │ │ │ │ │ +96 , TDS_RES_NOPARAM = 3 │ │ │ │ │ +97 , TDS_RES_DATA_NOINT1 = 4 │ │ │ │ │ +98 , TDS_RES_DATA_NOINT2 = 5 │ │ │ │ │ +99 , TDS_RES_DATA_NOINT4 = 6 │ │ │ │ │ +100 , TDS_RES_DATA_NOBIT = 7 │ │ │ │ │ +101 , TDS_RES_DATA_NOCHAR = 8 │ │ │ │ │ +102 , TDS_RES_DATA_NOVCHAR = 9 │ │ │ │ │ +103 , TDS_RES_DATA_NOBIN = 10 │ │ │ │ │ +104 , TDS_RES_DATA_NOVBIN = 11 │ │ │ │ │ +105 , TDS_RES_DATA_NOMNY8 = 12 │ │ │ │ │ +106 , TDS_RES_DATA_NOMNY4 = 13 │ │ │ │ │ +107 , TDS_RES_DATA_NODATE8 = 14 │ │ │ │ │ +108 , TDS_RES_DATA_NODATE4 = 15 │ │ │ │ │ +109 , TDS_RES_DATA_NOFLT4 = 16 │ │ │ │ │ +110 , TDS_RES_DATA_NOFLT8 = 17 │ │ │ │ │ +111 , TDS_RES_DATA_NONUM = 18 │ │ │ │ │ +112 , TDS_RES_DATA_NOTEXT = 19 │ │ │ │ │ +113 , TDS_RES_DATA_NOIMAGE = 20 │ │ │ │ │ +114 , TDS_RES_DATA_NODEC = 21 │ │ │ │ │ +115 , TDS_RES_DATA_NOLCHAR = 22 │ │ │ │ │ +116 , TDS_RES_DATA_NOLBIN = 23 │ │ │ │ │ +117 , TDS_RES_DATA_INTN = 24 │ │ │ │ │ +118 , TDS_RES_DATA_NODATETIMEN = 25 │ │ │ │ │ +119 , TDS_RES_DATA_NOMONEYN = 26 │ │ │ │ │ +120 , TDS_RES_CON_NOOOB = 27 │ │ │ │ │ +121 , TDS_RES_CON_NOINBAND = 28 │ │ │ │ │ +122 , TDS_RES_PROTO_NOTEXT = 29 │ │ │ │ │ +123 , TDS_RES_PROTO_NOBULK = 30 │ │ │ │ │ +124 , TDS_RES_DATA_NOSENSITIVITY = 31 │ │ │ │ │ +125 , TDS_RES_DATA_NOBOUNDARY = 32 │ │ │ │ │ +126 , TDS_RES_NOTDSDEBUG = 33 │ │ │ │ │ +127 , TDS_RES_NOSTRIPBLANKS = 34 │ │ │ │ │ +128 , TDS_RES_DATA_NOINT8 = 35 │ │ │ │ │ +129 , TDS_RES_OBJECT_NOJAVA1 = 36 │ │ │ │ │ +130 , TDS_RES_OBJECT_NOCHAR = 37 │ │ │ │ │ +131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38 │ │ │ │ │ +132 , TDS_RES_OBJECT_NOBINARY = 39 │ │ │ │ │ +133 , TDS_RES_DATA_NOUINT2 = 41 │ │ │ │ │ +134 , TDS_RES_DATA_NOUINT4 = 42 │ │ │ │ │ +135 , TDS_RES_DATA_NOUINT8 = 43 │ │ │ │ │ +136 , TDS_RES_DATA_NOUINTN = 44 │ │ │ │ │ +137 , TDS_RES_NO_WIDETABLES = 45 │ │ │ │ │ +138 , TDS_RES_DATA_NONLBIN = 46 │ │ │ │ │ +139 , TDS_RES_IMAGE_NONCHAR = 47 │ │ │ │ │ +140 , TDS_RES_BLOB_NONCHAR_16 = 48 │ │ │ │ │ +141 , TDS_RES_BLOB_NONCHAR_8 = 49 │ │ │ │ │ +142 , TDS_RES_BLOB_NONCHAR_SCSU = 50 │ │ │ │ │ +143 , TDS_RES_DATA_NODATE = 51 │ │ │ │ │ +144 , TDS_RES_DATA_NOTIME = 52 │ │ │ │ │ +145 , TDS_RES_DATA_NOINTERVAL = 53 │ │ │ │ │ +146 , TDS_RES_DATA_NOUNITEXT = 54 │ │ │ │ │ +147 , TDS_RES_DATA_NOSINT1 = 55 │ │ │ │ │ +148 , TDS_RES_NO_LARGEIDENT = 56 │ │ │ │ │ +149 , TDS_RES_NO_BLOB_NCHAR_16 = 57 │ │ │ │ │ +150 , TDS_RES_NO_SRVPKTSIZE = 58 │ │ │ │ │ +151 , TDS_RES_DATA_NOXML = 59 │ │ │ │ │ +152 , TDS_RES_NONINT_RETURN_VALUE = 60 │ │ │ │ │ +153 , TDS_RES_NOXNLDATA = 61 │ │ │ │ │ +154 , TDS_RES_SUPPRESS_FMT = 62 │ │ │ │ │ +155 , TDS_RES_SUPPRESS_DONEINPROC = 63 │ │ │ │ │ +156 , TDS_RES_FORCE_ROWFMT2 = 64 │ │ │ │ │ +157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */ │ │ │ │ │ +158 } TDS_RESPONSE_CAPABILITY; │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00515_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/sybfront.h Source File │ │ │ │ +FreeTDS API: include/freetds/popvis.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,68 +70,24 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
sybfront.h
│ │ │ │ +
popvis.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef SYBFRONT_h
│ │ │ │ -
21#define SYBFRONT_h
│ │ │ │ -
22
│ │ │ │ -
23#include "sybdb.h"
│ │ │ │ -
24
│ │ │ │ -
25#ifdef __cplusplus
│ │ │ │ -
26extern "C"
│ │ │ │ -
27{
│ │ │ │ -
28#if 0
│ │ │ │ -
29}
│ │ │ │ -
30#endif
│ │ │ │ -
31#endif
│ │ │ │ -
32
│ │ │ │ -
33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12:42:12 freddy77 Exp $";
│ │ │ │ -
34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, no_unused_sybfront_h_warn };
│ │ │ │ -
35
│ │ │ │ -
36
│ │ │ │ -
37
│ │ │ │ -
38#ifdef __cplusplus
│ │ │ │ -
39#if 0
│ │ │ │ -
40{
│ │ │ │ -
41#endif
│ │ │ │ -
42}
│ │ │ │ -
43#endif
│ │ │ │ -
44
│ │ │ │ -
45
│ │ │ │ -
46#endif
│ │ │ │ -
Primary include file for db-lib applications.
│ │ │ │ +
1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
│ │ │ │ +
2#pragma GCC visibility pop
│ │ │ │ +
3#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,58 +1,12 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -sybfront.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef SYBFRONT_h │ │ │ │ │ -21#define SYBFRONT_h │ │ │ │ │ -22 │ │ │ │ │ -23#include "sybdb.h" │ │ │ │ │ -24 │ │ │ │ │ -25#ifdef __cplusplus │ │ │ │ │ -26extern "C" │ │ │ │ │ -27{ │ │ │ │ │ -28#if 0 │ │ │ │ │ -29} │ │ │ │ │ -30#endif │ │ │ │ │ -31#endif │ │ │ │ │ -32 │ │ │ │ │ -33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12: │ │ │ │ │ -42:12 freddy77 Exp $"; │ │ │ │ │ -34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, │ │ │ │ │ -no_unused_sybfront_h_warn }; │ │ │ │ │ -35 │ │ │ │ │ -36 │ │ │ │ │ -37 │ │ │ │ │ -38#ifdef __cplusplus │ │ │ │ │ -39#if 0 │ │ │ │ │ -40{ │ │ │ │ │ -41#endif │ │ │ │ │ -42} │ │ │ │ │ -43#endif │ │ │ │ │ -44 │ │ │ │ │ -45 │ │ │ │ │ -46#endif │ │ │ │ │ -sybdb.h │ │ │ │ │ -Primary include file for db-lib applications. │ │ │ │ │ + * freetds │ │ │ │ │ +popvis.h │ │ │ │ │ +1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) │ │ │ │ │ +2#pragma GCC visibility pop │ │ │ │ │ +3#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00518_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/odbcss.h Source File │ │ │ │ +FreeTDS API: include/freetds/tds.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,414 +70,1914 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
odbcss.h
│ │ │ │ +
tds.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 2008 Frediano Ziglio
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _odbcss_h_
│ │ │ │ -
21#define _odbcss_h_
│ │ │ │ -
22
│ │ │ │ -
23#ifdef TDSODBC_BCP
│ │ │ │ -
24#include <sql.h>
│ │ │ │ -
25#endif
│ │ │ │ -
26
│ │ │ │ -
27#ifdef __cplusplus
│ │ │ │ -
28extern "C" {
│ │ │ │ -
29#endif
│ │ │ │ -
30
│ │ │ │ -
31#define SQL_DIAG_SS_MSGSTATE (-1150)
│ │ │ │ -
32#define SQL_DIAG_SS_LINE (-1154)
│ │ │ │ -
33
│ │ │ │ -
34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233
│ │ │ │ -
35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234
│ │ │ │ -
36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235
│ │ │ │ -
37#define SQL_SOPT_SS_PARAM_FOCUS 1236
│ │ │ │ -
38
│ │ │ │ -
39#ifndef SQL_SS_LENGTH_UNLIMITED
│ │ │ │ -
40#define SQL_SS_LENGTH_UNLIMITED 0
│ │ │ │ -
41#endif
│ │ │ │ -
42
│ │ │ │ -
43#ifndef SQL_COPT_SS_BASE
│ │ │ │ -
44#define SQL_COPT_SS_BASE 1200
│ │ │ │ -
45#endif
│ │ │ │ +Go to the documentation of this file.
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ +
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
│ │ │ │ +
3 * Copyright (C) 2010, 2011 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +
22#define _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
│ │ │ │ +
23
│ │ │ │ +
24#ifndef _freetds_config_h_
│ │ │ │ +
25#error should include config.h before
│ │ │ │ +
26#endif
│ │ │ │ +
27
│ │ │ │ +
28#include <stdarg.h>
│ │ │ │ +
29#include <stdio.h>
│ │ │ │ +
30#include <time.h>
│ │ │ │ +
31
│ │ │ │ +
32#ifdef HAVE_STDDEF_H
│ │ │ │ +
33#include <stddef.h>
│ │ │ │ +
34#endif
│ │ │ │ +
35
│ │ │ │ +
36#if HAVE_NETDB_H
│ │ │ │ +
37#include <netdb.h>
│ │ │ │ +
38#endif /* HAVE_NETDB_H */
│ │ │ │ +
39
│ │ │ │ +
40#if HAVE_NETINET_IN_H
│ │ │ │ +
41#include <netinet/in.h>
│ │ │ │ +
42#endif /* HAVE_NET_INET_IN_H */
│ │ │ │ +
43#if HAVE_ARPA_INET_H
│ │ │ │ +
44#include <arpa/inet.h>
│ │ │ │ +
45#endif /* HAVE_ARPA_INET_H */
│ │ │ │
46
│ │ │ │ -
47#ifndef SQL_COPT_SS_MARS_ENABLED
│ │ │ │ -
48#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
│ │ │ │ -
49#endif
│ │ │ │ +
47#if HAVE_SYS_SOCKET_H
│ │ │ │ +
48#include <sys/socket.h>
│ │ │ │ +
49#endif /* HAVE_SYS_SOCKET_H */
│ │ │ │
50
│ │ │ │ -
51#ifndef SQL_COPT_SS_OLDPWD
│ │ │ │ -
52#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
│ │ │ │ -
53#endif
│ │ │ │ -
54
│ │ │ │ -
55#define SQL_INFO_FREETDS_TDS_VERSION 1300
│ │ │ │ -
56#define SQL_INFO_FREETDS_SOCKET 1301
│ │ │ │ +
51/* forward declaration */
│ │ │ │ +
52typedef struct tdsiconvinfo TDSICONV;
│ │ │ │ +
53typedef struct tds_connection TDSCONNECTION;
│ │ │ │ +
54typedef struct tds_socket TDSSOCKET;
│ │ │ │ +
55typedef struct tds_column TDSCOLUMN;
│ │ │ │ +
56typedef struct tds_bcpinfo TDSBCPINFO;
│ │ │ │
57
│ │ │ │ -
58#ifndef SQL_MARS_ENABLED_NO
│ │ │ │ -
59#define SQL_MARS_ENABLED_NO 0
│ │ │ │ -
60#endif
│ │ │ │ -
61
│ │ │ │ -
62#ifndef SQL_MARS_ENABLED_YES
│ │ │ │ -
63#define SQL_MARS_ENABLED_YES 1
│ │ │ │ -
64#endif
│ │ │ │ -
65
│ │ │ │ -
66#ifndef SQL_SS_VARIANT
│ │ │ │ -
67#define SQL_SS_VARIANT (-150)
│ │ │ │ -
68#endif
│ │ │ │ -
69
│ │ │ │ -
70#ifndef SQL_SS_UDT
│ │ │ │ -
71#define SQL_SS_UDT (-151)
│ │ │ │ -
72#endif
│ │ │ │ -
73
│ │ │ │ -
74#ifndef SQL_SS_XML
│ │ │ │ -
75#define SQL_SS_XML (-152)
│ │ │ │ -
76#endif
│ │ │ │ -
77
│ │ │ │ -
78#ifndef SQL_SS_TABLE
│ │ │ │ -
79#define SQL_SS_TABLE (-153)
│ │ │ │ -
80#endif
│ │ │ │ -
81
│ │ │ │ -
82#ifndef SQL_SS_TIME2
│ │ │ │ -
83#define SQL_SS_TIME2 (-154)
│ │ │ │ -
84#endif
│ │ │ │ -
85
│ │ │ │ -
86#ifndef SQL_SS_TIMESTAMPOFFSET
│ │ │ │ -
87#define SQL_SS_TIMESTAMPOFFSET (-155)
│ │ │ │ -
88#endif
│ │ │ │ -
89
│ │ │ │ -
90/*
│ │ │ │ -
91 * these types are used from conversion from client to server
│ │ │ │ -
92 */
│ │ │ │ -
93#ifndef SQL_C_SS_TIME2
│ │ │ │ -
94#define SQL_C_SS_TIME2 (0x4000)
│ │ │ │ -
95#endif
│ │ │ │ -
96
│ │ │ │ -
97#ifndef SQL_C_SS_TIMESTAMPOFFSET
│ │ │ │ -
98#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
│ │ │ │ -
99#endif
│ │ │ │ -
100
│ │ │ │ -
101#ifndef SQL_CA_SS_BASE
│ │ │ │ -
102#define SQL_CA_SS_BASE 1200
│ │ │ │ -
103#endif
│ │ │ │ -
104
│ │ │ │ -
105#ifndef SQL_CA_SS_UDT_CATALOG_NAME
│ │ │ │ -
106#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
│ │ │ │ -
107#endif
│ │ │ │ -
108
│ │ │ │ -
109#ifndef SQL_CA_SS_UDT_SCHEMA_NAME
│ │ │ │ -
110#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
│ │ │ │ -
111#endif
│ │ │ │ -
112
│ │ │ │ -
113#ifndef SQL_CA_SS_UDT_TYPE_NAME
│ │ │ │ -
114#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
│ │ │ │ -
115#endif
│ │ │ │ -
116
│ │ │ │ -
117#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
│ │ │ │ -
118#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
│ │ │ │ -
119#endif
│ │ │ │ -
120
│ │ │ │ -
121#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
│ │ │ │ -
122#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
│ │ │ │ -
123#endif
│ │ │ │ -
124
│ │ │ │ -
125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
│ │ │ │ -
126#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
│ │ │ │ -
127#endif
│ │ │ │ -
128
│ │ │ │ -
129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
│ │ │ │ -
130#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
│ │ │ │ -
131#endif
│ │ │ │ -
132
│ │ │ │ -
│ │ │ │ -
133typedef struct tagSS_TIME2_STRUCT {
│ │ │ │ -
134 SQLUSMALLINT hour;
│ │ │ │ -
135 SQLUSMALLINT minute;
│ │ │ │ -
136 SQLUSMALLINT second;
│ │ │ │ -
137 SQLUINTEGER fraction;
│ │ │ │ - │ │ │ │ +
58#include <freetds/version.h>
│ │ │ │ +
59#include <freetds/sysdep_private.h>
│ │ │ │ +
60#include <freetds/thread.h>
│ │ │ │ +
61#include <freetds/bool.h>
│ │ │ │ +
62#include <freetds/macros.h>
│ │ │ │ +
63#include <freetds/utils/string.h>
│ │ │ │ +
64#include <freetds/utils/path.h>
│ │ │ │ +
65#include <freetds/replacements.h>
│ │ │ │ +
66
│ │ │ │ +
67#include <freetds/pushvis.h>
│ │ │ │ +
68
│ │ │ │ +
69#ifdef __cplusplus
│ │ │ │ +
70extern "C"
│ │ │ │ +
71{
│ │ │ │ +
72#if 0
│ │ │ │ +
73}
│ │ │ │ +
74#endif
│ │ │ │ +
75#endif
│ │ │ │ +
76
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
83{
│ │ │ │ +
84 const char *freetds_version; /* release version of FreeTDS */
│ │ │ │ +
85 const tds_dir_char *sysconfdir; /* location of freetds.conf */
│ │ │ │ +
86 const char *last_update; /* latest software_version date among the modules */
│ │ │ │ +
87 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1/8.0) 5.0 */
│ │ │ │ +
88 bool msdblib; /* for MS style dblib */
│ │ │ │ +
89 bool sybase_compat; /* enable increased Open Client binary compatibility */
│ │ │ │ +
90 bool threadsafe; /* compile for thread safety default=no */
│ │ │ │ +
91 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */
│ │ │ │ +
92 bool iodbc; /* build odbc driver against iODBC in DIR */
│ │ │ │ +
93 bool unixodbc; /* build odbc driver against unixODBC in DIR */
│ │ │ │ +
94 bool openssl; /* build against OpenSSL */
│ │ │ │ +
95 bool gnutls; /* build against GnuTLS */
│ │ │ │ +
96 bool mars; /* MARS enabled */
│ │ │ │ +
97 bool sspi; /* SSPI enabled */
│ │ │ │ +
98 bool kerberos; /* Kerberos enabled */
│ │ │ │ + │ │ │ │
│ │ │ │ +
100
│ │ │ │ +
116/*
│ │ │ │ +
117 * All references to data that touch the wire should use the following typedefs.
│ │ │ │ +
118 *
│ │ │ │ +
119 * If you have problems on 64-bit machines and the code is
│ │ │ │ +
120 * using a native datatype, please change it to use
│ │ │ │ +
121 * these. (In the TDS layer only, the API layers have their
│ │ │ │ +
122 * own typedefs which equate to these).
│ │ │ │ +
123 */
│ │ │ │ +
124typedef char TDS_CHAR; /* 8-bit char */
│ │ │ │ +
125typedef uint8_t TDS_UCHAR; /* 8-bit uchar */
│ │ │ │ +
126typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */
│ │ │ │ +
127typedef int16_t TDS_SMALLINT; /* 16-bit int */
│ │ │ │ +
128typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */
│ │ │ │ +
129typedef int32_t TDS_INT; /* 32-bit int */
│ │ │ │ +
130typedef uint32_t TDS_UINT; /* 32-bit unsigned */
│ │ │ │ +
131typedef int64_t TDS_INT8; /* 64-bit integer */
│ │ │ │ +
132typedef uint64_t TDS_UINT8; /* 64-bit unsigned */
│ │ │ │ +
133typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */
│ │ │ │ +
134typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */
│ │ │ │ +
135
│ │ │ │ +
136#include <freetds/proto.h>
│ │ │ │ +
137
│ │ │ │ +
138#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)
│ │ │ │
139
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
141 SQLSMALLINT year;
│ │ │ │ -
142 SQLUSMALLINT month;
│ │ │ │ -
143 SQLUSMALLINT day;
│ │ │ │ -
144 SQLUSMALLINT hour;
│ │ │ │ -
145 SQLUSMALLINT minute;
│ │ │ │ -
146 SQLUSMALLINT second;
│ │ │ │ -
147 SQLUINTEGER fraction;
│ │ │ │ -
148 SQLSMALLINT timezone_hour;
│ │ │ │ -
149 SQLSMALLINT timezone_minute;
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
151
│ │ │ │ -
152
│ │ │ │ -
153#ifdef TDSODBC_BCP
│ │ │ │ -
154
│ │ │ │ -
155#ifndef SUCCEED
│ │ │ │ -
156#define SUCCEED 1
│ │ │ │ -
157#endif
│ │ │ │ -
158#ifndef FAIL
│ │ │ │ -
159#define FAIL 0
│ │ │ │ -
160#endif
│ │ │ │ -
161
│ │ │ │ -
162#ifndef BCPKEEPIDENTITY
│ │ │ │ -
163#define BCPKEEPIDENTITY 8
│ │ │ │ -
164#endif
│ │ │ │ -
165#ifndef BCPHINTSA
│ │ │ │ -
166#define BCPHINTSA 10
│ │ │ │ -
167#endif
│ │ │ │ -
168#ifndef BCPHINTSW
│ │ │ │ -
169#define BCPHINTSW 11
│ │ │ │ -
170#endif
│ │ │ │ +
│ │ │ │ +
144typedef struct
│ │ │ │ +
145{
│ │ │ │ +
146 TDS_UINT8 time;
│ │ │ │ +
147 TDS_INT date;
│ │ │ │ +
148 TDS_SMALLINT offset;
│ │ │ │ +
149 TDS_USMALLINT time_prec:3;
│ │ │ │ +
150 TDS_USMALLINT _tds_reserved:10;
│ │ │ │ +
151 TDS_USMALLINT has_time:1;
│ │ │ │ +
152 TDS_USMALLINT has_date:1;
│ │ │ │ +
153 TDS_USMALLINT has_offset:1;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
155
│ │ │ │ +
│ │ │ │ +
157typedef struct tdsdaterec
│ │ │ │ +
158{
│ │ │ │ +
159 TDS_INT year;
│ │ │ │ +
160 TDS_INT quarter;
│ │ │ │ +
161 TDS_INT month;
│ │ │ │ +
162 TDS_INT day;
│ │ │ │ +
163 TDS_INT dayofyear;
│ │ │ │ +
164 TDS_INT weekday;
│ │ │ │ +
165 TDS_INT hour;
│ │ │ │ +
166 TDS_INT minute;
│ │ │ │ +
167 TDS_INT second;
│ │ │ │ + │ │ │ │ +
169 TDS_INT timezone;
│ │ │ │ + │ │ │ │ +
│ │ │ │
171
│ │ │ │ -
172#define BCP_DIRECTION_IN 1
│ │ │ │ -
173
│ │ │ │ -
174#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
│ │ │ │ -
175#define SQL_BCP_OFF 0
│ │ │ │ -
176#define SQL_BCP_ON 1
│ │ │ │ -
177
│ │ │ │ -
178#define SQL_COPT_TDSODBC_IMPL_BASE 1500
│ │ │ │ -
179#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
│ │ │ │ -
180/* deprecated SQL_COPT_TDSODBC_IMPL_BCP_CONTROL */
│ │ │ │ -
181#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
│ │ │ │ -
182#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
│ │ │ │ -
183#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
│ │ │ │ -
184#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
│ │ │ │ -
185#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
│ │ │ │ -
186#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
│ │ │ │ -
187#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+8)
│ │ │ │ +
177extern const int tds_numeric_bytes_per_prec[];
│ │ │ │ +
178
│ │ │ │ +
179typedef int TDSRET;
│ │ │ │ +
180#define TDS_NO_MORE_RESULTS ((TDSRET)1)
│ │ │ │ +
181#define TDS_SUCCESS ((TDSRET)0)
│ │ │ │ +
182#define TDS_FAIL ((TDSRET)-1)
│ │ │ │ +
183#define TDS_CANCELLED ((TDSRET)-2)
│ │ │ │ +
184#define TDS_FAILED(rc) ((rc)<0)
│ │ │ │ +
185#define TDS_SUCCEED(rc) ((rc)>=0)
│ │ │ │ +
186#define TDS_PROPAGATE(rc) \
│ │ │ │ +
187 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } while(0)
│ │ │ │
188
│ │ │ │ -
189#define SQL_VARLEN_DATA -10
│ │ │ │ -
190
│ │ │ │ -
191/* copied from sybdb.h which was copied from tds.h */
│ │ │ │ -
192/* TODO find a much better way... */
│ │ │ │ -
193enum
│ │ │ │ -
194{
│ │ │ │ -
195 BCP_TYPE_SQLCHAR = 47, /* 0x2F */
│ │ │ │ -
196#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
│ │ │ │ -
197 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */
│ │ │ │ -
198#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
│ │ │ │ -
199 BCP_TYPE_SQLINTN = 38, /* 0x26 */
│ │ │ │ -
200#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
│ │ │ │ -
201 BCP_TYPE_SQLINT1 = 48, /* 0x30 */
│ │ │ │ -
202#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
│ │ │ │ -
203 BCP_TYPE_SQLINT2 = 52, /* 0x34 */
│ │ │ │ -
204#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
│ │ │ │ -
205 BCP_TYPE_SQLINT4 = 56, /* 0x38 */
│ │ │ │ -
206#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
│ │ │ │ -
207 BCP_TYPE_SQLINT8 = 127, /* 0x7F */
│ │ │ │ -
208#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
│ │ │ │ -
209 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */
│ │ │ │ -
210#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
│ │ │ │ -
211 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */
│ │ │ │ -
212#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
│ │ │ │ -
213 BCP_TYPE_SQLBIT = 50, /* 0x32 */
│ │ │ │ -
214#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
│ │ │ │ -
215 BCP_TYPE_SQLBITN = 104, /* 0x68 */
│ │ │ │ -
216#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
│ │ │ │ -
217 BCP_TYPE_SQLTEXT = 35, /* 0x23 */
│ │ │ │ -
218#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
│ │ │ │ -
219 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */
│ │ │ │ -
220#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
│ │ │ │ -
221 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */
│ │ │ │ -
222#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
│ │ │ │ -
223 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */
│ │ │ │ -
224#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
│ │ │ │ -
225 BCP_TYPE_SQLMONEY = 60, /* 0x3C */
│ │ │ │ -
226#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
│ │ │ │ -
227 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */
│ │ │ │ -
228#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
│ │ │ │ -
229 BCP_TYPE_SQLREAL = 59, /* 0x3B */
│ │ │ │ -
230 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */
│ │ │ │ -
231#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
│ │ │ │ -
232#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
│ │ │ │ -
233 BCP_TYPE_SQLBINARY = 45, /* 0x2D */
│ │ │ │ -
234#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
│ │ │ │ -
235 BCP_TYPE_SQLVOID = 31, /* 0x1F */
│ │ │ │ -
236#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
│ │ │ │ -
237 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */
│ │ │ │ -
238#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
│ │ │ │ -
239 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */
│ │ │ │ -
240#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
│ │ │ │ -
241 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */
│ │ │ │ -
242#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
│ │ │ │ -
243 BCP_TYPE_SQLFLTN = 109, /* 0x6D */
│ │ │ │ -
244#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
│ │ │ │ -
245 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */
│ │ │ │ -
246#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
│ │ │ │ -
247 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */
│ │ │ │ -
248#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
│ │ │ │ -
249 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */
│ │ │ │ -
250#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
│ │ │ │ -
251 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */
│ │ │ │ -
252#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
│ │ │ │ -
253 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */
│ │ │ │ -
254#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
│ │ │ │ -
255};
│ │ │ │ -
256
│ │ │ │ -
257typedef struct
│ │ │ │ -
258{
│ │ │ │ -
259 int dtdays;
│ │ │ │ -
260 int dttime;
│ │ │ │ -
261} DBDATETIME;
│ │ │ │ -
262
│ │ │ │ -
263#ifdef _MSC_VER
│ │ │ │ -
264#define TDSODBC_INLINE __inline
│ │ │ │ -
265#else
│ │ │ │ -
266#define TDSODBC_INLINE __inline__
│ │ │ │ -
267#endif
│ │ │ │ -
268
│ │ │ │ -
269struct tdsodbc_impl_bcp_init_params
│ │ │ │ -
270{
│ │ │ │ -
271 const void *tblname;
│ │ │ │ -
272 const void *hfile;
│ │ │ │ -
273 const void *errfile;
│ │ │ │ -
274 int direction;
│ │ │ │ -
275};
│ │ │ │ -
276
│ │ │ │ -
277static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
278bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char *errfile, int direction)
│ │ │ │ -
279{
│ │ │ │ -
280 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
│ │ │ │ -
281 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
282}
│ │ │ │ -
283
│ │ │ │ -
284static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
285bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const SQLWCHAR *errfile, int direction)
│ │ │ │ -
286{
│ │ │ │ -
287 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
│ │ │ │ -
288 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
289}
│ │ │ │ -
290
│ │ │ │ -
291struct tdsodbc_impl_bcp_control_params
│ │ │ │ -
292{
│ │ │ │ -
293 int field;
│ │ │ │ -
294 void *value;
│ │ │ │ -
295};
│ │ │ │ -
296
│ │ │ │ -
297static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
298bcp_control(HDBC hdbc, int field, void *value)
│ │ │ │ -
299{
│ │ │ │ -
300 struct tdsodbc_impl_bcp_control_params params = {field, value};
│ │ │ │ -
301 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
302}
│ │ │ │ +
189#define TDS_INT_CONTINUE 1
│ │ │ │ +
190#define TDS_INT_CANCEL 2
│ │ │ │ +
191#define TDS_INT_TIMEOUT 3
│ │ │ │ +
192
│ │ │ │ +
193
│ │ │ │ +
194#define TDS_NO_COUNT -1
│ │ │ │ +
195
│ │ │ │ +
196#define TDS_ROW_RESULT 4040
│ │ │ │ +
197#define TDS_PARAM_RESULT 4042
│ │ │ │ +
198#define TDS_STATUS_RESULT 4043
│ │ │ │ +
199#define TDS_MSG_RESULT 4044
│ │ │ │ +
200#define TDS_COMPUTE_RESULT 4045
│ │ │ │ +
201#define TDS_CMD_DONE 4046
│ │ │ │ +
202#define TDS_CMD_SUCCEED 4047
│ │ │ │ +
203#define TDS_CMD_FAIL 4048
│ │ │ │ +
204#define TDS_ROWFMT_RESULT 4049
│ │ │ │ +
205#define TDS_COMPUTEFMT_RESULT 4050
│ │ │ │ +
206#define TDS_DESCRIBE_RESULT 4051
│ │ │ │ +
207#define TDS_DONE_RESULT 4052
│ │ │ │ +
208#define TDS_DONEPROC_RESULT 4053
│ │ │ │ +
209#define TDS_DONEINPROC_RESULT 4054
│ │ │ │ +
210#define TDS_OTHERS_RESULT 4055
│ │ │ │ +
211
│ │ │ │ +
212enum tds_token_results
│ │ │ │ +
213{
│ │ │ │ +
214 TDS_TOKEN_RES_OTHERS,
│ │ │ │ +
215 TDS_TOKEN_RES_ROWFMT,
│ │ │ │ +
216 TDS_TOKEN_RES_COMPUTEFMT,
│ │ │ │ +
217 TDS_TOKEN_RES_PARAMFMT,
│ │ │ │ +
218 TDS_TOKEN_RES_DONE,
│ │ │ │ +
219 TDS_TOKEN_RES_ROW,
│ │ │ │ +
220 TDS_TOKEN_RES_COMPUTE,
│ │ │ │ +
221 TDS_TOKEN_RES_PROC,
│ │ │ │ +
222 TDS_TOKEN_RES_MSG,
│ │ │ │ +
223 TDS_TOKEN_RES_ENV,
│ │ │ │ +
224};
│ │ │ │ +
225
│ │ │ │ +
226#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
│ │ │ │ +
227
│ │ │ │ +
228enum tds_token_flags
│ │ │ │ +
229{
│ │ │ │ +
230 TDS_HANDLE_ALL = 0,
│ │ │ │ +
231 TDS_TOKEN_FLAG(OTHERS),
│ │ │ │ +
232 TDS_TOKEN_FLAG(ROWFMT),
│ │ │ │ +
233 TDS_TOKEN_FLAG(COMPUTEFMT),
│ │ │ │ +
234 TDS_TOKEN_FLAG(PARAMFMT),
│ │ │ │ +
235 TDS_TOKEN_FLAG(DONE),
│ │ │ │ +
236 TDS_TOKEN_FLAG(ROW),
│ │ │ │ +
237 TDS_TOKEN_FLAG(COMPUTE),
│ │ │ │ +
238 TDS_TOKEN_FLAG(PROC),
│ │ │ │ +
239 TDS_TOKEN_FLAG(MSG),
│ │ │ │ +
240 TDS_TOKEN_FLAG(ENV),
│ │ │ │ +
241 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,
│ │ │ │ +
242 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
│ │ │ │ +
243};
│ │ │ │ +
244
│ │ │ │ +
245/*
│ │ │ │ +
246 * TDSERRNO is emitted by libtds to the client library's error handler
│ │ │ │ +
247 * (which may in turn call the client's error handler).
│ │ │ │ +
248 * These match the db-lib msgno, because the same values have the same meaning
│ │ │ │ +
249 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).
│ │ │ │ +
250 */
│ │ │ │ +
251typedef enum { TDSEOK = TDS_SUCCESS,
│ │ │ │ +
252 TDSEVERDOWN = 100,
│ │ │ │ +
253 TDSEINPROGRESS,
│ │ │ │ +
254 TDSEICONVIU = 2400,
│ │ │ │ +
255 TDSEICONVAVAIL = 2401,
│ │ │ │ +
256 TDSEICONVO = 2402,
│ │ │ │ +
257 TDSEICONVI = 2403,
│ │ │ │ +
258 TDSEICONV2BIG = 2404,
│ │ │ │ +
259 TDSEPORTINSTANCE = 2500,
│ │ │ │ +
260 TDSESYNC = 20001,
│ │ │ │ +
261 TDSEFCON = 20002,
│ │ │ │ +
262 TDSETIME = 20003,
│ │ │ │ +
263 TDSEREAD = 20004,
│ │ │ │ +
264 TDSEWRIT = 20006,
│ │ │ │ +
265 TDSESOCK = 20008,
│ │ │ │ +
266 TDSECONN = 20009,
│ │ │ │ +
267 TDSEMEM = 20010,
│ │ │ │ +
268 TDSEINTF = 20012, /* Server name not found in interface file */
│ │ │ │ +
269 TDSEUHST = 20013, /* Unknown host machine name. */
│ │ │ │ +
270 TDSEPWD = 20014,
│ │ │ │ +
271 TDSESEOF = 20017,
│ │ │ │ +
272 TDSERPND = 20019,
│ │ │ │ +
273 TDSEBTOK = 20020,
│ │ │ │ +
274 TDSEOOB = 20022,
│ │ │ │ +
275 TDSECLOS = 20056,
│ │ │ │ +
276 TDSEUSCT = 20058,
│ │ │ │ +
277 TDSEUTDS = 20146,
│ │ │ │ +
278 TDSEEUNR = 20185,
│ │ │ │ +
279 TDSECAP = 20203,
│ │ │ │ +
280 TDSENEG = 20210,
│ │ │ │ +
281 TDSEUMSG = 20212,
│ │ │ │ +
282 TDSECAPTYP = 20213,
│ │ │ │ +
283 TDSECONF = 20214,
│ │ │ │ +
284 TDSEBPROBADTYP = 20250,
│ │ │ │ +
285 TDSECLOSEIN = 20292
│ │ │ │ +
286} TDSERRNO;
│ │ │ │ +
287
│ │ │ │ +
288
│ │ │ │ +
289enum {
│ │ │ │ +
290 TDS_CUR_ISTAT_UNUSED = 0x00,
│ │ │ │ +
291 TDS_CUR_ISTAT_DECLARED = 0x01,
│ │ │ │ +
292 TDS_CUR_ISTAT_OPEN = 0x02,
│ │ │ │ +
293 TDS_CUR_ISTAT_CLOSED = 0x04,
│ │ │ │ +
294 TDS_CUR_ISTAT_RDONLY = 0x08,
│ │ │ │ +
295 TDS_CUR_ISTAT_UPDATABLE = 0x10,
│ │ │ │ +
296 TDS_CUR_ISTAT_ROWCNT = 0x20,
│ │ │ │ +
297 TDS_CUR_ISTAT_DEALLOC = 0x40
│ │ │ │ +
298};
│ │ │ │ +
299
│ │ │ │ +
300/* string types */
│ │ │ │ +
301#define TDS_NULLTERM -9
│ │ │ │ +
302
│ │ │ │
303
│ │ │ │ -
304struct tdsodbc_impl_bcp_colptr_params
│ │ │ │ +
│ │ │ │ +
304typedef union tds_option_arg
│ │ │ │
305{
│ │ │ │ -
306 const unsigned char * colptr;
│ │ │ │ -
307 int table_column;
│ │ │ │ -
308};
│ │ │ │ -
309
│ │ │ │ -
310static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
311bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)
│ │ │ │ -
312{
│ │ │ │ -
313 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
│ │ │ │ -
314 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
315}
│ │ │ │ -
316
│ │ │ │ -
317static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
318bcp_sendrow(HDBC hdbc)
│ │ │ │ -
319{
│ │ │ │ -
320 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
321}
│ │ │ │ -
322
│ │ │ │ -
323struct tdsodbc_impl_bcp_batch_params
│ │ │ │ -
324{
│ │ │ │ -
325 int rows;
│ │ │ │ -
326};
│ │ │ │ -
327
│ │ │ │ -
328static TDSODBC_INLINE int SQL_API
│ │ │ │ -
329bcp_batch(HDBC hdbc)
│ │ │ │ -
330{
│ │ │ │ -
331 struct tdsodbc_impl_bcp_batch_params params = {-1};
│ │ │ │ -
332 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, &params, SQL_IS_POINTER)) ? params.rows : -1;
│ │ │ │ -
333}
│ │ │ │ +
306 TDS_TINYINT ti;
│ │ │ │ +
307 TDS_INT i;
│ │ │ │ +
308 TDS_CHAR *c;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
310
│ │ │ │ +
311
│ │ │ │ +
312typedef enum tds_encryption_level {
│ │ │ │ +
313 TDS_ENCRYPTION_DEFAULT,
│ │ │ │ +
314 TDS_ENCRYPTION_OFF,
│ │ │ │ +
315 TDS_ENCRYPTION_REQUEST,
│ │ │ │ +
316 TDS_ENCRYPTION_REQUIRE,
│ │ │ │ +
317 TDS_ENCRYPTION_STRICT
│ │ │ │ +
318} TDS_ENCRYPTION_LEVEL;
│ │ │ │ +
319
│ │ │ │ +
320/*
│ │ │ │ +
321 * TODO use system macros for optimization
│ │ │ │ +
322 * See mcrypt for reference and linux kernel source for optimization
│ │ │ │ +
323 * check if unaligned access and use fast write/read when implemented
│ │ │ │ +
324 */
│ │ │ │ +
325#define TDS_BYTE_SWAP16(value) \
│ │ │ │ +
326 (((((uint16_t)value)<<8) & 0xFF00u) | \
│ │ │ │ +
327 ((((uint16_t)value)>>8) & 0x00FFu))
│ │ │ │ +
328
│ │ │ │ +
329#define TDS_BYTE_SWAP32(value) \
│ │ │ │ +
330 (((((uint32_t)value)<<24) & 0xFF000000u)| \
│ │ │ │ +
331 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \
│ │ │ │ +
332 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \
│ │ │ │ +
333 ((((uint32_t)value)>>24) & 0x000000FFu))
│ │ │ │
334
│ │ │ │ -
335struct tdsodbc_impl_bcp_done_params
│ │ │ │ -
336{
│ │ │ │ -
337 int rows;
│ │ │ │ -
338};
│ │ │ │ -
339
│ │ │ │ -
340static TDSODBC_INLINE int SQL_API
│ │ │ │ -
341bcp_done(HDBC hdbc)
│ │ │ │ -
342{
│ │ │ │ -
343 struct tdsodbc_impl_bcp_done_params params = {-1};
│ │ │ │ -
344 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, &params, SQL_IS_POINTER)) ? params.rows : -1;
│ │ │ │ -
345}
│ │ │ │ -
346
│ │ │ │ -
347struct tdsodbc_impl_bcp_bind_params
│ │ │ │ -
348{
│ │ │ │ -
349 const unsigned char * varaddr;
│ │ │ │ -
350 int prefixlen;
│ │ │ │ -
351 int varlen;
│ │ │ │ -
352 const unsigned char * terminator;
│ │ │ │ -
353 int termlen;
│ │ │ │ -
354 int vartype;
│ │ │ │ -
355 int table_column;
│ │ │ │ -
356};
│ │ │ │ -
357
│ │ │ │ -
358static TDSODBC_INLINE RETCODE SQL_API
│ │ │ │ -
359bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int varlen,
│ │ │ │ -
360 const unsigned char * terminator, int termlen, int vartype, int table_column)
│ │ │ │ -
361{
│ │ │ │ -
362 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
│ │ │ │ -
363 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
│ │ │ │ -
364}
│ │ │ │ -
365
│ │ │ │ -
366#ifdef UNICODE
│ │ │ │ -
367#define bcp_init bcp_initW
│ │ │ │ -
368#define BCPHINTS BCPHINTSW
│ │ │ │ -
369#else
│ │ │ │ -
370#define bcp_init bcp_initA
│ │ │ │ -
371#define BCPHINTS BCPHINTSA
│ │ │ │ -
372#endif
│ │ │ │ -
373
│ │ │ │ -
374#endif /* TDSODBC_BCP */
│ │ │ │ -
375
│ │ │ │ -
376#ifdef __cplusplus
│ │ │ │ -
377}
│ │ │ │ -
378#endif
│ │ │ │ -
379
│ │ │ │ -
380#endif /* _odbcss_h_ */
│ │ │ │ -
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:546
│ │ │ │ -
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:674
│ │ │ │ -
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int db_vartype, int table_column)
Bind a program host variable to a database column.
Definition bcp.c:2083
│ │ │ │ -
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition bcp.c:2041
│ │ │ │ -
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition bcp.c:2014
│ │ │ │ -
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition bcp.c:1384
│ │ │ │ -
Definition odbcss.h:133
│ │ │ │ -
Definition odbcss.h:140
│ │ │ │ -
Definition sybdb.h:296
│ │ │ │ +
335#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_TOKEN)
│ │ │ │ +
336
│ │ │ │ +
337enum {
│ │ │ │ +
338 TDS_TYPEFLAG_INVALID = 0,
│ │ │ │ +
339 TDS_TYPEFLAG_NULLABLE = 1,
│ │ │ │ +
340 TDS_TYPEFLAG_FIXED = 2,
│ │ │ │ +
341 TDS_TYPEFLAG_VARIABLE = 4,
│ │ │ │ +
342 TDS_TYPEFLAG_COLLATE = 8,
│ │ │ │ +
343 TDS_TYPEFLAG_ASCII = 16,
│ │ │ │ +
344 TDS_TYPEFLAG_UNICODE = 32,
│ │ │ │ +
345 TDS_TYPEFLAG_BINARY = 64,
│ │ │ │ +
346 TDS_TYPEFLAG_DATETIME = 128,
│ │ │ │ +
347 TDS_TYPEFLAG_NUMERIC = 256,
│ │ │ │ +
348 TDS_TYPEFLAG_VARIANT = 512,
│ │ │ │ +
349};
│ │ │ │ +
350
│ │ │ │ +
351extern const uint16_t tds_type_flags_ms[256];
│ │ │ │ +
352#if 0
│ │ │ │ +
353extern const uint16_t tds_type_flags_syb[256];
│ │ │ │ +
354extern const char *const tds_type_names[256];
│ │ │ │ +
355#endif
│ │ │ │ +
356
│ │ │ │ +
357#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)
│ │ │ │ +
358#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) != 0)
│ │ │ │ +
359#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
│ │ │ │ +
360#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIANT) != 0)
│ │ │ │ +
361
│ │ │ │ +
362
│ │ │ │ +
363#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)
│ │ │ │ +
364#define is_blob_col(x) ((x)->column_varint_size > 2)
│ │ │ │ +
365/* large type means it has a two byte size field */
│ │ │ │ +
366/* define is_large_type(x) (x>128) */
│ │ │ │ +
367#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)
│ │ │ │ +
369#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) != 0)
│ │ │ │ +
370#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
│ │ │ │ +
371#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != 0)
│ │ │ │ +
372#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)
│ │ │ │ +
373#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != 0)
│ │ │ │ +
374#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)
│ │ │ │ +
375#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))
│ │ │ │ +
376inline static bool
│ │ │ │ +
377is_tds_type_valid(int type)
│ │ │ │ +
378{
│ │ │ │ +
379 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;
│ │ │ │ +
380}
│ │ │ │ +
381
│ │ │ │ +
382
│ │ │ │ +
383#define TDS_MAX_CAPABILITY 32
│ │ │ │ +
384#define MAXPRECISION 77
│ │ │ │ +
385#define TDS_MAX_CONN 4096
│ │ │ │ +
386#define TDS_MAX_DYNID_LEN 30
│ │ │ │ +
387
│ │ │ │ +
388/* defaults to use if no others are found */
│ │ │ │ +
389#define TDS_DEF_SERVER "SYBASE"
│ │ │ │ +
390#define TDS_DEF_BLKSZ 512
│ │ │ │ +
391#define TDS_DEF_CHARSET "iso_1"
│ │ │ │ +
392#define TDS_DEF_LANG "us_english"
│ │ │ │ +
393#if TDS50
│ │ │ │ +
394#define TDS_DEFAULT_VERSION 0x500
│ │ │ │ +
395#define TDS_DEF_PORT 4000
│ │ │ │ +
396#elif TDS71
│ │ │ │ +
397#define TDS_DEFAULT_VERSION 0x701
│ │ │ │ +
398#define TDS_DEF_PORT 1433
│ │ │ │ +
399#elif TDS72
│ │ │ │ +
400#define TDS_DEFAULT_VERSION 0x702
│ │ │ │ +
401#define TDS_DEF_PORT 1433
│ │ │ │ +
402#elif TDS73
│ │ │ │ +
403#define TDS_DEFAULT_VERSION 0x703
│ │ │ │ +
404#define TDS_DEF_PORT 1433
│ │ │ │ +
405#elif TDS74
│ │ │ │ +
406#define TDS_DEFAULT_VERSION 0x704
│ │ │ │ +
407#define TDS_DEF_PORT 1433
│ │ │ │ +
408#else
│ │ │ │ +
409#define TDS_DEFAULT_VERSION 0x000
│ │ │ │ +
410#define TDS_DEF_PORT 1433
│ │ │ │ +
411#endif
│ │ │ │ +
412
│ │ │ │ +
413/* normalized strings from freetds.conf file */
│ │ │ │ +
414#define TDS_STR_VERSION "tds version"
│ │ │ │ +
415#define TDS_STR_BLKSZ "initial block size"
│ │ │ │ +
416#define TDS_STR_SWAPDT "swap broken dates"
│ │ │ │ +
417#define TDS_STR_DUMPFILE "dump file"
│ │ │ │ +
418#define TDS_STR_DEBUGLVL "debug level"
│ │ │ │ +
419#define TDS_STR_DEBUGFLAGS "debug flags"
│ │ │ │ +
420#define TDS_STR_TIMEOUT "timeout"
│ │ │ │ +
421#define TDS_STR_QUERY_TIMEOUT "query timeout"
│ │ │ │ +
422#define TDS_STR_CONNTIMEOUT "connect timeout"
│ │ │ │ +
423#define TDS_STR_HOSTNAME "hostname"
│ │ │ │ +
424#define TDS_STR_HOST "host"
│ │ │ │ +
425#define TDS_STR_PORT "port"
│ │ │ │ +
426#define TDS_STR_TEXTSZ "text size"
│ │ │ │ +
427/* for big endian hosts, obsolete, ignored */
│ │ │ │ +
428#define TDS_STR_EMUL_LE "emulate little endian"
│ │ │ │ +
429#define TDS_STR_CHARSET "charset"
│ │ │ │ +
430#define TDS_STR_CLCHARSET "client charset"
│ │ │ │ +
431#define TDS_STR_USE_UTF_16 "use utf-16"
│ │ │ │ +
432#define TDS_STR_LANGUAGE "language"
│ │ │ │ +
433#define TDS_STR_APPENDMODE "dump file append"
│ │ │ │ +
434#define TDS_STR_DATETIMEFMT "date format"
│ │ │ │ +
435#define TDS_STR_DATEFMT "date-only format"
│ │ │ │ +
436#define TDS_STR_TIMEFMT "time-only format"
│ │ │ │ +
437#define TDS_STR_INSTANCE "instance"
│ │ │ │ +
438#define TDS_STR_ASA_DATABASE "asa database"
│ │ │ │ +
439#define TDS_STR_DATABASE "database"
│ │ │ │ +
440#define TDS_STR_ENCRYPTION "encryption"
│ │ │ │ +
441#define TDS_STR_USENTLMV2 "use ntlmv2"
│ │ │ │ +
442#define TDS_STR_USELANMAN "use lanman"
│ │ │ │ +
443/* conf values */
│ │ │ │ +
444#define TDS_STR_ENCRYPTION_OFF "off"
│ │ │ │ +
445#define TDS_STR_ENCRYPTION_REQUEST "request"
│ │ │ │ +
446#define TDS_STR_ENCRYPTION_REQUIRE "require"
│ │ │ │ +
447#define TDS_STR_ENCRYPTION_STRICT "strict"
│ │ │ │ +
448/* Defines to enable optional GSSAPI delegation */
│ │ │ │ +
449#define TDS_GSSAPI_DELEGATION "enable gssapi delegation"
│ │ │ │ +
450/* Mutual authentication */
│ │ │ │ +
451#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication"
│ │ │ │ +
452/* Kerberos realm name */
│ │ │ │ +
453#define TDS_STR_REALM "realm"
│ │ │ │ +
454/* Kerberos SPN */
│ │ │ │ +
455#define TDS_STR_SPN "spn"
│ │ │ │ +
456/* CA file */
│ │ │ │ +
457#define TDS_STR_CAFILE "ca file"
│ │ │ │ +
458/* CRL file */
│ │ │ │ +
459#define TDS_STR_CRLFILE "crl file"
│ │ │ │ +
460/* check SSL hostname */
│ │ │ │ +
461#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname"
│ │ │ │ +
462/* SSL hostname to check certificate */
│ │ │ │ +
463#define TDS_STR_SSLHOSTNAME "certificate hostname"
│ │ │ │ +
464/* database filename to attach on login (MSSQL) */
│ │ │ │ +
465#define TDS_STR_DBFILENAME "database filename"
│ │ │ │ +
466/* Application Intent MSSQL 2012 support */
│ │ │ │ +
467#define TDS_STR_READONLY_INTENT "read-only intent"
│ │ │ │ +
468/* configurable cipher suite to send to openssl's SSL_set_cipher_list() function */
│ │ │ │ +
469#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers"
│ │ │ │ +
470/* enable old TLS v1, required for instance if you are using a really old Windows XP */
│ │ │ │ +
471#define TDS_STR_ENABLE_TLS_V1 "enable tls v1"
│ │ │ │ +
472
│ │ │ │ +
473
│ │ │ │ +
474/* TODO do a better check for alignment than this */
│ │ │ │ +
│ │ │ │ +
475typedef union
│ │ │ │ +
476{
│ │ │ │ +
477 void *p;
│ │ │ │ +
478 int i;
│ │ │ │ +
479 int64_t ui;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
481
│ │ │ │ +
482#define TDS_ALIGN_SIZE sizeof(tds_align_struct)
│ │ │ │ +
483
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
485{
│ │ │ │ +
486 unsigned char type;
│ │ │ │ +
487 unsigned char len; /* always sizeof(values) */
│ │ │ │ +
488 unsigned char values[TDS_MAX_CAPABILITY/2-2];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
490
│ │ │ │ +
│ │ │ │ +
491typedef struct tds_capabilities
│ │ │ │ +
492{
│ │ │ │ +
493 TDS_CAPABILITY_TYPE types[2];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
495
│ │ │ │ +
496#define TDS_MAX_LOGIN_STR_SZ 128
│ │ │ │ +
│ │ │ │ +
497typedef struct tds_login
│ │ │ │ +
498{
│ │ │ │ + │ │ │ │ +
500 int port;
│ │ │ │ +
501 TDS_USMALLINT tds_version;
│ │ │ │ +
502 int block_size;
│ │ │ │ +
503 DSTR language; /* e.g. us-english */
│ │ │ │ + │ │ │ │ +
505 TDS_INT connect_timeout;
│ │ │ │ +
506 DSTR client_host_name;
│ │ │ │ +
507 DSTR server_host_name;
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
514 DSTR openssl_ciphers;
│ │ │ │ +
515 DSTR app_name;
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
520 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */
│ │ │ │ +
521 TDS_TINYINT encryption_level;
│ │ │ │ +
522
│ │ │ │ +
523 TDS_INT query_timeout;
│ │ │ │ +
524 TDS_CAPABILITIES capabilities;
│ │ │ │ +
525 DSTR client_charset;
│ │ │ │ +
526 DSTR database;
│ │ │ │ +
527
│ │ │ │ +
528 struct addrinfo *ip_addrs;
│ │ │ │ +
529 DSTR instance_name;
│ │ │ │ +
530 tds_dir_char *dump_file;
│ │ │ │ +
531 int debug_flags;
│ │ │ │ +
532 int text_size;
│ │ │ │ +
533 DSTR routing_address;
│ │ │ │ +
534 uint16_t routing_port;
│ │ │ │ +
535
│ │ │ │ +
536 unsigned char option_flag2;
│ │ │ │ +
537
│ │ │ │ +
538 unsigned int bulk_copy:1;
│ │ │ │ +
539 unsigned int suppress_language:1;
│ │ │ │ +
540 unsigned int gssapi_use_delegation:1;
│ │ │ │ +
541 unsigned int mutual_authentication:1;
│ │ │ │ +
542 unsigned int use_ntlmv2:1;
│ │ │ │ +
543 unsigned int use_ntlmv2_specified:1;
│ │ │ │ +
544 unsigned int use_lanman:1;
│ │ │ │ +
545 unsigned int mars:1;
│ │ │ │ +
546 unsigned int use_utf16:1;
│ │ │ │ +
547 unsigned int use_new_password:1;
│ │ │ │ +
548 unsigned int valid_configuration:1;
│ │ │ │ +
549 unsigned int check_ssl_hostname:1;
│ │ │ │ +
550 unsigned int readonly_intent:1;
│ │ │ │ +
551 unsigned int enable_tls_v1:1;
│ │ │ │ +
552 unsigned int enable_tls_v1_specified:1;
│ │ │ │ +
553 unsigned int server_is_valid:1;
│ │ │ │ +
554} TDSLOGIN;
│ │ │ │ +
│ │ │ │ +
555
│ │ │ │ +
│ │ │ │ +
556typedef struct tds_headers
│ │ │ │ +
557{
│ │ │ │ +
558 const char *qn_options;
│ │ │ │ +
559 const char *qn_msgtext;
│ │ │ │ +
560 TDS_INT qn_timeout;
│ │ │ │ +
561 /* TDS 7.4+: trace activity ID char[20] */
│ │ │ │ +
562} TDSHEADERS;
│ │ │ │ +
│ │ │ │ +
563
│ │ │ │ +
│ │ │ │ +
564typedef struct tds_locale
│ │ │ │ +
565{
│ │ │ │ +
566 char *language;
│ │ │ │ +
567 char *server_charset;
│ │ │ │ +
568 char *datetime_fmt;
│ │ │ │ +
569 char *date_fmt;
│ │ │ │ +
570 char *time_fmt;
│ │ │ │ +
571} TDSLOCALE;
│ │ │ │ +
│ │ │ │ +
572
│ │ │ │ +
│ │ │ │ +
577typedef struct tds_blob
│ │ │ │ +
578{
│ │ │ │ +
579 TDS_CHAR *textvalue;
│ │ │ │ +
580 TDS_CHAR textptr[16];
│ │ │ │ +
581 TDS_CHAR timestamp[8];
│ │ │ │ +
582 bool valid_ptr;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
584
│ │ │ │ +
│ │ │ │ +
588typedef struct tds_variant
│ │ │ │ +
589{
│ │ │ │ +
590 /* this MUST have same position and place of textvalue in tds_blob */
│ │ │ │ +
591 TDS_CHAR *data;
│ │ │ │ +
592 TDS_INT size;
│ │ │ │ +
593 TDS_INT data_len;
│ │ │ │ +
594 TDS_SERVER_TYPE type;
│ │ │ │ +
595 TDS_UCHAR collation[5];
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
597
│ │ │ │ +
│ │ │ │ +
602typedef struct tds_encoding
│ │ │ │ +
603{
│ │ │ │ +
605 const char *name;
│ │ │ │ +
606 unsigned char min_bytes_per_char;
│ │ │ │ +
607 unsigned char max_bytes_per_char;
│ │ │ │ +
609 unsigned char canonic;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
611
│ │ │ │ +
│ │ │ │ +
612typedef struct tds_bcpcoldata
│ │ │ │ +
613{
│ │ │ │ +
614 TDS_UCHAR *data;
│ │ │ │ +
615 TDS_INT datalen;
│ │ │ │ +
616 bool is_null;
│ │ │ │ +
617} BCPCOLDATA;
│ │ │ │ +
│ │ │ │ +
618
│ │ │ │ +
619
│ │ │ │ +
620typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ +
621typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ +
622typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);
│ │ │ │ +
623typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ +
624typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);
│ │ │ │ +
625typedef int tds_func_check(const TDSCOLUMN *col);
│ │ │ │ +
626
│ │ │ │ +
│ │ │ │ +
627typedef struct tds_column_funcs
│ │ │ │ +
628{
│ │ │ │ +
629 tds_func_get_info *get_info;
│ │ │ │ +
630 tds_func_get_data *get_data;
│ │ │ │ +
631 tds_func_row_len *row_len;
│ │ │ │ +
637 tds_func_put_info *put_info;
│ │ │ │ +
647 tds_func_put_data *put_data;
│ │ │ │ +
648#if ENABLE_EXTRA_CHECKS
│ │ │ │ +
663 tds_func_check *check;
│ │ │ │ +
664#endif
│ │ │ │ +
665#if 0
│ │ │ │ +
666 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);
│ │ │ │ +
667#endif
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
669
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
674{
│ │ │ │ +
675 const TDSCOLUMNFUNCS *funcs;
│ │ │ │ +
676 TDS_INT column_usertype;
│ │ │ │ +
677 TDS_INT column_flags;
│ │ │ │ +
678
│ │ │ │ +
679 TDS_INT column_size;
│ │ │ │ +
681 TDS_SERVER_TYPE column_type;
│ │ │ │ +
686 TDS_TINYINT column_varint_size;
│ │ │ │ +
688 TDS_TINYINT column_prec;
│ │ │ │ +
689 TDS_TINYINT column_scale;
│ │ │ │ +
691 struct
│ │ │ │ +
692 {
│ │ │ │ +
693 TDS_SERVER_TYPE column_type;
│ │ │ │ +
694 TDS_INT column_size;
│ │ │ │ +
695 } on_server;
│ │ │ │ +
696
│ │ │ │ + │ │ │ │ +
699 DSTR table_name;
│ │ │ │ +
700 DSTR column_name;
│ │ │ │ +
701 DSTR table_column_name;
│ │ │ │ +
702
│ │ │ │ +
703 unsigned char *column_data;
│ │ │ │ +
704 void (*column_data_free)(struct tds_column *column);
│ │ │ │ +
705 unsigned char column_nullable:1;
│ │ │ │ +
706 unsigned char column_writeable:1;
│ │ │ │ +
707 unsigned char column_identity:1;
│ │ │ │ +
708 unsigned char column_key:1;
│ │ │ │ +
709 unsigned char column_hidden:1;
│ │ │ │ +
710 unsigned char column_output:1;
│ │ │ │ +
711 unsigned char column_timestamp:1;
│ │ │ │ +
712 unsigned char column_computed:1;
│ │ │ │ +
713 TDS_UCHAR column_collation[5];
│ │ │ │ +
714
│ │ │ │ +
715 /* additional fields flags for compute results */
│ │ │ │ +
716 TDS_SMALLINT column_operand;
│ │ │ │ +
717 TDS_TINYINT column_operator;
│ │ │ │ +
718
│ │ │ │ +
719 /* FIXME this is data related, not column */
│ │ │ │ + │ │ │ │ +
722
│ │ │ │ +
723 /* related to binding or info stored by client libraries */
│ │ │ │ +
724 /* FIXME find a best place to store these data, some are unused */
│ │ │ │ +
725 TDS_SMALLINT column_bindtype;
│ │ │ │ +
726 TDS_SMALLINT column_bindfmt;
│ │ │ │ +
727 TDS_INT column_bindlen;
│ │ │ │ +
728 TDS_SMALLINT *column_nullbind;
│ │ │ │ +
729 TDS_CHAR *column_varaddr;
│ │ │ │ +
730 TDS_INT *column_lenbind;
│ │ │ │ +
731 TDS_INT column_textpos;
│ │ │ │ +
732 TDS_INT column_text_sqlgetdatapos;
│ │ │ │ +
733 TDS_CHAR column_text_sqlputdatainfo;
│ │ │ │ +
734 unsigned char column_iconv_left;
│ │ │ │ +
735 char column_iconv_buf[9];
│ │ │ │ +
736
│ │ │ │ +
737 BCPCOLDATA *bcp_column_data;
│ │ │ │ + │ │ │ │ +
747 TDS_INT bcp_term_len;
│ │ │ │ +
748 TDS_CHAR *bcp_terminator;
│ │ │ │ +
749};
│ │ │ │ +
│ │ │ │ +
750
│ │ │ │ +
751
│ │ │ │ +
│ │ │ │ +
753typedef struct tds_result_info
│ │ │ │ +
754{
│ │ │ │ +
755 /* TODO those fields can became a struct */
│ │ │ │ +
756 TDSCOLUMN **columns;
│ │ │ │ +
757 TDS_USMALLINT num_cols;
│ │ │ │ +
758 TDS_USMALLINT computeid;
│ │ │ │ +
759 TDS_INT ref_count;
│ │ │ │ +
760 TDSSOCKET *attached_to;
│ │ │ │ +
761 unsigned char *current_row;
│ │ │ │ +
762 void (*row_free)(struct tds_result_info* result, unsigned char *row);
│ │ │ │ +
763 TDS_INT row_size;
│ │ │ │ +
764
│ │ │ │ +
765 TDS_SMALLINT *bycolumns;
│ │ │ │ +
766 TDS_USMALLINT by_cols;
│ │ │ │ +
767 bool rows_exist;
│ │ │ │ +
768 /* TODO remove ?? used only in dblib */
│ │ │ │ +
769 bool more_results;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
771
│ │ │ │ +
│ │ │ │ +
773typedef enum tds_states
│ │ │ │ +
774{
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
780 TDS_DEAD
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
782
│ │ │ │ +
783typedef enum tds_operations
│ │ │ │ +
784{
│ │ │ │ +
785 TDS_OP_NONE = 0,
│ │ │ │ +
786
│ │ │ │ +
787 /* MSSQL operations, these matches protocol definitions */
│ │ │ │ +
788 TDS_OP_CURSOR = TDS_SP_CURSOR,
│ │ │ │ +
789 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,
│ │ │ │ +
790 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,
│ │ │ │ +
791 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,
│ │ │ │ +
792 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,
│ │ │ │ +
793 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,
│ │ │ │ +
794 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,
│ │ │ │ +
795 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,
│ │ │ │ +
796 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,
│ │ │ │ +
797 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,
│ │ │ │ +
798 TDS_OP_PREPARE = TDS_SP_PREPARE,
│ │ │ │ +
799 TDS_OP_EXECUTE = TDS_SP_EXECUTE,
│ │ │ │ +
800 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,
│ │ │ │ +
801 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,
│ │ │ │ +
802 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,
│ │ │ │ +
803
│ │ │ │ +
804 /* sybase operations */
│ │ │ │ +
805 TDS_OP_DYN_DEALLOC = 100,
│ │ │ │ +
806} TDS_OPERATION;
│ │ │ │ +
807
│ │ │ │ +
808#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)
│ │ │ │ +
809#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)
│ │ │ │ +
810#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)
│ │ │ │ +
811#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)
│ │ │ │ +
812#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)
│ │ │ │ +
813#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)
│ │ │ │ +
814#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)
│ │ │ │ +
815#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)
│ │ │ │ +
816#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)
│ │ │ │ +
817
│ │ │ │ +
818#define TDS_DBGFLAG_FUNC 0x80
│ │ │ │ +
819#define TDS_DBGFLAG_INFO2 0x40
│ │ │ │ +
820#define TDS_DBGFLAG_INFO1 0x20
│ │ │ │ +
821#define TDS_DBGFLAG_NETWORK 0x10
│ │ │ │ +
822#define TDS_DBGFLAG_WARN 0x08
│ │ │ │ +
823#define TDS_DBGFLAG_ERROR 0x04
│ │ │ │ +
824#define TDS_DBGFLAG_SEVERE 0x02
│ │ │ │ +
825#define TDS_DBGFLAG_ALL 0xfff
│ │ │ │ +
826#define TDS_DBGFLAG_LOGIN 0x0800
│ │ │ │ +
827#define TDS_DBGFLAG_HEADER 0x0400
│ │ │ │ +
828#define TDS_DBGFLAG_PID 0x1000
│ │ │ │ +
829#define TDS_DBGFLAG_TIME 0x2000
│ │ │ │ +
830#define TDS_DBGFLAG_SOURCE 0x4000
│ │ │ │ +
831#define TDS_DBGFLAG_THREAD 0x8000
│ │ │ │ +
832
│ │ │ │ +
833#if 0
│ │ │ │ +
839enum TDS_DBG_LOG_STATE
│ │ │ │ +
840{
│ │ │ │ +
841 TDS_DBG_LOGIN = (1 << 0)
│ │ │ │ +
843 , TDS_DBG_API = (1 << 1)
│ │ │ │ +
844 , TDS_DBG_ASYNC = (1 << 2)
│ │ │ │ +
845 , TDS_DBG_DIAG = (1 << 3)
│ │ │ │ +
846 , TDS_DBG_error = (1 << 4)
│ │ │ │ +
847 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */
│ │ │ │ +
848 /* Log FreeTDS runtime/logic error occurs. */
│ │ │ │ +
849 , TDS_DBG_PACKET = (1 << 5)
│ │ │ │ +
850 , TDS_DBG_LIBTDS = (1 << 6)
│ │ │ │ +
851 , TDS_DBG_CONFIG = (1 << 7)
│ │ │ │ +
852 , TDS_DBG_DEFAULT = 0xFE
│ │ │ │ +
853};
│ │ │ │ +
854#endif
│ │ │ │ +
855
│ │ │ │ +
856typedef struct tds_result_info TDSCOMPUTEINFO;
│ │ │ │ +
857
│ │ │ │ + │ │ │ │ +
859
│ │ │ │ +
│ │ │ │ +
860typedef struct tds_message
│ │ │ │ +
861{
│ │ │ │ +
862 TDS_CHAR *server;
│ │ │ │ +
863 TDS_CHAR *message;
│ │ │ │ +
864 TDS_CHAR *proc_name;
│ │ │ │ +
865 TDS_CHAR *sql_state;
│ │ │ │ +
866 TDS_INT msgno;
│ │ │ │ +
867 TDS_INT line_number;
│ │ │ │ +
868 /* -1 .. 255 */
│ │ │ │ +
869 TDS_SMALLINT state;
│ │ │ │ +
870 TDS_TINYINT priv_msg_type;
│ │ │ │ +
871 TDS_TINYINT severity;
│ │ │ │ +
872 /* for library-generated errors */
│ │ │ │ +
873 int oserr;
│ │ │ │ +
874} TDSMESSAGE;
│ │ │ │ +
│ │ │ │ +
875
│ │ │ │ +
│ │ │ │ +
876typedef struct tds_upd_col
│ │ │ │ +
877{
│ │ │ │ +
878 struct tds_upd_col *next;
│ │ │ │ +
879 TDS_INT colnamelength;
│ │ │ │ +
880 char * columnname;
│ │ │ │ +
881} TDSUPDCOL;
│ │ │ │ +
│ │ │ │ +
882
│ │ │ │ +
883typedef enum {
│ │ │ │ +
884 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */
│ │ │ │ +
885 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */
│ │ │ │ +
886 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */
│ │ │ │ +
887 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */
│ │ │ │ +
888} TDS_CURSOR_STATE;
│ │ │ │ +
889
│ │ │ │ +
│ │ │ │ +
890typedef struct tds_cursor_status
│ │ │ │ +
891{
│ │ │ │ +
892 TDS_CURSOR_STATE declare;
│ │ │ │ +
893 TDS_CURSOR_STATE cursor_row;
│ │ │ │ +
894 TDS_CURSOR_STATE open;
│ │ │ │ +
895 TDS_CURSOR_STATE fetch;
│ │ │ │ +
896 TDS_CURSOR_STATE close;
│ │ │ │ +
897 TDS_CURSOR_STATE dealloc;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
899
│ │ │ │ +
900typedef enum tds_cursor_operation
│ │ │ │ +
901{
│ │ │ │ +
902 TDS_CURSOR_POSITION = 0,
│ │ │ │ +
903 TDS_CURSOR_UPDATE = 1,
│ │ │ │ +
904 TDS_CURSOR_DELETE = 2,
│ │ │ │ +
905 TDS_CURSOR_INSERT = 4
│ │ │ │ +
906} TDS_CURSOR_OPERATION;
│ │ │ │ +
907
│ │ │ │ +
908typedef enum tds_cursor_fetch
│ │ │ │ +
909{
│ │ │ │ +
910 TDS_CURSOR_FETCH_NEXT = 1,
│ │ │ │ +
911 TDS_CURSOR_FETCH_PREV,
│ │ │ │ +
912 TDS_CURSOR_FETCH_FIRST,
│ │ │ │ +
913 TDS_CURSOR_FETCH_LAST,
│ │ │ │ +
914 TDS_CURSOR_FETCH_ABSOLUTE,
│ │ │ │ +
915 TDS_CURSOR_FETCH_RELATIVE
│ │ │ │ +
916} TDS_CURSOR_FETCH;
│ │ │ │ +
917
│ │ │ │ +
│ │ │ │ +
921typedef struct tds_cursor
│ │ │ │ +
922{
│ │ │ │ +
923 struct tds_cursor *next;
│ │ │ │ +
924 TDS_INT ref_count;
│ │ │ │ + │ │ │ │ +
926 TDS_INT cursor_id;
│ │ │ │ +
927 TDS_TINYINT options;
│ │ │ │ + │ │ │ │ +
932 char *query;
│ │ │ │ +
933 /* TODO for updatable columns */
│ │ │ │ +
934 /* TDS_TINYINT number_upd_cols; */
│ │ │ │ +
935 /* TDSUPDCOL *cur_col_list; */
│ │ │ │ +
936 TDS_INT cursor_rows;
│ │ │ │ +
937 /* TDSPARAMINFO *params; */
│ │ │ │ + │ │ │ │ +
939 TDS_USMALLINT srv_status;
│ │ │ │ +
940 TDSRESULTINFO *res_info;
│ │ │ │ +
941 TDS_INT type, concurrency;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
943
│ │ │ │ +
│ │ │ │ +
947typedef struct tds_env
│ │ │ │ +
948{
│ │ │ │ + │ │ │ │ +
951 char *language;
│ │ │ │ +
953 char *charset;
│ │ │ │ +
955 char *database;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
957
│ │ │ │ +
│ │ │ │ +
961typedef struct tds_dynamic
│ │ │ │ +
962{
│ │ │ │ + │ │ │ │ +
964 TDS_INT ref_count;
│ │ │ │ +
966 TDS_INT num_id;
│ │ │ │ +
972 char id[30];
│ │ │ │ + │ │ │ │ + │ │ │ │ +
983 /* int dyn_state; */ /* TODO use it */
│ │ │ │ + │ │ │ │ + │ │ │ │ +
994 char *query;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
996
│ │ │ │ +
997typedef enum {
│ │ │ │ +
998 TDS_MULTIPLE_QUERY,
│ │ │ │ +
999 TDS_MULTIPLE_EXECUTE,
│ │ │ │ +
1000 TDS_MULTIPLE_RPC
│ │ │ │ +
1001} TDS_MULTIPLE_TYPE;
│ │ │ │ +
1002
│ │ │ │ +
│ │ │ │ +
1003typedef struct tds_multiple
│ │ │ │ +
1004{
│ │ │ │ +
1005 TDS_MULTIPLE_TYPE type;
│ │ │ │ +
1006 unsigned int flags;
│ │ │ │ +
1007} TDSMULTIPLE;
│ │ │ │ +
│ │ │ │ +
1008
│ │ │ │ +
1009/* forward declaration */
│ │ │ │ +
1010typedef struct tds_context TDSCONTEXT;
│ │ │ │ +
1011typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ +
1012typedef int (*int_handler_t) (void *);
│ │ │ │ +
1013
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1015{
│ │ │ │ +
1016 TDSLOCALE *locale;
│ │ │ │ +
1017 void *parent;
│ │ │ │ +
1018 /* handlers */
│ │ │ │ +
1019 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ +
1020 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
│ │ │ │ +
1021 int (*int_handler) (void *);
│ │ │ │ +
1022 bool money_use_2_digits;
│ │ │ │ +
1023};
│ │ │ │ +
│ │ │ │ +
1024
│ │ │ │ +
1025enum TDS_ICONV_ENTRY
│ │ │ │ +
1026{
│ │ │ │ +
1027 client2ucs2
│ │ │ │ +
1028 , client2server_chardata
│ │ │ │ +
1029 , initial_char_conv_count /* keep last */
│ │ │ │ +
1030};
│ │ │ │ +
1031
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1033{
│ │ │ │ +
1034 uint8_t *packet;
│ │ │ │ +
1035 int packet_len;
│ │ │ │ +
1036 /* TDS_MSG_TOKEN type, for TDS5 */
│ │ │ │ +
1037 uint16_t msg_type;
│ │ │ │ +
1038 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);
│ │ │ │ +
1039 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, size_t len);
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
1041
│ │ │ │ +
│ │ │ │ +
1042typedef struct tds_packet
│ │ │ │ +
1043{
│ │ │ │ +
1044 struct tds_packet *next;
│ │ │ │ +
1045 uint16_t sid;
│ │ │ │ +
1046
│ │ │ │ +
1047#if ENABLE_ODBC_MARS
│ │ │ │ +
1051 uint8_t data_start;
│ │ │ │ +
1052#endif
│ │ │ │ +
1053
│ │ │ │ +
1057 unsigned data_len;
│ │ │ │ +
1058 unsigned capacity;
│ │ │ │ +
1059 unsigned char buf[1];
│ │ │ │ +
1060} TDSPACKET;
│ │ │ │ +
│ │ │ │ +
1061
│ │ │ │ +
1062#if ENABLE_ODBC_MARS
│ │ │ │ +
1063#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while(0)
│ │ │ │ +
1064#define tds_packet_get_data_start(pkt) ((pkt)->data_start)
│ │ │ │ +
1065#else
│ │ │ │ +
1066#define tds_packet_zero_data_start(pkt) do { } while(0)
│ │ │ │ +
1067#define tds_packet_get_data_start(pkt) 0
│ │ │ │ +
1068#endif
│ │ │ │ +
1069
│ │ │ │ +
│ │ │ │ +
1070typedef struct tds_poll_wakeup
│ │ │ │ +
1071{
│ │ │ │ +
1072 TDS_SYS_SOCKET s_signal, s_signaled;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
1074
│ │ │ │ +
1075/* field related to connection */
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1077{
│ │ │ │ +
1078 TDS_USMALLINT tds_version;
│ │ │ │ +
1079 bool corked;
│ │ │ │ + │ │ │ │ +
1081 char *product_name;
│ │ │ │ +
1082
│ │ │ │ +
1083 TDS_SYS_SOCKET s;
│ │ │ │ +
1084 TDSPOLLWAKEUP wakeup;
│ │ │ │ +
1085 const TDSCONTEXT *tds_ctx;
│ │ │ │ +
1086
│ │ │ │ + │ │ │ │ +
1089
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1100
│ │ │ │ +
1101 int char_conv_count;
│ │ │ │ +
1102 TDSICONV **char_convs;
│ │ │ │ +
1103
│ │ │ │ +
1104 TDS_UCHAR collation[5];
│ │ │ │ +
1105 TDS_UCHAR tds72_transaction[8];
│ │ │ │ +
1106
│ │ │ │ +
1107 TDS_CAPABILITIES capabilities;
│ │ │ │ +
1108 unsigned int use_iconv:1;
│ │ │ │ +
1109 unsigned int tds71rev1:1;
│ │ │ │ +
1110 unsigned int pending_close:1;
│ │ │ │ +
1111 unsigned int encrypt_single_packet:1;
│ │ │ │ +
1112#if ENABLE_ODBC_MARS
│ │ │ │ +
1113 unsigned int mars:1;
│ │ │ │ +
1114
│ │ │ │ +
1115 TDSSOCKET *in_net_tds;
│ │ │ │ +
1116 TDSPACKET *packets;
│ │ │ │ +
1117 TDSPACKET *recv_packet;
│ │ │ │ +
1118 TDSPACKET *send_packets;
│ │ │ │ +
1119 unsigned send_pos, recv_pos;
│ │ │ │ +
1120
│ │ │ │ +
1121#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)
│ │ │ │ +
1122#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)
│ │ │ │ +
1123 struct tds_socket **sessions;
│ │ │ │ +
1124 unsigned num_sessions;
│ │ │ │ +
1125#endif
│ │ │ │ +
1126 tds_mutex list_mtx;
│ │ │ │ +
1127
│ │ │ │ +
1128 unsigned num_cached_packets;
│ │ │ │ +
1129 TDSPACKET *packet_cache;
│ │ │ │ +
1130
│ │ │ │ +
1131 int spid;
│ │ │ │ +
1132 int client_spid;
│ │ │ │ +
1133
│ │ │ │ +
1138 uint8_t ncharsize;
│ │ │ │ +
1139
│ │ │ │ + │ │ │ │ +
1146
│ │ │ │ +
1147 void *tls_session;
│ │ │ │ +
1148#if defined(HAVE_GNUTLS)
│ │ │ │ +
1149 void *tls_credentials;
│ │ │ │ +
1150#elif defined(HAVE_OPENSSL)
│ │ │ │ +
1151 void *tls_ctx;
│ │ │ │ +
1152#else
│ │ │ │ +
1153 void *tls_dummy;
│ │ │ │ +
1154#endif
│ │ │ │ +
1155 TDSAUTHENTICATION *authentication;
│ │ │ │ +
1156 char *server;
│ │ │ │ +
1157};
│ │ │ │ +
│ │ │ │ +
1158
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1163{
│ │ │ │ +
1164#if ENABLE_ODBC_MARS
│ │ │ │ +
1165 TDSCONNECTION *conn;
│ │ │ │ +
1166#else
│ │ │ │ +
1167 TDSCONNECTION conn[1];
│ │ │ │ +
1168#endif
│ │ │ │ +
1169
│ │ │ │ +
1170 void *parent;
│ │ │ │ +
1171
│ │ │ │ +
1177 unsigned char *in_buf;
│ │ │ │ +
1178
│ │ │ │ +
1185 unsigned char *out_buf;
│ │ │ │ +
1186
│ │ │ │ +
1191 unsigned int out_buf_max;
│ │ │ │ +
1192 unsigned in_pos;
│ │ │ │ +
1193 unsigned out_pos;
│ │ │ │ +
1194 unsigned in_len;
│ │ │ │ +
1195 unsigned char in_flag;
│ │ │ │ +
1196 unsigned char out_flag;
│ │ │ │ +
1198 unsigned frozen;
│ │ │ │ + │ │ │ │ +
1204
│ │ │ │ +
1205#if ENABLE_ODBC_MARS
│ │ │ │ +
1210 uint16_t sid;
│ │ │ │ +
1211
│ │ │ │ +
1216 tds_condition packet_cond;
│ │ │ │ +
1217
│ │ │ │ +
1222 TDSPACKET *sending_packet;
│ │ │ │ +
1223 TDS_UINT recv_seq;
│ │ │ │ +
1224 TDS_UINT send_seq;
│ │ │ │ +
1225 TDS_UINT recv_wnd;
│ │ │ │ +
1226 TDS_UINT send_wnd;
│ │ │ │ +
1227#endif
│ │ │ │ +
1228 /* packet we received */
│ │ │ │ +
1229 TDSPACKET *recv_packet;
│ │ │ │ + │ │ │ │ +
1232
│ │ │ │ + │ │ │ │ +
1239 TDSRESULTINFO *res_info;
│ │ │ │ +
1240 TDS_UINT num_comp_info;
│ │ │ │ +
1241 TDSCOMPUTEINFO **comp_info;
│ │ │ │ +
1242 TDSPARAMINFO *param_info;
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
1246 bool in_row;
│ │ │ │ +
1247 volatile
│ │ │ │ +
1248 unsigned char in_cancel;
│ │ │ │ +
1250 TDS_INT ret_status;
│ │ │ │ +
1251 TDS_STATE state;
│ │ │ │ +
1252
│ │ │ │ +
1253 TDS_INT query_timeout;
│ │ │ │ +
1254 TDS_INT8 rows_affected;
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char *newval);
│ │ │ │ +
1261 TDS_OPERATION current_op;
│ │ │ │ +
1262
│ │ │ │ +
1263 int option_value;
│ │ │ │ +
1264 tds_mutex wire_mtx;
│ │ │ │ +
1265};
│ │ │ │ +
│ │ │ │ +
1266
│ │ │ │ +
1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)
│ │ │ │ +
1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while(0)
│ │ │ │ +
1269#define tds_get_parent(tds) ((tds)->parent)
│ │ │ │ +
1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)
│ │ │ │ +
1271#define tds_get_s(tds) ((tds)->conn->s)
│ │ │ │ +
1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)
│ │ │ │ +
1273
│ │ │ │ +
│ │ │ │ +
1274typedef struct tds_tvp_row
│ │ │ │ +
1275{
│ │ │ │ +
1276 TDSPARAMINFO *params;
│ │ │ │ +
1277 struct tds_tvp_row *next;
│ │ │ │ +
1278} TDS_TVP_ROW;
│ │ │ │ +
│ │ │ │ +
1279
│ │ │ │ +
│ │ │ │ +
1280typedef struct tds_tvp
│ │ │ │ +
1281{
│ │ │ │ +
1282 char *schema;
│ │ │ │ +
1283 char *name;
│ │ │ │ +
1284 TDSPARAMINFO *metadata;
│ │ │ │ +
1285 TDS_TVP_ROW *row;
│ │ │ │ +
1286} TDS_TVP;
│ │ │ │ +
│ │ │ │ +
1287
│ │ │ │ +
1288
│ │ │ │ +
1289/* config.c */
│ │ │ │ + │ │ │ │ +
1291typedef bool (*TDSCONFPARSE) (const char *option, const char *value, void *param);
│ │ │ │ +
1292bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param);
│ │ │ │ +
1293bool tds_read_conf_file(TDSLOGIN * login, const char *server);
│ │ │ │ +
1294bool tds_parse_conf_section(const char *option, const char *value, void *param);
│ │ │ │ +
1295TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE * locale);
│ │ │ │ +
1296void tds_fix_login(TDSLOGIN* login);
│ │ │ │ +
1297TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);
│ │ │ │ +
1298struct addrinfo *tds_lookup_host(const char *servername);
│ │ │ │ +
1299TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr);
│ │ │ │ +
1300const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int namemax);
│ │ │ │ +
1301
│ │ │ │ +
1302TDSRET tds_set_interfaces_file_loc(const char *interfloc);
│ │ │ │ +
1303extern const char STD_DATETIME_FMT[];
│ │ │ │ +
1304int tds_parse_boolean(const char *value, int default_value);
│ │ │ │ +
1305int tds_config_boolean(const char *option, const char *value, TDSLOGIN * login);
│ │ │ │ +
1306
│ │ │ │ + │ │ │ │ +
1308TDSRET tds_alloc_row(TDSRESULTINFO * res_info);
│ │ │ │ +
1309TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);
│ │ │ │ +
1310BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);
│ │ │ │ +
1311TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);
│ │ │ │ +
1312/*@observer@*/ const char *tds_prtype(int token);
│ │ │ │ +
1313int tds_get_varint_size(TDSCONNECTION * conn, int datatype);
│ │ │ │ +
1314TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int usertype);
│ │ │ │ +
1315TDSRET tds8_adjust_login(TDSLOGIN *login);
│ │ │ │ +
1316
│ │ │ │ +
1317
│ │ │ │ +
1318/* iconv.c */
│ │ │ │ +
1319TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_utf16);
│ │ │ │ +
1320void tds_iconv_close(TDSCONNECTION * conn);
│ │ │ │ +
1321void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);
│ │ │ │ +
1322void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
│ │ │ │ +
1323int tds_iconv_alloc(TDSCONNECTION * conn);
│ │ │ │ +
1324void tds_iconv_free(TDSCONNECTION * conn);
│ │ │ │ +
1325TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
│ │ │ │ +
1326
│ │ │ │ +
1327
│ │ │ │ +
1328/* mem.c */
│ │ │ │ +
1329void tds_free_socket(TDSSOCKET * tds);
│ │ │ │ +
1330void tds_free_all_results(TDSSOCKET * tds);
│ │ │ │ +
1331void tds_free_results(TDSRESULTINFO * res_info);
│ │ │ │ +
1332void tds_free_param_results(TDSPARAMINFO * param_info);
│ │ │ │ +
1333void tds_free_param_result(TDSPARAMINFO * param_info);
│ │ │ │ +
1334void tds_free_msg(TDSMESSAGE * message);
│ │ │ │ +
1335void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);
│ │ │ │ +
1336void tds_release_cursor(TDSCURSOR **pcursor);
│ │ │ │ +
1337void tds_free_bcp_column_data(BCPCOLDATA * coldata);
│ │ │ │ +
1338TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);
│ │ │ │ +
1339TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT num_cols, TDS_USMALLINT by_cols);
│ │ │ │ +
1340TDSCONTEXT *tds_alloc_context(void * parent);
│ │ │ │ +
1341void tds_free_context(TDSCONTEXT * locale);
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1344void tds_release_dynamic(TDSDYNAMIC ** dyn);
│ │ │ │ +
1345inline static void
│ │ │ │ +
1346tds_release_cur_dyn(TDSSOCKET * tds)
│ │ │ │ +
1347{
│ │ │ │ + │ │ │ │ +
1349}
│ │ │ │ +
1350void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);
│ │ │ │ +
1351void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);
│ │ │ │ +
1352TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);
│ │ │ │ +
1353char *tds_alloc_client_sqlstate(int msgno);
│ │ │ │ +
1354char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);
│ │ │ │ +
1355TDSLOGIN *tds_alloc_login(bool use_environment);
│ │ │ │ +
1356TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);
│ │ │ │ +
1357void tds_free_login(TDSLOGIN * login);
│ │ │ │ +
1358TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);
│ │ │ │ +
1359TDSLOCALE *tds_alloc_locale(void);
│ │ │ │ +
1360void *tds_alloc_param_data(TDSCOLUMN * curparam);
│ │ │ │ +
1361void tds_free_locale(TDSLOCALE * locale);
│ │ │ │ +
1362TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen);
│ │ │ │ +
1363void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);
│ │ │ │ +
1364TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);
│ │ │ │ +
1365TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);
│ │ │ │ +
1366void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);
│ │ │ │ + │ │ │ │ +
1368void * tds_realloc(void **pp, size_t new_size);
│ │ │ │ +
1369#define TDS_RESIZE(p, n_elem) \
│ │ │ │ +
1370 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))
│ │ │ │ +
1371
│ │ │ │ +
1372TDSPACKET *tds_alloc_packet(void *buf, unsigned len);
│ │ │ │ +
1373TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);
│ │ │ │ +
1374void tds_free_packets(TDSPACKET *packet);
│ │ │ │ +
1375TDSBCPINFO *tds_alloc_bcpinfo(void);
│ │ │ │ +
1376void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);
│ │ │ │ +
1377void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);
│ │ │ │ +
1378void tds_deinit_tvp(TDS_TVP *table);
│ │ │ │ +
1379
│ │ │ │ +
1380
│ │ │ │ +
1381/* login.c */
│ │ │ │ +
1382void tds_set_packet(TDSLOGIN * tds_login, int packet_size);
│ │ │ │ +
1383void tds_set_port(TDSLOGIN * tds_login, int port);
│ │ │ │ +
1384bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;
│ │ │ │ +
1385void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);
│ │ │ │ +
1386bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;
│ │ │ │ +
1387bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;
│ │ │ │ +
1388bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;
│ │ │ │ +
1389bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;
│ │ │ │ +
1390bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;
│ │ │ │ +
1391bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_WUR;
│ │ │ │ +
1392bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;
│ │ │ │ +
1393void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver);
│ │ │ │ +
1394TDSRET tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);
│ │ │ │ +
1395
│ │ │ │ +
1396
│ │ │ │ +
1397/* query.c */
│ │ │ │ +
1398void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);
│ │ │ │ +
1399
│ │ │ │ +
1400TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);
│ │ │ │ +
1401TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ +
1402TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);
│ │ │ │ +
1403TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
│ │ │ │ +
1404TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ +
1405TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
│ │ │ │ +
1406TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);
│ │ │ │ +
1407TDSRET tds_send_cancel(TDSSOCKET * tds);
│ │ │ │ +
1408const char *tds_next_placeholder(const char *start);
│ │ │ │ +
1409int tds_count_placeholders(const char *query);
│ │ │ │ + │ │ │ │ +
1411TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);
│ │ │ │ +
1412TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);
│ │ │ │ +
1413TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * params, TDSHEADERS * head);
│ │ │ │ +
1414TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);
│ │ │ │ +
1415TDSRET tds_submit_begin_tran(TDSSOCKET *tds);
│ │ │ │ +
1416TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont);
│ │ │ │ +
1417TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont);
│ │ │ │ +
1418TDSRET tds_disconnect(TDSSOCKET * tds);
│ │ │ │ +
1419size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
│ │ │ │ +
1420size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
│ │ │ │ +
1421size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int len);
│ │ │ │ +
1422const char *tds_skip_comment(const char *s);
│ │ │ │ +
1423const char *tds_skip_quoted(const char *s);
│ │ │ │ +
1424size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);
│ │ │ │ +
1425const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const char *s, int len, size_t *out_len);
│ │ │ │ +
1426void tds_convert_string_free(const char *original, const char *converted);
│ │ │ │ +
1427#if !ENABLE_EXTRA_CHECKS
│ │ │ │ +
1428#define tds_convert_string_free(original, converted) \
│ │ │ │ +
1429 do { if (original != converted) free((char*) converted); } while(0)
│ │ │ │ +
1430#endif
│ │ │ │ +
1431TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char *out);
│ │ │ │ +
1432
│ │ │ │ +
1433TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send);
│ │ │ │ +
1434TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send);
│ │ │ │ +
1435TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, bool *send);
│ │ │ │ +
1436TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);
│ │ │ │ +
1437TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_UINT * row_number, TDS_UINT * row_count);
│ │ │ │ +
1438TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ +
1439TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ + │ │ │ │ +
1441TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);
│ │ │ │ +
1442TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);
│ │ │ │ +
1443
│ │ │ │ +
1444TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS * head);
│ │ │ │ +
1445TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);
│ │ │ │ +
1446TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO * params);
│ │ │ │ +
1447TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC * dyn);
│ │ │ │ +
1448
│ │ │ │ +
1449
│ │ │ │ +
1450/* token.c */
│ │ │ │ +
1451TDSRET tds_process_cancel(TDSSOCKET * tds);
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1454int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,
│ │ │ │ +
1455 TDS_INT * tds_argsize);
│ │ │ │ +
1456TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, /*@out@*/ int *done_flags, unsigned flag);
│ │ │ │ +
1457
│ │ │ │ +
1458
│ │ │ │ +
1459/* data.c */
│ │ │ │ +
1460void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
│ │ │ │ +
1461void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
│ │ │ │ +
1462#ifdef WORDS_BIGENDIAN
│ │ │ │ +
1463void tds_swap_datatype(int coltype, void *b);
│ │ │ │ +
1464#endif
│ │ │ │ +
1465
│ │ │ │ +
1466
│ │ │ │ +
1467/* tds_convert.c */
│ │ │ │ +
1468TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);
│ │ │ │ +
1469TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize);
│ │ │ │ +
1470extern const char tds_hex_digits[];
│ │ │ │ +
1471
│ │ │ │ +
1472
│ │ │ │ +
1473/* write.c */
│ │ │ │ +
1474int tds_init_write_buf(TDSSOCKET * tds);
│ │ │ │ +
1475int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);
│ │ │ │ +
1476int tds_put_string(TDSSOCKET * tds, const char *buf, int len);
│ │ │ │ +
1477int tds_put_int(TDSSOCKET * tds, TDS_INT i);
│ │ │ │ +
1478int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);
│ │ │ │ +
1479int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);
│ │ │ │ +
1481#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)
│ │ │ │ +
1482int tds_put_byte(TDSSOCKET * tds, unsigned char c);
│ │ │ │ +
1483TDSRET tds_flush_packet(TDSSOCKET * tds);
│ │ │ │ +
1484int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int ssize);
│ │ │ │ +
1485
│ │ │ │ +
1486
│ │ │ │ +
1487/* read.c */
│ │ │ │ +
1488unsigned char tds_get_byte(TDSSOCKET * tds);
│ │ │ │ +
1489void tds_unget_byte(TDSSOCKET * tds);
│ │ │ │ +
1490unsigned char tds_peek(TDSSOCKET * tds);
│ │ │ │ +
1491TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);
│ │ │ │ +
1492#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))
│ │ │ │ +
1493TDS_UINT tds_get_uint(TDSSOCKET * tds);
│ │ │ │ +
1494#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))
│ │ │ │ +
1495TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);
│ │ │ │ +
1496#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))
│ │ │ │ +
1497size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_t dest_size);
│ │ │ │ +
1498TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, TDSCOLUMN * curcol);
│ │ │ │ +
1499bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n);
│ │ │ │ +
1500int tds_get_size_by_type(TDS_SERVER_TYPE servertype);
│ │ │ │ +
1501DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);
│ │ │ │ +
1502
│ │ │ │ +
1503
│ │ │ │ +
1504/* util.c */
│ │ │ │ +
1505int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int errnum);
│ │ │ │ + │ │ │ │ +
1507void tds_swap_bytes(void *buf, int bytes);
│ │ │ │ +
1508unsigned int tds_gettime_ms(void);
│ │ │ │ +
1509
│ │ │ │ +
1510
│ │ │ │ +
1511/* log.c */
│ │ │ │ +
│ │ │ │ +
1512typedef struct tdsdump_off_item {
│ │ │ │ +
1513 struct tdsdump_off_item *next;
│ │ │ │ +
1514 tds_thread_id thread_id;
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
1516void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);
│ │ │ │ +
1517void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);
│ │ │ │ +
1518int tdsdump_isopen(void);
│ │ │ │ +
1519#include <freetds/popvis.h>
│ │ │ │ +
1520int tdsdump_open(const tds_dir_char *filename);
│ │ │ │ +
1521#include <freetds/pushvis.h>
│ │ │ │ +
1522void tdsdump_close(void);
│ │ │ │ +
1523void tdsdump_dump_buf(const char* file, unsigned int level_line, const char *msg, const void *buf, size_t length);
│ │ │ │ +
1524void tdsdump_col(const TDSCOLUMN *col);
│ │ │ │ +
1525#undef tdsdump_log
│ │ │ │ +
1526void tdsdump_log(const char* file, unsigned int level_line, const char *fmt, ...)
│ │ │ │ +
1527#if defined(__GNUC__) && __GNUC__ >= 2
│ │ │ │ +
1528#if defined(__MINGW32__)
│ │ │ │ +
1529 __attribute__ ((__format__ (ms_printf, 3, 4)))
│ │ │ │ +
1530#else
│ │ │ │ +
1531 __attribute__ ((__format__ (__printf__, 3, 4)))
│ │ │ │ +
1532#endif
│ │ │ │ +
1533#endif
│ │ │ │ +
1534;
│ │ │ │ +
1535#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log
│ │ │ │ +
1536#define tdsdump_log TDSDUMP_LOG_FAST
│ │ │ │ +
1537#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf
│ │ │ │ +
1538#define tdsdump_dump_buf TDSDUMP_BUF_FAST
│ │ │ │ +
1539
│ │ │ │ +
1540extern bool tds_write_dump;
│ │ │ │ +
1541extern int tds_debug_flags;
│ │ │ │ +
1542extern int tds_append_mode;
│ │ │ │ +
1543
│ │ │ │ +
1544
│ │ │ │ +
1545/* net.c */
│ │ │ │ +
1546TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr);
│ │ │ │ +
1547void tds_close_socket(TDSSOCKET * tds);
│ │ │ │ +
1548int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);
│ │ │ │ +
1549int tds7_get_instance_port(struct addrinfo *addr, const char *instance);
│ │ │ │ +
1550char *tds_prwsaerror(int erc);
│ │ │ │ +
1551void tds_prwsaerror_free(char *s);
│ │ │ │ +
1552int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);
│ │ │ │ +
1553int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int buflen, int final);
│ │ │ │ +
1554void tds_connection_coalesce(TDSSOCKET *tds);
│ │ │ │ +
1555void tds_connection_flush(TDSSOCKET *tds);
│ │ │ │ +
1556#define TDSSELREAD POLLIN
│ │ │ │ +
1557#define TDSSELWRITE POLLOUT
│ │ │ │ +
1558int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);
│ │ │ │ +
1559void tds_connection_close(TDSCONNECTION *conn);
│ │ │ │ +
1560int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);
│ │ │ │ +
1561int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t buflen);
│ │ │ │ +
1562int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);
│ │ │ │ +
1563int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);
│ │ │ │ +
1564void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);
│ │ │ │ +
1565void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);
│ │ │ │ +
1566inline static TDS_SYS_SOCKET
│ │ │ │ +
1567tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup)
│ │ │ │ +
1568{
│ │ │ │ +
1569 return wakeup->s_signaled;
│ │ │ │ +
1570}
│ │ │ │ +
1571
│ │ │ │ +
1572
│ │ │ │ +
1573/* packet.c */
│ │ │ │ +
1574int tds_read_packet(TDSSOCKET * tds);
│ │ │ │ +
1575TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);
│ │ │ │ +
1576#if ENABLE_ODBC_MARS
│ │ │ │ +
1577int tds_append_cancel(TDSSOCKET *tds);
│ │ │ │ +
1578TDSRET tds_append_syn(TDSSOCKET *tds);
│ │ │ │ +
1579TDSRET tds_append_fin(TDSSOCKET *tds);
│ │ │ │ +
1580#else
│ │ │ │ +
1581int tds_put_cancel(TDSSOCKET * tds);
│ │ │ │ +
1582#endif
│ │ │ │ +
1583
│ │ │ │ +
│ │ │ │ +
1584typedef struct tds_freeze {
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1590 unsigned pkt_pos;
│ │ │ │ +
1592 unsigned size_len;
│ │ │ │ +
1593} TDSFREEZE;
│ │ │ │ +
│ │ │ │ +
1594
│ │ │ │ +
1595void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);
│ │ │ │ +
1596size_t tds_freeze_written(TDSFREEZE *freeze);
│ │ │ │ +
1597TDSRET tds_freeze_abort(TDSFREEZE *freeze);
│ │ │ │ +
1598TDSRET tds_freeze_close(TDSFREEZE *freeze);
│ │ │ │ +
1599TDSRET tds_freeze_close_string(TDSFREEZE *freeze);
│ │ │ │ +
1600TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);
│ │ │ │ +
1601
│ │ │ │ +
1602inline static void
│ │ │ │ +
1603tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)
│ │ │ │ +
1604{
│ │ │ │ +
1605 tds->send_packet = pkt;
│ │ │ │ +
1606 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);
│ │ │ │ +
1607}
│ │ │ │ +
1608
│ │ │ │ +
1609/* Macros to allow some indentation of the packets.
│ │ │ │ +
1610 *
│ │ │ │ +
1611 * The 3 nested fake loops require some explanation:
│ │ │ │ +
1612 * - first is to allows to declare variables;
│ │ │ │ +
1613 * - second is to force using brackets;
│ │ │ │ +
1614 * - third is to avoids that a break inside will skip the close.
│ │ │ │ +
1615 */
│ │ │ │ +
1616#define TDS_START_LEN_GENERIC(tds_socket, len) do { \
│ │ │ │ +
1617 TDSFREEZE current_freeze[1]; \
│ │ │ │ +
1618 tds_freeze((tds_socket), current_freeze, (len)); do { do
│ │ │ │ +
1619#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); } while(0);
│ │ │ │ +
1620#define TDS_END_LEN_STRING while(0); } while(tds_freeze_close_string(current_freeze), 0); } while(0);
│ │ │ │ +
1621
│ │ │ │ +
1622#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 1)
│ │ │ │ +
1623#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 2)
│ │ │ │ +
1624#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4)
│ │ │ │ +
1625
│ │ │ │ +
1626/* vstrbuild.c */
│ │ │ │ +
1627TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char *text, int textlen, const char *formats, int formatlen,
│ │ │ │ +
1628 va_list ap);
│ │ │ │ +
1629
│ │ │ │ +
1630
│ │ │ │ +
1631/* numeric.c */
│ │ │ │ +
1632char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_digits);
│ │ │ │ +
1633TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);
│ │ │ │ +
1634TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char new_prec, unsigned char new_scale);
│ │ │ │ +
1635
│ │ │ │ +
1636
│ │ │ │ +
1637/* getmac.c */
│ │ │ │ +
1638void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);
│ │ │ │ +
1639
│ │ │ │ +
1640
│ │ │ │ +
1641/* challenge.c */
│ │ │ │ +
1642#ifndef HAVE_SSPI
│ │ │ │ + │ │ │ │ +
1644TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);
│ │ │ │ +
1645#else
│ │ │ │ +
1646TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);
│ │ │ │ +
1647#endif
│ │ │ │ +
1648TDSRET tds5_gss_send(TDSSOCKET *tds);
│ │ │ │ +
1649
│ │ │ │ +
1650
│ │ │ │ +
1651/* random.c */
│ │ │ │ +
1652void tds_random_buffer(unsigned char *out, int len);
│ │ │ │ +
1653
│ │ │ │ +
1654
│ │ │ │ +
1655/* sec_negotiate.c */
│ │ │ │ +
1656TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);
│ │ │ │ +
1657inline static void
│ │ │ │ +
1658tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_type)
│ │ │ │ +
1659{
│ │ │ │ +
1660 if (tds_auth)
│ │ │ │ +
1661 tds_auth->msg_type = msg_type;
│ │ │ │ +
1662}
│ │ │ │ +
1663
│ │ │ │ +
1664
│ │ │ │ +
1665/* bulk.c */
│ │ │ │ +
1666
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1669{
│ │ │ │ +
1670 TDS_BCP_IN = 1,
│ │ │ │ +
1671 TDS_BCP_OUT = 2,
│ │ │ │ +
1672 TDS_BCP_QUERYOUT = 3
│ │ │ │ +
1673};
│ │ │ │ +
│ │ │ │ +
1674
│ │ │ │ +
│ │ │ │ +
1675typedef struct tds5_colinfo
│ │ │ │ +
1676{
│ │ │ │ +
1677 TDS_TINYINT type;
│ │ │ │ +
1678 TDS_TINYINT status;
│ │ │ │ +
1679 TDS_SMALLINT offset;
│ │ │ │ +
1680 TDS_INT length;
│ │ │ │ +
1681} TDS5COLINFO;
│ │ │ │ +
│ │ │ │ +
1682
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1684{
│ │ │ │ +
1685 void *parent;
│ │ │ │ +
1686 DSTR hint;
│ │ │ │ +
1687 DSTR tablename;
│ │ │ │ +
1688 TDS_CHAR *insert_stmt;
│ │ │ │ +
1689 TDS_INT direction;
│ │ │ │ +
1690 bool identity_insert_on;
│ │ │ │ +
1691 bool xfer_init;
│ │ │ │ +
1692 TDS_INT bind_count;
│ │ │ │ +
1693 TDSRESULTINFO *bindinfo;
│ │ │ │ +
1694 TDS5COLINFO *sybase_colinfo;
│ │ │ │ +
1695 TDS_INT sybase_count;
│ │ │ │ +
1696};
│ │ │ │ +
│ │ │ │ +
1697
│ │ │ │ +
1698TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ +
1699typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN *bcpcol, int offset);
│ │ │ │ +
1700typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int offset);
│ │ │ │ +
1701TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);
│ │ │ │ +
1702TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);
│ │ │ │ +
1703TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ +
1704TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
│ │ │ │ +
1705
│ │ │ │ +
1706TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,
│ │ │ │ +
1707 const char *terminator, size_t term_len, char **outbuf, size_t * outbytes);
│ │ │ │ +
1708
│ │ │ │ +
1709TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size);
│ │ │ │ +
1710TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size);
│ │ │ │ +
1711TDSRET tds_writetext_end(TDSSOCKET *tds);
│ │ │ │ +
1712
│ │ │ │ +
1713
│ │ │ │ +
1714inline static bool
│ │ │ │ +
1715tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
│ │ │ │ +
1716{
│ │ │ │ +
1717 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & 1;
│ │ │ │ +
1718}
│ │ │ │ +
1719#define tds_capability_has_req(conn, cap) \
│ │ │ │ +
1720 tds_capability_enabled(&conn->capabilities.types[0], cap)
│ │ │ │ +
1721#define tds_capability_has_res(conn, cap) \
│ │ │ │ +
1722 tds_capability_enabled(&conn->capabilities.types[1], cap)
│ │ │ │ +
1723
│ │ │ │ +
1724#define IS_TDS42(x) (x->tds_version==0x402)
│ │ │ │ +
1725#define IS_TDS46(x) (x->tds_version==0x406)
│ │ │ │ +
1726#define IS_TDS50(x) (x->tds_version==0x500)
│ │ │ │ +
1727#define IS_TDS70(x) (x->tds_version==0x700)
│ │ │ │ +
1728#define IS_TDS71(x) (x->tds_version==0x701)
│ │ │ │ +
1729#define IS_TDS72(x) (x->tds_version==0x702)
│ │ │ │ +
1730#define IS_TDS73(x) (x->tds_version==0x703)
│ │ │ │ +
1731
│ │ │ │ +
1732#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)
│ │ │ │ +
1733#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)
│ │ │ │ +
1734#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)
│ │ │ │ +
1735#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)
│ │ │ │ +
1736#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)
│ │ │ │ +
1737#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)
│ │ │ │ +
1738#define IS_TDS80_PLUS(x) ((x)->tds_version>=0x800)
│ │ │ │ +
1739
│ │ │ │ +
1740#define TDS_MAJOR(x) ((x)->tds_version >> 8)
│ │ │ │ +
1741#define TDS_MINOR(x) ((x)->tds_version & 0xff)
│ │ │ │ +
1742
│ │ │ │ +
1743#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)
│ │ │ │ +
1744
│ │ │ │ +
1746#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))
│ │ │ │ +
1748#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)
│ │ │ │ +
1749
│ │ │ │ +
1753#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))
│ │ │ │ +
1754
│ │ │ │ +
1755/* TODO test if not similar to ms one*/
│ │ │ │ +
1757#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)
│ │ │ │ +
1758
│ │ │ │ +
1759#ifdef __cplusplus
│ │ │ │ +
1760#if 0
│ │ │ │ +
1761{
│ │ │ │ +
1762#endif
│ │ │ │ +
1763}
│ │ │ │ +
1764#endif
│ │ │ │ +
1765
│ │ │ │ +
1766#include <freetds/popvis.h>
│ │ │ │ +
1767
│ │ │ │ +
1768#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))
│ │ │ │ +
1769#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)(v)))
│ │ │ │ +
1770#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))
│ │ │ │ +
1771
│ │ │ │ +
1772#endif /* _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ */
│ │ │ │ +
int tds_iconv_alloc(TDSCONNECTION *conn)
Allocate iconv stuff.
Definition iconv.c:311
│ │ │ │ +
bool tds_write_dump
Tell if TDS debug logging is turned on or off.
Definition log.c:58
│ │ │ │ +
TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)
Return type suitable for conversions (convert all nullable types to fixed type)
Definition tds_types.h:125
│ │ │ │ +
TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)
Set state of TDS connection, with logging and checking.
Definition util.c:58
│ │ │ │ +
struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
A structure to hold all the compile-time settings.
│ │ │ │ +
struct tds_result_info TDSRESULTINFO
Hold information for any results.
│ │ │ │ +
struct tds_variant TDSVARIANT
Store variant information.
│ │ │ │ +
void tdsdump_close(void)
Close the TDS dump log file.
Definition log.c:212
│ │ │ │ +
void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
Set type of column initializing all dependency.
Definition data.c:224
│ │ │ │ +
bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR
Set the servername in a TDSLOGIN structure.
Definition login.c:129
│ │ │ │ +
struct tdsdaterec TDSDATEREC
Used by tds_datecrack.
│ │ │ │ +
TDSLOCALE * tds_get_locale(void)
Get locale information.
Definition locale.c:50
│ │ │ │ +
struct tds_env TDSENV
Current environment as reported by the server.
│ │ │ │ +
struct tds_blob TDSBLOB
Information about blobs (e.g.
│ │ │ │ +
int tds_get_size_by_type(TDS_SERVER_TYPE servertype)
Return the number of bytes needed by specified type.
Definition tds_types.h:9
│ │ │ │ +
const int tds_numeric_bytes_per_prec[]
The following little table is indexed by precision and will tell us the number of bytes required to s...
Definition numeric.c:42
│ │ │ │ +
TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Start bulk copy to server.
Definition bulk.c:1086
│ │ │ │ +
TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)
Definition numeric.c:96
│ │ │ │ +
int tds_get_varint_size(TDSCONNECTION *conn, int datatype)
tds_get_varint_size() returns the size of a variable length integer returned in a result string
Definition tds_types.h:57
│ │ │ │ +
TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size)
Start writing writetext request.
Definition bulk.c:1313
│ │ │ │ +
TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes)
Read a data file, passing the data through iconv().
Definition bulk.c:1244
│ │ │ │ +
TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Start sending BCP data to server.
Definition bulk.c:884
│ │ │ │ +
struct tds_dynamic TDSDYNAMIC
Holds information for a dynamic (also called prepared) query.
│ │ │ │ +
void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
Set type of column initializing all dependency.
Definition data.c:246
│ │ │ │ +
tds_states
values for tds->state
Definition tds.h:774
│ │ │ │ +
@ TDS_PENDING
cilent is waiting for data
Definition tds.h:778
│ │ │ │ +
@ TDS_SENDING
client would send data
Definition tds.h:777
│ │ │ │ +
@ TDS_READING
client is reading data
Definition tds.h:779
│ │ │ │ +
@ TDS_WRITING
client is writing data
Definition tds.h:776
│ │ │ │ +
@ TDS_IDLE
no data expected
Definition tds.h:775
│ │ │ │ +
@ TDS_DEAD
no connection
Definition tds.h:780
│ │ │ │ +
void tdsdump_col(const TDSCOLUMN *col)
Write a column value to the debug log.
Definition log.c:455
│ │ │ │ +
TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size)
Send some data in the writetext request started by tds_writetext_start.
Definition bulk.c:1348
│ │ │ │ +
int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)
Call the client library's error handler (for library-generated errors only)
Definition util.c:321
│ │ │ │ +
enum tds_states TDS_STATE
values for tds->state
│ │ │ │ +
TDSRET tds_writetext_end(TDSSOCKET *tds)
Finish sending writetext data.
Definition bulk.c:1365
│ │ │ │ +
TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
Initialize BCP information.
Definition bulk.c:86
│ │ │ │ +
tds_bcp_directions
bcp direction
Definition tds.h:1669
│ │ │ │ +
TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)
Send one row of data to server.
Definition bulk.c:481
│ │ │ │ +
int tdsdump_open(const tds_dir_char *filename)
Create and truncate a human readable dump file for the TDS traffic.
Definition log.c:131
│ │ │ │ +
TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)
Tell we finished sending BCP data to server.
Definition bulk.c:858
│ │ │ │ +
struct tds_encoding TDS_ENCODING
Information relevant to libiconv.
│ │ │ │ +
void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)
Temporarily turn off logging for current thread.
Definition log.c:81
│ │ │ │ +
void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)
Turn logging back on for current thread.
Definition log.c:101
│ │ │ │ +
struct tds_cursor TDSCURSOR
Holds information about a cursor.
│ │ │ │ +
TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)
Build a NTLMSPP packet to send to server.
Definition challenge.c:721
│ │ │ │ +
TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)
Set TDS version from given string.
Definition config.c:950
│ │ │ │ +
const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void)
Return a structure capturing the compile-time settings provided to the configure script.
Definition config.c:1377
│ │ │ │ +
struct addrinfo * tds_lookup_host(const char *servername)
Get the IP address for a hostname.
Definition config.c:1015
│ │ │ │ +
bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param)
Read a section of configuration file (INI style file)
Definition config.c:508
│ │ │ │ +
bool tds_read_conf_file(TDSLOGIN *login, const char *server)
Read configuration info for given server return 0 on error.
Definition config.c:322
│ │ │ │ +
TDSRET tds_set_interfaces_file_loc(const char *interfloc)
Set the full name of interface file.
Definition config.c:989
│ │ │ │ +
TDSRET tds8_adjust_login(TDSLOGIN *login)
Make sure proper setting are in place for TDS 8.0.
Definition config.c:1462
│ │ │ │ +
TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)
tds_read_config_info() will fill the tds connection structure based on configuration information gath...
Definition config.c:138
│ │ │ │ +
void tds_fix_login(TDSLOGIN *login)
Fix configuration after reading it.
Definition config.c:280
│ │ │ │ +
TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)
Convert from db date format to a structured date format.
Definition convert.c:3258
│ │ │ │ +
TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5])
Get iconv information from a LCID (to support different column encoding under MSSQL2K)
Definition iconv.c:1249
│ │ │ │ +
TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
Allocate space for row store return NULL on out of memory.
Definition mem.c:533
│ │ │ │ +
void tds_detach_results(TDSRESULTINFO *info)
Detach result info from it current socket.
Definition mem.c:497
│ │ │ │ +
TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)
Adds a output parameter to TDSPARAMINFO.
Definition mem.c:284
│ │ │ │ +
void * tds_alloc_param_data(TDSCOLUMN *curparam)
Allocate data for a parameter.
Definition mem.c:373
│ │ │ │ +
TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)
Initialize login structure with locale information and other stuff for connection.
Definition mem.c:808
│ │ │ │ +
void tds_free_param_result(TDSPARAMINFO *param_info)
Delete latest parameter.
Definition mem.c:320
│ │ │ │ +
TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)
Allocate a dynamic statement.
Definition mem.c:160
│ │ │ │ +
void * tds_realloc(void **pp, size_t new_size)
Reallocate a pointer and update it if success.
Definition mem.c:1896
│ │ │ │ +
void tds_free_input_params(TDSDYNAMIC *dyn)
Frees all allocated input parameters of a dynamic statement.
Definition mem.c:206
│ │ │ │ +
void tds_release_dynamic(TDSDYNAMIC **dyn)
Frees dynamic statement.
Definition mem.c:253
│ │ │ │ +
int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
Check if dynamic request must be unprepared.
Definition query.c:1800
│ │ │ │ +
const char * tds_skip_quoted(const char *s)
Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd])
Definition query.c:517
│ │ │ │ +
TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
Creates a temporary stored procedure in the server and execute it.
Definition query.c:1453
│ │ │ │ +
void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)
Start query packet of a given type.
Definition query.c:334
│ │ │ │ +
TDSRET tds_send_cancel(TDSSOCKET *tds)
tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called dire...
Definition query.c:2069
│ │ │ │ +
TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Sends a previously prepared dynamic statement to the server.
Definition query.c:1678
│ │ │ │ +
size_t tds_quote_string(TDSSOCKET *tds TDS_UNUSED, char *buffer, const char *str, int len)
Quote a string.
Definition query.c:2281
│ │ │ │ +
TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)
Return declaration for column (like "varchar(20)").
Definition query.c:740
│ │ │ │ +
TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)
Deallocate cursor on idle.
Definition query.c:3097
│ │ │ │ +
TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)
Sends a language string to the database server for processing.
Definition query.c:212
│ │ │ │ +
TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)
Calls a RPC from server.
Definition query.c:1977
│ │ │ │ +
size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
Quote an id for a RPC call.
Definition query.c:2256
│ │ │ │ +
TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
Creates a temporary stored procedure in the server.
Definition query.c:1176
│ │ │ │ +
size_t tds_fix_column_size(TDSSOCKET *tds TDS_UNUSED, TDSCOLUMN *curcol)
Get column size for wire.
Definition query.c:1543
│ │ │ │ +
TDSRET tds_submit_begin_tran(TDSSOCKET *tds)
Send a rollback request.
Definition query.c:3705
│ │ │ │ +
TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont)
Send a commit request.
Definition query.c:3764
│ │ │ │ +
TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont)
Send a rollback request.
Definition query.c:3733
│ │ │ │ +
size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
Quote an id.
Definition query.c:2211
│ │ │ │ +
const char * tds_next_placeholder(const char *start)
Get position of next placeholder.
Definition query.c:537
│ │ │ │ +
TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
Sends a language string to the database server for processing.
Definition query.c:352
│ │ │ │ +
TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
Unprepare dynamic on idle.
Definition query.c:1822
│ │ │ │ +
int tds_count_placeholders(const char *query)
Count the number of placeholders ('?') in a query.
Definition query.c:573
│ │ │ │ +
TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)
Send a deallocation request to server.
Definition query.c:3046
│ │ │ │ +
const char * tds_skip_comment(const char *s)
Skip a comment in a query.
Definition query.c:492
│ │ │ │ +
const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len)
Convert a string in an allocated buffer.
Definition query.c:126
│ │ │ │ +
TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)
Format and submit a query.
Definition query.c:469
│ │ │ │ +
TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
Submit a prepared query with parameters.
Definition query.c:1308
│ │ │ │ +
void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Set current dynamic.
Definition query.c:194
│ │ │ │ +
TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size)
Send option commands to server.
Definition query.c:3429
│ │ │ │ +
TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)
Send a unprepare request for a prepared query.
Definition query.c:1845
│ │ │ │ +
DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)
Reads a string from wire and put in a DSTR.
Definition read.c:294
│ │ │ │ +
TDSRET tds_freeze_close_string(TDSFREEZE *freeze)
Stop keeping data for this specific freeze.
Definition packet.c:1008
│ │ │ │ +
unsigned char tds_get_byte(TDSSOCKET *tds)
Return a single byte from the input buffer.
Definition read.c:72
│ │ │ │ +
int tds_put_string(TDSSOCKET *tds, const char *buf, int len)
Output a string to wire automatic translate string to unicode if needed.
Definition write.c:97
│ │ │ │ +
unsigned char tds_peek(TDSSOCKET *tds)
Reads a byte from the TDS stream without removing it.
Definition read.c:100
│ │ │ │ +
TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)
Stop keeping data for this specific freeze.
Definition packet.c:1046
│ │ │ │ +
int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
Definition net.c:977
│ │ │ │ +
int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)
Set socket to non-blocking.
Definition net.c:145
│ │ │ │ +
void tds_close_socket(TDSSOCKET *tds)
Close current socket.
Definition net.c:527
│ │ │ │ +
int tds_read_packet(TDSSOCKET *tds)
Read in one 'packet' from the server.
Definition packet.c:523
│ │ │ │ +
size_t tds_freeze_written(TDSFREEZE *freeze)
Compute how many bytes has been written from freeze.
Definition packet.c:931
│ │ │ │ +
TDSRET tds_flush_packet(TDSSOCKET *tds)
Flush packet to server.
Definition write.c:224
│ │ │ │ +
TDSRET tds_freeze_close(TDSFREEZE *freeze)
Stop keeping data for this specific freeze.
Definition packet.c:992
│ │ │ │ +
int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)
Loops until we have received some characters return -1 on failure.
Definition net.c:906
│ │ │ │ +
TDSRET tds_freeze_abort(TDSFREEZE *freeze)
Discard all data written after the freeze.
Definition packet.c:957
│ │ │ │ +
TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)
Get an uint64 from the server.
Definition read.c:138
│ │ │ │ +
TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
Fetch character data the wire.
Definition read.c:193
│ │ │ │ +
size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size)
Fetch a string from the wire.
Definition read.c:164
│ │ │ │ +
int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)
Get port of all instances.
Definition net.c:1099
│ │ │ │ +
TDS_UINT tds_get_uint(TDSSOCKET *tds)
Get an uint32 from the server.
Definition read.c:125
│ │ │ │ +
int tds7_get_instance_port(struct addrinfo *addr, const char *instance)
Get port of given instance.
Definition net.c:1235
│ │ │ │ +
TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)
Get an uint16 from the server.
Definition read.c:112
│ │ │ │ +
void tds_unget_byte(TDSSOCKET *tds)
Unget will always work as long as you don't call it twice in a row.
Definition read.c:89
│ │ │ │ +
int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)
Select on a socket until it's available or the timeout expires.
Definition net.c:589
│ │ │ │ +
bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n)
Get N bytes from the buffer and return them in the already allocated space given to us.
Definition read.c:228
│ │ │ │ +
const char * tds_prtype(int token)
Returns string representation of the given type.
Definition token.c:3037
│ │ │ │ +
TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)
Finds a dynamic given string id.
Definition token.c:2592
│ │ │ │ +
TDSRET tds_process_login_tokens(TDSSOCKET *tds)
tds_process_login_tokens() is called after sending the login packet to the server.
Definition token.c:416
│ │ │ │ +
TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
process all streams.
Definition token.c:536
│ │ │ │ +
TDSRET tds_process_simple_query(TDSSOCKET *tds)
Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results,...
Definition token.c:886
│ │ │ │ +
TDSRET tds_process_cancel(TDSSOCKET *tds)
Definition token.c:2559
│ │ │ │ +
Definition iconv.h:92
│ │ │ │ +
Definition proto.h:26
│ │ │ │ +
Definition proto.h:39
│ │ │ │ +
A structure to hold all the compile-time settings.
Definition tds.h:83
│ │ │ │ +
This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.
Definition tds.h:145
│ │ │ │ +
TDS_INT date
date, 0 = 1900-01-01
Definition tds.h:147
│ │ │ │ +
TDS_SMALLINT offset
time offset
Definition tds.h:148
│ │ │ │ +
TDS_UINT8 time
time, 7 digit precision
Definition tds.h:146
│ │ │ │ +
Used by tds_datecrack.
Definition tds.h:158
│ │ │ │ +
TDS_INT dayofyear
day of year (1-366)
Definition tds.h:163
│ │ │ │ +
TDS_INT weekday
day of week (0-6, 0 = sunday)
Definition tds.h:164
│ │ │ │ +
TDS_INT year
year
Definition tds.h:159
│ │ │ │ +
TDS_INT timezone
-840 - 840 minutes from UTC
Definition tds.h:169
│ │ │ │ +
TDS_INT minute
0-59
Definition tds.h:166
│ │ │ │ +
TDS_INT day
day of month (1-31)
Definition tds.h:162
│ │ │ │ +
TDS_INT decimicrosecond
0-9999999
Definition tds.h:168
│ │ │ │ +
TDS_INT second
0-59
Definition tds.h:167
│ │ │ │ +
TDS_INT quarter
quarter (0-3)
Definition tds.h:160
│ │ │ │ +
TDS_INT hour
0-23
Definition tds.h:165
│ │ │ │ +
TDS_INT month
month number (0-11)
Definition tds.h:161
│ │ │ │ +
Definition tds.h:305
│ │ │ │ +
Definition tds.h:476
│ │ │ │ +
Definition tds.h:485
│ │ │ │ +
Definition tds.h:492
│ │ │ │ +
Definition tds.h:498
│ │ │ │ +
DSTR crlfile
certificate revocation file
Definition tds.h:512
│ │ │ │ +
DSTR server_realm_name
server realm name (in freetds.conf)
Definition tds.h:508
│ │ │ │ +
DSTR user_name
account for login
Definition tds.h:516
│ │ │ │ +
DSTR password
password of account login
Definition tds.h:517
│ │ │ │ +
DSTR db_filename
database filename to attach (MSSQL)
Definition tds.h:510
│ │ │ │ +
DSTR certificate_host_name
certificate hostname to check, if empty use server_host_name
Definition tds.h:513
│ │ │ │ +
DSTR server_name
server name (in freetds.conf)
Definition tds.h:499
│ │ │ │ +
struct addrinfo * ip_addrs
ip(s) of server
Definition tds.h:528
│ │ │ │ +
DSTR server_charset
charset of server e.g.
Definition tds.h:504
│ │ │ │ +
TDS_USMALLINT tds_version
TDS version.
Definition tds.h:501
│ │ │ │ +
DSTR new_password
new password to set (TDS 7.2+)
Definition tds.h:518
│ │ │ │ +
unsigned int bulk_copy
if bulk copy should be enabled
Definition tds.h:538
│ │ │ │ +
DSTR cafile
certificate authorities file
Definition tds.h:511
│ │ │ │ +
DSTR server_spn
server SPN (in freetds.conf)
Definition tds.h:509
│ │ │ │ +
int port
port of database service
Definition tds.h:500
│ │ │ │ +
Definition tds.h:557
│ │ │ │ +
Definition tds.h:565
│ │ │ │ +
Information about blobs (e.g.
Definition tds.h:578
│ │ │ │ +
Store variant information.
Definition tds.h:589
│ │ │ │ +
Information relevant to libiconv.
Definition tds.h:603
│ │ │ │ +
const char * name
name of the encoding (ie UTF-8)
Definition tds.h:605
│ │ │ │ +
unsigned char canonic
internal numeric index into array of all encodings
Definition tds.h:609
│ │ │ │ +
Definition tds.h:613
│ │ │ │ +
Definition tds.h:628
│ │ │ │ +
tds_func_put_data * put_data
Send column data to server.
Definition tds.h:647
│ │ │ │ +
tds_func_put_info * put_info
Send metadata column information to server.
Definition tds.h:637
│ │ │ │ +
Metadata about columns in regular and compute rows.
Definition tds.h:674
│ │ │ │ +
TDS_INT bcp_prefix_len
The length, in bytes, of any length prefix this column may have.
Definition tds.h:746
│ │ │ │ +
TDS_TINYINT column_varint_size
size of length when reading from wire (0, 1, 2 or 4)
Definition tds.h:686
│ │ │ │ +
TDS_INT column_size
maximun size of data.
Definition tds.h:679
│ │ │ │ +
TDS_TINYINT column_prec
precision for decimal/numeric
Definition tds.h:688
│ │ │ │ +
TDS_SERVER_TYPE column_type
This type can be different from wire type because conversion (e.g.
Definition tds.h:681
│ │ │ │ +
TDSICONV * char_conv
refers to previously allocated iconv information
Definition tds.h:697
│ │ │ │ +
TDS_TINYINT column_scale
scale for decimal/numeric
Definition tds.h:689
│ │ │ │ +
TDS_INT column_cur_size
size written in variable (ie: char, text, binary).
Definition tds.h:721
│ │ │ │ +
Hold information for any results.
Definition tds.h:754
│ │ │ │ +
Definition tds.h:861
│ │ │ │ +
Definition tds.h:877
│ │ │ │ +
Definition tds.h:891
│ │ │ │ +
Holds information about a cursor.
Definition tds.h:922
│ │ │ │ +
TDS_TINYINT options
read only|updatable TODO use it
Definition tds.h:927
│ │ │ │ +
bool defer_close
true if cursor was marker to be closed when connection is idle
Definition tds.h:931
│ │ │ │ +
TDS_INT ref_count
reference counter so client can retain safely a pointer
Definition tds.h:924
│ │ │ │ +
TDS_INT cursor_id
cursor id returned by the server after cursor declare
Definition tds.h:926
│ │ │ │ +
TDS_INT cursor_rows
< number of updatable columns
Definition tds.h:936
│ │ │ │ +
struct tds_cursor * next
next in linked list, keep first
Definition tds.h:923
│ │ │ │ +
TDS_INT type
row fetched from this cursor
Definition tds.h:941
│ │ │ │ +
TDS_CURSOR_STATUS status
cursor parameter
Definition tds.h:938
│ │ │ │ +
char * query
SQL query.
Definition tds.h:932
│ │ │ │ +
char * cursor_name
name of the cursor
Definition tds.h:925
│ │ │ │ +
Current environment as reported by the server.
Definition tds.h:948
│ │ │ │ +
char * charset
character set encoding
Definition tds.h:953
│ │ │ │ +
int block_size
packet size (512-65535)
Definition tds.h:950
│ │ │ │ +
char * database
database name
Definition tds.h:955
│ │ │ │ +
Holds information for a dynamic (also called prepared) query.
Definition tds.h:962
│ │ │ │ +
char * query
saved query, we need to know original query if prepare is impossible
Definition tds.h:994
│ │ │ │ +
TDS_INT ref_count
reference counter so client can retain safely a pointer
Definition tds.h:964
│ │ │ │ +
bool emulated
this dynamic query cannot be prepared so libTDS have to construct a simple query.
Definition tds.h:978
│ │ │ │ +
bool defer_close
true if dynamic was marker to be closed when connection is idle
Definition tds.h:982
│ │ │ │ +
TDSPARAMINFO * res_info
query results
Definition tds.h:984
│ │ │ │ +
TDSPARAMINFO * params
query parameters.
Definition tds.h:992
│ │ │ │ +
struct tds_dynamic * next
next in linked list, keep first
Definition tds.h:963
│ │ │ │ +
TDS_INT num_id
numeric id for mssql7+
Definition tds.h:966
│ │ │ │ +
Definition tds.h:1004
│ │ │ │ +
Definition tds.h:1015
│ │ │ │ +
Definition tds.h:1033
│ │ │ │ +
Definition tds.h:1043
│ │ │ │ +
unsigned data_len
data length, this does not account SMP header, only TDS part
Definition tds.h:1057
│ │ │ │ +
Definition tds.h:1071
│ │ │ │ +
Definition tds.h:1077
│ │ │ │ +
TDSENV env
environment is shared between all sessions
Definition tds.h:1088
│ │ │ │ +
uint8_t unicharsize
Ratio between bytes allocated for a UNICHAR type and type length (Sybase).
Definition tds.h:1145
│ │ │ │ +
TDSCURSOR * cursors
linked list of cursors allocated for this connection contains only cursors allocated on the server
Definition tds.h:1094
│ │ │ │ +
TDS_SYS_SOCKET s
tcp socket, INVALID_SOCKET if not connected
Definition tds.h:1083
│ │ │ │ +
TDS_UINT product_version
version of product (Sybase/MS and full version)
Definition tds.h:1080
│ │ │ │ +
TDSDYNAMIC * dyns
list of dynamic allocated for this connection contains only dynamic allocated on the server
Definition tds.h:1099
│ │ │ │ +
unsigned int pending_close
true is connection has pending closing (cursors or dynamic)
Definition tds.h:1110
│ │ │ │ +
uint8_t ncharsize
Ratio between bytes allocated for a NCHAR type and type length (Sybase).
Definition tds.h:1138
│ │ │ │ +
Information for a server connection.
Definition tds.h:1163
│ │ │ │ +
TDSLOGIN * login
config for login stuff.
Definition tds.h:1258
│ │ │ │ +
unsigned in_len
input buffer length
Definition tds.h:1194
│ │ │ │ +
TDSPACKET * frozen_packets
list of packets frozen, points to first one.
Definition tds.h:1203
│ │ │ │ +
TDSPACKET * send_packet
packet we are preparing to send
Definition tds.h:1231
│ │ │ │ +
unsigned char * in_buf
Input buffer.
Definition tds.h:1177
│ │ │ │ +
TDS_INT ret_status
return status from store procedure
Definition tds.h:1250
│ │ │ │ +
unsigned out_pos
current position in out_buf
Definition tds.h:1193
│ │ │ │ +
TDSRESULTINFO * current_results
Current query information.
Definition tds.h:1238
│ │ │ │ +
unsigned char in_flag
input buffer type
Definition tds.h:1195
│ │ │ │ +
TDS_INT8 rows_affected
rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid
Definition tds.h:1254
│ │ │ │ +
unsigned char out_flag
output buffer type
Definition tds.h:1196
│ │ │ │ +
unsigned in_pos
current position in in_buf
Definition tds.h:1192
│ │ │ │ +
TDSCURSOR * cur_cursor
cursor in use
Definition tds.h:1243
│ │ │ │ +
bool in_row
true if we are getting rows
Definition tds.h:1246
│ │ │ │ +
bool bulk_query
true is query sent was a bulk query so we need to switch state to QUERYING
Definition tds.h:1244
│ │ │ │ +
bool has_status
true is ret_status is valid
Definition tds.h:1245
│ │ │ │ +
unsigned char * out_buf
Output buffer.
Definition tds.h:1185
│ │ │ │ +
volatile unsigned char in_cancel
indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean we have to send cance...
Definition tds.h:1248
│ │ │ │ +
unsigned int out_buf_max
Maximum size of packet pointed by out_buf.
Definition tds.h:1191
│ │ │ │ +
TDSDYNAMIC * cur_dyn
dynamic structure in use
Definition tds.h:1256
│ │ │ │ +
Definition tds.h:1275
│ │ │ │ +
Definition tds.h:1281
│ │ │ │ +
Definition tds.h:1512
│ │ │ │ +
Definition tds.h:1584
│ │ │ │ +
TDSSOCKET * tds
which socket we refer to
Definition tds.h:1586
│ │ │ │ +
unsigned pkt_pos
position in pkt
Definition tds.h:1590
│ │ │ │ +
unsigned size_len
length size (0, 1, 2 or 4)
Definition tds.h:1592
│ │ │ │ +
TDSPACKET * pkt
first packet frozen
Definition tds.h:1588
│ │ │ │ +
Definition tds.h:1676
│ │ │ │ +
Definition tds.h:1684
│ │ │ │ +
Definition thread.h:279
│ │ │ │ +
Structure to hold a string.
Definition string.h:36
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,434 +1,2657 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -odbcss.h │ │ │ │ │ + * freetds │ │ │ │ │ +tds.h │ │ │ │ │ +Go_to_the_documentation_of_this_file. │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 2008 Frediano Ziglio │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _odbcss_h_ │ │ │ │ │ -21#define _odbcss_h_ │ │ │ │ │ -22 │ │ │ │ │ -23#ifdef TDSODBC_BCP │ │ │ │ │ -24#include │ │ │ │ │ -25#endif │ │ │ │ │ -26 │ │ │ │ │ -27#ifdef __cplusplus │ │ │ │ │ -28extern "C" { │ │ │ │ │ -29#endif │ │ │ │ │ -30 │ │ │ │ │ -31#define SQL_DIAG_SS_MSGSTATE (-1150) │ │ │ │ │ -32#define SQL_DIAG_SS_LINE (-1154) │ │ │ │ │ -33 │ │ │ │ │ -34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233 │ │ │ │ │ -35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234 │ │ │ │ │ -36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235 │ │ │ │ │ -37#define SQL_SOPT_SS_PARAM_FOCUS 1236 │ │ │ │ │ -38 │ │ │ │ │ -39#ifndef SQL_SS_LENGTH_UNLIMITED │ │ │ │ │ -40#define SQL_SS_LENGTH_UNLIMITED 0 │ │ │ │ │ -41#endif │ │ │ │ │ -42 │ │ │ │ │ -43#ifndef SQL_COPT_SS_BASE │ │ │ │ │ -44#define SQL_COPT_SS_BASE 1200 │ │ │ │ │ -45#endif │ │ │ │ │ +2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns │ │ │ │ │ +3 * Copyright (C) 2010, 2011 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +22#define _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ │ │ │ │ │ +23 │ │ │ │ │ +24#ifndef _freetds_config_h_ │ │ │ │ │ +25#error should include config.h before │ │ │ │ │ +26#endif │ │ │ │ │ +27 │ │ │ │ │ +28#include │ │ │ │ │ +29#include │ │ │ │ │ +30#include │ │ │ │ │ +31 │ │ │ │ │ +32#ifdef HAVE_STDDEF_H │ │ │ │ │ +33#include │ │ │ │ │ +34#endif │ │ │ │ │ +35 │ │ │ │ │ +36#if HAVE_NETDB_H │ │ │ │ │ +37#include │ │ │ │ │ +38#endif /* HAVE_NETDB_H */ │ │ │ │ │ +39 │ │ │ │ │ +40#if HAVE_NETINET_IN_H │ │ │ │ │ +41#include │ │ │ │ │ +42#endif /* HAVE_NET_INET_IN_H */ │ │ │ │ │ +43#if HAVE_ARPA_INET_H │ │ │ │ │ +44#include │ │ │ │ │ +45#endif /* HAVE_ARPA_INET_H */ │ │ │ │ │ 46 │ │ │ │ │ -47#ifndef SQL_COPT_SS_MARS_ENABLED │ │ │ │ │ -48#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) │ │ │ │ │ -49#endif │ │ │ │ │ +47#if HAVE_SYS_SOCKET_H │ │ │ │ │ +48#include │ │ │ │ │ +49#endif /* HAVE_SYS_SOCKET_H */ │ │ │ │ │ 50 │ │ │ │ │ -51#ifndef SQL_COPT_SS_OLDPWD │ │ │ │ │ -52#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) │ │ │ │ │ -53#endif │ │ │ │ │ -54 │ │ │ │ │ -55#define SQL_INFO_FREETDS_TDS_VERSION 1300 │ │ │ │ │ -56#define SQL_INFO_FREETDS_SOCKET 1301 │ │ │ │ │ +51/* forward declaration */ │ │ │ │ │ +52typedef struct tdsiconvinfo TDSICONV; │ │ │ │ │ +53typedef struct tds_connection TDSCONNECTION; │ │ │ │ │ +54typedef struct tds_socket TDSSOCKET; │ │ │ │ │ +55typedef struct tds_column TDSCOLUMN; │ │ │ │ │ +56typedef struct tds_bcpinfo TDSBCPINFO; │ │ │ │ │ 57 │ │ │ │ │ -58#ifndef SQL_MARS_ENABLED_NO │ │ │ │ │ -59#define SQL_MARS_ENABLED_NO 0 │ │ │ │ │ -60#endif │ │ │ │ │ -61 │ │ │ │ │ -62#ifndef SQL_MARS_ENABLED_YES │ │ │ │ │ -63#define SQL_MARS_ENABLED_YES 1 │ │ │ │ │ -64#endif │ │ │ │ │ -65 │ │ │ │ │ -66#ifndef SQL_SS_VARIANT │ │ │ │ │ -67#define SQL_SS_VARIANT (-150) │ │ │ │ │ -68#endif │ │ │ │ │ -69 │ │ │ │ │ -70#ifndef SQL_SS_UDT │ │ │ │ │ -71#define SQL_SS_UDT (-151) │ │ │ │ │ -72#endif │ │ │ │ │ -73 │ │ │ │ │ -74#ifndef SQL_SS_XML │ │ │ │ │ -75#define SQL_SS_XML (-152) │ │ │ │ │ -76#endif │ │ │ │ │ -77 │ │ │ │ │ -78#ifndef SQL_SS_TABLE │ │ │ │ │ -79#define SQL_SS_TABLE (-153) │ │ │ │ │ -80#endif │ │ │ │ │ -81 │ │ │ │ │ -82#ifndef SQL_SS_TIME2 │ │ │ │ │ -83#define SQL_SS_TIME2 (-154) │ │ │ │ │ -84#endif │ │ │ │ │ -85 │ │ │ │ │ -86#ifndef SQL_SS_TIMESTAMPOFFSET │ │ │ │ │ -87#define SQL_SS_TIMESTAMPOFFSET (-155) │ │ │ │ │ -88#endif │ │ │ │ │ -89 │ │ │ │ │ -90/* │ │ │ │ │ -91 * these types are used from conversion from client to server │ │ │ │ │ -92 */ │ │ │ │ │ -93#ifndef SQL_C_SS_TIME2 │ │ │ │ │ -94#define SQL_C_SS_TIME2 (0x4000) │ │ │ │ │ -95#endif │ │ │ │ │ -96 │ │ │ │ │ -97#ifndef SQL_C_SS_TIMESTAMPOFFSET │ │ │ │ │ -98#define SQL_C_SS_TIMESTAMPOFFSET (0x4001) │ │ │ │ │ -99#endif │ │ │ │ │ +58#include │ │ │ │ │ +59#include │ │ │ │ │ +60#include │ │ │ │ │ +61#include │ │ │ │ │ +62#include │ │ │ │ │ +63#include │ │ │ │ │ +64#include │ │ │ │ │ +65#include │ │ │ │ │ +66 │ │ │ │ │ +67#include │ │ │ │ │ +68 │ │ │ │ │ +69#ifdef __cplusplus │ │ │ │ │ +70extern "C" │ │ │ │ │ +71{ │ │ │ │ │ +72#if 0 │ │ │ │ │ +73} │ │ │ │ │ +74#endif │ │ │ │ │ +75#endif │ │ │ │ │ +76 │ │ │ │ │ +82typedef struct tds_compiletime_settings │ │ │ │ │ +83{ │ │ │ │ │ +84 const char *freetds_version; /* release version of FreeTDS */ │ │ │ │ │ +85 const tds_dir_char *sysconfdir; /* location of freetds.conf */ │ │ │ │ │ +86 const char *last_update; /* latest software_version date among the modules │ │ │ │ │ +*/ │ │ │ │ │ +87 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1/8.0) 5.0 */ │ │ │ │ │ +88 bool msdblib; /* for MS style dblib */ │ │ │ │ │ +89 bool sybase_compat; /* enable increased Open Client binary compatibility */ │ │ │ │ │ +90 bool threadsafe; /* compile for thread safety default=no */ │ │ │ │ │ +91 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */ │ │ │ │ │ +92 bool iodbc; /* build odbc driver against iODBC in DIR */ │ │ │ │ │ +93 bool unixodbc; /* build odbc driver against unixODBC in DIR */ │ │ │ │ │ +94 bool openssl; /* build against OpenSSL */ │ │ │ │ │ +95 bool gnutls; /* build against GnuTLS */ │ │ │ │ │ +96 bool mars; /* MARS enabled */ │ │ │ │ │ +97 bool sspi; /* SSPI enabled */ │ │ │ │ │ +98 bool kerberos; /* Kerberos enabled */ │ │ │ │ │ +99} TDS_COMPILETIME_SETTINGS; │ │ │ │ │ 100 │ │ │ │ │ -101#ifndef SQL_CA_SS_BASE │ │ │ │ │ -102#define SQL_CA_SS_BASE 1200 │ │ │ │ │ -103#endif │ │ │ │ │ -104 │ │ │ │ │ -105#ifndef SQL_CA_SS_UDT_CATALOG_NAME │ │ │ │ │ -106#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) │ │ │ │ │ -107#endif │ │ │ │ │ -108 │ │ │ │ │ -109#ifndef SQL_CA_SS_UDT_SCHEMA_NAME │ │ │ │ │ -110#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) │ │ │ │ │ -111#endif │ │ │ │ │ -112 │ │ │ │ │ -113#ifndef SQL_CA_SS_UDT_TYPE_NAME │ │ │ │ │ -114#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) │ │ │ │ │ -115#endif │ │ │ │ │ -116 │ │ │ │ │ -117#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME │ │ │ │ │ -118#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) │ │ │ │ │ -119#endif │ │ │ │ │ -120 │ │ │ │ │ -121#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME │ │ │ │ │ -122#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) │ │ │ │ │ -123#endif │ │ │ │ │ -124 │ │ │ │ │ -125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME │ │ │ │ │ -126#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) │ │ │ │ │ -127#endif │ │ │ │ │ -128 │ │ │ │ │ -129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME │ │ │ │ │ -130#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) │ │ │ │ │ -131#endif │ │ │ │ │ -132 │ │ │ │ │ -133typedef struct tagSS_TIME2_STRUCT { │ │ │ │ │ -134 SQLUSMALLINT hour; │ │ │ │ │ -135 SQLUSMALLINT minute; │ │ │ │ │ -136 SQLUSMALLINT second; │ │ │ │ │ -137 SQLUINTEGER fraction; │ │ │ │ │ -138} SQL_SS_TIME2_STRUCT; │ │ │ │ │ +116/* │ │ │ │ │ +117 * All references to data that touch the wire should use the following │ │ │ │ │ +typedefs. │ │ │ │ │ +118 * │ │ │ │ │ +119 * If you have problems on 64-bit machines and the code is │ │ │ │ │ +120 * using a native datatype, please change it to use │ │ │ │ │ +121 * these. (In the TDS layer only, the API layers have their │ │ │ │ │ +122 * own typedefs which equate to these). │ │ │ │ │ +123 */ │ │ │ │ │ +124typedef char TDS_CHAR; /* 8-bit char */ │ │ │ │ │ +125typedef uint8_t TDS_UCHAR; /* 8-bit uchar */ │ │ │ │ │ +126typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */ │ │ │ │ │ +127typedef int16_t TDS_SMALLINT; /* 16-bit int */ │ │ │ │ │ +128typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */ │ │ │ │ │ +129typedef int32_t TDS_INT; /* 32-bit int */ │ │ │ │ │ +130typedef uint32_t TDS_UINT; /* 32-bit unsigned */ │ │ │ │ │ +131typedef int64_t TDS_INT8; /* 64-bit integer */ │ │ │ │ │ +132typedef uint64_t TDS_UINT8; /* 64-bit unsigned */ │ │ │ │ │ +133typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */ │ │ │ │ │ +134typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */ │ │ │ │ │ +135 │ │ │ │ │ +136#include │ │ │ │ │ +137 │ │ │ │ │ +138#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0) │ │ │ │ │ 139 │ │ │ │ │ -140typedef struct tagSS_TIMESTAMPOFFSET_STRUCT { │ │ │ │ │ -141 SQLSMALLINT year; │ │ │ │ │ -142 SQLUSMALLINT month; │ │ │ │ │ -143 SQLUSMALLINT day; │ │ │ │ │ -144 SQLUSMALLINT hour; │ │ │ │ │ -145 SQLUSMALLINT minute; │ │ │ │ │ -146 SQLUSMALLINT second; │ │ │ │ │ -147 SQLUINTEGER fraction; │ │ │ │ │ -148 SQLSMALLINT timezone_hour; │ │ │ │ │ -149 SQLSMALLINT timezone_minute; │ │ │ │ │ -150} SQL_SS_TIMESTAMPOFFSET_STRUCT; │ │ │ │ │ -151 │ │ │ │ │ -152 │ │ │ │ │ -153#ifdef TDSODBC_BCP │ │ │ │ │ -154 │ │ │ │ │ -155#ifndef SUCCEED │ │ │ │ │ -156#define SUCCEED 1 │ │ │ │ │ -157#endif │ │ │ │ │ -158#ifndef FAIL │ │ │ │ │ -159#define FAIL 0 │ │ │ │ │ -160#endif │ │ │ │ │ -161 │ │ │ │ │ -162#ifndef BCPKEEPIDENTITY │ │ │ │ │ -163#define BCPKEEPIDENTITY 8 │ │ │ │ │ -164#endif │ │ │ │ │ -165#ifndef BCPHINTSA │ │ │ │ │ -166#define BCPHINTSA 10 │ │ │ │ │ -167#endif │ │ │ │ │ -168#ifndef BCPHINTSW │ │ │ │ │ -169#define BCPHINTSW 11 │ │ │ │ │ -170#endif │ │ │ │ │ +144typedef struct │ │ │ │ │ +145{ │ │ │ │ │ +146 TDS_UINT8 time; │ │ │ │ │ +147 TDS_INT date; │ │ │ │ │ +148 TDS_SMALLINT offset; │ │ │ │ │ +149 TDS_USMALLINT time_prec:3; │ │ │ │ │ +150 TDS_USMALLINT _tds_reserved:10; │ │ │ │ │ +151 TDS_USMALLINT has_time:1; │ │ │ │ │ +152 TDS_USMALLINT has_date:1; │ │ │ │ │ +153 TDS_USMALLINT has_offset:1; │ │ │ │ │ +154} TDS_DATETIMEALL; │ │ │ │ │ +155 │ │ │ │ │ +157typedef struct tdsdaterec │ │ │ │ │ +158{ │ │ │ │ │ +159 TDS_INT year; │ │ │ │ │ +160 TDS_INT quarter; │ │ │ │ │ +161 TDS_INT month; │ │ │ │ │ +162 TDS_INT day; │ │ │ │ │ +163 TDS_INT dayofyear; │ │ │ │ │ +164 TDS_INT weekday; │ │ │ │ │ +165 TDS_INT hour; │ │ │ │ │ +166 TDS_INT minute; │ │ │ │ │ +167 TDS_INT second; │ │ │ │ │ +168 TDS_INT decimicrosecond; │ │ │ │ │ +169 TDS_INT timezone; │ │ │ │ │ +170} TDSDATEREC; │ │ │ │ │ 171 │ │ │ │ │ -172#define BCP_DIRECTION_IN 1 │ │ │ │ │ -173 │ │ │ │ │ -174#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) │ │ │ │ │ -175#define SQL_BCP_OFF 0 │ │ │ │ │ -176#define SQL_BCP_ON 1 │ │ │ │ │ -177 │ │ │ │ │ -178#define SQL_COPT_TDSODBC_IMPL_BASE 1500 │ │ │ │ │ -179#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE) │ │ │ │ │ -180/* deprecated SQL_COPT_TDSODBC_IMPL_BCP_CONTROL */ │ │ │ │ │ -181#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2) │ │ │ │ │ -182#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3) │ │ │ │ │ -183#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4) │ │ │ │ │ -184#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5) │ │ │ │ │ -185#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6) │ │ │ │ │ -186#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7) │ │ │ │ │ -187#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+8) │ │ │ │ │ +177extern const int tds_numeric_bytes_per_prec[]; │ │ │ │ │ +178 │ │ │ │ │ +179typedef int TDSRET; │ │ │ │ │ +180#define TDS_NO_MORE_RESULTS ((TDSRET)1) │ │ │ │ │ +181#define TDS_SUCCESS ((TDSRET)0) │ │ │ │ │ +182#define TDS_FAIL ((TDSRET)-1) │ │ │ │ │ +183#define TDS_CANCELLED ((TDSRET)-2) │ │ │ │ │ +184#define TDS_FAILED(rc) ((rc)<0) │ │ │ │ │ +185#define TDS_SUCCEED(rc) ((rc)>=0) │ │ │ │ │ +186#define TDS_PROPAGATE(rc) \ │ │ │ │ │ +187 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } │ │ │ │ │ +while(0) │ │ │ │ │ 188 │ │ │ │ │ -189#define SQL_VARLEN_DATA -10 │ │ │ │ │ -190 │ │ │ │ │ -191/* copied from sybdb.h which was copied from tds.h */ │ │ │ │ │ -192/* TODO find a much better way... */ │ │ │ │ │ -193enum │ │ │ │ │ -194{ │ │ │ │ │ -195 BCP_TYPE_SQLCHAR = 47, /* 0x2F */ │ │ │ │ │ -196#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR │ │ │ │ │ -197 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */ │ │ │ │ │ -198#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR │ │ │ │ │ -199 BCP_TYPE_SQLINTN = 38, /* 0x26 */ │ │ │ │ │ -200#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN │ │ │ │ │ -201 BCP_TYPE_SQLINT1 = 48, /* 0x30 */ │ │ │ │ │ -202#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1 │ │ │ │ │ -203 BCP_TYPE_SQLINT2 = 52, /* 0x34 */ │ │ │ │ │ -204#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2 │ │ │ │ │ -205 BCP_TYPE_SQLINT4 = 56, /* 0x38 */ │ │ │ │ │ -206#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4 │ │ │ │ │ -207 BCP_TYPE_SQLINT8 = 127, /* 0x7F */ │ │ │ │ │ -208#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8 │ │ │ │ │ -209 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */ │ │ │ │ │ -210#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8 │ │ │ │ │ -211 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */ │ │ │ │ │ -212#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME │ │ │ │ │ -213 BCP_TYPE_SQLBIT = 50, /* 0x32 */ │ │ │ │ │ -214#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT │ │ │ │ │ -215 BCP_TYPE_SQLBITN = 104, /* 0x68 */ │ │ │ │ │ -216#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN │ │ │ │ │ -217 BCP_TYPE_SQLTEXT = 35, /* 0x23 */ │ │ │ │ │ -218#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT │ │ │ │ │ -219 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */ │ │ │ │ │ -220#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT │ │ │ │ │ -221 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */ │ │ │ │ │ -222#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE │ │ │ │ │ -223 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */ │ │ │ │ │ -224#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4 │ │ │ │ │ -225 BCP_TYPE_SQLMONEY = 60, /* 0x3C */ │ │ │ │ │ -226#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY │ │ │ │ │ -227 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */ │ │ │ │ │ -228#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4 │ │ │ │ │ -229 BCP_TYPE_SQLREAL = 59, /* 0x3B */ │ │ │ │ │ -230 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */ │ │ │ │ │ -231#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL │ │ │ │ │ -232#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4 │ │ │ │ │ -233 BCP_TYPE_SQLBINARY = 45, /* 0x2D */ │ │ │ │ │ -234#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY │ │ │ │ │ -235 BCP_TYPE_SQLVOID = 31, /* 0x1F */ │ │ │ │ │ -236#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID │ │ │ │ │ -237 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */ │ │ │ │ │ -238#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY │ │ │ │ │ -239 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */ │ │ │ │ │ -240#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC │ │ │ │ │ -241 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */ │ │ │ │ │ -242#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL │ │ │ │ │ -243 BCP_TYPE_SQLFLTN = 109, /* 0x6D */ │ │ │ │ │ -244#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN │ │ │ │ │ -245 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */ │ │ │ │ │ -246#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN │ │ │ │ │ -247 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */ │ │ │ │ │ -248#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN │ │ │ │ │ -249 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */ │ │ │ │ │ -250#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR │ │ │ │ │ -251 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */ │ │ │ │ │ -252#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID │ │ │ │ │ -253 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */ │ │ │ │ │ -254#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2 │ │ │ │ │ -255}; │ │ │ │ │ -256 │ │ │ │ │ -257typedef struct │ │ │ │ │ -258{ │ │ │ │ │ -259 int dtdays; │ │ │ │ │ -260 int dttime; │ │ │ │ │ -261} DBDATETIME; │ │ │ │ │ -262 │ │ │ │ │ -263#ifdef _MSC_VER │ │ │ │ │ -264#define TDSODBC_INLINE __inline │ │ │ │ │ -265#else │ │ │ │ │ -266#define TDSODBC_INLINE __inline__ │ │ │ │ │ -267#endif │ │ │ │ │ -268 │ │ │ │ │ -269struct tdsodbc_impl_bcp_init_params │ │ │ │ │ -270{ │ │ │ │ │ -271 const void *tblname; │ │ │ │ │ -272 const void *hfile; │ │ │ │ │ -273 const void *errfile; │ │ │ │ │ -274 int direction; │ │ │ │ │ -275}; │ │ │ │ │ -276 │ │ │ │ │ -277static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -278bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char │ │ │ │ │ -*errfile, int direction) │ │ │ │ │ -279{ │ │ │ │ │ -280 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, │ │ │ │ │ -direction}; │ │ │ │ │ -281 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -282} │ │ │ │ │ -283 │ │ │ │ │ -284static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -285bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const │ │ │ │ │ -SQLWCHAR *errfile, int direction) │ │ │ │ │ -286{ │ │ │ │ │ -287 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, │ │ │ │ │ -direction}; │ │ │ │ │ -288 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -289} │ │ │ │ │ -290 │ │ │ │ │ -291struct tdsodbc_impl_bcp_control_params │ │ │ │ │ -292{ │ │ │ │ │ -293 int field; │ │ │ │ │ -294 void *value; │ │ │ │ │ -295}; │ │ │ │ │ -296 │ │ │ │ │ -297static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -298bcp_control(HDBC hdbc, int field, void *value) │ │ │ │ │ -299{ │ │ │ │ │ -300 struct tdsodbc_impl_bcp_control_params params = {field, value}; │ │ │ │ │ -301 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -302} │ │ │ │ │ +189#define TDS_INT_CONTINUE 1 │ │ │ │ │ +190#define TDS_INT_CANCEL 2 │ │ │ │ │ +191#define TDS_INT_TIMEOUT 3 │ │ │ │ │ +192 │ │ │ │ │ +193 │ │ │ │ │ +194#define TDS_NO_COUNT -1 │ │ │ │ │ +195 │ │ │ │ │ +196#define TDS_ROW_RESULT 4040 │ │ │ │ │ +197#define TDS_PARAM_RESULT 4042 │ │ │ │ │ +198#define TDS_STATUS_RESULT 4043 │ │ │ │ │ +199#define TDS_MSG_RESULT 4044 │ │ │ │ │ +200#define TDS_COMPUTE_RESULT 4045 │ │ │ │ │ +201#define TDS_CMD_DONE 4046 │ │ │ │ │ +202#define TDS_CMD_SUCCEED 4047 │ │ │ │ │ +203#define TDS_CMD_FAIL 4048 │ │ │ │ │ +204#define TDS_ROWFMT_RESULT 4049 │ │ │ │ │ +205#define TDS_COMPUTEFMT_RESULT 4050 │ │ │ │ │ +206#define TDS_DESCRIBE_RESULT 4051 │ │ │ │ │ +207#define TDS_DONE_RESULT 4052 │ │ │ │ │ +208#define TDS_DONEPROC_RESULT 4053 │ │ │ │ │ +209#define TDS_DONEINPROC_RESULT 4054 │ │ │ │ │ +210#define TDS_OTHERS_RESULT 4055 │ │ │ │ │ +211 │ │ │ │ │ +212enum tds_token_results │ │ │ │ │ +213{ │ │ │ │ │ +214 TDS_TOKEN_RES_OTHERS, │ │ │ │ │ +215 TDS_TOKEN_RES_ROWFMT, │ │ │ │ │ +216 TDS_TOKEN_RES_COMPUTEFMT, │ │ │ │ │ +217 TDS_TOKEN_RES_PARAMFMT, │ │ │ │ │ +218 TDS_TOKEN_RES_DONE, │ │ │ │ │ +219 TDS_TOKEN_RES_ROW, │ │ │ │ │ +220 TDS_TOKEN_RES_COMPUTE, │ │ │ │ │ +221 TDS_TOKEN_RES_PROC, │ │ │ │ │ +222 TDS_TOKEN_RES_MSG, │ │ │ │ │ +223 TDS_TOKEN_RES_ENV, │ │ │ │ │ +224}; │ │ │ │ │ +225 │ │ │ │ │ +226#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_ │ │ │ │ │ +##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2)) │ │ │ │ │ +227 │ │ │ │ │ +228enum tds_token_flags │ │ │ │ │ +229{ │ │ │ │ │ +230 TDS_HANDLE_ALL = 0, │ │ │ │ │ +231 TDS_TOKEN_FLAG(OTHERS), │ │ │ │ │ +232 TDS_TOKEN_FLAG(ROWFMT), │ │ │ │ │ +233 TDS_TOKEN_FLAG(COMPUTEFMT), │ │ │ │ │ +234 TDS_TOKEN_FLAG(PARAMFMT), │ │ │ │ │ +235 TDS_TOKEN_FLAG(DONE), │ │ │ │ │ +236 TDS_TOKEN_FLAG(ROW), │ │ │ │ │ +237 TDS_TOKEN_FLAG(COMPUTE), │ │ │ │ │ +238 TDS_TOKEN_FLAG(PROC), │ │ │ │ │ +239 TDS_TOKEN_FLAG(MSG), │ │ │ │ │ +240 TDS_TOKEN_FLAG(ENV), │ │ │ │ │ +241 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_ │ │ │ │ │ +DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC, │ │ │ │ │ +242 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ │ │ │ │ │ +ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS │ │ │ │ │ +243}; │ │ │ │ │ +244 │ │ │ │ │ +245/* │ │ │ │ │ +246 * TDSERRNO is emitted by libtds to the client library's error handler │ │ │ │ │ +247 * (which may in turn call the client's error handler). │ │ │ │ │ +248 * These match the db-lib msgno, because the same values have the same │ │ │ │ │ +meaning │ │ │ │ │ +249 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo). │ │ │ │ │ +250 */ │ │ │ │ │ +251typedef enum { TDSEOK = TDS_SUCCESS, │ │ │ │ │ +252 TDSEVERDOWN = 100, │ │ │ │ │ +253 TDSEINPROGRESS, │ │ │ │ │ +254 TDSEICONVIU = 2400, │ │ │ │ │ +255 TDSEICONVAVAIL = 2401, │ │ │ │ │ +256 TDSEICONVO = 2402, │ │ │ │ │ +257 TDSEICONVI = 2403, │ │ │ │ │ +258 TDSEICONV2BIG = 2404, │ │ │ │ │ +259 TDSEPORTINSTANCE = 2500, │ │ │ │ │ +260 TDSESYNC = 20001, │ │ │ │ │ +261 TDSEFCON = 20002, │ │ │ │ │ +262 TDSETIME = 20003, │ │ │ │ │ +263 TDSEREAD = 20004, │ │ │ │ │ +264 TDSEWRIT = 20006, │ │ │ │ │ +265 TDSESOCK = 20008, │ │ │ │ │ +266 TDSECONN = 20009, │ │ │ │ │ +267 TDSEMEM = 20010, │ │ │ │ │ +268 TDSEINTF = 20012, /* Server name not found in interface file */ │ │ │ │ │ +269 TDSEUHST = 20013, /* Unknown host machine name. */ │ │ │ │ │ +270 TDSEPWD = 20014, │ │ │ │ │ +271 TDSESEOF = 20017, │ │ │ │ │ +272 TDSERPND = 20019, │ │ │ │ │ +273 TDSEBTOK = 20020, │ │ │ │ │ +274 TDSEOOB = 20022, │ │ │ │ │ +275 TDSECLOS = 20056, │ │ │ │ │ +276 TDSEUSCT = 20058, │ │ │ │ │ +277 TDSEUTDS = 20146, │ │ │ │ │ +278 TDSEEUNR = 20185, │ │ │ │ │ +279 TDSECAP = 20203, │ │ │ │ │ +280 TDSENEG = 20210, │ │ │ │ │ +281 TDSEUMSG = 20212, │ │ │ │ │ +282 TDSECAPTYP = 20213, │ │ │ │ │ +283 TDSECONF = 20214, │ │ │ │ │ +284 TDSEBPROBADTYP = 20250, │ │ │ │ │ +285 TDSECLOSEIN = 20292 │ │ │ │ │ +286} TDSERRNO; │ │ │ │ │ +287 │ │ │ │ │ +288 │ │ │ │ │ +289enum { │ │ │ │ │ +290 TDS_CUR_ISTAT_UNUSED = 0x00, │ │ │ │ │ +291 TDS_CUR_ISTAT_DECLARED = 0x01, │ │ │ │ │ +292 TDS_CUR_ISTAT_OPEN = 0x02, │ │ │ │ │ +293 TDS_CUR_ISTAT_CLOSED = 0x04, │ │ │ │ │ +294 TDS_CUR_ISTAT_RDONLY = 0x08, │ │ │ │ │ +295 TDS_CUR_ISTAT_UPDATABLE = 0x10, │ │ │ │ │ +296 TDS_CUR_ISTAT_ROWCNT = 0x20, │ │ │ │ │ +297 TDS_CUR_ISTAT_DEALLOC = 0x40 │ │ │ │ │ +298}; │ │ │ │ │ +299 │ │ │ │ │ +300/* string types */ │ │ │ │ │ +301#define TDS_NULLTERM -9 │ │ │ │ │ +302 │ │ │ │ │ 303 │ │ │ │ │ -304struct tdsodbc_impl_bcp_colptr_params │ │ │ │ │ +304typedef union tds_option_arg │ │ │ │ │ 305{ │ │ │ │ │ -306 const unsigned char * colptr; │ │ │ │ │ -307 int table_column; │ │ │ │ │ -308}; │ │ │ │ │ -309 │ │ │ │ │ -310static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -311bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column) │ │ │ │ │ -312{ │ │ │ │ │ -313 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column}; │ │ │ │ │ -314 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -315} │ │ │ │ │ -316 │ │ │ │ │ -317static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -318bcp_sendrow(HDBC hdbc) │ │ │ │ │ -319{ │ │ │ │ │ -320 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -321} │ │ │ │ │ -322 │ │ │ │ │ -323struct tdsodbc_impl_bcp_batch_params │ │ │ │ │ -324{ │ │ │ │ │ -325 int rows; │ │ │ │ │ -326}; │ │ │ │ │ -327 │ │ │ │ │ -328static TDSODBC_INLINE int SQL_API │ │ │ │ │ -329bcp_batch(HDBC hdbc) │ │ │ │ │ -330{ │ │ │ │ │ -331 struct tdsodbc_impl_bcp_batch_params params = {-1}; │ │ │ │ │ -332 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1; │ │ │ │ │ -333} │ │ │ │ │ +306 TDS_TINYINT ti; │ │ │ │ │ +307 TDS_INT i; │ │ │ │ │ +308 TDS_CHAR *c; │ │ │ │ │ +309} TDS_OPTION_ARG; │ │ │ │ │ +310 │ │ │ │ │ +311 │ │ │ │ │ +312typedef enum tds_encryption_level { │ │ │ │ │ +313 TDS_ENCRYPTION_DEFAULT, │ │ │ │ │ +314 TDS_ENCRYPTION_OFF, │ │ │ │ │ +315 TDS_ENCRYPTION_REQUEST, │ │ │ │ │ +316 TDS_ENCRYPTION_REQUIRE, │ │ │ │ │ +317 TDS_ENCRYPTION_STRICT │ │ │ │ │ +318} TDS_ENCRYPTION_LEVEL; │ │ │ │ │ +319 │ │ │ │ │ +320/* │ │ │ │ │ +321 * TODO use system macros for optimization │ │ │ │ │ +322 * See mcrypt for reference and linux kernel source for optimization │ │ │ │ │ +323 * check if unaligned access and use fast write/read when implemented │ │ │ │ │ +324 */ │ │ │ │ │ +325#define TDS_BYTE_SWAP16(value) \ │ │ │ │ │ +326 (((((uint16_t)value)<<8) & 0xFF00u) | \ │ │ │ │ │ +327 ((((uint16_t)value)>>8) & 0x00FFu)) │ │ │ │ │ +328 │ │ │ │ │ +329#define TDS_BYTE_SWAP32(value) \ │ │ │ │ │ +330 (((((uint32_t)value)<<24) & 0xFF000000u)| \ │ │ │ │ │ +331 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \ │ │ │ │ │ +332 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \ │ │ │ │ │ +333 ((((uint32_t)value)>>24) & 0x000000FFu)) │ │ │ │ │ 334 │ │ │ │ │ -335struct tdsodbc_impl_bcp_done_params │ │ │ │ │ -336{ │ │ │ │ │ -337 int rows; │ │ │ │ │ -338}; │ │ │ │ │ -339 │ │ │ │ │ -340static TDSODBC_INLINE int SQL_API │ │ │ │ │ -341bcp_done(HDBC hdbc) │ │ │ │ │ -342{ │ │ │ │ │ -343 struct tdsodbc_impl_bcp_done_params params = {-1}; │ │ │ │ │ -344 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1; │ │ │ │ │ -345} │ │ │ │ │ -346 │ │ │ │ │ -347struct tdsodbc_impl_bcp_bind_params │ │ │ │ │ -348{ │ │ │ │ │ -349 const unsigned char * varaddr; │ │ │ │ │ -350 int prefixlen; │ │ │ │ │ -351 int varlen; │ │ │ │ │ -352 const unsigned char * terminator; │ │ │ │ │ -353 int termlen; │ │ │ │ │ -354 int vartype; │ │ │ │ │ -355 int table_column; │ │ │ │ │ -356}; │ │ │ │ │ -357 │ │ │ │ │ -358static TDSODBC_INLINE RETCODE SQL_API │ │ │ │ │ -359bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int │ │ │ │ │ -varlen, │ │ │ │ │ -360 const unsigned char * terminator, int termlen, int vartype, int table_ │ │ │ │ │ -column) │ │ │ │ │ -361{ │ │ │ │ │ -362 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, │ │ │ │ │ -terminator, termlen, vartype, table_column}; │ │ │ │ │ -363 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_ │ │ │ │ │ -BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL; │ │ │ │ │ -364} │ │ │ │ │ -365 │ │ │ │ │ -366#ifdef UNICODE │ │ │ │ │ -367#define bcp_init bcp_initW │ │ │ │ │ -368#define BCPHINTS BCPHINTSW │ │ │ │ │ -369#else │ │ │ │ │ -370#define bcp_init bcp_initA │ │ │ │ │ -371#define BCPHINTS BCPHINTSA │ │ │ │ │ -372#endif │ │ │ │ │ -373 │ │ │ │ │ -374#endif /* TDSODBC_BCP */ │ │ │ │ │ -375 │ │ │ │ │ -376#ifdef __cplusplus │ │ │ │ │ -377} │ │ │ │ │ -378#endif │ │ │ │ │ -379 │ │ │ │ │ -380#endif /* _odbcss_h_ */ │ │ │ │ │ -bcp_control │ │ │ │ │ -RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value) │ │ │ │ │ -Set BCP options for uploading a datafile. │ │ │ │ │ -Definition bcp.c:546 │ │ │ │ │ -bcp_colptr │ │ │ │ │ -RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column) │ │ │ │ │ -Override bcp_bind() by pointing to a different host variable. │ │ │ │ │ -Definition bcp.c:674 │ │ │ │ │ -bcp_bind │ │ │ │ │ -RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, │ │ │ │ │ -BYTE *terminator, int termlen, int db_vartype, int table_column) │ │ │ │ │ -Bind a program host variable to a database column. │ │ │ │ │ -Definition bcp.c:2083 │ │ │ │ │ -bcp_done │ │ │ │ │ -DBINT bcp_done(DBPROCESS *dbproc) │ │ │ │ │ -Conclude the transfer of data from program variables. │ │ │ │ │ -Definition bcp.c:2041 │ │ │ │ │ -bcp_batch │ │ │ │ │ -DBINT bcp_batch(DBPROCESS *dbproc) │ │ │ │ │ -Commit a set of rows to the table. │ │ │ │ │ -Definition bcp.c:2014 │ │ │ │ │ -bcp_sendrow │ │ │ │ │ -RETCODE bcp_sendrow(DBPROCESS *dbproc) │ │ │ │ │ -Write data in host variables to the table. │ │ │ │ │ -Definition bcp.c:1384 │ │ │ │ │ -tagSS_TIME2_STRUCT │ │ │ │ │ -Definition odbcss.h:133 │ │ │ │ │ -tagSS_TIMESTAMPOFFSET_STRUCT │ │ │ │ │ -Definition odbcss.h:140 │ │ │ │ │ -DBDATETIME │ │ │ │ │ -Definition sybdb.h:296 │ │ │ │ │ +335#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_ │ │ │ │ │ +TOKEN) │ │ │ │ │ +336 │ │ │ │ │ +337enum { │ │ │ │ │ +338 TDS_TYPEFLAG_INVALID = 0, │ │ │ │ │ +339 TDS_TYPEFLAG_NULLABLE = 1, │ │ │ │ │ +340 TDS_TYPEFLAG_FIXED = 2, │ │ │ │ │ +341 TDS_TYPEFLAG_VARIABLE = 4, │ │ │ │ │ +342 TDS_TYPEFLAG_COLLATE = 8, │ │ │ │ │ +343 TDS_TYPEFLAG_ASCII = 16, │ │ │ │ │ +344 TDS_TYPEFLAG_UNICODE = 32, │ │ │ │ │ +345 TDS_TYPEFLAG_BINARY = 64, │ │ │ │ │ +346 TDS_TYPEFLAG_DATETIME = 128, │ │ │ │ │ +347 TDS_TYPEFLAG_NUMERIC = 256, │ │ │ │ │ +348 TDS_TYPEFLAG_VARIANT = 512, │ │ │ │ │ +349}; │ │ │ │ │ +350 │ │ │ │ │ +351extern const uint16_t tds_type_flags_ms[256]; │ │ │ │ │ +352#if 0 │ │ │ │ │ +353extern const uint16_t tds_type_flags_syb[256]; │ │ │ │ │ +354extern const char *const tds_type_names[256]; │ │ │ │ │ +355#endif │ │ │ │ │ +356 │ │ │ │ │ +357#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0) │ │ │ │ │ +358#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) │ │ │ │ │ +!= 0) │ │ │ │ │ +359#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) │ │ │ │ │ +!= 0) │ │ │ │ │ +360#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ │ │ │ │ │ +VARIANT) != 0) │ │ │ │ │ +361 │ │ │ │ │ +362 │ │ │ │ │ +363#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT) │ │ │ │ │ +364#define is_blob_col(x) ((x)->column_varint_size > 2) │ │ │ │ │ +365/* large type means it has a two byte size field */ │ │ │ │ │ +366/* define is_large_type(x) (x>128) */ │ │ │ │ │ +367#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL) │ │ │ │ │ +369#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) │ │ │ │ │ +!= 0) │ │ │ │ │ +370#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != │ │ │ │ │ +0) │ │ │ │ │ +371#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != │ │ │ │ │ +0) │ │ │ │ │ +372#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0) │ │ │ │ │ +373#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != │ │ │ │ │ +0) │ │ │ │ │ +374#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_ │ │ │ │ │ +TYPEFLAG_UNICODE)) != 0) │ │ │ │ │ +375#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y)) │ │ │ │ │ +376inline static bool │ │ │ │ │ +377is_tds_type_valid(int type) │ │ │ │ │ +378{ │ │ │ │ │ +379 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0; │ │ │ │ │ +380} │ │ │ │ │ +381 │ │ │ │ │ +382 │ │ │ │ │ +383#define TDS_MAX_CAPABILITY 32 │ │ │ │ │ +384#define MAXPRECISION 77 │ │ │ │ │ +385#define TDS_MAX_CONN 4096 │ │ │ │ │ +386#define TDS_MAX_DYNID_LEN 30 │ │ │ │ │ +387 │ │ │ │ │ +388/* defaults to use if no others are found */ │ │ │ │ │ +389#define TDS_DEF_SERVER "SYBASE" │ │ │ │ │ +390#define TDS_DEF_BLKSZ 512 │ │ │ │ │ +391#define TDS_DEF_CHARSET "iso_1" │ │ │ │ │ +392#define TDS_DEF_LANG "us_english" │ │ │ │ │ +393#if TDS50 │ │ │ │ │ +394#define TDS_DEFAULT_VERSION 0x500 │ │ │ │ │ +395#define TDS_DEF_PORT 4000 │ │ │ │ │ +396#elif TDS71 │ │ │ │ │ +397#define TDS_DEFAULT_VERSION 0x701 │ │ │ │ │ +398#define TDS_DEF_PORT 1433 │ │ │ │ │ +399#elif TDS72 │ │ │ │ │ +400#define TDS_DEFAULT_VERSION 0x702 │ │ │ │ │ +401#define TDS_DEF_PORT 1433 │ │ │ │ │ +402#elif TDS73 │ │ │ │ │ +403#define TDS_DEFAULT_VERSION 0x703 │ │ │ │ │ +404#define TDS_DEF_PORT 1433 │ │ │ │ │ +405#elif TDS74 │ │ │ │ │ +406#define TDS_DEFAULT_VERSION 0x704 │ │ │ │ │ +407#define TDS_DEF_PORT 1433 │ │ │ │ │ +408#else │ │ │ │ │ +409#define TDS_DEFAULT_VERSION 0x000 │ │ │ │ │ +410#define TDS_DEF_PORT 1433 │ │ │ │ │ +411#endif │ │ │ │ │ +412 │ │ │ │ │ +413/* normalized strings from freetds.conf file */ │ │ │ │ │ +414#define TDS_STR_VERSION "tds version" │ │ │ │ │ +415#define TDS_STR_BLKSZ "initial block size" │ │ │ │ │ +416#define TDS_STR_SWAPDT "swap broken dates" │ │ │ │ │ +417#define TDS_STR_DUMPFILE "dump file" │ │ │ │ │ +418#define TDS_STR_DEBUGLVL "debug level" │ │ │ │ │ +419#define TDS_STR_DEBUGFLAGS "debug flags" │ │ │ │ │ +420#define TDS_STR_TIMEOUT "timeout" │ │ │ │ │ +421#define TDS_STR_QUERY_TIMEOUT "query timeout" │ │ │ │ │ +422#define TDS_STR_CONNTIMEOUT "connect timeout" │ │ │ │ │ +423#define TDS_STR_HOSTNAME "hostname" │ │ │ │ │ +424#define TDS_STR_HOST "host" │ │ │ │ │ +425#define TDS_STR_PORT "port" │ │ │ │ │ +426#define TDS_STR_TEXTSZ "text size" │ │ │ │ │ +427/* for big endian hosts, obsolete, ignored */ │ │ │ │ │ +428#define TDS_STR_EMUL_LE "emulate little endian" │ │ │ │ │ +429#define TDS_STR_CHARSET "charset" │ │ │ │ │ +430#define TDS_STR_CLCHARSET "client charset" │ │ │ │ │ +431#define TDS_STR_USE_UTF_16 "use utf-16" │ │ │ │ │ +432#define TDS_STR_LANGUAGE "language" │ │ │ │ │ +433#define TDS_STR_APPENDMODE "dump file append" │ │ │ │ │ +434#define TDS_STR_DATETIMEFMT "date format" │ │ │ │ │ +435#define TDS_STR_DATEFMT "date-only format" │ │ │ │ │ +436#define TDS_STR_TIMEFMT "time-only format" │ │ │ │ │ +437#define TDS_STR_INSTANCE "instance" │ │ │ │ │ +438#define TDS_STR_ASA_DATABASE "asa database" │ │ │ │ │ +439#define TDS_STR_DATABASE "database" │ │ │ │ │ +440#define TDS_STR_ENCRYPTION "encryption" │ │ │ │ │ +441#define TDS_STR_USENTLMV2 "use ntlmv2" │ │ │ │ │ +442#define TDS_STR_USELANMAN "use lanman" │ │ │ │ │ +443/* conf values */ │ │ │ │ │ +444#define TDS_STR_ENCRYPTION_OFF "off" │ │ │ │ │ +445#define TDS_STR_ENCRYPTION_REQUEST "request" │ │ │ │ │ +446#define TDS_STR_ENCRYPTION_REQUIRE "require" │ │ │ │ │ +447#define TDS_STR_ENCRYPTION_STRICT "strict" │ │ │ │ │ +448/* Defines to enable optional GSSAPI delegation */ │ │ │ │ │ +449#define TDS_GSSAPI_DELEGATION "enable gssapi delegation" │ │ │ │ │ +450/* Mutual authentication */ │ │ │ │ │ +451#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication" │ │ │ │ │ +452/* Kerberos realm name */ │ │ │ │ │ +453#define TDS_STR_REALM "realm" │ │ │ │ │ +454/* Kerberos SPN */ │ │ │ │ │ +455#define TDS_STR_SPN "spn" │ │ │ │ │ +456/* CA file */ │ │ │ │ │ +457#define TDS_STR_CAFILE "ca file" │ │ │ │ │ +458/* CRL file */ │ │ │ │ │ +459#define TDS_STR_CRLFILE "crl file" │ │ │ │ │ +460/* check SSL hostname */ │ │ │ │ │ +461#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname" │ │ │ │ │ +462/* SSL hostname to check certificate */ │ │ │ │ │ +463#define TDS_STR_SSLHOSTNAME "certificate hostname" │ │ │ │ │ +464/* database filename to attach on login (MSSQL) */ │ │ │ │ │ +465#define TDS_STR_DBFILENAME "database filename" │ │ │ │ │ +466/* Application Intent MSSQL 2012 support */ │ │ │ │ │ +467#define TDS_STR_READONLY_INTENT "read-only intent" │ │ │ │ │ +468/* configurable cipher suite to send to openssl's SSL_set_cipher_list() │ │ │ │ │ +function */ │ │ │ │ │ +469#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers" │ │ │ │ │ +470/* enable old TLS v1, required for instance if you are using a really old │ │ │ │ │ +Windows XP */ │ │ │ │ │ +471#define TDS_STR_ENABLE_TLS_V1 "enable tls v1" │ │ │ │ │ +472 │ │ │ │ │ +473 │ │ │ │ │ +474/* TODO do a better check for alignment than this */ │ │ │ │ │ +475typedef union │ │ │ │ │ +476{ │ │ │ │ │ +477 void *p; │ │ │ │ │ +478 int i; │ │ │ │ │ +479 int64_t ui; │ │ │ │ │ +480} tds_align_struct; │ │ │ │ │ +481 │ │ │ │ │ +482#define TDS_ALIGN_SIZE sizeof(tds_align_struct) │ │ │ │ │ +483 │ │ │ │ │ +484typedef struct tds_capability_type │ │ │ │ │ +485{ │ │ │ │ │ +486 unsigned char type; │ │ │ │ │ +487 unsigned char len; /* always sizeof(values) */ │ │ │ │ │ +488 unsigned char values[TDS_MAX_CAPABILITY/2-2]; │ │ │ │ │ +489} TDS_CAPABILITY_TYPE; │ │ │ │ │ +490 │ │ │ │ │ +491typedef struct tds_capabilities │ │ │ │ │ +492{ │ │ │ │ │ +493 TDS_CAPABILITY_TYPE types[2]; │ │ │ │ │ +494} TDS_CAPABILITIES; │ │ │ │ │ +495 │ │ │ │ │ +496#define TDS_MAX_LOGIN_STR_SZ 128 │ │ │ │ │ +497typedef struct tds_login │ │ │ │ │ +498{ │ │ │ │ │ +499 DSTR server_name; │ │ │ │ │ +500 int port; │ │ │ │ │ +501 TDS_USMALLINT tds_version; │ │ │ │ │ +502 int block_size; │ │ │ │ │ +503 DSTR language; /* e.g. us-english */ │ │ │ │ │ +504 DSTR server_charset; │ │ │ │ │ +505 TDS_INT connect_timeout; │ │ │ │ │ +506 DSTR client_host_name; │ │ │ │ │ +507 DSTR server_host_name; │ │ │ │ │ +508 DSTR server_realm_name; │ │ │ │ │ +509 DSTR server_spn; │ │ │ │ │ +510 DSTR db_filename; │ │ │ │ │ +511 DSTR cafile; │ │ │ │ │ +512 DSTR crlfile; │ │ │ │ │ +513 DSTR certificate_host_name; │ │ │ │ │ +514 DSTR openssl_ciphers; │ │ │ │ │ +515 DSTR app_name; │ │ │ │ │ +516 DSTR user_name; │ │ │ │ │ +517 DSTR password; │ │ │ │ │ +518 DSTR new_password; │ │ │ │ │ +520 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */ │ │ │ │ │ +521 TDS_TINYINT encryption_level; │ │ │ │ │ +522 │ │ │ │ │ +523 TDS_INT query_timeout; │ │ │ │ │ +524 TDS_CAPABILITIES capabilities; │ │ │ │ │ +525 DSTR client_charset; │ │ │ │ │ +526 DSTR database; │ │ │ │ │ +527 │ │ │ │ │ +528 struct addrinfo *ip_addrs; │ │ │ │ │ +529 DSTR instance_name; │ │ │ │ │ +530 tds_dir_char *dump_file; │ │ │ │ │ +531 int debug_flags; │ │ │ │ │ +532 int text_size; │ │ │ │ │ +533 DSTR routing_address; │ │ │ │ │ +534 uint16_t routing_port; │ │ │ │ │ +535 │ │ │ │ │ +536 unsigned char option_flag2; │ │ │ │ │ +537 │ │ │ │ │ +538 unsigned int bulk_copy:1; │ │ │ │ │ +539 unsigned int suppress_language:1; │ │ │ │ │ +540 unsigned int gssapi_use_delegation:1; │ │ │ │ │ +541 unsigned int mutual_authentication:1; │ │ │ │ │ +542 unsigned int use_ntlmv2:1; │ │ │ │ │ +543 unsigned int use_ntlmv2_specified:1; │ │ │ │ │ +544 unsigned int use_lanman:1; │ │ │ │ │ +545 unsigned int mars:1; │ │ │ │ │ +546 unsigned int use_utf16:1; │ │ │ │ │ +547 unsigned int use_new_password:1; │ │ │ │ │ +548 unsigned int valid_configuration:1; │ │ │ │ │ +549 unsigned int check_ssl_hostname:1; │ │ │ │ │ +550 unsigned int readonly_intent:1; │ │ │ │ │ +551 unsigned int enable_tls_v1:1; │ │ │ │ │ +552 unsigned int enable_tls_v1_specified:1; │ │ │ │ │ +553 unsigned int server_is_valid:1; │ │ │ │ │ +554} TDSLOGIN; │ │ │ │ │ +555 │ │ │ │ │ +556typedef struct tds_headers │ │ │ │ │ +557{ │ │ │ │ │ +558 const char *qn_options; │ │ │ │ │ +559 const char *qn_msgtext; │ │ │ │ │ +560 TDS_INT qn_timeout; │ │ │ │ │ +561 /* TDS 7.4+: trace activity ID char[20] */ │ │ │ │ │ +562} TDSHEADERS; │ │ │ │ │ +563 │ │ │ │ │ +564typedef struct tds_locale │ │ │ │ │ +565{ │ │ │ │ │ +566 char *language; │ │ │ │ │ +567 char *server_charset; │ │ │ │ │ +568 char *datetime_fmt; │ │ │ │ │ +569 char *date_fmt; │ │ │ │ │ +570 char *time_fmt; │ │ │ │ │ +571} TDSLOCALE; │ │ │ │ │ +572 │ │ │ │ │ +577typedef struct tds_blob │ │ │ │ │ +578{ │ │ │ │ │ +579 TDS_CHAR *textvalue; │ │ │ │ │ +580 TDS_CHAR textptr[16]; │ │ │ │ │ +581 TDS_CHAR timestamp[8]; │ │ │ │ │ +582 bool valid_ptr; │ │ │ │ │ +583} TDSBLOB; │ │ │ │ │ +584 │ │ │ │ │ +588typedef struct tds_variant │ │ │ │ │ +589{ │ │ │ │ │ +590 /* this MUST have same position and place of textvalue in tds_blob */ │ │ │ │ │ +591 TDS_CHAR *data; │ │ │ │ │ +592 TDS_INT size; │ │ │ │ │ +593 TDS_INT data_len; │ │ │ │ │ +594 TDS_SERVER_TYPE type; │ │ │ │ │ +595 TDS_UCHAR collation[5]; │ │ │ │ │ +596} TDSVARIANT; │ │ │ │ │ +597 │ │ │ │ │ +602typedef struct tds_encoding │ │ │ │ │ +603{ │ │ │ │ │ +605 const char *name; │ │ │ │ │ +606 unsigned char min_bytes_per_char; │ │ │ │ │ +607 unsigned char max_bytes_per_char; │ │ │ │ │ +609 unsigned char canonic; │ │ │ │ │ +610} TDS_ENCODING; │ │ │ │ │ +611 │ │ │ │ │ +612typedef struct tds_bcpcoldata │ │ │ │ │ +613{ │ │ │ │ │ +614 TDS_UCHAR *data; │ │ │ │ │ +615 TDS_INT datalen; │ │ │ │ │ +616 bool is_null; │ │ │ │ │ +617} BCPCOLDATA; │ │ │ │ │ +618 │ │ │ │ │ +619 │ │ │ │ │ +620typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ +621typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ +622typedef TDS_INT tds_func_row_len(TDSCOLUMN *col); │ │ │ │ │ +623typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ +624typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7); │ │ │ │ │ +625typedef int tds_func_check(const TDSCOLUMN *col); │ │ │ │ │ +626 │ │ │ │ │ +627typedef struct tds_column_funcs │ │ │ │ │ +628{ │ │ │ │ │ +629 tds_func_get_info *get_info; │ │ │ │ │ +630 tds_func_get_data *get_data; │ │ │ │ │ +631 tds_func_row_len *row_len; │ │ │ │ │ +637 tds_func_put_info *put_info; │ │ │ │ │ +647 tds_func_put_data *put_data; │ │ │ │ │ +648#if ENABLE_EXTRA_CHECKS │ │ │ │ │ +663 tds_func_check *check; │ │ │ │ │ +664#endif │ │ │ │ │ +665#if 0 │ │ │ │ │ +666 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col); │ │ │ │ │ +667#endif │ │ │ │ │ +668} TDSCOLUMNFUNCS; │ │ │ │ │ +669 │ │ │ │ │ +673struct tds_column │ │ │ │ │ +674{ │ │ │ │ │ +675 const TDSCOLUMNFUNCS *funcs; │ │ │ │ │ +676 TDS_INT column_usertype; │ │ │ │ │ +677 TDS_INT column_flags; │ │ │ │ │ +678 │ │ │ │ │ +679 TDS_INT column_size; │ │ │ │ │ +681 TDS_SERVER_TYPE column_type; │ │ │ │ │ +686 TDS_TINYINT column_varint_size; │ │ │ │ │ +688 TDS_TINYINT column_prec; │ │ │ │ │ +689 TDS_TINYINT column_scale; │ │ │ │ │ +691 struct │ │ │ │ │ +692 { │ │ │ │ │ +693 TDS_SERVER_TYPE column_type; │ │ │ │ │ +694 TDS_INT column_size; │ │ │ │ │ +695 } on_server; │ │ │ │ │ +696 │ │ │ │ │ +697 TDSICONV *char_conv; │ │ │ │ │ +699 DSTR table_name; │ │ │ │ │ +700 DSTR column_name; │ │ │ │ │ +701 DSTR table_column_name; │ │ │ │ │ +702 │ │ │ │ │ +703 unsigned char *column_data; │ │ │ │ │ +704 void (*column_data_free)(struct tds_column *column); │ │ │ │ │ +705 unsigned char column_nullable:1; │ │ │ │ │ +706 unsigned char column_writeable:1; │ │ │ │ │ +707 unsigned char column_identity:1; │ │ │ │ │ +708 unsigned char column_key:1; │ │ │ │ │ +709 unsigned char column_hidden:1; │ │ │ │ │ +710 unsigned char column_output:1; │ │ │ │ │ +711 unsigned char column_timestamp:1; │ │ │ │ │ +712 unsigned char column_computed:1; │ │ │ │ │ +713 TDS_UCHAR column_collation[5]; │ │ │ │ │ +714 │ │ │ │ │ +715 /* additional fields flags for compute results */ │ │ │ │ │ +716 TDS_SMALLINT column_operand; │ │ │ │ │ +717 TDS_TINYINT column_operator; │ │ │ │ │ +718 │ │ │ │ │ +719 /* FIXME this is data related, not column */ │ │ │ │ │ +721 TDS_INT column_cur_size; │ │ │ │ │ +722 │ │ │ │ │ +723 /* related to binding or info stored by client libraries */ │ │ │ │ │ +724 /* FIXME find a best place to store these data, some are unused */ │ │ │ │ │ +725 TDS_SMALLINT column_bindtype; │ │ │ │ │ +726 TDS_SMALLINT column_bindfmt; │ │ │ │ │ +727 TDS_INT column_bindlen; │ │ │ │ │ +728 TDS_SMALLINT *column_nullbind; │ │ │ │ │ +729 TDS_CHAR *column_varaddr; │ │ │ │ │ +730 TDS_INT *column_lenbind; │ │ │ │ │ +731 TDS_INT column_textpos; │ │ │ │ │ +732 TDS_INT column_text_sqlgetdatapos; │ │ │ │ │ +733 TDS_CHAR column_text_sqlputdatainfo; │ │ │ │ │ +734 unsigned char column_iconv_left; │ │ │ │ │ +735 char column_iconv_buf[9]; │ │ │ │ │ +736 │ │ │ │ │ +737 BCPCOLDATA *bcp_column_data; │ │ │ │ │ +746 TDS_INT bcp_prefix_len; │ │ │ │ │ +747 TDS_INT bcp_term_len; │ │ │ │ │ +748 TDS_CHAR *bcp_terminator; │ │ │ │ │ +749}; │ │ │ │ │ +750 │ │ │ │ │ +751 │ │ │ │ │ +753typedef struct tds_result_info │ │ │ │ │ +754{ │ │ │ │ │ +755 /* TODO those fields can became a struct */ │ │ │ │ │ +756 TDSCOLUMN **columns; │ │ │ │ │ +757 TDS_USMALLINT num_cols; │ │ │ │ │ +758 TDS_USMALLINT computeid; │ │ │ │ │ +759 TDS_INT ref_count; │ │ │ │ │ +760 TDSSOCKET *attached_to; │ │ │ │ │ +761 unsigned char *current_row; │ │ │ │ │ +762 void (*row_free)(struct tds_result_info* result, unsigned char *row); │ │ │ │ │ +763 TDS_INT row_size; │ │ │ │ │ +764 │ │ │ │ │ +765 TDS_SMALLINT *bycolumns; │ │ │ │ │ +766 TDS_USMALLINT by_cols; │ │ │ │ │ +767 bool rows_exist; │ │ │ │ │ +768 /* TODO remove ?? used only in dblib */ │ │ │ │ │ +769 bool more_results; │ │ │ │ │ +770} TDSRESULTINFO; │ │ │ │ │ +771 │ │ │ │ │ +773typedef enum tds_states │ │ │ │ │ +774{ │ │ │ │ │ +775 TDS_IDLE, │ │ │ │ │ +776 TDS_WRITING, │ │ │ │ │ +777 TDS_SENDING, │ │ │ │ │ +778 TDS_PENDING, │ │ │ │ │ +779 TDS_READING, │ │ │ │ │ +780 TDS_DEAD │ │ │ │ │ +781} TDS_STATE; │ │ │ │ │ +782 │ │ │ │ │ +783typedef enum tds_operations │ │ │ │ │ +784{ │ │ │ │ │ +785 TDS_OP_NONE = 0, │ │ │ │ │ +786 │ │ │ │ │ +787 /* MSSQL operations, these matches protocol definitions */ │ │ │ │ │ +788 TDS_OP_CURSOR = TDS_SP_CURSOR, │ │ │ │ │ +789 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN, │ │ │ │ │ +790 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE, │ │ │ │ │ +791 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE, │ │ │ │ │ +792 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC, │ │ │ │ │ +793 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE, │ │ │ │ │ +794 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH, │ │ │ │ │ +795 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION, │ │ │ │ │ +796 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE, │ │ │ │ │ +797 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL, │ │ │ │ │ +798 TDS_OP_PREPARE = TDS_SP_PREPARE, │ │ │ │ │ +799 TDS_OP_EXECUTE = TDS_SP_EXECUTE, │ │ │ │ │ +800 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC, │ │ │ │ │ +801 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC, │ │ │ │ │ +802 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE, │ │ │ │ │ +803 │ │ │ │ │ +804 /* sybase operations */ │ │ │ │ │ +805 TDS_OP_DYN_DEALLOC = 100, │ │ │ │ │ +806} TDS_OPERATION; │ │ │ │ │ +807 │ │ │ │ │ +808#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11) │ │ │ │ │ +809#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10) │ │ │ │ │ +810#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7) │ │ │ │ │ +811#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6) │ │ │ │ │ +812#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5) │ │ │ │ │ +813#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4) │ │ │ │ │ +814#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3) │ │ │ │ │ +815#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2) │ │ │ │ │ +816#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1) │ │ │ │ │ +817 │ │ │ │ │ +818#define TDS_DBGFLAG_FUNC 0x80 │ │ │ │ │ +819#define TDS_DBGFLAG_INFO2 0x40 │ │ │ │ │ +820#define TDS_DBGFLAG_INFO1 0x20 │ │ │ │ │ +821#define TDS_DBGFLAG_NETWORK 0x10 │ │ │ │ │ +822#define TDS_DBGFLAG_WARN 0x08 │ │ │ │ │ +823#define TDS_DBGFLAG_ERROR 0x04 │ │ │ │ │ +824#define TDS_DBGFLAG_SEVERE 0x02 │ │ │ │ │ +825#define TDS_DBGFLAG_ALL 0xfff │ │ │ │ │ +826#define TDS_DBGFLAG_LOGIN 0x0800 │ │ │ │ │ +827#define TDS_DBGFLAG_HEADER 0x0400 │ │ │ │ │ +828#define TDS_DBGFLAG_PID 0x1000 │ │ │ │ │ +829#define TDS_DBGFLAG_TIME 0x2000 │ │ │ │ │ +830#define TDS_DBGFLAG_SOURCE 0x4000 │ │ │ │ │ +831#define TDS_DBGFLAG_THREAD 0x8000 │ │ │ │ │ +832 │ │ │ │ │ +833#if 0 │ │ │ │ │ +839enum TDS_DBG_LOG_STATE │ │ │ │ │ +840{ │ │ │ │ │ +841 TDS_DBG_LOGIN = (1 << 0) │ │ │ │ │ +843 , TDS_DBG_API = (1 << 1) │ │ │ │ │ +844 , TDS_DBG_ASYNC = (1 << 2) │ │ │ │ │ +845 , TDS_DBG_DIAG = (1 << 3) │ │ │ │ │ +846 , TDS_DBG_error = (1 << 4) │ │ │ │ │ +847 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */ │ │ │ │ │ +848 /* Log FreeTDS runtime/logic error occurs. */ │ │ │ │ │ +849 , TDS_DBG_PACKET = (1 << 5) │ │ │ │ │ +850 , TDS_DBG_LIBTDS = (1 << 6) │ │ │ │ │ +851 , TDS_DBG_CONFIG = (1 << 7) │ │ │ │ │ +852 , TDS_DBG_DEFAULT = 0xFE │ │ │ │ │ +853}; │ │ │ │ │ +854#endif │ │ │ │ │ +855 │ │ │ │ │ +856typedef struct tds_result_info TDSCOMPUTEINFO; │ │ │ │ │ +857 │ │ │ │ │ +858typedef TDSRESULTINFO TDSPARAMINFO; │ │ │ │ │ +859 │ │ │ │ │ +860typedef struct tds_message │ │ │ │ │ +861{ │ │ │ │ │ +862 TDS_CHAR *server; │ │ │ │ │ +863 TDS_CHAR *message; │ │ │ │ │ +864 TDS_CHAR *proc_name; │ │ │ │ │ +865 TDS_CHAR *sql_state; │ │ │ │ │ +866 TDS_INT msgno; │ │ │ │ │ +867 TDS_INT line_number; │ │ │ │ │ +868 /* -1 .. 255 */ │ │ │ │ │ +869 TDS_SMALLINT state; │ │ │ │ │ +870 TDS_TINYINT priv_msg_type; │ │ │ │ │ +871 TDS_TINYINT severity; │ │ │ │ │ +872 /* for library-generated errors */ │ │ │ │ │ +873 int oserr; │ │ │ │ │ +874} TDSMESSAGE; │ │ │ │ │ +875 │ │ │ │ │ +876typedef struct tds_upd_col │ │ │ │ │ +877{ │ │ │ │ │ +878 struct tds_upd_col *next; │ │ │ │ │ +879 TDS_INT colnamelength; │ │ │ │ │ +880 char * columnname; │ │ │ │ │ +881} TDSUPDCOL; │ │ │ │ │ +882 │ │ │ │ │ +883typedef enum { │ │ │ │ │ +884 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */ │ │ │ │ │ +885 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */ │ │ │ │ │ +886 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */ │ │ │ │ │ +887 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */ │ │ │ │ │ +888} TDS_CURSOR_STATE; │ │ │ │ │ +889 │ │ │ │ │ +890typedef struct tds_cursor_status │ │ │ │ │ +891{ │ │ │ │ │ +892 TDS_CURSOR_STATE declare; │ │ │ │ │ +893 TDS_CURSOR_STATE cursor_row; │ │ │ │ │ +894 TDS_CURSOR_STATE open; │ │ │ │ │ +895 TDS_CURSOR_STATE fetch; │ │ │ │ │ +896 TDS_CURSOR_STATE close; │ │ │ │ │ +897 TDS_CURSOR_STATE dealloc; │ │ │ │ │ +898} TDS_CURSOR_STATUS; │ │ │ │ │ +899 │ │ │ │ │ +900typedef enum tds_cursor_operation │ │ │ │ │ +901{ │ │ │ │ │ +902 TDS_CURSOR_POSITION = 0, │ │ │ │ │ +903 TDS_CURSOR_UPDATE = 1, │ │ │ │ │ +904 TDS_CURSOR_DELETE = 2, │ │ │ │ │ +905 TDS_CURSOR_INSERT = 4 │ │ │ │ │ +906} TDS_CURSOR_OPERATION; │ │ │ │ │ +907 │ │ │ │ │ +908typedef enum tds_cursor_fetch │ │ │ │ │ +909{ │ │ │ │ │ +910 TDS_CURSOR_FETCH_NEXT = 1, │ │ │ │ │ +911 TDS_CURSOR_FETCH_PREV, │ │ │ │ │ +912 TDS_CURSOR_FETCH_FIRST, │ │ │ │ │ +913 TDS_CURSOR_FETCH_LAST, │ │ │ │ │ +914 TDS_CURSOR_FETCH_ABSOLUTE, │ │ │ │ │ +915 TDS_CURSOR_FETCH_RELATIVE │ │ │ │ │ +916} TDS_CURSOR_FETCH; │ │ │ │ │ +917 │ │ │ │ │ +921typedef struct tds_cursor │ │ │ │ │ +922{ │ │ │ │ │ +923 struct tds_cursor *next; │ │ │ │ │ +924 TDS_INT ref_count; │ │ │ │ │ +925 char *cursor_name; │ │ │ │ │ +926 TDS_INT cursor_id; │ │ │ │ │ +927 TDS_TINYINT options; │ │ │ │ │ +931 bool defer_close; │ │ │ │ │ +932 char *query; │ │ │ │ │ +933 /* TODO for updatable columns */ │ │ │ │ │ +934 /* TDS_TINYINT number_upd_cols; */ │ │ │ │ │ +935 /* TDSUPDCOL *cur_col_list; */ │ │ │ │ │ +936 TDS_INT cursor_rows; │ │ │ │ │ +937 /* TDSPARAMINFO *params; */ │ │ │ │ │ +938 TDS_CURSOR_STATUS status; │ │ │ │ │ +939 TDS_USMALLINT srv_status; │ │ │ │ │ +940 TDSRESULTINFO *res_info; │ │ │ │ │ +941 TDS_INT type, concurrency; │ │ │ │ │ +942} TDSCURSOR; │ │ │ │ │ +943 │ │ │ │ │ +947typedef struct tds_env │ │ │ │ │ +948{ │ │ │ │ │ +950 int block_size; │ │ │ │ │ +951 char *language; │ │ │ │ │ +953 char *charset; │ │ │ │ │ +955 char *database; │ │ │ │ │ +956} TDSENV; │ │ │ │ │ +957 │ │ │ │ │ +961typedef struct tds_dynamic │ │ │ │ │ +962{ │ │ │ │ │ +963 struct tds_dynamic *next; │ │ │ │ │ +964 TDS_INT ref_count; │ │ │ │ │ +966 TDS_INT num_id; │ │ │ │ │ +972 char id[30]; │ │ │ │ │ +978 bool emulated; │ │ │ │ │ +982 bool defer_close; │ │ │ │ │ +983 /* int dyn_state; */ /* TODO use it */ │ │ │ │ │ +984 TDSPARAMINFO *res_info; │ │ │ │ │ +992 TDSPARAMINFO *params; │ │ │ │ │ +994 char *query; │ │ │ │ │ +995} TDSDYNAMIC; │ │ │ │ │ +996 │ │ │ │ │ +997typedef enum { │ │ │ │ │ +998 TDS_MULTIPLE_QUERY, │ │ │ │ │ +999 TDS_MULTIPLE_EXECUTE, │ │ │ │ │ +1000 TDS_MULTIPLE_RPC │ │ │ │ │ +1001} TDS_MULTIPLE_TYPE; │ │ │ │ │ +1002 │ │ │ │ │ +1003typedef struct tds_multiple │ │ │ │ │ +1004{ │ │ │ │ │ +1005 TDS_MULTIPLE_TYPE type; │ │ │ │ │ +1006 unsigned int flags; │ │ │ │ │ +1007} TDSMULTIPLE; │ │ │ │ │ +1008 │ │ │ │ │ +1009/* forward declaration */ │ │ │ │ │ +1010typedef struct tds_context TDSCONTEXT; │ │ │ │ │ +1011typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE │ │ │ │ │ +*); │ │ │ │ │ +1012typedef int (*int_handler_t) (void *); │ │ │ │ │ +1013 │ │ │ │ │ +1014struct tds_context │ │ │ │ │ +1015{ │ │ │ │ │ +1016 TDSLOCALE *locale; │ │ │ │ │ +1017 void *parent; │ │ │ │ │ +1018 /* handlers */ │ │ │ │ │ +1019 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *); │ │ │ │ │ +1020 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *); │ │ │ │ │ +1021 int (*int_handler) (void *); │ │ │ │ │ +1022 bool money_use_2_digits; │ │ │ │ │ +1023}; │ │ │ │ │ +1024 │ │ │ │ │ +1025enum TDS_ICONV_ENTRY │ │ │ │ │ +1026{ │ │ │ │ │ +1027 client2ucs2 │ │ │ │ │ +1028 , client2server_chardata │ │ │ │ │ +1029 , initial_char_conv_count /* keep last */ │ │ │ │ │ +1030}; │ │ │ │ │ +1031 │ │ │ │ │ +1032typedef struct tds_authentication │ │ │ │ │ +1033{ │ │ │ │ │ +1034 uint8_t *packet; │ │ │ │ │ +1035 int packet_len; │ │ │ │ │ +1036 /* TDS_MSG_TOKEN type, for TDS5 */ │ │ │ │ │ +1037 uint16_t msg_type; │ │ │ │ │ +1038 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth); │ │ │ │ │ +1039 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, │ │ │ │ │ +size_t len); │ │ │ │ │ +1040} TDSAUTHENTICATION; │ │ │ │ │ +1041 │ │ │ │ │ +1042typedef struct tds_packet │ │ │ │ │ +1043{ │ │ │ │ │ +1044 struct tds_packet *next; │ │ │ │ │ +1045 uint16_t sid; │ │ │ │ │ +1046 │ │ │ │ │ +1047#if ENABLE_ODBC_MARS │ │ │ │ │ +1051 uint8_t data_start; │ │ │ │ │ +1052#endif │ │ │ │ │ +1053 │ │ │ │ │ +1057 unsigned data_len; │ │ │ │ │ +1058 unsigned capacity; │ │ │ │ │ +1059 unsigned char buf[1]; │ │ │ │ │ +1060} TDSPACKET; │ │ │ │ │ +1061 │ │ │ │ │ +1062#if ENABLE_ODBC_MARS │ │ │ │ │ +1063#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while │ │ │ │ │ +(0) │ │ │ │ │ +1064#define tds_packet_get_data_start(pkt) ((pkt)->data_start) │ │ │ │ │ +1065#else │ │ │ │ │ +1066#define tds_packet_zero_data_start(pkt) do { } while(0) │ │ │ │ │ +1067#define tds_packet_get_data_start(pkt) 0 │ │ │ │ │ +1068#endif │ │ │ │ │ +1069 │ │ │ │ │ +1070typedef struct tds_poll_wakeup │ │ │ │ │ +1071{ │ │ │ │ │ +1072 TDS_SYS_SOCKET s_signal, s_signaled; │ │ │ │ │ +1073} TDSPOLLWAKEUP; │ │ │ │ │ +1074 │ │ │ │ │ +1075/* field related to connection */ │ │ │ │ │ +1076struct tds_connection │ │ │ │ │ +1077{ │ │ │ │ │ +1078 TDS_USMALLINT tds_version; │ │ │ │ │ +1079 bool corked; │ │ │ │ │ +1080 TDS_UINT product_version; │ │ │ │ │ +1081 char *product_name; │ │ │ │ │ +1082 │ │ │ │ │ +1083 TDS_SYS_SOCKET s; │ │ │ │ │ +1084 TDSPOLLWAKEUP wakeup; │ │ │ │ │ +1085 const TDSCONTEXT *tds_ctx; │ │ │ │ │ +1086 │ │ │ │ │ +1088 TDSENV env; │ │ │ │ │ +1089 │ │ │ │ │ +1094 TDSCURSOR *cursors; │ │ │ │ │ +1099 TDSDYNAMIC *dyns; │ │ │ │ │ +1100 │ │ │ │ │ +1101 int char_conv_count; │ │ │ │ │ +1102 TDSICONV **char_convs; │ │ │ │ │ +1103 │ │ │ │ │ +1104 TDS_UCHAR collation[5]; │ │ │ │ │ +1105 TDS_UCHAR tds72_transaction[8]; │ │ │ │ │ +1106 │ │ │ │ │ +1107 TDS_CAPABILITIES capabilities; │ │ │ │ │ +1108 unsigned int use_iconv:1; │ │ │ │ │ +1109 unsigned int tds71rev1:1; │ │ │ │ │ +1110 unsigned int pending_close:1; │ │ │ │ │ +1111 unsigned int encrypt_single_packet:1; │ │ │ │ │ +1112#if ENABLE_ODBC_MARS │ │ │ │ │ +1113 unsigned int mars:1; │ │ │ │ │ +1114 │ │ │ │ │ +1115 TDSSOCKET *in_net_tds; │ │ │ │ │ +1116 TDSPACKET *packets; │ │ │ │ │ +1117 TDSPACKET *recv_packet; │ │ │ │ │ +1118 TDSPACKET *send_packets; │ │ │ │ │ +1119 unsigned send_pos, recv_pos; │ │ │ │ │ +1120 │ │ │ │ │ +1121#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1) │ │ │ │ │ +1122#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1) │ │ │ │ │ +1123 struct tds_socket **sessions; │ │ │ │ │ +1124 unsigned num_sessions; │ │ │ │ │ +1125#endif │ │ │ │ │ +1126 tds_mutex list_mtx; │ │ │ │ │ +1127 │ │ │ │ │ +1128 unsigned num_cached_packets; │ │ │ │ │ +1129 TDSPACKET *packet_cache; │ │ │ │ │ +1130 │ │ │ │ │ +1131 int spid; │ │ │ │ │ +1132 int client_spid; │ │ │ │ │ +1133 │ │ │ │ │ +1138 uint8_t ncharsize; │ │ │ │ │ +1139 │ │ │ │ │ +1145 uint8_t unicharsize; │ │ │ │ │ +1146 │ │ │ │ │ +1147 void *tls_session; │ │ │ │ │ +1148#if defined(HAVE_GNUTLS) │ │ │ │ │ +1149 void *tls_credentials; │ │ │ │ │ +1150#elif defined(HAVE_OPENSSL) │ │ │ │ │ +1151 void *tls_ctx; │ │ │ │ │ +1152#else │ │ │ │ │ +1153 void *tls_dummy; │ │ │ │ │ +1154#endif │ │ │ │ │ +1155 TDSAUTHENTICATION *authentication; │ │ │ │ │ +1156 char *server; │ │ │ │ │ +1157}; │ │ │ │ │ +1158 │ │ │ │ │ +1162struct tds_socket │ │ │ │ │ +1163{ │ │ │ │ │ +1164#if ENABLE_ODBC_MARS │ │ │ │ │ +1165 TDSCONNECTION *conn; │ │ │ │ │ +1166#else │ │ │ │ │ +1167 TDSCONNECTION conn[1]; │ │ │ │ │ +1168#endif │ │ │ │ │ +1169 │ │ │ │ │ +1170 void *parent; │ │ │ │ │ +1171 │ │ │ │ │ +1177 unsigned char *in_buf; │ │ │ │ │ +1178 │ │ │ │ │ +1185 unsigned char *out_buf; │ │ │ │ │ +1186 │ │ │ │ │ +1191 unsigned int out_buf_max; │ │ │ │ │ +1192 unsigned in_pos; │ │ │ │ │ +1193 unsigned out_pos; │ │ │ │ │ +1194 unsigned in_len; │ │ │ │ │ +1195 unsigned char in_flag; │ │ │ │ │ +1196 unsigned char out_flag; │ │ │ │ │ +1198 unsigned frozen; │ │ │ │ │ +1203 TDSPACKET *frozen_packets; │ │ │ │ │ +1204 │ │ │ │ │ +1205#if ENABLE_ODBC_MARS │ │ │ │ │ +1210 uint16_t sid; │ │ │ │ │ +1211 │ │ │ │ │ +1216 tds_condition packet_cond; │ │ │ │ │ +1217 │ │ │ │ │ +1222 TDSPACKET *sending_packet; │ │ │ │ │ +1223 TDS_UINT recv_seq; │ │ │ │ │ +1224 TDS_UINT send_seq; │ │ │ │ │ +1225 TDS_UINT recv_wnd; │ │ │ │ │ +1226 TDS_UINT send_wnd; │ │ │ │ │ +1227#endif │ │ │ │ │ +1228 /* packet we received */ │ │ │ │ │ +1229 TDSPACKET *recv_packet; │ │ │ │ │ +1231 TDSPACKET *send_packet; │ │ │ │ │ +1232 │ │ │ │ │ +1238 TDSRESULTINFO *current_results; │ │ │ │ │ +1239 TDSRESULTINFO *res_info; │ │ │ │ │ +1240 TDS_UINT num_comp_info; │ │ │ │ │ +1241 TDSCOMPUTEINFO **comp_info; │ │ │ │ │ +1242 TDSPARAMINFO *param_info; │ │ │ │ │ +1243 TDSCURSOR *cur_cursor; │ │ │ │ │ +1244 bool bulk_query; │ │ │ │ │ +1245 bool has_status; │ │ │ │ │ +1246 bool in_row; │ │ │ │ │ +1247 volatile │ │ │ │ │ +1248 unsigned char in_cancel; │ │ │ │ │ +1250 TDS_INT ret_status; │ │ │ │ │ +1251 TDS_STATE state; │ │ │ │ │ +1252 │ │ │ │ │ +1253 TDS_INT query_timeout; │ │ │ │ │ +1254 TDS_INT8 rows_affected; │ │ │ │ │ +1256 TDSDYNAMIC *cur_dyn; │ │ │ │ │ +1258 TDSLOGIN *login; │ │ │ │ │ +1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char │ │ │ │ │ +*newval); │ │ │ │ │ +1261 TDS_OPERATION current_op; │ │ │ │ │ +1262 │ │ │ │ │ +1263 int option_value; │ │ │ │ │ +1264 tds_mutex wire_mtx; │ │ │ │ │ +1265}; │ │ │ │ │ +1266 │ │ │ │ │ +1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx) │ │ │ │ │ +1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while │ │ │ │ │ +(0) │ │ │ │ │ +1269#define tds_get_parent(tds) ((tds)->parent) │ │ │ │ │ +1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0) │ │ │ │ │ +1271#define tds_get_s(tds) ((tds)->conn->s) │ │ │ │ │ +1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0) │ │ │ │ │ +1273 │ │ │ │ │ +1274typedef struct tds_tvp_row │ │ │ │ │ +1275{ │ │ │ │ │ +1276 TDSPARAMINFO *params; │ │ │ │ │ +1277 struct tds_tvp_row *next; │ │ │ │ │ +1278} TDS_TVP_ROW; │ │ │ │ │ +1279 │ │ │ │ │ +1280typedef struct tds_tvp │ │ │ │ │ +1281{ │ │ │ │ │ +1282 char *schema; │ │ │ │ │ +1283 char *name; │ │ │ │ │ +1284 TDSPARAMINFO *metadata; │ │ │ │ │ +1285 TDS_TVP_ROW *row; │ │ │ │ │ +1286} TDS_TVP; │ │ │ │ │ +1287 │ │ │ │ │ +1288 │ │ │ │ │ +1289/* config.c */ │ │ │ │ │ +1290const TDS_COMPILETIME_SETTINGS *tds_get_compiletime_settings(void); │ │ │ │ │ +1291typedef bool (*TDSCONFPARSE) (const char *option, const char *value, void │ │ │ │ │ +*param); │ │ │ │ │ +1292bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE │ │ │ │ │ +tds_conf_parse, void *parse_param); │ │ │ │ │ +1293bool tds_read_conf_file(TDSLOGIN * login, const char *server); │ │ │ │ │ +1294bool tds_parse_conf_section(const char *option, const char *value, void │ │ │ │ │ +*param); │ │ │ │ │ +1295TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE │ │ │ │ │ +* locale); │ │ │ │ │ +1296void tds_fix_login(TDSLOGIN* login); │ │ │ │ │ +1297TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login); │ │ │ │ │ +1298struct addrinfo *tds_lookup_host(const char *servername); │ │ │ │ │ +1299TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr); │ │ │ │ │ +1300const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int │ │ │ │ │ +namemax); │ │ │ │ │ +1301 │ │ │ │ │ +1302TDSRET tds_set_interfaces_file_loc(const char *interfloc); │ │ │ │ │ +1303extern const char STD_DATETIME_FMT[]; │ │ │ │ │ +1304int tds_parse_boolean(const char *value, int default_value); │ │ │ │ │ +1305int tds_config_boolean(const char *option, const char *value, TDSLOGIN * │ │ │ │ │ +login); │ │ │ │ │ +1306 │ │ │ │ │ +1307TDSLOCALE *tds_get_locale(void); │ │ │ │ │ +1308TDSRET tds_alloc_row(TDSRESULTINFO * res_info); │ │ │ │ │ +1309TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info); │ │ │ │ │ +1310BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size); │ │ │ │ │ +1311TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id); │ │ │ │ │ +1312/*@observer@*/ const char *tds_prtype(int token); │ │ │ │ │ +1313int tds_get_varint_size(TDSCONNECTION * conn, int datatype); │ │ │ │ │ +1314TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int │ │ │ │ │ +usertype); │ │ │ │ │ +1315TDSRET tds8_adjust_login(TDSLOGIN *login); │ │ │ │ │ +1316 │ │ │ │ │ +1317 │ │ │ │ │ +1318/* iconv.c */ │ │ │ │ │ +1319TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_ │ │ │ │ │ +utf16); │ │ │ │ │ +1320void tds_iconv_close(TDSCONNECTION * conn); │ │ │ │ │ +1321void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset); │ │ │ │ │ +1322void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]); │ │ │ │ │ +1323int tds_iconv_alloc(TDSCONNECTION * conn); │ │ │ │ │ +1324void tds_iconv_free(TDSCONNECTION * conn); │ │ │ │ │ +1325TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate │ │ │ │ │ +[5]); │ │ │ │ │ +1326 │ │ │ │ │ +1327 │ │ │ │ │ +1328/* mem.c */ │ │ │ │ │ +1329void tds_free_socket(TDSSOCKET * tds); │ │ │ │ │ +1330void tds_free_all_results(TDSSOCKET * tds); │ │ │ │ │ +1331void tds_free_results(TDSRESULTINFO * res_info); │ │ │ │ │ +1332void tds_free_param_results(TDSPARAMINFO * param_info); │ │ │ │ │ +1333void tds_free_param_result(TDSPARAMINFO * param_info); │ │ │ │ │ +1334void tds_free_msg(TDSMESSAGE * message); │ │ │ │ │ +1335void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor); │ │ │ │ │ +1336void tds_release_cursor(TDSCURSOR **pcursor); │ │ │ │ │ +1337void tds_free_bcp_column_data(BCPCOLDATA * coldata); │ │ │ │ │ +1338TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols); │ │ │ │ │ +1339TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT │ │ │ │ │ +num_cols, TDS_USMALLINT by_cols); │ │ │ │ │ +1340TDSCONTEXT *tds_alloc_context(void * parent); │ │ │ │ │ +1341void tds_free_context(TDSCONTEXT * locale); │ │ │ │ │ +1342TDSPARAMINFO *tds_alloc_param_result(TDSPARAMINFO * old_param); │ │ │ │ │ +1343void tds_free_input_params(TDSDYNAMIC * dyn); │ │ │ │ │ +1344void tds_release_dynamic(TDSDYNAMIC ** dyn); │ │ │ │ │ +1345inline static void │ │ │ │ │ +1346tds_release_cur_dyn(TDSSOCKET * tds) │ │ │ │ │ +1347{ │ │ │ │ │ +1348 tds_release_dynamic(&tds->cur_dyn); │ │ │ │ │ +1349} │ │ │ │ │ +1350void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn); │ │ │ │ │ +1351void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn); │ │ │ │ │ +1352TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize); │ │ │ │ │ +1353char *tds_alloc_client_sqlstate(int msgno); │ │ │ │ │ +1354char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno); │ │ │ │ │ +1355TDSLOGIN *tds_alloc_login(bool use_environment); │ │ │ │ │ +1356TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id); │ │ │ │ │ +1357void tds_free_login(TDSLOGIN * login); │ │ │ │ │ +1358TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale); │ │ │ │ │ +1359TDSLOCALE *tds_alloc_locale(void); │ │ │ │ │ +1360void *tds_alloc_param_data(TDSCOLUMN * curparam); │ │ │ │ │ +1361void tds_free_locale(TDSLOCALE * locale); │ │ │ │ │ +1362TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT │ │ │ │ │ +namelen, const char *query, TDS_INT querylen); │ │ │ │ │ +1363void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row); │ │ │ │ │ +1364TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize); │ │ │ │ │ +1365TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn); │ │ │ │ │ +1366void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info); │ │ │ │ │ +1367void tds_detach_results(TDSRESULTINFO *info); │ │ │ │ │ +1368void * tds_realloc(void **pp, size_t new_size); │ │ │ │ │ +1369#define TDS_RESIZE(p, n_elem) \ │ │ │ │ │ +1370 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem)) │ │ │ │ │ +1371 │ │ │ │ │ +1372TDSPACKET *tds_alloc_packet(void *buf, unsigned len); │ │ │ │ │ +1373TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len); │ │ │ │ │ +1374void tds_free_packets(TDSPACKET *packet); │ │ │ │ │ +1375TDSBCPINFO *tds_alloc_bcpinfo(void); │ │ │ │ │ +1376void tds_free_bcpinfo(TDSBCPINFO *bcpinfo); │ │ │ │ │ +1377void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo); │ │ │ │ │ +1378void tds_deinit_tvp(TDS_TVP *table); │ │ │ │ │ +1379 │ │ │ │ │ +1380 │ │ │ │ │ +1381/* login.c */ │ │ │ │ │ +1382void tds_set_packet(TDSLOGIN * tds_login, int packet_size); │ │ │ │ │ +1383void tds_set_port(TDSLOGIN * tds_login, int port); │ │ │ │ │ +1384bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR; │ │ │ │ │ +1385void tds_set_bulk(TDSLOGIN * tds_login, bool enabled); │ │ │ │ │ +1386bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR; │ │ │ │ │ +1387bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR; │ │ │ │ │ +1388bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR; │ │ │ │ │ +1389bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR; │ │ │ │ │ +1390bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR; │ │ │ │ │ +1391bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_ │ │ │ │ │ +WUR; │ │ │ │ │ +1392bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR; │ │ │ │ │ +1393void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_ │ │ │ │ │ +TINYINT minor_ver); │ │ │ │ │ +1394TDSRET tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login); │ │ │ │ │ +1395 │ │ │ │ │ +1396 │ │ │ │ │ +1397/* query.c */ │ │ │ │ │ +1398void tds_start_query(TDSSOCKET *tds, unsigned char packet_type); │ │ │ │ │ +1399 │ │ │ │ │ +1400TDSRET tds_submit_query(TDSSOCKET * tds, const char *query); │ │ │ │ │ +1401TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, │ │ │ │ │ +TDSPARAMINFO * params, TDSHEADERS * head); │ │ │ │ │ +1402TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...); │ │ │ │ │ +1403TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char │ │ │ │ │ +*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params); │ │ │ │ │ +1404TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, │ │ │ │ │ +TDSPARAMINFO * params, TDSHEADERS * head); │ │ │ │ │ +1405TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char │ │ │ │ │ +*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params); │ │ │ │ │ +1406TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn); │ │ │ │ │ +1407TDSRET tds_send_cancel(TDSSOCKET * tds); │ │ │ │ │ +1408const char *tds_next_placeholder(const char *start); │ │ │ │ │ +1409int tds_count_placeholders(const char *query); │ │ │ │ │ +1410int tds_needs_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn); │ │ │ │ │ +1411TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn); │ │ │ │ │ +1412TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn); │ │ │ │ │ +1413TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * │ │ │ │ │ +params, TDSHEADERS * head); │ │ │ │ │ +1414TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_ │ │ │ │ │ +OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size); │ │ │ │ │ +1415TDSRET tds_submit_begin_tran(TDSSOCKET *tds); │ │ │ │ │ +1416TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont); │ │ │ │ │ +1417TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont); │ │ │ │ │ +1418TDSRET tds_disconnect(TDSSOCKET * tds); │ │ │ │ │ +1419size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int │ │ │ │ │ +idlen); │ │ │ │ │ +1420size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int │ │ │ │ │ +idlen); │ │ │ │ │ +1421size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int │ │ │ │ │ +len); │ │ │ │ │ +1422const char *tds_skip_comment(const char *s); │ │ │ │ │ +1423const char *tds_skip_quoted(const char *s); │ │ │ │ │ +1424size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol); │ │ │ │ │ +1425const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const │ │ │ │ │ +char *s, int len, size_t *out_len); │ │ │ │ │ +1426void tds_convert_string_free(const char *original, const char *converted); │ │ │ │ │ +1427#if !ENABLE_EXTRA_CHECKS │ │ │ │ │ +1428#define tds_convert_string_free(original, converted) \ │ │ │ │ │ +1429 do { if (original != converted) free((char*) converted); } while(0) │ │ │ │ │ +1430#endif │ │ │ │ │ +1431TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char │ │ │ │ │ +*out); │ │ │ │ │ +1432 │ │ │ │ │ +1433TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send); │ │ │ │ │ +1434TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, bool *send); │ │ │ │ │ +1435TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO │ │ │ │ │ +*params, bool *send); │ │ │ │ │ +1436TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_ │ │ │ │ │ +FETCH fetch_type, TDS_INT i_row); │ │ │ │ │ +1437TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_ │ │ │ │ │ +UINT * row_number, TDS_UINT * row_count); │ │ │ │ │ +1438TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ +1439TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ +1440TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR * │ │ │ │ │ +cursor); │ │ │ │ │ +1441TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_ │ │ │ │ │ +OPERATION op, TDS_INT i_row, TDSPARAMINFO * params); │ │ │ │ │ +1442TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor); │ │ │ │ │ +1443 │ │ │ │ │ +1444TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_ │ │ │ │ │ +MULTIPLE_TYPE type, TDSHEADERS * head); │ │ │ │ │ +1445TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple); │ │ │ │ │ +1446TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char │ │ │ │ │ +*query, TDSPARAMINFO * params); │ │ │ │ │ +1447TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, │ │ │ │ │ +TDSDYNAMIC * dyn); │ │ │ │ │ +1448 │ │ │ │ │ +1449 │ │ │ │ │ +1450/* token.c */ │ │ │ │ │ +1451TDSRET tds_process_cancel(TDSSOCKET * tds); │ │ │ │ │ +1452TDSRET tds_process_login_tokens(TDSSOCKET * tds); │ │ │ │ │ +1453TDSRET tds_process_simple_query(TDSSOCKET * tds); │ │ │ │ │ +1454int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_ │ │ │ │ │ +OPTION tds_option, TDS_OPTION_ARG * tds_argument, │ │ │ │ │ +1455 TDS_INT * tds_argsize); │ │ │ │ │ +1456TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, │ │ │ │ │ +/*@out@*/ int *done_flags, unsigned flag); │ │ │ │ │ +1457 │ │ │ │ │ +1458 │ │ │ │ │ +1459/* data.c */ │ │ │ │ │ +1460void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_ │ │ │ │ │ +SERVER_TYPE type); │ │ │ │ │ +1461void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_ │ │ │ │ │ +SERVER_TYPE type); │ │ │ │ │ +1462#ifdef WORDS_BIGENDIAN │ │ │ │ │ +1463void tds_swap_datatype(int coltype, void *b); │ │ │ │ │ +1464#endif │ │ │ │ │ +1465 │ │ │ │ │ +1466 │ │ │ │ │ +1467/* tds_convert.c */ │ │ │ │ │ +1468TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr); │ │ │ │ │ +1469TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int │ │ │ │ │ +colsize); │ │ │ │ │ +1470extern const char tds_hex_digits[]; │ │ │ │ │ +1471 │ │ │ │ │ +1472 │ │ │ │ │ +1473/* write.c */ │ │ │ │ │ +1474int tds_init_write_buf(TDSSOCKET * tds); │ │ │ │ │ +1475int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n); │ │ │ │ │ +1476int tds_put_string(TDSSOCKET * tds, const char *buf, int len); │ │ │ │ │ +1477int tds_put_int(TDSSOCKET * tds, TDS_INT i); │ │ │ │ │ +1478int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i); │ │ │ │ │ +1479int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si); │ │ │ │ │ +1481#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti) │ │ │ │ │ +1482int tds_put_byte(TDSSOCKET * tds, unsigned char c); │ │ │ │ │ +1483TDSRET tds_flush_packet(TDSSOCKET * tds); │ │ │ │ │ +1484int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int │ │ │ │ │ +ssize); │ │ │ │ │ +1485 │ │ │ │ │ +1486 │ │ │ │ │ +1487/* read.c */ │ │ │ │ │ +1488unsigned char tds_get_byte(TDSSOCKET * tds); │ │ │ │ │ +1489void tds_unget_byte(TDSSOCKET * tds); │ │ │ │ │ +1490unsigned char tds_peek(TDSSOCKET * tds); │ │ │ │ │ +1491TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds); │ │ │ │ │ +1492#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds)) │ │ │ │ │ +1493TDS_UINT tds_get_uint(TDSSOCKET * tds); │ │ │ │ │ +1494#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds)) │ │ │ │ │ +1495TDS_UINT8 tds_get_uint8(TDSSOCKET * tds); │ │ │ │ │ +1496#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds)) │ │ │ │ │ +1497size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_ │ │ │ │ │ +t dest_size); │ │ │ │ │ +1498TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, │ │ │ │ │ +TDSCOLUMN * curcol); │ │ │ │ │ +1499bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n); │ │ │ │ │ +1500int tds_get_size_by_type(TDS_SERVER_TYPE servertype); │ │ │ │ │ +1501DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len); │ │ │ │ │ +1502 │ │ │ │ │ +1503 │ │ │ │ │ +1504/* util.c */ │ │ │ │ │ +1505int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int │ │ │ │ │ +errnum); │ │ │ │ │ +1506TDS_STATE tds_set_state(TDSSOCKET * tds, TDS_STATE state); │ │ │ │ │ +1507void tds_swap_bytes(void *buf, int bytes); │ │ │ │ │ +1508unsigned int tds_gettime_ms(void); │ │ │ │ │ +1509 │ │ │ │ │ +1510 │ │ │ │ │ +1511/* log.c */ │ │ │ │ │ +1512typedef struct tdsdump_off_item { │ │ │ │ │ +1513 struct tdsdump_off_item *next; │ │ │ │ │ +1514 tds_thread_id thread_id; │ │ │ │ │ +1515} TDSDUMP_OFF_ITEM; │ │ │ │ │ +1516void tdsdump_off(TDSDUMP_OFF_ITEM *off_item); │ │ │ │ │ +1517void tdsdump_on(TDSDUMP_OFF_ITEM *off_item); │ │ │ │ │ +1518int tdsdump_isopen(void); │ │ │ │ │ +1519#include │ │ │ │ │ +1520int tdsdump_open(const tds_dir_char *filename); │ │ │ │ │ +1521#include │ │ │ │ │ +1522void tdsdump_close(void); │ │ │ │ │ +1523void tdsdump_dump_buf(const char* file, unsigned int level_line, const char │ │ │ │ │ +*msg, const void *buf, size_t length); │ │ │ │ │ +1524void tdsdump_col(const TDSCOLUMN *col); │ │ │ │ │ +1525#undef tdsdump_log │ │ │ │ │ +1526void tdsdump_log(const char* file, unsigned int level_line, const char │ │ │ │ │ +*fmt, ...) │ │ │ │ │ +1527#if defined(__GNUC__) && __GNUC__ >= 2 │ │ │ │ │ +1528#if defined(__MINGW32__) │ │ │ │ │ +1529 __attribute__ ((__format__ (ms_printf, 3, 4))) │ │ │ │ │ +1530#else │ │ │ │ │ +1531 __attribute__ ((__format__ (__printf__, 3, 4))) │ │ │ │ │ +1532#endif │ │ │ │ │ +1533#endif │ │ │ │ │ +1534; │ │ │ │ │ +1535#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log │ │ │ │ │ +1536#define tdsdump_log TDSDUMP_LOG_FAST │ │ │ │ │ +1537#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf │ │ │ │ │ +1538#define tdsdump_dump_buf TDSDUMP_BUF_FAST │ │ │ │ │ +1539 │ │ │ │ │ +1540extern bool tds_write_dump; │ │ │ │ │ +1541extern int tds_debug_flags; │ │ │ │ │ +1542extern int tds_append_mode; │ │ │ │ │ +1543 │ │ │ │ │ +1544 │ │ │ │ │ +1545/* net.c */ │ │ │ │ │ +1546TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned │ │ │ │ │ +int port, int timeout, int *p_oserr); │ │ │ │ │ +1547void tds_close_socket(TDSSOCKET * tds); │ │ │ │ │ +1548int tds7_get_instance_ports(FILE *output, struct addrinfo *addr); │ │ │ │ │ +1549int tds7_get_instance_port(struct addrinfo *addr, const char *instance); │ │ │ │ │ +1550char *tds_prwsaerror(int erc); │ │ │ │ │ +1551void tds_prwsaerror_free(char *s); │ │ │ │ │ +1552int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen); │ │ │ │ │ +1553int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int │ │ │ │ │ +buflen, int final); │ │ │ │ │ +1554void tds_connection_coalesce(TDSSOCKET *tds); │ │ │ │ │ +1555void tds_connection_flush(TDSSOCKET *tds); │ │ │ │ │ +1556#define TDSSELREAD POLLIN │ │ │ │ │ +1557#define TDSSELWRITE POLLOUT │ │ │ │ │ +1558int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds); │ │ │ │ │ +1559void tds_connection_close(TDSCONNECTION *conn); │ │ │ │ │ +1560int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen); │ │ │ │ │ +1561int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_ │ │ │ │ │ +t buflen); │ │ │ │ │ +1562int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock); │ │ │ │ │ +1563int tds_wakeup_init(TDSPOLLWAKEUP *wakeup); │ │ │ │ │ +1564void tds_wakeup_close(TDSPOLLWAKEUP *wakeup); │ │ │ │ │ +1565void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel); │ │ │ │ │ +1566inline static TDS_SYS_SOCKET │ │ │ │ │ +1567tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup) │ │ │ │ │ +1568{ │ │ │ │ │ +1569 return wakeup->s_signaled; │ │ │ │ │ +1570} │ │ │ │ │ +1571 │ │ │ │ │ +1572 │ │ │ │ │ +1573/* packet.c */ │ │ │ │ │ +1574int tds_read_packet(TDSSOCKET * tds); │ │ │ │ │ +1575TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final); │ │ │ │ │ +1576#if ENABLE_ODBC_MARS │ │ │ │ │ +1577int tds_append_cancel(TDSSOCKET *tds); │ │ │ │ │ +1578TDSRET tds_append_syn(TDSSOCKET *tds); │ │ │ │ │ +1579TDSRET tds_append_fin(TDSSOCKET *tds); │ │ │ │ │ +1580#else │ │ │ │ │ +1581int tds_put_cancel(TDSSOCKET * tds); │ │ │ │ │ +1582#endif │ │ │ │ │ +1583 │ │ │ │ │ +1584typedef struct tds_freeze { │ │ │ │ │ +1586 TDSSOCKET *tds; │ │ │ │ │ +1588 TDSPACKET *pkt; │ │ │ │ │ +1590 unsigned pkt_pos; │ │ │ │ │ +1592 unsigned size_len; │ │ │ │ │ +1593} TDSFREEZE; │ │ │ │ │ +1594 │ │ │ │ │ +1595void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len); │ │ │ │ │ +1596size_t tds_freeze_written(TDSFREEZE *freeze); │ │ │ │ │ +1597TDSRET tds_freeze_abort(TDSFREEZE *freeze); │ │ │ │ │ +1598TDSRET tds_freeze_close(TDSFREEZE *freeze); │ │ │ │ │ +1599TDSRET tds_freeze_close_string(TDSFREEZE *freeze); │ │ │ │ │ +1600TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size); │ │ │ │ │ +1601 │ │ │ │ │ +1602inline static void │ │ │ │ │ +1603tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt) │ │ │ │ │ +1604{ │ │ │ │ │ +1605 tds->send_packet = pkt; │ │ │ │ │ +1606 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt); │ │ │ │ │ +1607} │ │ │ │ │ +1608 │ │ │ │ │ +1609/* Macros to allow some indentation of the packets. │ │ │ │ │ +1610 * │ │ │ │ │ +1611 * The 3 nested fake loops require some explanation: │ │ │ │ │ +1612 * - first is to allows to declare variables; │ │ │ │ │ +1613 * - second is to force using brackets; │ │ │ │ │ +1614 * - third is to avoids that a break inside will skip the close. │ │ │ │ │ +1615 */ │ │ │ │ │ +1616#define TDS_START_LEN_GENERIC(tds_socket, len) do { \ │ │ │ │ │ +1617 TDSFREEZE current_freeze[1]; \ │ │ │ │ │ +1618 tds_freeze((tds_socket), current_freeze, (len)); do { do │ │ │ │ │ +1619#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); │ │ │ │ │ +} while(0); │ │ │ │ │ +1620#define TDS_END_LEN_STRING while(0); } while(tds_freeze_close_string │ │ │ │ │ +(current_freeze), 0); } while(0); │ │ │ │ │ +1621 │ │ │ │ │ +1622#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, │ │ │ │ │ +1) │ │ │ │ │ +1623#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_ │ │ │ │ │ +socket, 2) │ │ │ │ │ +1624#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4) │ │ │ │ │ +1625 │ │ │ │ │ +1626/* vstrbuild.c */ │ │ │ │ │ +1627TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char │ │ │ │ │ +*text, int textlen, const char *formats, int formatlen, │ │ │ │ │ +1628 va_list ap); │ │ │ │ │ +1629 │ │ │ │ │ +1630 │ │ │ │ │ +1631/* numeric.c */ │ │ │ │ │ +1632char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_ │ │ │ │ │ +digits); │ │ │ │ │ +1633TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s); │ │ │ │ │ +1634TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char │ │ │ │ │ +new_prec, unsigned char new_scale); │ │ │ │ │ +1635 │ │ │ │ │ +1636 │ │ │ │ │ +1637/* getmac.c */ │ │ │ │ │ +1638void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]); │ │ │ │ │ +1639 │ │ │ │ │ +1640 │ │ │ │ │ +1641/* challenge.c */ │ │ │ │ │ +1642#ifndef HAVE_SSPI │ │ │ │ │ +1643TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET * tds); │ │ │ │ │ +1644TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds); │ │ │ │ │ +1645#else │ │ │ │ │ +1646TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds); │ │ │ │ │ +1647#endif │ │ │ │ │ +1648TDSRET tds5_gss_send(TDSSOCKET *tds); │ │ │ │ │ +1649 │ │ │ │ │ +1650 │ │ │ │ │ +1651/* random.c */ │ │ │ │ │ +1652void tds_random_buffer(unsigned char *out, int len); │ │ │ │ │ +1653 │ │ │ │ │ +1654 │ │ │ │ │ +1655/* sec_negotiate.c */ │ │ │ │ │ +1656TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds); │ │ │ │ │ +1657inline static void │ │ │ │ │ +1658tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_ │ │ │ │ │ +type) │ │ │ │ │ +1659{ │ │ │ │ │ +1660 if (tds_auth) │ │ │ │ │ +1661 tds_auth->msg_type = msg_type; │ │ │ │ │ +1662} │ │ │ │ │ +1663 │ │ │ │ │ +1664 │ │ │ │ │ +1665/* bulk.c */ │ │ │ │ │ +1666 │ │ │ │ │ +1668enum tds_bcp_directions │ │ │ │ │ +1669{ │ │ │ │ │ +1670 TDS_BCP_IN = 1, │ │ │ │ │ +1671 TDS_BCP_OUT = 2, │ │ │ │ │ +1672 TDS_BCP_QUERYOUT = 3 │ │ │ │ │ +1673}; │ │ │ │ │ +1674 │ │ │ │ │ +1675typedef struct tds5_colinfo │ │ │ │ │ +1676{ │ │ │ │ │ +1677 TDS_TINYINT type; │ │ │ │ │ +1678 TDS_TINYINT status; │ │ │ │ │ +1679 TDS_SMALLINT offset; │ │ │ │ │ +1680 TDS_INT length; │ │ │ │ │ +1681} TDS5COLINFO; │ │ │ │ │ +1682 │ │ │ │ │ +1683struct tds_bcpinfo │ │ │ │ │ +1684{ │ │ │ │ │ +1685 void *parent; │ │ │ │ │ +1686 DSTR hint; │ │ │ │ │ +1687 DSTR tablename; │ │ │ │ │ +1688 TDS_CHAR *insert_stmt; │ │ │ │ │ +1689 TDS_INT direction; │ │ │ │ │ +1690 bool identity_insert_on; │ │ │ │ │ +1691 bool xfer_init; │ │ │ │ │ +1692 TDS_INT bind_count; │ │ │ │ │ +1693 TDSRESULTINFO *bindinfo; │ │ │ │ │ +1694 TDS5COLINFO *sybase_colinfo; │ │ │ │ │ +1695 TDS_INT sybase_count; │ │ │ │ │ +1696}; │ │ │ │ │ +1697 │ │ │ │ │ +1698TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ +1699typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN │ │ │ │ │ +*bcpcol, int offset); │ │ │ │ │ +1700typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int │ │ │ │ │ +offset); │ │ │ │ │ +1701TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_ │ │ │ │ │ +get_col_data get_col_data, tds_bcp_null_error null_error, int offset); │ │ │ │ │ +1702TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied); │ │ │ │ │ +1703TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ +1704TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo); │ │ │ │ │ +1705 │ │ │ │ │ +1706TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream, │ │ │ │ │ +1707 const char *terminator, size_t term_len, char **outbuf, size_t * │ │ │ │ │ +outbytes); │ │ │ │ │ +1708 │ │ │ │ │ +1709TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char │ │ │ │ │ +*textptr, const char *timestamp, int with_log, TDS_UINT size); │ │ │ │ │ +1710TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_ │ │ │ │ │ +UINT size); │ │ │ │ │ +1711TDSRET tds_writetext_end(TDSSOCKET *tds); │ │ │ │ │ +1712 │ │ │ │ │ +1713 │ │ │ │ │ +1714inline static bool │ │ │ │ │ +1715tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num) │ │ │ │ │ +1716{ │ │ │ │ │ +1717 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & │ │ │ │ │ +1; │ │ │ │ │ +1718} │ │ │ │ │ +1719#define tds_capability_has_req(conn, cap) \ │ │ │ │ │ +1720 tds_capability_enabled(&conn->capabilities.types[0], cap) │ │ │ │ │ +1721#define tds_capability_has_res(conn, cap) \ │ │ │ │ │ +1722 tds_capability_enabled(&conn->capabilities.types[1], cap) │ │ │ │ │ +1723 │ │ │ │ │ +1724#define IS_TDS42(x) (x->tds_version==0x402) │ │ │ │ │ +1725#define IS_TDS46(x) (x->tds_version==0x406) │ │ │ │ │ +1726#define IS_TDS50(x) (x->tds_version==0x500) │ │ │ │ │ +1727#define IS_TDS70(x) (x->tds_version==0x700) │ │ │ │ │ +1728#define IS_TDS71(x) (x->tds_version==0x701) │ │ │ │ │ +1729#define IS_TDS72(x) (x->tds_version==0x702) │ │ │ │ │ +1730#define IS_TDS73(x) (x->tds_version==0x703) │ │ │ │ │ +1731 │ │ │ │ │ +1732#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500) │ │ │ │ │ +1733#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700) │ │ │ │ │ +1734#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701) │ │ │ │ │ +1735#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702) │ │ │ │ │ +1736#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703) │ │ │ │ │ +1737#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704) │ │ │ │ │ +1738#define IS_TDS80_PLUS(x) ((x)->tds_version>=0x800) │ │ │ │ │ +1739 │ │ │ │ │ +1740#define TDS_MAJOR(x) ((x)->tds_version >> 8) │ │ │ │ │ +1741#define TDS_MINOR(x) ((x)->tds_version & 0xff) │ │ │ │ │ +1742 │ │ │ │ │ +1743#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD) │ │ │ │ │ +1744 │ │ │ │ │ +1746#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u)) │ │ │ │ │ +1748#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0) │ │ │ │ │ +1749 │ │ │ │ │ +1753#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x)) │ │ │ │ │ +1754 │ │ │ │ │ +1755/* TODO test if not similar to ms one*/ │ │ │ │ │ +1757#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8) │ │ │ │ │ +1758 │ │ │ │ │ +1759#ifdef __cplusplus │ │ │ │ │ +1760#if 0 │ │ │ │ │ +1761{ │ │ │ │ │ +1762#endif │ │ │ │ │ +1763} │ │ │ │ │ +1764#endif │ │ │ │ │ +1765 │ │ │ │ │ +1766#include │ │ │ │ │ +1767 │ │ │ │ │ +1768#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v))) │ │ │ │ │ +1769#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT) │ │ │ │ │ +(v))) │ │ │ │ │ +1770#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v))) │ │ │ │ │ +1771 │ │ │ │ │ +1772#endif /* _tdsguard_hfOrWb5znoUCWdBPoNQvqN_ */ │ │ │ │ │ +tds_iconv_alloc │ │ │ │ │ +int tds_iconv_alloc(TDSCONNECTION *conn) │ │ │ │ │ +Allocate iconv stuff. │ │ │ │ │ +Definition iconv.c:311 │ │ │ │ │ +tds_write_dump │ │ │ │ │ +bool tds_write_dump │ │ │ │ │ +Tell if TDS debug logging is turned on or off. │ │ │ │ │ +Definition log.c:58 │ │ │ │ │ +tds_get_conversion_type │ │ │ │ │ +TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize) │ │ │ │ │ +Return type suitable for conversions (convert all nullable types to fixed type) │ │ │ │ │ +Definition tds_types.h:125 │ │ │ │ │ +tds_set_state │ │ │ │ │ +TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state) │ │ │ │ │ +Set state of TDS connection, with logging and checking. │ │ │ │ │ +Definition util.c:58 │ │ │ │ │ +TDS_COMPILETIME_SETTINGS │ │ │ │ │ +struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS │ │ │ │ │ +A structure to hold all the compile-time settings. │ │ │ │ │ +TDSRESULTINFO │ │ │ │ │ +struct tds_result_info TDSRESULTINFO │ │ │ │ │ +Hold information for any results. │ │ │ │ │ +TDSVARIANT │ │ │ │ │ +struct tds_variant TDSVARIANT │ │ │ │ │ +Store variant information. │ │ │ │ │ +tdsdump_close │ │ │ │ │ +void tdsdump_close(void) │ │ │ │ │ +Close the TDS dump log file. │ │ │ │ │ +Definition log.c:212 │ │ │ │ │ +tds_set_column_type │ │ │ │ │ +void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_ │ │ │ │ │ +TYPE type) │ │ │ │ │ +Set type of column initializing all dependency. │ │ │ │ │ +Definition data.c:224 │ │ │ │ │ +tds_set_server │ │ │ │ │ +bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR │ │ │ │ │ +Set the servername in a TDSLOGIN structure. │ │ │ │ │ +Definition login.c:129 │ │ │ │ │ +TDSDATEREC │ │ │ │ │ +struct tdsdaterec TDSDATEREC │ │ │ │ │ +Used by tds_datecrack. │ │ │ │ │ +tds_get_locale │ │ │ │ │ +TDSLOCALE * tds_get_locale(void) │ │ │ │ │ +Get locale information. │ │ │ │ │ +Definition locale.c:50 │ │ │ │ │ +TDSENV │ │ │ │ │ +struct tds_env TDSENV │ │ │ │ │ +Current environment as reported by the server. │ │ │ │ │ +TDSBLOB │ │ │ │ │ +struct tds_blob TDSBLOB │ │ │ │ │ +Information about blobs (e.g. │ │ │ │ │ +tds_get_size_by_type │ │ │ │ │ +int tds_get_size_by_type(TDS_SERVER_TYPE servertype) │ │ │ │ │ +Return the number of bytes needed by specified type. │ │ │ │ │ +Definition tds_types.h:9 │ │ │ │ │ +tds_numeric_bytes_per_prec │ │ │ │ │ +const int tds_numeric_bytes_per_prec[] │ │ │ │ │ +The following little table is indexed by precision and will tell us the number │ │ │ │ │ +of bytes required to s... │ │ │ │ │ +Definition numeric.c:42 │ │ │ │ │ +tds_bcp_start_copy_in │ │ │ │ │ +TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ +Start bulk copy to server. │ │ │ │ │ +Definition bulk.c:1086 │ │ │ │ │ +tds_numeric_to_string │ │ │ │ │ +TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s) │ │ │ │ │ +Definition numeric.c:96 │ │ │ │ │ +tds_get_varint_size │ │ │ │ │ +int tds_get_varint_size(TDSCONNECTION *conn, int datatype) │ │ │ │ │ +tds_get_varint_size() returns the size of a variable length integer returned in │ │ │ │ │ +a result string │ │ │ │ │ +Definition tds_types.h:57 │ │ │ │ │ +tds_writetext_start │ │ │ │ │ +TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char │ │ │ │ │ +*textptr, const char *timestamp, int with_log, TDS_UINT size) │ │ │ │ │ +Start writing writetext request. │ │ │ │ │ +Definition bulk.c:1313 │ │ │ │ │ +tds_bcp_fread │ │ │ │ │ +TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char │ │ │ │ │ +*terminator, size_t term_len, char **outbuf, size_t *outbytes) │ │ │ │ │ +Read a data file, passing the data through iconv(). │ │ │ │ │ +Definition bulk.c:1244 │ │ │ │ │ +tds_bcp_start │ │ │ │ │ +TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ +Start sending BCP data to server. │ │ │ │ │ +Definition bulk.c:884 │ │ │ │ │ +TDSDYNAMIC │ │ │ │ │ +struct tds_dynamic TDSDYNAMIC │ │ │ │ │ +Holds information for a dynamic (also called prepared) query. │ │ │ │ │ +tds_set_param_type │ │ │ │ │ +void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE │ │ │ │ │ +type) │ │ │ │ │ +Set type of column initializing all dependency. │ │ │ │ │ +Definition data.c:246 │ │ │ │ │ +tds_states │ │ │ │ │ +tds_states │ │ │ │ │ +values for tds->state │ │ │ │ │ +Definition tds.h:774 │ │ │ │ │ +TDS_PENDING │ │ │ │ │ +@ TDS_PENDING │ │ │ │ │ +cilent is waiting for data │ │ │ │ │ +Definition tds.h:778 │ │ │ │ │ +TDS_SENDING │ │ │ │ │ +@ TDS_SENDING │ │ │ │ │ +client would send data │ │ │ │ │ +Definition tds.h:777 │ │ │ │ │ +TDS_READING │ │ │ │ │ +@ TDS_READING │ │ │ │ │ +client is reading data │ │ │ │ │ +Definition tds.h:779 │ │ │ │ │ +TDS_WRITING │ │ │ │ │ +@ TDS_WRITING │ │ │ │ │ +client is writing data │ │ │ │ │ +Definition tds.h:776 │ │ │ │ │ +TDS_IDLE │ │ │ │ │ +@ TDS_IDLE │ │ │ │ │ +no data expected │ │ │ │ │ +Definition tds.h:775 │ │ │ │ │ +TDS_DEAD │ │ │ │ │ +@ TDS_DEAD │ │ │ │ │ +no connection │ │ │ │ │ +Definition tds.h:780 │ │ │ │ │ +tdsdump_col │ │ │ │ │ +void tdsdump_col(const TDSCOLUMN *col) │ │ │ │ │ +Write a column value to the debug log. │ │ │ │ │ +Definition log.c:455 │ │ │ │ │ +tds_writetext_continue │ │ │ │ │ +TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT │ │ │ │ │ +size) │ │ │ │ │ +Send some data in the writetext request started by tds_writetext_start. │ │ │ │ │ +Definition bulk.c:1348 │ │ │ │ │ +tdserror │ │ │ │ │ +int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum) │ │ │ │ │ +Call the client library's error handler (for library-generated errors only) │ │ │ │ │ +Definition util.c:321 │ │ │ │ │ +TDS_STATE │ │ │ │ │ +enum tds_states TDS_STATE │ │ │ │ │ +values for tds->state │ │ │ │ │ +tds_writetext_end │ │ │ │ │ +TDSRET tds_writetext_end(TDSSOCKET *tds) │ │ │ │ │ +Finish sending writetext data. │ │ │ │ │ +Definition bulk.c:1365 │ │ │ │ │ +tds_bcp_init │ │ │ │ │ +TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo) │ │ │ │ │ +Initialize BCP information. │ │ │ │ │ +Definition bulk.c:86 │ │ │ │ │ +tds_bcp_directions │ │ │ │ │ +tds_bcp_directions │ │ │ │ │ +bcp direction │ │ │ │ │ +Definition tds.h:1669 │ │ │ │ │ +tds_bcp_send_record │ │ │ │ │ +TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_ │ │ │ │ │ +col_data get_col_data, tds_bcp_null_error null_error, int offset) │ │ │ │ │ +Send one row of data to server. │ │ │ │ │ +Definition bulk.c:481 │ │ │ │ │ +tdsdump_open │ │ │ │ │ +int tdsdump_open(const tds_dir_char *filename) │ │ │ │ │ +Create and truncate a human readable dump file for the TDS traffic. │ │ │ │ │ +Definition log.c:131 │ │ │ │ │ +tds_bcp_done │ │ │ │ │ +TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied) │ │ │ │ │ +Tell we finished sending BCP data to server. │ │ │ │ │ +Definition bulk.c:858 │ │ │ │ │ +TDS_ENCODING │ │ │ │ │ +struct tds_encoding TDS_ENCODING │ │ │ │ │ +Information relevant to libiconv. │ │ │ │ │ +tdsdump_off │ │ │ │ │ +void tdsdump_off(TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ +Temporarily turn off logging for current thread. │ │ │ │ │ +Definition log.c:81 │ │ │ │ │ +tdsdump_on │ │ │ │ │ +void tdsdump_on(TDSDUMP_OFF_ITEM *off_item) │ │ │ │ │ +Turn logging back on for current thread. │ │ │ │ │ +Definition log.c:101 │ │ │ │ │ +TDSCURSOR │ │ │ │ │ +struct tds_cursor TDSCURSOR │ │ │ │ │ +Holds information about a cursor. │ │ │ │ │ +tds_ntlm_get_auth │ │ │ │ │ +TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds) │ │ │ │ │ +Build a NTLMSPP packet to send to server. │ │ │ │ │ +Definition challenge.c:721 │ │ │ │ │ +tds_config_verstr │ │ │ │ │ +TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login) │ │ │ │ │ +Set TDS version from given string. │ │ │ │ │ +Definition config.c:950 │ │ │ │ │ +tds_get_compiletime_settings │ │ │ │ │ +const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void) │ │ │ │ │ +Return a structure capturing the compile-time settings provided to the │ │ │ │ │ +configure script. │ │ │ │ │ +Definition config.c:1377 │ │ │ │ │ +tds_lookup_host │ │ │ │ │ +struct addrinfo * tds_lookup_host(const char *servername) │ │ │ │ │ +Get the IP address for a hostname. │ │ │ │ │ +Definition config.c:1015 │ │ │ │ │ +tds_read_conf_section │ │ │ │ │ +bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_ │ │ │ │ │ +conf_parse, void *parse_param) │ │ │ │ │ +Read a section of configuration file (INI style file) │ │ │ │ │ +Definition config.c:508 │ │ │ │ │ +tds_read_conf_file │ │ │ │ │ +bool tds_read_conf_file(TDSLOGIN *login, const char *server) │ │ │ │ │ +Read configuration info for given server return 0 on error. │ │ │ │ │ +Definition config.c:322 │ │ │ │ │ +tds_set_interfaces_file_loc │ │ │ │ │ +TDSRET tds_set_interfaces_file_loc(const char *interfloc) │ │ │ │ │ +Set the full name of interface file. │ │ │ │ │ +Definition config.c:989 │ │ │ │ │ +tds8_adjust_login │ │ │ │ │ +TDSRET tds8_adjust_login(TDSLOGIN *login) │ │ │ │ │ +Make sure proper setting are in place for TDS 8.0. │ │ │ │ │ +Definition config.c:1462 │ │ │ │ │ +tds_read_config_info │ │ │ │ │ +TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE │ │ │ │ │ +*locale) │ │ │ │ │ +tds_read_config_info() will fill the tds connection structure based on │ │ │ │ │ +configuration information gath... │ │ │ │ │ +Definition config.c:138 │ │ │ │ │ +tds_fix_login │ │ │ │ │ +void tds_fix_login(TDSLOGIN *login) │ │ │ │ │ +Fix configuration after reading it. │ │ │ │ │ +Definition config.c:280 │ │ │ │ │ +tds_datecrack │ │ │ │ │ +TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr) │ │ │ │ │ +Convert from db date format to a structured date format. │ │ │ │ │ +Definition convert.c:3258 │ │ │ │ │ +tds_iconv_from_collate │ │ │ │ │ +TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]) │ │ │ │ │ +Get iconv information from a LCID (to support different column encoding under │ │ │ │ │ +MSSQL2K) │ │ │ │ │ +Definition iconv.c:1249 │ │ │ │ │ +tds_alloc_row │ │ │ │ │ +TDSRET tds_alloc_row(TDSRESULTINFO *res_info) │ │ │ │ │ +Allocate space for row store return NULL on out of memory. │ │ │ │ │ +Definition mem.c:533 │ │ │ │ │ +tds_detach_results │ │ │ │ │ +void tds_detach_results(TDSRESULTINFO *info) │ │ │ │ │ +Detach result info from it current socket. │ │ │ │ │ +Definition mem.c:497 │ │ │ │ │ +tds_alloc_param_result │ │ │ │ │ +TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param) │ │ │ │ │ +Adds a output parameter to TDSPARAMINFO. │ │ │ │ │ +Definition mem.c:284 │ │ │ │ │ +tds_alloc_param_data │ │ │ │ │ +void * tds_alloc_param_data(TDSCOLUMN *curparam) │ │ │ │ │ +Allocate data for a parameter. │ │ │ │ │ +Definition mem.c:373 │ │ │ │ │ +tds_init_login │ │ │ │ │ +TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale) │ │ │ │ │ +Initialize login structure with locale information and other stuff for │ │ │ │ │ +connection. │ │ │ │ │ +Definition mem.c:808 │ │ │ │ │ +tds_free_param_result │ │ │ │ │ +void tds_free_param_result(TDSPARAMINFO *param_info) │ │ │ │ │ +Delete latest parameter. │ │ │ │ │ +Definition mem.c:320 │ │ │ │ │ +tds_alloc_dynamic │ │ │ │ │ +TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id) │ │ │ │ │ +Allocate a dynamic statement. │ │ │ │ │ +Definition mem.c:160 │ │ │ │ │ +tds_realloc │ │ │ │ │ +void * tds_realloc(void **pp, size_t new_size) │ │ │ │ │ +Reallocate a pointer and update it if success. │ │ │ │ │ +Definition mem.c:1896 │ │ │ │ │ +tds_free_input_params │ │ │ │ │ +void tds_free_input_params(TDSDYNAMIC *dyn) │ │ │ │ │ +Frees all allocated input parameters of a dynamic statement. │ │ │ │ │ +Definition mem.c:206 │ │ │ │ │ +tds_release_dynamic │ │ │ │ │ +void tds_release_dynamic(TDSDYNAMIC **dyn) │ │ │ │ │ +Frees dynamic statement. │ │ │ │ │ +Definition mem.c:253 │ │ │ │ │ +tds_needs_unprepare │ │ │ │ │ +int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ │ +Check if dynamic request must be unprepared. │ │ │ │ │ +Definition query.c:1800 │ │ │ │ │ +tds_skip_quoted │ │ │ │ │ +const char * tds_skip_quoted(const char *s) │ │ │ │ │ +Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd]) │ │ │ │ │ +Definition query.c:517 │ │ │ │ │ +tds71_submit_prepexec │ │ │ │ │ +TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, │ │ │ │ │ +TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ +Creates a temporary stored procedure in the server and execute it. │ │ │ │ │ +Definition query.c:1453 │ │ │ │ │ +tds_start_query │ │ │ │ │ +void tds_start_query(TDSSOCKET *tds, unsigned char packet_type) │ │ │ │ │ +Start query packet of a given type. │ │ │ │ │ +Definition query.c:334 │ │ │ │ │ +tds_send_cancel │ │ │ │ │ +TDSRET tds_send_cancel(TDSSOCKET *tds) │ │ │ │ │ +tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel │ │ │ │ │ +should be called dire... │ │ │ │ │ +Definition query.c:2069 │ │ │ │ │ +tds_submit_execute │ │ │ │ │ +TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ +Sends a previously prepared dynamic statement to the server. │ │ │ │ │ +Definition query.c:1678 │ │ │ │ │ +tds_quote_string │ │ │ │ │ +size_t tds_quote_string(TDSSOCKET *tds TDS_UNUSED, char *buffer, const char │ │ │ │ │ +*str, int len) │ │ │ │ │ +Quote a string. │ │ │ │ │ +Definition query.c:2281 │ │ │ │ │ +tds_get_column_declaration │ │ │ │ │ +TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out) │ │ │ │ │ +Return declaration for column (like "varchar(20)"). │ │ │ │ │ +Definition query.c:740 │ │ │ │ │ +tds_deferred_cursor_dealloc │ │ │ │ │ +TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │ │ +Deallocate cursor on idle. │ │ │ │ │ +Definition query.c:3097 │ │ │ │ │ +tds_submit_query │ │ │ │ │ +TDSRET tds_submit_query(TDSSOCKET *tds, const char *query) │ │ │ │ │ +Sends a language string to the database server for processing. │ │ │ │ │ +Definition query.c:212 │ │ │ │ │ +tds_submit_rpc │ │ │ │ │ +TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO │ │ │ │ │ +*params, TDSHEADERS *head) │ │ │ │ │ +Calls a RPC from server. │ │ │ │ │ +Definition query.c:1977 │ │ │ │ │ +tds_quote_id_rpc │ │ │ │ │ +size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int │ │ │ │ │ +idlen) │ │ │ │ │ +Quote an id for a RPC call. │ │ │ │ │ +Definition query.c:2256 │ │ │ │ │ +tds_submit_prepare │ │ │ │ │ +TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id, │ │ │ │ │ +TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ │ +Creates a temporary stored procedure in the server. │ │ │ │ │ +Definition query.c:1176 │ │ │ │ │ +tds_fix_column_size │ │ │ │ │ +size_t tds_fix_column_size(TDSSOCKET *tds TDS_UNUSED, TDSCOLUMN *curcol) │ │ │ │ │ +Get column size for wire. │ │ │ │ │ +Definition query.c:1543 │ │ │ │ │ +tds_submit_begin_tran │ │ │ │ │ +TDSRET tds_submit_begin_tran(TDSSOCKET *tds) │ │ │ │ │ +Send a rollback request. │ │ │ │ │ +Definition query.c:3705 │ │ │ │ │ +tds_submit_commit │ │ │ │ │ +TDSRET tds_submit_commit(TDSSOCKET *tds, bool cont) │ │ │ │ │ +Send a commit request. │ │ │ │ │ +Definition query.c:3764 │ │ │ │ │ +tds_submit_rollback │ │ │ │ │ +TDSRET tds_submit_rollback(TDSSOCKET *tds, bool cont) │ │ │ │ │ +Send a rollback request. │ │ │ │ │ +Definition query.c:3733 │ │ │ │ │ +tds_quote_id │ │ │ │ │ +size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen) │ │ │ │ │ +Quote an id. │ │ │ │ │ +Definition query.c:2211 │ │ │ │ │ +tds_next_placeholder │ │ │ │ │ +const char * tds_next_placeholder(const char *start) │ │ │ │ │ +Get position of next placeholder. │ │ │ │ │ +Definition query.c:537 │ │ │ │ │ +tds_submit_query_params │ │ │ │ │ +TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO │ │ │ │ │ +*params, TDSHEADERS *head) │ │ │ │ │ +Sends a language string to the database server for processing. │ │ │ │ │ +Definition query.c:352 │ │ │ │ │ +tds_deferred_unprepare │ │ │ │ │ +TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ │ +Unprepare dynamic on idle. │ │ │ │ │ +Definition query.c:1822 │ │ │ │ │ +tds_count_placeholders │ │ │ │ │ +int tds_count_placeholders(const char *query) │ │ │ │ │ +Count the number of placeholders ('?') in a query. │ │ │ │ │ +Definition query.c:573 │ │ │ │ │ +tds_cursor_dealloc │ │ │ │ │ +TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ │ +Send a deallocation request to server. │ │ │ │ │ +Definition query.c:3046 │ │ │ │ │ +tds_skip_comment │ │ │ │ │ +const char * tds_skip_comment(const char *s) │ │ │ │ │ +Skip a comment in a query. │ │ │ │ │ +Definition query.c:492 │ │ │ │ │ +tds_convert_string │ │ │ │ │ +const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char │ │ │ │ │ +*s, int len, size_t *out_len) │ │ │ │ │ +Convert a string in an allocated buffer. │ │ │ │ │ +Definition query.c:126 │ │ │ │ │ +tds_submit_queryf │ │ │ │ │ +TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...) │ │ │ │ │ +Format and submit a query. │ │ │ │ │ +Definition query.c:469 │ │ │ │ │ +tds_submit_execdirect │ │ │ │ │ +TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO │ │ │ │ │ +*params, TDSHEADERS *head) │ │ │ │ │ +Submit a prepared query with parameters. │ │ │ │ │ +Definition query.c:1308 │ │ │ │ │ +tds_set_cur_dyn │ │ │ │ │ +void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ +Set current dynamic. │ │ │ │ │ +Definition query.c:194 │ │ │ │ │ +tds_submit_optioncmd │ │ │ │ │ +TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION │ │ │ │ │ +option, TDS_OPTION_ARG *param, TDS_INT param_size) │ │ │ │ │ +Send option commands to server. │ │ │ │ │ +Definition query.c:3429 │ │ │ │ │ +tds_submit_unprepare │ │ │ │ │ +TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ │ +Send a unprepare request for a prepared query. │ │ │ │ │ +Definition query.c:1845 │ │ │ │ │ +tds_dstr_get │ │ │ │ │ +DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len) │ │ │ │ │ +Reads a string from wire and put in a DSTR. │ │ │ │ │ +Definition read.c:294 │ │ │ │ │ +tds_freeze_close_string │ │ │ │ │ +TDSRET tds_freeze_close_string(TDSFREEZE *freeze) │ │ │ │ │ +Stop keeping data for this specific freeze. │ │ │ │ │ +Definition packet.c:1008 │ │ │ │ │ +tds_get_byte │ │ │ │ │ +unsigned char tds_get_byte(TDSSOCKET *tds) │ │ │ │ │ +Return a single byte from the input buffer. │ │ │ │ │ +Definition read.c:72 │ │ │ │ │ +tds_put_string │ │ │ │ │ +int tds_put_string(TDSSOCKET *tds, const char *buf, int len) │ │ │ │ │ +Output a string to wire automatic translate string to unicode if needed. │ │ │ │ │ +Definition write.c:97 │ │ │ │ │ +tds_peek │ │ │ │ │ +unsigned char tds_peek(TDSSOCKET *tds) │ │ │ │ │ +Reads a byte from the TDS stream without removing it. │ │ │ │ │ +Definition read.c:100 │ │ │ │ │ +tds_freeze_close_len │ │ │ │ │ +TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size) │ │ │ │ │ +Stop keeping data for this specific freeze. │ │ │ │ │ +Definition packet.c:1046 │ │ │ │ │ +tds_goodwrite │ │ │ │ │ +int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen) │ │ │ │ │ +Definition net.c:977 │ │ │ │ │ +tds_socket_set_nonblocking │ │ │ │ │ +int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock) │ │ │ │ │ +Set socket to non-blocking. │ │ │ │ │ +Definition net.c:145 │ │ │ │ │ +tds_close_socket │ │ │ │ │ +void tds_close_socket(TDSSOCKET *tds) │ │ │ │ │ +Close current socket. │ │ │ │ │ +Definition net.c:527 │ │ │ │ │ +tds_read_packet │ │ │ │ │ +int tds_read_packet(TDSSOCKET *tds) │ │ │ │ │ +Read in one 'packet' from the server. │ │ │ │ │ +Definition packet.c:523 │ │ │ │ │ +tds_freeze_written │ │ │ │ │ +size_t tds_freeze_written(TDSFREEZE *freeze) │ │ │ │ │ +Compute how many bytes has been written from freeze. │ │ │ │ │ +Definition packet.c:931 │ │ │ │ │ +tds_flush_packet │ │ │ │ │ +TDSRET tds_flush_packet(TDSSOCKET *tds) │ │ │ │ │ +Flush packet to server. │ │ │ │ │ +Definition write.c:224 │ │ │ │ │ +tds_freeze_close │ │ │ │ │ +TDSRET tds_freeze_close(TDSFREEZE *freeze) │ │ │ │ │ +Stop keeping data for this specific freeze. │ │ │ │ │ +Definition packet.c:992 │ │ │ │ │ +tds_goodread │ │ │ │ │ +int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen) │ │ │ │ │ +Loops until we have received some characters return -1 on failure. │ │ │ │ │ +Definition net.c:906 │ │ │ │ │ +tds_freeze_abort │ │ │ │ │ +TDSRET tds_freeze_abort(TDSFREEZE *freeze) │ │ │ │ │ +Discard all data written after the freeze. │ │ │ │ │ +Definition packet.c:957 │ │ │ │ │ +tds_get_uint8 │ │ │ │ │ +TDS_UINT8 tds_get_uint8(TDSSOCKET *tds) │ │ │ │ │ +Get an uint64 from the server. │ │ │ │ │ +Definition read.c:138 │ │ │ │ │ +tds_get_char_data │ │ │ │ │ +TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, │ │ │ │ │ +TDSCOLUMN *curcol) │ │ │ │ │ +Fetch character data the wire. │ │ │ │ │ +Definition read.c:193 │ │ │ │ │ +tds_get_string │ │ │ │ │ +size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_ │ │ │ │ │ +t dest_size) │ │ │ │ │ +Fetch a string from the wire. │ │ │ │ │ +Definition read.c:164 │ │ │ │ │ +tds7_get_instance_ports │ │ │ │ │ +int tds7_get_instance_ports(FILE *output, struct addrinfo *addr) │ │ │ │ │ +Get port of all instances. │ │ │ │ │ +Definition net.c:1099 │ │ │ │ │ +tds_get_uint │ │ │ │ │ +TDS_UINT tds_get_uint(TDSSOCKET *tds) │ │ │ │ │ +Get an uint32 from the server. │ │ │ │ │ +Definition read.c:125 │ │ │ │ │ +tds7_get_instance_port │ │ │ │ │ +int tds7_get_instance_port(struct addrinfo *addr, const char *instance) │ │ │ │ │ +Get port of given instance. │ │ │ │ │ +Definition net.c:1235 │ │ │ │ │ +tds_get_usmallint │ │ │ │ │ +TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds) │ │ │ │ │ +Get an uint16 from the server. │ │ │ │ │ +Definition read.c:112 │ │ │ │ │ +tds_unget_byte │ │ │ │ │ +void tds_unget_byte(TDSSOCKET *tds) │ │ │ │ │ +Unget will always work as long as you don't call it twice in a row. │ │ │ │ │ +Definition read.c:89 │ │ │ │ │ +tds_select │ │ │ │ │ +int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds) │ │ │ │ │ +Select on a socket until it's available or the timeout expires. │ │ │ │ │ +Definition net.c:589 │ │ │ │ │ +tds_get_n │ │ │ │ │ +bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n) │ │ │ │ │ +Get N bytes from the buffer and return them in the already allocated space │ │ │ │ │ +given to us. │ │ │ │ │ +Definition read.c:228 │ │ │ │ │ +tds_prtype │ │ │ │ │ +const char * tds_prtype(int token) │ │ │ │ │ +Returns string representation of the given type. │ │ │ │ │ +Definition token.c:3037 │ │ │ │ │ +tds_lookup_dynamic │ │ │ │ │ +TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id) │ │ │ │ │ +Finds a dynamic given string id. │ │ │ │ │ +Definition token.c:2592 │ │ │ │ │ +tds_process_login_tokens │ │ │ │ │ +TDSRET tds_process_login_tokens(TDSSOCKET *tds) │ │ │ │ │ +tds_process_login_tokens() is called after sending the login packet to the │ │ │ │ │ +server. │ │ │ │ │ +Definition token.c:416 │ │ │ │ │ +tds_process_tokens │ │ │ │ │ +TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_ │ │ │ │ │ +flags, unsigned flag) │ │ │ │ │ +process all streams. │ │ │ │ │ +Definition token.c:536 │ │ │ │ │ +tds_process_simple_query │ │ │ │ │ +TDSRET tds_process_simple_query(TDSSOCKET *tds) │ │ │ │ │ +Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the │ │ │ │ │ +statement returns results,... │ │ │ │ │ +Definition token.c:886 │ │ │ │ │ +tds_process_cancel │ │ │ │ │ +TDSRET tds_process_cancel(TDSSOCKET *tds) │ │ │ │ │ +Definition token.c:2559 │ │ │ │ │ +tdsiconvinfo │ │ │ │ │ +Definition iconv.h:92 │ │ │ │ │ +tdsnumeric │ │ │ │ │ +Definition proto.h:26 │ │ │ │ │ +tdsmoney │ │ │ │ │ +Definition proto.h:39 │ │ │ │ │ +tds_compiletime_settings │ │ │ │ │ +A structure to hold all the compile-time settings. │ │ │ │ │ +Definition tds.h:83 │ │ │ │ │ +TDS_DATETIMEALL │ │ │ │ │ +This structure is not directly connected to TDS protocol but keeps any DATE/ │ │ │ │ │ +TIME information. │ │ │ │ │ +Definition tds.h:145 │ │ │ │ │ +TDS_DATETIMEALL::date │ │ │ │ │ +TDS_INT date │ │ │ │ │ +date, 0 = 1900-01-01 │ │ │ │ │ +Definition tds.h:147 │ │ │ │ │ +TDS_DATETIMEALL::offset │ │ │ │ │ +TDS_SMALLINT offset │ │ │ │ │ +time offset │ │ │ │ │ +Definition tds.h:148 │ │ │ │ │ +TDS_DATETIMEALL::time │ │ │ │ │ +TDS_UINT8 time │ │ │ │ │ +time, 7 digit precision │ │ │ │ │ +Definition tds.h:146 │ │ │ │ │ +tdsdaterec │ │ │ │ │ +Used by tds_datecrack. │ │ │ │ │ +Definition tds.h:158 │ │ │ │ │ +tdsdaterec::dayofyear │ │ │ │ │ +TDS_INT dayofyear │ │ │ │ │ +day of year (1-366) │ │ │ │ │ +Definition tds.h:163 │ │ │ │ │ +tdsdaterec::weekday │ │ │ │ │ +TDS_INT weekday │ │ │ │ │ +day of week (0-6, 0 = sunday) │ │ │ │ │ +Definition tds.h:164 │ │ │ │ │ +tdsdaterec::year │ │ │ │ │ +TDS_INT year │ │ │ │ │ +year │ │ │ │ │ +Definition tds.h:159 │ │ │ │ │ +tdsdaterec::timezone │ │ │ │ │ +TDS_INT timezone │ │ │ │ │ +-840 - 840 minutes from UTC │ │ │ │ │ +Definition tds.h:169 │ │ │ │ │ +tdsdaterec::minute │ │ │ │ │ +TDS_INT minute │ │ │ │ │ +0-59 │ │ │ │ │ +Definition tds.h:166 │ │ │ │ │ +tdsdaterec::day │ │ │ │ │ +TDS_INT day │ │ │ │ │ +day of month (1-31) │ │ │ │ │ +Definition tds.h:162 │ │ │ │ │ +tdsdaterec::decimicrosecond │ │ │ │ │ +TDS_INT decimicrosecond │ │ │ │ │ +0-9999999 │ │ │ │ │ +Definition tds.h:168 │ │ │ │ │ +tdsdaterec::second │ │ │ │ │ +TDS_INT second │ │ │ │ │ +0-59 │ │ │ │ │ +Definition tds.h:167 │ │ │ │ │ +tdsdaterec::quarter │ │ │ │ │ +TDS_INT quarter │ │ │ │ │ +quarter (0-3) │ │ │ │ │ +Definition tds.h:160 │ │ │ │ │ +tdsdaterec::hour │ │ │ │ │ +TDS_INT hour │ │ │ │ │ +0-23 │ │ │ │ │ +Definition tds.h:165 │ │ │ │ │ +tdsdaterec::month │ │ │ │ │ +TDS_INT month │ │ │ │ │ +month number (0-11) │ │ │ │ │ +Definition tds.h:161 │ │ │ │ │ +tds_option_arg │ │ │ │ │ +Definition tds.h:305 │ │ │ │ │ +tds_align_struct │ │ │ │ │ +Definition tds.h:476 │ │ │ │ │ +tds_capability_type │ │ │ │ │ +Definition tds.h:485 │ │ │ │ │ +tds_capabilities │ │ │ │ │ +Definition tds.h:492 │ │ │ │ │ +tds_login │ │ │ │ │ +Definition tds.h:498 │ │ │ │ │ +tds_login::crlfile │ │ │ │ │ +DSTR crlfile │ │ │ │ │ +certificate revocation file │ │ │ │ │ +Definition tds.h:512 │ │ │ │ │ +tds_login::server_realm_name │ │ │ │ │ +DSTR server_realm_name │ │ │ │ │ +server realm name (in freetds.conf) │ │ │ │ │ +Definition tds.h:508 │ │ │ │ │ +tds_login::user_name │ │ │ │ │ +DSTR user_name │ │ │ │ │ +account for login │ │ │ │ │ +Definition tds.h:516 │ │ │ │ │ +tds_login::password │ │ │ │ │ +DSTR password │ │ │ │ │ +password of account login │ │ │ │ │ +Definition tds.h:517 │ │ │ │ │ +tds_login::db_filename │ │ │ │ │ +DSTR db_filename │ │ │ │ │ +database filename to attach (MSSQL) │ │ │ │ │ +Definition tds.h:510 │ │ │ │ │ +tds_login::certificate_host_name │ │ │ │ │ +DSTR certificate_host_name │ │ │ │ │ +certificate hostname to check, if empty use server_host_name │ │ │ │ │ +Definition tds.h:513 │ │ │ │ │ +tds_login::server_name │ │ │ │ │ +DSTR server_name │ │ │ │ │ +server name (in freetds.conf) │ │ │ │ │ +Definition tds.h:499 │ │ │ │ │ +tds_login::ip_addrs │ │ │ │ │ +struct addrinfo * ip_addrs │ │ │ │ │ +ip(s) of server │ │ │ │ │ +Definition tds.h:528 │ │ │ │ │ +tds_login::server_charset │ │ │ │ │ +DSTR server_charset │ │ │ │ │ +charset of server e.g. │ │ │ │ │ +Definition tds.h:504 │ │ │ │ │ +tds_login::tds_version │ │ │ │ │ +TDS_USMALLINT tds_version │ │ │ │ │ +TDS version. │ │ │ │ │ +Definition tds.h:501 │ │ │ │ │ +tds_login::new_password │ │ │ │ │ +DSTR new_password │ │ │ │ │ +new password to set (TDS 7.2+) │ │ │ │ │ +Definition tds.h:518 │ │ │ │ │ +tds_login::bulk_copy │ │ │ │ │ +unsigned int bulk_copy │ │ │ │ │ +if bulk copy should be enabled │ │ │ │ │ +Definition tds.h:538 │ │ │ │ │ +tds_login::cafile │ │ │ │ │ +DSTR cafile │ │ │ │ │ +certificate authorities file │ │ │ │ │ +Definition tds.h:511 │ │ │ │ │ +tds_login::server_spn │ │ │ │ │ +DSTR server_spn │ │ │ │ │ +server SPN (in freetds.conf) │ │ │ │ │ +Definition tds.h:509 │ │ │ │ │ +tds_login::port │ │ │ │ │ +int port │ │ │ │ │ +port of database service │ │ │ │ │ +Definition tds.h:500 │ │ │ │ │ +tds_headers │ │ │ │ │ +Definition tds.h:557 │ │ │ │ │ +tds_locale │ │ │ │ │ +Definition tds.h:565 │ │ │ │ │ +tds_blob │ │ │ │ │ +Information about blobs (e.g. │ │ │ │ │ +Definition tds.h:578 │ │ │ │ │ +tds_variant │ │ │ │ │ +Store variant information. │ │ │ │ │ +Definition tds.h:589 │ │ │ │ │ +tds_encoding │ │ │ │ │ +Information relevant to libiconv. │ │ │ │ │ +Definition tds.h:603 │ │ │ │ │ +tds_encoding::name │ │ │ │ │ +const char * name │ │ │ │ │ +name of the encoding (ie UTF-8) │ │ │ │ │ +Definition tds.h:605 │ │ │ │ │ +tds_encoding::canonic │ │ │ │ │ +unsigned char canonic │ │ │ │ │ +internal numeric index into array of all encodings │ │ │ │ │ +Definition tds.h:609 │ │ │ │ │ +tds_bcpcoldata │ │ │ │ │ +Definition tds.h:613 │ │ │ │ │ +tds_column_funcs │ │ │ │ │ +Definition tds.h:628 │ │ │ │ │ +tds_column_funcs::put_data │ │ │ │ │ +tds_func_put_data * put_data │ │ │ │ │ +Send column data to server. │ │ │ │ │ +Definition tds.h:647 │ │ │ │ │ +tds_column_funcs::put_info │ │ │ │ │ +tds_func_put_info * put_info │ │ │ │ │ +Send metadata column information to server. │ │ │ │ │ +Definition tds.h:637 │ │ │ │ │ +tds_column │ │ │ │ │ +Metadata about columns in regular and compute rows. │ │ │ │ │ +Definition tds.h:674 │ │ │ │ │ +tds_column::bcp_prefix_len │ │ │ │ │ +TDS_INT bcp_prefix_len │ │ │ │ │ +The length, in bytes, of any length prefix this column may have. │ │ │ │ │ +Definition tds.h:746 │ │ │ │ │ +tds_column::column_varint_size │ │ │ │ │ +TDS_TINYINT column_varint_size │ │ │ │ │ +size of length when reading from wire (0, 1, 2 or 4) │ │ │ │ │ +Definition tds.h:686 │ │ │ │ │ +tds_column::column_size │ │ │ │ │ +TDS_INT column_size │ │ │ │ │ +maximun size of data. │ │ │ │ │ +Definition tds.h:679 │ │ │ │ │ +tds_column::column_prec │ │ │ │ │ +TDS_TINYINT column_prec │ │ │ │ │ +precision for decimal/numeric │ │ │ │ │ +Definition tds.h:688 │ │ │ │ │ +tds_column::column_type │ │ │ │ │ +TDS_SERVER_TYPE column_type │ │ │ │ │ +This type can be different from wire type because conversion (e.g. │ │ │ │ │ +Definition tds.h:681 │ │ │ │ │ +tds_column::char_conv │ │ │ │ │ +TDSICONV * char_conv │ │ │ │ │ +refers to previously allocated iconv information │ │ │ │ │ +Definition tds.h:697 │ │ │ │ │ +tds_column::column_scale │ │ │ │ │ +TDS_TINYINT column_scale │ │ │ │ │ +scale for decimal/numeric │ │ │ │ │ +Definition tds.h:689 │ │ │ │ │ +tds_column::column_cur_size │ │ │ │ │ +TDS_INT column_cur_size │ │ │ │ │ +size written in variable (ie: char, text, binary). │ │ │ │ │ +Definition tds.h:721 │ │ │ │ │ +tds_result_info │ │ │ │ │ +Hold information for any results. │ │ │ │ │ +Definition tds.h:754 │ │ │ │ │ +tds_message │ │ │ │ │ +Definition tds.h:861 │ │ │ │ │ +tds_upd_col │ │ │ │ │ +Definition tds.h:877 │ │ │ │ │ +tds_cursor_status │ │ │ │ │ +Definition tds.h:891 │ │ │ │ │ +tds_cursor │ │ │ │ │ +Holds information about a cursor. │ │ │ │ │ +Definition tds.h:922 │ │ │ │ │ +tds_cursor::options │ │ │ │ │ +TDS_TINYINT options │ │ │ │ │ +read only|updatable TODO use it │ │ │ │ │ +Definition tds.h:927 │ │ │ │ │ +tds_cursor::defer_close │ │ │ │ │ +bool defer_close │ │ │ │ │ +true if cursor was marker to be closed when connection is idle │ │ │ │ │ +Definition tds.h:931 │ │ │ │ │ +tds_cursor::ref_count │ │ │ │ │ +TDS_INT ref_count │ │ │ │ │ +reference counter so client can retain safely a pointer │ │ │ │ │ +Definition tds.h:924 │ │ │ │ │ +tds_cursor::cursor_id │ │ │ │ │ +TDS_INT cursor_id │ │ │ │ │ +cursor id returned by the server after cursor declare │ │ │ │ │ +Definition tds.h:926 │ │ │ │ │ +tds_cursor::cursor_rows │ │ │ │ │ +TDS_INT cursor_rows │ │ │ │ │ +< number of updatable columns │ │ │ │ │ +Definition tds.h:936 │ │ │ │ │ +tds_cursor::next │ │ │ │ │ +struct tds_cursor * next │ │ │ │ │ +next in linked list, keep first │ │ │ │ │ +Definition tds.h:923 │ │ │ │ │ +tds_cursor::type │ │ │ │ │ +TDS_INT type │ │ │ │ │ +row fetched from this cursor │ │ │ │ │ +Definition tds.h:941 │ │ │ │ │ +tds_cursor::status │ │ │ │ │ +TDS_CURSOR_STATUS status │ │ │ │ │ +cursor parameter │ │ │ │ │ +Definition tds.h:938 │ │ │ │ │ +tds_cursor::query │ │ │ │ │ +char * query │ │ │ │ │ +SQL query. │ │ │ │ │ +Definition tds.h:932 │ │ │ │ │ +tds_cursor::cursor_name │ │ │ │ │ +char * cursor_name │ │ │ │ │ +name of the cursor │ │ │ │ │ +Definition tds.h:925 │ │ │ │ │ +tds_env │ │ │ │ │ +Current environment as reported by the server. │ │ │ │ │ +Definition tds.h:948 │ │ │ │ │ +tds_env::charset │ │ │ │ │ +char * charset │ │ │ │ │ +character set encoding │ │ │ │ │ +Definition tds.h:953 │ │ │ │ │ +tds_env::block_size │ │ │ │ │ +int block_size │ │ │ │ │ +packet size (512-65535) │ │ │ │ │ +Definition tds.h:950 │ │ │ │ │ +tds_env::database │ │ │ │ │ +char * database │ │ │ │ │ +database name │ │ │ │ │ +Definition tds.h:955 │ │ │ │ │ +tds_dynamic │ │ │ │ │ +Holds information for a dynamic (also called prepared) query. │ │ │ │ │ +Definition tds.h:962 │ │ │ │ │ +tds_dynamic::query │ │ │ │ │ +char * query │ │ │ │ │ +saved query, we need to know original query if prepare is impossible │ │ │ │ │ +Definition tds.h:994 │ │ │ │ │ +tds_dynamic::ref_count │ │ │ │ │ +TDS_INT ref_count │ │ │ │ │ +reference counter so client can retain safely a pointer │ │ │ │ │ +Definition tds.h:964 │ │ │ │ │ +tds_dynamic::emulated │ │ │ │ │ +bool emulated │ │ │ │ │ +this dynamic query cannot be prepared so libTDS have to construct a simple │ │ │ │ │ +query. │ │ │ │ │ +Definition tds.h:978 │ │ │ │ │ +tds_dynamic::defer_close │ │ │ │ │ +bool defer_close │ │ │ │ │ +true if dynamic was marker to be closed when connection is idle │ │ │ │ │ +Definition tds.h:982 │ │ │ │ │ +tds_dynamic::res_info │ │ │ │ │ +TDSPARAMINFO * res_info │ │ │ │ │ +query results │ │ │ │ │ +Definition tds.h:984 │ │ │ │ │ +tds_dynamic::params │ │ │ │ │ +TDSPARAMINFO * params │ │ │ │ │ +query parameters. │ │ │ │ │ +Definition tds.h:992 │ │ │ │ │ +tds_dynamic::next │ │ │ │ │ +struct tds_dynamic * next │ │ │ │ │ +next in linked list, keep first │ │ │ │ │ +Definition tds.h:963 │ │ │ │ │ +tds_dynamic::num_id │ │ │ │ │ +TDS_INT num_id │ │ │ │ │ +numeric id for mssql7+ │ │ │ │ │ +Definition tds.h:966 │ │ │ │ │ +tds_multiple │ │ │ │ │ +Definition tds.h:1004 │ │ │ │ │ +tds_context │ │ │ │ │ +Definition tds.h:1015 │ │ │ │ │ +tds_authentication │ │ │ │ │ +Definition tds.h:1033 │ │ │ │ │ +tds_packet │ │ │ │ │ +Definition tds.h:1043 │ │ │ │ │ +tds_packet::data_len │ │ │ │ │ +unsigned data_len │ │ │ │ │ +data length, this does not account SMP header, only TDS part │ │ │ │ │ +Definition tds.h:1057 │ │ │ │ │ +tds_poll_wakeup │ │ │ │ │ +Definition tds.h:1071 │ │ │ │ │ +tds_connection │ │ │ │ │ +Definition tds.h:1077 │ │ │ │ │ +tds_connection::env │ │ │ │ │ +TDSENV env │ │ │ │ │ +environment is shared between all sessions │ │ │ │ │ +Definition tds.h:1088 │ │ │ │ │ +tds_connection::unicharsize │ │ │ │ │ +uint8_t unicharsize │ │ │ │ │ +Ratio between bytes allocated for a UNICHAR type and type length (Sybase). │ │ │ │ │ +Definition tds.h:1145 │ │ │ │ │ +tds_connection::cursors │ │ │ │ │ +TDSCURSOR * cursors │ │ │ │ │ +linked list of cursors allocated for this connection contains only cursors │ │ │ │ │ +allocated on the server │ │ │ │ │ +Definition tds.h:1094 │ │ │ │ │ +tds_connection::s │ │ │ │ │ +TDS_SYS_SOCKET s │ │ │ │ │ +tcp socket, INVALID_SOCKET if not connected │ │ │ │ │ +Definition tds.h:1083 │ │ │ │ │ +tds_connection::product_version │ │ │ │ │ +TDS_UINT product_version │ │ │ │ │ +version of product (Sybase/MS and full version) │ │ │ │ │ +Definition tds.h:1080 │ │ │ │ │ +tds_connection::dyns │ │ │ │ │ +TDSDYNAMIC * dyns │ │ │ │ │ +list of dynamic allocated for this connection contains only dynamic allocated │ │ │ │ │ +on the server │ │ │ │ │ +Definition tds.h:1099 │ │ │ │ │ +tds_connection::pending_close │ │ │ │ │ +unsigned int pending_close │ │ │ │ │ +true is connection has pending closing (cursors or dynamic) │ │ │ │ │ +Definition tds.h:1110 │ │ │ │ │ +tds_connection::ncharsize │ │ │ │ │ +uint8_t ncharsize │ │ │ │ │ +Ratio between bytes allocated for a NCHAR type and type length (Sybase). │ │ │ │ │ +Definition tds.h:1138 │ │ │ │ │ +tds_socket │ │ │ │ │ +Information for a server connection. │ │ │ │ │ +Definition tds.h:1163 │ │ │ │ │ +tds_socket::login │ │ │ │ │ +TDSLOGIN * login │ │ │ │ │ +config for login stuff. │ │ │ │ │ +Definition tds.h:1258 │ │ │ │ │ +tds_socket::in_len │ │ │ │ │ +unsigned in_len │ │ │ │ │ +input buffer length │ │ │ │ │ +Definition tds.h:1194 │ │ │ │ │ +tds_socket::frozen_packets │ │ │ │ │ +TDSPACKET * frozen_packets │ │ │ │ │ +list of packets frozen, points to first one. │ │ │ │ │ +Definition tds.h:1203 │ │ │ │ │ +tds_socket::send_packet │ │ │ │ │ +TDSPACKET * send_packet │ │ │ │ │ +packet we are preparing to send │ │ │ │ │ +Definition tds.h:1231 │ │ │ │ │ +tds_socket::in_buf │ │ │ │ │ +unsigned char * in_buf │ │ │ │ │ +Input buffer. │ │ │ │ │ +Definition tds.h:1177 │ │ │ │ │ +tds_socket::ret_status │ │ │ │ │ +TDS_INT ret_status │ │ │ │ │ +return status from store procedure │ │ │ │ │ +Definition tds.h:1250 │ │ │ │ │ +tds_socket::out_pos │ │ │ │ │ +unsigned out_pos │ │ │ │ │ +current position in out_buf │ │ │ │ │ +Definition tds.h:1193 │ │ │ │ │ +tds_socket::current_results │ │ │ │ │ +TDSRESULTINFO * current_results │ │ │ │ │ +Current query information. │ │ │ │ │ +Definition tds.h:1238 │ │ │ │ │ +tds_socket::in_flag │ │ │ │ │ +unsigned char in_flag │ │ │ │ │ +input buffer type │ │ │ │ │ +Definition tds.h:1195 │ │ │ │ │ +tds_socket::rows_affected │ │ │ │ │ +TDS_INT8 rows_affected │ │ │ │ │ +rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid │ │ │ │ │ +Definition tds.h:1254 │ │ │ │ │ +tds_socket::out_flag │ │ │ │ │ +unsigned char out_flag │ │ │ │ │ +output buffer type │ │ │ │ │ +Definition tds.h:1196 │ │ │ │ │ +tds_socket::in_pos │ │ │ │ │ +unsigned in_pos │ │ │ │ │ +current position in in_buf │ │ │ │ │ +Definition tds.h:1192 │ │ │ │ │ +tds_socket::cur_cursor │ │ │ │ │ +TDSCURSOR * cur_cursor │ │ │ │ │ +cursor in use │ │ │ │ │ +Definition tds.h:1243 │ │ │ │ │ +tds_socket::in_row │ │ │ │ │ +bool in_row │ │ │ │ │ +true if we are getting rows │ │ │ │ │ +Definition tds.h:1246 │ │ │ │ │ +tds_socket::bulk_query │ │ │ │ │ +bool bulk_query │ │ │ │ │ +true is query sent was a bulk query so we need to switch state to QUERYING │ │ │ │ │ +Definition tds.h:1244 │ │ │ │ │ +tds_socket::has_status │ │ │ │ │ +bool has_status │ │ │ │ │ +true is ret_status is valid │ │ │ │ │ +Definition tds.h:1245 │ │ │ │ │ +tds_socket::out_buf │ │ │ │ │ +unsigned char * out_buf │ │ │ │ │ +Output buffer. │ │ │ │ │ +Definition tds.h:1185 │ │ │ │ │ +tds_socket::in_cancel │ │ │ │ │ +volatile unsigned char in_cancel │ │ │ │ │ +indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean │ │ │ │ │ +we have to send cance... │ │ │ │ │ +Definition tds.h:1248 │ │ │ │ │ +tds_socket::out_buf_max │ │ │ │ │ +unsigned int out_buf_max │ │ │ │ │ +Maximum size of packet pointed by out_buf. │ │ │ │ │ +Definition tds.h:1191 │ │ │ │ │ +tds_socket::cur_dyn │ │ │ │ │ +TDSDYNAMIC * cur_dyn │ │ │ │ │ +dynamic structure in use │ │ │ │ │ +Definition tds.h:1256 │ │ │ │ │ +tds_tvp_row │ │ │ │ │ +Definition tds.h:1275 │ │ │ │ │ +tds_tvp │ │ │ │ │ +Definition tds.h:1281 │ │ │ │ │ +tdsdump_off_item │ │ │ │ │ +Definition tds.h:1512 │ │ │ │ │ +tds_freeze │ │ │ │ │ +Definition tds.h:1584 │ │ │ │ │ +tds_freeze::tds │ │ │ │ │ +TDSSOCKET * tds │ │ │ │ │ +which socket we refer to │ │ │ │ │ +Definition tds.h:1586 │ │ │ │ │ +tds_freeze::pkt_pos │ │ │ │ │ +unsigned pkt_pos │ │ │ │ │ +position in pkt │ │ │ │ │ +Definition tds.h:1590 │ │ │ │ │ +tds_freeze::size_len │ │ │ │ │ +unsigned size_len │ │ │ │ │ +length size (0, 1, 2 or 4) │ │ │ │ │ +Definition tds.h:1592 │ │ │ │ │ +tds_freeze::pkt │ │ │ │ │ +TDSPACKET * pkt │ │ │ │ │ +first packet frozen │ │ │ │ │ +Definition tds.h:1588 │ │ │ │ │ +tds5_colinfo │ │ │ │ │ +Definition tds.h:1676 │ │ │ │ │ +tds_bcpinfo │ │ │ │ │ +Definition tds.h:1684 │ │ │ │ │ +tds_condition │ │ │ │ │ +Definition thread.h:279 │ │ │ │ │ +tds_dstr │ │ │ │ │ +Structure to hold a string. │ │ │ │ │ +Definition string.h:36 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00521_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/sqldb.h Source File │ │ │ │ +FreeTDS API: include/freetds/sysconfdir.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,202 +70,22 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
sqldb.h
│ │ │ │ +
sysconfdir.h
│ │ │ │
│ │ │ │
│ │ │ │ -
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef SQLDB_h
│ │ │ │ -
21#define SQLDB_h
│ │ │ │ -
22
│ │ │ │ -
23#include "./sybdb.h"
│ │ │ │ -
24
│ │ │ │ -
25#define SQLCHAR SYBCHAR
│ │ │ │ -
26#define SQLVARCHAR SYBVARCHAR
│ │ │ │ -
27#define SQLINTN SYBINTN
│ │ │ │ -
28#define SQLINT1 SYBINT1
│ │ │ │ -
29#define SQLINT2 SYBINT2
│ │ │ │ -
30#define SQLINT4 SYBINT4
│ │ │ │ -
31#define SQLINT8 SYBINT8
│ │ │ │ -
32#define SQLFLT8 SYBFLT8
│ │ │ │ -
33#define SQLDATETIME SYBDATETIME
│ │ │ │ -
34#define SQLBIT SYBBIT
│ │ │ │ -
35#define SQLTEXT SYBTEXT
│ │ │ │ -
36#define SQLIMAGE SYBIMAGE
│ │ │ │ -
37#define SQLMONEY4 SYBMONEY4
│ │ │ │ -
38#define SQLMONEY SYBMONEY
│ │ │ │ -
39#define SQLDATETIM4 SYBDATETIME4
│ │ │ │ -
40#define SQLFLT4 SYBREAL
│ │ │ │ -
41#define SQLBINARY SYBBINARY
│ │ │ │ -
42#define SQLVARBINARY SYBVARBINARY
│ │ │ │ -
43#define SQLNUMERIC SYBNUMERIC
│ │ │ │ -
44#define SQLDECIMAL SYBDECIMAL
│ │ │ │ -
45#define SQLFLTN SYBFLTN
│ │ │ │ -
46#define SQLMONEYN SYBMONEYN
│ │ │ │ -
47#define SQLDATETIMN SYBDATETIMN
│ │ │ │ -
48#define SQLVOID SYBVOID
│ │ │ │ -
49
│ │ │ │ -
50#define SMALLDATETIBIND SMALLDATETIMEBIND
│ │ │ │ -
51
│ │ │ │ -
52#define DBERRHANDLE_PROC EHANDLEFUNC
│ │ │ │ -
53#define DBMSGHANDLE_PROC MHANDLEFUNC
│ │ │ │ -
54
│ │ │ │ -
55/* DB-Library errors as defined by Microsoft */
│ │ │ │ -
56#define SQLEMEM SYBEMEM
│ │ │ │ -
57#define SQLENULL SYBENULL
│ │ │ │ -
58#define SQLENLOG SYBENLOG
│ │ │ │ -
59#define SQLEPWD SYBEPWD
│ │ │ │ -
60#define SQLECONN SYBECONN
│ │ │ │ -
61#define SQLEDDNE SYBEDDNE
│ │ │ │ -
62#define SQLENULLO SYBENULLO
│ │ │ │ -
63#define SQLESMSG SYBESMSG
│ │ │ │ -
64#define SQLEBTOK SYBEBTOK
│ │ │ │ -
65#define SQLENSPE SYBENSPE
│ │ │ │ -
66#define SQLEREAD SYBEREAD
│ │ │ │ -
67#define SQLECNOR SYBECNOR
│ │ │ │ -
68#define SQLETSIT SYBETSIT
│ │ │ │ -
69#define SQLEPARM SYBEPARM
│ │ │ │ -
70#define SQLEAUTN SYBEAUTN
│ │ │ │ -
71#define SQLECOFL SYBECOFL
│ │ │ │ -
72#define SQLERDCN SYBERDCN
│ │ │ │ -
73#define SQLEICN SYBEICN
│ │ │ │ -
74#define SQLECLOS SYBECLOS
│ │ │ │ -
75#define SQLENTXT SYBENTXT
│ │ │ │ -
76#define SQLEDNTI SYBEDNTI
│ │ │ │ -
77#define SQLETMTD SYBETMTD
│ │ │ │ -
78#define SQLEASEC SYBEASEC
│ │ │ │ -
79#define SQLENTLL SYBENTLL
│ │ │ │ -
80#define SQLETIME SYBETIME
│ │ │ │ -
81#define SQLEWRIT SYBEWRIT
│ │ │ │ -
82#define SQLEMODE SYBEMODE
│ │ │ │ -
83#define SQLEOOB SYBEOOB
│ │ │ │ -
84#define SQLEITIM SYBEITIM
│ │ │ │ -
85#define SQLEDBPS SYBEDBPS
│ │ │ │ -
86#define SQLEIOPT SYBEIOPT
│ │ │ │ -
87#define SQLEASNL SYBEASNL
│ │ │ │ -
88#define SQLEASUL SYBEASUL
│ │ │ │ -
89#define SQLENPRM SYBENPRM
│ │ │ │ -
90#define SQLEDBOP SYBEDBOP
│ │ │ │ -
91#define SQLENSIP SYBENSIP
│ │ │ │ -
92#define SQLECNULL SYBECNULL
│ │ │ │ -
93#define SQLESEOF SYBESEOF
│ │ │ │ -
94#define SQLERPND SYBERPND
│ │ │ │ -
95#define SQLECSYN SYBECSYN
│ │ │ │ -
96#define SQLENONET SYBENONET
│ │ │ │ -
97#define SQLEBTYP SYBEBTYP
│ │ │ │ -
98#define SQLEABNC SYBEABNC
│ │ │ │ -
99#define SQLEABMT SYBEABMT
│ │ │ │ -
100#define SQLEABNP SYBEABNP
│ │ │ │ -
101#define SQLEBNCR SYBEBNCR
│ │ │ │ -
102#define SQLEAAMT SYBEAAMT
│ │ │ │ -
103#define SQLENXID SYBENXID
│ │ │ │ -
104#define SQLEIFNB SYBEIFNB
│ │ │ │ -
105#define SQLEKBCO SYBEKBCO
│ │ │ │ -
106#define SQLEBBCI SYBEBBCI
│ │ │ │ -
107#define SQLEKBCI SYBEKBCI
│ │ │ │ -
108#define SQLEBCWE SYBEBCWE
│ │ │ │ -
109#define SQLEBCNN SYBEBCNN
│ │ │ │ -
110#define SQLEBCOR SYBEBCOR
│ │ │ │ -
111#define SQLEBCPI SYBEBCPI
│ │ │ │ -
112#define SQLEBCPN SYBEBCPN
│ │ │ │ -
113#define SQLEBCPB SYBEBCPB
│ │ │ │ -
114#define SQLEVDPT SYBEVDPT
│ │ │ │ -
115#define SQLEBIVI SYBEBIVI
│ │ │ │ -
116#define SQLEBCBC SYBEBCBC
│ │ │ │ -
117#define SQLEBCFO SYBEBCFO
│ │ │ │ -
118#define SQLEBCVH SYBEBCVH
│ │ │ │ -
119#define SQLEBCUO SYBEBCUO
│ │ │ │ -
120#define SQLEBUOE SYBEBUOE
│ │ │ │ -
121#define SQLEBWEF SYBEBWEF
│ │ │ │ -
122#define SQLEBTMT SYBEBTMT
│ │ │ │ -
123#define SQLEBEOF SYBEBEOF
│ │ │ │ -
124#define SQLEBCSI SYBEBCSI
│ │ │ │ -
125#define SQLEPNUL SYBEPNUL
│ │ │ │ -
126#define SQLEBSKERR SYBEBSKERR
│ │ │ │ -
127#define SQLEBDIO SYBEBDIO
│ │ │ │ -
128#define SQLEBCNT SYBEBCNT
│ │ │ │ -
129#define SQLEMDBP SYBEMDBP
│ │ │ │ -
130#define SQLINIT SYBINIT
│ │ │ │ -
131#define SQLCRSINV SYBCRSINV
│ │ │ │ -
132#define SQLCRSCMD SYBCRSCMD
│ │ │ │ -
133#define SQLCRSNOIND SYBCRSNOIND
│ │ │ │ -
134#define SQLCRSDIS SYBCRSDIS
│ │ │ │ -
135#define SQLCRSAGR SYBCRSAGR
│ │ │ │ -
136#define SQLCRSORD SYBCRSORD
│ │ │ │ -
137#define SQLCRSMEM SYBCRSMEM
│ │ │ │ -
138#define SQLCRSBSKEY SYBCRSBSKEY
│ │ │ │ -
139#define SQLCRSNORES SYBCRSNORES
│ │ │ │ -
140#define SQLCRSVIEW SYBCRSVIEW
│ │ │ │ -
141#define SQLCRSBUFR SYBCRSBUFR
│ │ │ │ -
142#define SQLCRSFROWN SYBCRSFROWN
│ │ │ │ -
143#define SQLCRSBROL SYBCRSBROL
│ │ │ │ -
144#define SQLCRSFRAND SYBCRSFRAND
│ │ │ │ -
145#define SQLCRSFLAST SYBCRSFLAST
│ │ │ │ -
146#define SQLCRSRO SYBCRSRO
│ │ │ │ -
147#define SQLCRSTAB SYBCRSTAB
│ │ │ │ -
148#define SQLCRSUPDTAB SYBCRSUPDTAB
│ │ │ │ -
149#define SQLCRSUPDNB SYBCRSUPDNB
│ │ │ │ -
150#define SQLCRSVIIND SYBCRSVIIND
│ │ │ │ -
151#define SQLCRSNOUPD SYBCRSNOUPD
│ │ │ │ -
152#define SQLCRSOS SYBCRSOS
│ │ │ │ -
153#define SQLEBCSA SYBEBCSA
│ │ │ │ -
154#define SQLEBCRO SYBEBCRO
│ │ │ │ -
155#define SQLEBCNE SYBEBCNE
│ │ │ │ -
156#define SQLEBCSK SYBEBCSK
│ │ │ │ -
157#define SQLEUVBF SYBEUVBF
│ │ │ │ -
158#define SQLEBIHC SYBEBIHC
│ │ │ │ -
159#define SQLEBWFF SYBEBWFF
│ │ │ │ -
160#define SQLNUMVAL SYBNUMVAL
│ │ │ │ -
161#define SQLEOLDVR SYBEOLDVR
│ │ │ │ -
162#define SQLEBCPS SYBEBCPS
│ │ │ │ -
163#define SQLEDTC SYBEDTC
│ │ │ │ -
164#define SQLENOTIMPL SYBENOTIMPL
│ │ │ │ -
165#define SQLENONFLOAT SYBENONFLOAT
│ │ │ │ -
166#define SQLECONNFB SYBECONNFB
│ │ │ │ -
167
│ │ │ │ -
168
│ │ │ │ -
169#define dbfreelogin(x) dbloginfree((x))
│ │ │ │ -
170
│ │ │ │ -
171#define dbprocerrhandle(p, h) dberrhandle((h))
│ │ │ │ -
172#define dbprocmsghandle(p, h) dbmsghandle((h))
│ │ │ │ -
173
│ │ │ │ -
174#define dbwinexit()
│ │ │ │ -
175
│ │ │ │ -
176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 jklowden Exp $";
│ │ │ │ -
177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_unused_sqldb_h_warn };
│ │ │ │ -
178
│ │ │ │ -
179
│ │ │ │ -
180#endif
│ │ │ │ -
Primary include file for db-lib applications.
│ │ │ │ +
1#define FREETDS_SYSCONFDIR "/etc/freetds"
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,192 +1,10 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -sqldb.h │ │ │ │ │ -1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef SQLDB_h │ │ │ │ │ -21#define SQLDB_h │ │ │ │ │ -22 │ │ │ │ │ -23#include "./sybdb.h" │ │ │ │ │ -24 │ │ │ │ │ -25#define SQLCHAR SYBCHAR │ │ │ │ │ -26#define SQLVARCHAR SYBVARCHAR │ │ │ │ │ -27#define SQLINTN SYBINTN │ │ │ │ │ -28#define SQLINT1 SYBINT1 │ │ │ │ │ -29#define SQLINT2 SYBINT2 │ │ │ │ │ -30#define SQLINT4 SYBINT4 │ │ │ │ │ -31#define SQLINT8 SYBINT8 │ │ │ │ │ -32#define SQLFLT8 SYBFLT8 │ │ │ │ │ -33#define SQLDATETIME SYBDATETIME │ │ │ │ │ -34#define SQLBIT SYBBIT │ │ │ │ │ -35#define SQLTEXT SYBTEXT │ │ │ │ │ -36#define SQLIMAGE SYBIMAGE │ │ │ │ │ -37#define SQLMONEY4 SYBMONEY4 │ │ │ │ │ -38#define SQLMONEY SYBMONEY │ │ │ │ │ -39#define SQLDATETIM4 SYBDATETIME4 │ │ │ │ │ -40#define SQLFLT4 SYBREAL │ │ │ │ │ -41#define SQLBINARY SYBBINARY │ │ │ │ │ -42#define SQLVARBINARY SYBVARBINARY │ │ │ │ │ -43#define SQLNUMERIC SYBNUMERIC │ │ │ │ │ -44#define SQLDECIMAL SYBDECIMAL │ │ │ │ │ -45#define SQLFLTN SYBFLTN │ │ │ │ │ -46#define SQLMONEYN SYBMONEYN │ │ │ │ │ -47#define SQLDATETIMN SYBDATETIMN │ │ │ │ │ -48#define SQLVOID SYBVOID │ │ │ │ │ -49 │ │ │ │ │ -50#define SMALLDATETIBIND SMALLDATETIMEBIND │ │ │ │ │ -51 │ │ │ │ │ -52#define DBERRHANDLE_PROC EHANDLEFUNC │ │ │ │ │ -53#define DBMSGHANDLE_PROC MHANDLEFUNC │ │ │ │ │ -54 │ │ │ │ │ -55/* DB-Library errors as defined by Microsoft */ │ │ │ │ │ -56#define SQLEMEM SYBEMEM │ │ │ │ │ -57#define SQLENULL SYBENULL │ │ │ │ │ -58#define SQLENLOG SYBENLOG │ │ │ │ │ -59#define SQLEPWD SYBEPWD │ │ │ │ │ -60#define SQLECONN SYBECONN │ │ │ │ │ -61#define SQLEDDNE SYBEDDNE │ │ │ │ │ -62#define SQLENULLO SYBENULLO │ │ │ │ │ -63#define SQLESMSG SYBESMSG │ │ │ │ │ -64#define SQLEBTOK SYBEBTOK │ │ │ │ │ -65#define SQLENSPE SYBENSPE │ │ │ │ │ -66#define SQLEREAD SYBEREAD │ │ │ │ │ -67#define SQLECNOR SYBECNOR │ │ │ │ │ -68#define SQLETSIT SYBETSIT │ │ │ │ │ -69#define SQLEPARM SYBEPARM │ │ │ │ │ -70#define SQLEAUTN SYBEAUTN │ │ │ │ │ -71#define SQLECOFL SYBECOFL │ │ │ │ │ -72#define SQLERDCN SYBERDCN │ │ │ │ │ -73#define SQLEICN SYBEICN │ │ │ │ │ -74#define SQLECLOS SYBECLOS │ │ │ │ │ -75#define SQLENTXT SYBENTXT │ │ │ │ │ -76#define SQLEDNTI SYBEDNTI │ │ │ │ │ -77#define SQLETMTD SYBETMTD │ │ │ │ │ -78#define SQLEASEC SYBEASEC │ │ │ │ │ -79#define SQLENTLL SYBENTLL │ │ │ │ │ -80#define SQLETIME SYBETIME │ │ │ │ │ -81#define SQLEWRIT SYBEWRIT │ │ │ │ │ -82#define SQLEMODE SYBEMODE │ │ │ │ │ -83#define SQLEOOB SYBEOOB │ │ │ │ │ -84#define SQLEITIM SYBEITIM │ │ │ │ │ -85#define SQLEDBPS SYBEDBPS │ │ │ │ │ -86#define SQLEIOPT SYBEIOPT │ │ │ │ │ -87#define SQLEASNL SYBEASNL │ │ │ │ │ -88#define SQLEASUL SYBEASUL │ │ │ │ │ -89#define SQLENPRM SYBENPRM │ │ │ │ │ -90#define SQLEDBOP SYBEDBOP │ │ │ │ │ -91#define SQLENSIP SYBENSIP │ │ │ │ │ -92#define SQLECNULL SYBECNULL │ │ │ │ │ -93#define SQLESEOF SYBESEOF │ │ │ │ │ -94#define SQLERPND SYBERPND │ │ │ │ │ -95#define SQLECSYN SYBECSYN │ │ │ │ │ -96#define SQLENONET SYBENONET │ │ │ │ │ -97#define SQLEBTYP SYBEBTYP │ │ │ │ │ -98#define SQLEABNC SYBEABNC │ │ │ │ │ -99#define SQLEABMT SYBEABMT │ │ │ │ │ -100#define SQLEABNP SYBEABNP │ │ │ │ │ -101#define SQLEBNCR SYBEBNCR │ │ │ │ │ -102#define SQLEAAMT SYBEAAMT │ │ │ │ │ -103#define SQLENXID SYBENXID │ │ │ │ │ -104#define SQLEIFNB SYBEIFNB │ │ │ │ │ -105#define SQLEKBCO SYBEKBCO │ │ │ │ │ -106#define SQLEBBCI SYBEBBCI │ │ │ │ │ -107#define SQLEKBCI SYBEKBCI │ │ │ │ │ -108#define SQLEBCWE SYBEBCWE │ │ │ │ │ -109#define SQLEBCNN SYBEBCNN │ │ │ │ │ -110#define SQLEBCOR SYBEBCOR │ │ │ │ │ -111#define SQLEBCPI SYBEBCPI │ │ │ │ │ -112#define SQLEBCPN SYBEBCPN │ │ │ │ │ -113#define SQLEBCPB SYBEBCPB │ │ │ │ │ -114#define SQLEVDPT SYBEVDPT │ │ │ │ │ -115#define SQLEBIVI SYBEBIVI │ │ │ │ │ -116#define SQLEBCBC SYBEBCBC │ │ │ │ │ -117#define SQLEBCFO SYBEBCFO │ │ │ │ │ -118#define SQLEBCVH SYBEBCVH │ │ │ │ │ -119#define SQLEBCUO SYBEBCUO │ │ │ │ │ -120#define SQLEBUOE SYBEBUOE │ │ │ │ │ -121#define SQLEBWEF SYBEBWEF │ │ │ │ │ -122#define SQLEBTMT SYBEBTMT │ │ │ │ │ -123#define SQLEBEOF SYBEBEOF │ │ │ │ │ -124#define SQLEBCSI SYBEBCSI │ │ │ │ │ -125#define SQLEPNUL SYBEPNUL │ │ │ │ │ -126#define SQLEBSKERR SYBEBSKERR │ │ │ │ │ -127#define SQLEBDIO SYBEBDIO │ │ │ │ │ -128#define SQLEBCNT SYBEBCNT │ │ │ │ │ -129#define SQLEMDBP SYBEMDBP │ │ │ │ │ -130#define SQLINIT SYBINIT │ │ │ │ │ -131#define SQLCRSINV SYBCRSINV │ │ │ │ │ -132#define SQLCRSCMD SYBCRSCMD │ │ │ │ │ -133#define SQLCRSNOIND SYBCRSNOIND │ │ │ │ │ -134#define SQLCRSDIS SYBCRSDIS │ │ │ │ │ -135#define SQLCRSAGR SYBCRSAGR │ │ │ │ │ -136#define SQLCRSORD SYBCRSORD │ │ │ │ │ -137#define SQLCRSMEM SYBCRSMEM │ │ │ │ │ -138#define SQLCRSBSKEY SYBCRSBSKEY │ │ │ │ │ -139#define SQLCRSNORES SYBCRSNORES │ │ │ │ │ -140#define SQLCRSVIEW SYBCRSVIEW │ │ │ │ │ -141#define SQLCRSBUFR SYBCRSBUFR │ │ │ │ │ -142#define SQLCRSFROWN SYBCRSFROWN │ │ │ │ │ -143#define SQLCRSBROL SYBCRSBROL │ │ │ │ │ -144#define SQLCRSFRAND SYBCRSFRAND │ │ │ │ │ -145#define SQLCRSFLAST SYBCRSFLAST │ │ │ │ │ -146#define SQLCRSRO SYBCRSRO │ │ │ │ │ -147#define SQLCRSTAB SYBCRSTAB │ │ │ │ │ -148#define SQLCRSUPDTAB SYBCRSUPDTAB │ │ │ │ │ -149#define SQLCRSUPDNB SYBCRSUPDNB │ │ │ │ │ -150#define SQLCRSVIIND SYBCRSVIIND │ │ │ │ │ -151#define SQLCRSNOUPD SYBCRSNOUPD │ │ │ │ │ -152#define SQLCRSOS SYBCRSOS │ │ │ │ │ -153#define SQLEBCSA SYBEBCSA │ │ │ │ │ -154#define SQLEBCRO SYBEBCRO │ │ │ │ │ -155#define SQLEBCNE SYBEBCNE │ │ │ │ │ -156#define SQLEBCSK SYBEBCSK │ │ │ │ │ -157#define SQLEUVBF SYBEUVBF │ │ │ │ │ -158#define SQLEBIHC SYBEBIHC │ │ │ │ │ -159#define SQLEBWFF SYBEBWFF │ │ │ │ │ -160#define SQLNUMVAL SYBNUMVAL │ │ │ │ │ -161#define SQLEOLDVR SYBEOLDVR │ │ │ │ │ -162#define SQLEBCPS SYBEBCPS │ │ │ │ │ -163#define SQLEDTC SYBEDTC │ │ │ │ │ -164#define SQLENOTIMPL SYBENOTIMPL │ │ │ │ │ -165#define SQLENONFLOAT SYBENONFLOAT │ │ │ │ │ -166#define SQLECONNFB SYBECONNFB │ │ │ │ │ -167 │ │ │ │ │ -168 │ │ │ │ │ -169#define dbfreelogin(x) dbloginfree((x)) │ │ │ │ │ -170 │ │ │ │ │ -171#define dbprocerrhandle(p, h) dberrhandle((h)) │ │ │ │ │ -172#define dbprocmsghandle(p, h) dbmsghandle((h)) │ │ │ │ │ -173 │ │ │ │ │ -174#define dbwinexit() │ │ │ │ │ -175 │ │ │ │ │ -176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 │ │ │ │ │ -jklowden Exp $"; │ │ │ │ │ -177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_ │ │ │ │ │ -unused_sqldb_h_warn }; │ │ │ │ │ -178 │ │ │ │ │ -179 │ │ │ │ │ -180#endif │ │ │ │ │ -sybdb.h │ │ │ │ │ -Primary include file for db-lib applications. │ │ │ │ │ + * freetds │ │ │ │ │ +sysconfdir.h │ │ │ │ │ +1#define FREETDS_SYSCONFDIR "/etc/freetds" │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00524_source.html │ │ │ │ @@ -99,15 +99,15 @@ │ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │
20#ifndef _tdsguard_gH4tOYBTzynx4DgqFzOEbB_
│ │ │ │
21#define _tdsguard_gH4tOYBTzynx4DgqFzOEbB_
│ │ │ │
22
│ │ │ │ -
23#include <freetds/tds.h>
│ │ │ │ +
23#include <freetds/tds.h>
│ │ │ │
24#include <freetds/convert.h>
│ │ │ │
25#include <freetds/utils/string.h>
│ │ │ │
26#include <freetds/bool.h>
│ │ │ │
27
│ │ │ │
28/*
│ │ │ │
29 * Internal (not part of the exposed API) prototypes and such.
│ │ │ │
30 */
│ │ │ │ @@ -538,15 +538,15 @@ │ │ │ │
413#endif
│ │ │ │
414}
│ │ │ │
415#endif
│ │ │ │
416
│ │ │ │
417#include <freetds/popvis.h>
│ │ │ │
418
│ │ │ │
419#endif
│ │ │ │ -
Main include file for libtds.
│ │ │ │ +
Main include file for libtds.
│ │ │ │
Definition cstypes.h:102
│ │ │ │
Definition cstypes.h:119
│ │ │ │
Definition cstypes.h:186
│ │ │ │
Definition cstypes.h:200
│ │ │ │
Definition ctlib.h:49
│ │ │ │
Definition ctlib.h:60
│ │ │ │
Definition ctlib.h:65
│ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00527_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/cspublic.h Source File │ │ │ │ +FreeTDS API: include/syberror.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,19 +74,19 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
cspublic.h
│ │ │ │ +
syberror.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │ -
2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
│ │ │ │ +
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │
3 *
│ │ │ │
4 * This library is free software; you can redistribute it and/or
│ │ │ │
5 * modify it under the terms of the GNU Library General Public
│ │ │ │
6 * License as published by the Free Software Foundation; either
│ │ │ │
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │
8 *
│ │ │ │
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ @@ -96,851 +96,49 @@ │ │ │ │
13 *
│ │ │ │
14 * You should have received a copy of the GNU Library General Public
│ │ │ │
15 * License along with this library; if not, write to the
│ │ │ │
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │
17 * Boston, MA 02111-1307, USA.
│ │ │ │
18 */
│ │ │ │
19
│ │ │ │ -
20#ifndef _cspublic_h_
│ │ │ │ -
21#define _cspublic_h_
│ │ │ │ +
20#ifndef _syberror_h_
│ │ │ │ +
21#define _syberror_h_
│ │ │ │
22
│ │ │ │ -
23#include <cstypes.h>
│ │ │ │ -
24
│ │ │ │ -
25#undef TDS_STATIC_CAST
│ │ │ │ -
26#ifdef __cplusplus
│ │ │ │ -
27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ -
28extern "C"
│ │ │ │ -
29{
│ │ │ │ -
30#if 0
│ │ │ │ -
31}
│ │ │ │ -
32#endif
│ │ │ │ -
33#else
│ │ │ │ -
34#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ -
35#endif
│ │ │ │ -
36
│ │ │ │ -
37#define CS_PUBLIC
│ │ │ │ -
38#define CS_STATIC static
│ │ │ │ -
39
│ │ │ │ -
40#define CS_SUCCEED 1
│ │ │ │ -
41#define CS_FAIL 0
│ │ │ │ -
42#define CS_MEM_ERROR -1
│ │ │ │ -
43#define CS_PENDING -2
│ │ │ │ -
44#define CS_QUIET -3
│ │ │ │ -
45#define CS_BUSY -4
│ │ │ │ -
46#define CS_INTERRUPT -5
│ │ │ │ -
47#define CS_BLK_HAS_TEXT -6
│ │ │ │ -
48#define CS_CONTINUE -7
│ │ │ │ -
49#define CS_FATAL -8
│ │ │ │ -
50#define CS_RET_HAFAILOVER -9
│ │ │ │ -
51#define CS_UNSUPPORTED -10
│ │ │ │ -
52
│ │ │ │ -
53#define CS_CANCELED -202
│ │ │ │ -
54#define CS_ROW_FAIL -203
│ │ │ │ -
55#define CS_END_DATA -204
│ │ │ │ -
56#define CS_END_RESULTS -205
│ │ │ │ -
57#define CS_END_ITEM -206
│ │ │ │ -
58#define CS_NOMSG -207
│ │ │ │ -
59#define CS_TIMED_OUT -208
│ │ │ │ -
60
│ │ │ │ -
61#define CS_SIZEOF(x) sizeof(x)
│ │ │ │ -
62
│ │ │ │ -
63#define CS_LAYER(x) (((x) >> 24) & 0xFF)
│ │ │ │ -
64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)
│ │ │ │ -
65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)
│ │ │ │ -
66#define CS_NUMBER(x) ((x) & 0xFF)
│ │ │ │ -
67
│ │ │ │ -
68/* forward declarations */
│ │ │ │ -
69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
│ │ │ │ -
70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
│ │ │ │ -
71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
│ │ │ │ -
72typedef CS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION *);
│ │ │ │ -
73
│ │ │ │ -
74
│ │ │ │ -
75#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
│ │ │ │ -
76#define CS_SRC_VALUE -2562
│ │ │ │ -
77
│ │ │ │ -
78
│ │ │ │ -
79
│ │ │ │ -
80/* status bits for CS_SERVERMSG */
│ │ │ │ -
81#define CS_HASEED 0x01
│ │ │ │ -
82
│ │ │ │ -
83typedef struct _cs_blkdesc CS_BLKDESC;
│ │ │ │ -
84
│ │ │ │ -
85/* CS_CAP_REQUEST values */
│ │ │ │ -
86#define CS_REQ_LANG 1
│ │ │ │ -
87#define CS_REQ_RPC 2
│ │ │ │ -
88#define CS_REQ_NOTIF 3
│ │ │ │ -
89#define CS_REQ_MSTMT 4
│ │ │ │ -
90#define CS_REQ_BCP 5
│ │ │ │ -
91#define CS_REQ_CURSOR 6
│ │ │ │ -
92#define CS_REQ_DYN 7
│ │ │ │ -
93#define CS_REQ_MSG 8
│ │ │ │ -
94#define CS_REQ_PARAM 9
│ │ │ │ -
95#define CS_DATA_INT1 10
│ │ │ │ -
96#define CS_DATA_INT2 11
│ │ │ │ -
97#define CS_DATA_INT4 12
│ │ │ │ -
98#define CS_DATA_BIT 13
│ │ │ │ -
99#define CS_DATA_CHAR 14
│ │ │ │ -
100#define CS_DATA_VCHAR 15
│ │ │ │ -
101#define CS_DATA_BIN 16
│ │ │ │ -
102#define CS_DATA_VBIN 17
│ │ │ │ -
103#define CS_DATA_MNY8 18
│ │ │ │ -
104#define CS_DATA_MNY4 19
│ │ │ │ -
105#define CS_DATA_DATE8 20
│ │ │ │ -
106#define CS_DATA_DATE4 21
│ │ │ │ -
107#define CS_DATA_FLT4 22
│ │ │ │ -
108#define CS_DATA_FLT8 23
│ │ │ │ -
109#define CS_DATA_NUM 24
│ │ │ │ -
110#define CS_DATA_TEXT 25
│ │ │ │ -
111#define CS_DATA_IMAGE 26
│ │ │ │ -
112#define CS_DATA_DEC 27
│ │ │ │ -
113#define CS_DATA_LCHAR 28
│ │ │ │ -
114#define CS_DATA_LBIN 29
│ │ │ │ -
115#define CS_DATA_INTN 30
│ │ │ │ -
116#define CS_DATA_DATETIMEN 31
│ │ │ │ -
117#define CS_DATA_MONEYN 32
│ │ │ │ -
118#define CS_CSR_PREV 33
│ │ │ │ -
119#define CS_CSR_FIRST 34
│ │ │ │ -
120#define CS_CSR_LAST 35
│ │ │ │ -
121#define CS_CSR_ABS 36
│ │ │ │ -
122#define CS_CSR_REL 37
│ │ │ │ -
123#define CS_CSR_MULTI 38
│ │ │ │ -
124#define CS_CON_OOB 39
│ │ │ │ -
125#define CS_CON_INBAND 40
│ │ │ │ -
126#define CS_CON_LOGICAL 41
│ │ │ │ -
127#define CS_PROTO_TEXT 42
│ │ │ │ -
128#define CS_PROTO_BULK 43
│ │ │ │ -
129#define CS_REQ_URGNOTIF 44
│ │ │ │ -
130#define CS_DATA_SENSITIVITY 45
│ │ │ │ -
131#define CS_DATA_BOUNDARY 46
│ │ │ │ -
132#define CS_PROTO_DYNAMIC 47
│ │ │ │ -
133#define CS_PROTO_DYNPROC 48
│ │ │ │ -
134#define CS_DATA_FLTN 49
│ │ │ │ -
135#define CS_DATA_BITN 50
│ │ │ │ -
136#define CS_OPTION_GET 51
│ │ │ │ -
137#define CS_DATA_INT8 52
│ │ │ │ -
138#define CS_DATA_VOID 53
│ │ │ │ -
139
│ │ │ │ -
140/* CS_CAP_RESPONSE values */
│ │ │ │ -
141#define CS_RES_NOMSG 1
│ │ │ │ -
142#define CS_RES_NOEED 2
│ │ │ │ -
143#define CS_RES_NOPARAM 3
│ │ │ │ -
144#define CS_DATA_NOINT1 4
│ │ │ │ -
145#define CS_DATA_NOINT2 5
│ │ │ │ -
146#define CS_DATA_NOINT4 6
│ │ │ │ -
147#define CS_DATA_NOBIT 7
│ │ │ │ -
148#define CS_DATA_NOCHAR 8
│ │ │ │ -
149#define CS_DATA_NOVCHAR 9
│ │ │ │ -
150#define CS_DATA_NOBIN 10
│ │ │ │ -
151#define CS_DATA_NOVBIN 11
│ │ │ │ -
152#define CS_DATA_NOMNY8 12
│ │ │ │ -
153#define CS_DATA_NOMNY4 13
│ │ │ │ -
154#define CS_DATA_NODATE8 14
│ │ │ │ -
155#define CS_DATA_NODATE4 15
│ │ │ │ -
156#define CS_DATA_NOFLT4 16
│ │ │ │ -
157#define CS_DATA_NOFLT8 17
│ │ │ │ -
158#define CS_DATA_NONUM 18
│ │ │ │ -
159#define CS_DATA_NOTEXT 19
│ │ │ │ -
160#define CS_DATA_NOIMAGE 20
│ │ │ │ -
161#define CS_DATA_NODEC 21
│ │ │ │ -
162#define CS_DATA_NOLCHAR 22
│ │ │ │ -
163#define CS_DATA_NOLBIN 23
│ │ │ │ -
164#define CS_DATA_NOINTN 24
│ │ │ │ -
165#define CS_DATA_NODATETIMEN 25
│ │ │ │ -
166#define CS_DATA_NOMONEYN 26
│ │ │ │ -
167#define CS_CON_NOOOB 27
│ │ │ │ -
168#define CS_CON_NOINBAND 28
│ │ │ │ -
169#define CS_PROTO_NOTEXT 29
│ │ │ │ -
170#define CS_PROTO_NOBULK 30
│ │ │ │ -
171#define CS_DATA_NOSENSITIVITY 31
│ │ │ │ -
172#define CS_DATA_NOBOUNDARY 32
│ │ │ │ -
173#define CS_RES_NOTDSDEBUG 33
│ │ │ │ -
174#define CS_RES_NOSTRIPBLANKS 34
│ │ │ │ -
175#define CS_DATA_NOINT8 35
│ │ │ │ -
176
│ │ │ │ -
177/* Properties */
│ │ │ │ -
178enum
│ │ │ │ -
179{
│ │ │ │ -
180/*
│ │ │ │ -
181 * These defines looks weird but programs can test support for defines,
│ │ │ │ -
182 * compiler can check enum and there are no define side effecs
│ │ │ │ -
183 */
│ │ │ │ -
184 CS_USERNAME = 9100,
│ │ │ │ -
185#define CS_USERNAME CS_USERNAME
│ │ │ │ -
186 CS_PASSWORD = 9101,
│ │ │ │ -
187#define CS_PASSWORD CS_PASSWORD
│ │ │ │ -
188 CS_APPNAME = 9102,
│ │ │ │ -
189#define CS_APPNAME CS_APPNAME
│ │ │ │ -
190 CS_HOSTNAME = 9103,
│ │ │ │ -
191#define CS_HOSTNAME CS_HOSTNAME
│ │ │ │ -
192 CS_LOGIN_STATUS = 9104,
│ │ │ │ -
193#define CS_LOGIN_STATUS CS_LOGIN_STATUS
│ │ │ │ -
194 CS_TDS_VERSION = 9105,
│ │ │ │ -
195#define CS_TDS_VERSION CS_TDS_VERSION
│ │ │ │ -
196 CS_CHARSETCNV = 9106,
│ │ │ │ -
197#define CS_CHARSETCNV CS_CHARSETCNV
│ │ │ │ -
198 CS_PACKETSIZE = 9107,
│ │ │ │ -
199#define CS_PACKETSIZE CS_PACKETSIZE
│ │ │ │ -
200 CS_USERDATA = 9108,
│ │ │ │ -
201#define CS_USERDATA CS_USERDATA
│ │ │ │ -
202 CS_NETIO = 9110,
│ │ │ │ -
203#define CS_NETIO CS_NETIO
│ │ │ │ -
204 CS_TEXTLIMIT = 9112,
│ │ │ │ -
205#define CS_TEXTLIMIT CS_TEXTLIMIT
│ │ │ │ -
206 CS_HIDDEN_KEYS = 9113,
│ │ │ │ -
207#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
│ │ │ │ -
208 CS_VERSION = 9114,
│ │ │ │ -
209#define CS_VERSION CS_VERSION
│ │ │ │ -
210 CS_IFILE = 9115,
│ │ │ │ -
211#define CS_IFILE CS_IFILE
│ │ │ │ -
212 CS_LOGIN_TIMEOUT = 9116,
│ │ │ │ -
213#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
│ │ │ │ -
214 CS_TIMEOUT = 9117,
│ │ │ │ -
215#define CS_TIMEOUT CS_TIMEOUT
│ │ │ │ -
216 CS_MAX_CONNECT = 9118,
│ │ │ │ -
217#define CS_MAX_CONNECT CS_MAX_CONNECT
│ │ │ │ -
218 CS_EXPOSE_FMTS = 9120,
│ │ │ │ -
219#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
│ │ │ │ -
220 CS_EXTRA_INF = 9121,
│ │ │ │ -
221#define CS_EXTRA_INF CS_EXTRA_INF
│ │ │ │ -
222 CS_ANSI_BINDS = 9123,
│ │ │ │ -
223#define CS_ANSI_BINDS CS_ANSI_BINDS
│ │ │ │ -
224 CS_BULK_LOGIN = 9124,
│ │ │ │ -
225#define CS_BULK_LOGIN CS_BULK_LOGIN
│ │ │ │ -
226 CS_LOC_PROP = 9125,
│ │ │ │ -
227#define CS_LOC_PROP CS_LOC_PROP
│ │ │ │ -
228 CS_PARENT_HANDLE = 9130,
│ │ │ │ -
229#define CS_PARENT_HANDLE CS_PARENT_HANDLE
│ │ │ │ -
230 CS_EED_CMD = 9131,
│ │ │ │ -
231#define CS_EED_CMD CS_EED_CMD
│ │ │ │ -
232 CS_DIAG_TIMEOUT = 9132,
│ │ │ │ -
233#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
│ │ │ │ -
234 CS_DISABLE_POLL = 9133,
│ │ │ │ -
235#define CS_DISABLE_POLL CS_DISABLE_POLL
│ │ │ │ -
236 CS_SEC_ENCRYPTION = 9135,
│ │ │ │ -
237#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
│ │ │ │ -
238 CS_SEC_CHALLENGE = 9136,
│ │ │ │ -
239#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
│ │ │ │ -
240 CS_SEC_NEGOTIATE = 9137,
│ │ │ │ -
241#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
│ │ │ │ -
242 CS_ENDPOINT = 9141,
│ │ │ │ -
243#define CS_ENDPOINT CS_ENDPOINT
│ │ │ │ -
244 CS_CON_STATUS = 9143,
│ │ │ │ -
245#define CS_CON_STATUS CS_CON_STATUS
│ │ │ │ -
246 CS_VER_STRING = 9144,
│ │ │ │ -
247#define CS_VER_STRING CS_VER_STRING
│ │ │ │ -
248 CS_SERVERNAME = 9146,
│ │ │ │ -
249#define CS_SERVERNAME CS_SERVERNAME
│ │ │ │ -
250 CS_SEC_APPDEFINED = 9149,
│ │ │ │ -
251#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
│ │ │ │ -
252 CS_STICKY_BINDS = 9151,
│ │ │ │ -
253#define CS_STICKY_BINDS CS_STICKY_BINDS
│ │ │ │ -
254 CS_SEC_NETWORKAUTH = 9175,
│ │ │ │ -
255#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
│ │ │ │ -
256 CS_SEC_DELEGATION = 9176,
│ │ │ │ -
257#define CS_SEC_DELEGATION CS_SEC_DELEGATION
│ │ │ │ -
258 CS_SEC_MUTUALAUTH = 9177,
│ │ │ │ -
259#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
│ │ │ │ -
260 CS_SEC_SERVERPRINCIPAL = 9188,
│ │ │ │ -
261#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
│ │ │ │ -
262 CS_SERVERADDR = 9206,
│ │ │ │ -
263#define CS_SERVERADDR CS_SERVERADDR
│ │ │ │ -
264/* settings from here are FreeTDS extensions */
│ │ │ │ -
265 CS_PORT = 9300,
│ │ │ │ -
266#define CS_PORT CS_PORT
│ │ │ │ -
267 CS_CLIENTCHARSET = 9301,
│ │ │ │ -
268#define CS_CLIENTCHARSET CS_CLIENTCHARSET
│ │ │ │ -
269 CS_DATABASE = 9302,
│ │ │ │ -
270#define CS_DATABASE CS_DATABASE
│ │ │ │ -
271 CS_NOTE_EMPTY_DATA = 9303,
│ │ │ │ -
272#define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA
│ │ │ │ -
273 CS_PRODUCT_NAME = 9304
│ │ │ │ -
274#define CS_PRODUCT_NAME CS_PRODUCT_NAME
│ │ │ │ -
275};
│ │ │ │ -
276
│ │ │ │ -
277/* Arbitrary precision math operators */
│ │ │ │ -
278enum
│ │ │ │ -
279{
│ │ │ │ -
280 CS_ADD = 1,
│ │ │ │ -
281 CS_SUB,
│ │ │ │ -
282 CS_MULT,
│ │ │ │ -
283 CS_DIV
│ │ │ │ -
284};
│ │ │ │ -
285
│ │ │ │ -
286enum
│ │ │ │ -
287{
│ │ │ │ -
288 CS_TDS_AUTO = 0,
│ │ │ │ -
289#define CS_TDS_AUTO CS_TDS_AUTO
│ │ │ │ -
290 CS_TDS_40 = 7360,
│ │ │ │ -
291#define CS_TDS_40 CS_TDS_40
│ │ │ │ -
292 CS_TDS_42,
│ │ │ │ -
293#define CS_TDS_42 CS_TDS_42
│ │ │ │ -
294 CS_TDS_46,
│ │ │ │ -
295#define CS_TDS_46 CS_TDS_46
│ │ │ │ -
296 CS_TDS_495,
│ │ │ │ -
297#define CS_TDS_495 CS_TDS_495
│ │ │ │ -
298 CS_TDS_50,
│ │ │ │ -
299#define CS_TDS_50 CS_TDS_50
│ │ │ │ -
300 CS_TDS_70,
│ │ │ │ -
301 CS_TDS_71,
│ │ │ │ -
302#define CS_TDS_71 CS_TDS_71
│ │ │ │ -
303 CS_TDS_72,
│ │ │ │ -
304#define CS_TDS_72 CS_TDS_72
│ │ │ │ -
305 CS_TDS_73,
│ │ │ │ -
306#define CS_TDS_73 CS_TDS_73
│ │ │ │ -
307 CS_TDS_74,
│ │ │ │ -
308#define CS_TDS_74 CS_TDS_74
│ │ │ │ -
309 CS_TDS_80,
│ │ │ │ -
310#define CS_TDS_80 CS_TDS_80
│ │ │ │ -
311};
│ │ │ │ -
312
│ │ │ │ -
313/* bit mask values used by CS_DATAFMT.status */
│ │ │ │ -
314#define CS_HIDDEN (1 << 0)
│ │ │ │ -
315#define CS_KEY (1 << 1)
│ │ │ │ -
316#define CS_VERSION_KEY (1 << 2)
│ │ │ │ -
317#define CS_NODATA (1 << 3)
│ │ │ │ -
318#define CS_UPDATABLE (1 << 4)
│ │ │ │ -
319#define CS_CANBENULL (1 << 5)
│ │ │ │ -
320#define CS_DESCIN (1 << 6)
│ │ │ │ -
321#define CS_DESCOUT (1 << 7)
│ │ │ │ -
322#define CS_INPUTVALUE (1 << 8)
│ │ │ │ -
323#define CS_UPDATECOL (1 << 9)
│ │ │ │ -
324#define CS_RETURN (1 << 10)
│ │ │ │ -
325#define CS_TIMESTAMP (1 << 13)
│ │ │ │ -
326#define CS_NODEFAULT (1 << 14)
│ │ │ │ -
327#define CS_IDENTITY (1 << 15)
│ │ │ │ -
328
│ │ │ │ -
329/*
│ │ │ │ -
330 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
│ │ │ │ -
331 * (the documentation states -1)
│ │ │ │ -
332 */
│ │ │ │ -
333#define CS_GOODDATA 0
│ │ │ │ -
334#define CS_NULLDATA (-1)
│ │ │ │ -
335
│ │ │ │ -
336/* CS_CON_STATUS read-only property bit mask values */
│ │ │ │ -
337#define CS_CONSTAT_CONNECTED 0x01
│ │ │ │ -
338#define CS_CONSTAT_DEAD 0x02
│ │ │ │ -
339
│ │ │ │ -
340/*
│ │ │ │ -
341 * Code added for CURSOR support
│ │ │ │ -
342 * types accepted by ct_cursor
│ │ │ │ -
343 */
│ │ │ │ -
344#define CS_CURSOR_DECLARE 700
│ │ │ │ -
345#define CS_CURSOR_OPEN 701
│ │ │ │ -
346#define CS_CURSOR_ROWS 703
│ │ │ │ -
347#define CS_CURSOR_UPDATE 704
│ │ │ │ -
348#define CS_CURSOR_DELETE 705
│ │ │ │ -
349#define CS_CURSOR_CLOSE 706
│ │ │ │ -
350#define CS_CURSOR_DEALLOC 707
│ │ │ │ -
351#define CS_CURSOR_OPTION 725
│ │ │ │ -
352
│ │ │ │ -
353#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
│ │ │ │ -
354#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
│ │ │ │ -
355#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
│ │ │ │ -
356#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
│ │ │ │ -
357
│ │ │ │ -
358
│ │ │ │ -
359#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
│ │ │ │ -
360#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
│ │ │ │ -
361#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
│ │ │ │ -
362#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
│ │ │ │ -
363#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
│ │ │ │ -
364#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
│ │ │ │ -
365#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
│ │ │ │ -
366#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
│ │ │ │ -
367
│ │ │ │ -
368#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
│ │ │ │ -
369#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
│ │ │ │ -
370#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
│ │ │ │ -
371#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
│ │ │ │ -
372
│ │ │ │ -
373/* options accepted by ct_options() */
│ │ │ │ -
374#define CS_OPT_DATEFIRST 5001
│ │ │ │ -
375#define CS_OPT_TEXTSIZE 5002
│ │ │ │ -
376#define CS_OPT_STATS_TIME 5003
│ │ │ │ -
377#define CS_OPT_STATS_IO 5004
│ │ │ │ -
378#define CS_OPT_ROWCOUNT 5005
│ │ │ │ -
379#define CS_OPT_DATEFORMAT 5007
│ │ │ │ -
380#define CS_OPT_ISOLATION 5008
│ │ │ │ -
381#define CS_OPT_AUTHON 5009
│ │ │ │ -
382#define CS_OPT_SHOWPLAN 5013
│ │ │ │ -
383#define CS_OPT_NOEXEC 5014
│ │ │ │ -
384#define CS_OPT_ARITHIGNORE 5015
│ │ │ │ -
385#define CS_OPT_TRUNCIGNORE 5016
│ │ │ │ -
386#define CS_OPT_ARITHABORT 5017
│ │ │ │ -
387#define CS_OPT_PARSEONLY 5018
│ │ │ │ -
388#define CS_OPT_GETDATA 5020
│ │ │ │ -
389#define CS_OPT_NOCOUNT 5021
│ │ │ │ -
390#define CS_OPT_FORCEPLAN 5023
│ │ │ │ -
391#define CS_OPT_FORMATONLY 5024
│ │ │ │ -
392#define CS_OPT_CHAINXACTS 5025
│ │ │ │ -
393#define CS_OPT_CURCLOSEONXACT 5026
│ │ │ │ -
394#define CS_OPT_FIPSFLAG 5027
│ │ │ │ -
395#define CS_OPT_RESTREES 5028
│ │ │ │ -
396#define CS_OPT_IDENTITYON 5029
│ │ │ │ -
397#define CS_OPT_CURREAD 5030
│ │ │ │ -
398#define CS_OPT_CURWRITE 5031
│ │ │ │ -
399#define CS_OPT_IDENTITYOFF 5032
│ │ │ │ -
400#define CS_OPT_AUTHOFF 5033
│ │ │ │ -
401#define CS_OPT_ANSINULL 5034
│ │ │ │ -
402#define CS_OPT_QUOTED_IDENT 5035
│ │ │ │ -
403#define CS_OPT_ANSIPERM 5036
│ │ │ │ -
404#define CS_OPT_STR_RTRUNC 5037
│ │ │ │ -
405
│ │ │ │ -
406/* options accepted by ct_command() */
│ │ │ │ -
407enum ct_command_options
│ │ │ │ -
408{
│ │ │ │ -
409 CS_MORE = 16,
│ │ │ │ -
410#define CS_MORE CS_MORE
│ │ │ │ -
411 CS_END = 32,
│ │ │ │ -
412#define CS_END CS_END
│ │ │ │ -
413 CS_RECOMPILE = 188,
│ │ │ │ -
414#define CS_RECOMPILE CS_RECOMPILE
│ │ │ │ -
415 CS_NO_RECOMPILE,
│ │ │ │ -
416#define CS_NO_RECOMPILE CS_NO_RECOMPILE
│ │ │ │ -
417 CS_BULK_INIT,
│ │ │ │ -
418#define CS_BULK_INIT CS_BULK_INIT
│ │ │ │ -
419 CS_BULK_CONT,
│ │ │ │ -
420#define CS_BULK_CONT CS_BULK_CONT
│ │ │ │ -
421 CS_BULK_DATA,
│ │ │ │ -
422#define CS_BULK_DATA CS_BULK_DATA
│ │ │ │ -
423 CS_COLUMN_DATA
│ │ │ │ -
424#define CS_COLUMN_DATA CS_COLUMN_DATA
│ │ │ │ -
425};
│ │ │ │ -
426
│ │ │ │ -
427
│ │ │ │ -
428/*
│ │ │ │ -
429 * bind formats, should be mapped to TDS types
│ │ │ │ -
430 * can be a combination of bit
│ │ │ │ -
431 */
│ │ │ │ -
432enum
│ │ │ │ -
433{
│ │ │ │ -
434 CS_FMT_UNUSED = 0,
│ │ │ │ -
435#define CS_FMT_UNUSED CS_FMT_UNUSED
│ │ │ │ -
436 CS_FMT_NULLTERM = 1,
│ │ │ │ -
437#define CS_FMT_NULLTERM CS_FMT_NULLTERM
│ │ │ │ -
438 CS_FMT_PADNULL = 2,
│ │ │ │ -
439#define CS_FMT_PADBLANK CS_FMT_PADBLANK
│ │ │ │ -
440 CS_FMT_PADBLANK = 4,
│ │ │ │ -
441#define CS_FMT_PADNULL CS_FMT_PADNULL
│ │ │ │ -
442 CS_FMT_JUSTIFY_RT = 8
│ │ │ │ -
443#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
│ │ │ │ -
444};
│ │ │ │ -
445
│ │ │ │ -
446/* callbacks */
│ │ │ │ -
447#define CS_COMPLETION_CB 1
│ │ │ │ -
448#define CS_SERVERMSG_CB 2
│ │ │ │ -
449#define CS_CLIENTMSG_CB 3
│ │ │ │ -
450#define CS_NOTIF_CB 4
│ │ │ │ -
451#define CS_ENCRYPT_CB 5
│ │ │ │ -
452#define CS_CHALLENGE_CB 6
│ │ │ │ -
453#define CS_DS_LOOKUP_CB 7
│ │ │ │ -
454#define CS_SECSESSION_CB 8
│ │ │ │ -
455#define CS_SIGNAL_CB 100
│ │ │ │ -
456#define CS_MESSAGE_CB 9119
│ │ │ │ -
457#define CS_INTERRUPT_CB 9400
│ │ │ │ -
458
│ │ │ │ -
459/* string types */
│ │ │ │ -
460#define CS_NULLTERM -9
│ │ │ │ -
461#define CS_WILDCARD -99
│ │ │ │ -
462#define CS_NO_LIMIT -9999
│ │ │ │ -
463#define CS_UNUSED -99999
│ │ │ │ -
464
│ │ │ │ -
465/* other */
│ │ │ │ -
466#define CS_GET 33
│ │ │ │ -
467#define CS_SET 34
│ │ │ │ -
468#define CS_CLEAR 35
│ │ │ │ -
469#define CS_INIT 36
│ │ │ │ -
470#define CS_STATUS 37
│ │ │ │ -
471#define CS_MSGLIMIT 38
│ │ │ │ -
472#define CS_SUPPORTED 40
│ │ │ │ -
473
│ │ │ │ -
474#define CS_CMD_DONE 4046
│ │ │ │ -
475#define CS_CMD_SUCCEED 4047
│ │ │ │ -
476#define CS_CMD_FAIL 4048
│ │ │ │ -
477
│ │ │ │ -
478/* commands */
│ │ │ │ -
479#define CS_LANG_CMD 148
│ │ │ │ -
480#define CS_RPC_CMD 149
│ │ │ │ -
481#define CS_SEND_DATA_CMD 151
│ │ │ │ -
482#define CS_SEND_BULK_CMD 153
│ │ │ │ -
483
│ │ │ │ -
484#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
485#define CS_VERSION_100 112
│ │ │ │ -
486#define CS_VERSION_110 1100
│ │ │ │ -
487#define CS_VERSION_120 1100
│ │ │ │ -
488#define CS_VERSION_125 12500
│ │ │ │ -
489#define CS_VERSION_150 15000
│ │ │ │ -
490#else
│ │ │ │ -
491#define CS_VERSION_100 113
│ │ │ │ -
492#define CS_VERSION_110 1101
│ │ │ │ -
493#define CS_VERSION_120 CS_VERSION_110
│ │ │ │ -
494#define CS_VERSION_125 12501
│ │ │ │ -
495#define CS_VERSION_150 15001
│ │ │ │ -
496#define CS_VERSION_155 15501
│ │ │ │ -
497#define CS_VERSION_157 15701
│ │ │ │ -
498#define CS_VERSION_160 16001
│ │ │ │ -
499#endif
│ │ │ │ -
500
│ │ │ │ -
501#define BLK_VERSION_100 CS_VERSION_100
│ │ │ │ -
502#define BLK_VERSION_110 CS_VERSION_110
│ │ │ │ -
503#define BLK_VERSION_120 CS_VERSION_120
│ │ │ │ -
504#define BLK_VERSION_125 CS_VERSION_125
│ │ │ │ -
505#define BLK_VERSION_150 CS_VERSION_150
│ │ │ │ -
506#ifndef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
507#define BLK_VERSION_155 CS_VERSION_155
│ │ │ │ -
508#define BLK_VERSION_157 CS_VERSION_157
│ │ │ │ -
509#define BLK_VERSION_160 CS_VERSION_160
│ │ │ │ -
510#endif
│ │ │ │ -
511
│ │ │ │ -
512#define CS_FORCE_EXIT 300
│ │ │ │ -
513#define CS_FORCE_CLOSE 301
│ │ │ │ -
514
│ │ │ │ -
515#define CS_SYNC_IO 8111
│ │ │ │ -
516#define CS_ASYNC_IO 8112
│ │ │ │ -
517#define CS_DEFER_IO 8113
│ │ │ │ -
518
│ │ │ │ -
519#define CS_CANCEL_CURRENT 6000
│ │ │ │ -
520#define CS_CANCEL_ALL 6001
│ │ │ │ -
521#define CS_CANCEL_ATTN 6002
│ │ │ │ -
522
│ │ │ │ -
523#define CS_ROW_COUNT 800
│ │ │ │ -
524#define CS_CMD_NUMBER 801
│ │ │ │ -
525#define CS_NUM_COMPUTES 802
│ │ │ │ -
526#define CS_NUMDATA 803
│ │ │ │ -
527#define CS_NUMORDERCOLS 805
│ │ │ │ -
528#define CS_MSGTYPE 806
│ │ │ │ -
529#define CS_BROWSE_INFO 807
│ │ │ │ -
530#define CS_TRANS_STATE 808
│ │ │ │ -
531
│ │ │ │ -
532#define CS_TRAN_UNDEFINED 0
│ │ │ │ -
533#define CS_TRAN_IN_PROGRESS 1
│ │ │ │ -
534#define CS_TRAN_COMPLETED 2
│ │ │ │ -
535#define CS_TRAN_FAIL 3
│ │ │ │ -
536#define CS_TRAN_STMT_FAIL 4
│ │ │ │ -
537
│ │ │ │ -
538#define CS_COMP_OP 5350
│ │ │ │ -
539#define CS_COMP_ID 5351
│ │ │ │ -
540#define CS_COMP_COLID 5352
│ │ │ │ -
541#define CS_COMP_BYLIST 5353
│ │ │ │ -
542#define CS_BYLIST_LEN 5354
│ │ │ │ -
543
│ │ │ │ -
544#define CS_NO_COUNT -1
│ │ │ │ -
545
│ │ │ │ -
546#define CS_OP_SUM 5370
│ │ │ │ -
547#define CS_OP_AVG 5371
│ │ │ │ -
548#define CS_OP_COUNT 5372
│ │ │ │ -
549#define CS_OP_MIN 5373
│ │ │ │ -
550#define CS_OP_MAX 5374
│ │ │ │ -
551
│ │ │ │ -
552#define CS_CAP_REQUEST 1
│ │ │ │ -
553#define CS_CAP_RESPONSE 2
│ │ │ │ -
554
│ │ │ │ -
555#define CS_PREPARE 717
│ │ │ │ -
556#define CS_EXECUTE 718
│ │ │ │ -
557#define CS_DESCRIBE_INPUT 720
│ │ │ │ -
558#define CS_DESCRIBE_OUTPUT 721
│ │ │ │ -
559
│ │ │ │ -
560#define CS_DEALLOC 711
│ │ │ │ -
561
│ │ │ │ -
562#define CS_LC_ALL 7
│ │ │ │ -
563#define CS_SYB_LANG 8
│ │ │ │ -
564#define CS_SYB_CHARSET 9
│ │ │ │ -
565#define CS_SYB_SORTORDER 10
│ │ │ │ -
566#define CS_SYB_COLLATE CS_SYB_SORTORDER
│ │ │ │ -
567#define CS_SYB_LANG_CHARSET 11
│ │ │ │ -
568
│ │ │ │ -
569#define CS_BLK_IN 1
│ │ │ │ -
570#define CS_BLK_OUT 2
│ │ │ │ -
571
│ │ │ │ -
572#define CS_BLK_BATCH 1
│ │ │ │ -
573#define CS_BLK_ALL 2
│ │ │ │ -
574#define CS_BLK_CANCEL 3
│ │ │ │ -
575
│ │ │ │ -
576/* to do support these */
│ │ │ │ -
577
│ │ │ │ -
578#define CS_BLK_ARRAY_MAXLEN 0x1000
│ │ │ │ -
579#define CS_DEF_PREC 18
│ │ │ │ -
580
│ │ │ │ -
581/* Error Severities */
│ │ │ │ -
582#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ -
583#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ -
584#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ -
585#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ -
586#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ -
587#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ -
588#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ -
589#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ -
590
│ │ │ │ -
591/* result_types */
│ │ │ │ -
592#define CS_ROW_RESULT 4040
│ │ │ │ -
593#define CS_CURSOR_RESULT 4041
│ │ │ │ -
594#define CS_PARAM_RESULT 4042
│ │ │ │ -
595#define CS_STATUS_RESULT 4043
│ │ │ │ -
596#define CS_MSG_RESULT 4044
│ │ │ │ -
597#define CS_COMPUTE_RESULT 4045
│ │ │ │ -
598#define CS_ROWFMT_RESULT 4049
│ │ │ │ -
599#define CS_COMPUTEFMT_RESULT 4050
│ │ │ │ -
600#define CS_DESCRIBE_RESULT 4051
│ │ │ │ -
601
│ │ │ │ -
602/* bind types */
│ │ │ │ -
603#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
│ │ │ │ -
604#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ -
605#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ -
606#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ -
607#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ -
608#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ -
609#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ -
610#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ -
611#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ -
612#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
│ │ │ │ -
613#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
│ │ │ │ -
614#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
│ │ │ │ -
615#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
│ │ │ │ -
616#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
│ │ │ │ -
617#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
│ │ │ │ -
618#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
│ │ │ │ -
619#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
│ │ │ │ -
620#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
│ │ │ │ -
621#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
│ │ │ │ -
622#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
│ │ │ │ -
623#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
│ │ │ │ -
624#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
│ │ │ │ -
625#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
│ │ │ │ -
626#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
│ │ │ │ -
627#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
│ │ │ │ -
628#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
│ │ │ │ -
629#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
│ │ │ │ -
630#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
│ │ │ │ -
631#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
│ │ │ │ -
632#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
│ │ │ │ -
633#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
│ │ │ │ -
634#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
│ │ │ │ -
635#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
│ │ │ │ -
636#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
│ │ │ │ -
637#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
│ │ │ │ -
638#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
│ │ │ │ -
639#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
│ │ │ │ -
640#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
│ │ │ │ -
641#define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37)
│ │ │ │ -
642#define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38)
│ │ │ │ -
643#define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39)
│ │ │ │ -
644#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
│ │ │ │ -
645
│ │ │ │ -
646#define CS_MIN_SYBTYPE CS_CHAR_TYPE
│ │ │ │ -
647#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
│ │ │ │ -
648
│ │ │ │ -
649#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
│ │ │ │ -
650/* cs_dt_info type values */
│ │ │ │ -
651enum
│ │ │ │ -
652{
│ │ │ │ -
653 CS_MONTH = 7340,
│ │ │ │ -
654#define CS_MONTH CS_MONTH
│ │ │ │ -
655 CS_SHORTMONTH,
│ │ │ │ -
656#define CS_SHORTMONTH CS_SHORTMONTH
│ │ │ │ -
657 CS_DAYNAME,
│ │ │ │ -
658#define CS_DAYNAME CS_DAYNAME
│ │ │ │ -
659 CS_DATEORDER,
│ │ │ │ -
660#define CS_DATEORDER CS_DATEORDER
│ │ │ │ -
661 CS_12HOUR,
│ │ │ │ -
662#define CS_12HOUR CS_12HOUR
│ │ │ │ -
663 CS_DT_CONVFMT
│ │ │ │ -
664#define CS_DT_CONVFMT CS_DT_CONVFMT
│ │ │ │ -
665};
│ │ │ │ -
666
│ │ │ │ -
667/* DT_CONVFMT types */
│ │ │ │ -
668enum
│ │ │ │ -
669{
│ │ │ │ -
670 CS_DATES_SHORT = 0,
│ │ │ │ -
671#define CS_DATES_SHORT CS_DATES_SHORT
│ │ │ │ -
672 CS_DATES_MDY1,
│ │ │ │ -
673#define CS_DATES_MDY1 CS_DATES_MDY1
│ │ │ │ -
674 CS_DATES_YMD1,
│ │ │ │ -
675#define CS_DATES_YMD1 CS_DATES_YMD1
│ │ │ │ -
676 CS_DATES_DMY1,
│ │ │ │ -
677#define CS_DATES_DMY1 CS_DATES_DMY1
│ │ │ │ -
678 CS_DATES_DMY2,
│ │ │ │ -
679#define CS_DATES_DMY2 CS_DATES_DMY2
│ │ │ │ -
680 CS_DATES_DMY3,
│ │ │ │ -
681#define CS_DATES_DMY3 CS_DATES_DMY3
│ │ │ │ -
682 CS_DATES_DMY4,
│ │ │ │ -
683#define CS_DATES_DMY4 CS_DATES_DMY4
│ │ │ │ -
684 CS_DATES_MDY2,
│ │ │ │ -
685#define CS_DATES_MDY2 CS_DATES_MDY2
│ │ │ │ -
686 CS_DATES_HMS,
│ │ │ │ -
687#define CS_DATES_HMS CS_DATES_HMS
│ │ │ │ -
688 CS_DATES_LONG,
│ │ │ │ -
689#define CS_DATES_LONG CS_DATES_LONG
│ │ │ │ -
690 CS_DATES_MDY3,
│ │ │ │ -
691#define CS_DATES_MDY3 CS_DATES_MDY3
│ │ │ │ -
692 CS_DATES_YMD2,
│ │ │ │ -
693#define CS_DATES_YMD2 CS_DATES_YMD2
│ │ │ │ -
694 CS_DATES_YMD3,
│ │ │ │ -
695#define CS_DATES_YMD3 CS_DATES_YMD3
│ │ │ │ -
696 CS_DATES_YDM1,
│ │ │ │ -
697#define CS_DATES_YDM1 CS_DATES_YDM1
│ │ │ │ -
698 CS_DATES_MYD1,
│ │ │ │ -
699#define CS_DATES_MYD1 CS_DATES_MYD1
│ │ │ │ -
700 CS_DATES_DYM1,
│ │ │ │ -
701#define CS_DATES_DYM1 CS_DATES_DYM1
│ │ │ │ -
702 CS_DATES_MDY1_YYYY = 101,
│ │ │ │ -
703#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
│ │ │ │ -
704 CS_DATES_YMD1_YYYY,
│ │ │ │ -
705#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
│ │ │ │ -
706 CS_DATES_DMY1_YYYY,
│ │ │ │ -
707#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
│ │ │ │ -
708 CS_DATES_DMY2_YYYY,
│ │ │ │ -
709#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
│ │ │ │ -
710 CS_DATES_DMY3_YYYY,
│ │ │ │ -
711#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
│ │ │ │ -
712 CS_DATES_DMY4_YYYY,
│ │ │ │ -
713#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
│ │ │ │ -
714 CS_DATES_MDY2_YYYY,
│ │ │ │ -
715#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
│ │ │ │ -
716 CS_DATES_MDY3_YYYY = 110,
│ │ │ │ -
717#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
│ │ │ │ -
718 CS_DATES_YMD2_YYYY,
│ │ │ │ -
719#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
│ │ │ │ -
720 CS_DATES_YMD3_YYYY
│ │ │ │ -
721#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
│ │ │ │ -
722};
│ │ │ │ -
723
│ │ │ │ -
724typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
│ │ │ │ -
725 CS_INT * destlen);
│ │ │ │ -
726
│ │ │ │ -
│ │ │ │ -
727typedef struct _cs_objname
│ │ │ │ -
728{
│ │ │ │ -
729 CS_BOOL thinkexists;
│ │ │ │ -
730 CS_INT object_type;
│ │ │ │ -
731#ifdef CS_NO_LARGE_IDENTIFIERS
│ │ │ │ -
732 CS_CHAR last_name[CS_MAX_NAME];
│ │ │ │ -
733 CS_INT lnlen;
│ │ │ │ -
734 CS_CHAR first_name[CS_MAX_NAME];
│ │ │ │ -
735#else
│ │ │ │ -
736 CS_CHAR last_name[CS_MAX_CHAR];
│ │ │ │ -
737 CS_INT lnlen;
│ │ │ │ -
738 CS_CHAR first_name[CS_MAX_CHAR];
│ │ │ │ -
739#endif
│ │ │ │ -
740 CS_INT fnlen;
│ │ │ │ -
741 CS_VOID *scope;
│ │ │ │ -
742 CS_INT scopelen;
│ │ │ │ -
743 CS_VOID *thread;
│ │ │ │ -
744 CS_INT threadlen;
│ │ │ │ -
745} CS_OBJNAME;
│ │ │ │ -
│ │ │ │ -
746
│ │ │ │ -
│ │ │ │ -
747typedef struct _cs_objdata
│ │ │ │ -
748{
│ │ │ │ -
749 CS_BOOL actuallyexists;
│ │ │ │ -
750 CS_CONNECTION *connection;
│ │ │ │ -
751 CS_COMMAND *command;
│ │ │ │ -
752 CS_VOID *buffer;
│ │ │ │ -
753 CS_INT buflen;
│ │ │ │ -
754} CS_OBJDATA;
│ │ │ │ -
│ │ │ │ -
755
│ │ │ │ -
756/* Eventually, these should be in terms of TDS values */
│ │ │ │ -
757enum
│ │ │ │ -
758{
│ │ │ │ -
759 CS_OPT_MONDAY = 1,
│ │ │ │ -
760 CS_OPT_TUESDAY,
│ │ │ │ -
761 CS_OPT_WEDNESDAY,
│ │ │ │ -
762 CS_OPT_THURSDAY,
│ │ │ │ -
763 CS_OPT_FRIDAY,
│ │ │ │ -
764 CS_OPT_SATURDAY,
│ │ │ │ -
765 CS_OPT_SUNDAY
│ │ │ │ -
766};
│ │ │ │ -
767enum
│ │ │ │ -
768{
│ │ │ │ -
769 CS_OPT_FMTMDY = 1,
│ │ │ │ -
770 CS_OPT_FMTDMY,
│ │ │ │ -
771 CS_OPT_FMTYMD,
│ │ │ │ -
772 CS_OPT_FMTYDM,
│ │ │ │ -
773 CS_OPT_FMTMYD,
│ │ │ │ -
774 CS_OPT_FMTDYM
│ │ │ │ -
775};
│ │ │ │ -
776enum
│ │ │ │ -
777{
│ │ │ │ -
778 CS_OPT_LEVEL0 = 0,
│ │ │ │ -
779 CS_OPT_LEVEL1,
│ │ │ │ -
780 CS_OPT_LEVEL2,
│ │ │ │ -
781 CS_OPT_LEVEL3
│ │ │ │ -
782};
│ │ │ │ -
783
│ │ │ │ -
784#define CS_FALSE 0
│ │ │ │ -
785#define CS_TRUE 1
│ │ │ │ -
786
│ │ │ │ -
787#define SRV_PROC CS_VOID
│ │ │ │ -
788
│ │ │ │ -
789/* constants required for ct_diag (not jet implemented) */
│ │ │ │ -
790#define CS_CLIENTMSG_TYPE 4700
│ │ │ │ -
791#define CS_SERVERMSG_TYPE 4701
│ │ │ │ -
792#define CS_ALLMSG_TYPE 4702
│ │ │ │ -
793
│ │ │ │ -
794/* CS_INTERRUPT_CB return values */
│ │ │ │ -
795#define CS_INT_CONTINUE 1
│ │ │ │ -
796#define CS_INT_CANCEL 2
│ │ │ │ -
797#define CS_INT_TIMEOUT 3
│ │ │ │ -
798
│ │ │ │ -
799CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
│ │ │ │ -
800 CS_INT * resultlen);
│ │ │ │ -
801CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
│ │ │ │ -
802CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
│ │ │ │ -
803CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
│ │ │ │ -
804CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
805CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
│ │ │ │ -
806 CS_CHAR * formats, CS_INT formatlen, ...);
│ │ │ │ -
807#undef cs_dt_crack
│ │ │ │ -
808CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
│ │ │ │ -
809CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
│ │ │ │ -
810#define cs_dt_crack cs_dt_crack_v2
│ │ │ │ -
811CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
│ │ │ │ -
812CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
│ │ │ │ -
813CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
│ │ │ │ -
814 CS_INT * outlen);
│ │ │ │ -
815CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
│ │ │ │ -
816 CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
817
│ │ │ │ -
818CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
│ │ │ │ -
819CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
│ │ │ │ -
820CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
│ │ │ │ -
821CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
│ │ │ │ -
822CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
│ │ │ │ -
823 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
│ │ │ │ -
824CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
│ │ │ │ -
825CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
│ │ │ │ -
826CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
│ │ │ │ -
827CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
│ │ │ │ -
828 CS_INT * result);
│ │ │ │ -
829CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
│ │ │ │ -
830CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
│ │ │ │ -
831
│ │ │ │ -
832const char * cs_prretcode(int retcode);
│ │ │ │ -
833
│ │ │ │ -
834#ifdef __cplusplus
│ │ │ │ -
835#if 0
│ │ │ │ -
836{
│ │ │ │ -
837#endif
│ │ │ │ -
838}
│ │ │ │ -
839#endif
│ │ │ │ -
840
│ │ │ │ -
841#endif
│ │ │ │ -
Definition cspublic.h:728
│ │ │ │ -
Definition cspublic.h:748
│ │ │ │ -
Definition cstypes.h:119
│ │ │ │ -
Definition cstypes.h:168
│ │ │ │ -
Definition cstypes.h:186
│ │ │ │ -
Definition cstypes.h:200
│ │ │ │ -
Definition ctlib.h:135
│ │ │ │ -
Definition ctlib.h:188
│ │ │ │ -
Definition ctlib.h:284
│ │ │ │ -
Definition ctlib.h:311
│ │ │ │ -
Definition ctlib.h:320
│ │ │ │ +
23#ifdef __cplusplus
│ │ │ │ +
24extern "C"
│ │ │ │ +
25{
│ │ │ │ +
26#if 0
│ │ │ │ +
27}
│ │ │ │ +
28#endif
│ │ │ │ +
29#endif
│ │ │ │ +
30
│ │ │ │ +
31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12:42:12 freddy77 Exp $";
│ │ │ │ +
32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, no_unused_syberror_h_warn };
│ │ │ │ +
33
│ │ │ │ +
34/* severity levels, gleaned from google */
│ │ │ │ +
35#define EXINFO 1
│ │ │ │ +
36#define EXUSER 2
│ │ │ │ +
37#define EXNONFATAL 3
│ │ │ │ +
38#define EXCONVERSION 4
│ │ │ │ +
39#define EXSERVER 5
│ │ │ │ +
40#define EXTIME 6
│ │ │ │ +
41#define EXPROGRAM 7
│ │ │ │ +
42#define EXRESOURCE 8
│ │ │ │ +
43#define EXCOMM 9
│ │ │ │ +
44#define EXFATAL 10
│ │ │ │ +
45#define EXCONSISTENCY 11
│ │ │ │ +
46
│ │ │ │ +
47#ifdef __cplusplus
│ │ │ │ +
48#if 0
│ │ │ │ +
49{
│ │ │ │ +
50#endif
│ │ │ │ +
51}
│ │ │ │ +
52#endif
│ │ │ │ +
53
│ │ │ │ +
54#endif
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -cspublic.h │ │ │ │ │ +syberror.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ -2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns │ │ │ │ │ +2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ 3 * │ │ │ │ │ 4 * This library is free software; you can redistribute it and/or │ │ │ │ │ 5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ 6 * License as published by the Free Software Foundation; either │ │ │ │ │ 7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 8 * │ │ │ │ │ 9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ @@ -19,875 +19,46 @@ │ │ │ │ │ 13 * │ │ │ │ │ 14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ 15 * License along with this library; if not, write to the │ │ │ │ │ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 17 * Boston, MA 02111-1307, USA. │ │ │ │ │ 18 */ │ │ │ │ │ 19 │ │ │ │ │ -20#ifndef _cspublic_h_ │ │ │ │ │ -21#define _cspublic_h_ │ │ │ │ │ +20#ifndef _syberror_h_ │ │ │ │ │ +21#define _syberror_h_ │ │ │ │ │ 22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#undef TDS_STATIC_CAST │ │ │ │ │ -26#ifdef __cplusplus │ │ │ │ │ -27#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ -28extern "C" │ │ │ │ │ -29{ │ │ │ │ │ -30#if 0 │ │ │ │ │ -31} │ │ │ │ │ -32#endif │ │ │ │ │ -33#else │ │ │ │ │ -34#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ -35#endif │ │ │ │ │ -36 │ │ │ │ │ -37#define CS_PUBLIC │ │ │ │ │ -38#define CS_STATIC static │ │ │ │ │ -39 │ │ │ │ │ -40#define CS_SUCCEED 1 │ │ │ │ │ -41#define CS_FAIL 0 │ │ │ │ │ -42#define CS_MEM_ERROR -1 │ │ │ │ │ -43#define CS_PENDING -2 │ │ │ │ │ -44#define CS_QUIET -3 │ │ │ │ │ -45#define CS_BUSY -4 │ │ │ │ │ -46#define CS_INTERRUPT -5 │ │ │ │ │ -47#define CS_BLK_HAS_TEXT -6 │ │ │ │ │ -48#define CS_CONTINUE -7 │ │ │ │ │ -49#define CS_FATAL -8 │ │ │ │ │ -50#define CS_RET_HAFAILOVER -9 │ │ │ │ │ -51#define CS_UNSUPPORTED -10 │ │ │ │ │ -52 │ │ │ │ │ -53#define CS_CANCELED -202 │ │ │ │ │ -54#define CS_ROW_FAIL -203 │ │ │ │ │ -55#define CS_END_DATA -204 │ │ │ │ │ -56#define CS_END_RESULTS -205 │ │ │ │ │ -57#define CS_END_ITEM -206 │ │ │ │ │ -58#define CS_NOMSG -207 │ │ │ │ │ -59#define CS_TIMED_OUT -208 │ │ │ │ │ -60 │ │ │ │ │ -61#define CS_SIZEOF(x) sizeof(x) │ │ │ │ │ -62 │ │ │ │ │ -63#define CS_LAYER(x) (((x) >> 24) & 0xFF) │ │ │ │ │ -64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF) │ │ │ │ │ -65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF) │ │ │ │ │ -66#define CS_NUMBER(x) ((x) & 0xFF) │ │ │ │ │ -67 │ │ │ │ │ -68/* forward declarations */ │ │ │ │ │ -69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *); │ │ │ │ │ -70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_ │ │ │ │ │ -CLIENTMSG *); │ │ │ │ │ -71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_ │ │ │ │ │ -SERVERMSG *); │ │ │ │ │ -72typedef CS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION *); │ │ │ │ │ -73 │ │ │ │ │ -74 │ │ │ │ │ -75#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600) │ │ │ │ │ -76#define CS_SRC_VALUE -2562 │ │ │ │ │ -77 │ │ │ │ │ -78 │ │ │ │ │ -79 │ │ │ │ │ -80/* status bits for CS_SERVERMSG */ │ │ │ │ │ -81#define CS_HASEED 0x01 │ │ │ │ │ -82 │ │ │ │ │ -83typedef struct _cs_blkdesc CS_BLKDESC; │ │ │ │ │ -84 │ │ │ │ │ -85/* CS_CAP_REQUEST values */ │ │ │ │ │ -86#define CS_REQ_LANG 1 │ │ │ │ │ -87#define CS_REQ_RPC 2 │ │ │ │ │ -88#define CS_REQ_NOTIF 3 │ │ │ │ │ -89#define CS_REQ_MSTMT 4 │ │ │ │ │ -90#define CS_REQ_BCP 5 │ │ │ │ │ -91#define CS_REQ_CURSOR 6 │ │ │ │ │ -92#define CS_REQ_DYN 7 │ │ │ │ │ -93#define CS_REQ_MSG 8 │ │ │ │ │ -94#define CS_REQ_PARAM 9 │ │ │ │ │ -95#define CS_DATA_INT1 10 │ │ │ │ │ -96#define CS_DATA_INT2 11 │ │ │ │ │ -97#define CS_DATA_INT4 12 │ │ │ │ │ -98#define CS_DATA_BIT 13 │ │ │ │ │ -99#define CS_DATA_CHAR 14 │ │ │ │ │ -100#define CS_DATA_VCHAR 15 │ │ │ │ │ -101#define CS_DATA_BIN 16 │ │ │ │ │ -102#define CS_DATA_VBIN 17 │ │ │ │ │ -103#define CS_DATA_MNY8 18 │ │ │ │ │ -104#define CS_DATA_MNY4 19 │ │ │ │ │ -105#define CS_DATA_DATE8 20 │ │ │ │ │ -106#define CS_DATA_DATE4 21 │ │ │ │ │ -107#define CS_DATA_FLT4 22 │ │ │ │ │ -108#define CS_DATA_FLT8 23 │ │ │ │ │ -109#define CS_DATA_NUM 24 │ │ │ │ │ -110#define CS_DATA_TEXT 25 │ │ │ │ │ -111#define CS_DATA_IMAGE 26 │ │ │ │ │ -112#define CS_DATA_DEC 27 │ │ │ │ │ -113#define CS_DATA_LCHAR 28 │ │ │ │ │ -114#define CS_DATA_LBIN 29 │ │ │ │ │ -115#define CS_DATA_INTN 30 │ │ │ │ │ -116#define CS_DATA_DATETIMEN 31 │ │ │ │ │ -117#define CS_DATA_MONEYN 32 │ │ │ │ │ -118#define CS_CSR_PREV 33 │ │ │ │ │ -119#define CS_CSR_FIRST 34 │ │ │ │ │ -120#define CS_CSR_LAST 35 │ │ │ │ │ -121#define CS_CSR_ABS 36 │ │ │ │ │ -122#define CS_CSR_REL 37 │ │ │ │ │ -123#define CS_CSR_MULTI 38 │ │ │ │ │ -124#define CS_CON_OOB 39 │ │ │ │ │ -125#define CS_CON_INBAND 40 │ │ │ │ │ -126#define CS_CON_LOGICAL 41 │ │ │ │ │ -127#define CS_PROTO_TEXT 42 │ │ │ │ │ -128#define CS_PROTO_BULK 43 │ │ │ │ │ -129#define CS_REQ_URGNOTIF 44 │ │ │ │ │ -130#define CS_DATA_SENSITIVITY 45 │ │ │ │ │ -131#define CS_DATA_BOUNDARY 46 │ │ │ │ │ -132#define CS_PROTO_DYNAMIC 47 │ │ │ │ │ -133#define CS_PROTO_DYNPROC 48 │ │ │ │ │ -134#define CS_DATA_FLTN 49 │ │ │ │ │ -135#define CS_DATA_BITN 50 │ │ │ │ │ -136#define CS_OPTION_GET 51 │ │ │ │ │ -137#define CS_DATA_INT8 52 │ │ │ │ │ -138#define CS_DATA_VOID 53 │ │ │ │ │ -139 │ │ │ │ │ -140/* CS_CAP_RESPONSE values */ │ │ │ │ │ -141#define CS_RES_NOMSG 1 │ │ │ │ │ -142#define CS_RES_NOEED 2 │ │ │ │ │ -143#define CS_RES_NOPARAM 3 │ │ │ │ │ -144#define CS_DATA_NOINT1 4 │ │ │ │ │ -145#define CS_DATA_NOINT2 5 │ │ │ │ │ -146#define CS_DATA_NOINT4 6 │ │ │ │ │ -147#define CS_DATA_NOBIT 7 │ │ │ │ │ -148#define CS_DATA_NOCHAR 8 │ │ │ │ │ -149#define CS_DATA_NOVCHAR 9 │ │ │ │ │ -150#define CS_DATA_NOBIN 10 │ │ │ │ │ -151#define CS_DATA_NOVBIN 11 │ │ │ │ │ -152#define CS_DATA_NOMNY8 12 │ │ │ │ │ -153#define CS_DATA_NOMNY4 13 │ │ │ │ │ -154#define CS_DATA_NODATE8 14 │ │ │ │ │ -155#define CS_DATA_NODATE4 15 │ │ │ │ │ -156#define CS_DATA_NOFLT4 16 │ │ │ │ │ -157#define CS_DATA_NOFLT8 17 │ │ │ │ │ -158#define CS_DATA_NONUM 18 │ │ │ │ │ -159#define CS_DATA_NOTEXT 19 │ │ │ │ │ -160#define CS_DATA_NOIMAGE 20 │ │ │ │ │ -161#define CS_DATA_NODEC 21 │ │ │ │ │ -162#define CS_DATA_NOLCHAR 22 │ │ │ │ │ -163#define CS_DATA_NOLBIN 23 │ │ │ │ │ -164#define CS_DATA_NOINTN 24 │ │ │ │ │ -165#define CS_DATA_NODATETIMEN 25 │ │ │ │ │ -166#define CS_DATA_NOMONEYN 26 │ │ │ │ │ -167#define CS_CON_NOOOB 27 │ │ │ │ │ -168#define CS_CON_NOINBAND 28 │ │ │ │ │ -169#define CS_PROTO_NOTEXT 29 │ │ │ │ │ -170#define CS_PROTO_NOBULK 30 │ │ │ │ │ -171#define CS_DATA_NOSENSITIVITY 31 │ │ │ │ │ -172#define CS_DATA_NOBOUNDARY 32 │ │ │ │ │ -173#define CS_RES_NOTDSDEBUG 33 │ │ │ │ │ -174#define CS_RES_NOSTRIPBLANKS 34 │ │ │ │ │ -175#define CS_DATA_NOINT8 35 │ │ │ │ │ -176 │ │ │ │ │ -177/* Properties */ │ │ │ │ │ -178enum │ │ │ │ │ -179{ │ │ │ │ │ -180/* │ │ │ │ │ -181 * These defines looks weird but programs can test support for defines, │ │ │ │ │ -182 * compiler can check enum and there are no define side effecs │ │ │ │ │ -183 */ │ │ │ │ │ -184 CS_USERNAME = 9100, │ │ │ │ │ -185#define CS_USERNAME CS_USERNAME │ │ │ │ │ -186 CS_PASSWORD = 9101, │ │ │ │ │ -187#define CS_PASSWORD CS_PASSWORD │ │ │ │ │ -188 CS_APPNAME = 9102, │ │ │ │ │ -189#define CS_APPNAME CS_APPNAME │ │ │ │ │ -190 CS_HOSTNAME = 9103, │ │ │ │ │ -191#define CS_HOSTNAME CS_HOSTNAME │ │ │ │ │ -192 CS_LOGIN_STATUS = 9104, │ │ │ │ │ -193#define CS_LOGIN_STATUS CS_LOGIN_STATUS │ │ │ │ │ -194 CS_TDS_VERSION = 9105, │ │ │ │ │ -195#define CS_TDS_VERSION CS_TDS_VERSION │ │ │ │ │ -196 CS_CHARSETCNV = 9106, │ │ │ │ │ -197#define CS_CHARSETCNV CS_CHARSETCNV │ │ │ │ │ -198 CS_PACKETSIZE = 9107, │ │ │ │ │ -199#define CS_PACKETSIZE CS_PACKETSIZE │ │ │ │ │ -200 CS_USERDATA = 9108, │ │ │ │ │ -201#define CS_USERDATA CS_USERDATA │ │ │ │ │ -202 CS_NETIO = 9110, │ │ │ │ │ -203#define CS_NETIO CS_NETIO │ │ │ │ │ -204 CS_TEXTLIMIT = 9112, │ │ │ │ │ -205#define CS_TEXTLIMIT CS_TEXTLIMIT │ │ │ │ │ -206 CS_HIDDEN_KEYS = 9113, │ │ │ │ │ -207#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS │ │ │ │ │ -208 CS_VERSION = 9114, │ │ │ │ │ -209#define CS_VERSION CS_VERSION │ │ │ │ │ -210 CS_IFILE = 9115, │ │ │ │ │ -211#define CS_IFILE CS_IFILE │ │ │ │ │ -212 CS_LOGIN_TIMEOUT = 9116, │ │ │ │ │ -213#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT │ │ │ │ │ -214 CS_TIMEOUT = 9117, │ │ │ │ │ -215#define CS_TIMEOUT CS_TIMEOUT │ │ │ │ │ -216 CS_MAX_CONNECT = 9118, │ │ │ │ │ -217#define CS_MAX_CONNECT CS_MAX_CONNECT │ │ │ │ │ -218 CS_EXPOSE_FMTS = 9120, │ │ │ │ │ -219#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS │ │ │ │ │ -220 CS_EXTRA_INF = 9121, │ │ │ │ │ -221#define CS_EXTRA_INF CS_EXTRA_INF │ │ │ │ │ -222 CS_ANSI_BINDS = 9123, │ │ │ │ │ -223#define CS_ANSI_BINDS CS_ANSI_BINDS │ │ │ │ │ -224 CS_BULK_LOGIN = 9124, │ │ │ │ │ -225#define CS_BULK_LOGIN CS_BULK_LOGIN │ │ │ │ │ -226 CS_LOC_PROP = 9125, │ │ │ │ │ -227#define CS_LOC_PROP CS_LOC_PROP │ │ │ │ │ -228 CS_PARENT_HANDLE = 9130, │ │ │ │ │ -229#define CS_PARENT_HANDLE CS_PARENT_HANDLE │ │ │ │ │ -230 CS_EED_CMD = 9131, │ │ │ │ │ -231#define CS_EED_CMD CS_EED_CMD │ │ │ │ │ -232 CS_DIAG_TIMEOUT = 9132, │ │ │ │ │ -233#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT │ │ │ │ │ -234 CS_DISABLE_POLL = 9133, │ │ │ │ │ -235#define CS_DISABLE_POLL CS_DISABLE_POLL │ │ │ │ │ -236 CS_SEC_ENCRYPTION = 9135, │ │ │ │ │ -237#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION │ │ │ │ │ -238 CS_SEC_CHALLENGE = 9136, │ │ │ │ │ -239#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE │ │ │ │ │ -240 CS_SEC_NEGOTIATE = 9137, │ │ │ │ │ -241#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE │ │ │ │ │ -242 CS_ENDPOINT = 9141, │ │ │ │ │ -243#define CS_ENDPOINT CS_ENDPOINT │ │ │ │ │ -244 CS_CON_STATUS = 9143, │ │ │ │ │ -245#define CS_CON_STATUS CS_CON_STATUS │ │ │ │ │ -246 CS_VER_STRING = 9144, │ │ │ │ │ -247#define CS_VER_STRING CS_VER_STRING │ │ │ │ │ -248 CS_SERVERNAME = 9146, │ │ │ │ │ -249#define CS_SERVERNAME CS_SERVERNAME │ │ │ │ │ -250 CS_SEC_APPDEFINED = 9149, │ │ │ │ │ -251#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED │ │ │ │ │ -252 CS_STICKY_BINDS = 9151, │ │ │ │ │ -253#define CS_STICKY_BINDS CS_STICKY_BINDS │ │ │ │ │ -254 CS_SEC_NETWORKAUTH = 9175, │ │ │ │ │ -255#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH │ │ │ │ │ -256 CS_SEC_DELEGATION = 9176, │ │ │ │ │ -257#define CS_SEC_DELEGATION CS_SEC_DELEGATION │ │ │ │ │ -258 CS_SEC_MUTUALAUTH = 9177, │ │ │ │ │ -259#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH │ │ │ │ │ -260 CS_SEC_SERVERPRINCIPAL = 9188, │ │ │ │ │ -261#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL │ │ │ │ │ -262 CS_SERVERADDR = 9206, │ │ │ │ │ -263#define CS_SERVERADDR CS_SERVERADDR │ │ │ │ │ -264/* settings from here are FreeTDS extensions */ │ │ │ │ │ -265 CS_PORT = 9300, │ │ │ │ │ -266#define CS_PORT CS_PORT │ │ │ │ │ -267 CS_CLIENTCHARSET = 9301, │ │ │ │ │ -268#define CS_CLIENTCHARSET CS_CLIENTCHARSET │ │ │ │ │ -269 CS_DATABASE = 9302, │ │ │ │ │ -270#define CS_DATABASE CS_DATABASE │ │ │ │ │ -271 CS_NOTE_EMPTY_DATA = 9303, │ │ │ │ │ -272#define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA │ │ │ │ │ -273 CS_PRODUCT_NAME = 9304 │ │ │ │ │ -274#define CS_PRODUCT_NAME CS_PRODUCT_NAME │ │ │ │ │ -275}; │ │ │ │ │ -276 │ │ │ │ │ -277/* Arbitrary precision math operators */ │ │ │ │ │ -278enum │ │ │ │ │ -279{ │ │ │ │ │ -280 CS_ADD = 1, │ │ │ │ │ -281 CS_SUB, │ │ │ │ │ -282 CS_MULT, │ │ │ │ │ -283 CS_DIV │ │ │ │ │ -284}; │ │ │ │ │ -285 │ │ │ │ │ -286enum │ │ │ │ │ -287{ │ │ │ │ │ -288 CS_TDS_AUTO = 0, │ │ │ │ │ -289#define CS_TDS_AUTO CS_TDS_AUTO │ │ │ │ │ -290 CS_TDS_40 = 7360, │ │ │ │ │ -291#define CS_TDS_40 CS_TDS_40 │ │ │ │ │ -292 CS_TDS_42, │ │ │ │ │ -293#define CS_TDS_42 CS_TDS_42 │ │ │ │ │ -294 CS_TDS_46, │ │ │ │ │ -295#define CS_TDS_46 CS_TDS_46 │ │ │ │ │ -296 CS_TDS_495, │ │ │ │ │ -297#define CS_TDS_495 CS_TDS_495 │ │ │ │ │ -298 CS_TDS_50, │ │ │ │ │ -299#define CS_TDS_50 CS_TDS_50 │ │ │ │ │ -300 CS_TDS_70, │ │ │ │ │ -301 CS_TDS_71, │ │ │ │ │ -302#define CS_TDS_71 CS_TDS_71 │ │ │ │ │ -303 CS_TDS_72, │ │ │ │ │ -304#define CS_TDS_72 CS_TDS_72 │ │ │ │ │ -305 CS_TDS_73, │ │ │ │ │ -306#define CS_TDS_73 CS_TDS_73 │ │ │ │ │ -307 CS_TDS_74, │ │ │ │ │ -308#define CS_TDS_74 CS_TDS_74 │ │ │ │ │ -309 CS_TDS_80, │ │ │ │ │ -310#define CS_TDS_80 CS_TDS_80 │ │ │ │ │ -311}; │ │ │ │ │ -312 │ │ │ │ │ -313/* bit mask values used by CS_DATAFMT.status */ │ │ │ │ │ -314#define CS_HIDDEN (1 << 0) │ │ │ │ │ -315#define CS_KEY (1 << 1) │ │ │ │ │ -316#define CS_VERSION_KEY (1 << 2) │ │ │ │ │ -317#define CS_NODATA (1 << 3) │ │ │ │ │ -318#define CS_UPDATABLE (1 << 4) │ │ │ │ │ -319#define CS_CANBENULL (1 << 5) │ │ │ │ │ -320#define CS_DESCIN (1 << 6) │ │ │ │ │ -321#define CS_DESCOUT (1 << 7) │ │ │ │ │ -322#define CS_INPUTVALUE (1 << 8) │ │ │ │ │ -323#define CS_UPDATECOL (1 << 9) │ │ │ │ │ -324#define CS_RETURN (1 << 10) │ │ │ │ │ -325#define CS_TIMESTAMP (1 << 13) │ │ │ │ │ -326#define CS_NODEFAULT (1 << 14) │ │ │ │ │ -327#define CS_IDENTITY (1 << 15) │ │ │ │ │ -328 │ │ │ │ │ -329/* │ │ │ │ │ -330 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1 │ │ │ │ │ -331 * (the documentation states -1) │ │ │ │ │ -332 */ │ │ │ │ │ -333#define CS_GOODDATA 0 │ │ │ │ │ -334#define CS_NULLDATA (-1) │ │ │ │ │ -335 │ │ │ │ │ -336/* CS_CON_STATUS read-only property bit mask values */ │ │ │ │ │ -337#define CS_CONSTAT_CONNECTED 0x01 │ │ │ │ │ -338#define CS_CONSTAT_DEAD 0x02 │ │ │ │ │ -339 │ │ │ │ │ -340/* │ │ │ │ │ -341 * Code added for CURSOR support │ │ │ │ │ -342 * types accepted by ct_cursor │ │ │ │ │ -343 */ │ │ │ │ │ -344#define CS_CURSOR_DECLARE 700 │ │ │ │ │ -345#define CS_CURSOR_OPEN 701 │ │ │ │ │ -346#define CS_CURSOR_ROWS 703 │ │ │ │ │ -347#define CS_CURSOR_UPDATE 704 │ │ │ │ │ -348#define CS_CURSOR_DELETE 705 │ │ │ │ │ -349#define CS_CURSOR_CLOSE 706 │ │ │ │ │ -350#define CS_CURSOR_DEALLOC 707 │ │ │ │ │ -351#define CS_CURSOR_OPTION 725 │ │ │ │ │ -352 │ │ │ │ │ -353#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1) │ │ │ │ │ -354#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2) │ │ │ │ │ -355#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8) │ │ │ │ │ -356#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40) │ │ │ │ │ -357 │ │ │ │ │ -358 │ │ │ │ │ -359#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0) │ │ │ │ │ -360#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1) │ │ │ │ │ -361#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2) │ │ │ │ │ -362#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4) │ │ │ │ │ -363#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8) │ │ │ │ │ -364#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10) │ │ │ │ │ -365#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20) │ │ │ │ │ -366#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40) │ │ │ │ │ -367 │ │ │ │ │ -368#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126) │ │ │ │ │ -369#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127) │ │ │ │ │ -370#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128) │ │ │ │ │ -371#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129) │ │ │ │ │ -372 │ │ │ │ │ -373/* options accepted by ct_options() */ │ │ │ │ │ -374#define CS_OPT_DATEFIRST 5001 │ │ │ │ │ -375#define CS_OPT_TEXTSIZE 5002 │ │ │ │ │ -376#define CS_OPT_STATS_TIME 5003 │ │ │ │ │ -377#define CS_OPT_STATS_IO 5004 │ │ │ │ │ -378#define CS_OPT_ROWCOUNT 5005 │ │ │ │ │ -379#define CS_OPT_DATEFORMAT 5007 │ │ │ │ │ -380#define CS_OPT_ISOLATION 5008 │ │ │ │ │ -381#define CS_OPT_AUTHON 5009 │ │ │ │ │ -382#define CS_OPT_SHOWPLAN 5013 │ │ │ │ │ -383#define CS_OPT_NOEXEC 5014 │ │ │ │ │ -384#define CS_OPT_ARITHIGNORE 5015 │ │ │ │ │ -385#define CS_OPT_TRUNCIGNORE 5016 │ │ │ │ │ -386#define CS_OPT_ARITHABORT 5017 │ │ │ │ │ -387#define CS_OPT_PARSEONLY 5018 │ │ │ │ │ -388#define CS_OPT_GETDATA 5020 │ │ │ │ │ -389#define CS_OPT_NOCOUNT 5021 │ │ │ │ │ -390#define CS_OPT_FORCEPLAN 5023 │ │ │ │ │ -391#define CS_OPT_FORMATONLY 5024 │ │ │ │ │ -392#define CS_OPT_CHAINXACTS 5025 │ │ │ │ │ -393#define CS_OPT_CURCLOSEONXACT 5026 │ │ │ │ │ -394#define CS_OPT_FIPSFLAG 5027 │ │ │ │ │ -395#define CS_OPT_RESTREES 5028 │ │ │ │ │ -396#define CS_OPT_IDENTITYON 5029 │ │ │ │ │ -397#define CS_OPT_CURREAD 5030 │ │ │ │ │ -398#define CS_OPT_CURWRITE 5031 │ │ │ │ │ -399#define CS_OPT_IDENTITYOFF 5032 │ │ │ │ │ -400#define CS_OPT_AUTHOFF 5033 │ │ │ │ │ -401#define CS_OPT_ANSINULL 5034 │ │ │ │ │ -402#define CS_OPT_QUOTED_IDENT 5035 │ │ │ │ │ -403#define CS_OPT_ANSIPERM 5036 │ │ │ │ │ -404#define CS_OPT_STR_RTRUNC 5037 │ │ │ │ │ -405 │ │ │ │ │ -406/* options accepted by ct_command() */ │ │ │ │ │ -407enum ct_command_options │ │ │ │ │ -408{ │ │ │ │ │ -409 CS_MORE = 16, │ │ │ │ │ -410#define CS_MORE CS_MORE │ │ │ │ │ -411 CS_END = 32, │ │ │ │ │ -412#define CS_END CS_END │ │ │ │ │ -413 CS_RECOMPILE = 188, │ │ │ │ │ -414#define CS_RECOMPILE CS_RECOMPILE │ │ │ │ │ -415 CS_NO_RECOMPILE, │ │ │ │ │ -416#define CS_NO_RECOMPILE CS_NO_RECOMPILE │ │ │ │ │ -417 CS_BULK_INIT, │ │ │ │ │ -418#define CS_BULK_INIT CS_BULK_INIT │ │ │ │ │ -419 CS_BULK_CONT, │ │ │ │ │ -420#define CS_BULK_CONT CS_BULK_CONT │ │ │ │ │ -421 CS_BULK_DATA, │ │ │ │ │ -422#define CS_BULK_DATA CS_BULK_DATA │ │ │ │ │ -423 CS_COLUMN_DATA │ │ │ │ │ -424#define CS_COLUMN_DATA CS_COLUMN_DATA │ │ │ │ │ -425}; │ │ │ │ │ -426 │ │ │ │ │ -427 │ │ │ │ │ -428/* │ │ │ │ │ -429 * bind formats, should be mapped to TDS types │ │ │ │ │ -430 * can be a combination of bit │ │ │ │ │ -431 */ │ │ │ │ │ -432enum │ │ │ │ │ -433{ │ │ │ │ │ -434 CS_FMT_UNUSED = 0, │ │ │ │ │ -435#define CS_FMT_UNUSED CS_FMT_UNUSED │ │ │ │ │ -436 CS_FMT_NULLTERM = 1, │ │ │ │ │ -437#define CS_FMT_NULLTERM CS_FMT_NULLTERM │ │ │ │ │ -438 CS_FMT_PADNULL = 2, │ │ │ │ │ -439#define CS_FMT_PADBLANK CS_FMT_PADBLANK │ │ │ │ │ -440 CS_FMT_PADBLANK = 4, │ │ │ │ │ -441#define CS_FMT_PADNULL CS_FMT_PADNULL │ │ │ │ │ -442 CS_FMT_JUSTIFY_RT = 8 │ │ │ │ │ -443#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT │ │ │ │ │ -444}; │ │ │ │ │ -445 │ │ │ │ │ -446/* callbacks */ │ │ │ │ │ -447#define CS_COMPLETION_CB 1 │ │ │ │ │ -448#define CS_SERVERMSG_CB 2 │ │ │ │ │ -449#define CS_CLIENTMSG_CB 3 │ │ │ │ │ -450#define CS_NOTIF_CB 4 │ │ │ │ │ -451#define CS_ENCRYPT_CB 5 │ │ │ │ │ -452#define CS_CHALLENGE_CB 6 │ │ │ │ │ -453#define CS_DS_LOOKUP_CB 7 │ │ │ │ │ -454#define CS_SECSESSION_CB 8 │ │ │ │ │ -455#define CS_SIGNAL_CB 100 │ │ │ │ │ -456#define CS_MESSAGE_CB 9119 │ │ │ │ │ -457#define CS_INTERRUPT_CB 9400 │ │ │ │ │ -458 │ │ │ │ │ -459/* string types */ │ │ │ │ │ -460#define CS_NULLTERM -9 │ │ │ │ │ -461#define CS_WILDCARD -99 │ │ │ │ │ -462#define CS_NO_LIMIT -9999 │ │ │ │ │ -463#define CS_UNUSED -99999 │ │ │ │ │ -464 │ │ │ │ │ -465/* other */ │ │ │ │ │ -466#define CS_GET 33 │ │ │ │ │ -467#define CS_SET 34 │ │ │ │ │ -468#define CS_CLEAR 35 │ │ │ │ │ -469#define CS_INIT 36 │ │ │ │ │ -470#define CS_STATUS 37 │ │ │ │ │ -471#define CS_MSGLIMIT 38 │ │ │ │ │ -472#define CS_SUPPORTED 40 │ │ │ │ │ -473 │ │ │ │ │ -474#define CS_CMD_DONE 4046 │ │ │ │ │ -475#define CS_CMD_SUCCEED 4047 │ │ │ │ │ -476#define CS_CMD_FAIL 4048 │ │ │ │ │ -477 │ │ │ │ │ -478/* commands */ │ │ │ │ │ -479#define CS_LANG_CMD 148 │ │ │ │ │ -480#define CS_RPC_CMD 149 │ │ │ │ │ -481#define CS_SEND_DATA_CMD 151 │ │ │ │ │ -482#define CS_SEND_BULK_CMD 153 │ │ │ │ │ -483 │ │ │ │ │ -484#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -485#define CS_VERSION_100 112 │ │ │ │ │ -486#define CS_VERSION_110 1100 │ │ │ │ │ -487#define CS_VERSION_120 1100 │ │ │ │ │ -488#define CS_VERSION_125 12500 │ │ │ │ │ -489#define CS_VERSION_150 15000 │ │ │ │ │ -490#else │ │ │ │ │ -491#define CS_VERSION_100 113 │ │ │ │ │ -492#define CS_VERSION_110 1101 │ │ │ │ │ -493#define CS_VERSION_120 CS_VERSION_110 │ │ │ │ │ -494#define CS_VERSION_125 12501 │ │ │ │ │ -495#define CS_VERSION_150 15001 │ │ │ │ │ -496#define CS_VERSION_155 15501 │ │ │ │ │ -497#define CS_VERSION_157 15701 │ │ │ │ │ -498#define CS_VERSION_160 16001 │ │ │ │ │ -499#endif │ │ │ │ │ -500 │ │ │ │ │ -501#define BLK_VERSION_100 CS_VERSION_100 │ │ │ │ │ -502#define BLK_VERSION_110 CS_VERSION_110 │ │ │ │ │ -503#define BLK_VERSION_120 CS_VERSION_120 │ │ │ │ │ -504#define BLK_VERSION_125 CS_VERSION_125 │ │ │ │ │ -505#define BLK_VERSION_150 CS_VERSION_150 │ │ │ │ │ -506#ifndef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -507#define BLK_VERSION_155 CS_VERSION_155 │ │ │ │ │ -508#define BLK_VERSION_157 CS_VERSION_157 │ │ │ │ │ -509#define BLK_VERSION_160 CS_VERSION_160 │ │ │ │ │ -510#endif │ │ │ │ │ -511 │ │ │ │ │ -512#define CS_FORCE_EXIT 300 │ │ │ │ │ -513#define CS_FORCE_CLOSE 301 │ │ │ │ │ -514 │ │ │ │ │ -515#define CS_SYNC_IO 8111 │ │ │ │ │ -516#define CS_ASYNC_IO 8112 │ │ │ │ │ -517#define CS_DEFER_IO 8113 │ │ │ │ │ -518 │ │ │ │ │ -519#define CS_CANCEL_CURRENT 6000 │ │ │ │ │ -520#define CS_CANCEL_ALL 6001 │ │ │ │ │ -521#define CS_CANCEL_ATTN 6002 │ │ │ │ │ -522 │ │ │ │ │ -523#define CS_ROW_COUNT 800 │ │ │ │ │ -524#define CS_CMD_NUMBER 801 │ │ │ │ │ -525#define CS_NUM_COMPUTES 802 │ │ │ │ │ -526#define CS_NUMDATA 803 │ │ │ │ │ -527#define CS_NUMORDERCOLS 805 │ │ │ │ │ -528#define CS_MSGTYPE 806 │ │ │ │ │ -529#define CS_BROWSE_INFO 807 │ │ │ │ │ -530#define CS_TRANS_STATE 808 │ │ │ │ │ -531 │ │ │ │ │ -532#define CS_TRAN_UNDEFINED 0 │ │ │ │ │ -533#define CS_TRAN_IN_PROGRESS 1 │ │ │ │ │ -534#define CS_TRAN_COMPLETED 2 │ │ │ │ │ -535#define CS_TRAN_FAIL 3 │ │ │ │ │ -536#define CS_TRAN_STMT_FAIL 4 │ │ │ │ │ -537 │ │ │ │ │ -538#define CS_COMP_OP 5350 │ │ │ │ │ -539#define CS_COMP_ID 5351 │ │ │ │ │ -540#define CS_COMP_COLID 5352 │ │ │ │ │ -541#define CS_COMP_BYLIST 5353 │ │ │ │ │ -542#define CS_BYLIST_LEN 5354 │ │ │ │ │ -543 │ │ │ │ │ -544#define CS_NO_COUNT -1 │ │ │ │ │ -545 │ │ │ │ │ -546#define CS_OP_SUM 5370 │ │ │ │ │ -547#define CS_OP_AVG 5371 │ │ │ │ │ -548#define CS_OP_COUNT 5372 │ │ │ │ │ -549#define CS_OP_MIN 5373 │ │ │ │ │ -550#define CS_OP_MAX 5374 │ │ │ │ │ -551 │ │ │ │ │ -552#define CS_CAP_REQUEST 1 │ │ │ │ │ -553#define CS_CAP_RESPONSE 2 │ │ │ │ │ -554 │ │ │ │ │ -555#define CS_PREPARE 717 │ │ │ │ │ -556#define CS_EXECUTE 718 │ │ │ │ │ -557#define CS_DESCRIBE_INPUT 720 │ │ │ │ │ -558#define CS_DESCRIBE_OUTPUT 721 │ │ │ │ │ -559 │ │ │ │ │ -560#define CS_DEALLOC 711 │ │ │ │ │ -561 │ │ │ │ │ -562#define CS_LC_ALL 7 │ │ │ │ │ -563#define CS_SYB_LANG 8 │ │ │ │ │ -564#define CS_SYB_CHARSET 9 │ │ │ │ │ -565#define CS_SYB_SORTORDER 10 │ │ │ │ │ -566#define CS_SYB_COLLATE CS_SYB_SORTORDER │ │ │ │ │ -567#define CS_SYB_LANG_CHARSET 11 │ │ │ │ │ -568 │ │ │ │ │ -569#define CS_BLK_IN 1 │ │ │ │ │ -570#define CS_BLK_OUT 2 │ │ │ │ │ -571 │ │ │ │ │ -572#define CS_BLK_BATCH 1 │ │ │ │ │ -573#define CS_BLK_ALL 2 │ │ │ │ │ -574#define CS_BLK_CANCEL 3 │ │ │ │ │ -575 │ │ │ │ │ -576/* to do support these */ │ │ │ │ │ -577 │ │ │ │ │ -578#define CS_BLK_ARRAY_MAXLEN 0x1000 │ │ │ │ │ -579#define CS_DEF_PREC 18 │ │ │ │ │ -580 │ │ │ │ │ -581/* Error Severities */ │ │ │ │ │ -582#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ -583#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ -584#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ -585#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ -586#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ -587#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ -588#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ -589#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ -590 │ │ │ │ │ -591/* result_types */ │ │ │ │ │ -592#define CS_ROW_RESULT 4040 │ │ │ │ │ -593#define CS_CURSOR_RESULT 4041 │ │ │ │ │ -594#define CS_PARAM_RESULT 4042 │ │ │ │ │ -595#define CS_STATUS_RESULT 4043 │ │ │ │ │ -596#define CS_MSG_RESULT 4044 │ │ │ │ │ -597#define CS_COMPUTE_RESULT 4045 │ │ │ │ │ -598#define CS_ROWFMT_RESULT 4049 │ │ │ │ │ -599#define CS_COMPUTEFMT_RESULT 4050 │ │ │ │ │ -600#define CS_DESCRIBE_RESULT 4051 │ │ │ │ │ -601 │ │ │ │ │ -602/* bind types */ │ │ │ │ │ -603#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1) │ │ │ │ │ -604#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ -605#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ -606#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ -607#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ -608#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ -609#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ -610#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ -611#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ -612#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8) │ │ │ │ │ -613#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9) │ │ │ │ │ -614#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10) │ │ │ │ │ -615#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11) │ │ │ │ │ -616#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12) │ │ │ │ │ -617#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13) │ │ │ │ │ -618#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14) │ │ │ │ │ -619#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15) │ │ │ │ │ -620#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16) │ │ │ │ │ -621#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17) │ │ │ │ │ -622#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18) │ │ │ │ │ -623#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19) │ │ │ │ │ -624#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20) │ │ │ │ │ -625#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21) │ │ │ │ │ -626#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22) │ │ │ │ │ -627#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23) │ │ │ │ │ -628#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24) │ │ │ │ │ -629#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25) │ │ │ │ │ -630#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26) │ │ │ │ │ -631#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27) │ │ │ │ │ -632#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28) │ │ │ │ │ -633#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29) │ │ │ │ │ -634#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30) │ │ │ │ │ -635#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31) │ │ │ │ │ -636#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32) │ │ │ │ │ -637#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33) │ │ │ │ │ -638#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34) │ │ │ │ │ -639#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35) │ │ │ │ │ -640#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36) │ │ │ │ │ -641#define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37) │ │ │ │ │ -642#define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38) │ │ │ │ │ -643#define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39) │ │ │ │ │ -644#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40) │ │ │ │ │ -645 │ │ │ │ │ -646#define CS_MIN_SYBTYPE CS_CHAR_TYPE │ │ │ │ │ -647#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE │ │ │ │ │ -648 │ │ │ │ │ -649#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100) │ │ │ │ │ -650/* cs_dt_info type values */ │ │ │ │ │ -651enum │ │ │ │ │ -652{ │ │ │ │ │ -653 CS_MONTH = 7340, │ │ │ │ │ -654#define CS_MONTH CS_MONTH │ │ │ │ │ -655 CS_SHORTMONTH, │ │ │ │ │ -656#define CS_SHORTMONTH CS_SHORTMONTH │ │ │ │ │ -657 CS_DAYNAME, │ │ │ │ │ -658#define CS_DAYNAME CS_DAYNAME │ │ │ │ │ -659 CS_DATEORDER, │ │ │ │ │ -660#define CS_DATEORDER CS_DATEORDER │ │ │ │ │ -661 CS_12HOUR, │ │ │ │ │ -662#define CS_12HOUR CS_12HOUR │ │ │ │ │ -663 CS_DT_CONVFMT │ │ │ │ │ -664#define CS_DT_CONVFMT CS_DT_CONVFMT │ │ │ │ │ -665}; │ │ │ │ │ -666 │ │ │ │ │ -667/* DT_CONVFMT types */ │ │ │ │ │ -668enum │ │ │ │ │ -669{ │ │ │ │ │ -670 CS_DATES_SHORT = 0, │ │ │ │ │ -671#define CS_DATES_SHORT CS_DATES_SHORT │ │ │ │ │ -672 CS_DATES_MDY1, │ │ │ │ │ -673#define CS_DATES_MDY1 CS_DATES_MDY1 │ │ │ │ │ -674 CS_DATES_YMD1, │ │ │ │ │ -675#define CS_DATES_YMD1 CS_DATES_YMD1 │ │ │ │ │ -676 CS_DATES_DMY1, │ │ │ │ │ -677#define CS_DATES_DMY1 CS_DATES_DMY1 │ │ │ │ │ -678 CS_DATES_DMY2, │ │ │ │ │ -679#define CS_DATES_DMY2 CS_DATES_DMY2 │ │ │ │ │ -680 CS_DATES_DMY3, │ │ │ │ │ -681#define CS_DATES_DMY3 CS_DATES_DMY3 │ │ │ │ │ -682 CS_DATES_DMY4, │ │ │ │ │ -683#define CS_DATES_DMY4 CS_DATES_DMY4 │ │ │ │ │ -684 CS_DATES_MDY2, │ │ │ │ │ -685#define CS_DATES_MDY2 CS_DATES_MDY2 │ │ │ │ │ -686 CS_DATES_HMS, │ │ │ │ │ -687#define CS_DATES_HMS CS_DATES_HMS │ │ │ │ │ -688 CS_DATES_LONG, │ │ │ │ │ -689#define CS_DATES_LONG CS_DATES_LONG │ │ │ │ │ -690 CS_DATES_MDY3, │ │ │ │ │ -691#define CS_DATES_MDY3 CS_DATES_MDY3 │ │ │ │ │ -692 CS_DATES_YMD2, │ │ │ │ │ -693#define CS_DATES_YMD2 CS_DATES_YMD2 │ │ │ │ │ -694 CS_DATES_YMD3, │ │ │ │ │ -695#define CS_DATES_YMD3 CS_DATES_YMD3 │ │ │ │ │ -696 CS_DATES_YDM1, │ │ │ │ │ -697#define CS_DATES_YDM1 CS_DATES_YDM1 │ │ │ │ │ -698 CS_DATES_MYD1, │ │ │ │ │ -699#define CS_DATES_MYD1 CS_DATES_MYD1 │ │ │ │ │ -700 CS_DATES_DYM1, │ │ │ │ │ -701#define CS_DATES_DYM1 CS_DATES_DYM1 │ │ │ │ │ -702 CS_DATES_MDY1_YYYY = 101, │ │ │ │ │ -703#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY │ │ │ │ │ -704 CS_DATES_YMD1_YYYY, │ │ │ │ │ -705#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY │ │ │ │ │ -706 CS_DATES_DMY1_YYYY, │ │ │ │ │ -707#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY │ │ │ │ │ -708 CS_DATES_DMY2_YYYY, │ │ │ │ │ -709#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY │ │ │ │ │ -710 CS_DATES_DMY3_YYYY, │ │ │ │ │ -711#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY │ │ │ │ │ -712 CS_DATES_DMY4_YYYY, │ │ │ │ │ -713#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY │ │ │ │ │ -714 CS_DATES_MDY2_YYYY, │ │ │ │ │ -715#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY │ │ │ │ │ -716 CS_DATES_MDY3_YYYY = 110, │ │ │ │ │ -717#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY │ │ │ │ │ -718 CS_DATES_YMD2_YYYY, │ │ │ │ │ -719#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY │ │ │ │ │ -720 CS_DATES_YMD3_YYYY │ │ │ │ │ -721#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY │ │ │ │ │ -722}; │ │ │ │ │ -723 │ │ │ │ │ -724typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * │ │ │ │ │ -srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest, │ │ │ │ │ -725 CS_INT * destlen); │ │ │ │ │ -726 │ │ │ │ │ -727typedef struct _cs_objname │ │ │ │ │ -728{ │ │ │ │ │ -729 CS_BOOL thinkexists; │ │ │ │ │ -730 CS_INT object_type; │ │ │ │ │ -731#ifdef CS_NO_LARGE_IDENTIFIERS │ │ │ │ │ -732 CS_CHAR last_name[CS_MAX_NAME]; │ │ │ │ │ -733 CS_INT lnlen; │ │ │ │ │ -734 CS_CHAR first_name[CS_MAX_NAME]; │ │ │ │ │ -735#else │ │ │ │ │ -736 CS_CHAR last_name[CS_MAX_CHAR]; │ │ │ │ │ -737 CS_INT lnlen; │ │ │ │ │ -738 CS_CHAR first_name[CS_MAX_CHAR]; │ │ │ │ │ -739#endif │ │ │ │ │ -740 CS_INT fnlen; │ │ │ │ │ -741 CS_VOID *scope; │ │ │ │ │ -742 CS_INT scopelen; │ │ │ │ │ -743 CS_VOID *thread; │ │ │ │ │ -744 CS_INT threadlen; │ │ │ │ │ -745} CS_OBJNAME; │ │ │ │ │ -746 │ │ │ │ │ -747typedef struct _cs_objdata │ │ │ │ │ -748{ │ │ │ │ │ -749 CS_BOOL actuallyexists; │ │ │ │ │ -750 CS_CONNECTION *connection; │ │ │ │ │ -751 CS_COMMAND *command; │ │ │ │ │ -752 CS_VOID *buffer; │ │ │ │ │ -753 CS_INT buflen; │ │ │ │ │ -754} CS_OBJDATA; │ │ │ │ │ -755 │ │ │ │ │ -756/* Eventually, these should be in terms of TDS values */ │ │ │ │ │ -757enum │ │ │ │ │ -758{ │ │ │ │ │ -759 CS_OPT_MONDAY = 1, │ │ │ │ │ -760 CS_OPT_TUESDAY, │ │ │ │ │ -761 CS_OPT_WEDNESDAY, │ │ │ │ │ -762 CS_OPT_THURSDAY, │ │ │ │ │ -763 CS_OPT_FRIDAY, │ │ │ │ │ -764 CS_OPT_SATURDAY, │ │ │ │ │ -765 CS_OPT_SUNDAY │ │ │ │ │ -766}; │ │ │ │ │ -767enum │ │ │ │ │ -768{ │ │ │ │ │ -769 CS_OPT_FMTMDY = 1, │ │ │ │ │ -770 CS_OPT_FMTDMY, │ │ │ │ │ -771 CS_OPT_FMTYMD, │ │ │ │ │ -772 CS_OPT_FMTYDM, │ │ │ │ │ -773 CS_OPT_FMTMYD, │ │ │ │ │ -774 CS_OPT_FMTDYM │ │ │ │ │ -775}; │ │ │ │ │ -776enum │ │ │ │ │ -777{ │ │ │ │ │ -778 CS_OPT_LEVEL0 = 0, │ │ │ │ │ -779 CS_OPT_LEVEL1, │ │ │ │ │ -780 CS_OPT_LEVEL2, │ │ │ │ │ -781 CS_OPT_LEVEL3 │ │ │ │ │ -782}; │ │ │ │ │ -783 │ │ │ │ │ -784#define CS_FALSE 0 │ │ │ │ │ -785#define CS_TRUE 1 │ │ │ │ │ -786 │ │ │ │ │ -787#define SRV_PROC CS_VOID │ │ │ │ │ -788 │ │ │ │ │ -789/* constants required for ct_diag (not jet implemented) */ │ │ │ │ │ -790#define CS_CLIENTMSG_TYPE 4700 │ │ │ │ │ -791#define CS_SERVERMSG_TYPE 4701 │ │ │ │ │ -792#define CS_ALLMSG_TYPE 4702 │ │ │ │ │ -793 │ │ │ │ │ -794/* CS_INTERRUPT_CB return values */ │ │ │ │ │ -795#define CS_INT_CONTINUE 1 │ │ │ │ │ -796#define CS_INT_CANCEL 2 │ │ │ │ │ -797#define CS_INT_TIMEOUT 3 │ │ │ │ │ -798 │ │ │ │ │ -799CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * │ │ │ │ │ -srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata, │ │ │ │ │ -800 CS_INT * resultlen); │ │ │ │ │ -801CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx); │ │ │ │ │ -802CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx); │ │ │ │ │ -803CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx); │ │ │ │ │ -804CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_ │ │ │ │ │ -VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -805CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, │ │ │ │ │ -CS_INT * resultlen, CS_CHAR * text, CS_INT textlen, │ │ │ │ │ -806 CS_CHAR * formats, CS_INT formatlen, ...); │ │ │ │ │ -807#undef cs_dt_crack │ │ │ │ │ -808CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, │ │ │ │ │ -CS_DATEREC * daterec); │ │ │ │ │ -809CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * │ │ │ │ │ -dateval, CS_DATEREC * daterec); │ │ │ │ │ -810#define cs_dt_crack cs_dt_crack_v2 │ │ │ │ │ -811CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr); │ │ │ │ │ -812CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale); │ │ │ │ │ -813CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, │ │ │ │ │ -CS_INT type, CS_VOID * buffer, CS_INT buflen, │ │ │ │ │ -814 CS_INT * outlen); │ │ │ │ │ -815CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, │ │ │ │ │ -CS_INT type, CS_INT item, CS_VOID * buffer, │ │ │ │ │ -816 CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -817 │ │ │ │ │ -818CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * │ │ │ │ │ -var1, CS_VOID * var2, CS_VOID * dest); │ │ │ │ │ -819CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID │ │ │ │ │ -* var2, CS_INT * result); │ │ │ │ │ -820CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * │ │ │ │ │ -destloc, CS_INT * conv_multiplier); │ │ │ │ │ -821CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT │ │ │ │ │ -idx, CS_VOID * buffer); │ │ │ │ │ -822CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT │ │ │ │ │ -srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype, │ │ │ │ │ -823 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_ │ │ │ │ │ -FUNC * func); │ │ │ │ │ -824CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, │ │ │ │ │ -CS_OBJDATA * objdata); │ │ │ │ │ -825CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, │ │ │ │ │ -CS_INT desttype, CS_CONV_FUNC * func); │ │ │ │ │ -826CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * │ │ │ │ │ -buffer, CS_INT buflen); │ │ │ │ │ -827CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_ │ │ │ │ │ -CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2, │ │ │ │ │ -828 CS_INT * result); │ │ │ │ │ -829CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, │ │ │ │ │ -CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec); │ │ │ │ │ -830CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT │ │ │ │ │ -desttype, CS_BOOL * result); │ │ │ │ │ -831 │ │ │ │ │ -832const char * cs_prretcode(int retcode); │ │ │ │ │ -833 │ │ │ │ │ -834#ifdef __cplusplus │ │ │ │ │ -835#if 0 │ │ │ │ │ -836{ │ │ │ │ │ -837#endif │ │ │ │ │ -838} │ │ │ │ │ -839#endif │ │ │ │ │ -840 │ │ │ │ │ -841#endif │ │ │ │ │ -_cs_objname │ │ │ │ │ -Definition cspublic.h:728 │ │ │ │ │ -_cs_objdata │ │ │ │ │ -Definition cspublic.h:748 │ │ │ │ │ -_cs_datafmt │ │ │ │ │ -Definition cstypes.h:119 │ │ │ │ │ -_cs_daterec │ │ │ │ │ -Definition cstypes.h:168 │ │ │ │ │ -_cs_clientmsg │ │ │ │ │ -Definition cstypes.h:186 │ │ │ │ │ -_cs_servermsg │ │ │ │ │ -Definition cstypes.h:200 │ │ │ │ │ -_cs_context │ │ │ │ │ -Definition ctlib.h:135 │ │ │ │ │ -_cs_connection │ │ │ │ │ -Definition ctlib.h:188 │ │ │ │ │ -_cs_command │ │ │ │ │ -Definition ctlib.h:284 │ │ │ │ │ -_cs_blkdesc │ │ │ │ │ -Definition ctlib.h:311 │ │ │ │ │ -_cs_locale │ │ │ │ │ -Definition ctlib.h:320 │ │ │ │ │ +23#ifdef __cplusplus │ │ │ │ │ +24extern "C" │ │ │ │ │ +25{ │ │ │ │ │ +26#if 0 │ │ │ │ │ +27} │ │ │ │ │ +28#endif │ │ │ │ │ +29#endif │ │ │ │ │ +30 │ │ │ │ │ +31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12: │ │ │ │ │ +42:12 freddy77 Exp $"; │ │ │ │ │ +32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, │ │ │ │ │ +no_unused_syberror_h_warn }; │ │ │ │ │ +33 │ │ │ │ │ +34/* severity levels, gleaned from google */ │ │ │ │ │ +35#define EXINFO 1 │ │ │ │ │ +36#define EXUSER 2 │ │ │ │ │ +37#define EXNONFATAL 3 │ │ │ │ │ +38#define EXCONVERSION 4 │ │ │ │ │ +39#define EXSERVER 5 │ │ │ │ │ +40#define EXTIME 6 │ │ │ │ │ +41#define EXPROGRAM 7 │ │ │ │ │ +42#define EXRESOURCE 8 │ │ │ │ │ +43#define EXCOMM 9 │ │ │ │ │ +44#define EXFATAL 10 │ │ │ │ │ +45#define EXCONSISTENCY 11 │ │ │ │ │ +46 │ │ │ │ │ +47#ifdef __cplusplus │ │ │ │ │ +48#if 0 │ │ │ │ │ +49{ │ │ │ │ │ +50#endif │ │ │ │ │ +51} │ │ │ │ │ +52#endif │ │ │ │ │ +53 │ │ │ │ │ +54#endif │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00530_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: include/ctpublic.h Source File │ │ │ │ +FreeTDS API: include/sqlfront.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,162 +74,78 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
ctpublic.h
│ │ │ │ +
sqlfront.h
│ │ │ │
│ │ │ │
│ │ │ │
1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
│ │ │ │
2 * Copyright (C) 1998-1999 Brian Bruns
│ │ │ │ -
3 *
│ │ │ │ -
4 * This library is free software; you can redistribute it and/or
│ │ │ │ -
5 * modify it under the terms of the GNU Library General Public
│ │ │ │ -
6 * License as published by the Free Software Foundation; either
│ │ │ │ -
7 * version 2 of the License, or (at your option) any later version.
│ │ │ │ -
8 *
│ │ │ │ -
9 * This library is distributed in the hope that it will be useful,
│ │ │ │ -
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ -
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ -
12 * Library General Public License for more details.
│ │ │ │ -
13 *
│ │ │ │ -
14 * You should have received a copy of the GNU Library General Public
│ │ │ │ -
15 * License along with this library; if not, write to the
│ │ │ │ -
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ -
17 * Boston, MA 02111-1307, USA.
│ │ │ │ -
18 */
│ │ │ │ -
19
│ │ │ │ -
20#ifndef _ctpublic_h_
│ │ │ │ -
21#define _ctpublic_h_
│ │ │ │ -
22
│ │ │ │ -
23#include <cspublic.h>
│ │ │ │ -
24
│ │ │ │ -
25#undef TDS_STATIC_CAST
│ │ │ │ -
26#ifdef __cplusplus
│ │ │ │ -
27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
│ │ │ │ -
28extern "C"
│ │ │ │ -
29{
│ │ │ │ -
30#if 0
│ │ │ │ -
31}
│ │ │ │ -
32#endif
│ │ │ │ -
33#else
│ │ │ │ -
34#define TDS_STATIC_CAST(type, a) ((type)(a))
│ │ │ │ -
35#endif
│ │ │ │ -
36
│ │ │ │ -
37/*
│ │ │ │ -
38** define for each CT-Lib API
│ │ │ │ -
39*/
│ │ │ │ -
40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)
│ │ │ │ -
41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)
│ │ │ │ -
42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)
│ │ │ │ -
43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)
│ │ │ │ -
44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)
│ │ │ │ -
45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)
│ │ │ │ -
46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)
│ │ │ │ -
47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)
│ │ │ │ -
48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)
│ │ │ │ -
49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)
│ │ │ │ -
50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)
│ │ │ │ -
51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)
│ │ │ │ -
52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)
│ │ │ │ -
53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)
│ │ │ │ -
54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)
│ │ │ │ -
55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)
│ │ │ │ -
56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)
│ │ │ │ -
57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)
│ │ │ │ -
58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)
│ │ │ │ -
59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)
│ │ │ │ -
60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)
│ │ │ │ -
61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)
│ │ │ │ -
62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)
│ │ │ │ -
63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)
│ │ │ │ -
64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)
│ │ │ │ -
65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)
│ │ │ │ -
66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)
│ │ │ │ -
67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)
│ │ │ │ -
68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)
│ │ │ │ -
69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)
│ │ │ │ -
70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)
│ │ │ │ -
71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)
│ │ │ │ -
72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)
│ │ │ │ -
73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)
│ │ │ │ -
74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)
│ │ │ │ -
75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)
│ │ │ │ -
76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)
│ │ │ │ -
77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)
│ │ │ │ -
78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)
│ │ │ │ -
79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)
│ │ │ │ -
80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)
│ │ │ │ -
81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)
│ │ │ │ -
82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)
│ │ │ │ -
83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)
│ │ │ │ -
84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)
│ │ │ │ -
85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)
│ │ │ │ -
86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)
│ │ │ │ -
87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)
│ │ │ │ -
88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)
│ │ │ │ -
89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)
│ │ │ │ -
90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)
│ │ │ │ -
91
│ │ │ │ -
92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10:48:26 freddy77 Exp $";
│ │ │ │ -
93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, no_unused_ctpublic_h_warn };
│ │ │ │ -
94
│ │ │ │ -
95
│ │ │ │ -
96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);
│ │ │ │ -
97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);
│ │ │ │ -
98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ -
99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT snamelen);
│ │ │ │ -
100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);
│ │ │ │ -
101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);
│ │ │ │ -
102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);
│ │ │ │ -
103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);
│ │ │ │ -
104CS_RETCODE ct_con_drop(CS_CONNECTION * con);
│ │ │ │ -
105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);
│ │ │ │ -
106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, CS_INT buflen, CS_INT option);
│ │ │ │ -
107CS_RETCODE ct_send(CS_COMMAND * cmd);
│ │ │ │ -
108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);
│ │ │ │ -
109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);
│ │ │ │ -
110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read);
│ │ │ │ -
111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ -
112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
│ │ │ │ -
113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt);
│ │ │ │ -
114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, CS_INT type, CS_VOID * func);
│ │ │ │ -
115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);
│ │ │ │ -
116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);
│ │ │ │ -
117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
│ │ │ │ -
121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);
│ │ │ │ -
122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_IODESC * iodesc);
│ │ │ │ -
123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, CS_INT capability, CS_VOID * value);
│ │ │ │ -
124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT idlen, CS_CHAR * buffer, CS_INT buflen);
│ │ │ │ -
125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT datalen, CS_SMALLINT indicator);
│ │ │ │ -
126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT * datalen, CS_SMALLINT * indicator);
│ │ │ │ -
127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_VOID * param, CS_INT paramlen, CS_INT * outlen);
│ │ │ │ -
128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT milliseconds, CS_CONNECTION ** compconn,
│ │ │ │ -
129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);
│ │ │ │ -
130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT namelen, CS_CHAR * text, CS_INT tlen, CS_INT option);
│ │ │ │ -
131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
│ │ │ │ -
132
│ │ │ │ -
133#ifdef __cplusplus
│ │ │ │ -
134#if 0
│ │ │ │ -
135{
│ │ │ │ -
136#endif
│ │ │ │ -
137}
│ │ │ │ -
138#endif
│ │ │ │ -
139
│ │ │ │ -
140#endif
│ │ │ │ -
Definition cstypes.h:102
│ │ │ │ -
Definition cstypes.h:119
│ │ │ │ -
Definition ctlib.h:135
│ │ │ │ -
Definition ctlib.h:188
│ │ │ │ -
Definition ctlib.h:284
│ │ │ │ +
3 * Copyright (C) 2011 Frediano Ziglio
│ │ │ │ +
4 *
│ │ │ │ +
5 * This library is free software; you can redistribute it and/or
│ │ │ │ +
6 * modify it under the terms of the GNU Library General Public
│ │ │ │ +
7 * License as published by the Free Software Foundation; either
│ │ │ │ +
8 * version 2 of the License, or (at your option) any later version.
│ │ │ │ +
9 *
│ │ │ │ +
10 * This library is distributed in the hope that it will be useful,
│ │ │ │ +
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
│ │ │ │ +
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │ +
13 * Library General Public License for more details.
│ │ │ │ +
14 *
│ │ │ │ +
15 * You should have received a copy of the GNU Library General Public
│ │ │ │ +
16 * License along with this library; if not, write to the
│ │ │ │ +
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
│ │ │ │ +
18 * Boston, MA 02111-1307, USA.
│ │ │ │ +
19 */
│ │ │ │ +
20
│ │ │ │ +
21#ifndef SQLFRONT_h
│ │ │ │ +
22#define SQLFRONT_h
│ │ │ │ +
23
│ │ │ │ +
24#include "./sybfront.h"
│ │ │ │ +
25
│ │ │ │ +
26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11:06:31 freddy77 Exp $";
│ │ │ │ +
27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, no_unused_sqlfront_h_warn };
│ │ │ │ +
28
│ │ │ │ +
29typedef DBPROCESS * PDBPROCESS;
│ │ │ │ +
30typedef LOGINREC * PLOGINREC;
│ │ │ │ +
31typedef DBCURSOR * PDBCURSOR;
│ │ │ │ +
32
│ │ │ │ +
33typedef int * LPINT;
│ │ │ │ +
34typedef char * LPSTR;
│ │ │ │ +
35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)
│ │ │ │ +
36typedef BYTE * LPBYTE;
│ │ │ │ +
37#endif
│ │ │ │ +
38typedef void * LPVOID;
│ │ │ │ +
39typedef const char * LPCSTR;
│ │ │ │ +
40
│ │ │ │ +
41typedef const LPINT LPCINT;
│ │ │ │ +
42#ifndef _LPCBYTE_DEFINED
│ │ │ │ +
43#define _LPCBYTE_DEFINED
│ │ │ │ +
44typedef const BYTE * LPCBYTE;
│ │ │ │ +
45#endif
│ │ │ │ +
46typedef USHORT * LPUSHORT;
│ │ │ │ +
47typedef const LPUSHORT LPCUSHORT;
│ │ │ │ +
48typedef DBINT * LPDBINT;
│ │ │ │ +
49typedef const LPDBINT LPCDBINT;
│ │ │ │ +
50typedef DBBINARY * LPDBBINARY;
│ │ │ │ +
51typedef const LPDBBINARY LPCDBBINARY;
│ │ │ │ +
52typedef DBDATEREC * LPDBDATEREC;
│ │ │ │ +
53typedef const LPDBDATEREC LPCDBDATEREC;
│ │ │ │ +
54typedef DBDATETIME * LPDBDATETIME;
│ │ │ │ +
55typedef const LPDBDATETIME LPCDBDATETIME;
│ │ │ │ +
56
│ │ │ │ +
57#endif
│ │ │ │ +
Definition bsqlodbc.c:100
│ │ │ │ +
Definition dblib.h:123
│ │ │ │ +
Definition sybdb.h:296
│ │ │ │ +
Definition sybdb.h:475
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,181 +1,75 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * include │ │ │ │ │ -ctpublic.h │ │ │ │ │ +sqlfront.h │ │ │ │ │ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases │ │ │ │ │ 2 * Copyright (C) 1998-1999 Brian Bruns │ │ │ │ │ -3 * │ │ │ │ │ -4 * This library is free software; you can redistribute it and/or │ │ │ │ │ -5 * modify it under the terms of the GNU Library General Public │ │ │ │ │ -6 * License as published by the Free Software Foundation; either │ │ │ │ │ -7 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ -8 * │ │ │ │ │ -9 * This library is distributed in the hope that it will be useful, │ │ │ │ │ -10 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ -12 * Library General Public License for more details. │ │ │ │ │ -13 * │ │ │ │ │ -14 * You should have received a copy of the GNU Library General Public │ │ │ │ │ -15 * License along with this library; if not, write to the │ │ │ │ │ -16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ -17 * Boston, MA 02111-1307, USA. │ │ │ │ │ -18 */ │ │ │ │ │ -19 │ │ │ │ │ -20#ifndef _ctpublic_h_ │ │ │ │ │ -21#define _ctpublic_h_ │ │ │ │ │ -22 │ │ │ │ │ -23#include │ │ │ │ │ -24 │ │ │ │ │ -25#undef TDS_STATIC_CAST │ │ │ │ │ -26#ifdef __cplusplus │ │ │ │ │ -27#define TDS_STATIC_CAST(type, a) static_cast(a) │ │ │ │ │ -28extern "C" │ │ │ │ │ -29{ │ │ │ │ │ -30#if 0 │ │ │ │ │ -31} │ │ │ │ │ -32#endif │ │ │ │ │ -33#else │ │ │ │ │ -34#define TDS_STATIC_CAST(type, a) ((type)(a)) │ │ │ │ │ -35#endif │ │ │ │ │ -36 │ │ │ │ │ -37/* │ │ │ │ │ -38** define for each CT-Lib API │ │ │ │ │ -39*/ │ │ │ │ │ -40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0) │ │ │ │ │ -41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1) │ │ │ │ │ -42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2) │ │ │ │ │ -43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3) │ │ │ │ │ -44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4) │ │ │ │ │ -45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5) │ │ │ │ │ -46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6) │ │ │ │ │ -47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7) │ │ │ │ │ -48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8) │ │ │ │ │ -49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9) │ │ │ │ │ -50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10) │ │ │ │ │ -51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11) │ │ │ │ │ -52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12) │ │ │ │ │ -53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13) │ │ │ │ │ -54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14) │ │ │ │ │ -55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15) │ │ │ │ │ -56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16) │ │ │ │ │ -57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17) │ │ │ │ │ -58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18) │ │ │ │ │ -59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19) │ │ │ │ │ -60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20) │ │ │ │ │ -61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21) │ │ │ │ │ -62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22) │ │ │ │ │ -63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23) │ │ │ │ │ -64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24) │ │ │ │ │ -65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25) │ │ │ │ │ -66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26) │ │ │ │ │ -67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27) │ │ │ │ │ -68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28) │ │ │ │ │ -69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29) │ │ │ │ │ -70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30) │ │ │ │ │ -71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31) │ │ │ │ │ -72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32) │ │ │ │ │ -73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33) │ │ │ │ │ -74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34) │ │ │ │ │ -75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35) │ │ │ │ │ -76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36) │ │ │ │ │ -77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37) │ │ │ │ │ -78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38) │ │ │ │ │ -79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39) │ │ │ │ │ -80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40) │ │ │ │ │ -81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41) │ │ │ │ │ -82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42) │ │ │ │ │ -83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43) │ │ │ │ │ -84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44) │ │ │ │ │ -85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45) │ │ │ │ │ -86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46) │ │ │ │ │ -87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47) │ │ │ │ │ -88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48) │ │ │ │ │ -89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49) │ │ │ │ │ -90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000) │ │ │ │ │ -91 │ │ │ │ │ -92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10: │ │ │ │ │ -48:26 freddy77 Exp $"; │ │ │ │ │ -93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, │ │ │ │ │ -no_unused_ctpublic_h_warn }; │ │ │ │ │ -94 │ │ │ │ │ -95 │ │ │ │ │ -96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version); │ │ │ │ │ -97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con); │ │ │ │ │ -98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, │ │ │ │ │ -CS_VOID * buffer, CS_INT buflen, CS_INT * out_len); │ │ │ │ │ -99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT │ │ │ │ │ -snamelen); │ │ │ │ │ -100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd); │ │ │ │ │ -101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type); │ │ │ │ │ -102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd); │ │ │ │ │ -103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option); │ │ │ │ │ -104CS_RETCODE ct_con_drop(CS_CONNECTION * con); │ │ │ │ │ -105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused); │ │ │ │ │ -106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, │ │ │ │ │ -CS_INT buflen, CS_INT option); │ │ │ │ │ -107CS_RETCODE ct_send(CS_COMMAND * cmd); │ │ │ │ │ -108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type); │ │ │ │ │ -109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_ │ │ │ │ │ -VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator); │ │ │ │ │ -110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT │ │ │ │ │ -option, CS_INT * rows_read); │ │ │ │ │ -111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, │ │ │ │ │ -CS_INT buflen, CS_INT * out_len); │ │ │ │ │ -112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_ │ │ │ │ │ -INT buflen, CS_INT * out_len); │ │ │ │ │ -113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt); │ │ │ │ │ -114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, │ │ │ │ │ -CS_INT type, CS_VOID * func); │ │ │ │ │ -115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd); │ │ │ │ │ -116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type); │ │ │ │ │ -117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_ │ │ │ │ │ -VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, │ │ │ │ │ -CS_VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_ │ │ │ │ │ -VOID * buffer, CS_INT buflen, CS_INT * outlen); │ │ │ │ │ -120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_ │ │ │ │ │ -INT buflen, CS_INT * outlen); │ │ │ │ │ -121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen); │ │ │ │ │ -122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_ │ │ │ │ │ -IODESC * iodesc); │ │ │ │ │ -123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, │ │ │ │ │ -CS_INT capability, CS_VOID * value); │ │ │ │ │ -124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT │ │ │ │ │ -idlen, CS_CHAR * buffer, CS_INT buflen); │ │ │ │ │ -125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, │ │ │ │ │ -CS_INT datalen, CS_SMALLINT indicator); │ │ │ │ │ -126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * │ │ │ │ │ -data, CS_INT * datalen, CS_SMALLINT * indicator); │ │ │ │ │ -127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_ │ │ │ │ │ -VOID * param, CS_INT paramlen, CS_INT * outlen); │ │ │ │ │ -128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT │ │ │ │ │ -milliseconds, CS_CONNECTION ** compconn, │ │ │ │ │ -129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus); │ │ │ │ │ -130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT │ │ │ │ │ -namelen, CS_CHAR * text, CS_INT tlen, CS_INT option); │ │ │ │ │ -131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_ │ │ │ │ │ -INT idx, CS_VOID * buffer); │ │ │ │ │ -132 │ │ │ │ │ -133#ifdef __cplusplus │ │ │ │ │ -134#if 0 │ │ │ │ │ -135{ │ │ │ │ │ -136#endif │ │ │ │ │ -137} │ │ │ │ │ -138#endif │ │ │ │ │ -139 │ │ │ │ │ -140#endif │ │ │ │ │ -_cs_iodesc │ │ │ │ │ -Definition cstypes.h:102 │ │ │ │ │ -_cs_datafmt │ │ │ │ │ -Definition cstypes.h:119 │ │ │ │ │ -_cs_context │ │ │ │ │ -Definition ctlib.h:135 │ │ │ │ │ -_cs_connection │ │ │ │ │ -Definition ctlib.h:188 │ │ │ │ │ -_cs_command │ │ │ │ │ -Definition ctlib.h:284 │ │ │ │ │ +3 * Copyright (C) 2011 Frediano Ziglio │ │ │ │ │ +4 * │ │ │ │ │ +5 * This library is free software; you can redistribute it and/or │ │ │ │ │ +6 * modify it under the terms of the GNU Library General Public │ │ │ │ │ +7 * License as published by the Free Software Foundation; either │ │ │ │ │ +8 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ +9 * │ │ │ │ │ +10 * This library is distributed in the hope that it will be useful, │ │ │ │ │ +11 * but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU │ │ │ │ │ +13 * Library General Public License for more details. │ │ │ │ │ +14 * │ │ │ │ │ +15 * You should have received a copy of the GNU Library General Public │ │ │ │ │ +16 * License along with this library; if not, write to the │ │ │ │ │ +17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ +18 * Boston, MA 02111-1307, USA. │ │ │ │ │ +19 */ │ │ │ │ │ +20 │ │ │ │ │ +21#ifndef SQLFRONT_h │ │ │ │ │ +22#define SQLFRONT_h │ │ │ │ │ +23 │ │ │ │ │ +24#include "./sybfront.h" │ │ │ │ │ +25 │ │ │ │ │ +26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11: │ │ │ │ │ +06:31 freddy77 Exp $"; │ │ │ │ │ +27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, │ │ │ │ │ +no_unused_sqlfront_h_warn }; │ │ │ │ │ +28 │ │ │ │ │ +29typedef DBPROCESS * PDBPROCESS; │ │ │ │ │ +30typedef LOGINREC * PLOGINREC; │ │ │ │ │ +31typedef DBCURSOR * PDBCURSOR; │ │ │ │ │ +32 │ │ │ │ │ +33typedef int * LPINT; │ │ │ │ │ +34typedef char * LPSTR; │ │ │ │ │ +35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API) │ │ │ │ │ +36typedef BYTE * LPBYTE; │ │ │ │ │ +37#endif │ │ │ │ │ +38typedef void * LPVOID; │ │ │ │ │ +39typedef const char * LPCSTR; │ │ │ │ │ +40 │ │ │ │ │ +41typedef const LPINT LPCINT; │ │ │ │ │ +42#ifndef _LPCBYTE_DEFINED │ │ │ │ │ +43#define _LPCBYTE_DEFINED │ │ │ │ │ +44typedef const BYTE * LPCBYTE; │ │ │ │ │ +45#endif │ │ │ │ │ +46typedef USHORT * LPUSHORT; │ │ │ │ │ +47typedef const LPUSHORT LPCUSHORT; │ │ │ │ │ +48typedef DBINT * LPDBINT; │ │ │ │ │ +49typedef const LPDBINT LPCDBINT; │ │ │ │ │ +50typedef DBBINARY * LPDBBINARY; │ │ │ │ │ +51typedef const LPDBBINARY LPCDBBINARY; │ │ │ │ │ +52typedef DBDATEREC * LPDBDATEREC; │ │ │ │ │ +53typedef const LPDBDATEREC LPCDBDATEREC; │ │ │ │ │ +54typedef DBDATETIME * LPDBDATETIME; │ │ │ │ │ +55typedef const LPDBDATETIME LPCDBDATETIME; │ │ │ │ │ +56 │ │ │ │ │ +57#endif │ │ │ │ │ +LOGINREC │ │ │ │ │ +Definition bsqlodbc.c:100 │ │ │ │ │ +tds_dblib_dbprocess │ │ │ │ │ +Definition dblib.h:123 │ │ │ │ │ +DBDATETIME │ │ │ │ │ +Definition sybdb.h:296 │ │ │ │ │ +tds_sybase_dbdaterec │ │ │ │ │ +Definition sybdb.h:475 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00557.html │ │ │ │ @@ -78,15 +78,15 @@ │ │ │ │
Member bcp_options (DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
│ │ │ │
Simplify. Remove valuelen.
│ │ │ │
Member dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
│ │ │ │
Never fails, but only because failure conditions aren't checked.
│ │ │ │
│ │ │ │
Member dbcancel (DBPROCESS *dbproc)
│ │ │ │
Check for failure and return accordingly.
│ │ │ │ -
Member dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
│ │ │ │ +
Member dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
│ │ │ │
Support cursor rows.
│ │ │ │
Member dbconvert_ps (DBPROCESS *dbproc, int db_srctype, const BYTE *src, DBINT srclen, int db_desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
│ │ │ │

What happens if client does not reset values?

│ │ │ │

│ │ │ │

Microsoft and Sybase define this function differently.
│ │ │ │

│ │ │ │
│ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │

│ │ │ │

│ │ │ │

Support alternative to '?' for the replacement character.
│ │ │ │

│ │ │ │ │ │ │ │
Member tds_process_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
│ │ │ │
Complete TDS_DESCRIBE_RESULT description
│ │ │ │ -
Member tds_set_server (TDSLOGIN *tds_login, const char *server) TDS_WUR
│ │ │ │ +
Member tds_set_server (TDSLOGIN *tds_login, const char *server) TDS_WUR
│ │ │ │
open the log file earlier, so these messages can be seen.
│ │ │ │
│ │ │ │
Member tdsdbopen (LOGINREC *login, const char *server, int msdblib)
│ │ │ │

use asprintf() to avoid buffer overflow.

│ │ │ │

│ │ │ │

separate error messages for no-such-server and no-such-user.

│ │ │ │
│ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560.html │ │ │ │ @@ -4506,15 +4506,15 @@ │ │ │ │ columnNth in the result set, starting from 1. │ │ │ │ pdbcoladdress of structure to be populated by this function.
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
SUCCEED or FAIL.
│ │ │ │ -
See also
dbcolinfo().
│ │ │ │ +
See also
dbcolinfo().
│ │ │ │
│ │ │ │ Here is the call graph for this function:
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ @@ -4729,15 +4729,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

See which version of db-lib is in use.

│ │ │ │
Returns
null-terminated ASCII string representing the version of db-lib.
│ │ │ │
│ │ │ │ -
Remarks
FreeTDS returns the CVS version string of dblib.c.
│ │ │ │ +
Remarks
FreeTDS returns the CVS version string of dblib.c.
│ │ │ │
│ │ │ │
See also
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ dbwillconvert()

│ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga0b5ca7723f370dac9fe1f6db35e331a0_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbcoltypeinfo",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get precision and scale information for a regular result column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga0fcfcf6846442dac9dd5584d270ec72a_icgraph.dot │ │ │ │ @@ -9,15 +9,15 @@ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbclose",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaef740b394b44eb33925c2718f7b30d69",tooltip="Close a connection to the server and free associated resources."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbexit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac0ee936a9b1db7217b745a63e25f876b",tooltip="Close server connections and free all related structures."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node5 [id="Node000005",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node5 [id="Node000005",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="dbcmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga87b39d9863316b4ba85654b0885d53a0",tooltip="Append SQL to the command buffer."]; │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="dbfcmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga43727b10d4cbb7708b374811abe6eadb",tooltip="printf-like way to form SQL to send to the server."]; │ │ │ │ Node6 -> Node8 [id="edge7_Node000006_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node8 [id="Node000008",label="dbuse",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga66ea891910f0a357cc78107d6ab7d962",tooltip="Change current database."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga32eb72f6fb3edb130e59fb3dd0766e7e_cgraph.dot │ │ │ │ @@ -5,16 +5,16 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="dbconvert",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="cf."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbconvert_ps",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga8b00d5cdcaa20cba13fa2e03d52a443e",tooltip="Convert one datatype to another."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ + Node3 [id="Node000003",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="dbperror",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ Node2 -> Node4 [id="edge4_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 -> Node7 [id="edge5_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ Node2 -> Node8 [id="edge6_Node000002_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ + Node8 [id="Node000008",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga3bcdc8f584537b8278483f2cee59f130_icgraph.dot │ │ │ │ @@ -3,11 +3,11 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbcolname",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Return name of a regular result column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot.gz │ │ │ │ ├── a00560_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot │ │ │ │ │ @@ -7,22 +7,22 @@ │ │ │ │ │ rankdir="LR"; │ │ │ │ │ Node1 [id="Node000001",label="dbwritetext",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="dbconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga32eb72f6fb3edb130e59fb3dd0766e7e",tooltip="cf."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="dbconvert_ps",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga8b00d5cdcaa20cba13fa2e03d52a443e",tooltip="Convert one datatype to another."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ + Node4 [id="Node000004",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbperror",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node3 -> Node5 [id="edge5_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node8 [id="edge6_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ │ Node3 -> Node9 [id="edge7_Node000003_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ Node1 -> Node5 [id="edge8_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node10 [id="edge9_Node000001_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="dbresults",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga4e26d949be2c3bf71b1a33c75b11d931",tooltip="Set up query results."]; │ │ │ │ │ Node1 -> Node11 [id="edge10_Node000001_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="dbsqlok",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node11 -> Node12 [id="edge11_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ │ @@ -119,20 +119,20 @@ │ │ │ │ │ Node13 -> Node99 [id="edge74_Node000013_Node000099",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 -> Node83 [id="edge75_Node000013_Node000083",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node83 [id="Node000083",label="tds_set_cur_dyn",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae8b7db85af16701fc0604eb117cbd4e4",tooltip="Set current dynamic."]; │ │ │ │ │ Node13 -> Node103 [id="edge76_Node000013_Node000103",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 -> Node90 [id="edge77_Node000013_Node000090",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node13 [id="edge78_Node000001_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node106 [id="edge79_Node000001_Node000106",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node106 [id="Node000106",label="tds_writetext_continue",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab68dead99a2ebec55895a10cd3db5202",tooltip="Send some data in the writetext request started by tds_writetext_start."]; │ │ │ │ │ + Node106 [id="Node000106",label="tds_writetext_continue",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab68dead99a2ebec55895a10cd3db5202",tooltip="Send some data in the writetext request started by tds_writetext_start."]; │ │ │ │ │ Node1 -> Node107 [id="edge80_Node000001_Node000107",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node107 [id="Node000107",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ │ + Node107 [id="Node000107",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ │ Node107 -> Node12 [id="edge81_Node000107_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node108 [id="edge82_Node000001_Node000108",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node108 [id="Node000108",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node108 [id="Node000108",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node108 -> Node73 [id="edge83_Node000108_Node000073",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node73 [id="Node000073",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node73 -> Node13 [id="edge84_Node000073_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node108 -> Node109 [id="edge85_Node000108_Node000109",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node109 [id="Node000109",label="tds_submit_queryf",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gad695defcbf663b0023851a198206a772",tooltip="Format and submit a query."]; │ │ │ │ │ Node109 -> Node110 [id="edge86_Node000109_Node000110",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node110 [id="Node000110",label="tds_submit_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga57c856964a9a0b4cc43f5192647c51e7_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbvarylen",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Determine whether a column can vary in size."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga636e6f1b64743f3cf22158a56eef371f_icgraph.dot │ │ │ │ @@ -3,11 +3,11 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbcoltype",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get the datatype of a regular result set column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga6f13381522a1fa0b6ce2c15378088cdd_cgraph.dot │ │ │ │ @@ -3,13 +3,13 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="dbmoretext",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Send chunk of a text/image value to the server."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_writetext_continue",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab68dead99a2ebec55895a10cd3db5202",tooltip="Send some data in the writetext request started by tds_writetext_start."]; │ │ │ │ + Node2 [id="Node000002",label="tds_writetext_continue",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab68dead99a2ebec55895a10cd3db5202",tooltip="Send some data in the writetext request started by tds_writetext_start."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ + Node3 [id="Node000003",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga85dcc40c3615f94be96b09b2ec043533_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbnullbind",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Tie a null-indicator to a regular result column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node2 [id="Node000002",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga873bc0f4663165e711655ade1dfae795_cgraph.dot │ │ │ │ @@ -11,11 +11,11 @@ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="dbwillconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaaf8349999c16b3c36caf5947747a2915",tooltip="Test whether or not a datatype can be converted to another datatype."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ + Node6 [id="Node000006",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ Node5 -> Node7 [id="edge6_Node000005_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="tds_willconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#ga80487b313213f60d8be71a50a002bb2c",tooltip="Test if a conversion is possible."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga873bc0f4663165e711655ade1dfae795_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbbind",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Tie a host variable to a resultset column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node2 [id="Node000002",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga89fc5589b4bf41932324d2cfc6ad6433_icgraph.dot │ │ │ │ @@ -3,11 +3,11 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbcollen",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get size of a regular result column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node3 [id="Node000003",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga8b00d5cdcaa20cba13fa2e03d52a443e_cgraph.dot │ │ │ │ @@ -3,20 +3,20 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="dbconvert_ps",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Convert one datatype to another."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ + Node2 [id="Node000002",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbperror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ Node3 -> Node5 [id="edge4_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ Node1 -> Node3 [id="edge5_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node1 -> Node6 [id="edge6_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ Node1 -> Node7 [id="edge7_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ + Node7 [id="Node000007",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_ga9a35c8d3cd0e35c10555baf8f6a01e93_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbaltlen",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get size of data in compute column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot.gz │ │ │ │ ├── a00560_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot │ │ │ │ │ @@ -15,22 +15,22 @@ │ │ │ │ │ Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbalttype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaa85171e020dc606f2bd3395ad1d3ab4f",tooltip="Get datatype for a compute column."]; │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga32eb72f6fb3edb130e59fb3dd0766e7e",tooltip="cf."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="dbconvert_ps",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga8b00d5cdcaa20cba13fa2e03d52a443e",tooltip="Convert one datatype to another."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ + Node8 [id="Node000008",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ Node8 -> Node9 [id="edge8_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="dbperror",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node7 -> Node9 [id="edge9_Node000007_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node12 [id="edge10_Node000007_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ │ Node7 -> Node13 [id="edge11_Node000007_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node13 [id="Node000013",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ + Node13 [id="Node000013",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ Node1 -> Node14 [id="edge12_Node000001_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbdata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga1137a30014c6ebb6d6e9836581a09cff",tooltip="Get address of data in a regular result column."]; │ │ │ │ │ Node14 -> Node15 [id="edge13_Node000014_Node000015",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="_dbcoldata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga3c6f474c0662158f3100fe464bf077d9",tooltip="Return data from a column."]; │ │ │ │ │ Node14 -> Node16 [id="edge14_Node000014_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbcolptr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga45d1c0fba44eafde5e156a70af5d6126",tooltip="Sanity checks for column-oriented functions."]; │ │ │ │ │ Node16 -> Node9 [id="edge15_Node000016_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaa85171e020dc606f2bd3395ad1d3ab4f_icgraph.dot │ │ │ │ @@ -3,11 +3,11 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbalttype",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get datatype for a compute column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbprrow",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaa30be3414a97aac6139af2e928db91ca",tooltip="Print a result set to stdout."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaaf8349999c16b3c36caf5947747a2915_cgraph.dot │ │ │ │ @@ -3,11 +3,11 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="dbwillconvert",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Test whether or not a datatype can be converted to another datatype."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ + Node2 [id="Node000002",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_willconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#ga80487b313213f60d8be71a50a002bb2c",tooltip="Test if a conversion is possible."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaaf8349999c16b3c36caf5947747a2915_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbwillconvert",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Test whether or not a datatype can be converted to another datatype."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbaltbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gafefd17e15b22adda84366c817178dd7d",tooltip="Bind a compute column to a program variable."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga873bc0f4663165e711655ade1dfae795",tooltip="Tie a host variable to a resultset column."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gab33d2f4fd44f50e55b6c71902db4fdae_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbcolutype",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get user-defined datatype of a regular result column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaef740b394b44eb33925c2718f7b30d69_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbclose",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Close a connection to the server and free associated resources."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbexit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac0ee936a9b1db7217b745a63e25f876b",tooltip="Close server connections and free all related structures."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaf1c00d83dfa88dc99a3fb449c49660ea_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="dbaltutype",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Get user-defined datatype of a compute column."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot.gz │ │ │ │ ├── a00560_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot │ │ │ │ │ @@ -7,22 +7,22 @@ │ │ │ │ │ rankdir="LR"; │ │ │ │ │ Node1 [id="Node000001",label="dbspr1row",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Print a regular result row to a buffer."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="dbconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga32eb72f6fb3edb130e59fb3dd0766e7e",tooltip="cf."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="dbconvert_ps",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga8b00d5cdcaa20cba13fa2e03d52a443e",tooltip="Convert one datatype to another."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ + Node4 [id="Node000004",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbperror",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node3 -> Node5 [id="edge5_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node8 [id="edge6_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ │ Node3 -> Node9 [id="edge7_Node000003_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ │ Node1 -> Node10 [id="edge8_Node000001_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="dbdata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga1137a30014c6ebb6d6e9836581a09cff",tooltip="Get address of data in a regular result column."]; │ │ │ │ │ Node10 -> Node11 [id="edge9_Node000010_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="_dbcoldata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga3c6f474c0662158f3100fe464bf077d9",tooltip="Return data from a column."]; │ │ │ │ │ Node10 -> Node12 [id="edge10_Node000010_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="dbcolptr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga45d1c0fba44eafde5e156a70af5d6126",tooltip="Sanity checks for column-oriented functions."]; │ │ │ │ │ Node12 -> Node5 [id="edge11_Node000012_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00560_gafefd17e15b22adda84366c817178dd7d_cgraph.dot │ │ │ │ @@ -11,11 +11,11 @@ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="dbwillconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaaf8349999c16b3c36caf5947747a2915",tooltip="Test whether or not a datatype can be converted to another datatype."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ + Node6 [id="Node000006",label="tds_prdatatype",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#ac7a199aaeb82935f6d1dda2be551a089",tooltip="Returns type in string."]; │ │ │ │ Node5 -> Node7 [id="edge6_Node000005_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="tds_willconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#ga80487b313213f60d8be71a50a002bb2c",tooltip="Test if a conversion is possible."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00562_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz │ │ │ │ ├── a00562_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot │ │ │ │ │ @@ -15,39 +15,39 @@ │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ │ Node3 -> Node6 [id="edge5_Node000003_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbperror",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node3 -> Node9 [id="edge7_Node000003_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ Node2 -> Node6 [id="edge8_Node000002_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node19 [id="edge9_Node000002_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node19 [id="Node000019",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node19 -> Node20 [id="edge10_Node000019_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ │ Node19 -> Node21 [id="edge11_Node000019_Node000021",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node21 -> Node22 [id="edge12_Node000021_Node000022",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 [id="Node000022",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ │ Node2 -> Node110 [id="edge13_Node000002_Node000110",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node110 [id="Node000110",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ + Node110 [id="Node000110",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ Node2 -> Node111 [id="edge14_Node000002_Node000111",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node111 [id="Node000111",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node111 [id="Node000111",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node111 -> Node112 [id="edge15_Node000111_Node000112",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node112 [id="Node000112",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node112 [id="Node000112",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node112 -> Node7 [id="edge16_Node000112_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node111 -> Node21 [id="edge17_Node000111_Node000021",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node111 -> Node115 [id="edge18_Node000111_Node000115",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node115 [id="Node000115",label="tds_submit_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node2 -> Node135 [id="edge19_Node000002_Node000135",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node135 [id="Node000135",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node135 [id="Node000135",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node135 -> Node111 [id="edge20_Node000135_Node000111",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node135 -> Node136 [id="edge21_Node000135_Node000136",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node136 [id="Node000136",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ + Node136 [id="Node000136",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ Node136 -> Node7 [id="edge22_Node000136_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node138 [id="edge23_Node000001_Node000138",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node138 [id="Node000138",label="_bcp_exec_out",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node138 -> Node139 [id="edge24_Node000138_Node000139",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node139 [id="Node000139",label="_bcp_convert_out",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01435.html#a230fa5b56ae4e3509a69bd266495732b",tooltip="Convert column for output (usually to a file) Conversion is slightly different from input as:"]; │ │ │ │ │ Node139 -> Node5 [id="edge25_Node000139_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node139 -> Node140 [id="edge26_Node000139_Node000140",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00562_ga8b85f79f53a62ac7a728fe626d609b65_cgraph.dot │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="bcp_done",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Conclude the transfer of data from program variables."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="_bcp_free_storage",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#gaa134c1c3ccc4326e693adb8357272f1d",tooltip=" "]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="_bcp_free_columns",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#gacf69ac4cbe8e3c3e6ea665e31e5e85b8",tooltip=" "]; │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ + Node4 [id="Node000004",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ Node4 -> Node6 [id="edge5_Node000004_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00562_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz │ │ │ │ ├── a00562_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot │ │ │ │ │ @@ -3,25 +3,25 @@ │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ bgcolor="transparent"; │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="LR"; │ │ │ │ │ Node1 [id="Node000001",label="bcp_batch",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node2 [id="Node000002",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node2 [id="Node000002",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ │ Node1 -> Node99 [id="edge5_Node000001_Node000099",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node99 [id="Node000099",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node99 [id="Node000099",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node99 -> Node100 [id="edge6_Node000099_Node000100",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node100 [id="Node000100",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node100 [id="Node000100",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node100 -> Node101 [id="edge7_Node000100_Node000101",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node101 [id="Node000101",label="tds_convert_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gad5b76c688898b86984d09628f030d01c",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node100 -> Node14 [id="edge8_Node000100_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node100 -> Node102 [id="edge9_Node000100_Node000102",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node102 [id="Node000102",label="tds_dstr_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga396f139e4f886ac1b224a735138e73dd",tooltip="Returns the length of the string in bytes."]; │ │ │ │ │ Node99 -> Node4 [id="edge10_Node000099_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00562_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot.gz │ │ │ │ ├── a00562_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot │ │ │ │ │ @@ -13,15 +13,15 @@ │ │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="dbperror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node4 -> Node6 [id="edge5_Node000004_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node7 -> Node5 [id="edge7_Node000007_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node8 [id="edge8_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_dstr_dup",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga4e6d9fa6f9b9551a5a3390e10a5322e6",tooltip="Duplicate a string from another dynamic string."]; │ │ │ │ │ Node8 -> Node9 [id="edge9_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_dstr_copyn",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga656718f240d7403f986ae887d84a6ca1",tooltip="Set string to a given buffer of characters."]; │ │ │ │ │ Node7 -> Node10 [id="edge10_Node000007_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="tds_process_tokens",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00562_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz │ │ │ │ ├── a00562_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot │ │ │ │ │ @@ -17,27 +17,27 @@ │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbperror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node6 -> Node8 [id="edge7_Node000006_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ │ Node1 -> Node9 [id="edge8_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ Node1 -> Node10 [id="edge9_Node000001_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node10 -> Node11 [id="edge10_Node000010_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node11 [id="Node000011",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node11 -> Node12 [id="edge11_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node12 -> Node7 [id="edge12_Node000012_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 -> Node18 [id="edge13_Node000011_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node11 -> Node109 [id="edge14_Node000011_Node000109",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node109 [id="Node000109",label="tds_submit_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node10 -> Node129 [id="edge15_Node000010_Node000129",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node129 [id="Node000129",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ + Node129 [id="Node000129",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ Node129 -> Node130 [id="edge16_Node000129_Node000130",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node130 [id="Node000130",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ + Node130 [id="Node000130",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ Node130 -> Node7 [id="edge17_Node000130_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node129 -> Node7 [id="edge18_Node000129_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node129 -> Node8 [id="edge19_Node000129_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00563_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz │ │ │ │ ├── a00563_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot │ │ │ │ │ @@ -15,55 +15,55 @@ │ │ │ │ │ Node2 -> Node5 [id="edge4_Node000002_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbperror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node5 -> Node7 [id="edge6_Node000005_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ │ Node2 -> Node8 [id="edge7_Node000002_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ Node8 -> Node9 [id="edge8_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node8 -> Node13 [id="edge9_Node000008_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node13 [id="Node000013",label="tds_copy_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a50bc3749988d1c3c441044fc07ab44e4",tooltip="Reads and writes from a stream to another."]; │ │ │ │ │ + Node13 [id="Node000013",label="tds_copy_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a50bc3749988d1c3c441044fc07ab44e4",tooltip="Reads and writes from a stream to another."]; │ │ │ │ │ Node8 -> Node14 [id="edge10_Node000008_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ │ Node8 -> Node17 [id="edge11_Node000008_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_file_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a1b83c9db016b481aa1fa0352f976d50d",tooltip="Reads a chunk of data from file stream checking for terminator."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_file_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a1b83c9db016b481aa1fa0352f976d50d",tooltip="Reads a chunk of data from file stream checking for terminator."]; │ │ │ │ │ Node1 -> Node5 [id="edge12_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [id="edge13_Node000001_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node18 [id="Node000018",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node18 -> Node19 [id="edge14_Node000018_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ │ Node18 -> Node20 [id="edge15_Node000018_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge16_Node000020_Node000021",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ │ Node1 -> Node109 [id="edge17_Node000001_Node000109",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node109 [id="Node000109",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ + Node109 [id="Node000109",label="tds_bcp_send_record",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ad9e44450025cbcee1ad81d7e5a2cc099",tooltip="Send one row of data to server."]; │ │ │ │ │ Node1 -> Node110 [id="edge18_Node000001_Node000110",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node110 [id="Node000110",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node110 [id="Node000110",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node110 -> Node111 [id="edge19_Node000110_Node000111",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node111 [id="Node000111",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node111 [id="Node000111",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node111 -> Node112 [id="edge20_Node000111_Node000112",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node112 [id="Node000112",label="tds_convert_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gad5b76c688898b86984d09628f030d01c",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node111 -> Node6 [id="edge21_Node000111_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node111 -> Node113 [id="edge22_Node000111_Node000113",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node113 [id="Node000113",label="tds_dstr_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga396f139e4f886ac1b224a735138e73dd",tooltip="Returns the length of the string in bytes."]; │ │ │ │ │ Node110 -> Node20 [id="edge23_Node000110_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node110 -> Node114 [id="edge24_Node000110_Node000114",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node114 [id="Node000114",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node114 -> Node115 [id="edge25_Node000114_Node000115",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node115 [id="Node000115",label="tds_submit_query_params",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga95e0fccedc459a4404f496eec74a369a",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node115 -> Node112 [id="edge26_Node000115_Node000112",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node115 -> Node7 [id="edge27_Node000115_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node134 [id="edge28_Node000001_Node000134",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node134 [id="Node000134",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node134 [id="Node000134",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node134 -> Node110 [id="edge29_Node000134_Node000110",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node134 -> Node135 [id="edge30_Node000134_Node000135",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node135 [id="Node000135",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ + Node135 [id="Node000135",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ Node135 -> Node136 [id="edge31_Node000135_Node000136",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node136 [id="Node000136",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ + Node136 [id="Node000136",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ Node136 -> Node6 [id="edge32_Node000136_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node136 -> Node113 [id="edge33_Node000136_Node000113",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node135 -> Node6 [id="edge34_Node000135_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node135 -> Node7 [id="edge35_Node000135_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00563_gaf5e43c6f2b4b1da8e998ebaf0287906f_cgraph.dot.gz │ │ │ │ ├── a00563_gaf5e43c6f2b4b1da8e998ebaf0287906f_cgraph.dot │ │ │ │ │ @@ -13,21 +13,21 @@ │ │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="dbperror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#ga302a4ce6559b81808e3be51615cd1b67",tooltip="Call client-installed error handler."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node4 -> Node6 [id="edge5_Node000004_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_dstr_isempty",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga197c6af67f2e7469d06c2aa055917b1e",tooltip="test if string is empty"]; │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node8 -> Node9 [id="edge8_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node7 -> Node12 [id="edge9_Node000007_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_copy_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a50bc3749988d1c3c441044fc07ab44e4",tooltip="Reads and writes from a stream to another."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_copy_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a50bc3749988d1c3c441044fc07ab44e4",tooltip="Reads and writes from a stream to another."]; │ │ │ │ │ Node7 -> Node13 [id="edge10_Node000007_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node13 [id="Node000013",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ │ + Node13 [id="Node000013",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ │ Node13 -> Node14 [id="edge11_Node000013_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_dynamic_stream\l_write",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abaf688c85ea04a2392103d519a55d04e",tooltip="Writes data to a dynamic allocated buffer."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_dynamic_stream\l_write",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abaf688c85ea04a2392103d519a55d04e",tooltip="Writes data to a dynamic allocated buffer."]; │ │ │ │ │ Node7 -> Node16 [id="edge12_Node000007_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_file_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a1b83c9db016b481aa1fa0352f976d50d",tooltip="Reads a chunk of data from file stream checking for terminator."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_file_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a1b83c9db016b481aa1fa0352f976d50d",tooltip="Reads a chunk of data from file stream checking for terminator."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00566_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot.gz │ │ │ │ ├── a00566_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot │ │ │ │ │ @@ -38,27 +38,27 @@ │ │ │ │ │ Node1 -> Node14 [id="edge18_Node000001_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="bcp_sendrow",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaf1130ac97f6af55e86ec70b0aa4f5b40",tooltip="Write data in host variables to the table."]; │ │ │ │ │ Node1 -> Node15 [id="edge19_Node000001_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbaltbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gafefd17e15b22adda84366c817178dd7d",tooltip="Bind a compute column to a program variable."]; │ │ │ │ │ Node1 -> Node16 [id="edge20_Node000001_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga873bc0f4663165e711655ade1dfae795",tooltip="Tie a host variable to a resultset column."]; │ │ │ │ │ Node16 -> Node17 [id="edge21_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ + Node17 [id="Node000017",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ Node1 -> Node18 [id="edge22_Node000001_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="dbbylist",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga29b0e22f5b5b8a1dae9ea59f09f279c9",tooltip="Get bylist for a compute row."]; │ │ │ │ │ Node1 -> Node19 [id="edge23_Node000001_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga87b39d9863316b4ba85654b0885d53a0",tooltip="Append SQL to the command buffer."]; │ │ │ │ │ Node19 -> Node20 [id="edge24_Node000019_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="dbfcmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga43727b10d4cbb7708b374811abe6eadb",tooltip="printf-like way to form SQL to send to the server."]; │ │ │ │ │ Node19 -> Node21 [id="edge25_Node000019_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="dbuse",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga66ea891910f0a357cc78107d6ab7d962",tooltip="Change current database."]; │ │ │ │ │ Node1 -> Node22 [id="edge26_Node000001_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 [id="Node000022",label="dbcolptr",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00566.html#ga45d1c0fba44eafde5e156a70af5d6126",tooltip="Sanity checks for column-oriented functions."]; │ │ │ │ │ Node22 -> Node23 [id="edge27_Node000022_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node23 [id="Node000023",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ + Node23 [id="Node000023",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ Node22 -> Node24 [id="edge28_Node000022_Node000024",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 [id="Node000024",label="dbcollen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga89fc5589b4bf41932324d2cfc6ad6433",tooltip="Get size of a regular result column."]; │ │ │ │ │ Node24 -> Node23 [id="edge29_Node000024_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 -> Node17 [id="edge30_Node000024_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 -> Node25 [id="edge31_Node000022_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node25 [id="Node000025",label="dbcolname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga3bcdc8f584537b8278483f2cee59f130",tooltip="Return name of a regular result column."]; │ │ │ │ │ Node25 -> Node23 [id="edge32_Node000025_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │ │ Node30 [id="Node000030",label="dbdata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#ga1137a30014c6ebb6d6e9836581a09cff",tooltip="Get address of data in a regular result column."]; │ │ │ │ │ Node30 -> Node31 [id="edge43_Node000030_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="dbprrow",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaa30be3414a97aac6139af2e928db91ca",tooltip="Print a result set to stdout."]; │ │ │ │ │ Node1 -> Node40 [id="edge44_Node000001_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node40 [id="Node000040",label="dbconvert_ps",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#ga8b00d5cdcaa20cba13fa2e03d52a443e",tooltip="Convert one datatype to another."]; │ │ │ │ │ Node1 -> Node20 [id="edge45_Node000001_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node43 [id="edge46_Node000001_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node43 [id="Node000043",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ + Node43 [id="Node000043",label="dbgetnull",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#aea6a865806d454280126de940478c214",tooltip=" "]; │ │ │ │ │ Node43 -> Node40 [id="edge47_Node000043_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node44 [id="edge48_Node000001_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 [id="Node000044",label="dblogin",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga0c66b475d359cb3e69cdf4b163a07eeb",tooltip="Allocate a LOGINREC structure."]; │ │ │ │ │ Node1 -> Node17 [id="edge49_Node000001_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node31 [id="edge50_Node000001_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node45 [id="edge51_Node000001_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node45 [id="Node000045",label="dbrecftos",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gabb14ad9f268b92a8d63fa506098b24dd",tooltip="Record to a file all SQL commands sent to the server."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00566_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot.gz │ │ │ │ ├── a00566_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot │ │ │ │ │ @@ -3,20 +3,20 @@ │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ bgcolor="transparent"; │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="dbcolptr",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Sanity checks for column-oriented functions."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ + Node2 [id="Node000002",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="dbcollen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga89fc5589b4bf41932324d2cfc6ad6433",tooltip="Get size of a regular result column."]; │ │ │ │ │ Node3 -> Node2 [id="edge3_Node000003_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node4 [id="edge4_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ + Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ Node1 -> Node5 [id="edge5_Node000001_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbcolname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga3bcdc8f584537b8278483f2cee59f130",tooltip="Return name of a regular result column."]; │ │ │ │ │ Node5 -> Node2 [id="edge6_Node000005_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 -> Node4 [id="edge7_Node000005_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node6 [id="edge8_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbcolsource",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga7be8b405d5416bf0361f65dbb5942faa",tooltip="Get base database column name for a result set column."]; │ │ │ │ │ Node1 -> Node7 [id="edge9_Node000001_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00566_gae6da75d7b9e7b567890fc83c9459d824_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tdsdbopen",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Form a connection with the server."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node2 [id="Node000002",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571.html │ │ │ │ @@ -141,15 +141,15 @@ │ │ │ │   │ │ │ │ │ │ │ │ static const void * tds_find (const void *key, const void *base, size_t nelem, size_t width, int(*compar)(const void *, const void *)) │ │ │ │   │ │ │ │ void tds_fix_login (TDSLOGIN *login) │ │ │ │  Fix configuration after reading it.
│ │ │ │   │ │ │ │ -const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void) │ │ │ │ +const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void) │ │ │ │  Return a structure capturing the compile-time settings provided to the configure script.
│ │ │ │   │ │ │ │ struct addrinfo * tds_lookup_host (const char *servername) │ │ │ │  Get the IP address for a hostname.
│ │ │ │   │ │ │ │ │ │ │ │ TDSRET tds_lookup_host_set (const char *servername, struct addrinfo **addr) │ │ │ │ @@ -404,15 +404,15 @@ │ │ │ │ │ │ │ │

◆ tds_get_compiletime_settings()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings (void )
│ │ │ │
│ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_ga0f9a22fb6744c5224a97ec3f83af4e15_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="parse_server_name_for_port",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Check the server name to find port info first Warning: connection-> & login-> are all modified when n..."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_ga44fdbe16827097d947f900d96003de98_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_read_conf_section",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Read a section of configuration file (INI style file)"]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_get_locale",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00329.html#a41390fa6e1083ba84fb523797e6b5275",tooltip="Get locale information."]; │ │ │ │ + Node2 [id="Node000002",label="tds_get_locale",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00155.html#a41390fa6e1083ba84fb523797e6b5275",tooltip="Get locale information."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_ga4799b423b5d982dbc8f31b7738255eef_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_read_conf_file",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Read configuration info for given server return 0 on error."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_ga66de78d379cad2ee3d6c26948ad6445f_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_read_interfaces",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Try to find the IP number and port for a (possibly) logical server name."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_ga9ff2436ea56ddcdecf984acf46ce4b90_icgraph.dot │ │ │ │ @@ -5,9 +5,9 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_read_config_info",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node3 [id="Node000003",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00571_gacee4f06ba749b10ee9f2e5bb1c4a8910_icgraph.dot │ │ │ │ @@ -7,10 +7,10 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_fix_login",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Fix configuration after reading it."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ Node1 -> Node3 [id="edge4_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00572.html │ │ │ │ @@ -261,21 +261,21 @@ │ │ │ │   │ │ │ │ │ │ │ │ static TDS_INT tds_convert_uint8 (const TDS_UINT8 *src, int desttype, CONV_RESULT *cr) │ │ │ │   │ │ │ │ │ │ │ │ static TDS_INT tds_convert_unique (const TDS_CHAR *src, int desttype, CONV_RESULT *cr) │ │ │ │   │ │ │ │ -TDSRET tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr) │ │ │ │ +TDSRET tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr) │ │ │ │  Convert from db date format to a structured date format.
│ │ │ │   │ │ │ │ TDS_SERVER_TYPE tds_get_null_type (TDS_SERVER_TYPE srctype) │ │ │ │  Get same type but nullable.
│ │ │ │   │ │ │ │ -size_t tds_strftime (char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec) │ │ │ │ +size_t tds_strftime (char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec) │ │ │ │  format a date string according to an "extended" strftime(3) formatting definition.
│ │ │ │   │ │ │ │ unsigned char tds_willconvert (int srctype, int desttype) │ │ │ │  Test if a conversion is possible.
│ │ │ │   │ │ │ │ │ │ │ │ static void two_digit (char *out, int num) │ │ │ │ @@ -833,15 +833,15 @@ │ │ │ │ │ │ │ │ const void *  │ │ │ │ di, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - TDSDATEREC *  │ │ │ │ + TDSDATEREC *  │ │ │ │ dr  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ @@ -916,15 +916,15 @@ │ │ │ │ │ │ │ │ const char *  │ │ │ │ format, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - const TDSDATEREC *  │ │ │ │ + const TDSDATEREC *  │ │ │ │ dr, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ int  │ │ │ │ prec  │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00572_ga80487b313213f60d8be71a50a002bb2c_icgraph.dot │ │ │ │ @@ -9,9 +9,9 @@ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbwillconvert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaaf8349999c16b3c36caf5947747a2915",tooltip="Test whether or not a datatype can be converted to another datatype."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbaltbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gafefd17e15b22adda84366c817178dd7d",tooltip="Bind a compute column to a program variable."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="dbbind",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga873bc0f4663165e711655ade1dfae795",tooltip="Tie a host variable to a resultset column."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node5 [id="Node000005",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ + Node5 [id="Node000005",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00573.html │ │ │ │ @@ -169,15 +169,15 @@ │ │ │ │   │ │ │ │ │ │ │ │ static int put_utf16le (unsigned char *buf, size_t buf_len, ICONV_CHAR c) │ │ │ │   │ │ │ │ │ │ │ │ static int put_utf8 (unsigned char *buf, size_t buf_len, ICONV_CHAR c) │ │ │ │   │ │ │ │ -static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size) │ │ │ │ +static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size) │ │ │ │  Move the input sequence pointer to the next valid position.
│ │ │ │   │ │ │ │ │ │ │ │ void tds7_srv_charset_changed (TDSCONNECTION *conn, TDS_UCHAR collation[5]) │ │ │ │   │ │ │ │ int tds_canonical_charset (const char *charset_name) │ │ │ │  Determine canonical iconv character set.
│ │ │ │ @@ -269,15 +269,15 @@ │ │ │ │ ( │ │ │ │ iconv_t  │ │ │ │ cd, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - const TDS_ENCODING *  │ │ │ │ + const TDS_ENCODING *  │ │ │ │ charset, │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ const char **  │ │ │ │ input, │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00573_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz │ │ │ │ ├── a00573_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot │ │ │ │ │ @@ -7,33 +7,33 @@ │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="skip_one_input_sequence",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Move the input sequence pointer to the next valid position."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="tds_iconv",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="odbc_set_string_flag",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00569.html#gadba4490bf3183799a70c9e2f44fab331",tooltip="Copy a string to client setting size according to ODBC convenction."]; │ │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="read_and_convert",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node4 -> Node63 [id="edge5_Node000004_Node000063",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node63 [id="Node000063",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ + Node63 [id="Node000063",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ Node4 -> Node65 [id="edge6_Node000004_Node000065",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node65 [id="Node000065",label="tds_put_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node65 -> Node61 [id="edge7_Node000065_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node61 [id="Node000061",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node61 [id="Node000061",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node65 -> Node71 [id="edge8_Node000065_Node000071",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node71 [id="Node000071",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node65 -> Node72 [id="edge9_Node000065_Node000072",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node72 [id="Node000072",label="tds_submit_prepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga74eb08c3a1c85be8ac9db428842c8b9d",tooltip="Creates a temporary stored procedure in the server."]; │ │ │ │ │ Node65 -> Node73 [id="edge10_Node000065_Node000073",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node73 [id="Node000073",label="tds_submit_query_params",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga95e0fccedc459a4404f496eec74a369a",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node2 -> Node91 [id="edge11_Node000002_Node000091",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node91 [id="Node000091",label="tds_convert_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gad5b76c688898b86984d09628f030d01c",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node91 -> Node70 [id="edge12_Node000091_Node000070",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node70 [id="Node000070",label="tds71_submit_prepexec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga08877c101704bebe4fa57e0849dc272d",tooltip="Creates a temporary stored procedure in the server and execute it."]; │ │ │ │ │ Node91 -> Node92 [id="edge13_Node000091_Node000092",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node92 [id="Node000092",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node92 [id="Node000092",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node91 -> Node61 [id="edge14_Node000091_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node91 -> Node71 [id="edge15_Node000091_Node000071",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node91 -> Node72 [id="edge16_Node000091_Node000072",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node91 -> Node73 [id="edge17_Node000091_Node000073",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00573_ga3a7a7b4d6ed344127e164dd0b443d790_cgraph.dot │ │ │ │ @@ -3,12 +3,12 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_iconv_info_init",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Open iconv descriptors to convert between character sets (both directions)."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ + Node2 [id="Node000002",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01453.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_sys_iconv_open",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516",tooltip="Inputs are FreeTDS canonical names, no other."]; │ │ │ │ Node1 -> Node3 [id="edge3_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00573_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz │ │ │ │ ├── a00573_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot │ │ │ │ │ @@ -5,25 +5,25 @@ │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="tds_iconv",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="odbc_set_string_flag",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00569.html#gadba4490bf3183799a70c9e2f44fab331",tooltip="Copy a string to client setting size according to ODBC convenction."]; │ │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_get_char_data",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga8d214089b6e97fc0da5e0be09f216d73",tooltip="Fetch character data the wire."]; │ │ │ │ │ Node4 -> Node7 [id="edge5_Node000004_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_get_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node7 -> Node60 [id="edge6_Node000007_Node000060",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node60 [id="Node000060",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node60 [id="Node000060",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node3 -> Node62 [id="edge7_Node000003_Node000062",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node62 [id="Node000062",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ + Node62 [id="Node000062",label="tds_bcp_fread",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ │ Node62 -> Node63 [id="edge8_Node000062_Node000063",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node63 [id="Node000063",label="_bcp_read_hostfile",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gaf5e43c6f2b4b1da8e998ebaf0287906f",tooltip=" "]; │ │ │ │ │ Node3 -> Node64 [id="edge9_Node000003_Node000064",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node64 [id="Node000064",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node64 -> Node65 [id="edge10_Node000064_Node000065",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node65 [id="Node000065",label="tds4_send_emulated_rpc",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga2d0a06c1a30dd2470dc7a788de21b080",tooltip="Send RPC as string query."]; │ │ │ │ │ Node65 -> Node66 [id="edge11_Node000065_Node000066",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -78,15 +78,15 @@ │ │ │ │ │ Node64 -> Node66 [id="edge46_Node000064_Node000066",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node64 -> Node89 [id="edge47_Node000064_Node000089",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node89 [id="Node000089",label="tds_submit_unprepare",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gaf573d8d4d2660c8c27770573fca05ff5",tooltip="Send a unprepare request for a prepared query."]; │ │ │ │ │ Node1 -> Node90 [id="edge48_Node000001_Node000090",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node90 [id="Node000090",label="tds_convert_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gad5b76c688898b86984d09628f030d01c",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node90 -> Node69 [id="edge49_Node000090_Node000069",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node90 -> Node91 [id="edge50_Node000090_Node000091",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node91 [id="Node000091",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node91 [id="Node000091",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node91 -> Node36 [id="edge51_Node000091_Node000036",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node36 [id="Node000036",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node36 [id="Node000036",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node90 -> Node60 [id="edge52_Node000090_Node000060",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node90 -> Node70 [id="edge53_Node000090_Node000070",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node90 -> Node71 [id="edge54_Node000090_Node000071",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node90 -> Node72 [id="edge55_Node000090_Node000072",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00573_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz │ │ │ │ ├── a00573_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot │ │ │ │ │ @@ -9,25 +9,25 @@ │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="skip_one_input_sequence",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga3380140fc6eb9f2090c430f40e846876",tooltip="Move the input sequence pointer to the next valid position."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="tds_iconv",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="odbc_set_string_flag",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00569.html#gadba4490bf3183799a70c9e2f44fab331",tooltip="Copy a string to client setting size according to ODBC convenction."]; │ │ │ │ │ Node3 -> Node5 [id="edge4_Node000003_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node3 -> Node92 [id="edge5_Node000003_Node000092",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node92 [id="Node000092",label="tds_convert_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gad5b76c688898b86984d09628f030d01c",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node1 -> Node3 [id="edge6_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node94 [id="edge7_Node000001_Node000094",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node94 [id="Node000094",label="tds_iconv_info_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga3a7a7b4d6ed344127e164dd0b443d790",tooltip="Open iconv descriptors to convert between character sets (both directions)."]; │ │ │ │ │ Node94 -> Node95 [id="edge8_Node000094_Node000095",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node95 [id="Node000095",label="tds_iconv_get_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga1639ccaa7e17c07457bcb37f313bc52f",tooltip="Get a iconv info structure, allocate and initialize if needed."]; │ │ │ │ │ Node95 -> Node96 [id="edge9_Node000095_Node000096",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node96 [id="Node000096",label="adjust_character_column_size",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga91770634ce8c0d6f1fe007b45da186fd",tooltip="Adjust column size according to client's encoding."]; │ │ │ │ │ Node95 -> Node99 [id="edge10_Node000095_Node000099",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node99 [id="Node000099",label="tds_iconv_from_collate",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga9d433c15ab3738aa2a477a416330f49f",tooltip="Get iconv information from a LCID (to support different column encoding under MSSQL2K)"]; │ │ │ │ │ Node1 -> Node100 [id="edge11_Node000001_Node000100",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node100 [id="Node000100",label="tds_iconv_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a30bcae80553efae075b0886bfcda1e35",tooltip="Initialize charset searching for UTF-8, UCS-2 and ISO8859-1."]; │ │ │ │ │ + Node100 [id="Node000100",label="tds_iconv_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01453.html#a30bcae80553efae075b0886bfcda1e35",tooltip="Initialize charset searching for UTF-8, UCS-2 and ISO8859-1."]; │ │ │ │ │ Node1 -> Node101 [id="edge12_Node000001_Node000101",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node101 [id="Node000101",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ │ + Node101 [id="Node000101",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01453.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ │ Node101 -> Node94 [id="edge13_Node000101_Node000094",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00574.html │ │ │ │ @@ -132,17 +132,17 @@ │ │ │ │ │ │ │ │ TDSRET tds_alloc_compute_row (TDSCOMPUTEINFO *res_info) │ │ │ │   │ │ │ │ │ │ │ │ TDSCONTEXTtds_alloc_context (void *parent) │ │ │ │   │ │ │ │ │ │ │ │ -TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen) │ │ │ │ +TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen) │ │ │ │   │ │ │ │ -TDSDYNAMICtds_alloc_dynamic (TDSCONNECTION *conn, const char *id) │ │ │ │ +TDSDYNAMICtds_alloc_dynamic (TDSCONNECTION *conn, const char *id) │ │ │ │  Allocate a dynamic statement.
│ │ │ │   │ │ │ │ │ │ │ │ TDSLOCALEtds_alloc_locale (void) │ │ │ │   │ │ │ │ │ │ │ │ TDSLOGINtds_alloc_login (bool use_environment) │ │ │ │ @@ -156,18 +156,18 @@ │ │ │ │ void * tds_alloc_param_data (TDSCOLUMN *curparam) │ │ │ │  Allocate data for a parameter.
│ │ │ │   │ │ │ │ TDSPARAMINFOtds_alloc_param_result (TDSPARAMINFO *old_param) │ │ │ │  Adds a output parameter to TDSPARAMINFO.
│ │ │ │   │ │ │ │ │ │ │ │ -TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols) │ │ │ │ +TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_alloc_row (TDSRESULTINFO *res_info) │ │ │ │ +TDSRET tds_alloc_row (TDSRESULTINFO *res_info) │ │ │ │  Allocate space for row store return NULL on out of memory.
│ │ │ │   │ │ │ │ │ │ │ │ TDSSOCKETtds_alloc_socket (TDSCONTEXT *context, unsigned int bufsize) │ │ │ │   │ │ │ │ │ │ │ │  TDS_COMPILE_CHECK (tds_cap_len, sizeof(defaultcaps)==TDS_MAX_CAPABILITY) │ │ │ │ @@ -175,31 +175,31 @@ │ │ │ │ │ │ │ │  TDS_COMPILE_CHECK (tds_values_len, sizeof(defaultcaps.types[0].values)==14) │ │ │ │   │ │ │ │ │ │ │ │ static void tds_connection_remove_socket (TDSCONNECTION *conn, TDSSOCKET *tds TDS_UNUSED) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │ +void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │   │ │ │ │ │ │ │ │ void tds_deinit_bcpinfo (TDSBCPINFO *bcpinfo) │ │ │ │   │ │ │ │ │ │ │ │ static void tds_deinit_connection (TDSCONNECTION *conn) │ │ │ │   │ │ │ │ │ │ │ │ void tds_deinit_tvp (TDS_TVP *table) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_detach_results (TDSRESULTINFO *info) │ │ │ │ +void tds_detach_results (TDSRESULTINFO *info) │ │ │ │  Detach result info from it current socket.
│ │ │ │   │ │ │ │ │ │ │ │ -void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ +void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │   │ │ │ │ │ │ │ │ void tds_free_all_results (TDSSOCKET *tds) │ │ │ │   │ │ │ │ │ │ │ │ void tds_free_bcp_column_data (BCPCOLDATA *coldata) │ │ │ │   │ │ │ │ @@ -217,15 +217,15 @@ │ │ │ │   │ │ │ │ │ │ │ │ void tds_free_context (TDSCONTEXT *context) │ │ │ │   │ │ │ │ │ │ │ │ static void tds_free_env (TDSCONNECTION *conn) │ │ │ │   │ │ │ │ -void tds_free_input_params (TDSDYNAMIC *dyn) │ │ │ │ +void tds_free_input_params (TDSDYNAMIC *dyn) │ │ │ │  Frees all allocated input parameters of a dynamic statement.
│ │ │ │   │ │ │ │ │ │ │ │ void tds_free_locale (TDSLOCALE *locale) │ │ │ │   │ │ │ │ │ │ │ │ void tds_free_login (TDSLOGIN *login) │ │ │ │ @@ -240,18 +240,18 @@ │ │ │ │ void tds_free_param_result (TDSPARAMINFO *param_info) │ │ │ │  Delete latest parameter.
│ │ │ │   │ │ │ │ │ │ │ │ void tds_free_param_results (TDSPARAMINFO *param_info) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_free_results (TDSRESULTINFO *res_info) │ │ │ │ +void tds_free_results (TDSRESULTINFO *res_info) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row) │ │ │ │ +void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row) │ │ │ │   │ │ │ │ │ │ │ │ void tds_free_socket (TDSSOCKET *tds) │ │ │ │   │ │ │ │ │ │ │ │ static void tds_free_tvp_row (TDS_TVP_ROW *row) │ │ │ │   │ │ │ │ @@ -276,24 +276,24 @@ │ │ │ │ │ │ │ │ TDSPACKETtds_realloc_packet (TDSPACKET *packet, unsigned len) │ │ │ │   │ │ │ │ │ │ │ │ TDSSOCKETtds_realloc_socket (TDSSOCKET *tds, size_t bufsize) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_release_cursor (TDSCURSOR **pcursor) │ │ │ │ +void tds_release_cursor (TDSCURSOR **pcursor) │ │ │ │   │ │ │ │ -void tds_release_dynamic (TDSDYNAMIC **pdyn) │ │ │ │ +void tds_release_dynamic (TDSDYNAMIC **pdyn) │ │ │ │  Frees dynamic statement.
│ │ │ │   │ │ │ │ │ │ │ │ -static void tds_row_free (TDSRESULTINFO *res_info, unsigned char *row) │ │ │ │ +static void tds_row_free (TDSRESULTINFO *res_info, unsigned char *row) │ │ │ │   │ │ │ │ │ │ │ │ -void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info) │ │ │ │ +void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info) │ │ │ │   │ │ │ │ │ │ │ │ static bool winsock_initialized (void) │ │ │ │   │ │ │ │ │ │ │ │ │ │ │ │ @@ -344,15 +344,15 @@ │ │ │ │ │ │ │ │

◆ tds_alloc_dynamic()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

│ │ │ │ Variables

│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -460,15 +460,15 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
TDSDYNAMIC * tds_alloc_dynamic TDSDYNAMIC * tds_alloc_dynamic (TDSCONNECTIONconn,
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void tds_free_input_params (TDSDYNAMICTDSDYNAMICdyn)
│ │ │ │
│ │ │ │ │ │ │ │

Frees all allocated input parameters of a dynamic statement.

│ │ │ │ @@ -632,15 +632,15 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void tds_release_dynamic (TDSDYNAMIC ** TDSDYNAMIC ** pdyn)
│ │ │ │
│ │ │ │ │ │ │ │

Frees dynamic statement.

│ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00574_ga4f7b22f681e7160ac03dfe8d2ae8bd39_icgraph.dot │ │ │ │ @@ -7,9 +7,9 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_init_login",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Initialize login structure with locale information and other stuff for connection."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ + Node4 [id="Node000004",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00574_ga8645f5abc49db03d14b66f72b83a9a4c_icgraph.dot │ │ │ │ @@ -3,13 +3,13 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_realloc",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Reallocate a pointer and update it if success."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_dynamic_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#abaf688c85ea04a2392103d519a55d04e",tooltip="Writes data to a dynamic allocated buffer."]; │ │ │ │ + Node2 [id="Node000002",label="tds_dynamic_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#abaf688c85ea04a2392103d519a55d04e",tooltip="Writes data to a dynamic allocated buffer."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ + Node3 [id="Node000003",label="tds_dynamic_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a4f9e40da6941cb9407d0da5bc3030517",tooltip="Initialize a dynamic output stream."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ + Node4 [id="Node000004",label="tds_bcp_fread",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a86ac92bd8a3c61a413d27150ec9bc202",tooltip="Read a data file, passing the data through iconv()."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575.html │ │ │ │ @@ -121,24 +121,24 @@ │ │ │ │   │ │ │ │ static char * tds5_fix_dot_query (const char *query, size_t *query_len, TDSPARAMINFO *params) │ │ │ │  Substitute ?-style placeholders with named (@param) ones.
│ │ │ │   │ │ │ │ static TDSRET tds5_put_params (TDSSOCKET *tds, TDSPARAMINFO *info, int flags) │ │ │ │  Send parameters to server.
│ │ │ │   │ │ │ │ -TDSRET tds71_submit_prepexec (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ +TDSRET tds71_submit_prepexec (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │  Creates a temporary stored procedure in the server and execute it.
│ │ │ │   │ │ │ │ │ │ │ │ static void tds7_put_cursor_fetch (TDSSOCKET *tds, TDS_INT cursor_id, TDS_TINYINT fetch_type, TDS_INT i_row, TDS_INT num_rows) │ │ │ │   │ │ │ │ static void tds7_put_query_params (TDSSOCKET *tds, const char *query, size_t query_len) │ │ │ │  Output params types and query (required by sp_prepare/sp_executesql/sp_prepexec)
│ │ │ │   │ │ │ │ -static TDSRET tds7_send_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ +static TDSRET tds7_send_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │  Send dynamic request on TDS 7+ to be executed.
│ │ │ │   │ │ │ │ static TDSRET tds7_write_param_def_from_params (TDSSOCKET *tds, const char *query, size_t query_len, TDSPARAMINFO *params) │ │ │ │  Write string with parameters definition, useful for TDS7+.
│ │ │ │   │ │ │ │ static TDSRET tds7_write_param_def_from_query (TDSSOCKET *tds, const char *converted_query, size_t converted_query_len, TDSPARAMINFO *params) │ │ │ │  Write string with parameters definition, useful for TDS7+.
│ │ │ │ @@ -151,49 +151,49 @@ │ │ │ │   │ │ │ │ int tds_count_placeholders (const char *query) │ │ │ │  Count the number of placeholders ('?') in a query.
│ │ │ │   │ │ │ │ static int tds_count_placeholders_ucs2le (const char *query, const char *query_end) │ │ │ │  Count the number of placeholders ('?') in a query.
│ │ │ │   │ │ │ │ -static bool tds_cursor_check_allocated (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │ +static bool tds_cursor_check_allocated (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │  Check if a cursor is allocated into the server.
│ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ +TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ +TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │  Send a deallocation request to server.
│ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, bool *something_to_send) │ │ │ │ +TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, bool *something_to_send) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row) │ │ │ │ +TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *prow_number, TDS_UINT *prow_count) │ │ │ │ +TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *prow_number, TDS_UINT *prow_count) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, bool *something_to_send) │ │ │ │ +TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, bool *something_to_send) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ +TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, bool *something_to_send) │ │ │ │ +TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, bool *something_to_send) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params) │ │ │ │ +TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params) │ │ │ │   │ │ │ │ -TDSRET tds_deferred_cursor_dealloc (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │ +TDSRET tds_deferred_cursor_dealloc (TDSCONNECTION *conn, TDSCURSOR *cursor) │ │ │ │  Deallocate cursor on idle.
│ │ │ │   │ │ │ │ -TDSRET tds_deferred_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ +TDSRET tds_deferred_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │  Unprepare dynamic on idle.
│ │ │ │   │ │ │ │ │ │ │ │ TDSRET tds_disconnect (TDSSOCKET *tds) │ │ │ │   │ │ │ │ │ │ │ │ size_t tds_fix_column_size (TDSSOCKET *tds TDS_UNUSED, TDSCOLUMN *curcol) │ │ │ │ @@ -202,23 +202,23 @@ │ │ │ │ TDSRET tds_get_column_declaration (TDSSOCKET *tds, TDSCOLUMN *curcol, char *out) │ │ │ │  Return declaration for column (like "varchar(20)").
│ │ │ │   │ │ │ │ │ │ │ │ TDSRET tds_multiple_done (TDSSOCKET *tds, TDSMULTIPLE *multiple) │ │ │ │   │ │ │ │ │ │ │ │ -TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn) │ │ │ │ +TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn) │ │ │ │   │ │ │ │ │ │ │ │ TDSRET tds_multiple_init (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS *head) │ │ │ │   │ │ │ │ │ │ │ │ TDSRET tds_multiple_query (TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO *params) │ │ │ │   │ │ │ │ -int tds_needs_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │ +int tds_needs_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn) │ │ │ │  Check if dynamic request must be unprepared.
│ │ │ │   │ │ │ │ const char * tds_next_placeholder (const char *start) │ │ │ │  Get position of next placeholder.
│ │ │ │   │ │ │ │ static const char * tds_next_placeholder_ucs2le (const char *start, const char *end, int named) │ │ │ │  Found the next placeholder (? or @param) in a string.
│ │ │ │ @@ -262,18 +262,18 @@ │ │ │ │ TDSRET tds_send_cancel (TDSSOCKET *tds) │ │ │ │  tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called directly after this.
│ │ │ │   │ │ │ │ │ │ │ │ static TDSRET tds_send_emulated_execute (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params) │ │ │ │  Emulate prepared execute traslating to a normal language.
│ │ │ │   │ │ │ │ -static void tds_set_cur_cursor (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │ +static void tds_set_cur_cursor (TDSSOCKET *tds, TDSCURSOR *cursor) │ │ │ │  Set current cursor.
│ │ │ │   │ │ │ │ -void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ +void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │  Set current dynamic.
│ │ │ │   │ │ │ │ const char * tds_skip_comment (const char *s) │ │ │ │  Skip a comment in a query.
│ │ │ │   │ │ │ │ static const char * tds_skip_comment_ucs2le (const char *s, const char *end) │ │ │ │  Skip a comment in a query.
│ │ │ │ @@ -295,21 +295,21 @@ │ │ │ │   │ │ │ │ TDSRET tds_submit_commit (TDSSOCKET *tds, bool cont) │ │ │ │  Send a commit request.
│ │ │ │   │ │ │ │ TDSRET tds_submit_execdirect (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head) │ │ │ │  Submit a prepared query with parameters.
│ │ │ │   │ │ │ │ -TDSRET tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ +TDSRET tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │  Sends a previously prepared dynamic statement to the server.
│ │ │ │   │ │ │ │ TDSRET tds_submit_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size) │ │ │ │  Send option commands to server.
│ │ │ │   │ │ │ │ -TDSRET tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │ +TDSRET tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params) │ │ │ │  Creates a temporary stored procedure in the server.
│ │ │ │   │ │ │ │ TDSRET tds_submit_query (TDSSOCKET *tds, const char *query) │ │ │ │  Sends a language string to the database server for processing.
│ │ │ │   │ │ │ │ TDSRET tds_submit_query_params (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head) │ │ │ │  Sends a language string to the database server for processing.
│ │ │ │ @@ -319,15 +319,15 @@ │ │ │ │   │ │ │ │ TDSRET tds_submit_rollback (TDSSOCKET *tds, bool cont) │ │ │ │  Send a rollback request.
│ │ │ │   │ │ │ │ TDSRET tds_submit_rpc (TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head) │ │ │ │  Calls a RPC from server.
│ │ │ │   │ │ │ │ -TDSRET tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │ +TDSRET tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn) │ │ │ │  Send a unprepare request for a prepared query.
│ │ │ │   │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -591,15 +591,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -708,15 +708,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -1110,15 +1110,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -1157,15 +1157,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -1199,15 +1199,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -1302,15 +1302,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -2015,15 +2015,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -2062,15 +2062,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -2509,15 +2509,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -2626,15 +2626,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -2943,15 +2943,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot.gz │ │ │ │ ├── a00575_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot │ │ │ │ │ @@ -12,21 +12,21 @@ │ │ │ │ │ Node3 [id="Node000003",label="tds_count_placeholders\l_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0cd19215e9169ea299a6c9cbf5b2fb60",tooltip="Count the number of placeholders ('?') in a query."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_next_placeholder\l_ucs2le",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gaaa97f8535a2babe642024a0744d271d5",tooltip="Found the next placeholder (? or @param) in a string."]; │ │ │ │ │ Node2 -> Node4 [id="edge4_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node7 [id="edge5_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node7 -> Node8 [id="edge6_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node8 -> Node9 [id="edge7_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node7 -> Node12 [id="edge8_Node000007_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node7 -> Node14 [id="edge9_Node000007_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node1 -> Node16 [id="edge10_Node000001_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds7_write_param_def\l_from_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga24345856c16b15aa3e84459c2f551320",tooltip="Write string with parameters definition, useful for TDS7+."]; │ │ │ │ │ Node16 -> Node3 [id="edge11_Node000016_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 -> Node17 [id="edge12_Node000016_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_freeze_abort",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga7274d9c5dc75c58bb7d1f1c29e03a73e",tooltip="Discard all data written after the freeze."]; │ │ │ │ │ Node16 -> Node18 [id="edge13_Node000016_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_freeze_close_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga2660b893ae2bf36fe1b63b354e748bad",tooltip="Stop keeping data for this specific freeze."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga0da385231bfa3dc49377e1fb2bea2c07_cgraph.dot │ │ │ │ @@ -11,13 +11,13 @@ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_freeze_close_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga2660b893ae2bf36fe1b63b354e748bad",tooltip="Stop keeping data for this specific freeze."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_freeze_written",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga528cc96da09c11bc2930daae64e33e83",tooltip="Compute how many bytes has been written from freeze."]; │ │ │ │ Node2 -> Node5 [id="edge4_Node000002_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node6 [id="Node000006",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node5 -> Node10 [id="edge6_Node000005_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node10 [id="Node000010",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node10 [id="Node000010",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node5 -> Node12 [id="edge7_Node000005_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga0e2e7230c425e925402d7856ff5b4b18_cgraph.dot │ │ │ │ @@ -7,22 +7,22 @@ │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_put_param_as_string",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Send a parameter to server."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node3 -> Node8 [id="edge5_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node8 [id="Node000008",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node8 -> Node9 [id="edge6_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node9 [id="Node000009",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ + Node9 [id="Node000009",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ Node3 -> Node10 [id="edge7_Node000003_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node10 [id="Node000010",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node10 [id="Node000010",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ Node10 -> Node11 [id="edge8_Node000010_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node11 [id="Node000011",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ + Node11 [id="Node000011",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ Node1 -> Node12 [id="edge9_Node000001_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node12 [id="Node000012",label="tds_quote_and_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga26b26296d060dca75f6a43e9ac41e58d",tooltip="Send a string to server while quoting it."]; │ │ │ │ Node12 -> Node3 [id="edge10_Node000012_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga11338742dc30fd0c2711f58eb830316f_icgraph.dot │ │ │ │ @@ -5,9 +5,9 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_send_cancel",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called dire..."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tdserror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01459.html#abf18b98efef6ce2dc0b97d658a3a1918",tooltip="Call the client library's error handler (for library-generated errors only)"]; │ │ │ │ + Node3 [id="Node000003",label="tdserror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01477.html#abf18b98efef6ce2dc0b97d658a3a1918",tooltip="Call the client library's error handler (for library-generated errors only)"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga24345856c16b15aa3e84459c2f551320_cgraph.dot.gz │ │ │ │ ├── a00575_ga24345856c16b15aa3e84459c2f551320_cgraph.dot │ │ │ │ │ @@ -23,19 +23,19 @@ │ │ │ │ │ Node1 -> Node9 [id="edge8_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_get_column_declaration",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga50d62edeb2a432e2dc668263f3f958ff",tooltip="Return declaration for column (like \"varchar(20)\")."]; │ │ │ │ │ Node9 -> Node10 [id="edge9_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="tds_fix_column_size",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga79e31bdb1d8e8e214ea2bed964ff0e77",tooltip="Get column size for wire."]; │ │ │ │ │ Node1 -> Node11 [id="edge10_Node000001_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node11 -> Node12 [id="edge11_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node12 -> Node13 [id="edge12_Node000012_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node11 -> Node16 [id="edge13_Node000011_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node16 -> Node17 [id="edge14_Node000016_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ Node11 -> Node18 [id="edge15_Node000011_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node18 [id="Node000018",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node18 -> Node19 [id="edge16_Node000018_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ + Node19 [id="Node000019",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga24345856c16b15aa3e84459c2f551320_icgraph.dot.gz │ │ │ │ ├── a00575_ga24345856c16b15aa3e84459c2f551320_icgraph.dot │ │ │ │ │ @@ -17,15 +17,15 @@ │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node6 -> Node9 [id="edge7_Node000006_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node6 -> Node12 [id="edge8_Node000006_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node6 -> Node17 [id="edge9_Node000006_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node6 -> Node18 [id="edge10_Node000006_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node6 -> Node3 [id="edge11_Node000006_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node19 [id="edge12_Node000006_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga26b26296d060dca75f6a43e9ac41e58d_cgraph.dot │ │ │ │ @@ -5,19 +5,19 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_quote_and_put",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Send a string to server while quoting it."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node2 -> Node7 [id="edge4_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node7 [id="Node000007",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node7 -> Node8 [id="edge5_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ + Node8 [id="Node000008",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ Node2 -> Node9 [id="edge6_Node000002_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node9 [id="Node000009",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node9 [id="Node000009",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ Node9 -> Node10 [id="edge7_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node10 [id="Node000010",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ + Node10 [id="Node000010",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz │ │ │ │ ├── a00575_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot │ │ │ │ │ @@ -19,19 +19,19 @@ │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_put_param_as_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0e2e7230c425e925402d7856ff5b4b18",tooltip="Send a parameter to server."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00572.html#gad83c146aa5ba3f1515557d6b5248494a",tooltip="tds_convert convert a type to another."]; │ │ │ │ │ Node7 -> Node9 [id="edge8_Node000007_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node9 -> Node10 [id="edge9_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node9 -> Node14 [id="edge10_Node000009_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node9 -> Node16 [id="edge11_Node000009_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node7 -> Node18 [id="edge12_Node000007_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_quote_and_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga26b26296d060dca75f6a43e9ac41e58d",tooltip="Send a string to server while quoting it."]; │ │ │ │ │ Node18 -> Node9 [id="edge13_Node000018_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node9 [id="edge14_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node19 [id="edge15_Node000001_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_query_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gada27f4cfce925240ad33b71b63ca692d",tooltip="Flush query packet."]; │ │ │ │ │ Node19 -> Node20 [id="edge16_Node000019_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz │ │ │ │ ├── a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot │ │ │ │ │ @@ -22,13 +22,13 @@ │ │ │ │ │ Node7 -> Node8 [id="edge8_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ │ Node7 -> Node9 [id="edge9_Node000007_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_dstr_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga396f139e4f886ac1b224a735138e73dd",tooltip="Returns the length of the string in bytes."]; │ │ │ │ │ Node7 -> Node10 [id="edge10_Node000007_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node10 -> Node11 [id="edge11_Node000010_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node11 [id="Node000011",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node10 -> Node15 [id="edge12_Node000010_Node000015",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node15 [id="Node000015",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node15 [id="Node000015",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node10 -> Node17 [id="edge13_Node000010_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz │ │ │ │ ├── a00575_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot │ │ │ │ │ @@ -15,15 +15,15 @@ │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node5 -> Node8 [id="edge6_Node000005_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node5 -> Node11 [id="edge7_Node000005_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node11 [id="Node000011",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node5 -> Node16 [id="edge8_Node000005_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node5 -> Node17 [id="edge9_Node000005_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node5 -> Node2 [id="edge10_Node000005_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 -> Node18 [id="edge11_Node000005_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz │ │ │ │ ├── a00575_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot │ │ │ │ │ @@ -11,19 +11,19 @@ │ │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="tds4_send_emulated_rpc",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga2d0a06c1a30dd2470dc7a788de21b080",tooltip="Send RPC as string query."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_submit_rpc",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5f071b94ad7889690762dc85646c74ab",tooltip="Calls a RPC from server."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbrpcsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00561.html#gafa4dfd181be21e49c397f7daaa9cf96c",tooltip="Execute the procedure and free associated memory."]; │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node6 [id="Node000006",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ + Node6 [id="Node000006",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node1 -> Node12 [id="edge8_Node000001_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds7_write_param_def\l_from_params",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga6513afd79629f7a928e1d3da9f56dee1",tooltip="Write string with parameters definition, useful for TDS7+."]; │ │ │ │ │ Node12 -> Node13 [id="edge9_Node000012_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_submit_query_params",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga95e0fccedc459a4404f496eec74a369a",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node13 -> Node14 [id="edge10_Node000013_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="tds_submit_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node14 -> Node23 [id="edge11_Node000014_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz │ │ │ │ ├── a00575_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot │ │ │ │ │ @@ -13,22 +13,22 @@ │ │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbsqlexec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaae889abeb145ec41f7361aa8f597fe46",tooltip="send the SQL command to the server and wait for an answer."]; │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbuse",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga66ea891910f0a357cc78107d6ab7d962",tooltip="Change current database."]; │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="_bcp_exec_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node8 -> Node3 [id="edge8_Node000008_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node9 [id="edge9_Node000007_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node7 -> Node10 [id="edge10_Node000007_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node10 -> Node8 [id="edge11_Node000010_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 -> Node11 [id="edge12_Node000010_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="bcp_sendrow",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaf1130ac97f6af55e86ec70b0aa4f5b40",tooltip="Write data in host variables to the table."]; │ │ │ │ │ Node1 -> Node12 [id="edge13_Node000001_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node1 -> Node13 [id="edge14_Node000001_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ @@ -36,17 +36,17 @@ │ │ │ │ │ Node14 [id="Node000014",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node1 -> Node15 [id="edge16_Node000001_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node1 -> Node16 [id="edge17_Node000001_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_submit_queryf",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gad695defcbf663b0023851a198206a772",tooltip="Format and submit a query."]; │ │ │ │ │ Node16 -> Node2 [id="edge18_Node000016_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node17 -> Node18 [id="edge20_Node000017_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node16 -> Node19 [id="edge21_Node000016_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node19 [id="Node000019",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node19 -> Node20 [id="edge22_Node000019_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node1 -> Node21 [id="edge23_Node000001_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_submit_rollback",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7f20f58e43ba5eb916c97c7396395563",tooltip="Send a rollback request."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz │ │ │ │ ├── a00575_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot │ │ │ │ │ @@ -27,19 +27,19 @@ │ │ │ │ │ Node10 -> Node11 [id="edge10_Node000010_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="tds_skip_comment_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gac3124fe439d9c96236fc33af7793ffcf",tooltip="Skip a comment in a query."]; │ │ │ │ │ Node10 -> Node12 [id="edge11_Node000010_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_skip_quoted_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gab42efeaf6c795435a03de1835b3de1c6",tooltip="Return pointer to end of a quoted string."]; │ │ │ │ │ Node1 -> Node13 [id="edge12_Node000001_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node13 -> Node14 [id="edge13_Node000013_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node14 -> Node15 [id="edge14_Node000014_Node000015",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node13 -> Node18 [id="edge15_Node000013_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node18 [id="Node000018",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node18 -> Node19 [id="edge16_Node000018_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ + Node19 [id="Node000019",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ Node13 -> Node20 [id="edge17_Node000013_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node20 [id="Node000020",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node20 [id="Node000020",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node20 -> Node21 [id="edge18_Node000020_Node000021",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot.gz │ │ │ │ ├── a00575_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node3 -> Node6 [id="edge4_Node000003_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node3 -> Node9 [id="edge5_Node000003_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node3 -> Node14 [id="edge6_Node000003_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node3 -> Node15 [id="edge7_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node3 -> Node16 [id="edge8_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node3 -> Node17 [id="edge9_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot.gz │ │ │ │ ├── a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot │ │ │ │ │ @@ -14,19 +14,19 @@ │ │ │ │ │ Node4 [id="Node000004",label="tds_skip_comment_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gac3124fe439d9c96236fc33af7793ffcf",tooltip="Skip a comment in a query."]; │ │ │ │ │ Node3 -> Node5 [id="edge4_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_skip_quoted_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gab42efeaf6c795435a03de1835b3de1c6",tooltip="Return pointer to end of a quoted string."]; │ │ │ │ │ Node1 -> Node3 [id="edge5_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node6 [id="edge6_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node6 -> Node7 [id="edge7_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node7 -> Node8 [id="edge8_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node6 -> Node11 [id="edge9_Node000006_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node11 [id="Node000011",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node11 -> Node12 [id="edge10_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ Node6 -> Node13 [id="edge11_Node000006_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node13 [id="Node000013",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node13 [id="Node000013",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node13 -> Node14 [id="edge12_Node000013_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot.gz │ │ │ │ ├── a00575_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot │ │ │ │ │ @@ -17,15 +17,15 @@ │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node6 -> Node9 [id="edge7_Node000006_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node6 -> Node12 [id="edge8_Node000006_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node6 -> Node17 [id="edge9_Node000006_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node6 -> Node18 [id="edge10_Node000006_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node6 -> Node3 [id="edge11_Node000006_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node19 [id="edge12_Node000006_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot.gz │ │ │ │ ├── a00575_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot │ │ │ │ │ @@ -12,21 +12,21 @@ │ │ │ │ │ Node3 [id="Node000003",label="tds_count_placeholders\l_ucs2le",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0cd19215e9169ea299a6c9cbf5b2fb60",tooltip="Count the number of placeholders ('?') in a query."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_next_placeholder\l_ucs2le",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gaaa97f8535a2babe642024a0744d271d5",tooltip="Found the next placeholder (? or @param) in a string."]; │ │ │ │ │ Node2 -> Node4 [id="edge4_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node7 [id="edge5_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node7 -> Node8 [id="edge6_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node8 -> Node9 [id="edge7_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node7 -> Node12 [id="edge8_Node000007_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node7 -> Node14 [id="edge9_Node000007_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node1 -> Node16 [id="edge10_Node000001_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds7_write_param_def\l_from_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga24345856c16b15aa3e84459c2f551320",tooltip="Write string with parameters definition, useful for TDS7+."]; │ │ │ │ │ Node16 -> Node3 [id="edge11_Node000016_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 -> Node17 [id="edge12_Node000016_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_freeze_abort",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga7274d9c5dc75c58bb7d1f1c29e03a73e",tooltip="Discard all data written after the freeze."]; │ │ │ │ │ Node16 -> Node18 [id="edge13_Node000016_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_freeze_close_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga2660b893ae2bf36fe1b63b354e748bad",tooltip="Stop keeping data for this specific freeze."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga8853354723094c8efcd87fabf675c64f_icgraph.dot.gz │ │ │ │ ├── a00575_ga8853354723094c8efcd87fabf675c64f_icgraph.dot │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node3 -> Node6 [id="edge4_Node000003_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node3 -> Node9 [id="edge5_Node000003_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node3 -> Node14 [id="edge6_Node000003_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node3 -> Node15 [id="edge7_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node3 -> Node16 [id="edge8_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node3 -> Node17 [id="edge9_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga8d8f2f1c91635ee95f30722208ae3043_icgraph.dot │ │ │ │ @@ -14,13 +14,13 @@ │ │ │ │ Node4 [id="Node000004",label="tds_process_tabname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeec59bca9bd0c5388e245f0d19d9c81a",tooltip="Process list of table from network."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_process_default\l_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga39453d084f3f780ac4602d4abf2839f7",tooltip="tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot..."]; │ │ │ │ Node5 -> Node7 [id="edge5_Node000005_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ Node4 -> Node7 [id="edge6_Node000004_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node1 -> Node37 [id="edge7_Node000001_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node37 [id="Node000037",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ + Node37 [id="Node000037",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ Node37 -> Node38 [id="edge8_Node000037_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node38 [id="Node000038",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ + Node38 [id="Node000038",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ Node38 -> Node30 [id="edge9_Node000038_Node000030",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node30 [id="Node000030",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ + Node30 [id="Node000030",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot.gz │ │ │ │ ├── a00575_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot │ │ │ │ │ @@ -13,34 +13,34 @@ │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="bcp_exec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga7a184158b27a50f713e9cfae3b746209",tooltip="Write a datafile to a table."]; │ │ │ │ │ Node2 -> Node5 [id="edge4_Node000002_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbsqlexec",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gaae889abeb145ec41f7361aa8f597fe46",tooltip="send the SQL command to the server and wait for an answer."]; │ │ │ │ │ Node2 -> Node8 [id="edge6_Node000002_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node8 -> Node9 [id="edge7_Node000008_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="_bcp_exec_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node9 -> Node4 [id="edge8_Node000009_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 -> Node10 [id="edge9_Node000008_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node8 -> Node11 [id="edge10_Node000008_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node11 [id="Node000011",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node11 -> Node9 [id="edge11_Node000011_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node13 [id="edge12_Node000002_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_submit_begin_tran",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7bf3670d3d6dabed469b9eb117298079",tooltip="Send a rollback request."]; │ │ │ │ │ Node2 -> Node14 [id="edge13_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="tds_submit_commit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7d68588fdd0beeae52197a6d6cef8754",tooltip="Send a commit request."]; │ │ │ │ │ Node2 -> Node15 [id="edge14_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node2 -> Node16 [id="edge15_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node2 -> Node17 [id="edge16_Node000002_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_submit_queryf",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gad695defcbf663b0023851a198206a772",tooltip="Format and submit a query."]; │ │ │ │ │ Node17 -> Node3 [id="edge17_Node000017_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 -> Node18 [id="edge18_Node000017_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node18 [id="Node000018",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node17 -> Node20 [id="edge19_Node000017_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node20 [id="Node000020",label="tds_writetext_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node20 [id="Node000020",label="tds_writetext_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node2 -> Node22 [id="edge20_Node000002_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 [id="Node000022",label="tds_submit_rollback",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga7f20f58e43ba5eb916c97c7396395563",tooltip="Send a rollback request."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga9ad2e6defce530a8778791cce0166ccd_cgraph.dot │ │ │ │ @@ -9,19 +9,19 @@ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_freeze_close_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga2660b893ae2bf36fe1b63b354e748bad",tooltip="Stop keeping data for this specific freeze."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_freeze_written",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga528cc96da09c11bc2930daae64e33e83",tooltip="Compute how many bytes has been written from freeze."]; │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node4 -> Node9 [id="edge6_Node000004_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node9 [id="Node000009",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node9 [id="Node000009",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node9 -> Node10 [id="edge7_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node10 [id="Node000010",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ + Node10 [id="Node000010",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ Node4 -> Node11 [id="edge8_Node000004_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node11 [id="Node000011",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node11 [id="Node000011",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ Node11 -> Node12 [id="edge9_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot.gz │ │ │ │ ├── a00575_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ Node44 -> Node45 [id="edge12_Node000044_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node45 [id="Node000045",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node45 -> Node15 [id="edge13_Node000045_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node45 -> Node27 [id="edge14_Node000045_Node000027",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node27 [id="Node000027",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node45 -> Node37 [id="edge15_Node000045_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node37 [id="Node000037",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node37 [id="Node000037",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node45 -> Node4 [id="edge16_Node000045_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node45 -> Node5 [id="edge17_Node000045_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node45 -> Node43 [id="edge18_Node000045_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node45 -> Node40 [id="edge19_Node000045_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node40 [id="Node000040",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node45 -> Node46 [id="edge20_Node000045_Node000046",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 [id="Node000046",label="tds_submit_queryf",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gad695defcbf663b0023851a198206a772",tooltip="Format and submit a query."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_ga9f6f25dd405f45e75420e6e084bf2d85_cgraph.dot │ │ │ │ @@ -13,13 +13,13 @@ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ Node3 -> Node5 [id="edge4_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_dstr_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga396f139e4f886ac1b224a735138e73dd",tooltip="Returns the length of the string in bytes."]; │ │ │ │ Node3 -> Node6 [id="edge5_Node000003_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node7 [id="Node000007",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node6 -> Node11 [id="edge7_Node000006_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node11 [id="Node000011",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node11 [id="Node000011",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node6 -> Node13 [id="edge8_Node000006_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node13 [id="Node000013",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node13 [id="Node000013",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gaa4cb9266a930adc1f1e0f607f7d6edb5_icgraph.dot │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="dbuse",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga66ea891910f0a357cc78107d6ab7d962",tooltip="Change current database."]; │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds71_read_table_names",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga7482b5730d880fcedbe9fcd609a550ce",tooltip="Reads table names for TDS 7.1+."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_process_tabname",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeec59bca9bd0c5388e245f0d19d9c81a",tooltip="Process list of table from network."]; │ │ │ │ Node2 -> Node38 [id="edge5_Node000002_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node38 [id="Node000038",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ + Node38 [id="Node000038",label="tds7_build_bulk_insert_stmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a3118c7232bc9c3e47f8ba872bb39e967",tooltip="Help to build query to be sent to server."]; │ │ │ │ Node38 -> Node39 [id="edge6_Node000038_Node000039",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node39 [id="Node000039",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ + Node39 [id="Node000039",label="tds_bcp_start_insert_stmt",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ab4d7e5309152f54613d52c8469a07fd8",tooltip="Prepare the query to be sent to server to request BCP information."]; │ │ │ │ Node1 -> Node40 [id="edge7_Node000001_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node40 [id="Node000040",label="tds_quote_id_rpc",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga691e8752f4f84ed51b7f4d1447cb3d25",tooltip="Quote an id for a RPC call."]; │ │ │ │ Node1 -> Node41 [id="edge8_Node000001_Node000041",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node41 [id="Node000041",label="tds_quote_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga4ae2c7b503de8492cb82230cd19f1853",tooltip="Quote a string."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz │ │ │ │ ├── a00575_gad5b76c688898b86984d09628f030d01c_icgraph.dot │ │ │ │ │ @@ -5,26 +5,26 @@ │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="tds_convert_string",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Convert a string in an allocated buffer."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="tds71_submit_prepexec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga08877c101704bebe4fa57e0849dc272d",tooltip="Creates a temporary stored procedure in the server and execute it."]; │ │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ + Node3 [id="Node000003",label="tds7_bcp_send_colmetadata",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a4daaa551e54dbd978650e2eef89e09ff",tooltip="Send BCP metadata to server."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node4 [id="Node000004",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="_bcp_exec_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node4 -> Node7 [id="edge5_Node000004_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node4 -> Node8 [id="edge6_Node000004_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node8 -> Node5 [id="edge7_Node000008_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node10 [id="edge8_Node000001_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node11 [id="edge9_Node000001_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="tds_submit_execdirect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae603aed795a4c5bb26ab159a11256996",tooltip="Submit a prepared query with parameters."]; │ │ │ │ │ Node1 -> Node12 [id="edge10_Node000001_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_submit_prepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga74eb08c3a1c85be8ac9db428842c8b9d",tooltip="Creates a temporary stored procedure in the server."]; │ │ │ │ │ Node1 -> Node13 [id="edge11_Node000001_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_submit_query_params",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga95e0fccedc459a4404f496eec74a369a",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node13 -> Node14 [id="edge12_Node000013_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gad695defcbf663b0023851a198206a772_icgraph.dot │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_submit_queryf",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Format and submit a query."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="_bcp_exec_out",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="bcp_exec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga7a184158b27a50f713e9cfae3b746209",tooltip="Write a datafile to a table."]; │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ + Node4 [id="Node000004",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ + Node6 [id="Node000006",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node7 [id="Node000007",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot.gz │ │ │ │ ├── a00575_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot │ │ │ │ │ @@ -37,15 +37,15 @@ │ │ │ │ │ Node45 -> Node46 [id="edge15_Node000045_Node000046",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 [id="Node000046",label="tds_submit_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node46 -> Node12 [id="edge16_Node000046_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="_bcp_exec_out",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00563.html#gae67546338cb9542a4902aa914f57f314",tooltip=" "]; │ │ │ │ │ Node46 -> Node24 [id="edge17_Node000046_Node000024",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 [id="Node000024",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node46 -> Node34 [id="edge18_Node000046_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node46 -> Node40 [id="edge19_Node000046_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node41 [id="edge20_Node000046_Node000041",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node42 [id="edge21_Node000046_Node000042",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node37 [id="edge22_Node000046_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node47 [id="edge23_Node000046_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 [id="Node000047",label="tds_submit_queryf",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#gad695defcbf663b0023851a198206a772",tooltip="Format and submit a query."]; │ │ │ │ │ Node47 -> Node12 [id="edge24_Node000047_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz │ │ │ │ ├── a00575_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot │ │ │ │ │ @@ -36,33 +36,33 @@ │ │ │ │ │ Node13 -> Node15 [id="edge15_Node000013_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node3 -> Node16 [id="edge16_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node16 -> Node14 [id="edge17_Node000016_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node15 [id="edge18_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node17 [id="edge19_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node17 -> Node18 [id="edge20_Node000017_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node3 -> Node19 [id="edge21_Node000003_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node19 -> Node20 [id="edge22_Node000019_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node3 -> Node21 [id="edge23_Node000003_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node21 -> Node22 [id="edge24_Node000021_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node22 [id="Node000022",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node22 [id="Node000022",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node21 -> Node26 [id="edge25_Node000021_Node000026",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node26 [id="Node000026",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node26 [id="Node000026",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node21 -> Node29 [id="edge26_Node000021_Node000029",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node29 [id="Node000029",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node21 -> Node34 [id="edge27_Node000021_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 [id="Node000034",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node21 -> Node35 [id="edge28_Node000021_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node35 [id="Node000035",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node35 [id="Node000035",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node35 -> Node15 [id="edge29_Node000035_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node34 [id="edge30_Node000003_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node36 [id="edge31_Node000001_Node000036",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 [id="Node000036",label="tds_submit_execute",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga3e7b4793c6f799fbc6c174f673bb5b32",tooltip="Sends a previously prepared dynamic statement to the server."]; │ │ │ │ │ Node1 -> Node37 [id="edge32_Node000001_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node37 [id="Node000037",label="tds_submit_prepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga74eb08c3a1c85be8ac9db428842c8b9d",tooltip="Creates a temporary stored procedure in the server."]; │ │ │ │ │ Node1 -> Node38 [id="edge33_Node000001_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot.gz │ │ │ │ ├── a00575_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot │ │ │ │ │ @@ -5,25 +5,25 @@ │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="LR"; │ │ │ │ │ Node1 [id="Node000001",label="tds_submit_unprepare",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Send a unprepare request for a prepared query."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ │ Node2 -> Node7 [id="edge4_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node7 -> Node8 [id="edge5_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ │ Node2 -> Node9 [id="edge6_Node000002_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node9 [id="Node000009",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node9 -> Node10 [id="edge7_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ │ Node1 -> Node11 [id="edge8_Node000001_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="tds_query_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gada27f4cfce925240ad33b71b63ca692d",tooltip="Flush query packet."]; │ │ │ │ │ Node11 -> Node12 [id="edge9_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node12 [id="Node000012",label="tds_flush_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga5feb53554e8917a81bbbc332163a61fb",tooltip="Flush packet to server."]; │ │ │ │ │ Node1 -> Node13 [id="edge10_Node000001_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_set_cur_dyn",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gae8b7db85af16701fc0604eb117cbd4e4",tooltip="Set current dynamic."]; │ │ │ │ │ Node1 -> Node14 [id="edge11_Node000001_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00575_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot │ │ │ │ @@ -9,19 +9,19 @@ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_dstr_cstr",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gac536f0e4d77d3cff5702719362ec1766",tooltip="Returns a C version (NUL terminated string) of dstr."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_dstr_len",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga396f139e4f886ac1b224a735138e73dd",tooltip="Returns the length of the string in bytes."]; │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node5 [id="Node000005",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node4 -> Node9 [id="edge6_Node000004_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node9 [id="Node000009",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node9 [id="Node000009",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node9 -> Node10 [id="edge7_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node10 [id="Node000010",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ + Node10 [id="Node000010",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ Node4 -> Node11 [id="edge8_Node000004_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node11 [id="Node000011",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node11 [id="Node000011",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ Node11 -> Node12 [id="edge9_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot.gz │ │ │ │ ├── a00576_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot │ │ │ │ │ @@ -20,14 +20,14 @@ │ │ │ │ │ Node7 [id="Node000007",label="tds_read_packet",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga410619783bdf2bb60b0f27a5578e0e07",tooltip="Read in one 'packet' from the server."]; │ │ │ │ │ Node7 -> Node6 [id="edge7_Node000007_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node8 [id="edge8_Node000001_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_get_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node8 -> Node9 [id="edge9_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node9 -> Node10 [id="edge10_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node10 [id="Node000010",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node9 -> Node14 [id="edge11_Node000009_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ Node9 -> Node16 [id="edge12_Node000009_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ │ Node8 -> Node5 [id="edge13_Node000008_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot.gz │ │ │ │ ├── a00576_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot │ │ │ │ │ @@ -43,17 +43,17 @@ │ │ │ │ │ Node42 -> Node5 [id="edge23_Node000042_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node41 -> Node43 [id="edge24_Node000041_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node43 [id="Node000043",label="tds7_process_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaca56fc22d65a24a96d1bef310ade73aa",tooltip="tds7_process_result() is the TDS 7.0 result set processing routine."]; │ │ │ │ │ Node43 -> Node3 [id="edge25_Node000043_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node43 -> Node5 [id="edge26_Node000043_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node42 [id="edge27_Node000001_Node000042",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node44 [id="edge28_Node000001_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node44 [id="Node000044",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ + Node44 [id="Node000044",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ Node1 -> Node45 [id="edge29_Node000001_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node45 [id="Node000045",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node45 [id="Node000045",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node46 [id="edge30_Node000001_Node000046",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 [id="Node000046",label="tds_get_data_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gad9b6b86f48be077fb44ac603845a0c27",tooltip="Reads data metadata from wire."]; │ │ │ │ │ Node46 -> Node37 [id="edge31_Node000046_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node47 [id="edge32_Node000046_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 [id="Node000047",label="tds_process_dyn_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga416cf119c1d4a0fca27dc5b50c261358",tooltip="Process results from dynamic."]; │ │ │ │ │ Node47 -> Node3 [id="edge33_Node000047_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 -> Node5 [id="edge34_Node000047_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga1fcaf8d488cc1390f106ce3ad0bf37b4_cgraph.dot │ │ │ │ @@ -3,24 +3,24 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_put_string",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node2 [id="Node000002",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_iconv",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="skip_one_input_sequence",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga3380140fc6eb9f2090c430f40e846876",tooltip="Move the input sequence pointer to the next valid position."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_sys_iconv_open",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516",tooltip="Inputs are FreeTDS canonical names, no other."]; │ │ │ │ Node3 -> Node5 [id="edge5_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node1 -> Node6 [id="edge6_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ + Node6 [id="Node000006",label="tds_dataout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ Node6 -> Node7 [id="edge7_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ + Node7 [id="Node000007",label="tds_dataout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#ae38a590ee08cf398e7adef536ac94538",tooltip="Writes data to network for output stream."]; │ │ │ │ Node1 -> Node8 [id="edge8_Node000001_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ + Node8 [id="Node000008",label="tds_staticin_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ Node8 -> Node9 [id="edge9_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node9 [id="Node000009",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ + Node9 [id="Node000009",label="tds_staticin_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7",tooltip="Reads data from a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga1fcaf8d488cc1390f106ce3ad0bf37b4_icgraph.dot.gz │ │ │ │ ├── a00576_ga1fcaf8d488cc1390f106ce3ad0bf37b4_icgraph.dot │ │ │ │ │ @@ -37,15 +37,15 @@ │ │ │ │ │ Node1 -> Node31 [id="edge16_Node000001_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="tds7_write_param_def\l_from_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga24345856c16b15aa3e84459c2f551320",tooltip="Write string with parameters definition, useful for TDS7+."]; │ │ │ │ │ Node31 -> Node6 [id="edge17_Node000031_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 -> Node7 [id="edge18_Node000031_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 -> Node8 [id="edge19_Node000031_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 -> Node9 [id="edge20_Node000031_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node32 [id="edge21_Node000001_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node32 [id="Node000032",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node32 [id="Node000032",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node33 [id="edge22_Node000001_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_put_data_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gafd74652c4722ddce4d642cc4209449d4",tooltip="Put data information to wire."]; │ │ │ │ │ Node33 -> Node34 [id="edge23_Node000033_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 [id="Node000034",label="tds5_put_params",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga4f1f0a4f77bc4ea1440dfdebc19a157c",tooltip="Send parameters to server."]; │ │ │ │ │ Node34 -> Node7 [id="edge24_Node000034_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 -> Node35 [id="edge25_Node000034_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node35 [id="Node000035",label="tds_submit_execute",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga3e7b4793c6f799fbc6c174f673bb5b32",tooltip="Sends a previously prepared dynamic statement to the server."]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga2660b893ae2bf36fe1b63b354e748bad_icgraph.dot.gz │ │ │ │ ├── a00576_ga2660b893ae2bf36fe1b63b354e748bad_icgraph.dot │ │ │ │ │ @@ -41,15 +41,15 @@ │ │ │ │ │ Node28 -> Node26 [id="edge19_Node000028_Node000026",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 -> Node17 [id="edge20_Node000028_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 -> Node27 [id="edge21_Node000028_Node000027",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 -> Node3 [id="edge22_Node000028_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node33 [id="edge23_Node000001_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_freeze_close_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga084fa9cda46be8594997fed2487fcb50",tooltip="Stop keeping data for this specific freeze."]; │ │ │ │ │ Node1 -> Node34 [id="edge24_Node000001_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node35 [id="edge25_Node000001_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node35 [id="Node000035",label="tds_start_query_head",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga9ad2e6defce530a8778791cce0166ccd",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node35 -> Node36 [id="edge26_Node000035_Node000036",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 [id="Node000036",label="tds_start_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0da385231bfa3dc49377e1fb2bea2c07",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node36 -> Node26 [id="edge27_Node000036_Node000026",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 -> Node15 [id="edge28_Node000036_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 -> Node16 [id="edge29_Node000036_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot.gz │ │ │ │ ├── a00576_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot │ │ │ │ │ @@ -9,15 +9,15 @@ │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="dbclose",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaef740b394b44eb33925c2718f7b30d69",tooltip="Close a connection to the server and free associated resources."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="dbexit",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac0ee936a9b1db7217b745a63e25f876b",tooltip="Close server connections and free all related structures."]; │ │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node5 [id="Node000005",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ │ + Node5 [id="Node000005",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ │ Node1 -> Node3 [id="edge5_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node6 [id="edge6_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_get_n",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ │ Node6 -> Node7 [id="edge7_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds5_process_dyn_result2",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gae688b515631141acfbc41bbb91c8b921",tooltip="Process new TDS 5.0 token for describing output parameters."]; │ │ │ │ │ Node7 -> Node8 [id="edge8_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="tds_process_default\l_tokens",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga39453d084f3f780ac4602d4abf2839f7",tooltip="tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot..."]; │ │ │ │ │ @@ -38,19 +38,19 @@ │ │ │ │ │ Node42 -> Node8 [id="edge18_Node000042_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node42 -> Node10 [id="edge19_Node000042_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node43 [id="edge20_Node000006_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node43 [id="Node000043",label="tds5_process_result2",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gabe2bdd5a41ce067cb31aef18ff81cb1c",tooltip="tds5_process_result2() is the new TDS 5.0 result set processing routine."]; │ │ │ │ │ Node43 -> Node8 [id="edge21_Node000043_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node43 -> Node10 [id="edge22_Node000043_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node44 [id="edge23_Node000006_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node44 [id="Node000044",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ + Node44 [id="Node000044",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ Node44 -> Node45 [id="edge24_Node000044_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node45 [id="Node000045",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ + Node45 [id="Node000045",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ Node45 -> Node48 [id="edge25_Node000045_Node000048",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node48 [id="Node000048",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ + Node48 [id="Node000048",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ Node6 -> Node57 [id="edge26_Node000006_Node000057",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node57 [id="Node000057",label="tds_dstr_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga017c427e9599c031be5c555cb32abe2c",tooltip="Reads a string from wire and put in a DSTR."]; │ │ │ │ │ Node57 -> Node7 [id="edge27_Node000057_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node57 -> Node43 [id="edge28_Node000057_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node57 -> Node58 [id="edge29_Node000057_Node000058",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node58 [id="Node000058",label="tds7_get_data_info",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga07cee55fd522cca16fb59b7a8f0b1376",tooltip="Reads data information from wire."]; │ │ │ │ │ Node58 -> Node59 [id="edge30_Node000058_Node000059",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ Node65 -> Node8 [id="edge38_Node000065_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node65 -> Node52 [id="edge39_Node000065_Node000052",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node52 [id="Node000052",label="tds_process_tabname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeec59bca9bd0c5388e245f0d19d9c81a",tooltip="Process list of table from network."]; │ │ │ │ │ Node52 -> Node8 [id="edge40_Node000052_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node52 -> Node10 [id="edge41_Node000052_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node48 [id="edge42_Node000006_Node000048",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node66 [id="edge43_Node000006_Node000066",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node66 [id="Node000066",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node66 [id="Node000066",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node6 -> Node47 [id="edge44_Node000006_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 [id="Node000047",label="tds_get_char_data",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga8d214089b6e97fc0da5e0be09f216d73",tooltip="Fetch character data the wire."]; │ │ │ │ │ Node47 -> Node48 [id="edge45_Node000047_Node000048",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node61 [id="edge46_Node000006_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node49 [id="edge47_Node000006_Node000049",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node49 [id="Node000049",label="tds_get_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node49 -> Node57 [id="edge48_Node000049_Node000057",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot.gz │ │ │ │ ├── a00576_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot │ │ │ │ │ @@ -45,17 +45,17 @@ │ │ │ │ │ Node43 -> Node6 [id="edge24_Node000043_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node42 -> Node44 [id="edge25_Node000042_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 [id="Node000044",label="tds7_process_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaca56fc22d65a24a96d1bef310ade73aa",tooltip="tds7_process_result() is the TDS 7.0 result set processing routine."]; │ │ │ │ │ Node44 -> Node4 [id="edge26_Node000044_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 -> Node6 [id="edge27_Node000044_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node43 [id="edge28_Node000002_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node45 [id="edge29_Node000002_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node45 [id="Node000045",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ + Node45 [id="Node000045",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ Node2 -> Node46 [id="edge30_Node000002_Node000046",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node46 [id="Node000046",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node46 [id="Node000046",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node2 -> Node47 [id="edge31_Node000002_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 [id="Node000047",label="tds_get_data_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gad9b6b86f48be077fb44ac603845a0c27",tooltip="Reads data metadata from wire."]; │ │ │ │ │ Node47 -> Node38 [id="edge32_Node000047_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 -> Node48 [id="edge33_Node000047_Node000048",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node48 [id="Node000048",label="tds_process_dyn_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga416cf119c1d4a0fca27dc5b50c261358",tooltip="Process results from dynamic."]; │ │ │ │ │ Node48 -> Node4 [id="edge34_Node000048_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node48 -> Node6 [id="edge35_Node000048_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -107,17 +107,17 @@ │ │ │ │ │ Node1 -> Node60 [id="edge70_Node000001_Node000060",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 [id="Node000060",label="tds_get_n",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ │ Node60 -> Node3 [id="edge71_Node000060_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node37 [id="edge72_Node000060_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node38 [id="edge73_Node000060_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node39 [id="edge74_Node000060_Node000039",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node61 [id="edge75_Node000060_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node61 [id="Node000061",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ + Node61 [id="Node000061",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ Node61 -> Node62 [id="edge76_Node000061_Node000062",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node62 [id="Node000062",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ + Node62 [id="Node000062",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ Node62 -> Node45 [id="edge77_Node000062_Node000045",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node67 [id="edge78_Node000060_Node000067",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node67 [id="Node000067",label="tds_dstr_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga017c427e9599c031be5c555cb32abe2c",tooltip="Reads a string from wire and put in a DSTR."]; │ │ │ │ │ Node67 -> Node3 [id="edge79_Node000067_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node67 -> Node39 [id="edge80_Node000067_Node000039",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node67 -> Node42 [id="edge81_Node000067_Node000042",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node67 -> Node47 [id="edge82_Node000067_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga528cc96da09c11bc2930daae64e33e83_icgraph.dot.gz │ │ │ │ ├── a00576_ga528cc96da09c11bc2930daae64e33e83_icgraph.dot │ │ │ │ │ @@ -44,15 +44,15 @@ │ │ │ │ │ Node32 -> Node30 [id="edge21_Node000032_Node000030",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node32 -> Node3 [id="edge22_Node000032_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node32 -> Node31 [id="edge23_Node000032_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node32 -> Node5 [id="edge24_Node000032_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node33 [id="edge25_Node000001_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_freeze_close_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga084fa9cda46be8594997fed2487fcb50",tooltip="Stop keeping data for this specific freeze."]; │ │ │ │ │ Node1 -> Node34 [id="edge26_Node000001_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node35 [id="edge27_Node000001_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node35 [id="Node000035",label="tds_start_query_head",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga9ad2e6defce530a8778791cce0166ccd",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node35 -> Node36 [id="edge28_Node000035_Node000036",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 [id="Node000036",label="tds_start_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0da385231bfa3dc49377e1fb2bea2c07",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node36 -> Node30 [id="edge29_Node000036_Node000030",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 -> Node17 [id="edge30_Node000036_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 -> Node18 [id="edge31_Node000036_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot.gz │ │ │ │ ├── a00576_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="dbsqlexec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gaae889abeb145ec41f7361aa8f597fe46",tooltip="send the SQL command to the server and wait for an answer."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="dbuse",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga66ea891910f0a357cc78107d6ab7d962",tooltip="Change current database."]; │ │ │ │ │ Node2 -> Node5 [id="edge4_Node000002_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node6 [id="Node000006",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node6 [id="Node000006",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node6 -> Node7 [id="edge6_Node000006_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="_bcp_exec_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 [id="Node000008",label="bcp_exec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga7a184158b27a50f713e9cfae3b746209",tooltip="Write a datafile to a table."]; │ │ │ │ │ Node6 -> Node9 [id="edge8_Node000006_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node6 -> Node10 [id="edge9_Node000006_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -64,15 +64,15 @@ │ │ │ │ │ Node50 [id="Node000050",label="tds_submit_unprepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf573d8d4d2660c8c27770573fca05ff5",tooltip="Send a unprepare request for a prepared query."]; │ │ │ │ │ Node50 -> Node17 [id="edge32_Node000050_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node51 [id="edge33_Node000001_Node000051",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node51 [id="Node000051",label="tds_send_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga11338742dc30fd0c2711f58eb830316f",tooltip="tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called dire..."]; │ │ │ │ │ Node51 -> Node33 [id="edge34_Node000051_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node51 -> Node52 [id="edge35_Node000051_Node000052",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node52 [id="Node000052",label="tdserror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01459.html#abf18b98efef6ce2dc0b97d658a3a1918",tooltip="Call the client library's error handler (for library-generated errors only)"]; │ │ │ │ │ + Node52 [id="Node000052",label="tdserror",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01477.html#abf18b98efef6ce2dc0b97d658a3a1918",tooltip="Call the client library's error handler (for library-generated errors only)"]; │ │ │ │ │ Node1 -> Node43 [id="edge36_Node000001_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node53 [id="edge37_Node000001_Node000053",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node53 [id="Node000053",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ │ + Node53 [id="Node000053",label="tds_writetext_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac1e460551f1188620ea478238864ac4b",tooltip="Finish sending writetext data."]; │ │ │ │ │ Node53 -> Node54 [id="edge38_Node000053_Node000054",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node54 [id="Node000054",label="dbmoretext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga6f13381522a1fa0b6ce2c15378088cdd",tooltip="Send chunk of a text/image value to the server."]; │ │ │ │ │ Node53 -> Node5 [id="edge39_Node000053_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga676c4dee6522815b16fdc8e448e43590_cgraph.dot │ │ │ │ @@ -3,26 +3,26 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="read_and_convert",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node2 [id="Node000002",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_iconv",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="skip_one_input_sequence",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga3380140fc6eb9f2090c430f40e846876",tooltip="Move the input sequence pointer to the next valid position."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node5 [id="Node000005",label="tds_sys_iconv_open",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516",tooltip="Inputs are FreeTDS canonical names, no other."]; │ │ │ │ Node3 -> Node5 [id="edge5_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node1 -> Node6 [id="edge6_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node6 [id="Node000006",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ + Node6 [id="Node000006",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ Node6 -> Node7 [id="edge7_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ + Node7 [id="Node000007",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ Node7 -> Node8 [id="edge8_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node8 [id="Node000008",label="tds_get_n",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ Node1 -> Node11 [id="edge9_Node000001_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node11 [id="Node000011",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ + Node11 [id="Node000011",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ Node11 -> Node12 [id="edge10_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot.gz │ │ │ │ ├── a00576_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot │ │ │ │ │ @@ -5,15 +5,15 @@ │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="read_and_convert",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="tds_get_char_data",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga8d214089b6e97fc0da5e0be09f216d73",tooltip="Fetch character data the wire."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ + Node3 [id="Node000003",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_get_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_alloc_get_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gafb26aba5d935e40b87b95e21a5185848",tooltip="Reads a string from wire in a new allocated buffer."]; │ │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds71_read_table_names",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga7482b5730d880fcedbe9fcd609a550ce",tooltip="Reads table names for TDS 7.1+."]; │ │ │ │ │ Node5 -> Node41 [id="edge6_Node000005_Node000041",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -32,12 +32,12 @@ │ │ │ │ │ Node45 -> Node48 [id="edge13_Node000045_Node000048",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node48 [id="Node000048",label="tds7_get_data_info",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga07cee55fd522cca16fb59b7a8f0b1376",tooltip="Reads data information from wire."]; │ │ │ │ │ Node45 -> Node51 [id="edge14_Node000045_Node000051",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node51 [id="Node000051",label="tds_get_data_info",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gad9b6b86f48be077fb44ac603845a0c27",tooltip="Reads data metadata from wire."]; │ │ │ │ │ Node45 -> Node56 [id="edge15_Node000045_Node000056",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node56 [id="Node000056",label="tds_process_colinfo",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga22c7f413d43fc0d511e122a3de389166",tooltip="Reads column information."]; │ │ │ │ │ Node4 -> Node57 [id="edge16_Node000004_Node000057",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node57 [id="Node000057",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node57 [id="Node000057",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node4 -> Node58 [id="edge17_Node000004_Node000058",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node58 [id="Node000058",label="tds_process_dynamic",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga5cfc0340d8d717e67f60037e029b2142",tooltip="tds_process_dynamic() finds the element of the dyns array for the id"]; │ │ │ │ │ Node58 -> Node10 [id="edge18_Node000058_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga7274d9c5dc75c58bb7d1f1c29e03a73e_icgraph.dot.gz │ │ │ │ ├── a00576_ga7274d9c5dc75c58bb7d1f1c29e03a73e_icgraph.dot │ │ │ │ │ @@ -30,12 +30,12 @@ │ │ │ │ │ Node30 [id="Node000030",label="tds7_write_param_def\l_from_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga24345856c16b15aa3e84459c2f551320",tooltip="Write string with parameters definition, useful for TDS7+."]; │ │ │ │ │ Node30 -> Node28 [id="edge13_Node000030_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node30 -> Node3 [id="edge14_Node000030_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node30 -> Node31 [id="edge15_Node000030_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="tds_submit_prepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga74eb08c3a1c85be8ac9db428842c8b9d",tooltip="Creates a temporary stored procedure in the server."]; │ │ │ │ │ Node30 -> Node5 [id="edge16_Node000030_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node32 [id="edge17_Node000001_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node32 [id="Node000032",label="tds_set_state",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01459.html#a16db200d2281f76fe46fc1cbe37ca9df",tooltip="Set state of TDS connection, with logging and checking."]; │ │ │ │ │ + Node32 [id="Node000032",label="tds_set_state",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01477.html#a16db200d2281f76fe46fc1cbe37ca9df",tooltip="Set state of TDS connection, with logging and checking."]; │ │ │ │ │ Node1 -> Node3 [id="edge18_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node31 [id="edge19_Node000001_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node5 [id="edge20_Node000001_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga8d214089b6e97fc0da5e0be09f216d73_cgraph.dot │ │ │ │ @@ -5,22 +5,22 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_get_char_data",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Fetch character data the wire."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node2 -> Node7 [id="edge4_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ + Node7 [id="Node000007",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ Node7 -> Node8 [id="edge5_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ + Node8 [id="Node000008",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ Node8 -> Node9 [id="edge6_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node9 [id="Node000009",label="tds_get_n",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ Node2 -> Node12 [id="edge7_Node000002_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ Node12 -> Node13 [id="edge8_Node000012_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node13 [id="Node000013",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ + Node13 [id="Node000013",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ Node1 -> Node9 [id="edge9_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga8d214089b6e97fc0da5e0be09f216d73_icgraph.dot │ │ │ │ @@ -3,9 +3,9 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ bgcolor="transparent"; │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="RL"; │ │ │ │ Node1 [id="Node000001",label="tds_get_char_data",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Fetch character data the wire."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node2 [id="Node000002",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ + Node2 [id="Node000002",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga90f080e6e9448feac15dee1370d66802_cgraph.dot │ │ │ │ @@ -5,22 +5,22 @@ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_get_string",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Fetch a string from the wire."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node3 [id="Node000003",label="tds_convert_stream",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_iconv",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00573.html#ga87db49044919f1bc84c0ff5e9ab00304",tooltip="Wrapper around iconv(3)."]; │ │ │ │ Node2 -> Node7 [id="edge4_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node7 [id="Node000007",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ + Node7 [id="Node000007",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ Node7 -> Node8 [id="edge5_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ + Node8 [id="Node000008",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ Node8 -> Node9 [id="edge6_Node000008_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node9 [id="Node000009",label="tds_get_n",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ Node2 -> Node12 [id="edge7_Node000002_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node12 [id="Node000012",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ + Node12 [id="Node000012",label="tds_staticout_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ Node12 -> Node13 [id="edge8_Node000012_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node13 [id="Node000013",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ + Node13 [id="Node000013",label="tds_staticout_stream\l_write",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a1d92ebe06f18378ac17ccfd20db05126",tooltip="Writes data to a static allocated buffer."]; │ │ │ │ Node1 -> Node9 [id="edge9_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_ga90f080e6e9448feac15dee1370d66802_icgraph.dot.gz │ │ │ │ ├── a00576_ga90f080e6e9448feac15dee1370d66802_icgraph.dot │ │ │ │ │ @@ -63,12 +63,12 @@ │ │ │ │ │ Node51 [id="Node000051",label="tds_process_param_result",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gacb3354443bcefe7a500a500a4904cc05",tooltip="process output parameters of a stored procedure."]; │ │ │ │ │ Node51 -> Node7 [id="edge37_Node000051_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node42 -> Node53 [id="edge38_Node000042_Node000053",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node53 [id="Node000053",label="tds_process_colinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga22c7f413d43fc0d511e122a3de389166",tooltip="Reads column information."]; │ │ │ │ │ Node53 -> Node5 [id="edge39_Node000053_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node53 -> Node4 [id="edge40_Node000053_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node54 [id="edge41_Node000001_Node000054",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node54 [id="Node000054",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node54 [id="Node000054",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node1 -> Node55 [id="edge42_Node000001_Node000055",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node55 [id="Node000055",label="tds_process_dynamic",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga5cfc0340d8d717e67f60037e029b2142",tooltip="tds_process_dynamic() finds the element of the dyns array for the id"]; │ │ │ │ │ Node55 -> Node7 [id="edge43_Node000055_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00576_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot.gz │ │ │ │ ├── a00576_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot │ │ │ │ │ @@ -27,23 +27,23 @@ │ │ │ │ │ Node37 -> Node3 [id="edge12_Node000037_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node37 -> Node5 [id="edge13_Node000037_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node38 [id="edge14_Node000001_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node38 [id="Node000038",label="tds5_process_result2",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gabe2bdd5a41ce067cb31aef18ff81cb1c",tooltip="tds5_process_result2() is the new TDS 5.0 result set processing routine."]; │ │ │ │ │ Node38 -> Node3 [id="edge15_Node000038_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node38 -> Node5 [id="edge16_Node000038_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node39 [id="edge17_Node000001_Node000039",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node39 [id="Node000039",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ + Node39 [id="Node000039",label="tds_datain_stream_read",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#a04b537d889f7d4c9b9701eb81baf7efd",tooltip="Reads data from network for input stream."]; │ │ │ │ │ Node39 -> Node40 [id="edge18_Node000039_Node000040",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node40 [id="Node000040",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ + Node40 [id="Node000040",label="tds_datain_stream_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ Node40 -> Node41 [id="edge19_Node000040_Node000041",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node41 [id="Node000041",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node41 -> Node42 [id="edge20_Node000041_Node000042",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node42 [id="Node000042",label="tds_get_char_data",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga8d214089b6e97fc0da5e0be09f216d73",tooltip="Fetch character data the wire."]; │ │ │ │ │ Node42 -> Node43 [id="edge21_Node000042_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node43 [id="Node000043",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ + Node43 [id="Node000043",label="tds_generic_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#abac4d689e0e31e80587f89247c6395a4",tooltip="Read a data from wire."]; │ │ │ │ │ Node41 -> Node44 [id="edge22_Node000041_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 [id="Node000044",label="tds_get_string",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node44 -> Node52 [id="edge23_Node000044_Node000052",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node52 [id="Node000052",label="tds_dstr_get",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#ga017c427e9599c031be5c555cb32abe2c",tooltip="Reads a string from wire and put in a DSTR."]; │ │ │ │ │ Node52 -> Node2 [id="edge24_Node000052_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node52 -> Node38 [id="edge25_Node000052_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node52 -> Node56 [id="edge26_Node000052_Node000056",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ Node60 [id="Node000060",label="tds_process_colinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga22c7f413d43fc0d511e122a3de389166",tooltip="Reads column information."]; │ │ │ │ │ Node60 -> Node3 [id="edge32_Node000060_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 -> Node47 [id="edge33_Node000060_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 [id="Node000047",label="tds_process_tabname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeec59bca9bd0c5388e245f0d19d9c81a",tooltip="Process list of table from network."]; │ │ │ │ │ Node47 -> Node3 [id="edge34_Node000047_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node47 -> Node5 [id="edge35_Node000047_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 -> Node61 [id="edge36_Node000044_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node61 [id="Node000061",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00347.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ + Node61 [id="Node000061",label="tds_generic_put",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00233.html#a84e17808683ba2dd956e811a42e23176",tooltip="Write data to wire."]; │ │ │ │ │ Node44 -> Node62 [id="edge37_Node000044_Node000062",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node62 [id="Node000062",label="tds_process_dynamic",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga5cfc0340d8d717e67f60037e029b2142",tooltip="tds_process_dynamic() finds the element of the dyns array for the id"]; │ │ │ │ │ Node62 -> Node5 [id="edge38_Node000062_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node40 -> Node43 [id="edge39_Node000040_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node52 [id="edge40_Node000001_Node000052",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node43 [id="edge41_Node000001_Node000043",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node61 [id="edge42_Node000001_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577.html │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -165,15 +165,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -891,15 +891,15 @@ │ │ │ │ │ │ │ │

◆ tds_lookup_dynamic()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

│ │ │ │ Variables

│ │ │ │ static const TDSCONTEXT empty_ctx = {0}
const char * id,
TDSDYNAMIC ** TDSDYNAMIC ** dyn_out,
TDSPARAMINFOparams (TDSSOCKETtds,
TDSDYNAMICTDSDYNAMICdyn 
)
(TDSCONNECTIONconn,
TDSCURSORTDSCURSORcursor 
)
(TDSCONNECTIONconn,
TDSCURSORTDSCURSORcursor 
)
(TDSCONNECTIONconn,
TDSDYNAMICTDSDYNAMICdyn 
)
(TDSCONNECTIONconn,
TDSDYNAMICTDSDYNAMICdyn 
)
(TDSSOCKETtds,
TDSCURSORTDSCURSORcursor 
)
(TDSSOCKETtds,
TDSDYNAMICTDSDYNAMICdyn 
)
(TDSSOCKETtds,
TDSDYNAMICTDSDYNAMICdyn 
)
const char * id,
TDSDYNAMIC ** TDSDYNAMIC ** dyn_out,
TDSPARAMINFOparams (TDSSOCKETtds,
TDSDYNAMICTDSDYNAMICdyn 
)
 
static void tds_free_namelist (struct namelist *head)
 Frees list of names.
 
static TDSRET tds_get_data_info (TDSSOCKET *tds, TDSCOLUMN *curcol, int is_param)
 Reads data metadata from wire.
 
TDSDYNAMICtds_lookup_dynamic (TDSCONNECTION *conn, const char *id)
TDSDYNAMICtds_lookup_dynamic (TDSCONNECTION *conn, const char *id)
 Finds a dynamic given string id.
 
static const char * tds_pr_op (int op)
 Returns string representation for a given operation.
 
static TDSRET tds_process_auth (TDSSOCKET *tds)
 Process authentication token.
 
static TDSRET tds_process_default_tokens (TDSSOCKET *tds, int marker)
 tds_process_default_tokens() is a catch all function that is called to process tokens not known to other tds_process_* routines
 
static TDSRET tds_process_dyn_result (TDSSOCKET *tds)
 Process results from dynamic.
 
static TDSDYNAMICtds_process_dynamic (TDSSOCKET *tds)
static TDSDYNAMICtds_process_dynamic (TDSSOCKET *tds)
 tds_process_dynamic() finds the element of the dyns array for the id
 
static TDSRET tds_process_end (TDSSOCKET *tds, int marker TDS_UNUSED, int *flags_parm)
 tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens.
 
static TDSRET tds_process_env_chg (TDSSOCKET *tds)
 tds_process_env_chg() when ever certain things change on the server, such as database, character set, language, or block size.
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -1476,15 +1476,15 @@ │ │ │ │
│ │ │ │
│ │ │ │
TDSDYNAMIC * tds_lookup_dynamic TDSDYNAMIC * tds_lookup_dynamic (TDSCONNECTIONconn,
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz │ │ │ │ ├── a00577_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ Node13 [id="Node000013",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node13 -> Node15 [id="edge8_Node000013_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node3 -> Node16 [id="edge9_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node3 -> Node15 [id="edge10_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node17 [id="edge11_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node3 -> Node19 [id="edge12_Node000003_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node3 -> Node21 [id="edge13_Node000003_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node21 -> Node34 [id="edge14_Node000021_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 [id="Node000034",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node3 -> Node34 [id="edge15_Node000003_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz │ │ │ │ ├── a00577_ga307f949194204f71f1a7e574424048b1_icgraph.dot │ │ │ │ │ @@ -42,9 +42,9 @@ │ │ │ │ │ Node45 -> Node7 [id="edge21_Node000045_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 -> Node7 [id="edge22_Node000044_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node46 [id="edge23_Node000001_Node000046",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 [id="Node000046",label="tds_process_col_fmt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga4e3dd9d3614f5f0433b78b761dd68741",tooltip="tds_process_col_fmt() is the other half of result set processing under TDS 4.2."]; │ │ │ │ │ Node46 -> Node35 [id="edge24_Node000046_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node46 -> Node7 [id="edge25_Node000046_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node47 [id="edge26_Node000001_Node000047",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node47 [id="Node000047",label="tdsdump_col",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00323.html#aaee3fe5c514ce5570c9548de9b16e0d9",tooltip="Write a column value to the debug log."]; │ │ │ │ │ + Node47 [id="Node000047",label="tdsdump_col",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00215.html#aaee3fe5c514ce5570c9548de9b16e0d9",tooltip="Write a column value to the debug log."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot.gz │ │ │ │ ├── a00577_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ Node13 [id="Node000013",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node13 -> Node15 [id="edge9_Node000013_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node3 -> Node16 [id="edge10_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node3 -> Node15 [id="edge11_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node17 [id="edge12_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node3 -> Node19 [id="edge13_Node000003_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node3 -> Node21 [id="edge14_Node000003_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node21 -> Node31 [id="edge15_Node000021_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node3 -> Node31 [id="edge16_Node000003_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot.gz │ │ │ │ ├── a00577_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot │ │ │ │ │ @@ -30,15 +30,15 @@ │ │ │ │ │ Node17 [id="Node000017",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node17 -> Node19 [id="edge12_Node000017_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node7 -> Node20 [id="edge13_Node000007_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node7 -> Node19 [id="edge14_Node000007_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node21 [id="edge15_Node000007_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node7 -> Node23 [id="edge16_Node000007_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node23 [id="Node000023",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node7 -> Node25 [id="edge17_Node000007_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node25 [id="Node000025",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node25 -> Node38 [id="edge18_Node000025_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node38 [id="Node000038",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node7 -> Node38 [id="edge19_Node000007_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot.gz │ │ │ │ ├── a00577_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot │ │ │ │ │ @@ -17,19 +17,19 @@ │ │ │ │ │ Node5 -> Node4 [id="edge5_Node000005_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 -> Node3 [id="edge6_Node000005_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node6 [id="edge7_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="tds_get_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ │ Node6 -> Node7 [id="edge8_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ │ Node7 -> Node8 [id="edge9_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node7 -> Node12 [id="edge10_Node000007_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ │ Node7 -> Node14 [id="edge11_Node000007_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ │ + Node14 [id="Node000014",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ │ Node6 -> Node5 [id="edge12_Node000006_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node16 [id="edge13_Node000001_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="tds_get_usmallint",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#gad38aa5b9547817854ccba1fcc7855861",tooltip="Get an uint16 from the server."]; │ │ │ │ │ Node16 -> Node5 [id="edge14_Node000016_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node17 [id="edge15_Node000001_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_lookup_dynamic",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga4a45cadd06ae1b886459dcc1f8e482c6",tooltip="Finds a dynamic given string id."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot.gz │ │ │ │ ├── a00577_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot │ │ │ │ │ @@ -34,29 +34,29 @@ │ │ │ │ │ Node12 -> Node14 [id="edge14_Node000012_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node2 -> Node15 [id="edge15_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node15 -> Node13 [id="edge16_Node000015_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node14 [id="edge17_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [id="edge18_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node2 -> Node18 [id="edge20_Node000002_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node18 -> Node19 [id="edge21_Node000018_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node2 -> Node20 [id="edge22_Node000002_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node25 [id="edge24_Node000020_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node20 -> Node28 [id="edge25_Node000020_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node20 -> Node33 [id="edge26_Node000020_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node20 -> Node34 [id="edge27_Node000020_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node34 -> Node14 [id="edge28_Node000034_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node33 [id="edge29_Node000002_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot.gz │ │ │ │ ├── a00577_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ Node13 [id="Node000013",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node13 -> Node15 [id="edge8_Node000013_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node3 -> Node16 [id="edge9_Node000003_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node3 -> Node15 [id="edge10_Node000003_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 -> Node17 [id="edge11_Node000003_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node17 [id="Node000017",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node3 -> Node19 [id="edge12_Node000003_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node3 -> Node21 [id="edge13_Node000003_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node21 -> Node34 [id="edge14_Node000021_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 [id="Node000034",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node3 -> Node34 [id="edge15_Node000003_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga65a2316369529731732f200c190d05d6_icgraph.dot.gz │ │ │ │ ├── a00577_ga65a2316369529731732f200c190d05d6_icgraph.dot │ │ │ │ │ @@ -25,15 +25,15 @@ │ │ │ │ │ Node14 [id="Node000014",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node14 -> Node16 [id="edge10_Node000014_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node4 -> Node17 [id="edge11_Node000004_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="dbsqlsend",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node4 -> Node16 [id="edge12_Node000004_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 -> Node18 [id="edge13_Node000004_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node18 [id="Node000018",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node4 -> Node20 [id="edge14_Node000004_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node4 -> Node22 [id="edge15_Node000004_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 [id="Node000022",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node22 -> Node32 [id="edge16_Node000022_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node32 [id="Node000032",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node4 -> Node32 [id="edge17_Node000004_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga6728e344caa20aea1def85f58dea138b_icgraph.dot.gz │ │ │ │ ├── a00577_ga6728e344caa20aea1def85f58dea138b_icgraph.dot │ │ │ │ │ @@ -34,29 +34,29 @@ │ │ │ │ │ Node12 -> Node14 [id="edge14_Node000012_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node2 -> Node15 [id="edge15_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node15 -> Node13 [id="edge16_Node000015_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node14 [id="edge17_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [id="edge18_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node2 -> Node18 [id="edge20_Node000002_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node18 -> Node19 [id="edge21_Node000018_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node2 -> Node20 [id="edge22_Node000002_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node25 [id="edge24_Node000020_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node20 -> Node28 [id="edge25_Node000020_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node20 -> Node33 [id="edge26_Node000020_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node20 -> Node34 [id="edge27_Node000020_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node34 -> Node14 [id="edge28_Node000034_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node33 [id="edge29_Node000002_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot.gz │ │ │ │ ├── a00577_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot │ │ │ │ │ @@ -121,19 +121,19 @@ │ │ │ │ │ Node84 -> Node86 [id="edge76_Node000084_Node000086",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node86 [id="Node000086",label="tds_free_input_params",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00574.html#gabdc5fee73b22345c02ab894e49ad7f95",tooltip="Frees all allocated input parameters of a dynamic statement."]; │ │ │ │ │ Node1 -> Node87 [id="edge77_Node000001_Node000087",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node87 [id="Node000087",label="tds_submit_unprepare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf573d8d4d2660c8c27770573fca05ff5",tooltip="Send a unprepare request for a prepared query."]; │ │ │ │ │ Node87 -> Node88 [id="edge78_Node000087_Node000088",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node88 [id="Node000088",label="tds_put_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4",tooltip="Output a string to wire automatic translate string to unicode if needed."]; │ │ │ │ │ Node88 -> Node27 [id="edge79_Node000088_Node000027",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node27 [id="Node000027",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ + Node27 [id="Node000027",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ │ Node88 -> Node89 [id="edge80_Node000088_Node000089",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node89 [id="Node000089",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ + Node89 [id="Node000089",label="tds_dataout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa038a9125979f8f0915dbd53cbf27e5a",tooltip="Initialize a data output stream."]; │ │ │ │ │ Node88 -> Node91 [id="edge81_Node000088_Node000091",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node91 [id="Node000091",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ + Node91 [id="Node000091",label="tds_staticin_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#aa9e1e45f0305622dd6aed9f8fe158581",tooltip="Initialize an input stream for read from a static allocated buffer."]; │ │ │ │ │ Node87 -> Node4 [id="edge82_Node000087_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node87 -> Node83 [id="edge83_Node000087_Node000083",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node87 -> Node93 [id="edge84_Node000087_Node000093",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node93 [id="Node000093",label="tds_start_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#ga0da385231bfa3dc49377e1fb2bea2c07",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node93 -> Node94 [id="edge85_Node000093_Node000094",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node94 [id="Node000094",label="tds_start_query_head",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga9ad2e6defce530a8778791cce0166ccd",tooltip="Start query packet of a given type."]; │ │ │ │ │ Node94 -> Node88 [id="edge86_Node000094_Node000088",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot.gz │ │ │ │ ├── a00577_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot │ │ │ │ │ @@ -34,29 +34,29 @@ │ │ │ │ │ Node12 -> Node14 [id="edge14_Node000012_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node2 -> Node15 [id="edge15_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node15 -> Node13 [id="edge16_Node000015_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node14 [id="edge17_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [id="edge18_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node2 -> Node18 [id="edge20_Node000002_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node18 -> Node19 [id="edge21_Node000018_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node2 -> Node20 [id="edge22_Node000002_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node25 [id="edge24_Node000020_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node20 -> Node28 [id="edge25_Node000020_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node20 -> Node33 [id="edge26_Node000020_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node20 -> Node34 [id="edge27_Node000020_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node34 -> Node14 [id="edge28_Node000034_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node33 [id="edge29_Node000002_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_ga91770634ce8c0d6f1fe007b45da186fd_cgraph.dot │ │ │ │ @@ -9,12 +9,12 @@ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="determine_adjusted_size",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaacb26868882440aa08de9fb952628eaf",tooltip="Allow for maximum possible size of converted data, while being careful about integer division truncat..."]; │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="tds_iconv_get_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga1639ccaa7e17c07457bcb37f313bc52f",tooltip="Get a iconv info structure, allocate and initialize if needed."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node4 [id="Node000004",label="tds_iconv_info_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga3a7a7b4d6ed344127e164dd0b443d790",tooltip="Open iconv descriptors to convert between character sets (both directions)."]; │ │ │ │ Node4 -> Node5 [id="edge4_Node000004_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node5 [id="Node000005",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ + Node5 [id="Node000005",label="tds_set_iconv_name",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01453.html#a585ebac61354ce540d28f6da2d771b5b",tooltip="Get iconv name given canonic."]; │ │ │ │ Node5 -> Node6 [id="edge5_Node000005_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node6 [id="Node000006",label="tds_sys_iconv_open",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516",tooltip="Inputs are FreeTDS canonical names, no other."]; │ │ │ │ Node4 -> Node6 [id="edge6_Node000004_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot.gz │ │ │ │ ├── a00577_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot │ │ │ │ │ @@ -32,44 +32,44 @@ │ │ │ │ │ Node11 -> Node13 [id="edge13_Node000011_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node1 -> Node14 [id="edge14_Node000001_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node14 -> Node12 [id="edge15_Node000014_Node000012",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node13 [id="edge16_Node000001_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node15 [id="edge17_Node000001_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node15 [id="Node000015",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node15 [id="Node000015",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node15 -> Node16 [id="edge18_Node000015_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 [id="Node000016",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node1 -> Node17 [id="edge19_Node000001_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node17 -> Node18 [id="edge20_Node000017_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node1 -> Node19 [id="edge21_Node000001_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node19 -> Node20 [id="edge22_Node000019_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node20 [id="Node000020",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node20 [id="Node000020",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 [id="Node000021",label="_bcp_exec_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node21 -> Node3 [id="edge24_Node000021_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node22 [id="edge25_Node000020_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 [id="Node000022",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node20 -> Node23 [id="edge26_Node000020_Node000023",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node23 [id="Node000023",label="bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga8b85f79f53a62ac7a728fe626d609b65",tooltip="Conclude the transfer of data from program variables."]; │ │ │ │ │ Node19 -> Node24 [id="edge27_Node000019_Node000024",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node24 [id="Node000024",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node24 [id="Node000024",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node24 -> Node21 [id="edge28_Node000024_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 -> Node22 [id="edge29_Node000024_Node000022",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 -> Node25 [id="edge30_Node000024_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node25 -> Node21 [id="edge31_Node000025_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 -> Node27 [id="edge32_Node000019_Node000027",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node27 [id="Node000027",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node27 -> Node28 [id="edge33_Node000027_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_end",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga6ee2e7af38af768611b8bf4b79c36f46",tooltip="tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens."]; │ │ │ │ │ Node28 -> Node1 [id="edge34_Node000028_Node000001",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 -> Node32 [id="edge35_Node000019_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node32 [id="Node000032",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node19 -> Node33 [id="edge36_Node000019_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node33 [id="Node000033",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node33 [id="Node000033",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node33 -> Node13 [id="edge37_Node000033_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node32 [id="edge38_Node000001_Node000032",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot.gz │ │ │ │ ├── a00577_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot │ │ │ │ │ @@ -34,29 +34,29 @@ │ │ │ │ │ Node12 -> Node14 [id="edge14_Node000012_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node2 -> Node15 [id="edge15_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node15 -> Node13 [id="edge16_Node000015_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node14 [id="edge17_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [id="edge18_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node2 -> Node18 [id="edge20_Node000002_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node18 -> Node19 [id="edge21_Node000018_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node2 -> Node20 [id="edge22_Node000002_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node25 [id="edge24_Node000020_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node20 -> Node28 [id="edge25_Node000020_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node20 -> Node33 [id="edge26_Node000020_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node20 -> Node34 [id="edge27_Node000020_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node34 -> Node14 [id="edge28_Node000034_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node33 [id="edge29_Node000002_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot.gz │ │ │ │ ├── a00577_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot │ │ │ │ │ @@ -34,29 +34,29 @@ │ │ │ │ │ Node12 -> Node14 [id="edge14_Node000012_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 [id="Node000014",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node2 -> Node15 [id="edge15_Node000002_Node000015",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 [id="Node000015",label="dbsqlsend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#gac980139b9cea03cf93e373d425991481",tooltip="Transmit the command buffer to the server."]; │ │ │ │ │ Node15 -> Node13 [id="edge16_Node000015_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node14 [id="edge17_Node000002_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [id="edge18_Node000002_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node16 [id="Node000016",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node16 -> Node17 [id="edge19_Node000016_Node000017",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node17 [id="Node000017",label="bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gada8e987c4a6225b9276c05ba3a4f47a0",tooltip="Prepare for bulk copy operation on a table."]; │ │ │ │ │ Node2 -> Node18 [id="edge20_Node000002_Node000018",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node18 [id="Node000018",label="tds_process_cancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node18 -> Node19 [id="edge21_Node000018_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 [id="Node000019",label="dbcancel",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga5ea23272124fff03b8d87538c1ec3ee5",tooltip="Cancel the current command batch."]; │ │ │ │ │ Node2 -> Node20 [id="edge22_Node000002_Node000020",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 [id="Node000020",label="tds_process_simple\l_query",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node20 -> Node21 [id="edge23_Node000020_Node000021",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node21 [id="Node000021",label="tds_bcp_done",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node20 -> Node25 [id="edge24_Node000020_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node25 [id="Node000025",label="tds_bcp_start",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node20 -> Node28 [id="edge25_Node000020_Node000028",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node28 [id="Node000028",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node20 -> Node33 [id="edge26_Node000020_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node33 [id="Node000033",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node20 -> Node34 [id="edge27_Node000020_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node34 [id="Node000034",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node34 -> Node14 [id="edge28_Node000034_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node33 [id="edge29_Node000002_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot.gz │ │ │ │ ├── a00577_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot │ │ │ │ │ @@ -3,29 +3,29 @@ │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ bgcolor="transparent"; │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="tds_process_simple\l_query",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node2 [id="Node000002",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ + Node2 [id="Node000002",label="tds_bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ade7df2db455b61edc83819ad60edb339",tooltip="Tell we finished sending BCP data to server."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="_bcp_exec_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00563.html#ga7370f1223f13510d6b33e98f2de09fb5",tooltip=" "]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="bcp_exec",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga7a184158b27a50f713e9cfae3b746209",tooltip="Write a datafile to a table."]; │ │ │ │ │ Node2 -> Node5 [id="edge4_Node000002_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="bcp_batch",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaa23f8e5c7f437a94746c90292dd1cb01",tooltip="Commit a set of rows to the table."]; │ │ │ │ │ Node2 -> Node6 [id="edge5_Node000002_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="bcp_done",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#ga8b85f79f53a62ac7a728fe626d609b65",tooltip="Conclude the transfer of data from program variables."]; │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ + Node7 [id="Node000007",label="tds_bcp_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce",tooltip="Start sending BCP data to server."]; │ │ │ │ │ Node7 -> Node3 [id="edge7_Node000007_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node5 [id="edge8_Node000007_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 -> Node8 [id="edge9_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ + Node8 [id="Node000008",label="tds_bcp_start_copy_in",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a5eec23828b0610c58de248c4edb53879",tooltip="Start bulk copy to server."]; │ │ │ │ │ Node8 -> Node3 [id="edge10_Node000008_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node8 -> Node9 [id="edge11_Node000008_Node000009",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node9 [id="Node000009",label="bcp_sendrow",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00562.html#gaf1130ac97f6af55e86ec70b0aa4f5b40",tooltip="Write data in host variables to the table."]; │ │ │ │ │ Node1 -> Node10 [id="edge12_Node000001_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node10 [id="Node000010",label="tds_process_pending\l_closes",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga69902dffb299d62a799888e0fa3ccd68",tooltip="Attempt to close all deferred closes (dynamics and cursors)."]; │ │ │ │ │ Node10 -> Node11 [id="edge13_Node000010_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node11 [id="Node000011",label="tds_process_end",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga6ee2e7af38af768611b8bf4b79c36f46",tooltip="tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens."]; │ │ │ │ │ @@ -37,10 +37,10 @@ │ │ │ │ │ Node25 [id="Node000025",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node14 -> Node1 [id="edge17_Node000014_Node000001",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node14 -> Node31 [id="edge18_Node000014_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="tds_submit_optioncmd",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00575.html#gaf0da49585d39e99780a004ee2ca23479",tooltip="Send option commands to server."]; │ │ │ │ │ Node11 -> Node14 [id="edge19_Node000011_Node000014",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node31 [id="edge20_Node000001_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node33 [id="edge21_Node000001_Node000033",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node33 [id="Node000033",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ + Node33 [id="Node000033",label="tds_writetext_start",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#a7711612cc544a7da2c7aa212b870acb2",tooltip="Start writing writetext request."]; │ │ │ │ │ Node33 -> Node25 [id="edge22_Node000033_Node000025",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00577_gafb26aba5d935e40b87b95e21a5185848_cgraph.dot │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ rankdir="LR"; │ │ │ │ Node1 [id="Node000001",label="tds_alloc_get_string",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Reads a string from wire in a new allocated buffer."]; │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node2 [id="Node000002",label="tds_get_string",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga90f080e6e9448feac15dee1370d66802",tooltip="Fetch a string from the wire."]; │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node3 [id="Node000003",label="read_and_convert",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga676c4dee6522815b16fdc8e448e43590",tooltip="For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al..."]; │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ + Node4 [id="Node000004",label="tds_convert_stream",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564",tooltip="Reads and writes from a stream converting characters."]; │ │ │ │ Node3 -> Node8 [id="edge4_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node8 [id="Node000008",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ + Node8 [id="Node000008",label="tds_datain_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#abc3a77c8aa28842e7f28583cbabc1415",tooltip="Initialize a data input stream."]; │ │ │ │ Node3 -> Node13 [id="edge5_Node000003_Node000013",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ - Node13 [id="Node000013",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ + Node13 [id="Node000013",label="tds_staticout_stream_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d",tooltip="Initialize an output stream for write into a static allocated buffer."]; │ │ │ │ Node2 -> Node10 [id="edge6_Node000002_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ Node10 [id="Node000010",label="tds_get_n",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf",tooltip="Get N bytes from the buffer and return them in the already allocated space given to us."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00578_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz │ │ │ │ ├── a00578_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot │ │ │ │ │ @@ -12,20 +12,20 @@ │ │ │ │ │ Node3 [id="Node000003",label="tds_process_default\l_tokens",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga39453d084f3f780ac4602d4abf2839f7",tooltip="tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot..."]; │ │ │ │ │ Node3 -> Node4 [id="edge3_Node000003_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="tds_process_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga65a2316369529731732f200c190d05d6",tooltip="tds_process_info() is called for INFO, ERR, or EED tokens and is responsible for calling the CLI's me..."]; │ │ │ │ │ Node4 -> Node3 [id="edge4_Node000004_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 -> Node5 [id="edge5_Node000004_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ │ Node5 -> Node19 [id="edge6_Node000005_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node19 [id="Node000019",label="tds_bcp_init",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node3 -> Node35 [id="edge7_Node000003_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node35 [id="Node000035",label="tds_process_login_tokens",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga93945b42d45ee28ae1296b35a1c1e9bb",tooltip="tds_process_login_tokens() is called after sending the login packet to the server."]; │ │ │ │ │ Node3 -> Node5 [id="edge8_Node000003_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 -> Node5 [id="edge9_Node000002_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node19 [id="edge10_Node000001_Node000019",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node36 [id="edge11_Node000001_Node000036",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node36 [id="Node000036",label="tds_read_config_info",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90",tooltip="tds_read_config_info() will fill the tds connection structure based on configuration information gath..."]; │ │ │ │ │ Node36 -> Node37 [id="edge12_Node000036_Node000037",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node37 [id="Node000037",label="tdsdbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00566.html#gae6da75d7b9e7b567890fc83c9459d824",tooltip="Form a connection with the server."]; │ │ │ │ │ Node37 -> Node38 [id="edge13_Node000037_Node000038",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node38 [id="Node000038",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00143.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ │ + Node38 [id="Node000038",label="dbopen",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00263.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3",tooltip="Normally not used."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00578_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz │ │ │ │ ├── a00578_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ Node12 -> Node13 [id="edge13_Node000012_Node000013",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node13 [id="Node000013",label="tds_submit_query_params",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00575.html#ga95e0fccedc459a4404f496eec74a369a",tooltip="Sends a language string to the database server for processing."]; │ │ │ │ │ Node6 -> Node34 [id="edge14_Node000006_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 [id="Node000034",label="tds7_process_compute\l_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#ga6728e344caa20aea1def85f58dea138b",tooltip="tds7_process_compute_result() processes compute result sets for TDS 7/8."]; │ │ │ │ │ Node34 -> Node35 [id="edge15_Node000034_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node35 [id="Node000035",label="tds_process_tokens",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gabfc9de1d1fe718818caf63a4be4035a6",tooltip="process all streams."]; │ │ │ │ │ Node35 -> Node30 [id="edge16_Node000035_Node000030",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node30 [id="Node000030",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node30 [id="Node000030",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node30 -> Node7 [id="edge17_Node000030_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node53 [id="edge18_Node000006_Node000053",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node53 [id="Node000053",label="tds8_adjust_login",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00571.html#ga9622e7d6c98a77b1962647c5005d3731",tooltip="Make sure proper setting are in place for TDS 8.0."]; │ │ │ │ │ Node6 -> Node54 [id="edge19_Node000006_Node000054",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node54 [id="Node000054",label="tds_dstr_set",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#gab78cc59b110df2817b00f9bed74c6ff1",tooltip="set a string from another buffer."]; │ │ │ │ │ Node6 -> Node55 [id="edge20_Node000006_Node000055",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node55 [id="Node000055",label="tds_init_login",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00574.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39",tooltip="Initialize login structure with locale information and other stuff for connection."]; │ │ │ │ │ @@ -61,15 +61,15 @@ │ │ │ │ │ Node59 [id="Node000059",label="tds_process_compute\l_names",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gae5b3e01f3d665f9e377de091f46f1ab9",tooltip="tds_process_compute_names() processes compute result sets."]; │ │ │ │ │ Node59 -> Node35 [id="edge32_Node000059_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node60 [id="edge33_Node000006_Node000060",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node60 [id="Node000060",label="tds_process_compute\l_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gae3368ea80d0d8b13791ceb13ee5f19c9",tooltip="tds_process_compute_result() processes compute result sets."]; │ │ │ │ │ Node60 -> Node35 [id="edge34_Node000060_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node11 [id="edge35_Node000006_Node000011",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node61 [id="edge36_Node000006_Node000061",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node61 [id="Node000061",label="tds_set_server",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01471.html#a11dd024f29372af84d4bc73daf864206",tooltip="Set the servername in a TDSLOGIN structure."]; │ │ │ │ │ + Node61 [id="Node000061",label="tds_set_server",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a11dd024f29372af84d4bc73daf864206",tooltip="Set the servername in a TDSLOGIN structure."]; │ │ │ │ │ Node1 -> Node62 [id="edge37_Node000001_Node000062",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node62 [id="Node000062",label="tds_dstr_dup",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00578.html#ga4e6d9fa6f9b9551a5a3390e10a5322e6",tooltip="Duplicate a string from another dynamic string."]; │ │ │ │ │ Node62 -> Node63 [id="edge38_Node000062_Node000063",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node63 [id="Node000063",label="tds5_process_result2",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gabe2bdd5a41ce067cb31aef18ff81cb1c",tooltip="tds5_process_result2() is the new TDS 5.0 result set processing routine."]; │ │ │ │ │ Node63 -> Node50 [id="edge39_Node000063_Node000050",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node63 -> Node35 [id="edge40_Node000063_Node000035",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node62 -> Node30 [id="edge41_Node000062_Node000030",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00578_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz │ │ │ │ ├── a00578_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot │ │ │ │ │ @@ -49,15 +49,15 @@ │ │ │ │ │ Node34 -> Node41 [id="edge22_Node000034_Node000041",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node41 [id="Node000041",label="dbsqlok",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00560.html#gae1f50a6a2c31fda57cb481922b06841e",tooltip="Wait for results of a query from the server."]; │ │ │ │ │ Node41 -> Node31 [id="edge23_Node000041_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 [id="Node000031",label="dbwritetext",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c",tooltip="Send text or image data to the server."]; │ │ │ │ │ Node34 -> Node16 [id="edge24_Node000034_Node000016",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 -> Node31 [id="edge25_Node000034_Node000031",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 -> Node29 [id="edge26_Node000034_Node000029",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node29 [id="Node000029",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00287.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ + Node29 [id="Node000029",label="tds_bcp_init",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00236.html#ac6610c72bd31bad5378f760fa9b12d66",tooltip="Initialize BCP information."]; │ │ │ │ │ Node29 -> Node2 [id="edge27_Node000029_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 -> Node42 [id="edge28_Node000034_Node000042",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node42 [id="Node000042",label="tds_process_cancel",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaf233e79967f82f4e0dd4d11524917a34",tooltip=" "]; │ │ │ │ │ Node34 -> Node44 [id="edge29_Node000034_Node000044",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node44 [id="Node000044",label="tds_process_simple\l_query",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00577.html#gaeeb1562044786ea17bea361ed83e6946",tooltip="Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the statement returns results,..."]; │ │ │ │ │ Node44 -> Node27 [id="edge30_Node000044_Node000027",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node34 -> Node27 [id="edge31_Node000034_Node000027",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ @@ -85,9 +85,9 @@ │ │ │ │ │ Node58 [id="Node000058",label="tds_process_compute\l_names",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gae5b3e01f3d665f9e377de091f46f1ab9",tooltip="tds_process_compute_names() processes compute result sets."]; │ │ │ │ │ Node58 -> Node34 [id="edge46_Node000058_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node59 [id="edge47_Node000001_Node000059",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node59 [id="Node000059",label="tds_process_compute\l_result",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00577.html#gae3368ea80d0d8b13791ceb13ee5f19c9",tooltip="tds_process_compute_result() processes compute result sets."]; │ │ │ │ │ Node59 -> Node34 [id="edge48_Node000059_Node000034",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node10 [id="edge49_Node000001_Node000010",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node60 [id="edge50_Node000001_Node000060",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node60 [id="Node000060",label="tds_set_server",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01471.html#a11dd024f29372af84d4bc73daf864206",tooltip="Set the servername in a TDSLOGIN structure."]; │ │ │ │ │ + Node60 [id="Node000060",label="tds_set_server",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a01465.html#a11dd024f29372af84d4bc73daf864206",tooltip="Set the servername in a TDSLOGIN structure."]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00578_gae092e53680d954bcf4f19334987d43c7_icgraph.dot.gz │ │ │ │ ├── a00578_gae092e53680d954bcf4f19334987d43c7_icgraph.dot │ │ │ │ │ @@ -5,17 +5,17 @@ │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ rankdir="RL"; │ │ │ │ │ Node1 [id="Node000001",label="tds_dstr_buf",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Returns a buffer to edit the string."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node2 [id="Node000002",label="dbcolname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga3bcdc8f584537b8278483f2cee59f130",tooltip="Return name of a regular result column."]; │ │ │ │ │ Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node3 [id="Node000003",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00149.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ + Node3 [id="Node000003",label="dbcolinfo",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00254.html#a9b73fd1afa2c3ccfca481635212d2e43",tooltip="Get a bunch of column attributes with a single call (Microsoft-compatibility feature)."]; │ │ │ │ │ Node2 -> Node4 [id="edge3_Node000002_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00140.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ + Node4 [id="Node000004",label="dbpivot",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00266.html#af8ada101cd189eff87b3533cbeaaa23b",tooltip="Pivot the rows, creating a new resultset."]; │ │ │ │ │ Node1 -> Node5 [id="edge4_Node000001_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="dbcolsource",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00560.html#ga7be8b405d5416bf0361f65dbb5942faa",tooltip="Get base database column name for a result set column."]; │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 [id="Node000006",label="dbretname",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00561.html#ga63dc384b5c0ee3086a171337e8c78317",tooltip="Get name of an output parameter filled by a stored procedure."]; │ │ │ │ │ Node1 -> Node7 [id="edge6_Node000001_Node000007",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node7 [id="Node000007",label="tds_dstr_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00576.html#ga017c427e9599c031be5c555cb32abe2c",tooltip="Reads a string from wire and put in a DSTR."]; │ │ │ │ │ Node7 -> Node8 [id="edge7_Node000007_Node000008",dir="back",color="steelblue1",style="solid",tooltip=" "]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00615.html │ │ │ │ @@ -232,15 +232,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
static TDSDYNAMIC * tds_process_dynamic static TDSDYNAMIC * tds_process_dynamic (TDSSOCKETtds)
│ │ │ │
 
│ │ │ │ int vflag
 
│ │ │ │
The documentation for this struct was generated from the following files:
    │ │ │ │
  • src/apps/datacopy.c
  • │ │ │ │ -
  • src/apps/freebcp.h
  • │ │ │ │ +
  • src/apps/freebcp.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00631.html │ │ │ │ @@ -80,15 +80,15 @@ │ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSRESULTINFO *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ -TDSRESULTINFOresinfo
resinfo
 pointer to result information
 
│ │ │ │ DBINT row
 row number
 
│ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │
 
│ │ │ │ TDS_INT * sizes
 save old sizes
 
│ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00635.html │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ int tds_ctx_ref_count │ │ │ │  libTDS context reference counter
│ │ │ │   │ │ │ │ │ │ │ │

Detailed Description

│ │ │ │

\dblib_internal

Remarks
A db-lib connection has an implicit TDS context.
│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/dblib/dblib.c
  • │ │ │ │ +
  • src/dblib/dblib.c
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00639.html │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │

Detailed Description

│ │ │ │
Remarks
member msgno Vendor-defined message number
│ │ │ │
│ │ │ │ member severity Is passed to the error handler
│ │ │ │
│ │ │ │ member msgtext Text of message
│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/dblib/dblib.c
  • │ │ │ │ +
  • src/dblib/dblib.c
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00699.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ TDS_POOL_EXECUTE execute │ │ │ │   │ │ │ │ │ │ │ │ TDS_POOL_EVENTnext │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/pool/pool.h
  • │ │ │ │ +
  • src/pool/pool.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00703.html │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ bool poll_send │ │ │ │   │ │ │ │ │ │ │ │ TDSSOCKETtds │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/pool/pool.h
  • │ │ │ │ +
  • src/pool/pool.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00707.html │ │ │ │ @@ -100,15 +100,15 @@ │ │ │ │ TDS_POOL_SOCKET sock │ │ │ │   │ │ │ │ │ │ │ │ TDS_USER_STATE user_state │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/pool/pool.h
  • │ │ │ │ +
  • src/pool/pool.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00711.html │ │ │ │ @@ -100,15 +100,15 @@ │ │ │ │ time_t last_used_tm │ │ │ │   │ │ │ │ │ │ │ │ TDS_POOL_SOCKET sock │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/pool/pool.h
  • │ │ │ │ +
  • src/pool/pool.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00715.html │ │ │ │ @@ -157,15 +157,15 @@ │ │ │ │  users in wait state
│ │ │ │   │ │ │ │ │ │ │ │ TDS_SYS_SOCKET wakeup_fd │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/pool/pool.h
  • │ │ │ │ +
  • src/pool/pool.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00727.html │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ char * pb │ │ │ │  buffer
│ │ │ │   │ │ │ │ │ │ │ │

Detailed Description

│ │ │ │

Holds clause buffer.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/tds/bulk.c
  • │ │ │ │ +
  • src/tds/bulk.c
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00731.html │ │ │ │ @@ -109,15 +109,15 @@ │ │ │ │ const char * terminator │ │ │ │  terminator
│ │ │ │   │ │ │ │ │ │ │ │

Detailed Description

│ │ │ │

input stream to read a file

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/tds/bulk.c
  • │ │ │ │ +
  • src/tds/bulk.c
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00759.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ TDSINSTREAM stream │ │ │ │   │ │ │ │ │ │ │ │ TDSSOCKETtds │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/tds/data.c
  • │ │ │ │ +
  • src/tds/data.c
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00787.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ gcry_mpi_t num │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00791.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ unsigned long length │ │ │ │   │ │ │ │ │ │ │ │ unsigned long type │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00795.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ mpz_t n │ │ │ │   │ │ │ │ │ │ │ │ unsigned size │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00799.html │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │ struct namelistnext │ │ │ │  next element in the list
│ │ │ │   │ │ │ │ │ │ │ │

Detailed Description

│ │ │ │

Holds list of names.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • src/tds/token.c
  • │ │ │ │ +
  • src/tds/token.c
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00815.html │ │ │ │ @@ -106,15 +106,15 @@ │ │ │ │ CS_VOID * thread │ │ │ │   │ │ │ │ │ │ │ │ CS_INT threadlen │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00819.html │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ CS_COMMANDcommand │ │ │ │   │ │ │ │ │ │ │ │ CS_CONNECTIONconnection │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00823.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ unsigned char precision │ │ │ │   │ │ │ │ │ │ │ │ unsigned char scale │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00827.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ CS_CHAR array [256] │ │ │ │   │ │ │ │ │ │ │ │ CS_SMALLINT len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00831.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ CS_SMALLINT len │ │ │ │   │ │ │ │ │ │ │ │ CS_CHAR str [256] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00835.html │ │ │ │ @@ -120,15 +120,15 @@ │ │ │ │ CS_INT total_txtlen │ │ │ │   │ │ │ │ │ │ │ │ CS_INT usertype │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00839.html │ │ │ │ @@ -114,15 +114,15 @@ │ │ │ │ CS_INT status │ │ │ │   │ │ │ │ │ │ │ │ CS_INT usertype │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00843.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ CS_INT mnyhigh │ │ │ │   │ │ │ │ │ │ │ │ CS_UINT mnylow │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00847.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ CS_INT mny4 │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00851.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ CS_INT dtdays │ │ │ │   │ │ │ │ │ │ │ │ CS_INT dttime │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00855.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ CS_USHORT days │ │ │ │   │ │ │ │ │ │ │ │ CS_USHORT minutes │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00859.html │ │ │ │ @@ -112,15 +112,15 @@ │ │ │ │ CS_INT datetzone │ │ │ │   │ │ │ │ │ │ │ │ CS_INT dateyear │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00863.html │ │ │ │ @@ -106,15 +106,15 @@ │ │ │ │ CS_INT sqlstatelen │ │ │ │   │ │ │ │ │ │ │ │ CS_INT status │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00867.html │ │ │ │ @@ -115,15 +115,15 @@ │ │ │ │ CS_CHAR text [CS_MAX_MSG] │ │ │ │   │ │ │ │ │ │ │ │ CS_INT textlen │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00927.html │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ │ │ │ CS_DYNAMIC_PARAMparam_list │ │ │ │   │ │ │ │ │ │ │ │ char * stmt │ │ │ │   │ │ │ │ │ │ │ │ -TDSDYNAMICtdsdyn │ │ │ │ +TDSDYNAMICtdsdyn │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │
  • include/ctlib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00931.html │ │ │ │ @@ -101,15 +101,15 @@ │ │ │ │ │ │ │ │ CS_CONNECTIONcon │ │ │ │   │ │ │ │ │ │ │ │ int curr_result_type │ │ │ │   │ │ │ │ │ │ │ │ -TDSCURSORcursor │ │ │ │ +TDSCURSORcursor │ │ │ │   │ │ │ │ │ │ │ │ CS_INT cursor_state │ │ │ │   │ │ │ │ │ │ │ │ CS_DYNAMICdyn │ │ │ │   │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00959.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ bool network_auth │ │ │ │   │ │ │ │ │ │ │ │ TDSLOGINtds_login │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00963.html │ │ │ │ @@ -99,15 +99,15 @@ │ │ │ │ struct dblib_buffer_rowrows │ │ │ │   │ │ │ │ │ │ │ │ int tail │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00967.html │ │ │ │ @@ -100,15 +100,15 @@ │ │ │ │ int term_len │ │ │ │   │ │ │ │ │ │ │ │ BYTE * terminator │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00971.html │ │ │ │ @@ -108,15 +108,15 @@ │ │ │ │ TDS_INT lastrow │ │ │ │   │ │ │ │ │ │ │ │ TDS_INT maxerrs │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00975.html │ │ │ │ @@ -102,15 +102,15 @@ │ │ │ │ TDS_SERVER_TYPE type │ │ │ │   │ │ │ │ │ │ │ │ BYTE * value │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00979.html │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ DBSMALLINT options │ │ │ │   │ │ │ │ │ │ │ │ DBREMOTE_PROC_PARAMparam_list │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00983.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ DBSTRINGparam │ │ │ │   │ │ │ │ │ │ │ │ const char * text │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00987.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ const BYTE * bindval │ │ │ │   │ │ │ │ │ │ │ │ size_t len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00991.html │ │ │ │ @@ -170,15 +170,15 @@ │ │ │ │ DBTYPEINFO typeinfo │ │ │ │   │ │ │ │ │ │ │ │ BYTE * user_data │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/dblib.h
  • │ │ │ │ +
  • include/dblib.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00995.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ uint32_t ui │ │ │ │   │ │ │ │ │ │ │ │ uint16_t usi │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this union was generated from the following file:
    │ │ │ │ -
  • include/freetds/bytes.h
  • │ │ │ │ +
  • include/freetds/bytes.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a00999.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ short int alias_pos │ │ │ │   │ │ │ │ │ │ │ │ short int canonic │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01003.html │ │ │ │ @@ -1201,15 +1201,15 @@ │ │ │ │ char stringpool_str98 [sizeof("iso14")] │ │ │ │   │ │ │ │ │ │ │ │ char stringpool_str99 [sizeof("iso84")] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01007.html │ │ │ │ @@ -161,15 +161,15 @@ │ │ │ │ TDS_UINT ui │ │ │ │   │ │ │ │ │ │ │ │ TDS_USMALLINT usi │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this union was generated from the following file:
    │ │ │ │ -
  • include/freetds/convert.h
  • │ │ │ │ +
  • include/freetds/convert.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01011.html │ │ │ │ @@ -86,15 +86,15 @@ │ │ │ │ TDS_CHAR * c │ │ │ │   │ │ │ │ │ │ │ │ TDS_UINT len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/convert.h
  • │ │ │ │ +
  • include/freetds/convert.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01015.html │ │ │ │ @@ -86,15 +86,15 @@ │ │ │ │ TDS_CHAR * ib │ │ │ │   │ │ │ │ │ │ │ │ TDS_UINT len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/convert.h
  • │ │ │ │ +
  • include/freetds/convert.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01019.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ const char * alias │ │ │ │   │ │ │ │ │ │ │ │ int canonic │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/iconv.h
  • │ │ │ │ +
  • include/freetds/iconv.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01023.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ unsigned int eilseq:1 │ │ │ │   │ │ │ │ │ │ │ │ unsigned int einval:1 │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/iconv.h
  • │ │ │ │ +
  • include/freetds/iconv.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01027.html │ │ │ │ @@ -83,19 +83,19 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDS_ENCODING  │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ iconv_t cd
 
│ │ │ │ -TDS_ENCODING charset
charset
 
│ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/iconv.h
  • │ │ │ │ +
  • include/freetds/iconv.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01031.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ struct tdsiconvdir to from │ │ │ │   │ │ │ │ │ │ │ │ TDS_ERRNO_MESSAGE_FLAGS suppress │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/iconv.h
  • │ │ │ │ +
  • include/freetds/iconv.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01035.html │ │ │ │ @@ -103,15 +103,15 @@ │ │ │ │ char state2 [6] │ │ │ │   │ │ │ │ │ │ │ │ char state3 [6] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01039.html │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ int num_errors │ │ │ │   │ │ │ │ │ │ │ │ char ranked │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01043.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
_dheader Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Descriptor header. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <odbc.h>

│ │ │ │ +

#include <odbc.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ SQLSMALLINT sql_desc_alloc_type
 
│ │ │ │ @@ -104,15 +104,15 @@ │ │ │ │
│ │ │ │ SQLULEN * sql_desc_rows_processed_ptr
 
│ │ │ │

Detailed Description

│ │ │ │

Descriptor header.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01047.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
_drecord Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Descriptor record. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <odbc.h>

│ │ │ │ +

#include <odbc.h>

│ │ │ │
│ │ │ │ Collaboration diagram for _drecord:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -190,15 +190,15 @@ │ │ │ │

│ │ │ │ SQLSMALLINT sql_desc_updatable
 
│ │ │ │

Detailed Description

│ │ │ │

Descriptor record.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01051.html │ │ │ │ @@ -123,15 +123,15 @@ │ │ │ │ │ │ │ │

Nested descriptor to use.

│ │ │ │

-1: nested, cannot have focus. 0 : self. >0: descriptor from IPD.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01055.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ SQLINTEGER odbc_version │ │ │ │   │ │ │ │ │ │ │ │ SQLINTEGER output_nts │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01059.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ SQLSMALLINT htype │ │ │ │   │ │ │ │ │ │ │ │ tds_mutex mtx │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01063.html │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ tds_mutex mtx │ │ │ │   │ │ │ │ │ │ │ │ TDSCONTEXTtds_ctx │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01067.html │ │ │ │ @@ -135,15 +135,15 @@ │ │ │ │ SQLUINTEGER translate_option │ │ │ │   │ │ │ │ │ │ │ │ SQLUINTEGER txn_isolation │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01071.html │ │ │ │ @@ -147,15 +147,15 @@ │ │ │ │ │ │ │ │

Statement executing.

│ │ │ │

This should be set AFTER sending query to avoid race condition and assure to not overwrite it if another statement is executing a query.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01075.html │ │ │ │ @@ -144,15 +144,15 @@ │ │ │ │ SQLUINTEGER simulate_cursor │ │ │ │   │ │ │ │ │ │ │ │ SQLUINTEGER use_bookmarks │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01079.html │ │ │ │ @@ -92,24 +92,24 @@ │ │ │ │ │ │ │ │ struct _hsattr attr │ │ │ │   │ │ │ │ │ │ │ │ unsigned int curr_param_row │ │ │ │   │ │ │ │ │ │ │ │ -TDSCURSORcursor │ │ │ │ +TDSCURSORcursor │ │ │ │   │ │ │ │ │ │ │ │ DSTR cursor_name │ │ │ │   │ │ │ │ │ │ │ │ struct _hdbcdbc │ │ │ │   │ │ │ │ │ │ │ │ -TDSDYNAMICdyn │ │ │ │ +TDSDYNAMICdyn │ │ │ │   │ │ │ │ │ │ │ │ struct _sql_errors errs │ │ │ │   │ │ │ │ │ │ │ │ SQLSMALLINT htype │ │ │ │   │ │ │ │ @@ -217,15 +217,15 @@ │ │ │ │ │ │ │ │

Prepared statement needs to be prepared again.

│ │ │ │

This can happen if the parameters was changed or not specified.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01083.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ TDSCOLUMNFUNCS common │ │ │ │   │ │ │ │ │ │ │ │ void(* set_type_info )(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver) │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01087.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ size_t len │ │ │ │   │ │ │ │ │ │ │ │ const char * p │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01091.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ TDS_DESCipd │ │ │ │   │ │ │ │ │ │ │ │ DSTR type_name │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/odbc.h
  • │ │ │ │ +
  • include/freetds/odbc.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01095.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ unsigned char precision │ │ │ │   │ │ │ │ │ │ │ │ unsigned char scale │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01099.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ TDS_INT mnyhigh │ │ │ │   │ │ │ │ │ │ │ │ TDS_UINT mnylow │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01103.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ TDS_INT8 mny │ │ │ │   │ │ │ │ │ │ │ │ TDS_OLD_MONEY tdsoldmoney │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this union was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01107.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ TDS_INT mny4 │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01111.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ TDS_INT dtdays │ │ │ │   │ │ │ │ │ │ │ │ TDS_INT dttime │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01115.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ TDS_USMALLINT days │ │ │ │   │ │ │ │ │ │ │ │ TDS_USMALLINT minutes │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01119.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ TDS_USMALLINT Data3 │ │ │ │   │ │ │ │ │ │ │ │ TDS_UCHAR Data4 [8] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01123.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
TDS71_COLLATION Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

TDS 7.1 collation information. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <proto.h>

│ │ │ │ +

#include <proto.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_UCHAR charset_id
 
│ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
│ │ │ │ TDS_USMALLINT locale_id
 
│ │ │ │

Detailed Description

│ │ │ │

TDS 7.1 collation information.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01127.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
TDS_HEADER Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

TDS packet header. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <proto.h>

│ │ │ │ +

#include <proto.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_USMALLINT length
 
│ │ │ │ @@ -101,15 +101,15 @@ │ │ │ │
│ │ │ │ TDS_UCHAR window
 
│ │ │ │

Detailed Description

│ │ │ │

TDS packet header.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01131.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
TDS72_SMP_HEADER Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

TDS 7.2 SMP packet header. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <proto.h>

│ │ │ │ +

#include <proto.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_UINT seq
 
│ │ │ │ @@ -101,15 +101,15 @@ │ │ │ │
│ │ │ │ TDS_UINT wnd
 
│ │ │ │

Detailed Description

│ │ │ │

TDS 7.2 SMP packet header.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/proto.h
  • │ │ │ │ +
  • include/freetds/proto.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01135.html │ │ │ │ @@ -105,15 +105,15 @@ │ │ │ │ int ai_protocol │ │ │ │   │ │ │ │ │ │ │ │ int ai_socktype │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01139.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ int fd │ │ │ │   │ │ │ │ │ │ │ │ short revents │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/replacements/poll.h
  • │ │ │ │ +
  • include/freetds/replacements/poll.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01143.html │ │ │ │ @@ -75,27 +75,27 @@ │ │ │ │
tds_input_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

define a stream of data used for input │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ int(* read )(struct tds_input_stream *stream, void *ptr, size_t len)
 read some data Return 0 if end of stream Return <0 if error (actually not defined)
 
│ │ │ │

Detailed Description

│ │ │ │

define a stream of data used for input

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01147.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_output_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

define a stream of data used for output │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -111,15 +111,15 @@ │ │ │ │ │ │ │ │

write buffer.

│ │ │ │

client will write data into this buffer. not required that buffer is the result of any alloc function so buffer pointer can point in the middle of another buffer. client will write up to buf_len. client should not cache buffer and buf_len before a call to write as write can change these values.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01151.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_datain_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

input stream to read data from tds protocol │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_datain_stream:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ size_t buf_len
 
char * buffer
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │ size_t 

wire_size
 bytes still to read
 
│ │ │ │

Detailed Description

│ │ │ │

input stream to read data from tds protocol

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01155.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_dataout_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

output stream to write data to tds protocol │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_dataout_stream:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │

│ │ │ │ size_t written
 
│ │ │ │

Detailed Description

│ │ │ │

output stream to write data to tds protocol

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01159.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_staticin_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

input stream to read data from a static buffer │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_staticin_stream:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │

│ │ │ │ TDSINSTREAM stream
 
│ │ │ │

Detailed Description

│ │ │ │

input stream to read data from a static buffer

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01163.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_staticout_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

output stream to write data to a static buffer. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_staticout_stream:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ TDSOUTSTREAM 

stream
 
│ │ │ │

Detailed Description

│ │ │ │

output stream to write data to a static buffer.

│ │ │ │

stream.buffer contains the pointer where stream will write to.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01167.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_dynamic_stream Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

output stream to write data to a dynamic buffer │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <stream.h>

│ │ │ │ +

#include <stream.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_dynamic_stream:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -103,15 +103,15 @@ │ │ │ │

│ │ │ │ TDSOUTSTREAM stream
 
│ │ │ │

Detailed Description

│ │ │ │

output stream to write data to a dynamic buffer

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/stream.h
  • │ │ │ │ +
  • include/freetds/stream.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01171.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_compiletime_settings Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

A structure to hold all the compile-time settings. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ const char * freetds_version
 
│ │ │ │ @@ -129,15 +129,15 @@ │ │ │ │ bool unixodbc
 
│ │ │ │

Detailed Description

│ │ │ │

A structure to hold all the compile-time settings.

│ │ │ │

This structure is returned by tds_get_compiletime_settings

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01175.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
TDS_DATETIMEALL Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

This structure is not directly connected to TDS protocol but keeps any DATE/TIME information. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_USMALLINT _tds_reserved:10
 
│ │ │ │ @@ -110,15 +110,15 @@ │ │ │ │
│ │ │ │ TDS_USMALLINT time_prec:3
 
│ │ │ │

Detailed Description

│ │ │ │

This structure is not directly connected to TDS protocol but keeps any DATE/TIME information.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01179.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tdsdaterec Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Used by tds_datecrack. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ TDS_INT  │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_INT day
 day of month (1-31)
 
year
 year
 
│ │ │ │

Detailed Description

│ │ │ │

Used by tds_datecrack.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01183.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ TDS_INT i │ │ │ │   │ │ │ │ │ │ │ │ TDS_TINYINT ti │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this union was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01187.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ void * p │ │ │ │   │ │ │ │ │ │ │ │ int64_t ui │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this union was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01191.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ unsigned char type │ │ │ │   │ │ │ │ │ │ │ │ unsigned char values [TDS_MAX_CAPABILITY/2-2] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01195.html │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ TDS_CAPABILITY_TYPE types [2] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01199.html │ │ │ │ @@ -263,15 +263,15 @@ │ │ │ │ │ │ │ │

charset of server e.g.

│ │ │ │

iso_1

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01203.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ const char * qn_options │ │ │ │   │ │ │ │ │ │ │ │ TDS_INT qn_timeout │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01207.html │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ char * server_charset │ │ │ │   │ │ │ │ │ │ │ │ char * time_fmt │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01211.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_blob Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Information about blobs (e.g. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_CHAR textptr [16]
 
│ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ bool valid_ptr
 
│ │ │ │

Detailed Description

│ │ │ │

Information about blobs (e.g.

│ │ │ │

text or image). current_row contains this structure.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01215.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_variant Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Store variant information. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_UCHAR collation [5]
 
│ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │
│ │ │ │ TDS_SERVER_TYPE type
 
│ │ │ │

Detailed Description

│ │ │ │

Store variant information.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01219.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_encoding Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Information relevant to libiconv. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ unsigned char canonic
 internal numeric index into array of all encodings
 
 name of the encoding (ie UTF-8)
 
│ │ │ │

Detailed Description

│ │ │ │

Information relevant to libiconv.

│ │ │ │

The name is an iconv name, not the same as found in master..syslanguages.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01223.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ TDS_INT datalen │ │ │ │   │ │ │ │ │ │ │ │ bool is_null │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01227.html │ │ │ │ @@ -139,15 +139,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01231.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_column Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Metadata about columns in regular and compute rows. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_column:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -297,15 +297,15 @@ │ │ │ │

This type can be different from wire type because conversion (e.g.

│ │ │ │

type of data, saved from wire

│ │ │ │

UCS-2->Ascii) can be applied. I'm beginning to wonder about the wisdom of this, however. April 2003 jkl

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01239.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_result_info Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Hold information for any results. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_result_info:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -124,15 +124,15 @@ │ │ │ │

│ │ │ │ bool rows_exist
 
│ │ │ │

Detailed Description

│ │ │ │

Hold information for any results.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01243.html │ │ │ │ @@ -106,15 +106,15 @@ │ │ │ │ TDS_CHAR * 

sql_state
 
│ │ │ │ TDS_SMALLINT state
 
│ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01247.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ char * columnname │ │ │ │   │ │ │ │ │ │ │ │ struct tds_upd_colnext │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01251.html │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │ TDS_CURSOR_STATE fetch │ │ │ │   │ │ │ │ │ │ │ │ TDS_CURSOR_STATE open │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01255.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_cursor Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Holds information about a cursor. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_cursor:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSRESULTINFO *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -154,15 +154,15 @@ │ │ │ │ │ │ │ │

< number of updatable columns

│ │ │ │

< updatable column list number of cursor rows to fetch

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01259.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_env Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Current environment as reported by the server. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │

│ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │

 SQL query.
 
│ │ │ │ TDS_INT ref_count
 reference counter so client can retain safely a pointer
 
│ │ │ │ -TDSRESULTINFOres_info
res_info
 
│ │ │ │ TDS_USMALLINT srv_status
 
│ │ │ │ TDS_CURSOR_STATUS status
 cursor parameter
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ int block_size
 packet size (512-65535)
 
│ │ │ │ char * language
 
│ │ │ │

Detailed Description

│ │ │ │

Current environment as reported by the server.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01263.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_dynamic Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Holds information for a dynamic (also called prepared) query. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_dynamic:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -173,15 +173,15 @@ │ │ │ │ │ │ │ │

query parameters.

│ │ │ │

Mostly used executing query however is a good idea to prepare query again if parameter type change in an incompatible way (ie different types or larger size). Is also better to prepare a query knowing parameter types earlier.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01267.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ unsigned int 

flags
 
│ │ │ │ TDS_MULTIPLE_TYPE type
 
│ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01271.html │ │ │ │ @@ -99,15 +99,15 @@ │ │ │ │ int(* msg_handler )(const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *) │ │ │ │   │ │ │ │ │ │ │ │ void * parent │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01275.html │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ uint8_t * packet │ │ │ │   │ │ │ │ │ │ │ │ int packet_len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01279.html │ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │ struct tds_packetnext │ │ │ │   │ │ │ │ │ │ │ │ uint16_t sid │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01283.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ TDS_SYS_SOCKET s_signal │ │ │ │   │ │ │ │ │ │ │ │ TDS_SYS_SOCKET s_signaled │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01287.html │ │ │ │ @@ -101,26 +101,26 @@ │ │ │ │ │ │ │ │ TDS_UCHAR collation [5] │ │ │ │   │ │ │ │ │ │ │ │ bool corked │ │ │ │   │ │ │ │ │ │ │ │ -TDSCURSORcursors │ │ │ │ +TDSCURSORcursors │ │ │ │  linked list of cursors allocated for this connection contains only cursors allocated on the server
│ │ │ │   │ │ │ │ │ │ │ │ -TDSDYNAMICdyns │ │ │ │ +TDSDYNAMICdyns │ │ │ │  list of dynamic allocated for this connection contains only dynamic allocated on the server
│ │ │ │   │ │ │ │ │ │ │ │ unsigned int encrypt_single_packet:1 │ │ │ │   │ │ │ │ │ │ │ │ -TDSENV env │ │ │ │ +TDSENV env │ │ │ │  environment is shared between all sessions
│ │ │ │   │ │ │ │ │ │ │ │ tds_mutex list_mtx │ │ │ │   │ │ │ │ uint8_t ncharsize │ │ │ │  Ratio between bytes allocated for a NCHAR type and type length (Sybase).
│ │ │ │ @@ -212,15 +212,15 @@ │ │ │ │ │ │ │ │

Ratio between bytes allocated for a UNICHAR type and type length (Sybase).

│ │ │ │

For instance in case a UNIVARCHAR(2) takes 4 bytes it's 2. It really should be only 2.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01291.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
tds_socket Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Information for a server connection. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tds.h>

│ │ │ │ +

#include <tds.h>

│ │ │ │
│ │ │ │ Collaboration diagram for tds_socket:
│ │ │ │
│ │ │ │
│ │ │ │
[legend]
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSCURSOR *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSDYNAMIC *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -180,30 +180,30 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSRESULTINFO *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDS_STATE  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -95,25 +95,25 @@ │ │ │ │

│ │ │ │ TDSCOMPUTEINFO ** comp_info
 
│ │ │ │ TDSCONNECTION conn [1]
 
│ │ │ │ -TDSCURSORcur_cursor
cur_cursor
 cursor in use
 
│ │ │ │ -TDSDYNAMICcur_dyn
cur_dyn
 dynamic structure in use
 
│ │ │ │ TDS_OPERATION current_op
 
TDSRESULTINFOcurrent_results
TDSRESULTINFOcurrent_results
 Current query information.
 
│ │ │ │ void(* env_chg_func )(TDSSOCKET *tds, int type, char *oldval, char *newval)
 
│ │ │ │ unsigned frozen
│ │ │ │ TDS_INT query_timeout
 
│ │ │ │ TDSPACKETrecv_packet
 
│ │ │ │ -TDSRESULTINFOres_info
res_info
 
│ │ │ │ TDS_INT ret_status
 return status from store procedure
 
│ │ │ │ TDS_INT8 rows_affected
 rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid
 
│ │ │ │ TDSPACKETsend_packet
 packet we are preparing to send
 
│ │ │ │ -TDS_STATE state
state
 
│ │ │ │ tds_mutex wire_mtx
 
│ │ │ │

Detailed Description

│ │ │ │

Information for a server connection.

│ │ │ │ @@ -211,15 +211,15 @@ │ │ │ │ │ │ │ │

◆ current_results

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
TDSRESULTINFO* tds_socket::current_resultsTDSRESULTINFO* tds_socket::current_results
│ │ │ │
│ │ │ │ │ │ │ │

Current query information.

│ │ │ │

Contains information in process, both normal and compute results. This pointer shouldn't be freed; it's just an alias to another structure.

│ │ │ │ │ │ │ │ @@ -307,15 +307,15 @@ │ │ │ │ │ │ │ │

Maximum size of packet pointed by out_buf.

│ │ │ │

The buffer is actually a bit larger to make possible to do some optimizations (at least TDS_ADDITIONAL_SPACE bytes).

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01295.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ struct tds_tvp_rownext │ │ │ │   │ │ │ │ │ │ │ │ TDSPARAMINFOparams │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01299.html │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ TDS_TVP_ROWrow │ │ │ │   │ │ │ │ │ │ │ │ char * schema │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01303.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ struct tdsdump_off_itemnext │ │ │ │   │ │ │ │ │ │ │ │ tds_thread_id thread_id │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01307.html │ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │   │ │ │ │ │ │ │ │ TDSSOCKETtds │ │ │ │  which socket we refer to
│ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01311.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ TDS_TINYINT status │ │ │ │   │ │ │ │ │ │ │ │ TDS_TINYINT type │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01315.html │ │ │ │ @@ -83,15 +83,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +TDSRESULTINFO *  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -114,15 +114,15 @@ │ │ │ │ DSTR  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ TDS_INT bind_count
 
│ │ │ │ -TDSRESULTINFObindinfo
bindinfo
 
│ │ │ │ TDS_INT direction
 
│ │ │ │ DSTR hint
 
tablename
 
│ │ │ │ bool xfer_init
 
│ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/tds.h
  • │ │ │ │ +
  • include/freetds/tds.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01319.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ char dummy [0] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/thread.h
  • │ │ │ │ +
  • include/freetds/thread.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01323.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ char dummy [0] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/thread.h
  • │ │ │ │ +
  • include/freetds/thread.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01327.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ char dummy [0] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/thread.h
  • │ │ │ │ +
  • include/freetds/thread.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01331.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ uint8_t kn [16][8] │ │ │ │   │ │ │ │ │ │ │ │ uint32_t sp [8][64] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/des.h
  • │ │ │ │ +
  • include/freetds/utils/des.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01335.html │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ struct dlist_ringnext │ │ │ │   │ │ │ │ │ │ │ │ struct dlist_ringprev │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/dlist.h
  • │ │ │ │ +
  • include/freetds/utils/dlist.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01339.html │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ dlist_ring ring │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/dlist.tmpl.h
  • │ │ │ │ +
  • include/freetds/utils/dlist.tmpl.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01343.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ uint64_t bytes │ │ │ │   │ │ │ │ │ │ │ │ uint32_t in [16] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/md4.h
  • │ │ │ │ +
  • include/freetds/utils/md4.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01347.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ uint64_t bytes │ │ │ │   │ │ │ │ │ │ │ │ uint32_t in [16] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/md5.h
  • │ │ │ │ +
  • include/freetds/utils/md5.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01351.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ uint16_t comp [8] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/smp.h
  • │ │ │ │ +
  • include/freetds/utils/smp.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01355.html │ │ │ │ @@ -75,30 +75,30 @@ │ │ │ │
tds_dstr Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Structure to hold a string. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <string.h>

│ │ │ │ +

#include <string.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ char dstr_s [1]
 
│ │ │ │ size_t dstr_size
 
│ │ │ │

Detailed Description

│ │ │ │

Structure to hold a string.

│ │ │ │

Use tds_dstr_* functions/macros, do not access members directly. There should be always a buffer.

│ │ │ │

The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/freetds/utils/string.h
  • │ │ │ │ +
  • include/freetds/utils/string.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01359.html │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ SQLUSMALLINT minute │ │ │ │   │ │ │ │ │ │ │ │ SQLUSMALLINT second │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/odbcss.h
  • │ │ │ │ +
  • include/odbcss.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01363.html │ │ │ │ @@ -103,15 +103,15 @@ │ │ │ │ SQLSMALLINT timezone_minute │ │ │ │   │ │ │ │ │ │ │ │ SQLSMALLINT year │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/odbcss.h
  • │ │ │ │ +
  • include/odbcss.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01367.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ DBSMALLINT len │ │ │ │   │ │ │ │ │ │ │ │ char str [256] │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01371.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ unsigned char array [256] │ │ │ │   │ │ │ │ │ │ │ │ DBSMALLINT len │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01375.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ unsigned char precision │ │ │ │   │ │ │ │ │ │ │ │ unsigned char scale │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01379.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ DBINT mnyhigh │ │ │ │   │ │ │ │ │ │ │ │ DBUINT mnylow │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01383.html │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │

│ │ │ │ Public Attributes

│ │ │ │ │ │ │ │ DBINT mny4 │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01387.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ DBINT dtdays │ │ │ │   │ │ │ │ │ │ │ │ DBINT dttime │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01391.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ DBUSMALLINT days │ │ │ │   │ │ │ │ │ │ │ │ DBUSMALLINT minutes │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01395.html │ │ │ │ @@ -103,15 +103,15 @@ │ │ │ │  time, 7 digit precision
│ │ │ │   │ │ │ │ │ │ │ │ DBUSMALLINT time_prec:3 │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01399.html │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ DBINT precision │ │ │ │   │ │ │ │ │ │ │ │ DBINT scale │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01403.html │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ BYTE * strtext │ │ │ │   │ │ │ │ │ │ │ │ DBINT strtotlen │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01407.html │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ DBINT UserType │ │ │ │   │ │ │ │ │ │ │ │ BOOL VarLength │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01411.html │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ DBINT UserType │ │ │ │   │ │ │ │ │ │ │ │ BOOL VarLength │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01415.html │ │ │ │ @@ -112,15 +112,15 @@ │ │ │ │ DBINT weekday │ │ │ │   │ │ │ │ │ │ │ │ DBINT year │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01419.html │ │ │ │ @@ -112,15 +112,15 @@ │ │ │ │ DBINT quarter │ │ │ │   │ │ │ │ │ │ │ │ DBINT week │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01423.html │ │ │ │ @@ -112,15 +112,15 @@ │ │ │ │ DBINT weekday │ │ │ │   │ │ │ │ │ │ │ │ DBINT year │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01427.html │ │ │ │ @@ -112,15 +112,15 @@ │ │ │ │ DBINT quarter │ │ │ │   │ │ │ │ │ │ │ │ DBINT week │ │ │ │   │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • include/sybdb.h
  • │ │ │ │ +
  • include/sybdb.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01428.html │ │ │ │ @@ -76,40 +76,40 @@ │ │ │ │ Introduction │ │ │ │

Adding a new type in FreeTDS is a quite complicated task involving different tasks.

│ │ │ │

To see an example you can look at commit id adb893f1381fd3ea40564c775e30dc8cdc81dcf2 ("Implement big(date)time types") and parent changes in the source repository.

│ │ │ │

│ │ │ │ libTDS changes

│ │ │ │
    │ │ │ │
  • │ │ │ │ -

    protocol. First thing to do is add the type to the protocol. A type usually have some mnemonic constant and a structure. Declare them in include/freetds/proto.h file. Note that here you should declare the structure the server use not the structure to hold the data in libTDS.
    │ │ │ │ +

    protocol. First thing to do is add the type to the protocol. A type usually have some mnemonic constant and a structure. Declare them in include/freetds/proto.h file. Note that here you should declare the structure the server use not the structure to hold the data in libTDS.
    │ │ │ │ Cfr commit id a74a06e1f97f3137f6cf1bc7319dd7a2cfb52b1f.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │

    base information. Add the type to misc/types.csv file (I use LibreOffice Calc to do it). This table maintain the base information for a type.
    │ │ │ │ Cfr commit id 680cb3371e042bb372cbc5e6feb4054e50d40c1a.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │ -

    data. There should be some code to handle this type to/from the server. This code is implemented in include/freetds/data.h and src/tds/data.c. You can either add a new set of functions to handle this new type or add the type handling do another set of types depending on how complicated is that type. One thing you have to to at this step is determine how you store that type in libTDS. This is quite important at upper level libraries will have to use these structures or even present these data to client code (like DB-Library usually do). Due to the way FreeTDS works now you would get a linker error in the ODBC part. You can either ignore the error and proceed with libTDS, add the code to ODBC or disable temporarily ODBC.
    │ │ │ │ +

    data. There should be some code to handle this type to/from the server. This code is implemented in include/freetds/data.h and src/tds/data.c. You can either add a new set of functions to handle this new type or add the type handling do another set of types depending on how complicated is that type. One thing you have to to at this step is determine how you store that type in libTDS. This is quite important at upper level libraries will have to use these structures or even present these data to client code (like DB-Library usually do). Due to the way FreeTDS works now you would get a linker error in the ODBC part. You can either ignore the error and proceed with libTDS, add the code to ODBC or disable temporarily ODBC.
    │ │ │ │ Cfr commit id 680cb3371e042bb372cbc5e6feb4054e50d40c1a.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │

    enable the type from server. In order to receive the new type from the server you have to tell the server that we support that type. This can be either done changing the protocol (usually Microsoft) or enabling some flags (capabilities for Sybase).
    │ │ │ │ Cfr commit id a498703ff9e309c656b19dd990f4cad0283a47c7.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │ -

    conversions. Conversions are not hard to write but usually require quite a bit of coding. After extending CONV_RESULT type in include/freetds/convert.h and adding the type to the script that generate the conversion tables in src/tds/tds_willconvert.pl you have to write the big part in src/tds/covnert.c. You have to implement all kind of conversions you declared in the previous file. Reuse the functions that are there (for instance there are some parser functions). Also if there are similar types it could be helpful to convert first your type to a super type then use the conversion for that type. For instance for SMALLINT type (tds_convert_int2) the type is just readed and then tds_convert_int is called which handle any int (actually 32 bit integer). Same for data where the TDS_DATETIMEALL structure is used. Note that conversions to binary (which usually are implemented) are done in another function (tds_convert_to_binary).
    │ │ │ │ +

    conversions. Conversions are not hard to write but usually require quite a bit of coding. After extending CONV_RESULT type in include/freetds/convert.h and adding the type to the script that generate the conversion tables in src/tds/tds_willconvert.pl you have to write the big part in src/tds/covnert.c. You have to implement all kind of conversions you declared in the previous file. Reuse the functions that are there (for instance there are some parser functions). Also if there are similar types it could be helpful to convert first your type to a super type then use the conversion for that type. For instance for SMALLINT type (tds_convert_int2) the type is just readed and then tds_convert_int is called which handle any int (actually 32 bit integer). Same for data where the TDS_DATETIMEALL structure is used. Note that conversions to binary (which usually are implemented) are done in another function (tds_convert_to_binary).
    │ │ │ │ Cfr commit id 9ed52cb78f725607ac109c8c284ca7c4658d87a9.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │ -

    string definition. Add string for your type to src/tds/token.c in tds_prtype.
    │ │ │ │ +

    string definition. Add string for your type to src/tds/token.c in tds_prtype.
    │ │ │ │ Cfr commit id ac0d3b46db7d98436cd76f906b7d455f7651faae.

    │ │ │ │

    │ │ │ │
  • │ │ │ │
  • │ │ │ │

    conversion tests. You probably will have done some mistake with conversions but don't mind, there are some tests which will help sorting this out. src/tds/unittests/convert.c try any possible combination of conversion to check if all conversion are implemented (it does not check the conversions themself). src/tds/unittests/t0007.c test that your conversion are working. Just add manually the conversions you want to try.
    │ │ │ │ Cfr commit id abcc09c9a88acd0e9a45b46dab3ca44309917a02.

    │ │ │ │

    │ │ │ │ @@ -157,28 +157,28 @@ │ │ │ │ conversion test. You probably want to test ODBC conversions. This can be done changing src/odbc/unittests/data.c test and src/odbc/unittests/genparams.c.
    │ │ │ │ Cfr commit id e69f7d564dac44884f7c5f0106cceafce4af168b.
  • │ │ │ │
│ │ │ │

│ │ │ │ CT-Library changes

│ │ │ │

This is quite easy as usual the conversion in libTDS are fine for this library.

    │ │ │ │
  • │ │ │ │ -define type in include/cspublic.h
  • │ │ │ │ +define type in include/cspublic.h │ │ │ │
  • │ │ │ │ implement conversion in src/ctlib/cs.h
  • │ │ │ │
  • │ │ │ │ set corrent conversion from cs types to server in src/ctlib/ct.c
  • │ │ │ │
│ │ │ │

Cfr commit id c5e71e5ad4a557038ecedcec457e2531ab02a77b.

│ │ │ │

│ │ │ │ DB-Library changes

│ │ │ │

A bit more complicated than CT-Library but not that much.

    │ │ │ │
  • │ │ │ │ -add type and binding type to include/sybdb.h
  • │ │ │ │ +add type and binding type to include/sybdb.h │ │ │ │
  • │ │ │ │ -add NULL handling in dbgetnull, dbsetnull and default_null_representation in src/dblib/dblib.c
  • │ │ │ │ +add NULL handling in dbgetnull, dbsetnull and default_null_representation in src/dblib/dblib.c │ │ │ │
  • │ │ │ │ add binding to dbbindtype
  • │ │ │ │
  • │ │ │ │ add support for conversion from/to server
  • │ │ │ │
  • │ │ │ │ add printable size
  • │ │ │ │
  • │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01435.html │ │ │ │ @@ -83,23 +83,23 @@ │ │ │ │ │ │ │ │

    Implementation of db-lib bulk copy functions. │ │ │ │ More...

    │ │ │ │
    #include <config.h>
    │ │ │ │ #include <stdarg.h>
    │ │ │ │ #include <stdio.h>
    │ │ │ │ #include <assert.h>
    │ │ │ │ -#include <freetds/tds.h>
    │ │ │ │ +#include <freetds/tds.h>
    │ │ │ │ #include <freetds/iconv.h>
    │ │ │ │ #include <freetds/convert.h>
    │ │ │ │ #include <freetds/bytes.h>
    │ │ │ │ #include <freetds/utils/string.h>
    │ │ │ │ #include <freetds/encodings.h>
    │ │ │ │ #include <freetds/replacements.h>
    │ │ │ │ #include <sybfront.h>
    │ │ │ │ -#include <sybdb.h>
    │ │ │ │ +#include <sybdb.h>
    │ │ │ │ #include <syberror.h>
    │ │ │ │ #include <dblib.h>
    │ │ │ │
    │ │ │ │ Include dependency graph for bcp.c:
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ ├── ./usr/share/doc/freetds-doc/reference/a01436.dot.gz │ │ │ │ ├── a01436.dot │ │ │ │ │ @@ -2,94 +2,94 @@ │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ bgcolor="transparent"; │ │ │ │ │ edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10]; │ │ │ │ │ node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4]; │ │ │ │ │ Node1 [id="Node000001",label="src/dblib/bcp.c",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Implementation of db-lib bulk copy functions."]; │ │ │ │ │ Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node2 [id="Node000002",label="config.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00371_source.html",tooltip=" "]; │ │ │ │ │ + Node2 [id="Node000002",label="config.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00380_source.html",tooltip=" "]; │ │ │ │ │ Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node3 [id="Node000003",label="stdarg.h",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node4 [id="Node000004",label="stdio.h",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node5 [id="Node000005",label="assert.h",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node6 [id="Node000006",label="freetds/tds.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00452.html",tooltip="Main include file for libtds."]; │ │ │ │ │ + Node6 [id="Node000006",label="freetds/tds.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00518.html",tooltip="Main include file for libtds."]; │ │ │ │ │ Node6 -> Node3 [id="edge6_Node000006_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node4 [id="edge7_Node000006_Node000004",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node7 [id="edge8_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node7 [id="Node000007",label="time.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00389_source.html",tooltip=" "]; │ │ │ │ │ + Node7 [id="Node000007",label="time.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00404_source.html",tooltip=" "]; │ │ │ │ │ Node7 -> Node7 [id="edge9_Node000007_Node000007",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node8 [id="edge10_Node000006_Node000008",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node8 [id="Node000008",label="freetds/version.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00398_source.html",tooltip=" "]; │ │ │ │ │ + Node8 [id="Node000008",label="freetds/version.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00473_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node9 [id="edge11_Node000006_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node9 [id="Node000009",label="freetds/sysdep_private.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00413_source.html",tooltip=" "]; │ │ │ │ │ + Node9 [id="Node000009",label="freetds/sysdep_private.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00410_source.html",tooltip=" "]; │ │ │ │ │ Node9 -> Node10 [id="edge12_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node10 [id="Node000010",label="freetds/sysdep_types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00455_source.html",tooltip=" "]; │ │ │ │ │ + Node10 [id="Node000010",label="freetds/sysdep_types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00497_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node11 [id="edge13_Node000006_Node000011",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node11 [id="Node000011",label="freetds/thread.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00467_source.html",tooltip=" "]; │ │ │ │ │ + Node11 [id="Node000011",label="freetds/thread.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00398_source.html",tooltip=" "]; │ │ │ │ │ Node11 -> Node12 [id="edge14_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node12 [id="Node000012",label="tds_sysdep_public.h",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00377_source.html",tooltip=" "]; │ │ │ │ │ + Node12 [id="Node000012",label="tds_sysdep_public.h",height=0.2,width=0.4,color="red", fillcolor="#FFF0F0", style="filled",URL="$a00368_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node14 [id="edge15_Node000006_Node000014",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node14 [id="Node000014",label="freetds/bool.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00446_source.html",tooltip=" "]; │ │ │ │ │ + Node14 [id="Node000014",label="freetds/bool.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00503_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node15 [id="edge16_Node000006_Node000015",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node15 [id="Node000015",label="freetds/macros.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00464_source.html",tooltip=" "]; │ │ │ │ │ + Node15 [id="Node000015",label="freetds/macros.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00401_source.html",tooltip=" "]; │ │ │ │ │ Node15 -> Node12 [id="edge17_Node000015_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node15 -> Node9 [id="edge18_Node000015_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node16 [id="edge19_Node000006_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node16 [id="Node000016",label="freetds/utils/string.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00491_source.html",tooltip=" "]; │ │ │ │ │ + Node16 [id="Node000016",label="freetds/utils/string.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00431_source.html",tooltip=" "]; │ │ │ │ │ Node16 -> Node15 [id="edge20_Node000016_Node000015",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node16 -> Node17 [id="edge21_Node000016_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node17 [id="Node000017",label="freetds/pushvis.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00404_source.html",tooltip=" "]; │ │ │ │ │ + Node17 [id="Node000017",label="freetds/pushvis.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00476_source.html",tooltip=" "]; │ │ │ │ │ Node16 -> Node18 [id="edge22_Node000016_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node18 [id="Node000018",label="freetds/popvis.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00410_source.html",tooltip=" "]; │ │ │ │ │ + Node18 [id="Node000018",label="freetds/popvis.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00515_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node19 [id="edge23_Node000006_Node000019",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node19 [id="Node000019",label="freetds/utils/path.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00482_source.html",tooltip=" "]; │ │ │ │ │ + Node19 [id="Node000019",label="freetds/utils/path.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00428_source.html",tooltip=" "]; │ │ │ │ │ Node19 -> Node17 [id="edge24_Node000019_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node19 -> Node18 [id="edge25_Node000019_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node20 [id="edge26_Node000006_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node20 [id="Node000020",label="freetds/replacements.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00458_source.html",tooltip=" "]; │ │ │ │ │ + Node20 [id="Node000020",label="freetds/replacements.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00494_source.html",tooltip=" "]; │ │ │ │ │ Node20 -> Node3 [id="edge27_Node000020_Node000003",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node12 [id="edge28_Node000020_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node9 [id="edge29_Node000020_Node000009",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node21 [id="edge30_Node000020_Node000021",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node21 [id="Node000021",label="freetds/replacements\l/readpassphrase.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00431_source.html",tooltip=" "]; │ │ │ │ │ + Node21 [id="Node000021",label="freetds/replacements\l/readpassphrase.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00449_source.html",tooltip=" "]; │ │ │ │ │ Node21 -> Node17 [id="edge31_Node000021_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node21 -> Node18 [id="edge32_Node000021_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node22 [id="edge33_Node000020_Node000022",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node22 [id="Node000022",label="freetds/replacements\l/poll.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00434.html",tooltip="Provide poll call where missing."]; │ │ │ │ │ + Node22 [id="Node000022",label="freetds/replacements\l/poll.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00452.html",tooltip="Provide poll call where missing."]; │ │ │ │ │ Node22 -> Node17 [id="edge34_Node000022_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node22 -> Node18 [id="edge35_Node000022_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node17 [id="edge36_Node000020_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node20 -> Node18 [id="edge37_Node000020_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node17 [id="edge38_Node000006_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node6 -> Node23 [id="edge39_Node000006_Node000023",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node23 [id="Node000023",label="freetds/proto.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00443_source.html",tooltip=" "]; │ │ │ │ │ + Node23 [id="Node000023",label="freetds/proto.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00458_source.html",tooltip=" "]; │ │ │ │ │ Node6 -> Node18 [id="edge40_Node000006_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node24 [id="edge41_Node000001_Node000024",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node24 [id="Node000024",label="freetds/iconv.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00440_source.html",tooltip=" "]; │ │ │ │ │ + Node24 [id="Node000024",label="freetds/iconv.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00485_source.html",tooltip=" "]; │ │ │ │ │ Node24 -> Node17 [id="edge42_Node000024_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node24 -> Node18 [id="edge43_Node000024_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node25 [id="edge44_Node000001_Node000025",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node25 [id="Node000025",label="freetds/convert.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00401_source.html",tooltip=" "]; │ │ │ │ │ + Node25 [id="Node000025",label="freetds/convert.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00455_source.html",tooltip=" "]; │ │ │ │ │ Node25 -> Node17 [id="edge45_Node000025_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node25 -> Node18 [id="edge46_Node000025_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node26 [id="edge47_Node000001_Node000026",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node26 [id="Node000026",label="freetds/bytes.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00512_source.html",tooltip=" "]; │ │ │ │ │ + Node26 [id="Node000026",label="freetds/bytes.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00470_source.html",tooltip=" "]; │ │ │ │ │ Node1 -> Node16 [id="edge48_Node000001_Node000016",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node27 [id="edge49_Node000001_Node000027",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node27 [id="Node000027",label="freetds/encodings.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00416_source.html",tooltip=" "]; │ │ │ │ │ + Node27 [id="Node000027",label="freetds/encodings.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00506_source.html",tooltip=" "]; │ │ │ │ │ Node1 -> Node20 [id="edge50_Node000001_Node000020",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node28 [id="edge51_Node000001_Node000028",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node28 [id="Node000028",label="sybfront.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00515_source.html",tooltip=" "]; │ │ │ │ │ + Node28 [id="Node000028",label="sybfront.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00383_source.html",tooltip=" "]; │ │ │ │ │ Node28 -> Node29 [id="edge52_Node000028_Node000029",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node29 [id="Node000029",label="sybdb.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00365.html",tooltip="Primary include file for db-lib applications."]; │ │ │ │ │ + Node29 [id="Node000029",label="sybdb.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00374.html",tooltip="Primary include file for db-lib applications."]; │ │ │ │ │ Node29 -> Node12 [id="edge53_Node000029_Node000012",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node29 [id="edge54_Node000001_Node000029",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node1 -> Node30 [id="edge55_Node000001_Node000030",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node30 [id="Node000030",label="syberror.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00383_source.html",tooltip=" "]; │ │ │ │ │ + Node30 [id="Node000030",label="syberror.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00527_source.html",tooltip=" "]; │ │ │ │ │ Node1 -> Node31 [id="edge56_Node000001_Node000031",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ - Node31 [id="Node000031",label="dblib.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00380_source.html",tooltip=" "]; │ │ │ │ │ + Node31 [id="Node000031",label="dblib.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$a00371_source.html",tooltip=" "]; │ │ │ │ │ Node31 -> Node17 [id="edge57_Node000031_Node000017",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ Node31 -> Node18 [id="edge58_Node000031_Node000018",color="steelblue1",style="solid",tooltip=" "]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_10.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,10 +1,10 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ ['read_0', ['read', ['../a01143.html#a2f0be7677a1bf9c730e3c697bfba21c9', 1, 'tds_input_stream']]], │ │ │ │ │ - ['read_2ec_1', ['read.c', ['../a00296.html', 1, '']]], │ │ │ │ │ + ['read_2ec_1', ['read.c', ['../a00224.html', 1, '']]], │ │ │ │ │ ['read_5fand_5fconvert_2', ['read_and_convert', ['../a00576.html#ga676c4dee6522815b16fdc8e448e43590', 1, 'read.c']]], │ │ │ │ │ ['ref_5fcount_3', ['ref_count', ['../a00635.html#a812580afdfca53b6d54a7d09938c65c2', 1, 'dblib_context::ref_count'], │ │ │ │ │ ['../a01255.html#a692ccceff71d836df0d084ec26123c2d', 1, 'tds_cursor::ref_count'], │ │ │ │ │ ['../a01263.html#a2798c66fb3c8637c7fb29c6d1efebfa4', 1, 'tds_dynamic::ref_count'] │ │ │ │ │ ]], │ │ │ │ │ ['remote_20procedure_20functions_4', ['Remote Procedure functions', ['../a00561.html', 1, '']]], │ │ │ │ │ ['res_5finfo_5', ['res_info', ['../a01263.html#ac736e163c0d4cdbca980a861214d99e7', 1, 'tds_dynamic']]], │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_11.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -16,19 +16,19 @@ │ │ │ │ │ ['skip_5fone_5finput_5fsequence_14', ['skip_one_input_sequence', ['../a00573.html#ga3380140fc6eb9f2090c430f40e846876', 1, 'iconv.c']]], │ │ │ │ │ ['smp_15', ['smp', ['../a01351.html', 1, '']]], │ │ │ │ │ ['sqltvp_16', ['SQLTVP', ['../a01091.html', 1, '']]], │ │ │ │ │ ['status_17', ['status', ['../a01255.html#ab5d6a587ac5780f001d383d4b874852f', 1, 'tds_cursor']]], │ │ │ │ │ ['stmt_5flist_18', ['stmt_list', ['../a01071.html#a4a9f3e8f1eba573df79a1ed300d8fc91', 1, '_hdbc']]], │ │ │ │ │ ['store_5fmonthname_19', ['store_monthname', ['../a00572.html#ga17a0597ec3522c7f1ddb54956226dbfc', 1, 'convert.c']]], │ │ │ │ │ ['stream_20', ['stream', ['../a00731.html#abb6db59e849d11de92f4c55c61d51744', 1, 'tds_file_stream']]], │ │ │ │ │ - ['stream_2ec_21', ['stream.c', ['../a00311.html', 1, '']]], │ │ │ │ │ + ['stream_2ec_21', ['stream.c', ['../a00206.html', 1, '']]], │ │ │ │ │ ['string_20functions_22', ['Dynamic string functions', ['../a00578.html', 1, '']]], │ │ │ │ │ ['string_5flinked_5flist_23', ['string_linked_list', ['../a00807.html', 1, '']]], │ │ │ │ │ ['string_5fto_5fint_24', ['string_to_int', ['../a00572.html#ga0176fafd412b5b8005bf1202fbc13b00', 1, 'convert.c']]], │ │ │ │ │ ['string_5fto_5fint8_25', ['string_to_int8', ['../a00572.html#ga933f87cca76156648e91f472650b98f3', 1, 'convert.c']]], │ │ │ │ │ ['string_5fto_5fnumeric_26', ['string_to_numeric', ['../a00572.html#ga28c75aff2615032005257af7455ed70d', 1, 'convert.c']]], │ │ │ │ │ ['string_5fto_5fresult_27', ['string_to_result', ['../a00572.html#ga46a5a00dfa70cad4a02d7cc73b314c31', 1, 'convert.c']]], │ │ │ │ │ ['string_5fto_5fuint8_28', ['string_to_uint8', ['../a00572.html#gae8e173a9f8d2e3f152ada9f48d3d5f28', 1, 'convert.c']]], │ │ │ │ │ ['stringpool_5ft_29', ['stringpool_t', ['../a01003.html', 1, '']]], │ │ │ │ │ ['stringz_5fto_5fnumeric_30', ['stringz_to_numeric', ['../a00572.html#ga467401163bf05ed167f7b2b7e8bd875a', 1, 'convert.c']]], │ │ │ │ │ - ['sybdb_2eh_31', ['sybdb.h', ['../a00365.html', 1, '']]] │ │ │ │ │ + ['sybdb_2eh_31', ['sybdb.h', ['../a00374.html', 1, '']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_12.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,32 +1,32 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ ['tagss_5ftime2_5fstruct_0', ['tagSS_TIME2_STRUCT', ['../a01359.html', 1, '']]], │ │ │ │ │ ['tagss_5ftimestampoffset_5fstruct_1', ['tagSS_TIMESTAMPOFFSET_STRUCT', ['../a01363.html', 1, '']]], │ │ │ │ │ ['tds_2', ['tds', ['../a01079.html#ad357e33164f46fce2bc70267d71a1959', 1, '_hstmt::tds'], │ │ │ │ │ ['../a01307.html#a182ed346382edef2962aca11c7cabc22', 1, 'tds_freeze::tds'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_2eh_3', ['tds.h', ['../a00452.html', 1, '']]], │ │ │ │ │ + ['tds_2eh_3', ['tds.h', ['../a00518.html', 1, '']]], │ │ │ │ │ ['tds4_5fsend_5femulated_5frpc_4', ['tds4_send_emulated_rpc', ['../a00575.html#ga2d0a06c1a30dd2470dc7a788de21b080', 1, 'query.c']]], │ │ │ │ │ - ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_5', ['tds5_bcp_add_fixed_columns', ['../a00287.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]], │ │ │ │ │ - ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_6', ['tds5_bcp_add_variable_columns', ['../a00287.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]], │ │ │ │ │ + ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_5', ['tds5_bcp_add_fixed_columns', ['../a00236.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]], │ │ │ │ │ + ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_6', ['tds5_bcp_add_variable_columns', ['../a00236.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]], │ │ │ │ │ ['tds5_5fcolinfo_7', ['tds5_colinfo', ['../a01311.html', 1, '']]], │ │ │ │ │ ['tds5_5ffix_5fdot_5fquery_8', ['tds5_fix_dot_query', ['../a00575.html#ga8853354723094c8efcd87fabf675c64f', 1, 'query.c']]], │ │ │ │ │ ['tds5_5fprocess_5fdyn_5fresult2_9', ['tds5_process_dyn_result2', ['../a00577.html#gae688b515631141acfbc41bbb91c8b921', 1, 'token.c']]], │ │ │ │ │ ['tds5_5fprocess_5foptioncmd_10', ['tds5_process_optioncmd', ['../a00577.html#gaa6a7e5aeb10a1322911c47be9c43e2d2', 1, 'token.c']]], │ │ │ │ │ ['tds5_5fprocess_5fresult_11', ['tds5_process_result', ['../a00577.html#ga547b2f48659f77a69aa802d861ac827d', 1, 'token.c']]], │ │ │ │ │ ['tds5_5fprocess_5fresult2_12', ['tds5_process_result2', ['../a00577.html#gabe2bdd5a41ce067cb31aef18ff81cb1c', 1, 'token.c']]], │ │ │ │ │ ['tds5_5fput_5fparams_13', ['tds5_put_params', ['../a00575.html#ga4f1f0a4f77bc4ea1440dfdebc19a157c', 1, 'query.c']]], │ │ │ │ │ ['tds71_5fcollation_14', ['TDS71_COLLATION', ['../a01123.html', 1, '']]], │ │ │ │ │ ['tds71_5fread_5ftable_5fnames_15', ['tds71_read_table_names', ['../a00577.html#ga7482b5730d880fcedbe9fcd609a550ce', 1, 'token.c']]], │ │ │ │ │ ['tds71_5fsubmit_5fprepexec_16', ['tds71_submit_prepexec', ['../a00575.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c'], │ │ │ │ │ ['../a00575.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds72_5fsmp_5fheader_17', ['TDS72_SMP_HEADER', ['../a01131.html', 1, '']]], │ │ │ │ │ - ['tds7_5fbcp_5fsend_5fcolmetadata_18', ['tds7_bcp_send_colmetadata', ['../a00287.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]], │ │ │ │ │ - ['tds7_5fbuild_5fbulk_5finsert_5fstmt_19', ['tds7_build_bulk_insert_stmt', ['../a00287.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]], │ │ │ │ │ + ['tds7_5fbcp_5fsend_5fcolmetadata_18', ['tds7_bcp_send_colmetadata', ['../a00236.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]], │ │ │ │ │ + ['tds7_5fbuild_5fbulk_5finsert_5fstmt_19', ['tds7_build_bulk_insert_stmt', ['../a00236.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]], │ │ │ │ │ ['tds7_5fget_5fdata_5finfo_20', ['tds7_get_data_info', ['../a00577.html#ga07cee55fd522cca16fb59b7a8f0b1376', 1, 'token.c']]], │ │ │ │ │ ['tds7_5fget_5finstance_5fport_21', ['tds7_get_instance_port', ['../a00576.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c'], │ │ │ │ │ ['../a00576.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds7_5fget_5finstance_5fports_22', ['tds7_get_instance_ports', ['../a00576.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c'], │ │ │ │ │ ['../a00576.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c'] │ │ │ │ │ ]], │ │ │ │ │ @@ -55,35 +55,35 @@ │ │ │ │ │ ['tds_5falloc_5frow_37', ['tds_alloc_row', ['../a00574.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c'], │ │ │ │ │ ['../a00574.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fanswer_38', ['tds_answer', ['../a00735.html', 1, '']]], │ │ │ │ │ ['tds_5fanswer_5fchallenge_39', ['tds_answer_challenge', ['../a00570.html#ga8adf4e719762fef6fdb091d15d4d5d7f', 1, 'challenge.c']]], │ │ │ │ │ ['tds_5fascii_5fto_5fucs2_40', ['tds_ascii_to_ucs2', ['../a00575.html#gad05fc65e1d505c68d14c82b99a00e4eb', 1, 'query.c']]], │ │ │ │ │ ['tds_5fauthentication_41', ['tds_authentication', ['../a01275.html', 1, '']]], │ │ │ │ │ - ['tds_5fbcp_5fdirections_42', ['tds_bcp_directions', ['../a00452.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fbcp_5fdone_43', ['tds_bcp_done', ['../a00452.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'], │ │ │ │ │ - ['../a00287.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5fdirections_42', ['tds_bcp_directions', ['../a00518.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fbcp_5fdone_43', ['tds_bcp_done', ['../a00518.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'], │ │ │ │ │ + ['../a00236.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5ffread_44', ['tds_bcp_fread', ['../a00287.html#a86ac92bd8a3c61a413d27150ec9bc202', 1, 'tds_bcp_fread(TDSSOCKET *tds, TDSICONV *char_conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes): bulk.c'], │ │ │ │ │ - ['../a00452.html#a8184311543c685f2ee0bcccfb725ca02', 1, 'tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5ffread_44', ['tds_bcp_fread', ['../a00236.html#a86ac92bd8a3c61a413d27150ec9bc202', 1, 'tds_bcp_fread(TDSSOCKET *tds, TDSICONV *char_conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes): bulk.c'], │ │ │ │ │ + ['../a00518.html#a8184311543c685f2ee0bcccfb725ca02', 1, 'tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5finit_45', ['tds_bcp_init', ['../a00287.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ - ['../a00452.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5finit_45', ['tds_bcp_init', ['../a00236.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ + ['../a00518.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5frow_5ffree_46', ['tds_bcp_row_free', ['../a00287.html#a55bd2715b2897e9592cbbd9c6e3c86f6', 1, 'bulk.c']]], │ │ │ │ │ - ['tds_5fbcp_5fsend_5frecord_47', ['tds_bcp_send_record', ['../a00287.html#ad9e44450025cbcee1ad81d7e5a2cc099', 1, 'tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset): bulk.c'], │ │ │ │ │ - ['../a00452.html#ad9e44450025cbcee1ad81d7e5a2cc099', 1, 'tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5frow_5ffree_46', ['tds_bcp_row_free', ['../a00236.html#a55bd2715b2897e9592cbbd9c6e3c86f6', 1, 'bulk.c']]], │ │ │ │ │ + ['tds_5fbcp_5fsend_5frecord_47', ['tds_bcp_send_record', ['../a00236.html#ad9e44450025cbcee1ad81d7e5a2cc099', 1, 'tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset): bulk.c'], │ │ │ │ │ + ['../a00518.html#ad9e44450025cbcee1ad81d7e5a2cc099', 1, 'tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5fstart_48', ['tds_bcp_start', ['../a00287.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ - ['../a00452.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5fstart_48', ['tds_bcp_start', ['../a00236.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ + ['../a00518.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5fstart_5fcopy_5fin_49', ['tds_bcp_start_copy_in', ['../a00452.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ - ['../a00287.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ + ['tds_5fbcp_5fstart_5fcopy_5fin_49', ['tds_bcp_start_copy_in', ['../a00518.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'], │ │ │ │ │ + ['../a00236.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fbcp_5fstart_5finsert_5fstmt_50', ['tds_bcp_start_insert_stmt', ['../a00287.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]], │ │ │ │ │ + ['tds_5fbcp_5fstart_5finsert_5fstmt_50', ['tds_bcp_start_insert_stmt', ['../a00236.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]], │ │ │ │ │ ['tds_5fbcpcoldata_51', ['tds_bcpcoldata', ['../a01223.html', 1, '']]], │ │ │ │ │ ['tds_5fbcpinfo_52', ['tds_bcpinfo', ['../a01315.html', 1, '']]], │ │ │ │ │ ['tds_5fblob_53', ['tds_blob', ['../a01211.html', 1, '']]], │ │ │ │ │ ['tds_5fcanonical_5fcharset_54', ['tds_canonical_charset', ['../a00573.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c'], │ │ │ │ │ ['../a00573.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fcanonical_5fcharset_5fname_55', ['tds_canonical_charset_name', ['../a00573.html#ga22c61ca41f64c7fe368659ed1eebdb56', 1, 'tds_canonical_charset_name(const char *charset_name): iconv.c'], │ │ │ │ │ @@ -92,56 +92,56 @@ │ │ │ │ │ ['tds_5fcapabilities_56', ['tds_capabilities', ['../a01195.html', 1, '']]], │ │ │ │ │ ['tds_5fcapability_5ftype_57', ['tds_capability_type', ['../a01191.html', 1, '']]], │ │ │ │ │ ['tds_5fclose_5fsocket_58', ['tds_close_socket', ['../a00576.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e', 1, 'tds_close_socket(TDSSOCKET *tds): net.c'], │ │ │ │ │ ['../a00576.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e', 1, 'tds_close_socket(TDSSOCKET *tds): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fcolumn_59', ['tds_column', ['../a01231.html', 1, '']]], │ │ │ │ │ ['tds_5fcolumn_5ffuncs_60', ['tds_column_funcs', ['../a01227.html', 1, '']]], │ │ │ │ │ - ['tds_5fcompiletime_5fsettings_61', ['tds_compiletime_settings', ['../a00452.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'TDS_COMPILETIME_SETTINGS: tds.h'], │ │ │ │ │ + ['tds_5fcompiletime_5fsettings_61', ['tds_compiletime_settings', ['../a00518.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'TDS_COMPILETIME_SETTINGS: tds.h'], │ │ │ │ │ ['../a01171.html', 1, 'tds_compiletime_settings'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fcondition_62', ['tds_condition', ['../a01323.html', 1, '']]], │ │ │ │ │ ['tds_5fconfig_5fverstr_63', ['tds_config_verstr', ['../a00571.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c'], │ │ │ │ │ ['../a00571.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fconnection_64', ['tds_connection', ['../a01287.html', 1, '']]], │ │ │ │ │ ['tds_5fcontext_65', ['tds_context', ['../a01271.html', 1, '']]], │ │ │ │ │ ['tds_5fconvert_66', ['tds_convert', ['../a00572.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *tds_ctx, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c'], │ │ │ │ │ ['../a00572.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fconvert_5fstream_67', ['tds_convert_stream', ['../a00311.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fconvert_5fstream_67', ['tds_convert_stream', ['../a00206.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fconvert_5fstring_68', ['tds_convert_string', ['../a00575.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c'], │ │ │ │ │ ['../a00575.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fcopy_5fstream_69', ['tds_copy_stream', ['../a00311.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fcopy_5fstream_69', ['tds_copy_stream', ['../a00206.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fcount_5fplaceholders_70', ['tds_count_placeholders', ['../a00575.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c'], │ │ │ │ │ ['../a00575.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fcount_5fplaceholders_5fucs2le_71', ['tds_count_placeholders_ucs2le', ['../a00575.html#ga0cd19215e9169ea299a6c9cbf5b2fb60', 1, 'query.c']]], │ │ │ │ │ ['tds_5fctx_72', ['tds_ctx', ['../a00635.html#afb3fb2d591c0f75b9412f8ca77e2629d', 1, 'dblib_context']]], │ │ │ │ │ ['tds_5fctx_5fref_5fcount_73', ['tds_ctx_ref_count', ['../a00635.html#ad01d901acbc92e8c369e6a6c784d7446', 1, 'dblib_context']]], │ │ │ │ │ ['tds_5fcursor_74', ['tds_cursor', ['../a01255.html', 1, '']]], │ │ │ │ │ ['tds_5fcursor_5fcheck_5fallocated_75', ['tds_cursor_check_allocated', ['../a00575.html#ga2a64baaf4aa50ef601a49b801dfdaaf6', 1, 'query.c']]], │ │ │ │ │ ['tds_5fcursor_5fdealloc_76', ['tds_cursor_dealloc', ['../a00575.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c'], │ │ │ │ │ ['../a00575.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fcursor_5fstatus_77', ['tds_cursor_status', ['../a01251.html', 1, '']]], │ │ │ │ │ ['tds_5fdatain_5fstream_78', ['tds_datain_stream', ['../a01151.html', 1, '']]], │ │ │ │ │ - ['tds_5fdatain_5fstream_5finit_79', ['tds_datain_stream_init', ['../a00311.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fdatain_5fstream_5fread_80', ['tds_datain_stream_read', ['../a00311.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fdatain_5fstream_5finit_79', ['tds_datain_stream_init', ['../a00206.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fdatain_5fstream_5fread_80', ['tds_datain_stream_read', ['../a00206.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fdataout_5fstream_81', ['tds_dataout_stream', ['../a01155.html', 1, '']]], │ │ │ │ │ - ['tds_5fdataout_5fstream_5finit_82', ['tds_dataout_stream_init', ['../a00311.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fdataout_5fstream_5fwrite_83', ['tds_dataout_stream_write', ['../a00311.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fdataout_5fstream_5finit_82', ['tds_dataout_stream_init', ['../a00206.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fdataout_5fstream_5fwrite_83', ['tds_dataout_stream_write', ['../a00206.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fdatecrack_84', ['tds_datecrack', ['../a00572.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c'], │ │ │ │ │ ['../a00572.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fdatetimeall_85', ['TDS_DATETIMEALL', ['../a01175.html', 1, '']]], │ │ │ │ │ ['tds_5fdblib_5fdbprocess_86', ['tds_dblib_dbprocess', ['../a00991.html', 1, '']]], │ │ │ │ │ ['tds_5fdblib_5floginrec_87', ['tds_dblib_loginrec', ['../a00959.html', 1, '']]], │ │ │ │ │ - ['tds_5fdead_88', ['TDS_DEAD', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fdead_88', ['TDS_DEAD', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fdeferred_5fcursor_5fdealloc_89', ['tds_deferred_cursor_dealloc', ['../a00575.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c'], │ │ │ │ │ ['../a00575.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fdeferred_5funprepare_90', ['tds_deferred_unprepare', ['../a00575.html#ga9f80fdf732b084aef7de7a323261aa61', 1, 'tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'], │ │ │ │ │ ['../a00575.html#ga9f80fdf732b084aef7de7a323261aa61', 1, 'tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fdetach_5fresults_91', ['tds_detach_results', ['../a00574.html#ga1d60bf443e274797b1d1a9e7418ab962', 1, 'tds_detach_results(TDSRESULTINFO *info): mem.c'], │ │ │ │ │ @@ -163,24 +163,24 @@ │ │ │ │ │ ['tds_5fdstr_5fisempty_103', ['tds_dstr_isempty', ['../a00578.html#ga197c6af67f2e7469d06c2aa055917b1e', 1, 'string.h']]], │ │ │ │ │ ['tds_5fdstr_5flen_104', ['tds_dstr_len', ['../a00578.html#ga396f139e4f886ac1b224a735138e73dd', 1, 'string.h']]], │ │ │ │ │ ['tds_5fdstr_5fset_105', ['tds_dstr_set', ['../a00578.html#gab78cc59b110df2817b00f9bed74c6ff1', 1, 'tdsstring.c']]], │ │ │ │ │ ['tds_5fdstr_5fsetlen_106', ['tds_dstr_setlen', ['../a00578.html#ga0cd7863ba7c2d2da4a193234472a3d14', 1, 'tdsstring.c']]], │ │ │ │ │ ['tds_5fdstr_5fzero_107', ['tds_dstr_zero', ['../a00578.html#ga339ba30216e2bd5bd076aa9dcd26f3c4', 1, 'tdsstring.c']]], │ │ │ │ │ ['tds_5fdynamic_108', ['tds_dynamic', ['../a01263.html', 1, '']]], │ │ │ │ │ ['tds_5fdynamic_5fstream_109', ['tds_dynamic_stream', ['../a01167.html', 1, '']]], │ │ │ │ │ - ['tds_5fdynamic_5fstream_5finit_110', ['tds_dynamic_stream_init', ['../a00311.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fdynamic_5fstream_5fwrite_111', ['tds_dynamic_stream_write', ['../a00311.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fencoding_112', ['tds_encoding', ['../a00452.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'TDS_ENCODING: tds.h'], │ │ │ │ │ + ['tds_5fdynamic_5fstream_5finit_110', ['tds_dynamic_stream_init', ['../a00206.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fdynamic_5fstream_5fwrite_111', ['tds_dynamic_stream_write', ['../a00206.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fencoding_112', ['tds_encoding', ['../a00518.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'TDS_ENCODING: tds.h'], │ │ │ │ │ ['../a01219.html', 1, 'tds_encoding'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fenv_113', ['tds_env', ['../a01259.html', 1, '']]], │ │ │ │ │ ['tds_5ferrno_5fmessage_5fflags_114', ['tds_errno_message_flags', ['../a01023.html', 1, '']]], │ │ │ │ │ ['tds_5ferror_5fmessage_115', ['tds_error_message', ['../a00803.html', 1, '']]], │ │ │ │ │ ['tds_5ffile_5fstream_116', ['tds_file_stream', ['../a00731.html', 1, '']]], │ │ │ │ │ - ['tds_5ffile_5fstream_5fread_117', ['tds_file_stream_read', ['../a00287.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]], │ │ │ │ │ + ['tds_5ffile_5fstream_5fread_117', ['tds_file_stream_read', ['../a00236.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]], │ │ │ │ │ ['tds_5ffix_5fcolumn_5fsize_118', ['tds_fix_column_size', ['../a00575.html#ga79e31bdb1d8e8e214ea2bed964ff0e77', 1, 'query.c']]], │ │ │ │ │ ['tds_5ffix_5flogin_119', ['tds_fix_login', ['../a00571.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c'], │ │ │ │ │ ['../a00571.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fflush_5fpacket_120', ['tds_flush_packet', ['../a00576.html#ga5feb53554e8917a81bbbc332163a61fb', 1, 'tds_flush_packet(TDSSOCKET *tds): write.c'], │ │ │ │ │ ['../a00576.html#ga5feb53554e8917a81bbbc332163a61fb', 1, 'tds_flush_packet(TDSSOCKET *tds): write.c'] │ │ │ │ │ ]], │ │ │ │ │ @@ -207,128 +207,128 @@ │ │ │ │ │ ['tds_5ffreeze_5fclose_5fstring_128', ['tds_freeze_close_string', ['../a00576.html#ga084fa9cda46be8594997fed2487fcb50', 1, 'tds_freeze_close_string(TDSFREEZE *freeze): packet.c'], │ │ │ │ │ ['../a00576.html#ga084fa9cda46be8594997fed2487fcb50', 1, 'tds_freeze_close_string(TDSFREEZE *freeze): packet.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5ffreeze_5fwritten_129', ['tds_freeze_written', ['../a00576.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c'], │ │ │ │ │ ['../a00576.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5ffuncs_130', ['TDS_FUNCS', ['../a01083.html', 1, '']]], │ │ │ │ │ - ['tds_5fgeneric_5fget_131', ['tds_generic_get', ['../a00347.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]], │ │ │ │ │ - ['tds_5fgeneric_5fput_132', ['tds_generic_put', ['../a00347.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]], │ │ │ │ │ - ['tds_5fgeneric_5fput_5finfo_133', ['tds_generic_put_info', ['../a00347.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]], │ │ │ │ │ + ['tds_5fgeneric_5fget_131', ['tds_generic_get', ['../a00233.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]], │ │ │ │ │ + ['tds_5fgeneric_5fput_132', ['tds_generic_put', ['../a00233.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]], │ │ │ │ │ + ['tds_5fgeneric_5fput_5finfo_133', ['tds_generic_put_info', ['../a00233.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]], │ │ │ │ │ ['tds_5fget_5fbyte_134', ['tds_get_byte', ['../a00576.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c'], │ │ │ │ │ ['../a00576.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fchar_5fdata_135', ['tds_get_char_data', ['../a00576.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol): read.c'], │ │ │ │ │ ['../a00576.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *row_buffer, size_t wire_size, TDSCOLUMN *curcol): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fcolumn_5fdeclaration_136', ['tds_get_column_declaration', ['../a00575.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c'], │ │ │ │ │ ['../a00575.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fcompiletime_5fsettings_137', ['tds_get_compiletime_settings', ['../a00571.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c'], │ │ │ │ │ ['../a00571.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fget_5fconversion_5ftype_138', ['tds_get_conversion_type', ['../a00452.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]], │ │ │ │ │ + ['tds_5fget_5fconversion_5ftype_138', ['tds_get_conversion_type', ['../a00518.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]], │ │ │ │ │ ['tds_5fget_5fdata_5finfo_139', ['tds_get_data_info', ['../a00577.html#gad9b6b86f48be077fb44ac603845a0c27', 1, 'token.c']]], │ │ │ │ │ ['tds_5fget_5fdynid_140', ['tds_get_dynid', ['../a00574.html#ga93503e64091b51add0801abebe22abf4', 1, 'mem.c']]], │ │ │ │ │ - ['tds_5fget_5flocale_141', ['tds_get_locale', ['../a00452.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]], │ │ │ │ │ + ['tds_5fget_5flocale_141', ['tds_get_locale', ['../a00518.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]], │ │ │ │ │ ['tds_5fget_5fn_142', ['tds_get_n', ['../a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t need): read.c'], │ │ │ │ │ ['../a00576.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t n): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fnull_5ftype_143', ['tds_get_null_type', ['../a00572.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c'], │ │ │ │ │ ['../a00572.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fget_5fsize_5fby_5ftype_144', ['tds_get_size_by_type', ['../a00452.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]], │ │ │ │ │ + ['tds_5fget_5fsize_5fby_5ftype_144', ['tds_get_size_by_type', ['../a00518.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]], │ │ │ │ │ ['tds_5fget_5fsocket_5ferror_145', ['tds_get_socket_error', ['../a00576.html#ga4a2418e0a4533d616ef3da526236f2b8', 1, 'net.c']]], │ │ │ │ │ ['tds_5fget_5fstring_146', ['tds_get_string', ['../a00576.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c'], │ │ │ │ │ ['../a00576.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fuint_147', ['tds_get_uint', ['../a00576.html#ga9ac121c269e203337a48c5bf8afc48c3', 1, 'tds_get_uint(TDSSOCKET *tds): read.c'], │ │ │ │ │ ['../a00576.html#ga9ac121c269e203337a48c5bf8afc48c3', 1, 'tds_get_uint(TDSSOCKET *tds): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fuint8_148', ['tds_get_uint8', ['../a00576.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c'], │ │ │ │ │ ['../a00576.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fget_5fusmallint_149', ['tds_get_usmallint', ['../a00576.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c'], │ │ │ │ │ ['../a00576.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fget_5fvarint_5fsize_150', ['tds_get_varint_size', ['../a00452.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]], │ │ │ │ │ + ['tds_5fget_5fvarint_5fsize_150', ['tds_get_varint_size', ['../a00518.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]], │ │ │ │ │ ['tds_5fgoodread_151', ['tds_goodread', ['../a00576.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c'], │ │ │ │ │ ['../a00576.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fgoodwrite_152', ['tds_goodwrite', ['../a00576.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c'], │ │ │ │ │ ['../a00576.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fheader_153', ['TDS_HEADER', ['../a01127.html', 1, '']]], │ │ │ │ │ ['tds_5fheaders_154', ['tds_headers', ['../a01203.html', 1, '']]], │ │ │ │ │ ['tds_5ficonv_155', ['tds_iconv', ['../a00573.html#ga87db49044919f1bc84c0ff5e9ab00304', 1, 'tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft): iconv.c'], │ │ │ │ │ ['../a00573.html#ga87db49044919f1bc84c0ff5e9ab00304', 1, 'tds_iconv(TDSSOCKET *tds, TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5ficonv_5falloc_156', ['tds_iconv_alloc', ['../a00452.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'], │ │ │ │ │ - ['../a01465.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'] │ │ │ │ │ + ['tds_5ficonv_5falloc_156', ['tds_iconv_alloc', ['../a00518.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'], │ │ │ │ │ + ['../a01453.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5ficonv_5ffrom_5fcollate_157', ['tds_iconv_from_collate', ['../a00573.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c'], │ │ │ │ │ ['../a00573.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5ficonv_5fget_5finfo_158', ['tds_iconv_get_info', ['../a00573.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c'], │ │ │ │ │ ['../a00573.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5ficonv_5finfo_5finit_159', ['tds_iconv_info_init', ['../a00573.html#ga3a7a7b4d6ed344127e164dd0b443d790', 1, 'iconv.c']]], │ │ │ │ │ - ['tds_5ficonv_5finit_160', ['tds_iconv_init', ['../a01465.html#a30bcae80553efae075b0886bfcda1e35', 1, 'iconv.c']]], │ │ │ │ │ - ['tds_5fidle_161', ['TDS_IDLE', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5ficonv_5finit_160', ['tds_iconv_init', ['../a01453.html#a30bcae80553efae075b0886bfcda1e35', 1, 'iconv.c']]], │ │ │ │ │ + ['tds_5fidle_161', ['TDS_IDLE', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]], │ │ │ │ │ ['tds_5finit_5flogin_162', ['tds_init_login', ['../a00574.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39', 1, 'tds_init_login(TDSLOGIN *login, TDSLOCALE *locale): mem.c'], │ │ │ │ │ ['../a00574.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39', 1, 'tds_init_login(TDSLOGIN *login, TDSLOCALE *locale): mem.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5finput_5fstream_163', ['tds_input_stream', ['../a01143.html', 1, '']]], │ │ │ │ │ - ['tds_5fis_5fmssql_164', ['TDS_IS_MSSQL', ['../a00452.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fis_5fsybase_165', ['TDS_IS_SYBASE', ['../a00452.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fis_5fmssql_164', ['TDS_IS_MSSQL', ['../a00518.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fis_5fsybase_165', ['TDS_IS_SYBASE', ['../a00518.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]], │ │ │ │ │ ['tds_5flocale_166', ['tds_locale', ['../a01207.html', 1, '']]], │ │ │ │ │ ['tds_5flogin_167', ['tds_login', ['../a01199.html', 1, '']]], │ │ │ │ │ ['tds_5flookup_5fdynamic_168', ['tds_lookup_dynamic', ['../a00577.html#ga4a45cadd06ae1b886459dcc1f8e482c6', 1, 'tds_lookup_dynamic(TDSCONNECTION *conn, const char *id): token.c'], │ │ │ │ │ ['../a00577.html#ga4a45cadd06ae1b886459dcc1f8e482c6', 1, 'tds_lookup_dynamic(TDSCONNECTION *conn, const char *id): token.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5flookup_5fhost_169', ['tds_lookup_host', ['../a00571.html#ga3945f760ceb97e8854e18589d6f0d241', 1, 'tds_lookup_host(const char *servername): config.c'], │ │ │ │ │ ['../a00571.html#ga3945f760ceb97e8854e18589d6f0d241', 1, 'tds_lookup_host(const char *servername): config.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5flookup_5fport_170', ['tds_lookup_port', ['../a00571.html#ga45281d1cb2ac649db65d80bb3ff06b66', 1, 'config.c']]], │ │ │ │ │ ['tds_5fmay_5falias_171', ['TDS_MAY_ALIAS', ['../a00995.html', 1, '']]], │ │ │ │ │ ['tds_5fmessage_172', ['tds_message', ['../a01243.html', 1, '']]], │ │ │ │ │ ['tds_5fmicrosoft_5fdbdaterec_173', ['tds_microsoft_dbdaterec', ['../a01415.html', 1, '']]], │ │ │ │ │ ['tds_5fmicrosoft_5fdbdaterec2_174', ['tds_microsoft_dbdaterec2', ['../a01423.html', 1, '']]], │ │ │ │ │ - ['tds_5fms_5fver_175', ['TDS_MS_VER', ['../a00452.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fms_5fver_175', ['TDS_MS_VER', ['../a00518.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fmultiple_176', ['tds_multiple', ['../a01267.html', 1, '']]], │ │ │ │ │ ['tds_5fneeds_5funprepare_177', ['tds_needs_unprepare', ['../a00575.html#ga05ac7bab753d19b6ba1ffc7505d8fcd0', 1, 'tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'], │ │ │ │ │ ['../a00575.html#ga05ac7bab753d19b6ba1ffc7505d8fcd0', 1, 'tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fnext_5fplaceholder_178', ['tds_next_placeholder', ['../a00575.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c'], │ │ │ │ │ ['../a00575.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fnext_5fplaceholder_5fucs2le_179', ['tds_next_placeholder_ucs2le', ['../a00575.html#gaaa97f8535a2babe642024a0744d271d5', 1, 'query.c']]], │ │ │ │ │ ['tds_5fntlm_5fauth_180', ['tds_ntlm_auth', ['../a00743.html', 1, '']]], │ │ │ │ │ ['tds_5fntlm_5fget_5fauth_181', ['tds_ntlm_get_auth', ['../a00570.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c'], │ │ │ │ │ ['../a00570.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fnumeric_5fbytes_5fper_5fprec_182', ['tds_numeric_bytes_per_prec', ['../a00452.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]], │ │ │ │ │ - ['tds_5fnumeric_5fto_5fstring_183', ['tds_numeric_to_string', ['../a00452.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]], │ │ │ │ │ + ['tds_5fnumeric_5fbytes_5fper_5fprec_182', ['tds_numeric_bytes_per_prec', ['../a00518.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]], │ │ │ │ │ + ['tds_5fnumeric_5fto_5fstring_183', ['tds_numeric_to_string', ['../a00518.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]], │ │ │ │ │ ['tds_5foption_5farg_184', ['tds_option_arg', ['../a01183.html', 1, '']]], │ │ │ │ │ ['tds_5foutput_5fstream_185', ['tds_output_stream', ['../a01147.html', 1, '']]], │ │ │ │ │ ['tds_5fpacket_186', ['tds_packet', ['../a01279.html', 1, '']]], │ │ │ │ │ ['tds_5fparsed_5fparam_187', ['TDS_PARSED_PARAM', ['../a01087.html', 1, '']]], │ │ │ │ │ ['tds_5fpbcb_188', ['tds_pbcb', ['../a00727.html', 1, '']]], │ │ │ │ │ ['tds_5fpeek_189', ['tds_peek', ['../a00576.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c'], │ │ │ │ │ ['../a00576.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fpending_190', ['TDS_PENDING', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fpending_190', ['TDS_PENDING', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fpoll_5fwakeup_191', ['tds_poll_wakeup', ['../a01283.html', 1, '']]], │ │ │ │ │ ['tds_5fpool_192', ['tds_pool', ['../a00715.html', 1, '']]], │ │ │ │ │ ['tds_5fpool_5fevent_193', ['tds_pool_event', ['../a00699.html', 1, '']]], │ │ │ │ │ ['tds_5fpool_5fmember_194', ['tds_pool_member', ['../a00711.html', 1, '']]], │ │ │ │ │ ['tds_5fpool_5fsocket_195', ['tds_pool_socket', ['../a00703.html', 1, '']]], │ │ │ │ │ ['tds_5fpool_5fuser_196', ['tds_pool_user', ['../a00707.html', 1, '']]], │ │ │ │ │ ['tds_5fpr_5fop_197', ['tds_pr_op', ['../a00577.html#ga62dc14d21453e88e24880ee0acaca73a', 1, 'token.c']]], │ │ │ │ │ - ['tds_5fprdatatype_198', ['tds_prdatatype', ['../a00149.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]], │ │ │ │ │ + ['tds_5fprdatatype_198', ['tds_prdatatype', ['../a00254.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]], │ │ │ │ │ ['tds_5fprocess_5fauth_199', ['tds_process_auth', ['../a00577.html#ga4e1e52e09b0c27a9b9f53eb6b539afce', 1, 'token.c']]], │ │ │ │ │ ['tds_5fprocess_5fcancel_200', ['tds_process_cancel', ['../a00577.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c'], │ │ │ │ │ ['../a00577.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fprocess_5fcol_5ffmt_201', ['tds_process_col_fmt', ['../a00577.html#ga4e3dd9d3614f5f0433b78b761dd68741', 1, 'token.c']]], │ │ │ │ │ ['tds_5fprocess_5fcol_5fname_202', ['tds_process_col_name', ['../a00577.html#ga905d2fa5e1b602817bd16bb0fcf9eadb', 1, 'token.c']]], │ │ │ │ │ ['tds_5fprocess_5fcolinfo_203', ['tds_process_colinfo', ['../a00577.html#ga22c7f413d43fc0d511e122a3de389166', 1, 'token.c']]], │ │ │ │ │ @@ -364,15 +364,15 @@ │ │ │ │ │ ['tds_5fput_5fdata_225', ['tds_put_data', ['../a00575.html#ga9fcc0a3932dcad530511395ef8a767fb', 1, 'query.c']]], │ │ │ │ │ ['tds_5fput_5fdata_5finfo_226', ['tds_put_data_info', ['../a00575.html#gafd74652c4722ddce4d642cc4209449d4', 1, 'query.c']]], │ │ │ │ │ ['tds_5fput_5fn_5fas_5fucs2_227', ['TDS_PUT_N_AS_UCS2', ['../a00575.html#ga62c3dc9946acb3ffd1b7ae43424f5b47', 1, 'query.c']]], │ │ │ │ │ ['tds_5fput_5fparam_5fas_5fstring_228', ['tds_put_param_as_string', ['../a00575.html#ga0e2e7230c425e925402d7856ff5b4b18', 1, 'query.c']]], │ │ │ │ │ ['tds_5fput_5fstring_229', ['tds_put_string', ['../a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4', 1, 'tds_put_string(TDSSOCKET *tds, const char *s, int len): write.c'], │ │ │ │ │ ['../a00576.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4', 1, 'tds_put_string(TDSSOCKET *tds, const char *buf, int len): write.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fput_5ftinyint_230', ['tds_put_tinyint', ['../a00452.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fput_5ftinyint_230', ['tds_put_tinyint', ['../a00518.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fquery_5fflush_5fpacket_231', ['tds_query_flush_packet', ['../a00575.html#gada27f4cfce925240ad33b71b63ca692d', 1, 'query.c']]], │ │ │ │ │ ['tds_5fquote_232', ['tds_quote', ['../a00575.html#gaa4cb9266a930adc1f1e0f607f7d6edb5', 1, 'query.c']]], │ │ │ │ │ ['tds_5fquote_5fand_5fput_233', ['tds_quote_and_put', ['../a00575.html#ga26b26296d060dca75f6a43e9ac41e58d', 1, 'query.c']]], │ │ │ │ │ ['tds_5fquote_5fid_234', ['tds_quote_id', ['../a00575.html#ga8d8f2f1c91635ee95f30722208ae3043', 1, 'tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c'], │ │ │ │ │ ['../a00575.html#ga8d8f2f1c91635ee95f30722208ae3043', 1, 'tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fquote_5fid_5frpc_235', ['tds_quote_id_rpc', ['../a00575.html#ga691e8752f4f84ed51b7f4d1447cb3d25', 1, 'tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c'], │ │ │ │ │ @@ -391,15 +391,15 @@ │ │ │ │ │ ['../a00571.html#ga9ff2436ea56ddcdecf984acf46ce4b90', 1, 'tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale): config.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fread_5finterfaces_242', ['tds_read_interfaces', ['../a00571.html#ga66de78d379cad2ee3d6c26948ad6445f', 1, 'config.c']]], │ │ │ │ │ ['tds_5fread_5fnamelist_243', ['tds_read_namelist', ['../a00577.html#gaeaaed2ea1d8c827da1a0f5b419524ae1', 1, 'token.c']]], │ │ │ │ │ ['tds_5fread_5fpacket_244', ['tds_read_packet', ['../a00576.html#ga410619783bdf2bb60b0f27a5578e0e07', 1, 'tds_read_packet(TDSSOCKET *tds): packet.c'], │ │ │ │ │ ['../a00576.html#ga410619783bdf2bb60b0f27a5578e0e07', 1, 'tds_read_packet(TDSSOCKET *tds): packet.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5freading_245', ['TDS_READING', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5freading_245', ['TDS_READING', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]], │ │ │ │ │ ['tds_5frealloc_246', ['tds_realloc', ['../a00574.html#ga8645f5abc49db03d14b66f72b83a9a4c', 1, 'tds_realloc(void **pp, size_t new_size): mem.c'], │ │ │ │ │ ['../a00574.html#ga8645f5abc49db03d14b66f72b83a9a4c', 1, 'tds_realloc(void **pp, size_t new_size): mem.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5frelease_5fdynamic_247', ['tds_release_dynamic', ['../a00574.html#gabf2fdb0def5388508602ee7dd2f49506', 1, 'tds_release_dynamic(TDSDYNAMIC **pdyn): mem.c'], │ │ │ │ │ ['../a00574.html#gabf2fdb0def5388508602ee7dd2f49506', 1, 'tds_release_dynamic(TDSDYNAMIC **dyn): mem.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fresult_5finfo_248', ['tds_result_info', ['../a01239.html', 1, '']]], │ │ │ │ │ @@ -409,31 +409,31 @@ │ │ │ │ │ ['tds_5fselect_252', ['tds_select', ['../a00576.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c'], │ │ │ │ │ ['../a00576.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsend_5fcancel_253', ['tds_send_cancel', ['../a00575.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c'], │ │ │ │ │ ['../a00575.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsend_5femulated_5fexecute_254', ['tds_send_emulated_execute', ['../a00575.html#ga02c6ce3ff96369603a6ee4efee64caae', 1, 'query.c']]], │ │ │ │ │ - ['tds_5fsending_255', ['TDS_SENDING', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fset_5fcolumn_5ftype_256', ['tds_set_column_type', ['../a00347.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'], │ │ │ │ │ - ['../a00452.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'] │ │ │ │ │ + ['tds_5fsending_255', ['TDS_SENDING', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fset_5fcolumn_5ftype_256', ['tds_set_column_type', ['../a00233.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'], │ │ │ │ │ + ['../a00518.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fset_5fcur_5fcursor_257', ['tds_set_cur_cursor', ['../a00575.html#ga34fb1084682cc31fe02a4a7946955a5a', 1, 'query.c']]], │ │ │ │ │ ['tds_5fset_5fcur_5fdyn_258', ['tds_set_cur_dyn', ['../a00575.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'], │ │ │ │ │ ['../a00575.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fset_5ficonv_5fname_259', ['tds_set_iconv_name', ['../a01465.html#a585ebac61354ce540d28f6da2d771b5b', 1, 'iconv.c']]], │ │ │ │ │ + ['tds_5fset_5ficonv_5fname_259', ['tds_set_iconv_name', ['../a01453.html#a585ebac61354ce540d28f6da2d771b5b', 1, 'iconv.c']]], │ │ │ │ │ ['tds_5fset_5finterfaces_5ffile_5floc_260', ['tds_set_interfaces_file_loc', ['../a00571.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interf): config.c'], │ │ │ │ │ ['../a00571.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interfloc): config.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fset_5fparam_5ftype_261', ['tds_set_param_type', ['../a00347.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'], │ │ │ │ │ - ['../a00452.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'] │ │ │ │ │ + ['tds_5fset_5fparam_5ftype_261', ['tds_set_param_type', ['../a00233.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'], │ │ │ │ │ + ['../a00518.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fset_5fserver_262', ['tds_set_server', ['../a00452.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]], │ │ │ │ │ - ['tds_5fset_5fstate_263', ['tds_set_state', ['../a00452.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]], │ │ │ │ │ + ['tds_5fset_5fserver_262', ['tds_set_server', ['../a00518.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]], │ │ │ │ │ + ['tds_5fset_5fstate_263', ['tds_set_state', ['../a00518.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]], │ │ │ │ │ ['tds_5fsetup_5fsocket_264', ['tds_setup_socket', ['../a00576.html#gab604dd1d75afa8f852d1a6ee0b681974', 1, 'net.c']]], │ │ │ │ │ ['tds_5fskip_5fcomment_265', ['tds_skip_comment', ['../a00575.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c'], │ │ │ │ │ ['../a00575.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fskip_5fcomment_5fucs2le_266', ['tds_skip_comment_ucs2le', ['../a00575.html#gac3124fe439d9c96236fc33af7793ffcf', 1, 'query.c']]], │ │ │ │ │ ['tds_5fskip_5fquoted_267', ['tds_skip_quoted', ['../a00575.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c'], │ │ │ │ │ ['../a00575.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c'] │ │ │ │ │ @@ -448,22 +448,22 @@ │ │ │ │ │ ['../a00576.html#ga31200649c72e81c9d5d07352573ce9f1', 1, 'tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on): net.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsocket_5fwrite_273', ['tds_socket_write', ['../a00576.html#gad6f81b48fbcfc18ce0b213dbbea47e30', 1, 'net.c']]], │ │ │ │ │ ['tds_5fstart_5fquery_274', ['tds_start_query', ['../a00575.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c'], │ │ │ │ │ ['../a00575.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fstart_5fquery_5fhead_275', ['tds_start_query_head', ['../a00575.html#ga9ad2e6defce530a8778791cce0166ccd', 1, 'query.c']]], │ │ │ │ │ - ['tds_5fstate_276', ['TDS_STATE', ['../a00452.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fstates_277', ['tds_states', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fstate_276', ['TDS_STATE', ['../a00518.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fstates_277', ['tds_states', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fstaticin_5fstream_278', ['tds_staticin_stream', ['../a01159.html', 1, '']]], │ │ │ │ │ - ['tds_5fstaticin_5fstream_5finit_279', ['tds_staticin_stream_init', ['../a00311.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fstaticin_5fstream_5fread_280', ['tds_staticin_stream_read', ['../a00311.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fstaticin_5fstream_5finit_279', ['tds_staticin_stream_init', ['../a00206.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fstaticin_5fstream_5fread_280', ['tds_staticin_stream_read', ['../a00206.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fstaticout_5fstream_281', ['tds_staticout_stream', ['../a01163.html', 1, '']]], │ │ │ │ │ - ['tds_5fstaticout_5fstream_5finit_282', ['tds_staticout_stream_init', ['../a00311.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]], │ │ │ │ │ - ['tds_5fstaticout_5fstream_5fwrite_283', ['tds_staticout_stream_write', ['../a00311.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fstaticout_5fstream_5finit_282', ['tds_staticout_stream_init', ['../a00206.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]], │ │ │ │ │ + ['tds_5fstaticout_5fstream_5fwrite_283', ['tds_staticout_stream_write', ['../a00206.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]], │ │ │ │ │ ['tds_5fstr_5fempty_284', ['tds_str_empty', ['../a00578.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'], │ │ │ │ │ ['../a00578.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fstrftime_285', ['tds_strftime', ['../a00572.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec): convert.c'], │ │ │ │ │ ['../a00572.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *timeptr, int prec): convert.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsubmit_5fbegin_5ftran_286', ['tds_submit_begin_tran', ['../a00575.html#ga7bf3670d3d6dabed469b9eb117298079', 1, 'tds_submit_begin_tran(TDSSOCKET *tds): query.c'], │ │ │ │ │ @@ -498,16 +498,16 @@ │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsubmit_5frpc_296', ['tds_submit_rpc', ['../a00575.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c'], │ │ │ │ │ ['../a00575.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fsubmit_5funprepare_297', ['tds_submit_unprepare', ['../a00575.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'], │ │ │ │ │ ['../a00575.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fswap_5fnumeric_298', ['tds_swap_numeric', ['../a00347.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]], │ │ │ │ │ - ['tds_5fsyb_5fver_299', ['TDS_SYB_VER', ['../a00452.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fswap_5fnumeric_298', ['tds_swap_numeric', ['../a00233.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]], │ │ │ │ │ + ['tds_5fsyb_5fver_299', ['TDS_SYB_VER', ['../a00518.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]], │ │ │ │ │ ['tds_5fsybase_5fdbdaterec_300', ['tds_sybase_dbdaterec', ['../a01419.html', 1, '']]], │ │ │ │ │ ['tds_5fsybase_5fdbdaterec2_301', ['tds_sybase_dbdaterec2', ['../a01427.html', 1, '']]], │ │ │ │ │ ['tds_5fsys_5ficonv_5fopen_302', ['tds_sys_iconv_open', ['../a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c'], │ │ │ │ │ ['../a00573.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fthread_303', ['tds_thread', ['../a01327.html', 1, '']]], │ │ │ │ │ ['tds_5ftime_304', ['tds_time', ['../a00755.html', 1, '']]], │ │ │ │ │ @@ -520,57 +520,57 @@ │ │ │ │ │ ['tds_5fupd_5fcol_309', ['tds_upd_col', ['../a01247.html', 1, '']]], │ │ │ │ │ ['tds_5fvariant_310', ['tds_variant', ['../a01215.html', 1, '']]], │ │ │ │ │ ['tds_5fvarmax_5fstream_311', ['tds_varmax_stream', ['../a00759.html', 1, '']]], │ │ │ │ │ ['tds_5fversion_312', ['tds_version', ['../a01199.html#a8f9f756b25fd18916a6080f9c22f835d', 1, 'tds_login']]], │ │ │ │ │ ['tds_5fwillconvert_313', ['tds_willconvert', ['../a00572.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c'], │ │ │ │ │ ['../a00572.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tds_5fwrite_5fdump_314', ['tds_write_dump', ['../a00452.html#a02866a1bf7da5ab66a994217fcceb1b7', 1, 'log.c']]], │ │ │ │ │ - ['tds_5fwritetext_5fcontinue_315', ['tds_writetext_continue', ['../a00287.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'], │ │ │ │ │ - ['../a00452.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'] │ │ │ │ │ - ]], │ │ │ │ │ - ['tds_5fwritetext_5fend_316', ['tds_writetext_end', ['../a00287.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'], │ │ │ │ │ - ['../a00452.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'] │ │ │ │ │ - ]], │ │ │ │ │ - ['tds_5fwritetext_5fstart_317', ['tds_writetext_start', ['../a00287.html#a7711612cc544a7da2c7aa212b870acb2', 1, 'tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size): bulk.c'], │ │ │ │ │ - ['../a00452.html#a7711612cc544a7da2c7aa212b870acb2', 1, 'tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size): bulk.c'] │ │ │ │ │ - ]], │ │ │ │ │ - ['tds_5fwriting_318', ['TDS_WRITING', ['../a00452.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]], │ │ │ │ │ - ['tdsblob_319', ['TDSBLOB', ['../a00452.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]], │ │ │ │ │ - ['tdscursor_320', ['TDSCURSOR', ['../a00452.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fwrite_5fdump_314', ['tds_write_dump', ['../a00518.html#a02866a1bf7da5ab66a994217fcceb1b7', 1, 'log.c']]], │ │ │ │ │ + ['tds_5fwritetext_5fcontinue_315', ['tds_writetext_continue', ['../a00236.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'], │ │ │ │ │ + ['../a00518.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'] │ │ │ │ │ + ]], │ │ │ │ │ + ['tds_5fwritetext_5fend_316', ['tds_writetext_end', ['../a00236.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'], │ │ │ │ │ + ['../a00518.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'] │ │ │ │ │ + ]], │ │ │ │ │ + ['tds_5fwritetext_5fstart_317', ['tds_writetext_start', ['../a00236.html#a7711612cc544a7da2c7aa212b870acb2', 1, 'tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size): bulk.c'], │ │ │ │ │ + ['../a00518.html#a7711612cc544a7da2c7aa212b870acb2', 1, 'tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size): bulk.c'] │ │ │ │ │ + ]], │ │ │ │ │ + ['tds_5fwriting_318', ['TDS_WRITING', ['../a00518.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]], │ │ │ │ │ + ['tdsblob_319', ['TDSBLOB', ['../a00518.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]], │ │ │ │ │ + ['tdscursor_320', ['TDSCURSOR', ['../a00518.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]], │ │ │ │ │ ['tdsdaterec_321', ['tdsdaterec', ['../a01179.html', 1, 'tdsdaterec'], │ │ │ │ │ - ['../a00452.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'TDSDATEREC: tds.h'] │ │ │ │ │ + ['../a00518.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'TDSDATEREC: tds.h'] │ │ │ │ │ ]], │ │ │ │ │ ['tdsdatetime_322', ['tdsdatetime', ['../a01111.html', 1, '']]], │ │ │ │ │ ['tdsdatetime4_323', ['tdsdatetime4', ['../a01115.html', 1, '']]], │ │ │ │ │ ['tdsdbopen_324', ['tdsdbopen', ['../a00566.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c'], │ │ │ │ │ ['../a00566.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['tdsdump_5fclose_325', ['tdsdump_close', ['../a00452.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]], │ │ │ │ │ - ['tdsdump_5fcol_326', ['tdsdump_col', ['../a00452.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]], │ │ │ │ │ - ['tdsdump_5fdump_5fbuf_327', ['tdsdump_dump_buf', ['../a00452.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]], │ │ │ │ │ - ['tdsdump_5flog_328', ['tdsdump_log', ['../a00452.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]], │ │ │ │ │ - ['tdsdump_5foff_329', ['tdsdump_off', ['../a00452.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5fclose_325', ['tdsdump_close', ['../a00518.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5fcol_326', ['tdsdump_col', ['../a00518.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5fdump_5fbuf_327', ['tdsdump_dump_buf', ['../a00518.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5flog_328', ['tdsdump_log', ['../a00518.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5foff_329', ['tdsdump_off', ['../a00518.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]], │ │ │ │ │ ['tdsdump_5foff_5fitem_330', ['tdsdump_off_item', ['../a01303.html', 1, '']]], │ │ │ │ │ - ['tdsdump_5fon_331', ['tdsdump_on', ['../a00452.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]], │ │ │ │ │ - ['tdsdump_5fopen_332', ['tdsdump_open', ['../a00452.html#add944699a7fadf546cbfb38a544d5803', 1, 'log.c']]], │ │ │ │ │ - ['tdsdynamic_333', ['TDSDYNAMIC', ['../a00452.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]], │ │ │ │ │ - ['tdsenv_334', ['TDSENV', ['../a00452.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]], │ │ │ │ │ - ['tdserror_335', ['tdserror', ['../a00452.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]], │ │ │ │ │ - ['tdsfilestream_336', ['TDSFILESTREAM', ['../a00287.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]], │ │ │ │ │ + ['tdsdump_5fon_331', ['tdsdump_on', ['../a00518.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]], │ │ │ │ │ + ['tdsdump_5fopen_332', ['tdsdump_open', ['../a00518.html#add944699a7fadf546cbfb38a544d5803', 1, 'log.c']]], │ │ │ │ │ + ['tdsdynamic_333', ['TDSDYNAMIC', ['../a00518.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]], │ │ │ │ │ + ['tdsenv_334', ['TDSENV', ['../a00518.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]], │ │ │ │ │ + ['tdserror_335', ['tdserror', ['../a00518.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]], │ │ │ │ │ + ['tdsfilestream_336', ['TDSFILESTREAM', ['../a00236.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]], │ │ │ │ │ ['tdsiconvdir_337', ['tdsiconvdir', ['../a01027.html', 1, '']]], │ │ │ │ │ ['tdsiconvinfo_338', ['tdsiconvinfo', ['../a01031.html', 1, '']]], │ │ │ │ │ ['tdsmoney_339', ['tdsmoney', ['../a01103.html', 1, '']]], │ │ │ │ │ ['tdsmoney4_340', ['tdsmoney4', ['../a01107.html', 1, '']]], │ │ │ │ │ ['tdsnumeric_341', ['tdsnumeric', ['../a01095.html', 1, '']]], │ │ │ │ │ ['tdsoldmoney_342', ['tdsoldmoney', ['../a01099.html', 1, '']]], │ │ │ │ │ - ['tdspbcb_343', ['TDSPBCB', ['../a00287.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]], │ │ │ │ │ - ['tdsresultinfo_344', ['TDSRESULTINFO', ['../a00452.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]], │ │ │ │ │ + ['tdspbcb_343', ['TDSPBCB', ['../a00236.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]], │ │ │ │ │ + ['tdsresultinfo_344', ['TDSRESULTINFO', ['../a00518.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]], │ │ │ │ │ ['tdsunique_345', ['tdsunique', ['../a01119.html', 1, '']]], │ │ │ │ │ - ['tdsvariant_346', ['TDSVARIANT', ['../a00452.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]], │ │ │ │ │ + ['tdsvariant_346', ['TDSVARIANT', ['../a00518.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]], │ │ │ │ │ ['tdsvername_5ft_347', ['tdsvername_t', ['../a00751.html', 1, '']]], │ │ │ │ │ ['term_5flen_348', ['term_len', ['../a00731.html#aae893302d33ee1e9d83c3d85d7390dca', 1, 'tds_file_stream']]], │ │ │ │ │ ['terminator_349', ['terminator', ['../a00731.html#a463c28a7d862c0a6d7bf3170dd614dc0', 1, 'tds_file_stream']]], │ │ │ │ │ ['the_20db_20lib_20api_350', ['The db-lib API', ['../a00559.html', 1, '']]], │ │ │ │ │ ['time_351', ['time', ['../a01175.html#afd6a58ec251f2c08a040917ba5a8cd3f', 1, 'TDS_DATETIMEALL::time'], │ │ │ │ │ ['../a01395.html#a6bb5dcd5b47813b71934546e0c60e035', 1, 'DBDATETIMEALL::time'] │ │ │ │ │ ]], │ │ │ │ │ @@ -581,12 +581,12 @@ │ │ │ │ │ ['tm_5fmon_356', ['tm_mon', ['../a00755.html#adce28126e9bbd4ef005e3bf181d59745', 1, 'tds_time']]], │ │ │ │ │ ['tm_5fns_357', ['tm_ns', ['../a00755.html#a386f1cfcabbe3ed86afe72bed75778cf', 1, 'tds_time']]], │ │ │ │ │ ['tm_5fsec_358', ['tm_sec', ['../a00755.html#adeb5e3f535662c0341d28f8d669cb59b', 1, 'tds_time']]], │ │ │ │ │ ['tm_5fyear_359', ['tm_year', ['../a00755.html#a3e27d50ebb5196356a6a8a9b495c8758', 1, 'tds_time']]], │ │ │ │ │ ['tmp_5fbuf_360', ['tmp_buf', ['../a00627.html', 1, '']]], │ │ │ │ │ ['to_20add_20a_20new_20type_361', ['How to add a new type', ['../a01428.html', 1, '']]], │ │ │ │ │ ['todo_20list_362', ['Todo List', ['../a00557.html', 1, '']]], │ │ │ │ │ - ['token_2ec_363', ['token.c', ['../a00341.html', 1, '']]], │ │ │ │ │ + ['token_2ec_363', ['token.c', ['../a00191.html', 1, '']]], │ │ │ │ │ ['type_364', ['type', ['../a01428.html', 1, 'How to add a new type'], │ │ │ │ │ ['../a01255.html#a889aafdde1d57c9be0585326022831f0', 1, 'tds_cursor::type'] │ │ │ │ │ ]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_2.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -51,11 +51,11 @@ │ │ │ │ │ ]], │ │ │ │ │ ['binary_5fto_5fresult_20', ['binary_to_result', ['../a00572.html#gab09f8279ad6da8a0a6a935e5810d753a', 1, 'convert.c']]], │ │ │ │ │ ['block_5fsize_21', ['block_size', ['../a01259.html#aaad54522a6e04122eba4c37a200d3f20', 1, 'tds_env']]], │ │ │ │ │ ['buf_22', ['buf', ['../a01167.html#a1b4967f395da537910ded1b392dd5d9b', 1, 'tds_dynamic_stream']]], │ │ │ │ │ ['buffer_23', ['buffer', ['../a01147.html#a5ba4ad38fdcb68e7d0c7252be65a4ecc', 1, 'tds_output_stream']]], │ │ │ │ │ ['bug_20list_24', ['Bug List', ['../a00558.html', 1, '']]], │ │ │ │ │ ['bulk_20copy_20functions_25', ['Bulk copy functions', ['../a00562.html', 1, '']]], │ │ │ │ │ - ['bulk_2ec_26', ['bulk.c', ['../a00287.html', 1, '']]], │ │ │ │ │ + ['bulk_2ec_26', ['bulk.c', ['../a00236.html', 1, '']]], │ │ │ │ │ ['bulk_5fcopy_27', ['bulk_copy', ['../a01199.html#ad0d5f6fc4c5a5d64f11efd2e11ecaaa4', 1, 'tds_login']]], │ │ │ │ │ ['bulk_5fquery_28', ['bulk_query', ['../a01291.html#ac6ed7b8d3a4bd98a03f8ddb43b2e66c2', 1, 'tds_socket']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_4.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,10 +1,10 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ ['data_0', ['DATA', ['../a00587.html', 1, '']]], │ │ │ │ │ - ['data_2ec_1', ['data.c', ['../a00347.html', 1, '']]], │ │ │ │ │ + ['data_2ec_1', ['data.c', ['../a00233.html', 1, '']]], │ │ │ │ │ ['data_5flen_2', ['data_len', ['../a01279.html#aa9a66245e3c629a07111067cd1fdd0d4', 1, 'tds_packet']]], │ │ │ │ │ ['database_3', ['database', ['../a01259.html#ad05b5a83816aee8ff9858ddb1eb172b8', 1, 'tds_env']]], │ │ │ │ │ ['date_4', ['date', ['../a01175.html#a4697c11cf7da815856eb96bae4d57bac', 1, 'TDS_DATETIMEALL::date'], │ │ │ │ │ ['../a01395.html#afa93266cde7ab536615bca3d904aabed', 1, 'DBDATETIMEALL::date'] │ │ │ │ │ ]], │ │ │ │ │ ['datetime_20functions_5', ['Datetime functions', ['../a00565.html', 1, '']]], │ │ │ │ │ ['day_6', ['day', ['../a01179.html#a82d0cf263d8d4a3abcf84b9a146ddf83', 1, 'tdsdaterec']]], │ │ │ │ │ @@ -73,16 +73,16 @@ │ │ │ │ │ ['../a00560.html#ga87b39d9863316b4ba85654b0885d53a0', 1, 'dbcmd(DBPROCESS *dbproc, const char cmdstring[]): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbcmdrow_31', ['dbcmdrow', ['../a00566.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00566.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbcol_32', ['DBCOL', ['../a01407.html', 1, '']]], │ │ │ │ │ ['dbcol2_33', ['DBCOL2', ['../a01411.html', 1, '']]], │ │ │ │ │ - ['dbcolinfo_34', ['dbcolinfo', ['../a00149.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'], │ │ │ │ │ - ['../a00365.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'] │ │ │ │ │ + ['dbcolinfo_34', ['dbcolinfo', ['../a00254.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'], │ │ │ │ │ + ['../a00374.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbcollen_35', ['dbcollen', ['../a00560.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbcolname_36', ['dbcolname', ['../a00560.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ @@ -149,15 +149,15 @@ │ │ │ │ │ ]], │ │ │ │ │ ['dbgetchar_60', ['dbgetchar', ['../a00560.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbproc, int pos): dblib.c'], │ │ │ │ │ ['../a00560.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbprocess, int n): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbgetmaxprocs_61', ['dbgetmaxprocs', ['../a00560.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c'], │ │ │ │ │ ['../a00560.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dbgetnull_62', ['dbgetnull', ['../a00149.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]], │ │ │ │ │ + ['dbgetnull_62', ['dbgetnull', ['../a00254.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]], │ │ │ │ │ ['dbgetpacket_63', ['dbgetpacket', ['../a00560.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00560.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbgetrow_64', ['dbgetrow', ['../a00560.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c'], │ │ │ │ │ ['../a00560.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbgettime_65', ['dbgettime', ['../a00560.html#ga6ccffbb3f0cfb10883ad349f1e47c50e', 1, 'dbgettime(void): dblib.c'], │ │ │ │ │ @@ -183,19 +183,19 @@ │ │ │ │ │ ]], │ │ │ │ │ ['dbisopt_72', ['dbisopt', ['../a00560.html#gac3eb8cb53f50998403ea9aebc6263df9', 1, 'dbisopt(DBPROCESS *dbproc, int option, const char param[]): dblib.c'], │ │ │ │ │ ['../a00560.html#gac3eb8cb53f50998403ea9aebc6263df9', 1, 'dbisopt(DBPROCESS *dbproc, int option, const char param[]): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dblastrow_73', ['dblastrow', ['../a00566.html#ga13ead146339b43b3a4d9049eb124ef4b', 1, 'dblastrow(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00566.html#ga13ead146339b43b3a4d9049eb124ef4b', 1, 'dblastrow(DBPROCESS *dbproc): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dblib_2ec_74', ['dblib.c', ['../a00149.html', 1, '']]], │ │ │ │ │ + ['dblib_2ec_74', ['dblib.c', ['../a00254.html', 1, '']]], │ │ │ │ │ ['dblib_5fbuffer_5frow_75', ['dblib_buffer_row', ['../a00631.html', 1, '']]], │ │ │ │ │ ['dblib_5fcontext_76', ['dblib_context', ['../a00635.html', 1, '']]], │ │ │ │ │ ['dblib_5ferror_5fmessage_77', ['DBLIB_ERROR_MESSAGE', ['../a00566.html#ga8f2b5c6bcfed3eb54e97b42a6f8930f8', 1, 'dblib.c']]], │ │ │ │ │ - ['dblibcontext_78', ['DBLIBCONTEXT', ['../a00149.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]], │ │ │ │ │ + ['dblibcontext_78', ['DBLIBCONTEXT', ['../a00254.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]], │ │ │ │ │ ['dblogin_79', ['dblogin', ['../a00560.html#ga0c66b475d359cb3e69cdf4b163a07eeb', 1, 'dblogin(void): dblib.c'], │ │ │ │ │ ['../a00560.html#ga0c66b475d359cb3e69cdf4b163a07eeb', 1, 'dblogin(void): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbloginfree_80', ['dbloginfree', ['../a00560.html#gac1bdb1766b791153f37dceae8ff64ad6', 1, 'dbloginfree(LOGINREC *login): dblib.c'], │ │ │ │ │ ['../a00560.html#gac1bdb1766b791153f37dceae8ff64ad6', 1, 'dbloginfree(LOGINREC *login): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbmny4add_81', ['dbmny4add', ['../a00564.html#ga0a384938a6586b7411fc42420ffad6ed', 1, 'dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum): dblib.c'], │ │ │ │ │ @@ -269,20 +269,20 @@ │ │ │ │ │ ['dbnumcompute_105', ['dbnumcompute', ['../a00560.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00560.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbprocess): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbnumeric_106', ['DBNUMERIC', ['../a01375.html', 1, '']]], │ │ │ │ │ ['dbnumrets_107', ['dbnumrets', ['../a00561.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00561.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dbopen_108', ['dbopen', ['../a00365.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]], │ │ │ │ │ + ['dbopen_108', ['dbopen', ['../a00374.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]], │ │ │ │ │ ['dboption_109', ['dboption', ['../a00983.html', 1, '']]], │ │ │ │ │ ['dbperror_110', ['dbperror', ['../a00566.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c'], │ │ │ │ │ ['../a00566.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dbpivot_111', ['dbpivot', ['../a00365.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]], │ │ │ │ │ + ['dbpivot_111', ['dbpivot', ['../a00374.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]], │ │ │ │ │ ['dbprcollen_112', ['dbprcollen', ['../a00560.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbprhead_113', ['dbprhead', ['../a00560.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00560.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbproc_5frowbuf_114', ['DBPROC_ROWBUF', ['../a00963.html', 1, '']]], │ │ │ │ │ @@ -423,15 +423,15 @@ │ │ │ │ │ ]], │ │ │ │ │ ['dbtablecolinfo_162', ['dbtablecolinfo', ['../a00560.html#ga9804fc70ae6ed35c92cd75d410dad570', 1, 'dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol): dblib.c'], │ │ │ │ │ ['../a00560.html#ga9804fc70ae6ed35c92cd75d410dad570', 1, 'dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbtds_163', ['dbtds', ['../a00566.html#ga8d765d810a40dfa01b39995a8e7406f0', 1, 'dbtds(DBPROCESS *dbproc): dblib.c'], │ │ │ │ │ ['../a00566.html#ga8d765d810a40dfa01b39995a8e7406f0', 1, 'dbtds(DBPROCESS *dbprocess): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dbtds_5funknown_164', ['DBTDS_UNKNOWN', ['../a00365.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]], │ │ │ │ │ + ['dbtds_5funknown_164', ['DBTDS_UNKNOWN', ['../a00374.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]], │ │ │ │ │ ['dbtxptr_165', ['dbtxptr', ['../a00560.html#gadbda59e71ba33aae755c41c14c988976', 1, 'dbtxptr(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#gadbda59e71ba33aae755c41c14c988976', 1, 'dbtxptr(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbtxtimestamp_166', ['dbtxtimestamp', ['../a00560.html#ga24edbab5017b2a14c46b2cea8cc015d4', 1, 'dbtxtimestamp(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#ga24edbab5017b2a14c46b2cea8cc015d4', 1, 'dbtxtimestamp(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbtypeinfo_167', ['dbtypeinfo', ['../a01399.html', 1, '']]], │ │ │ │ │ @@ -442,15 +442,15 @@ │ │ │ │ │ ['dbvarychar_170', ['DBVARYCHAR', ['../a01367.html', 1, '']]], │ │ │ │ │ ['dbvarylen_171', ['dbvarylen', ['../a00560.html#ga57c856964a9a0b4cc43f5192647c51e7', 1, 'dbvarylen(DBPROCESS *dbproc, int column): dblib.c'], │ │ │ │ │ ['../a00560.html#ga57c856964a9a0b4cc43f5192647c51e7', 1, 'dbvarylen(DBPROCESS *dbproc, int column): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbversion_172', ['dbversion', ['../a00560.html#gad06feb92d666e169aba849ff2d8d9f3c', 1, 'dbversion(void): dblib.c'], │ │ │ │ │ ['../a00560.html#gad06feb92d666e169aba849ff2d8d9f3c', 1, 'dbversion(void): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ - ['dbversion_5funknown_173', ['DBVERSION_UNKNOWN', ['../a00365.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]], │ │ │ │ │ + ['dbversion_5funknown_173', ['DBVERSION_UNKNOWN', ['../a00374.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]], │ │ │ │ │ ['dbwillconvert_174', ['dbwillconvert', ['../a00560.html#gaaf8349999c16b3c36caf5947747a2915', 1, 'dbwillconvert(int srctype, int desttype): dblib.c'], │ │ │ │ │ ['../a00560.html#gaaf8349999c16b3c36caf5947747a2915', 1, 'dbwillconvert(int srctype, int desttype): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['dbwritetext_175', ['dbwritetext', ['../a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c', 1, 'dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text): dblib.c'], │ │ │ │ │ ['../a00560.html#ga548153eb2eae76c48aa9d4b72258dc1c', 1, 'dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text): dblib.c'] │ │ │ │ │ ]], │ │ │ │ │ ['ddl_176', ['DDL', ['../a00623.html', 1, '']]], │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_8.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,17 +1,17 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ - ['iconv_2ec_0', ['iconv.c', ['../a01462.html', 1, '(Global Namespace)'], │ │ │ │ │ - ['../a01465.html', 1, '(Global Namespace)'] │ │ │ │ │ + ['iconv_2ec_0', ['iconv.c', ['../a01450.html', 1, '(Global Namespace)'], │ │ │ │ │ + ['../a01453.html', 1, '(Global Namespace)'] │ │ │ │ │ ]], │ │ │ │ │ ['id_1', ['id', ['../a01263.html#a72332750aee80a0a94c92b35d7263d76', 1, 'tds_dynamic']]], │ │ │ │ │ ['in_5fbuf_2', ['in_buf', ['../a01291.html#a24c1995f6e8d0f9a5990998524b00b6b', 1, 'tds_socket']]], │ │ │ │ │ ['in_5fcancel_3', ['in_cancel', ['../a01291.html#ae67d850cfbedf6b1e6b02111d4388d42', 1, 'tds_socket']]], │ │ │ │ │ ['in_5fflag_4', ['in_flag', ['../a01291.html#a765e007b69a2e188c989f05a689f6a11', 1, 'tds_socket']]], │ │ │ │ │ ['in_5flen_5', ['in_len', ['../a01291.html#a0b6e65b9d00b3a4efbf78b2d866cca20', 1, 'tds_socket']]], │ │ │ │ │ ['in_5fpos_6', ['in_pos', ['../a01291.html#a9d1b4fc8e1e801fdc703ee7bb68d9838', 1, 'tds_socket']]], │ │ │ │ │ ['in_5frow_7', ['in_row', ['../a01291.html#ab6a91be7f3b9966216e621c60e8151f2', 1, 'tds_socket']]], │ │ │ │ │ ['internal_20bcp_20functions_8', ['Internal bcp functions', ['../a00563.html', 1, '']]], │ │ │ │ │ ['internals_9', ['Internals', ['../a00566.html', 1, '']]], │ │ │ │ │ ['introduction_10', ['Introduction', ['../a01428.html#intro', 1, '']]], │ │ │ │ │ ['ip_5faddrs_11', ['ip_addrs', ['../a01199.html#a6e04f60eb1fae0e632ab6cddbb804a55', 1, 'tds_login']]], │ │ │ │ │ - ['is_5fdatetime_5ftype_12', ['is_datetime_type', ['../a00452.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]] │ │ │ │ │ + ['is_5fdatetime_5ftype_12', ['is_datetime_type', ['../a00518.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/all_e.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -12,15 +12,15 @@ │ │ │ │ │ ['pd_8', ['pd', ['../a00615.html', 1, '']]], │ │ │ │ │ ['pending_5fclose_9', ['pending_close', ['../a01287.html#a824fd854618d7d2005f2bec452247be7', 1, 'tds_connection']]], │ │ │ │ │ ['pivot_5ft_10', ['pivot_t', ['../a00603.html', 1, '_options::pivot_t'], │ │ │ │ │ ['../a00659.html', 1, 'pivot_t'] │ │ │ │ │ ]], │ │ │ │ │ ['pkt_11', ['pkt', ['../a01307.html#af900a7df4b6adae34d37233c3fb4cc99', 1, 'tds_freeze']]], │ │ │ │ │ ['pkt_5fpos_12', ['pkt_pos', ['../a01307.html#a99de10b997fb8a417d1ba7123957a720', 1, 'tds_freeze']]], │ │ │ │ │ - ['poll_2eh_13', ['poll.h', ['../a00434.html', 1, '']]], │ │ │ │ │ + ['poll_2eh_13', ['poll.h', ['../a00452.html', 1, '']]], │ │ │ │ │ ['pollfd_14', ['pollfd', ['../a01139.html', 1, '']]], │ │ │ │ │ ['port_15', ['port', ['../a01199.html#aec3fe0f3f17448018ae5c92cff3abb6d', 1, 'tds_login']]], │ │ │ │ │ ['prepared_5fpos_16', ['prepared_pos', ['../a01079.html#a45c0b5a3624186c84441d2e0f8a59c64', 1, '_hstmt']]], │ │ │ │ │ ['prev_17', ['prev', ['../a01079.html#ad36ac281bcfcc5a6b6af0c1428b41d5f', 1, '_hstmt']]], │ │ │ │ │ ['primary_20functions_18', ['Primary functions', ['../a00560.html', 1, '']]], │ │ │ │ │ ['procedure_20functions_19', ['Remote Procedure functions', ['../a00561.html', 1, '']]], │ │ │ │ │ ['processing_20', ['Results processing', ['../a00577.html', 1, '']]], │ │ │ ├── ./usr/share/doc/freetds-doc/reference/defines_0.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ - ['dbtds_5funknown_0', ['DBTDS_UNKNOWN', ['../a00365.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]], │ │ │ │ │ - ['dbversion_5funknown_1', ['DBVERSION_UNKNOWN', ['../a00365.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]] │ │ │ │ │ + ['dbtds_5funknown_0', ['DBTDS_UNKNOWN', ['../a00374.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]], │ │ │ │ │ + ['dbversion_5funknown_1', ['DBVERSION_UNKNOWN', ['../a00374.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/defines_1.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ - ['is_5fdatetime_5ftype_0', ['is_datetime_type', ['../a00452.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]] │ │ │ │ │ + ['is_5fdatetime_5ftype_0', ['is_datetime_type', ['../a00518.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/defines_2.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,7 +1,7 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ - ['tds_5fis_5fmssql_0', ['TDS_IS_MSSQL', ['../a00452.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fis_5fsybase_1', ['TDS_IS_SYBASE', ['../a00452.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fms_5fver_2', ['TDS_MS_VER', ['../a00452.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fput_5ftinyint_3', ['tds_put_tinyint', ['../a00452.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fsyb_5fver_4', ['TDS_SYB_VER', ['../a00452.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]] │ │ │ │ │ + ['tds_5fis_5fmssql_0', ['TDS_IS_MSSQL', ['../a00518.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fis_5fsybase_1', ['TDS_IS_SYBASE', ['../a00518.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fms_5fver_2', ['TDS_MS_VER', ['../a00518.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fput_5ftinyint_3', ['tds_put_tinyint', ['../a00518.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fsyb_5fver_4', ['TDS_SYB_VER', ['../a00518.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000000_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    │ │ │ │ -

    apps → include Relation

    File in src/appsIncludes file in include
    bsqldb.csybdb.h
    datacopy.csybdb.h
    defncopy.csybdb.h
    freebcp.csybdb.h
    freebcp.cfreetds / tds.h
    tsql.cfreetds / tds.h
    fisql / edit.csybdb.h
    fisql / fisql.csybdb.h
    fisql / handlers.csybdb.h
    fisql / interrupt.csybdb.h
    │ │ │ │ +

    apps → include Relation

    File in src/appsIncludes file in include
    bsqldb.csybdb.h
    datacopy.csybdb.h
    defncopy.csybdb.h
    freebcp.csybdb.h
    freebcp.cfreetds / tds.h
    tsql.cfreetds / tds.h
    fisql / edit.csybdb.h
    fisql / fisql.csybdb.h
    fisql / handlers.csybdb.h
    fisql / interrupt.csybdb.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000001_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    ctlib → include Relation

    File in src/ctlibIncludes file in include
    ctutil.cfreetds / tds.h
    │ │ │ │ +

    ctlib → include Relation

    File in src/ctlibIncludes file in include
    ctutil.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000002_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    dblib → include Relation

    File in src/dblibIncludes file in include
    bcp.csybdb.h
    bcp.cfreetds / tds.h
    dblib.csybdb.h
    dblib.cfreetds / tds.h
    dbopen.csybdb.h
    dbopen.cfreetds / tds.h
    dbpivot.csybdb.h
    dbpivot.cfreetds / tds.h
    dbutil.csybdb.h
    dbutil.cfreetds / tds.h
    rpc.csybdb.h
    rpc.cfreetds / tds.h
    xact.csybdb.h
    xact.cfreetds / tds.h
    │ │ │ │ +

    dblib → include Relation

    File in src/dblibIncludes file in include
    bcp.csybdb.h
    bcp.cfreetds / tds.h
    dblib.csybdb.h
    dblib.cfreetds / tds.h
    dbopen.csybdb.h
    dbopen.cfreetds / tds.h
    dbpivot.csybdb.h
    dbpivot.cfreetds / tds.h
    dbutil.csybdb.h
    dbutil.cfreetds / tds.h
    rpc.csybdb.h
    rpc.cfreetds / tds.h
    xact.csybdb.h
    xact.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000003_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    fisql → include Relation

    File in src/apps/fisqlIncludes file in include
    edit.csybdb.h
    fisql.csybdb.h
    handlers.csybdb.h
    interrupt.csybdb.h
    │ │ │ │ +

    fisql → include Relation

    File in src/apps/fisqlIncludes file in include
    edit.csybdb.h
    fisql.csybdb.h
    handlers.csybdb.h
    interrupt.csybdb.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000004_000008.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    freetds → replacements Relation

    File in include/freetdsIncludes file in include/freetds/replacements
    replacements.hpoll.h
    │ │ │ │ +

    freetds → replacements Relation

    File in include/freetdsIncludes file in include/freetds/replacements
    replacements.hpoll.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000005_000004.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    include → freetds Relation

    File in includeIncludes file in include/freetds
    ctlib.htds.h
    freetds / replacements.hreplacements / poll.h
    │ │ │ │ +

    include → freetds Relation

    File in includeIncludes file in include/freetds
    ctlib.htds.h
    freetds / replacements.hreplacements / poll.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000006_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    odbc → include Relation

    File in src/odbcIncludes file in include
    bcp.cfreetds / tds.h
    winlogin.cfreetds / tds.h
    winsetup.cfreetds / tds.h
    │ │ │ │ +

    odbc → include Relation

    File in src/odbcIncludes file in include
    bcp.cfreetds / tds.h
    winlogin.cfreetds / tds.h
    winsetup.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000007_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    pool → include Relation

    File in src/poolIncludes file in include
    pool.hfreetds / tds.h
    │ │ │ │ +

    pool → include Relation

    File in src/poolIncludes file in include
    pool.hfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000009_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    replacements → include Relation

    File in src/replacementsIncludes file in include
    iconv.cfreetds / tds.h
    │ │ │ │ +

    replacements → include Relation

    File in src/replacementsIncludes file in include
    iconv.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000010_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    server → include Relation

    File in src/serverIncludes file in include
    login.cfreetds / tds.h
    query.cfreetds / tds.h
    server.cfreetds / tds.h
    unittest.cfreetds / tds.h
    │ │ │ │ +

    server → include Relation

    File in src/serverIncludes file in include
    login.cfreetds / tds.h
    query.cfreetds / tds.h
    server.cfreetds / tds.h
    unittest.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_000012_000005.html │ │ │ │ @@ -69,14 +69,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    tds → include Relation

    File in src/tdsIncludes file in include
    bulk.cfreetds / tds.h
    challenge.cfreetds / tds.h
    config.cfreetds / tds.h
    convert.cfreetds / tds.h
    data.cfreetds / tds.h
    getmac.cfreetds / tds.h
    iconv.cfreetds / tds.h
    locale.cfreetds / tds.h
    log.cfreetds / tds.h
    login.cfreetds / tds.h
    mem.cfreetds / tds.h
    net.cfreetds / tds.h
    numeric.cfreetds / tds.h
    packet.cfreetds / tds.h
    query.cfreetds / tds.h
    random.cfreetds / tds.h
    read.cfreetds / tds.h
    sec_negotiate.cfreetds / tds.h
    stream.cfreetds / tds.h
    tds_checks.cfreetds / tds.h
    tls.cfreetds / tds.h
    token.cfreetds / tds.h
    util.cfreetds / tds.h
    vstrbuild.cfreetds / tds.h
    write.cfreetds / tds.h
    │ │ │ │ +

    tds → include Relation

    File in src/tdsIncludes file in include
    bulk.cfreetds / tds.h
    challenge.cfreetds / tds.h
    config.cfreetds / tds.h
    convert.cfreetds / tds.h
    data.cfreetds / tds.h
    getmac.cfreetds / tds.h
    iconv.cfreetds / tds.h
    locale.cfreetds / tds.h
    log.cfreetds / tds.h
    login.cfreetds / tds.h
    mem.cfreetds / tds.h
    net.cfreetds / tds.h
    numeric.cfreetds / tds.h
    packet.cfreetds / tds.h
    query.cfreetds / tds.h
    random.cfreetds / tds.h
    read.cfreetds / tds.h
    sec_negotiate.cfreetds / tds.h
    stream.cfreetds / tds.h
    tds_checks.cfreetds / tds.h
    tls.cfreetds / tds.h
    token.cfreetds / tds.h
    util.cfreetds / tds.h
    vstrbuild.cfreetds / tds.h
    write.cfreetds / tds.h
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_0da4150d9fb2a5fe66d7630d7a98e2a8.html │ │ │ │ @@ -80,35 +80,35 @@ │ │ │ │ Directory dependency graph for utils: │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

    │ │ │ │ Files

     bjoern-utf8.h
     bjoern-utf8.h
     
     des.h
     des.h
     
     dlist.h
     dlist.h
     
     dlist.tmpl.h
     dlist.tmpl.h
     
     hmac_md5.h
     hmac_md5.h
     
     md4.h
     md4.h
     
     md5.h
     md5.h
     
     nosigpipe.h
     nosigpipe.h
     
     path.h
     path.h
     
     smp.h
     smp.h
     
     string.h
     string.h
     
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_53adf0b982dc8545998aae3f283a5a58.html │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │

    │ │ │ │ Directories

    │ │ │ │  fisql │ │ │ │   │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

    │ │ │ │ Files

     freebcp.h
     freebcp.h
     
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_807893467092ee3c78fdb68ff7be3fa1.html │ │ │ │ @@ -80,21 +80,21 @@ │ │ │ │ Directory dependency graph for odbc: │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

    │ │ │ │ Files

     error_export.h
     error_export.h
     
     odbc_export.h
     odbc_export.h
     
     resource.h
     resource.h
     
     sqlwparams.h
     sqlwparams.h
     
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/dir_88c98ec7a422f3972a0293d4e4a2e62e.html │ │ │ │ @@ -75,15 +75,15 @@ │ │ │ │
    │ │ │ │
    vms Directory Reference
    │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

    │ │ │ │ Files

     stdint.h
     stdint.h
     
     vargdefs.h
     
    │ │ │ │
    │ │ │ │ │ │ │ │
  • dbcanquery() : dblib.c, sybdb.h
  • │ │ │ │
  • dbchange() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclose() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclrbuf() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclropt() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcmd() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcmdrow() : dblib.c, sybdb.h
  • │ │ │ │ -
  • dbcolinfo() : dblib.c, sybdb.h
  • │ │ │ │ +
  • dbcolinfo() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcollen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolname() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolptr() : dblib.c
  • │ │ │ │
  • dbcolsource() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcoltype() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcoltypeinfo() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolutype() : dblib.c, sybdb.h
  • │ │ │ │ @@ -114,28 +114,28 @@ │ │ │ │
  • dberrhandle() : dblib.c, sybdb.h
  • │ │ │ │
  • dbexit() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfcmd() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfirstrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfreebuf() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetchar() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetmaxprocs() : sybdb.h, dblib.c
  • │ │ │ │ -
  • dbgetnull() : dblib.c
  • │ │ │ │ +
  • dbgetnull() : dblib.c
  • │ │ │ │
  • dbgetpacket() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgettime() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetuserdata() : dblib.c, sybdb.h
  • │ │ │ │
  • dbhasretstat() : dblib.c, sybdb.h
  • │ │ │ │
  • dbinit() : dblib.c, sybdb.h
  • │ │ │ │
  • dbiordesc() : dblib.c, sybdb.h
  • │ │ │ │
  • dbiowdesc() : dblib.c, sybdb.h
  • │ │ │ │
  • dbiscount() : dblib.c, sybdb.h
  • │ │ │ │
  • dbisopt() : dblib.c, sybdb.h
  • │ │ │ │
  • dblastrow() : dblib.c, sybdb.h
  • │ │ │ │
  • DBLIB_ERROR_MESSAGE : dblib.c
  • │ │ │ │ -
  • DBLIBCONTEXT : dblib.c
  • │ │ │ │ +
  • DBLIBCONTEXT : dblib.c
  • │ │ │ │
  • dblogin() : dblib.c, sybdb.h
  • │ │ │ │
  • dbloginfree() : dblib.c, sybdb.h
  • │ │ │ │
  • dbmny4add() : dblib.c, sybdb.h
  • │ │ │ │
  • dbmny4cmp() : dblib.c, sybdb.h
  • │ │ │ │
  • dbmny4copy() : dblib.c, sybdb.h
  • │ │ │ │
  • dbmny4minus() : dblib.c, sybdb.h
  • │ │ │ │
  • dbmny4sub() : dblib.c, sybdb.h
  • │ │ │ │ @@ -154,17 +154,17 @@ │ │ │ │
  • dbmsghandle() : dblib.c, sybdb.h
  • │ │ │ │
  • dbname() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnullbind() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumalts() : sybdb.h, dblib.c
  • │ │ │ │
  • dbnumcols() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumcompute() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumrets() : dblib.c, sybdb.h
  • │ │ │ │ -
  • dbopen() : sybdb.h
  • │ │ │ │ +
  • dbopen() : sybdb.h
  • │ │ │ │
  • dbperror() : dblib.c
  • │ │ │ │ -
  • dbpivot() : sybdb.h
  • │ │ │ │ +
  • dbpivot() : sybdb.h
  • │ │ │ │
  • dbprcollen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprhead() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprtype() : dblib.c, sybdb.h
  • │ │ │ │
  • dbreadtext() : dblib.c, sybdb.h
  • │ │ │ │
  • dbrecftos() : dblib.c, sybdb.h
  • │ │ │ │
  • dbresults() : dblib.c, sybdb.h
  • │ │ │ │ @@ -205,21 +205,21 @@ │ │ │ │
  • dbsqlok() : dblib.c, sybdb.h
  • │ │ │ │
  • dbsqlsend() : dblib.c, sybdb.h
  • │ │ │ │
  • dbstrbuild() : dblib.c, sybdb.h
  • │ │ │ │
  • dbstrcpy() : dblib.c, sybdb.h
  • │ │ │ │
  • dbstrlen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbtablecolinfo() : dblib.c, sybdb.h
  • │ │ │ │
  • dbtds() : dblib.c, sybdb.h
  • │ │ │ │ -
  • DBTDS_UNKNOWN : sybdb.h
  • │ │ │ │ +
  • DBTDS_UNKNOWN : sybdb.h
  • │ │ │ │
  • dbtxptr() : sybdb.h, dblib.c
  • │ │ │ │
  • dbtxtimestamp() : dblib.c, sybdb.h
  • │ │ │ │
  • dbuse() : dblib.c, sybdb.h
  • │ │ │ │
  • dbvarylen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbversion() : dblib.c, sybdb.h
  • │ │ │ │ -
  • DBVERSION_UNKNOWN : sybdb.h
  • │ │ │ │ +
  • DBVERSION_UNKNOWN : sybdb.h
  • │ │ │ │
  • dbwillconvert() : dblib.c, sybdb.h
  • │ │ │ │
  • dbwritetext() : dblib.c, sybdb.h
  • │ │ │ │
  • default_err_handler() : dblib.c
  • │ │ │ │
  • determine_adjusted_size() : token.c
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_defs.html │ │ │ │ @@ -66,23 +66,23 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
Here is a list of all documented macros with links to the documentation:
    │ │ │ │ -
  • DBTDS_UNKNOWN : sybdb.h
  • │ │ │ │ -
  • DBVERSION_UNKNOWN : sybdb.h
  • │ │ │ │ -
  • is_datetime_type : tds.h
  • │ │ │ │ +
  • DBTDS_UNKNOWN : sybdb.h
  • │ │ │ │ +
  • DBVERSION_UNKNOWN : sybdb.h
  • │ │ │ │ +
  • is_datetime_type : tds.h
  • │ │ │ │
  • MAX : dblib.c
  • │ │ │ │ -
  • TDS_IS_MSSQL : tds.h
  • │ │ │ │ -
  • TDS_IS_SYBASE : tds.h
  • │ │ │ │ -
  • TDS_MS_VER : tds.h
  • │ │ │ │ -
  • tds_put_tinyint : tds.h
  • │ │ │ │ -
  • TDS_SYB_VER : tds.h
  • │ │ │ │ +
  • TDS_IS_MSSQL : tds.h
  • │ │ │ │ +
  • TDS_IS_SYBASE : tds.h
  • │ │ │ │ +
  • TDS_MS_VER : tds.h
  • │ │ │ │ +
  • tds_put_tinyint : tds.h
  • │ │ │ │ +
  • TDS_SYB_VER : tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_enum.html │ │ │ │ @@ -66,16 +66,16 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
Here is a list of all documented enums with links to the documentation:
    │ │ │ │ -
  • tds_bcp_directions : tds.h
  • │ │ │ │ -
  • tds_states : tds.h
  • │ │ │ │ +
  • tds_bcp_directions : tds.h
  • │ │ │ │ +
  • tds_states : tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_eval.html │ │ │ │ @@ -66,20 +66,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
Here is a list of all documented enum values with links to the documentation:
    │ │ │ │ -
  • TDS_DEAD : tds.h
  • │ │ │ │ -
  • TDS_IDLE : tds.h
  • │ │ │ │ -
  • TDS_PENDING : tds.h
  • │ │ │ │ -
  • TDS_READING : tds.h
  • │ │ │ │ -
  • TDS_SENDING : tds.h
  • │ │ │ │ -
  • TDS_WRITING : tds.h
  • │ │ │ │ +
  • TDS_DEAD : tds.h
  • │ │ │ │ +
  • TDS_IDLE : tds.h
  • │ │ │ │ +
  • TDS_PENDING : tds.h
  • │ │ │ │ +
  • TDS_READING : tds.h
  • │ │ │ │ +
  • TDS_SENDING : tds.h
  • │ │ │ │ +
  • TDS_WRITING : tds.h
  • │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_func_d.html │ │ │ │ @@ -89,15 +89,15 @@ │ │ │ │
  • dbcanquery() : dblib.c, sybdb.h
  • │ │ │ │
  • dbchange() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclose() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclrbuf() : dblib.c, sybdb.h
  • │ │ │ │
  • dbclropt() : sybdb.h, dblib.c
  • │ │ │ │
  • dbcmd() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcmdrow() : dblib.c, sybdb.h
  • │ │ │ │ -
  • dbcolinfo() : dblib.c, sybdb.h
  • │ │ │ │ +
  • dbcolinfo() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcollen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolname() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolptr() : dblib.c
  • │ │ │ │
  • dbcolsource() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcoltype() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcoltypeinfo() : dblib.c, sybdb.h
  • │ │ │ │
  • dbcolutype() : dblib.c, sybdb.h
  • │ │ │ │ @@ -114,15 +114,15 @@ │ │ │ │
  • dberrhandle() : dblib.c, sybdb.h
  • │ │ │ │
  • dbexit() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfcmd() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfirstrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbfreebuf() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetchar() : sybdb.h, dblib.c
  • │ │ │ │
  • dbgetmaxprocs() : dblib.c, sybdb.h
  • │ │ │ │ -
  • dbgetnull() : dblib.c
  • │ │ │ │ +
  • dbgetnull() : dblib.c
  • │ │ │ │
  • dbgetpacket() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgettime() : dblib.c, sybdb.h
  • │ │ │ │
  • dbgetuserdata() : dblib.c, sybdb.h
  • │ │ │ │
  • dbhasretstat() : dblib.c, sybdb.h
  • │ │ │ │
  • dbinit() : dblib.c, sybdb.h
  • │ │ │ │
  • dbiordesc() : dblib.c, sybdb.h
  • │ │ │ │ @@ -152,17 +152,17 @@ │ │ │ │
  • dbmsghandle() : dblib.c, sybdb.h
  • │ │ │ │
  • dbname() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnullbind() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumalts() : sybdb.h, dblib.c
  • │ │ │ │
  • dbnumcols() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumcompute() : dblib.c, sybdb.h
  • │ │ │ │
  • dbnumrets() : dblib.c, sybdb.h
  • │ │ │ │ -
  • dbopen() : sybdb.h
  • │ │ │ │ +
  • dbopen() : sybdb.h
  • │ │ │ │
  • dbperror() : dblib.c
  • │ │ │ │ -
  • dbpivot() : sybdb.h
  • │ │ │ │ +
  • dbpivot() : sybdb.h
  • │ │ │ │
  • dbprcollen() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprhead() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprrow() : dblib.c, sybdb.h
  • │ │ │ │
  • dbprtype() : dblib.c, sybdb.h
  • │ │ │ │
  • dbreadtext() : dblib.c, sybdb.h
  • │ │ │ │
  • dbrecftos() : dblib.c, sybdb.h
  • │ │ │ │
  • dbresults() : dblib.c, sybdb.h
  • │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_func_t.html │ │ │ │ @@ -68,110 +68,110 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    Here is a list of all documented functions with links to the documentation:
    │ │ │ │ │ │ │ │

    - t -

      │ │ │ │ -
    • tds5_bcp_add_fixed_columns() : bulk.c
    • │ │ │ │ -
    • tds5_bcp_add_variable_columns() : bulk.c
    • │ │ │ │ +
    • tds5_bcp_add_fixed_columns() : bulk.c
    • │ │ │ │ +
    • tds5_bcp_add_variable_columns() : bulk.c
    • │ │ │ │
    • tds5_process_dyn_result2() : token.c
    • │ │ │ │
    • tds5_process_optioncmd() : token.c
    • │ │ │ │
    • tds5_process_result() : token.c
    • │ │ │ │
    • tds5_process_result2() : token.c
    • │ │ │ │
    • tds71_read_table_names() : token.c
    • │ │ │ │
    • tds71_submit_prepexec() : tds.h
    • │ │ │ │ -
    • tds7_bcp_send_colmetadata() : bulk.c
    • │ │ │ │ -
    • tds7_build_bulk_insert_stmt() : bulk.c
    • │ │ │ │ +
    • tds7_bcp_send_colmetadata() : bulk.c
    • │ │ │ │ +
    • tds7_build_bulk_insert_stmt() : bulk.c
    • │ │ │ │
    • tds7_get_data_info() : token.c
    • │ │ │ │
    • tds7_get_instance_port() : tds.h
    • │ │ │ │
    • tds7_get_instance_ports() : tds.h
    • │ │ │ │
    • tds7_process_compute_result() : token.c
    • │ │ │ │
    • tds7_process_result() : token.c
    • │ │ │ │
    • tds8_adjust_login() : tds.h
    • │ │ │ │
    • tds_alloc_dynamic() : tds.h
    • │ │ │ │
    • tds_alloc_get_string() : token.c
    • │ │ │ │
    • tds_alloc_param_data() : tds.h
    • │ │ │ │
    • tds_alloc_param_result() : tds.h
    • │ │ │ │
    • tds_alloc_row() : tds.h
    • │ │ │ │ -
    • tds_bcp_done() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_fread() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_init() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_row_free() : bulk.c
    • │ │ │ │ -
    • tds_bcp_send_record() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_start() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_start_copy_in() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_start_insert_stmt() : bulk.c
    • │ │ │ │ +
    • tds_bcp_done() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_fread() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_init() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_row_free() : bulk.c
    • │ │ │ │ +
    • tds_bcp_send_record() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_start() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_start_copy_in() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_start_insert_stmt() : bulk.c
    • │ │ │ │
    • tds_canonical_charset() : iconv.c
    • │ │ │ │
    • tds_canonical_charset_name() : iconv.c
    • │ │ │ │
    • tds_close_socket() : tds.h
    • │ │ │ │
    • tds_config_verstr() : tds.h
    • │ │ │ │ -
    • tds_convert_stream() : stream.c
    • │ │ │ │ +
    • tds_convert_stream() : stream.c
    • │ │ │ │
    • tds_convert_string() : tds.h
    • │ │ │ │ -
    • tds_copy_stream() : stream.c
    • │ │ │ │ +
    • tds_copy_stream() : stream.c
    • │ │ │ │
    • tds_count_placeholders() : tds.h
    • │ │ │ │
    • tds_cursor_dealloc() : tds.h
    • │ │ │ │ -
    • tds_datain_stream_init() : stream.c
    • │ │ │ │ -
    • tds_datain_stream_read() : stream.c
    • │ │ │ │ -
    • tds_dataout_stream_init() : stream.c
    • │ │ │ │ -
    • tds_dataout_stream_write() : stream.c
    • │ │ │ │ +
    • tds_datain_stream_init() : stream.c
    • │ │ │ │ +
    • tds_datain_stream_read() : stream.c
    • │ │ │ │ +
    • tds_dataout_stream_init() : stream.c
    • │ │ │ │ +
    • tds_dataout_stream_write() : stream.c
    • │ │ │ │
    • tds_datecrack() : tds.h
    • │ │ │ │
    • tds_deferred_cursor_dealloc() : tds.h
    • │ │ │ │
    • tds_deferred_unprepare() : tds.h
    • │ │ │ │
    • tds_detach_results() : tds.h
    • │ │ │ │
    • tds_dstr_get() : tds.h, read.c
    • │ │ │ │ -
    • tds_dynamic_stream_init() : stream.c
    • │ │ │ │ -
    • tds_dynamic_stream_write() : stream.c
    • │ │ │ │ -
    • tds_file_stream_read() : bulk.c
    • │ │ │ │ +
    • tds_dynamic_stream_init() : stream.c
    • │ │ │ │ +
    • tds_dynamic_stream_write() : stream.c
    • │ │ │ │ +
    • tds_file_stream_read() : bulk.c
    • │ │ │ │
    • tds_fix_login() : tds.h
    • │ │ │ │
    • tds_flush_packet() : tds.h
    • │ │ │ │
    • tds_free_input_params() : tds.h
    • │ │ │ │
    • tds_free_namelist() : token.c
    • │ │ │ │
    • tds_free_param_result() : tds.h
    • │ │ │ │
    • tds_freeze() : tds.h
    • │ │ │ │
    • tds_freeze_abort() : tds.h
    • │ │ │ │
    • tds_freeze_close() : tds.h
    • │ │ │ │
    • tds_freeze_close_len() : tds.h
    • │ │ │ │
    • tds_freeze_close_string() : tds.h
    • │ │ │ │
    • tds_freeze_written() : tds.h
    • │ │ │ │ -
    • tds_generic_get() : data.c
    • │ │ │ │ -
    • tds_generic_put() : data.c
    • │ │ │ │ -
    • tds_generic_put_info() : data.c
    • │ │ │ │ +
    • tds_generic_get() : data.c
    • │ │ │ │ +
    • tds_generic_put() : data.c
    • │ │ │ │ +
    • tds_generic_put_info() : data.c
    • │ │ │ │
    • tds_get_byte() : read.c, tds.h
    • │ │ │ │
    • tds_get_char_data() : read.c, tds.h
    • │ │ │ │
    • tds_get_column_declaration() : tds.h
    • │ │ │ │
    • tds_get_compiletime_settings() : tds.h
    • │ │ │ │ -
    • tds_get_conversion_type() : tds.h
    • │ │ │ │ +
    • tds_get_conversion_type() : tds.h
    • │ │ │ │
    • tds_get_data_info() : token.c
    • │ │ │ │ -
    • tds_get_locale() : tds.h
    • │ │ │ │ +
    • tds_get_locale() : tds.h
    • │ │ │ │
    • tds_get_n() : read.c, tds.h
    • │ │ │ │ -
    • tds_get_size_by_type() : tds.h
    • │ │ │ │ +
    • tds_get_size_by_type() : tds.h
    • │ │ │ │
    • tds_get_string() : read.c, tds.h
    • │ │ │ │
    • tds_get_uint() : read.c, tds.h
    • │ │ │ │
    • tds_get_uint8() : read.c, tds.h
    • │ │ │ │
    • tds_get_usmallint() : read.c, tds.h
    • │ │ │ │ -
    • tds_get_varint_size() : tds.h
    • │ │ │ │ +
    • tds_get_varint_size() : tds.h
    • │ │ │ │
    • tds_goodread() : tds.h
    • │ │ │ │
    • tds_goodwrite() : tds.h
    • │ │ │ │
    • tds_iconv() : iconv.c
    • │ │ │ │ -
    • tds_iconv_alloc() : iconv.c, tds.h
    • │ │ │ │ +
    • tds_iconv_alloc() : iconv.c, tds.h
    • │ │ │ │
    • tds_iconv_from_collate() : iconv.c, tds.h
    • │ │ │ │
    • tds_iconv_get_info() : iconv.c
    • │ │ │ │
    • tds_iconv_info_init() : iconv.c
    • │ │ │ │ -
    • tds_iconv_init() : iconv.c
    • │ │ │ │ +
    • tds_iconv_init() : iconv.c
    • │ │ │ │
    • tds_init_login() : tds.h
    • │ │ │ │
    • tds_lookup_dynamic() : token.c, tds.h
    • │ │ │ │
    • tds_lookup_host() : tds.h
    • │ │ │ │
    • tds_needs_unprepare() : tds.h
    • │ │ │ │
    • tds_next_placeholder() : tds.h
    • │ │ │ │
    • tds_ntlm_get_auth() : tds.h
    • │ │ │ │ -
    • tds_numeric_to_string() : tds.h
    • │ │ │ │ +
    • tds_numeric_to_string() : tds.h
    • │ │ │ │
    • tds_peek() : read.c, tds.h
    • │ │ │ │
    • tds_pr_op() : token.c
    • │ │ │ │ -
    • tds_prdatatype() : dblib.c
    • │ │ │ │ +
    • tds_prdatatype() : dblib.c
    • │ │ │ │
    • tds_process_auth() : token.c
    • │ │ │ │
    • tds_process_cancel() : token.c, tds.h
    • │ │ │ │
    • tds_process_col_fmt() : token.c
    • │ │ │ │
    • tds_process_col_name() : token.c
    • │ │ │ │
    • tds_process_colinfo() : token.c
    • │ │ │ │
    • tds_process_compute() : token.c
    • │ │ │ │
    • tds_process_compute_names() : token.c
    • │ │ │ │ @@ -202,57 +202,57 @@ │ │ │ │
    • tds_read_config_info() : tds.h
    • │ │ │ │
    • tds_read_namelist() : token.c
    • │ │ │ │
    • tds_read_packet() : tds.h
    • │ │ │ │
    • tds_realloc() : tds.h
    • │ │ │ │
    • tds_release_dynamic() : tds.h
    • │ │ │ │
    • tds_select() : tds.h
    • │ │ │ │
    • tds_send_cancel() : tds.h
    • │ │ │ │ -
    • tds_set_column_type() : data.c, tds.h
    • │ │ │ │ +
    • tds_set_column_type() : data.c, tds.h
    • │ │ │ │
    • tds_set_cur_dyn() : tds.h
    • │ │ │ │ -
    • tds_set_iconv_name() : iconv.c
    • │ │ │ │ +
    • tds_set_iconv_name() : iconv.c
    • │ │ │ │
    • tds_set_interfaces_file_loc() : tds.h
    • │ │ │ │ -
    • tds_set_param_type() : data.c, tds.h
    • │ │ │ │ -
    • tds_set_server() : tds.h
    • │ │ │ │ -
    • tds_set_state() : tds.h
    • │ │ │ │ +
    • tds_set_param_type() : data.c, tds.h
    • │ │ │ │ +
    • tds_set_server() : tds.h
    • │ │ │ │ +
    • tds_set_state() : tds.h
    • │ │ │ │
    • tds_skip_comment() : tds.h
    • │ │ │ │
    • tds_skip_quoted() : tds.h
    • │ │ │ │
    • tds_socket_set_nonblocking() : tds.h
    • │ │ │ │
    • tds_start_query() : tds.h
    • │ │ │ │ -
    • tds_staticin_stream_init() : stream.c
    • │ │ │ │ -
    • tds_staticin_stream_read() : stream.c
    • │ │ │ │ -
    • tds_staticout_stream_init() : stream.c
    • │ │ │ │ -
    • tds_staticout_stream_write() : stream.c
    • │ │ │ │ +
    • tds_staticin_stream_init() : stream.c
    • │ │ │ │ +
    • tds_staticin_stream_read() : stream.c
    • │ │ │ │ +
    • tds_staticout_stream_init() : stream.c
    • │ │ │ │ +
    • tds_staticout_stream_write() : stream.c
    • │ │ │ │
    • tds_submit_begin_tran() : tds.h
    • │ │ │ │
    • tds_submit_commit() : tds.h
    • │ │ │ │
    • tds_submit_execdirect() : tds.h
    • │ │ │ │
    • tds_submit_execute() : tds.h
    • │ │ │ │
    • tds_submit_optioncmd() : tds.h
    • │ │ │ │
    • tds_submit_prepare() : tds.h
    • │ │ │ │
    • tds_submit_query() : tds.h
    • │ │ │ │
    • tds_submit_query_params() : tds.h
    • │ │ │ │
    • tds_submit_queryf() : tds.h
    • │ │ │ │
    • tds_submit_rollback() : tds.h
    • │ │ │ │
    • tds_submit_rpc() : tds.h
    • │ │ │ │
    • tds_submit_unprepare() : tds.h
    • │ │ │ │ -
    • tds_swap_numeric() : data.c
    • │ │ │ │ +
    • tds_swap_numeric() : data.c
    • │ │ │ │
    • tds_sys_iconv_open() : iconv.c
    • │ │ │ │
    • tds_token_name() : token.c
    • │ │ │ │
    • tds_unget_byte() : read.c, tds.h
    • │ │ │ │ -
    • tds_writetext_continue() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_writetext_end() : tds.h, bulk.c
    • │ │ │ │ -
    • tds_writetext_start() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_writetext_continue() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_writetext_end() : tds.h, bulk.c
    • │ │ │ │ +
    • tds_writetext_start() : bulk.c, tds.h
    • │ │ │ │
    • tdsdbopen() : dblib.c, sybdb.h
    • │ │ │ │ -
    • tdsdump_close() : tds.h
    • │ │ │ │ -
    • tdsdump_col() : tds.h
    • │ │ │ │ -
    • tdsdump_dump_buf() : tds.h
    • │ │ │ │ -
    • tdsdump_log() : tds.h
    • │ │ │ │ -
    • tdsdump_off() : tds.h
    • │ │ │ │ -
    • tdsdump_on() : tds.h
    • │ │ │ │ -
    • tdsdump_open() : tds.h
    • │ │ │ │ -
    • tdserror() : tds.h
    • │ │ │ │ +
    • tdsdump_close() : tds.h
    • │ │ │ │ +
    • tdsdump_col() : tds.h
    • │ │ │ │ +
    • tdsdump_dump_buf() : tds.h
    • │ │ │ │ +
    • tdsdump_log() : tds.h
    • │ │ │ │ +
    • tdsdump_off() : tds.h
    • │ │ │ │ +
    • tdsdump_on() : tds.h
    • │ │ │ │ +
    • tdsdump_open() : tds.h
    • │ │ │ │ +
    • tdserror() : tds.h
    • │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_i.html │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    Here is a list of all documented file members with links to the documentation:
    │ │ │ │ │ │ │ │

    - i -

      │ │ │ │ -
    • is_datetime_type : tds.h
    • │ │ │ │ +
    • is_datetime_type : tds.h
    • │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_t.html │ │ │ │ @@ -68,120 +68,120 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    Here is a list of all documented file members with links to the documentation:
    │ │ │ │ │ │ │ │

    - t -

      │ │ │ │ -
    • tds5_bcp_add_fixed_columns() : bulk.c
    • │ │ │ │ -
    • tds5_bcp_add_variable_columns() : bulk.c
    • │ │ │ │ +
    • tds5_bcp_add_fixed_columns() : bulk.c
    • │ │ │ │ +
    • tds5_bcp_add_variable_columns() : bulk.c
    • │ │ │ │
    • tds5_process_dyn_result2() : token.c
    • │ │ │ │
    • tds5_process_optioncmd() : token.c
    • │ │ │ │
    • tds5_process_result() : token.c
    • │ │ │ │
    • tds5_process_result2() : token.c
    • │ │ │ │
    • tds71_read_table_names() : token.c
    • │ │ │ │
    • tds71_submit_prepexec() : tds.h
    • │ │ │ │ -
    • tds7_bcp_send_colmetadata() : bulk.c
    • │ │ │ │ -
    • tds7_build_bulk_insert_stmt() : bulk.c
    • │ │ │ │ +
    • tds7_bcp_send_colmetadata() : bulk.c
    • │ │ │ │ +
    • tds7_build_bulk_insert_stmt() : bulk.c
    • │ │ │ │
    • tds7_get_data_info() : token.c
    • │ │ │ │
    • tds7_get_instance_port() : tds.h
    • │ │ │ │
    • tds7_get_instance_ports() : tds.h
    • │ │ │ │
    • tds7_process_compute_result() : token.c
    • │ │ │ │
    • tds7_process_result() : token.c
    • │ │ │ │
    • tds8_adjust_login() : tds.h
    • │ │ │ │
    • tds_alloc_dynamic() : tds.h
    • │ │ │ │
    • tds_alloc_get_string() : token.c
    • │ │ │ │
    • tds_alloc_param_data() : tds.h
    • │ │ │ │
    • tds_alloc_param_result() : tds.h
    • │ │ │ │
    • tds_alloc_row() : tds.h
    • │ │ │ │ -
    • tds_bcp_directions : tds.h
    • │ │ │ │ -
    • tds_bcp_done() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_fread() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_init() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_row_free() : bulk.c
    • │ │ │ │ -
    • tds_bcp_send_record() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_start() : tds.h, bulk.c
    • │ │ │ │ -
    • tds_bcp_start_copy_in() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_bcp_start_insert_stmt() : bulk.c
    • │ │ │ │ +
    • tds_bcp_directions : tds.h
    • │ │ │ │ +
    • tds_bcp_done() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_fread() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_init() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_row_free() : bulk.c
    • │ │ │ │ +
    • tds_bcp_send_record() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_start() : tds.h, bulk.c
    • │ │ │ │ +
    • tds_bcp_start_copy_in() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_bcp_start_insert_stmt() : bulk.c
    • │ │ │ │
    • tds_canonical_charset() : iconv.c
    • │ │ │ │
    • tds_canonical_charset_name() : iconv.c
    • │ │ │ │
    • tds_close_socket() : tds.h
    • │ │ │ │ -
    • TDS_COMPILETIME_SETTINGS : tds.h
    • │ │ │ │ +
    • TDS_COMPILETIME_SETTINGS : tds.h
    • │ │ │ │
    • tds_config_verstr() : tds.h
    • │ │ │ │ -
    • tds_convert_stream() : stream.c
    • │ │ │ │ +
    • tds_convert_stream() : stream.c
    • │ │ │ │
    • tds_convert_string() : tds.h
    • │ │ │ │ -
    • tds_copy_stream() : stream.c
    • │ │ │ │ +
    • tds_copy_stream() : stream.c
    • │ │ │ │
    • tds_count_placeholders() : tds.h
    • │ │ │ │
    • tds_cursor_dealloc() : tds.h
    • │ │ │ │ -
    • tds_datain_stream_init() : stream.c
    • │ │ │ │ -
    • tds_datain_stream_read() : stream.c
    • │ │ │ │ -
    • tds_dataout_stream_init() : stream.c
    • │ │ │ │ -
    • tds_dataout_stream_write() : stream.c
    • │ │ │ │ +
    • tds_datain_stream_init() : stream.c
    • │ │ │ │ +
    • tds_datain_stream_read() : stream.c
    • │ │ │ │ +
    • tds_dataout_stream_init() : stream.c
    • │ │ │ │ +
    • tds_dataout_stream_write() : stream.c
    • │ │ │ │
    • tds_datecrack() : tds.h
    • │ │ │ │ -
    • TDS_DEAD : tds.h
    • │ │ │ │ +
    • TDS_DEAD : tds.h
    • │ │ │ │
    • tds_deferred_cursor_dealloc() : tds.h
    • │ │ │ │
    • tds_deferred_unprepare() : tds.h
    • │ │ │ │
    • tds_detach_results() : tds.h
    • │ │ │ │
    • tds_dstr_get() : read.c, tds.h
    • │ │ │ │ -
    • tds_dynamic_stream_init() : stream.c
    • │ │ │ │ -
    • tds_dynamic_stream_write() : stream.c
    • │ │ │ │ -
    • TDS_ENCODING : tds.h
    • │ │ │ │ -
    • tds_file_stream_read() : bulk.c
    • │ │ │ │ +
    • tds_dynamic_stream_init() : stream.c
    • │ │ │ │ +
    • tds_dynamic_stream_write() : stream.c
    • │ │ │ │ +
    • TDS_ENCODING : tds.h
    • │ │ │ │ +
    • tds_file_stream_read() : bulk.c
    • │ │ │ │
    • tds_fix_login() : tds.h
    • │ │ │ │
    • tds_flush_packet() : tds.h
    • │ │ │ │
    • tds_free_input_params() : tds.h
    • │ │ │ │
    • tds_free_namelist() : token.c
    • │ │ │ │
    • tds_free_param_result() : tds.h
    • │ │ │ │
    • tds_freeze() : tds.h
    • │ │ │ │
    • tds_freeze_abort() : tds.h
    • │ │ │ │
    • tds_freeze_close() : tds.h
    • │ │ │ │
    • tds_freeze_close_len() : tds.h
    • │ │ │ │
    • tds_freeze_close_string() : tds.h
    • │ │ │ │
    • tds_freeze_written() : tds.h
    • │ │ │ │ -
    • tds_generic_get() : data.c
    • │ │ │ │ -
    • tds_generic_put() : data.c
    • │ │ │ │ -
    • tds_generic_put_info() : data.c
    • │ │ │ │ +
    • tds_generic_get() : data.c
    • │ │ │ │ +
    • tds_generic_put() : data.c
    • │ │ │ │ +
    • tds_generic_put_info() : data.c
    • │ │ │ │
    • tds_get_byte() : tds.h, read.c
    • │ │ │ │
    • tds_get_char_data() : read.c, tds.h
    • │ │ │ │
    • tds_get_column_declaration() : tds.h
    • │ │ │ │
    • tds_get_compiletime_settings() : tds.h
    • │ │ │ │ -
    • tds_get_conversion_type() : tds.h
    • │ │ │ │ +
    • tds_get_conversion_type() : tds.h
    • │ │ │ │
    • tds_get_data_info() : token.c
    • │ │ │ │ -
    • tds_get_locale() : tds.h
    • │ │ │ │ +
    • tds_get_locale() : tds.h
    • │ │ │ │
    • tds_get_n() : read.c, tds.h
    • │ │ │ │ -
    • tds_get_size_by_type() : tds.h
    • │ │ │ │ +
    • tds_get_size_by_type() : tds.h
    • │ │ │ │
    • tds_get_string() : read.c, tds.h
    • │ │ │ │
    • tds_get_uint() : read.c, tds.h
    • │ │ │ │
    • tds_get_uint8() : read.c, tds.h
    • │ │ │ │
    • tds_get_usmallint() : read.c, tds.h
    • │ │ │ │ -
    • tds_get_varint_size() : tds.h
    • │ │ │ │ +
    • tds_get_varint_size() : tds.h
    • │ │ │ │
    • tds_goodread() : tds.h
    • │ │ │ │
    • tds_goodwrite() : tds.h
    • │ │ │ │
    • tds_iconv() : iconv.c
    • │ │ │ │ -
    • tds_iconv_alloc() : iconv.c, tds.h
    • │ │ │ │ +
    • tds_iconv_alloc() : iconv.c, tds.h
    • │ │ │ │
    • tds_iconv_from_collate() : iconv.c, tds.h
    • │ │ │ │
    • tds_iconv_get_info() : iconv.c
    • │ │ │ │
    • tds_iconv_info_init() : iconv.c
    • │ │ │ │ -
    • tds_iconv_init() : iconv.c
    • │ │ │ │ -
    • TDS_IDLE : tds.h
    • │ │ │ │ +
    • tds_iconv_init() : iconv.c
    • │ │ │ │ +
    • TDS_IDLE : tds.h
    • │ │ │ │
    • tds_init_login() : tds.h
    • │ │ │ │ -
    • TDS_IS_MSSQL : tds.h
    • │ │ │ │ -
    • TDS_IS_SYBASE : tds.h
    • │ │ │ │ +
    • TDS_IS_MSSQL : tds.h
    • │ │ │ │ +
    • TDS_IS_SYBASE : tds.h
    • │ │ │ │
    • tds_lookup_dynamic() : token.c, tds.h
    • │ │ │ │
    • tds_lookup_host() : tds.h
    • │ │ │ │ -
    • TDS_MS_VER : tds.h
    • │ │ │ │ +
    • TDS_MS_VER : tds.h
    • │ │ │ │
    • tds_needs_unprepare() : tds.h
    • │ │ │ │
    • tds_next_placeholder() : tds.h
    • │ │ │ │
    • tds_ntlm_get_auth() : tds.h
    • │ │ │ │ -
    • tds_numeric_bytes_per_prec : tds.h
    • │ │ │ │ -
    • tds_numeric_to_string() : tds.h
    • │ │ │ │ +
    • tds_numeric_bytes_per_prec : tds.h
    • │ │ │ │ +
    • tds_numeric_to_string() : tds.h
    • │ │ │ │
    • tds_peek() : read.c, tds.h
    • │ │ │ │ -
    • TDS_PENDING : tds.h
    • │ │ │ │ +
    • TDS_PENDING : tds.h
    • │ │ │ │
    • tds_pr_op() : token.c
    • │ │ │ │ -
    • tds_prdatatype() : dblib.c
    • │ │ │ │ +
    • tds_prdatatype() : dblib.c
    • │ │ │ │
    • tds_process_auth() : token.c
    • │ │ │ │
    • tds_process_cancel() : token.c, tds.h
    • │ │ │ │
    • tds_process_col_fmt() : token.c
    • │ │ │ │
    • tds_process_col_name() : token.c
    • │ │ │ │
    • tds_process_colinfo() : token.c
    • │ │ │ │
    • tds_process_compute() : token.c
    • │ │ │ │
    • tds_process_compute_names() : token.c
    • │ │ │ │ @@ -201,85 +201,85 @@ │ │ │ │
    • tds_process_pending_closes() : token.c
    • │ │ │ │
    • tds_process_row() : token.c
    • │ │ │ │
    • tds_process_simple_query() : token.c, tds.h
    • │ │ │ │
    • tds_process_tabname() : token.c
    • │ │ │ │
    • tds_process_tokens() : token.c, tds.h
    • │ │ │ │
    • tds_prtype() : token.c, tds.h
    • │ │ │ │
    • tds_put_string() : tds.h
    • │ │ │ │ -
    • tds_put_tinyint : tds.h
    • │ │ │ │ +
    • tds_put_tinyint : tds.h
    • │ │ │ │
    • tds_quote_id() : tds.h
    • │ │ │ │
    • tds_quote_id_rpc() : tds.h
    • │ │ │ │
    • tds_read_conf_file() : tds.h
    • │ │ │ │
    • tds_read_conf_section() : tds.h
    • │ │ │ │
    • tds_read_config_info() : tds.h
    • │ │ │ │
    • tds_read_namelist() : token.c
    • │ │ │ │
    • tds_read_packet() : tds.h
    • │ │ │ │ -
    • TDS_READING : tds.h
    • │ │ │ │ +
    • TDS_READING : tds.h
    • │ │ │ │
    • tds_realloc() : tds.h
    • │ │ │ │
    • tds_release_dynamic() : tds.h
    • │ │ │ │
    • tds_select() : tds.h
    • │ │ │ │
    • tds_send_cancel() : tds.h
    • │ │ │ │ -
    • TDS_SENDING : tds.h
    • │ │ │ │ -
    • tds_set_column_type() : data.c, tds.h
    • │ │ │ │ +
    • TDS_SENDING : tds.h
    • │ │ │ │ +
    • tds_set_column_type() : data.c, tds.h
    • │ │ │ │
    • tds_set_cur_dyn() : tds.h
    • │ │ │ │ -
    • tds_set_iconv_name() : iconv.c
    • │ │ │ │ +
    • tds_set_iconv_name() : iconv.c
    • │ │ │ │
    • tds_set_interfaces_file_loc() : tds.h
    • │ │ │ │ -
    • tds_set_param_type() : tds.h, data.c
    • │ │ │ │ -
    • tds_set_server() : tds.h
    • │ │ │ │ -
    • tds_set_state() : tds.h
    • │ │ │ │ +
    • tds_set_param_type() : tds.h, data.c
    • │ │ │ │ +
    • tds_set_server() : tds.h
    • │ │ │ │ +
    • tds_set_state() : tds.h
    • │ │ │ │
    • tds_skip_comment() : tds.h
    • │ │ │ │
    • tds_skip_quoted() : tds.h
    • │ │ │ │
    • tds_socket_set_nonblocking() : tds.h
    • │ │ │ │
    • tds_start_query() : tds.h
    • │ │ │ │ -
    • TDS_STATE : tds.h
    • │ │ │ │ -
    • tds_states : tds.h
    • │ │ │ │ -
    • tds_staticin_stream_init() : stream.c
    • │ │ │ │ -
    • tds_staticin_stream_read() : stream.c
    • │ │ │ │ -
    • tds_staticout_stream_init() : stream.c
    • │ │ │ │ -
    • tds_staticout_stream_write() : stream.c
    • │ │ │ │ +
    • TDS_STATE : tds.h
    • │ │ │ │ +
    • tds_states : tds.h
    • │ │ │ │ +
    • tds_staticin_stream_init() : stream.c
    • │ │ │ │ +
    • tds_staticin_stream_read() : stream.c
    • │ │ │ │ +
    • tds_staticout_stream_init() : stream.c
    • │ │ │ │ +
    • tds_staticout_stream_write() : stream.c
    • │ │ │ │
    • tds_submit_begin_tran() : tds.h
    • │ │ │ │
    • tds_submit_commit() : tds.h
    • │ │ │ │
    • tds_submit_execdirect() : tds.h
    • │ │ │ │
    • tds_submit_execute() : tds.h
    • │ │ │ │
    • tds_submit_optioncmd() : tds.h
    • │ │ │ │
    • tds_submit_prepare() : tds.h
    • │ │ │ │
    • tds_submit_query() : tds.h
    • │ │ │ │
    • tds_submit_query_params() : tds.h
    • │ │ │ │
    • tds_submit_queryf() : tds.h
    • │ │ │ │
    • tds_submit_rollback() : tds.h
    • │ │ │ │
    • tds_submit_rpc() : tds.h
    • │ │ │ │
    • tds_submit_unprepare() : tds.h
    • │ │ │ │ -
    • tds_swap_numeric() : data.c
    • │ │ │ │ -
    • TDS_SYB_VER : tds.h
    • │ │ │ │ +
    • tds_swap_numeric() : data.c
    • │ │ │ │ +
    • TDS_SYB_VER : tds.h
    • │ │ │ │
    • tds_sys_iconv_open() : iconv.c
    • │ │ │ │
    • tds_token_name() : token.c
    • │ │ │ │
    • tds_unget_byte() : read.c, tds.h
    • │ │ │ │ -
    • tds_write_dump : tds.h
    • │ │ │ │ -
    • tds_writetext_continue() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_writetext_end() : bulk.c, tds.h
    • │ │ │ │ -
    • tds_writetext_start() : bulk.c, tds.h
    • │ │ │ │ -
    • TDS_WRITING : tds.h
    • │ │ │ │ -
    • TDSBLOB : tds.h
    • │ │ │ │ -
    • TDSCURSOR : tds.h
    • │ │ │ │ -
    • TDSDATEREC : tds.h
    • │ │ │ │ +
    • tds_write_dump : tds.h
    • │ │ │ │ +
    • tds_writetext_continue() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_writetext_end() : bulk.c, tds.h
    • │ │ │ │ +
    • tds_writetext_start() : bulk.c, tds.h
    • │ │ │ │ +
    • TDS_WRITING : tds.h
    • │ │ │ │ +
    • TDSBLOB : tds.h
    • │ │ │ │ +
    • TDSCURSOR : tds.h
    • │ │ │ │ +
    • TDSDATEREC : tds.h
    • │ │ │ │
    • tdsdbopen() : dblib.c, sybdb.h
    • │ │ │ │ -
    • tdsdump_close() : tds.h
    • │ │ │ │ -
    • tdsdump_col() : tds.h
    • │ │ │ │ -
    • tdsdump_dump_buf() : tds.h
    • │ │ │ │ -
    • tdsdump_log() : tds.h
    • │ │ │ │ -
    • tdsdump_off() : tds.h
    • │ │ │ │ -
    • tdsdump_on() : tds.h
    • │ │ │ │ -
    • tdsdump_open() : tds.h
    • │ │ │ │ -
    • TDSDYNAMIC : tds.h
    • │ │ │ │ -
    • TDSENV : tds.h
    • │ │ │ │ -
    • tdserror() : tds.h
    • │ │ │ │ -
    • TDSFILESTREAM : bulk.c
    • │ │ │ │ -
    • TDSPBCB : bulk.c
    • │ │ │ │ -
    • TDSRESULTINFO : tds.h
    • │ │ │ │ -
    • TDSVARIANT : tds.h
    • │ │ │ │ +
    • tdsdump_close() : tds.h
    • │ │ │ │ +
    • tdsdump_col() : tds.h
    • │ │ │ │ +
    • tdsdump_dump_buf() : tds.h
    • │ │ │ │ +
    • tdsdump_log() : tds.h
    • │ │ │ │ +
    • tdsdump_off() : tds.h
    • │ │ │ │ +
    • tdsdump_on() : tds.h
    • │ │ │ │ +
    • tdsdump_open() : tds.h
    • │ │ │ │ +
    • TDSDYNAMIC : tds.h
    • │ │ │ │ +
    • TDSENV : tds.h
    • │ │ │ │ +
    • tdserror() : tds.h
    • │ │ │ │ +
    • TDSFILESTREAM : bulk.c
    • │ │ │ │ +
    • TDSPBCB : bulk.c
    • │ │ │ │ +
    • TDSRESULTINFO : tds.h
    • │ │ │ │ +
    • TDSVARIANT : tds.h
    • │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_type.html │ │ │ │ @@ -67,27 +67,27 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    Here is a list of all documented typedefs with links to the documentation:
      │ │ │ │
    • DBLIB_ERROR_MESSAGE : dblib.c
    • │ │ │ │ -
    • DBLIBCONTEXT : dblib.c
    • │ │ │ │ -
    • TDS_COMPILETIME_SETTINGS : tds.h
    • │ │ │ │ -
    • TDS_ENCODING : tds.h
    • │ │ │ │ -
    • TDS_STATE : tds.h
    • │ │ │ │ -
    • TDSBLOB : tds.h
    • │ │ │ │ -
    • TDSCURSOR : tds.h
    • │ │ │ │ -
    • TDSDATEREC : tds.h
    • │ │ │ │ -
    • TDSDYNAMIC : tds.h
    • │ │ │ │ -
    • TDSENV : tds.h
    • │ │ │ │ -
    • TDSFILESTREAM : bulk.c
    • │ │ │ │ -
    • TDSPBCB : bulk.c
    • │ │ │ │ -
    • TDSRESULTINFO : tds.h
    • │ │ │ │ -
    • TDSVARIANT : tds.h
    • │ │ │ │ +
    • DBLIBCONTEXT : dblib.c
    • │ │ │ │ +
    • TDS_COMPILETIME_SETTINGS : tds.h
    • │ │ │ │ +
    • TDS_ENCODING : tds.h
    • │ │ │ │ +
    • TDS_STATE : tds.h
    • │ │ │ │ +
    • TDSBLOB : tds.h
    • │ │ │ │ +
    • TDSCURSOR : tds.h
    • │ │ │ │ +
    • TDSDATEREC : tds.h
    • │ │ │ │ +
    • TDSDYNAMIC : tds.h
    • │ │ │ │ +
    • TDSENV : tds.h
    • │ │ │ │ +
    • TDSFILESTREAM : bulk.c
    • │ │ │ │ +
    • TDSPBCB : bulk.c
    • │ │ │ │ +
    • TDSRESULTINFO : tds.h
    • │ │ │ │ +
    • TDSVARIANT : tds.h
    • │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/globals_vars.html │ │ │ │ @@ -66,16 +66,16 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │
    Here is a list of all documented variables with links to the documentation:
      │ │ │ │ -
    • tds_numeric_bytes_per_prec : tds.h
    • │ │ │ │ -
    • tds_write_dump : tds.h
    • │ │ │ │ +
    • tds_numeric_bytes_per_prec : tds.h
    • │ │ │ │ +
    • tds_write_dump : tds.h
    • │ │ │ │
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/freetds-doc/reference/typedefs_0.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,5 +1,5 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ ['dblib_5ferror_5fmessage_0', ['DBLIB_ERROR_MESSAGE', ['../a00566.html#ga8f2b5c6bcfed3eb54e97b42a6f8930f8', 1, 'dblib.c']]], │ │ │ │ │ - ['dblibcontext_1', ['DBLIBCONTEXT', ['../a00149.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]], │ │ │ │ │ + ['dblibcontext_1', ['DBLIBCONTEXT', ['../a00254.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]], │ │ │ │ │ ['dstr_2', ['DSTR', ['../a00578.html#gafddddf5bd7ad223cadee3d3bdc899954', 1, 'string.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/typedefs_1.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,14 +1,14 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ - ['tds_5fcompiletime_5fsettings_0', ['TDS_COMPILETIME_SETTINGS', ['../a00452.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fencoding_1', ['TDS_ENCODING', ['../a00452.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'tds.h']]], │ │ │ │ │ - ['tds_5fstate_2', ['TDS_STATE', ['../a00452.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]], │ │ │ │ │ - ['tdsblob_3', ['TDSBLOB', ['../a00452.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]], │ │ │ │ │ - ['tdscursor_4', ['TDSCURSOR', ['../a00452.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]], │ │ │ │ │ - ['tdsdaterec_5', ['TDSDATEREC', ['../a00452.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'tds.h']]], │ │ │ │ │ - ['tdsdynamic_6', ['TDSDYNAMIC', ['../a00452.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]], │ │ │ │ │ - ['tdsenv_7', ['TDSENV', ['../a00452.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]], │ │ │ │ │ - ['tdsfilestream_8', ['TDSFILESTREAM', ['../a00287.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]], │ │ │ │ │ - ['tdspbcb_9', ['TDSPBCB', ['../a00287.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]], │ │ │ │ │ - ['tdsresultinfo_10', ['TDSRESULTINFO', ['../a00452.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]], │ │ │ │ │ - ['tdsvariant_11', ['TDSVARIANT', ['../a00452.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]] │ │ │ │ │ + ['tds_5fcompiletime_5fsettings_0', ['TDS_COMPILETIME_SETTINGS', ['../a00518.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fencoding_1', ['TDS_ENCODING', ['../a00518.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'tds.h']]], │ │ │ │ │ + ['tds_5fstate_2', ['TDS_STATE', ['../a00518.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]], │ │ │ │ │ + ['tdsblob_3', ['TDSBLOB', ['../a00518.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]], │ │ │ │ │ + ['tdscursor_4', ['TDSCURSOR', ['../a00518.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]], │ │ │ │ │ + ['tdsdaterec_5', ['TDSDATEREC', ['../a00518.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'tds.h']]], │ │ │ │ │ + ['tdsdynamic_6', ['TDSDYNAMIC', ['../a00518.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]], │ │ │ │ │ + ['tdsenv_7', ['TDSENV', ['../a00518.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]], │ │ │ │ │ + ['tdsfilestream_8', ['TDSFILESTREAM', ['../a00236.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]], │ │ │ │ │ + ['tdspbcb_9', ['TDSPBCB', ['../a00236.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]], │ │ │ │ │ + ['tdsresultinfo_10', ['TDSRESULTINFO', ['../a00518.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]], │ │ │ │ │ + ['tdsvariant_11', ['TDSVARIANT', ['../a00518.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/freetds-doc/reference/variables_10.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,19 +1,19 @@ │ │ │ │ │ var searchData = [ │ │ │ │ │ ['tds_0', ['tds', ['../a01307.html#a182ed346382edef2962aca11c7cabc22', 1, 'tds_freeze::tds'], │ │ │ │ │ ['../a01079.html#ad357e33164f46fce2bc70267d71a1959', 1, '_hstmt::tds'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fctx_1', ['tds_ctx', ['../a00635.html#afb3fb2d591c0f75b9412f8ca77e2629d', 1, 'dblib_context']]], │ │ │ │ │ ['tds_5fctx_5fref_5fcount_2', ['tds_ctx_ref_count', ['../a00635.html#ad01d901acbc92e8c369e6a6c784d7446', 1, 'dblib_context']]], │ │ │ │ │ - ['tds_5fnumeric_5fbytes_5fper_5fprec_3', ['tds_numeric_bytes_per_prec', ['../a00452.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]], │ │ │ │ │ + ['tds_5fnumeric_5fbytes_5fper_5fprec_3', ['tds_numeric_bytes_per_prec', ['../a00518.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]], │ │ │ │ │ ['tds_5fstr_5fempty_4', ['tds_str_empty', ['../a00578.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'], │ │ │ │ │ ['../a00578.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'] │ │ │ │ │ ]], │ │ │ │ │ ['tds_5fversion_5', ['tds_version', ['../a01199.html#a8f9f756b25fd18916a6080f9c22f835d', 1, 'tds_login']]], │ │ │ │ │ - ['tds_5fwrite_5fdump_6', ['tds_write_dump', ['../a00452.html#a02866a1bf7da5ab66a994217fcceb1b7', 1, 'log.c']]], │ │ │ │ │ + ['tds_5fwrite_5fdump_6', ['tds_write_dump', ['../a00518.html#a02866a1bf7da5ab66a994217fcceb1b7', 1, 'log.c']]], │ │ │ │ │ ['term_5flen_7', ['term_len', ['../a00731.html#aae893302d33ee1e9d83c3d85d7390dca', 1, 'tds_file_stream']]], │ │ │ │ │ ['terminator_8', ['terminator', ['../a00731.html#a463c28a7d862c0a6d7bf3170dd614dc0', 1, 'tds_file_stream']]], │ │ │ │ │ ['time_9', ['time', ['../a01395.html#a6bb5dcd5b47813b71934546e0c60e035', 1, 'DBDATETIMEALL::time'], │ │ │ │ │ ['../a01175.html#afd6a58ec251f2c08a040917ba5a8cd3f', 1, 'TDS_DATETIMEALL::time'] │ │ │ │ │ ]], │ │ │ │ │ ['timezone_10', ['timezone', ['../a01179.html#a624e21e65d0ae89797b3a7eadc48829f', 1, 'tdsdaterec']]], │ │ │ │ │ ['tm_5fhour_11', ['tm_hour', ['../a00755.html#a6ece03e77f69035da83d5739e16ef905', 1, 'tds_time']]], │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00023_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00314_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00056_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00338_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00062_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00347_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00074_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00014_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00077_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00017_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00086_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00032_source.html │ │ │ │┄ Files 96% similar despite different names │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -FreeTDS API: src/apps/fisql/interrupt.h Source File │ │ │ │ +FreeTDS API: src/apps/fisql/handlers.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,15 +74,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -
    interrupt.h
    │ │ │ │ +
    handlers.h
    │ │ │ │
    │ │ │ │
    │ │ │ │
    1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano
    │ │ │ │
    2 *
    │ │ │ │
    3 * This program is free software; you can redistribute it and/or
    │ │ │ │
    4 * modify it under the terms of the GNU General Public
    │ │ │ │
    5 * License as published by the Free Software Foundation; either
    │ │ │ │ @@ -95,22 +95,21 @@ │ │ │ │
    12 *
    │ │ │ │
    13 * You should have received a copy of the GNU General Public
    │ │ │ │
    14 * License along with this library; if not, write to the
    │ │ │ │
    15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    │ │ │ │
    16 * Boston, MA 02111-1307, USA.
    │ │ │ │
    17 */
    │ │ │ │
    18
    │ │ │ │ -
    19/* $Id: interrupt.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */
    │ │ │ │ -
    20extern sigjmp_buf restart;
    │ │ │ │ +
    19/* $Id: handlers.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */
    │ │ │ │ +
    20extern int global_errorlevel;
    │ │ │ │
    21
    │ │ │ │ -
    22void inactive_interrupt_handler(int sig);
    │ │ │ │ -
    23void active_interrupt_handler(int sig);
    │ │ │ │ -
    24void maybe_handle_active_interrupt(void);
    │ │ │ │ -
    25int active_interrupt_pending(DBPROCESS * dbproc);
    │ │ │ │ -
    26int active_interrupt_servhandler(DBPROCESS * dbproc);
    │ │ │ │ +
    22int err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    │ │ │ │ +
    23
    │ │ │ │ +
    24int msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate,
    │ │ │ │ +
    25 int severity, char *msgtext, char *srvname, char *procname, int line);
    │ │ │ │
    Definition dblib.h:123
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ FreeTDS API │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * src │ │ │ │ │ * apps │ │ │ │ │ * fisql │ │ │ │ │ -interrupt.h │ │ │ │ │ +handlers.h │ │ │ │ │ 1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano │ │ │ │ │ 2 * │ │ │ │ │ 3 * This program is free software; you can redistribute it and/or │ │ │ │ │ 4 * modify it under the terms of the GNU General Public │ │ │ │ │ 5 * License as published by the Free Software Foundation; either │ │ │ │ │ 6 * version 2 of the License, or (at your option) any later version. │ │ │ │ │ 7 * │ │ │ │ │ @@ -20,19 +20,19 @@ │ │ │ │ │ 12 * │ │ │ │ │ 13 * You should have received a copy of the GNU General Public │ │ │ │ │ 14 * License along with this library; if not, write to the │ │ │ │ │ 15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, │ │ │ │ │ 16 * Boston, MA 02111-1307, USA. │ │ │ │ │ 17 */ │ │ │ │ │ 18 │ │ │ │ │ -19/* $Id: interrupt.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */ │ │ │ │ │ -20extern sigjmp_buf restart; │ │ │ │ │ +19/* $Id: handlers.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */ │ │ │ │ │ +20extern int global_errorlevel; │ │ │ │ │ 21 │ │ │ │ │ -22void inactive_interrupt_handler(int sig); │ │ │ │ │ -23void active_interrupt_handler(int sig); │ │ │ │ │ -24void maybe_handle_active_interrupt(void); │ │ │ │ │ -25int active_interrupt_pending(DBPROCESS * dbproc); │ │ │ │ │ -26int active_interrupt_servhandler(DBPROCESS * dbproc); │ │ │ │ │ +22int err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char │ │ │ │ │ +*dberrstr, char *oserrstr); │ │ │ │ │ +23 │ │ │ │ │ +24int msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate, │ │ │ │ │ +25 int severity, char *msgtext, char *srvname, char *procname, int line); │ │ │ │ │ tds_dblib_dbprocess │ │ │ │ │ Definition dblib.h:123 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.8 │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00101_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00041_source.html │ │ │ │┄ Files identical despite different names │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00128_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00278_source.html │ │ │ │┄ Files 99% similar despite different names │ │ │ │ @@ -116,15 +116,15 @@ │ │ │ │
    33/*
    │ │ │ │
    34 * POSIX says fd_set type may be defined in either sys/select.h or sys/time.h.
    │ │ │ │
    35 */
    │ │ │ │
    36#if HAVE_SYS_TIME_H
    │ │ │ │
    37#include <sys/time.h>
    │ │ │ │
    38#endif
    │ │ │ │
    39
    │ │ │ │ -
    40#include <freetds/tds.h>
    │ │ │ │ +
    40#include <freetds/tds.h>
    │ │ │ │
    41#include <freetds/utils/dlist.h>
    │ │ │ │
    42#include <freetds/replacements.h>
    │ │ │ │
    43
    │ │ │ │
    44/* defines */
    │ │ │ │
    45#define PGSIZ 2048
    │ │ │ │
    46#define BLOCKSIZ 512
    │ │ │ │
    47#define MAX_POOL_USERS 1024
    │ │ │ │ @@ -266,15 +266,15 @@ │ │ │ │
    174bool pool_write_data(TDS_POOL_SOCKET *from, TDS_POOL_SOCKET *to);
    │ │ │ │
    175
    │ │ │ │
    176/* config.c */
    │ │ │ │
    177bool pool_read_conf_files(const tds_dir_char *path, const char *poolname, TDS_POOL * pool, char **err);
    │ │ │ │
    178
    │ │ │ │
    179
    │ │ │ │
    180#endif
    │ │ │ │ -
    Main include file for libtds.
    │ │ │ │ +
    Main include file for libtds.
    │ │ │ │
    Definition pool.h:65
    │ │ │ │
    Definition pool.h:71
    │ │ │ │
    Definition pool.h:79
    │ │ │ │
    Definition pool.h:88
    │ │ │ │
    Definition pool.h:107
    │ │ │ │
    dlist_users waiters
    users in wait state
    Definition pool.h:130
    │ │ │ │
    Definition poll.h:27
    │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00131_source.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00260_source.html │ │ │ │┄ Files 99% similar despite different names │ │ │ │ @@ -367,15 +367,15 @@ │ │ │ │
    335 }
    │ │ │ │
    336 }
    │ │ │ │
    337 if (!curcol->column_varaddr)
    │ │ │ │
    338 continue;
    │ │ │ │
    339
    │ │ │ │
    340 if (srclen <= 0) {
    │ │ │ │
    341 if (srclen == 0 || !curcol->column_nullbind)
    │ │ │ │ -
    342 dbgetnull(dbproc, curcol->column_bindtype, curcol->column_bindlen,
    │ │ │ │ +
    342 dbgetnull(dbproc, curcol->column_bindtype, curcol->column_bindlen,
    │ │ │ │
    343 (BYTE *) curcol->column_varaddr);
    │ │ │ │
    344 continue;
    │ │ │ │
    345 }
    │ │ │ │
    346
    │ │ │ │
    347 srctype = tds_get_conversion_type(curcol->column_type, curcol->column_size);
    │ │ │ │
    348
    │ │ │ │
    349 if (row->row_data)
    │ │ │ │ @@ -558,15 +558,15 @@ │ │ │ │ │ │ │ │
    550 }
    │ │ │ │
    551 }
    │ │ │ │
    552
    │ │ │ │
    553 return SUCCEED;
    │ │ │ │
    554}
    │ │ │ │
    555
    │ │ │ │ -
    RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    Definition dblib.c:537
    │ │ │ │ +
    RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    Definition dblib.c:537
    │ │ │ │
    TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
    Allocate space for row store return NULL on out of memory.
    Definition mem.c:533
    │ │ │ │
    Definition buffering.h:1
    │ │ │ │
    DBINT row
    row number
    Definition buffering.h:7
    │ │ │ │
    unsigned char * row_data
    row data, NULL for resinfo->current_row
    Definition buffering.h:5
    │ │ │ │
    TDS_INT * sizes
    save old sizes
    Definition buffering.h:9
    │ │ │ │
    TDSRESULTINFO * resinfo
    pointer to result information
    Definition buffering.h:3
    │ │ │ │
    Definition dblib.h:52
    │ │ │ │ --- ./usr/share/doc/freetds-doc/reference/a00149.html │ │ │ ├── +++ ./usr/share/doc/freetds-doc/reference/a00254.html │ │ │ │┄ Files 99% similar despite different names │ │ │ │ @@ -86,22 +86,22 @@ │ │ │ │

    Main implementation file for db-lib. │ │ │ │ More...

    │ │ │ │
    #include <config.h>
    │ │ │ │ #include <stdarg.h>
    │ │ │ │ #include <freetds/time.h>
    │ │ │ │ #include <assert.h>
    │ │ │ │ #include <stdio.h>
    │ │ │ │ -#include <freetds/tds.h>
    │ │ │ │ +#include <freetds/tds.h>
    │ │ │ │ #include <freetds/thread.h>
    │ │ │ │ #include <freetds/convert.h>
    │ │ │ │ #include <freetds/utils/string.h>
    │ │ │ │ #include <freetds/data.h>
    │ │ │ │ #include <freetds/replacements.h>
    │ │ │ │ #include <sybfront.h>
    │ │ │ │ -#include <sybdb.h>
    │ │ │ │ +#include <sybdb.h>
    │ │ │ │ #include <syberror.h>
    │ │ │ │ #include <dblib.h>
    │ │ │ │ #include "buffering.h"
    │ │ │ │
    │ │ │ │ Include dependency graph for dblib.c:
    │ │ │ │
    │ │ │ │
    │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ #define MAX(a, b)   ( (a) > (b) ? (a) : (b) ) │ │ │ │   │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

    │ │ │ │ Typedefs

    typedef struct _dblib_error_message DBLIB_ERROR_MESSAGE
     
    typedef struct dblib_context DBLIBCONTEXT
    typedef struct dblib_context DBLIBCONTEXT
     
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -217,15 +217,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -333,27 +333,27 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +static int  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +static void  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -636,15 +636,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

    │ │ │ │ Functions

    static BYTE * _dbcoldata (TDSCOLUMN *colinfo)
     Return data from a column.
     
     
    RETCODE dbcmd (DBPROCESS *dbproc, const char cmdstring[])
     Append SQL to the command buffer.
     
    RETCODE dbcmdrow (DBPROCESS *dbproc)
     See if the current command can return rows.
     
    RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
    RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
     Get a bunch of column attributes with a single call (Microsoft-compatibility feature).
     
    DBINT dbcollen (DBPROCESS *dbproc, int column)
     Get size of a regular result column.
     
    char * dbcolname (DBPROCESS *dbproc, int column)
     Return name of a regular result column.
     
    char * dbgetchar (DBPROCESS *dbproc, int pos)
     Get address of a position in the command buffer.
     
    int dbgetmaxprocs (void)
     get maximum simultaneous connections db-lib will open to the server.
     
    RETCODE dbgetnull (DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    RETCODE dbgetnull (DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
     
    int dbgetpacket (DBPROCESS *dbproc)
     Get TDS packet size for the connection.
     
    RETCODE dbgetrow (DBPROCESS *dbproc, DBINT row)
     Read a row from the row buffer.
     
    DBBOOL dbisopt (DBPROCESS *dbproc, int option, const char param[])
     Get value of an option.
     
    DBINT dblastrow (DBPROCESS *dbproc)
     Get number of the last row in the row buffer.
     
    │ │ │ │ -static int dblib_add_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
    dblib_add_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
     
    │ │ │ │ static TDS_SERVER_TYPE dblib_bound_type (int bindtype)
     
    │ │ │ │ static int dblib_coltype (TDSCOLUMN *colinfo)
     
    │ │ │ │ static RETCODE dblib_datecrack (DBPROCESS *dbproc, BOOL nano_precision, DBDATEREC *output, int type, const void *data)
     
    │ │ │ │ -static void dblib_del_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
    dblib_del_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
     
    │ │ │ │ static TDSCONTEXTdblib_get_tds_ctx (void)
     
    │ │ │ │ static void dblib_release_tds_ctx (int count)
     
     
    │ │ │ │ static const char * prresult_type (int result_type)
     
    │ │ │ │ static const char * prretcode (int retcode)
     
    static const char * tds_prdatatype (int datatype_token)
    static const char * tds_prdatatype (int datatype_token)
     Returns type in string.
     
    DBPROCESStdsdbopen (LOGINREC *login, const char *server, int msdblib)
     Form a connection with the server.
     
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +static DBLIBCONTEXT  │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -724,15 +724,15 @@ │ │ │ │ │ │ │ │

    ◆ DBLIBCONTEXT

    │ │ │ │ │ │ │ │
    │ │ │ │
    │ │ │ │

    │ │ │ │ @@ -661,17 +661,17 @@ │ │ │ │

    │ │ │ │ static tds_mutex dblib_mutex = TDS_MUTEX_INITIALIZER
     
    │ │ │ │ static NULLREP default_null_representations [MAXBINDTYPES]
     
    │ │ │ │ -static DBLIBCONTEXT g_dblib_ctx
    g_dblib_ctx
     
    static int g_dblib_version
    static int g_dblib_version
     
    │ │ │ │ static const DBBIGINT null_BIGINT = 0
     
    │ │ │ │ static const DBBIT null_BIT = 0
     
    │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
    typedef struct dblib_context DBLIBCONTEXTtypedef struct dblib_context DBLIBCONTEXT
    │ │ │ │
    │ │ │ │

    \dblib_internal

    Remarks
    A db-lib connection has an implicit TDS context.
    │ │ │ │ │ │ │ │
    │ │ │ │
    │ │ │ │ @@ -839,15 +839,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ ) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    │ │ │ │ -

    dbbind() says: "Note that if varlen is 0, no padding takes place" dbgetnull() will not pad varaddr unless varlen is positive.
    │ │ │ │ +

    dbbind() says: "Note that if varlen is 0, no padding takes place" dbgetnull() will not pad varaddr unless varlen is positive.
    │ │ │ │ Vartype Program Type Padding Terminator


    │ │ │ │

    CHARBIND DBCHAR blanks none STRINGBIND DBCHAR blanks \0 NTBSTRINGBIND DBCHAR none \0 VARYCHARBIND DBVARYCHAR none none BOUNDARYBIND DBCHAR none \0 SENSITIVITYBIND DBCHAR none \0

    │ │ │ │
    │ │ │ │ Here is the call graph for this function:
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │ @@ -921,16 +921,16 @@ │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │
    │ │ │ │ - │ │ │ │ -
    #define DBVERSION_UNKNOWN
    DBVERSION_xxx are used with dbsetversion()
    Definition sybdb.h:70
    │ │ │ │ + │ │ │ │ +
    #define DBVERSION_UNKNOWN
    DBVERSION_xxx are used with dbsetversion()
    Definition sybdb.h:70
    │ │ │ │
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │