{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.6Lfjx9jP/b1/freetds_1.3.17+ds-2_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.6Lfjx9jP/b2/freetds_1.3.17+ds-2_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,12 +1,12 @@\n \n e7dfac88157d212adb7c25c24648ed4a 789248 debug optional freetds-bin-dbgsym_1.3.17+ds-2_armhf.deb\n 3cb37cb8b37b60d5bc03722233eab43f 192860 database optional freetds-bin_1.3.17+ds-2_armhf.deb\n cf0b6f1497041544e07c2811f436184c 28856 libs optional freetds-common_1.3.17+ds-2_all.deb\n ccc52c574928949ede5196188e1d67ef 247976 devel optional freetds-dev_1.3.17+ds-2_armhf.deb\n- daf0f911b6dabe4c23d2604a31f15111 1108568 doc optional freetds-doc_1.3.17+ds-2_all.deb\n+ 114f3c104a243d15ea98568b6d29cedd 1108716 doc optional freetds-doc_1.3.17+ds-2_all.deb\n a9047a830d3151cd71405ee54fbc4232 448348 debug optional libct4-dbgsym_1.3.17+ds-2_armhf.deb\n 631a6ebd1284ae070c870c108f6b9b70 142232 libs optional libct4_1.3.17+ds-2_armhf.deb\n 15ac76670cdeeac913a3f83aac11723e 510040 debug optional libsybdb5-dbgsym_1.3.17+ds-2_armhf.deb\n 3a9b8c632a140a6256b745b690b465b8 166344 libs optional libsybdb5_1.3.17+ds-2_armhf.deb\n b76cdd68a291a127f30b353e4a896ba1 555972 debug optional tdsodbc-dbgsym_1.3.17+ds-2_armhf.deb\n 79e129bbc56e18f0833c85d666d35b54 170532 libs optional tdsodbc_1.3.17+ds-2_armhf.deb\n"}, {"source1": "freetds-doc_1.3.17+ds-2_all.deb", "source2": "freetds-doc_1.3.17+ds-2_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-01-27 00:59:14.000000 debian-binary\n--rw-r--r-- 0 0 0 34872 2023-01-27 00:59:14.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1073504 2023-01-27 00:59:14.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 34868 2023-01-27 00:59:14.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1073656 2023-01-27 00:59:14.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}, {"source1": "line order", "source2": "line order", "unified_diff": "@@ -13,177 +13,177 @@\n usr/share/doc/freetds-doc/images/callouts/9.gif\n usr/share/doc/freetds-doc/images/caution.gif\n usr/share/doc/freetds-doc/images/important.gif\n usr/share/doc/freetds-doc/images/note.gif\n usr/share/doc/freetds-doc/images/tip.gif\n usr/share/doc/freetds-doc/images/warning.gif\n usr/share/doc/freetds-doc/reference/a00008_source.html\n-usr/share/doc/freetds-doc/reference/a00017.html\n-usr/share/doc/freetds-doc/reference/a00018.dot.gz\n-usr/share/doc/freetds-doc/reference/a00020_source.html\n-usr/share/doc/freetds-doc/reference/a00026.html\n-usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00027.dot.gz\n+usr/share/doc/freetds-doc/reference/a00023_source.html\n usr/share/doc/freetds-doc/reference/a00044_source.html\n usr/share/doc/freetds-doc/reference/a00050_source.html\n-usr/share/doc/freetds-doc/reference/a00074_source.html\n usr/share/doc/freetds-doc/reference/a00080.html\n-usr/share/doc/freetds-doc/reference/a00080_a31604382d8b77257aad203f409155a29_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00080_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00080_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00080_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00080_aabd0e5f15615b5c141c525b76e746520_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00080_abac4d689e0e31e80587f89247c6395a4_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00080_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00080_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_icgraph.dot\n usr/share/doc/freetds-doc/reference/a00081.dot.gz\n-usr/share/doc/freetds-doc/reference/a00089.html\n-usr/share/doc/freetds-doc/reference/a00090.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092.html\n-usr/share/doc/freetds-doc/reference/a00092_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00093.dot.gz\n-usr/share/doc/freetds-doc/reference/a00113_source.html\n-usr/share/doc/freetds-doc/reference/a00170.html\n-usr/share/doc/freetds-doc/reference/a00170_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00170_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00171.dot.gz\n+usr/share/doc/freetds-doc/reference/a00086_source.html\n+usr/share/doc/freetds-doc/reference/a00104_source.html\n+usr/share/doc/freetds-doc/reference/a00107_source.html\n+usr/share/doc/freetds-doc/reference/a00116_source.html\n+usr/share/doc/freetds-doc/reference/a00119_source.html\n+usr/share/doc/freetds-doc/reference/a00125_source.html\n+usr/share/doc/freetds-doc/reference/a00143_source.html\n+usr/share/doc/freetds-doc/reference/a00149_source.html\n+usr/share/doc/freetds-doc/reference/a00158.html\n+usr/share/doc/freetds-doc/reference/a00159.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176.html\n+usr/share/doc/freetds-doc/reference/a00176_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00177.dot.gz\n+usr/share/doc/freetds-doc/reference/a00179.html\n+usr/share/doc/freetds-doc/reference/a00179_a31604382d8b77257aad203f409155a29_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00179_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00179_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00179_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00179_aabd0e5f15615b5c141c525b76e746520_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00179_abac4d689e0e31e80587f89247c6395a4_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00180.dot.gz\n usr/share/doc/freetds-doc/reference/a00182_source.html\n-usr/share/doc/freetds-doc/reference/a00203_source.html\n-usr/share/doc/freetds-doc/reference/a00218_source.html\n+usr/share/doc/freetds-doc/reference/a00191_source.html\n usr/share/doc/freetds-doc/reference/a00221_source.html\n-usr/share/doc/freetds-doc/reference/a00239_source.html\n+usr/share/doc/freetds-doc/reference/a00230.html\n+usr/share/doc/freetds-doc/reference/a00231.dot.gz\n+usr/share/doc/freetds-doc/reference/a00236.html\n+usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00237.dot.gz\n+usr/share/doc/freetds-doc/reference/a00263_source.html\n usr/share/doc/freetds-doc/reference/a00290_source.html\n-usr/share/doc/freetds-doc/reference/a00296_source.html\n-usr/share/doc/freetds-doc/reference/a00302_source.html\n-usr/share/doc/freetds-doc/reference/a00314_source.html\n-usr/share/doc/freetds-doc/reference/a00317_source.html\n-usr/share/doc/freetds-doc/reference/a00338_source.html\n usr/share/doc/freetds-doc/reference/a00344_source.html\n usr/share/doc/freetds-doc/reference/a00347_source.html\n usr/share/doc/freetds-doc/reference/a00350_source.html\n usr/share/doc/freetds-doc/reference/a00353_source.html\n usr/share/doc/freetds-doc/reference/a00356_source.html\n usr/share/doc/freetds-doc/reference/a00359_source.html\n usr/share/doc/freetds-doc/reference/a00362_source.html\n usr/share/doc/freetds-doc/reference/a00365_source.html\n-usr/share/doc/freetds-doc/reference/a00368.html\n-usr/share/doc/freetds-doc/reference/a00368_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a31604382d8b77257aad203f409155a29_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a3ab8874994a0776acdaff797afdb710a_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00368_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00368_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00368_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n usr/share/doc/freetds-doc/reference/a00368_source.html\n-usr/share/doc/freetds-doc/reference/a00369.dot.gz\n-usr/share/doc/freetds-doc/reference/a00370.dot\n usr/share/doc/freetds-doc/reference/a00371_source.html\n-usr/share/doc/freetds-doc/reference/a00374.html\n usr/share/doc/freetds-doc/reference/a00374_source.html\n-usr/share/doc/freetds-doc/reference/a00375.dot\n-usr/share/doc/freetds-doc/reference/a00376.dot.gz\n usr/share/doc/freetds-doc/reference/a00377_source.html\n usr/share/doc/freetds-doc/reference/a00380_source.html\n usr/share/doc/freetds-doc/reference/a00383_source.html\n usr/share/doc/freetds-doc/reference/a00386_source.html\n usr/share/doc/freetds-doc/reference/a00389_source.html\n usr/share/doc/freetds-doc/reference/a00392_source.html\n+usr/share/doc/freetds-doc/reference/a00395.html\n usr/share/doc/freetds-doc/reference/a00395_source.html\n-usr/share/doc/freetds-doc/reference/a00398_source.html\n+usr/share/doc/freetds-doc/reference/a00396.dot\n+usr/share/doc/freetds-doc/reference/a00397.dot.gz\n usr/share/doc/freetds-doc/reference/a00401_source.html\n usr/share/doc/freetds-doc/reference/a00404_source.html\n usr/share/doc/freetds-doc/reference/a00407_source.html\n usr/share/doc/freetds-doc/reference/a00410_source.html\n usr/share/doc/freetds-doc/reference/a00413_source.html\n usr/share/doc/freetds-doc/reference/a00416_source.html\n usr/share/doc/freetds-doc/reference/a00419_source.html\n usr/share/doc/freetds-doc/reference/a00422_source.html\n+usr/share/doc/freetds-doc/reference/a00425.html\n+usr/share/doc/freetds-doc/reference/a00425_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a31604382d8b77257aad203f409155a29_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a3ab8874994a0776acdaff797afdb710a_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00425_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00425_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00425_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n usr/share/doc/freetds-doc/reference/a00425_source.html\n+usr/share/doc/freetds-doc/reference/a00426.dot.gz\n+usr/share/doc/freetds-doc/reference/a00427.dot\n usr/share/doc/freetds-doc/reference/a00428_source.html\n usr/share/doc/freetds-doc/reference/a00431_source.html\n usr/share/doc/freetds-doc/reference/a00434_source.html\n usr/share/doc/freetds-doc/reference/a00437_source.html\n usr/share/doc/freetds-doc/reference/a00440_source.html\n+usr/share/doc/freetds-doc/reference/a00443_source.html\n usr/share/doc/freetds-doc/reference/a00446_source.html\n usr/share/doc/freetds-doc/reference/a00449_source.html\n usr/share/doc/freetds-doc/reference/a00452_source.html\n usr/share/doc/freetds-doc/reference/a00455_source.html\n usr/share/doc/freetds-doc/reference/a00458_source.html\n usr/share/doc/freetds-doc/reference/a00461_source.html\n usr/share/doc/freetds-doc/reference/a00464_source.html\n usr/share/doc/freetds-doc/reference/a00467_source.html\n usr/share/doc/freetds-doc/reference/a00470_source.html\n usr/share/doc/freetds-doc/reference/a00473_source.html\n usr/share/doc/freetds-doc/reference/a00476_source.html\n-usr/share/doc/freetds-doc/reference/a00479.html\n-usr/share/doc/freetds-doc/reference/a00479_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00479_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz\n-usr/share/doc/freetds-doc/reference/a00479_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz\n usr/share/doc/freetds-doc/reference/a00479_source.html\n-usr/share/doc/freetds-doc/reference/a00480.dot\n-usr/share/doc/freetds-doc/reference/a00481.dot\n usr/share/doc/freetds-doc/reference/a00482_source.html\n usr/share/doc/freetds-doc/reference/a00485_source.html\n usr/share/doc/freetds-doc/reference/a00488_source.html\n+usr/share/doc/freetds-doc/reference/a00491.html\n+usr/share/doc/freetds-doc/reference/a00491_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00491_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz\n+usr/share/doc/freetds-doc/reference/a00491_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz\n usr/share/doc/freetds-doc/reference/a00491_source.html\n+usr/share/doc/freetds-doc/reference/a00492.dot\n+usr/share/doc/freetds-doc/reference/a00493.dot\n usr/share/doc/freetds-doc/reference/a00494_source.html\n usr/share/doc/freetds-doc/reference/a00497_source.html\n usr/share/doc/freetds-doc/reference/a00500_source.html\n usr/share/doc/freetds-doc/reference/a00503_source.html\n-usr/share/doc/freetds-doc/reference/a00509_source.html\n+usr/share/doc/freetds-doc/reference/a00521_source.html\n usr/share/doc/freetds-doc/reference/a00524.html\n usr/share/doc/freetds-doc/reference/a00525.html\n usr/share/doc/freetds-doc/reference/a00526.dot\n usr/share/doc/freetds-doc/reference/a00526.html\n usr/share/doc/freetds-doc/reference/a00527.dot\n usr/share/doc/freetds-doc/reference/a00527.html\n usr/share/doc/freetds-doc/reference/a00527_ga0b5ca7723f370dac9fe1f6db35e331a0_cgraph.dot\n@@ -1079,19 +1079,19 @@\n usr/share/doc/freetds-doc/reference/a01323.html\n usr/share/doc/freetds-doc/reference/a01326.html\n usr/share/doc/freetds-doc/reference/a01327.html\n usr/share/doc/freetds-doc/reference/a01330.html\n usr/share/doc/freetds-doc/reference/a01331.html\n usr/share/doc/freetds-doc/reference/a01332_source.html\n usr/share/doc/freetds-doc/reference/a01335_source.html\n-usr/share/doc/freetds-doc/reference/a01353.html\n-usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot\n-usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a01353_ad53f508d8f2177a898f8022736834afd_icgraph.dot\n-usr/share/doc/freetds-doc/reference/a01354.dot.gz\n+usr/share/doc/freetds-doc/reference/a01344.html\n+usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot\n+usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a01344_ad53f508d8f2177a898f8022736834afd_icgraph.dot\n+usr/share/doc/freetds-doc/reference/a01345.dot.gz\n usr/share/doc/freetds-doc/reference/a01365.html\n usr/share/doc/freetds-doc/reference/a01366.dot.gz\n usr/share/doc/freetds-doc/reference/a01368.html\n usr/share/doc/freetds-doc/reference/a01369.dot.gz\n usr/share/doc/freetds-doc/reference/all_0.js\n usr/share/doc/freetds-doc/reference/all_1.js\n usr/share/doc/freetds-doc/reference/all_10.js\n"}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -20,178 +20,178 @@\n -rw-r--r-- 0 root (0) root (0) 927 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/callouts/9.gif\n -rw-r--r-- 0 root (0) root (0) 1039 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/caution.gif\n -rw-r--r-- 0 root (0) root (0) 1081 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/important.gif\n -rw-r--r-- 0 root (0) root (0) 1070 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/note.gif\n -rw-r--r-- 0 root (0) root (0) 1029 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/tip.gif\n -rw-r--r-- 0 root (0) root (0) 1052 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/images/warning.gif\n drwxr-xr-x 0 root (0) root (0) 0 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/\n--rw-r--r-- 0 root (0) root (0) 54357 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00008_source.html\n--rw-r--r-- 0 root (0) root (0) 12018 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00017.html\n--rw-r--r-- 0 root (0) root (0) 1240 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00018.dot.gz\n--rw-r--r-- 0 root (0) root (0) 41464 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00020_source.html\n--rw-r--r-- 0 root (0) root (0) 26262 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026.html\n--rw-r--r-- 0 root (0) root (0) 1112 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1385 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1376 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2842 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 824 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3229 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 781 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2061 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 817 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2085 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1463 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3294 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1153 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00027.dot.gz\n--rw-r--r-- 0 root (0) root (0) 58866 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00044_source.html\n--rw-r--r-- 0 root (0) root (0) 16065 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00050_source.html\n--rw-r--r-- 0 root (0) root (0) 172116 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00074_source.html\n--rw-r--r-- 0 root (0) root (0) 44836 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080.html\n--rw-r--r-- 0 root (0) root (0) 797 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_a31604382d8b77257aad203f409155a29_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1654 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_aabd0e5f15615b5c141c525b76e746520_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3895 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_abac4d689e0e31e80587f89247c6395a4_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1394 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00081.dot.gz\n--rw-r--r-- 0 root (0) root (0) 42169 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00089.html\n--rw-r--r-- 0 root (0) root (0) 1345 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00090.dot.gz\n--rw-r--r-- 0 root (0) root (0) 51578 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092.html\n--rw-r--r-- 0 root (0) root (0) 1407 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1787 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2518 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2476 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1450 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1380 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3079 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 4472 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 2131 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1355 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2837 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1755 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1150 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 740 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1099 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 4805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2944 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1712 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1240 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00093.dot.gz\n--rw-r--r-- 0 root (0) root (0) 12254 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00113_source.html\n--rw-r--r-- 0 root (0) root (0) 135332 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00170.html\n--rw-r--r-- 0 root (0) root (0) 1303 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00170_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 3367 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00170_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1344 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1980 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1405 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00171.dot.gz\n--rw-r--r-- 0 root (0) root (0) 78803 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00182_source.html\n--rw-r--r-- 0 root (0) root (0) 181115 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00203_source.html\n--rw-r--r-- 0 root (0) root (0) 29227 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00218_source.html\n--rw-r--r-- 0 root (0) root (0) 6935 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00221_source.html\n--rw-r--r-- 0 root (0) root (0) 7711 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00239_source.html\n--rw-r--r-- 0 root (0) root (0) 8278 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00290_source.html\n--rw-r--r-- 0 root (0) root (0) 8148 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00296_source.html\n--rw-r--r-- 0 root (0) root (0) 7239 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00302_source.html\n--rw-r--r-- 0 root (0) root (0) 6983 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00314_source.html\n--rw-r--r-- 0 root (0) root (0) 13132 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00317_source.html\n--rw-r--r-- 0 root (0) root (0) 32805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00338_source.html\n--rw-r--r-- 0 root (0) root (0) 114828 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00344_source.html\n--rw-r--r-- 0 root (0) root (0) 13881 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00347_source.html\n--rw-r--r-- 0 root (0) root (0) 30966 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00350_source.html\n--rw-r--r-- 0 root (0) root (0) 8030 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00353_source.html\n--rw-r--r-- 0 root (0) root (0) 12136 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00356_source.html\n--rw-r--r-- 0 root (0) root (0) 101404 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00359_source.html\n+-rw-r--r-- 0 root (0) root (0) 29227 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00008_source.html\n+-rw-r--r-- 0 root (0) root (0) 6935 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00023_source.html\n+-rw-r--r-- 0 root (0) root (0) 181115 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00044_source.html\n+-rw-r--r-- 0 root (0) root (0) 7711 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00050_source.html\n+-rw-r--r-- 0 root (0) root (0) 135332 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080.html\n+-rw-r--r-- 0 root (0) root (0) 1303 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 3367 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1344 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1980 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1404 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00081.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 78803 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00086_source.html\n+-rw-r--r-- 0 root (0) root (0) 7239 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00104_source.html\n+-rw-r--r-- 0 root (0) root (0) 8148 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00107_source.html\n+-rw-r--r-- 0 root (0) root (0) 8278 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00116_source.html\n+-rw-r--r-- 0 root (0) root (0) 6983 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00119_source.html\n+-rw-r--r-- 0 root (0) root (0) 13132 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00125_source.html\n+-rw-r--r-- 0 root (0) root (0) 16065 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00143_source.html\n+-rw-r--r-- 0 root (0) root (0) 41464 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00149_source.html\n+-rw-r--r-- 0 root (0) root (0) 12018 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00158.html\n+-rw-r--r-- 0 root (0) root (0) 1236 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00159.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 51578 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176.html\n+-rw-r--r-- 0 root (0) root (0) 1407 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1787 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2518 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2476 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1451 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1380 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3079 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 4473 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 2131 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1355 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2837 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1755 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1150 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 740 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1099 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 4805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2944 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1712 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1234 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00177.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 44836 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179.html\n+-rw-r--r-- 0 root (0) root (0) 797 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_a31604382d8b77257aad203f409155a29_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1657 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_a84e17808683ba2dd956e811a42e23176_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_aabd0e5f15615b5c141c525b76e746520_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3895 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00179_abac4d689e0e31e80587f89247c6395a4_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1393 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00180.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 58866 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00182_source.html\n+-rw-r--r-- 0 root (0) root (0) 54357 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00191_source.html\n+-rw-r--r-- 0 root (0) root (0) 172116 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00221_source.html\n+-rw-r--r-- 0 root (0) root (0) 42169 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00230.html\n+-rw-r--r-- 0 root (0) root (0) 1340 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00231.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 26262 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236.html\n+-rw-r--r-- 0 root (0) root (0) 1112 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1385 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1376 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2842 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a9d8eb43a81ff58ab423dce0ce95b9564_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 824 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3229 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 781 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2061 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 817 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2085 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1463 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3294 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1150 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00237.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 12254 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00263_source.html\n+-rw-r--r-- 0 root (0) root (0) 32805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00290_source.html\n+-rw-r--r-- 0 root (0) root (0) 10265 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00344_source.html\n+-rw-r--r-- 0 root (0) root (0) 37923 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00347_source.html\n+-rw-r--r-- 0 root (0) root (0) 25971 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00350_source.html\n+-rw-r--r-- 0 root (0) root (0) 11431 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00353_source.html\n+-rw-r--r-- 0 root (0) root (0) 45871 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00356_source.html\n+-rw-r--r-- 0 root (0) root (0) 3993 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00359_source.html\n -rw-r--r-- 0 root (0) root (0) 7411 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00362_source.html\n--rw-r--r-- 0 root (0) root (0) 4004 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00365_source.html\n--rw-r--r-- 0 root (0) root (0) 334341 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368.html\n--rw-r--r-- 0 root (0) root (0) 776 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 797 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a31604382d8b77257aad203f409155a29_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1074 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a3ab8874994a0776acdaff797afdb710a_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 762 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1450 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1380 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3079 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1355 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 4472 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 2131 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 755 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1150 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1156 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 740 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1099 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 4805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2944 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1712 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 380459 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_source.html\n--rw-r--r-- 0 root (0) root (0) 996 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00369.dot.gz\n--rw-r--r-- 0 root (0) root (0) 3930 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00370.dot\n--rw-r--r-- 0 root (0) root (0) 17719 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00371_source.html\n--rw-r--r-- 0 root (0) root (0) 12748 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00374.html\n--rw-r--r-- 0 root (0) root (0) 16060 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00374_source.html\n--rw-r--r-- 0 root (0) root (0) 1225 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00375.dot\n--rw-r--r-- 0 root (0) root (0) 953 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00376.dot.gz\n--rw-r--r-- 0 root (0) root (0) 14284 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00377_source.html\n--rw-r--r-- 0 root (0) root (0) 45871 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00380_source.html\n--rw-r--r-- 0 root (0) root (0) 27813 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00383_source.html\n--rw-r--r-- 0 root (0) root (0) 130532 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00386_source.html\n--rw-r--r-- 0 root (0) root (0) 17514 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00389_source.html\n--rw-r--r-- 0 root (0) root (0) 323366 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00392_source.html\n--rw-r--r-- 0 root (0) root (0) 9745 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00395_source.html\n--rw-r--r-- 0 root (0) root (0) 27932 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00398_source.html\n--rw-r--r-- 0 root (0) root (0) 8703 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00401_source.html\n--rw-r--r-- 0 root (0) root (0) 10767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00404_source.html\n--rw-r--r-- 0 root (0) root (0) 11256 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00407_source.html\n--rw-r--r-- 0 root (0) root (0) 24847 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00410_source.html\n--rw-r--r-- 0 root (0) root (0) 10495 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00413_source.html\n--rw-r--r-- 0 root (0) root (0) 10520 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00416_source.html\n--rw-r--r-- 0 root (0) root (0) 8358 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00419_source.html\n--rw-r--r-- 0 root (0) root (0) 21528 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00422_source.html\n--rw-r--r-- 0 root (0) root (0) 10545 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_source.html\n--rw-r--r-- 0 root (0) root (0) 23116 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00428_source.html\n--rw-r--r-- 0 root (0) root (0) 66335 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00431_source.html\n--rw-r--r-- 0 root (0) root (0) 5014 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00434_source.html\n--rw-r--r-- 0 root (0) root (0) 17299 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00437_source.html\n--rw-r--r-- 0 root (0) root (0) 85841 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00440_source.html\n--rw-r--r-- 0 root (0) root (0) 35120 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00446_source.html\n--rw-r--r-- 0 root (0) root (0) 22592 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00449_source.html\n--rw-r--r-- 0 root (0) root (0) 15396 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00452_source.html\n--rw-r--r-- 0 root (0) root (0) 44255 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00455_source.html\n--rw-r--r-- 0 root (0) root (0) 3993 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00458_source.html\n--rw-r--r-- 0 root (0) root (0) 8367 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00461_source.html\n--rw-r--r-- 0 root (0) root (0) 24558 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00464_source.html\n--rw-r--r-- 0 root (0) root (0) 29728 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00467_source.html\n--rw-r--r-- 0 root (0) root (0) 10265 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00470_source.html\n--rw-r--r-- 0 root (0) root (0) 37923 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00473_source.html\n--rw-r--r-- 0 root (0) root (0) 25971 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00476_source.html\n--rw-r--r-- 0 root (0) root (0) 442600 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479.html\n--rw-r--r-- 0 root (0) root (0) 1303 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1563 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1294 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 345084 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479_source.html\n--rw-r--r-- 0 root (0) root (0) 914 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00480.dot\n--rw-r--r-- 0 root (0) root (0) 2062 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00481.dot\n--rw-r--r-- 0 root (0) root (0) 61527 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00482_source.html\n--rw-r--r-- 0 root (0) root (0) 52328 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00485_source.html\n--rw-r--r-- 0 root (0) root (0) 15505 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00488_source.html\n--rw-r--r-- 0 root (0) root (0) 120426 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491_source.html\n--rw-r--r-- 0 root (0) root (0) 11431 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00494_source.html\n+-rw-r--r-- 0 root (0) root (0) 35120 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00365_source.html\n+-rw-r--r-- 0 root (0) root (0) 44255 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00368_source.html\n+-rw-r--r-- 0 root (0) root (0) 9745 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00371_source.html\n+-rw-r--r-- 0 root (0) root (0) 27932 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00374_source.html\n+-rw-r--r-- 0 root (0) root (0) 24558 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00377_source.html\n+-rw-r--r-- 0 root (0) root (0) 4004 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00380_source.html\n+-rw-r--r-- 0 root (0) root (0) 17719 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00383_source.html\n+-rw-r--r-- 0 root (0) root (0) 22592 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00386_source.html\n+-rw-r--r-- 0 root (0) root (0) 5014 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00389_source.html\n+-rw-r--r-- 0 root (0) root (0) 14284 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00392_source.html\n+-rw-r--r-- 0 root (0) root (0) 12748 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00395.html\n+-rw-r--r-- 0 root (0) root (0) 16060 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00395_source.html\n+-rw-r--r-- 0 root (0) root (0) 1225 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00396.dot\n+-rw-r--r-- 0 root (0) root (0) 950 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00397.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 23116 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00401_source.html\n+-rw-r--r-- 0 root (0) root (0) 101404 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00404_source.html\n+-rw-r--r-- 0 root (0) root (0) 323366 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00407_source.html\n+-rw-r--r-- 0 root (0) root (0) 17514 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00410_source.html\n+-rw-r--r-- 0 root (0) root (0) 10545 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00413_source.html\n+-rw-r--r-- 0 root (0) root (0) 17299 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00416_source.html\n+-rw-r--r-- 0 root (0) root (0) 85841 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00419_source.html\n+-rw-r--r-- 0 root (0) root (0) 27813 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00422_source.html\n+-rw-r--r-- 0 root (0) root (0) 334341 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425.html\n+-rw-r--r-- 0 root (0) root (0) 776 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 797 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a31604382d8b77257aad203f409155a29_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1074 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a3ab8874994a0776acdaff797afdb710a_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 762 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1451 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a5eec23828b0610c58de248c4edb53879_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1380 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a5eec23828b0610c58de248c4edb53879_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3079 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 3542 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1355 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 4473 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a8208eef2a3974ae1f0cf3c8c8ab011ce_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 2131 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 755 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1150 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1156 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 740 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1099 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 4805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ac6610c72bd31bad5378f760fa9b12d66_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 750 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1381 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 2944 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1712 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 380459 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00425_source.html\n+-rw-r--r-- 0 root (0) root (0) 989 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00426.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 3930 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00427.dot\n+-rw-r--r-- 0 root (0) root (0) 130532 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00428_source.html\n+-rw-r--r-- 0 root (0) root (0) 15396 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00431_source.html\n+-rw-r--r-- 0 root (0) root (0) 8367 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00434_source.html\n+-rw-r--r-- 0 root (0) root (0) 66335 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00437_source.html\n+-rw-r--r-- 0 root (0) root (0) 12136 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00440_source.html\n+-rw-r--r-- 0 root (0) root (0) 10520 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00443_source.html\n+-rw-r--r-- 0 root (0) root (0) 24847 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00446_source.html\n+-rw-r--r-- 0 root (0) root (0) 8358 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00449_source.html\n+-rw-r--r-- 0 root (0) root (0) 8703 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00452_source.html\n+-rw-r--r-- 0 root (0) root (0) 21528 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00455_source.html\n+-rw-r--r-- 0 root (0) root (0) 11256 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00458_source.html\n+-rw-r--r-- 0 root (0) root (0) 10495 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00461_source.html\n+-rw-r--r-- 0 root (0) root (0) 10767 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00464_source.html\n+-rw-r--r-- 0 root (0) root (0) 8030 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00467_source.html\n+-rw-r--r-- 0 root (0) root (0) 29728 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00470_source.html\n+-rw-r--r-- 0 root (0) root (0) 120426 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00473_source.html\n+-rw-r--r-- 0 root (0) root (0) 15505 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00476_source.html\n+-rw-r--r-- 0 root (0) root (0) 30966 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00479_source.html\n+-rw-r--r-- 0 root (0) root (0) 13881 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00482_source.html\n+-rw-r--r-- 0 root (0) root (0) 114828 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00485_source.html\n+-rw-r--r-- 0 root (0) root (0) 52328 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00488_source.html\n+-rw-r--r-- 0 root (0) root (0) 442600 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491.html\n+-rw-r--r-- 0 root (0) root (0) 1303 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1563 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1295 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491_af8ada101cd189eff87b3533cbeaaa23b_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 345084 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00491_source.html\n+-rw-r--r-- 0 root (0) root (0) 914 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00492.dot\n+-rw-r--r-- 0 root (0) root (0) 2062 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00493.dot\n+-rw-r--r-- 0 root (0) root (0) 61527 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00494_source.html\n -rw-r--r-- 0 root (0) root (0) 40525 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00497_source.html\n -rw-r--r-- 0 root (0) root (0) 9800 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00500_source.html\n--rw-r--r-- 0 root (0) root (0) 3541 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00503_source.html\n--rw-r--r-- 0 root (0) root (0) 13939 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00509_source.html\n+-rw-r--r-- 0 root (0) root (0) 13939 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00503_source.html\n+-rw-r--r-- 0 root (0) root (0) 3541 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00521_source.html\n -rw-r--r-- 0 root (0) root (0) 8398 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00524.html\n -rw-r--r-- 0 root (0) root (0) 3386 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00525.html\n -rw-r--r-- 0 root (0) root (0) 2292 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00526.dot\n -rw-r--r-- 0 root (0) root (0) 6893 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00526.html\n -rw-r--r-- 0 root (0) root (0) 702 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527.dot\n -rw-r--r-- 0 root (0) root (0) 284834 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527.html\n -rw-r--r-- 0 root (0) root (0) 1737 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga0b5ca7723f370dac9fe1f6db35e331a0_cgraph.dot\n@@ -240,15 +240,15 @@\n -rw-r--r-- 0 root (0) root (0) 2383 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga8b00d5cdcaa20cba13fa2e03d52a443e_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1692 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga8b00d5cdcaa20cba13fa2e03d52a443e_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 744 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga947837a5c8fd99898c043435945b668c_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2537 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga9804fc70ae6ed35c92cd75d410dad570_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 793 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga9a35c8d3cd0e35c10555baf8f6a01e93_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1369 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga9d660d278f3f58871b4086c0e175f4c6_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1078 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_ga9dfc2ee533e5e48a7aa8ca22f8d9ed79_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1699 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1700 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1111 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaa85171e020dc606f2bd3395ad1d3ab4f_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1082 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaaa4839a9c88e5b90f33bd2407fcbc43e_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 3453 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaae889abeb145ec41f7361aa8f597fe46_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 753 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaae889abeb145ec41f7361aa8f597fe46_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1085 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1452 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1720 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gab33d2f4fd44f50e55b6c71902db4fdae_cgraph.dot\n@@ -273,15 +273,15 @@\n -rw-r--r-- 0 root (0) root (0) 1101 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaef740b394b44eb33925c2718f7b30d69_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1416 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaef740b394b44eb33925c2718f7b30d69_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1385 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf130b12e9e58b1bfd4a6685e33f5b3cd_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 4826 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf1879b85e8238c015b9648d077665285_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1339 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf1879b85e8238c015b9648d077665285_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 808 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf1c00d83dfa88dc99a3fb449c49660ea_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1419 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf2ca0e63f800b3839684c894ff651dd4_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1262 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1261 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2362 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00527_gafefd17e15b22adda84366c817178dd7d_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 712 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528.dot\n -rw-r--r-- 0 root (0) root (0) 36209 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528.html\n -rw-r--r-- 0 root (0) root (0) 1378 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528_ga5b4374c13c7a83cd4345b0bfa3e787bd_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2888 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528_ga61a32bcbc7b9d2522f6c85e91919f2c4_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2897 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528_ga63dc384b5c0ee3086a171337e8c78317_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2826 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00528_gab705bf94be535e9d8fc4edc0f48c98b0_cgraph.dot.gz\n@@ -299,23 +299,23 @@\n -rw-r--r-- 0 root (0) root (0) 1406 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_ga6498235e4ef8e41ea43b01494b28998d_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2036 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_ga6cf03708baaf02eb016b9ee77160d879_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2332 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2356 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_ga8b85f79f53a62ac7a728fe626d609b65_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 3312 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_ga963c5e38bca7668afc57f5cc123d10fb_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1203 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 3776 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 1641 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1643 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 732 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530.dot\n -rw-r--r-- 0 root (0) root (0) 38910 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530.html\n -rw-r--r-- 0 root (0) root (0) 1504 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga0f8def4cad04c5c1e27c2b653d482dd8_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 808 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga0f8def4cad04c5c1e27c2b653d482dd8_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1221 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1222 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1015 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga1b57d952a9d72f375c3296124affa908_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1210 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga4f936fa1cb8e4373bf7b7f8a6ab96bc7_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2364 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 2363 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 709 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_ga7370f1223f13510d6b33e98f2de09fb5_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 690 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gaa134c1c3ccc4326e693adb8357272f1d_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1393 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gaa134c1c3ccc4326e693adb8357272f1d_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 710 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gab672799007e720bf918caa1b33c989ea_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2473 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gacf69ac4cbe8e3c3e6ea665e31e5e85b8_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 4812 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gae67546338cb9542a4902aa914f57f314_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 711 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00530_gae67546338cb9542a4902aa914f57f314_icgraph.dot\n@@ -380,22 +380,22 @@\n -rw-r--r-- 0 root (0) root (0) 2430 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_ga53a19b5da172ff364d01e8f04b97015a_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1783 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_ga80487b313213f60d8be71a50a002bb2c_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2096 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_ga883855e6e3793de6684b21db39c756c4_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2122 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_ga8c9652e8b1f3e56a3289fd71b12cee1d_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1061 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_ga933f87cca76156648e91f472650b98f3_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 735 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_gace939c1fa676d172cb0cae94848b7fac_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1093 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_gace939c1fa676d172cb0cae94848b7fac_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1715 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1714 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1064 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00539_gae8e173a9f8d2e3f152ada9f48d3d5f28_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 673 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540.dot\n -rw-r--r-- 0 root (0) root (0) 44770 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540.html\n -rw-r--r-- 0 root (0) root (0) 795 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga22c61ca41f64c7fe368659ed1eebdb56_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1569 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga22c61ca41f64c7fe368659ed1eebdb56_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 805 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga3380140fc6eb9f2090c430f40e846876_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1471 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1470 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1227 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga3a7a7b4d6ed344127e164dd0b443d790_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 3739 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga3a7a7b4d6ed344127e164dd0b443d790_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1192 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga87db49044919f1bc84c0ff5e9ab00304_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2668 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1343 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1582 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00540_gac01180352db7052e786463e3b07a8a9e_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 663 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00541.dot\n@@ -432,15 +432,15 @@\n -rw-r--r-- 0 root (0) root (0) 1382 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1094 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga2d0a06c1a30dd2470dc7a788de21b080_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1499 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga34fb1084682cc31fe02a4a7946955a5a_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2020 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga3e7b4793c6f799fbc6c174f673bb5b32_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1248 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1282 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 786 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga50d62edeb2a432e2dc668263f3f958ff_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1470 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1471 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2126 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga530538c4c975524cf0b771a550fc94a3_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 792 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga57bd0fabe5bcdeb3ef091259b3a7c1fc_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2505 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1674 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1874 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga5f071b94ad7889690762dc85646c74ab_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 758 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga5f071b94ad7889690762dc85646c74ab_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1720 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz\n@@ -477,26 +477,26 @@\n -rw-r--r-- 0 root (0) root (0) 1529 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gad5b76c688898b86984d09628f030d01c_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1555 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1800 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gad695defcbf663b0023851a198206a772_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2351 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gad695defcbf663b0023851a198206a772_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 739 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gada27f4cfce925240ad33b71b63ca692d_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1864 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 3448 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gae603aed795a4c5bb26ab159a11256996_cgraph.dot.gz\n--rw-r--r-- 0 root (0) root (0) 2471 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 2472 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 4438 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gaf0da49585d39e99780a004ee2ca23479_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1364 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2033 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gaf573d8d4d2660c8c27770573fca05ff5_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1171 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1056 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00542_gafd74652c4722ddce4d642cc4209449d4_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 682 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543.dot\n -rw-r--r-- 0 root (0) root (0) 82630 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543.html\n--rw-r--r-- 0 root (0) root (0) 1228 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1229 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1672 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga017c427e9599c031be5c555cb32abe2c_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1063 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga0cb72d3f6943795c39db1fa692be0a58_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 2684 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 2682 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 3248 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga1fcaf8d488cc1390f106ce3ad0bf37b4_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2299 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga1fcaf8d488cc1390f106ce3ad0bf37b4_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1390 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga221e98a9c8be96ec6c8547891e1b53af_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2284 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga221e98a9c8be96ec6c8547891e1b53af_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1823 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga2660b893ae2bf36fe1b63b354e748bad_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1352 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga2734407109c834c5dda7ff8a45c71230_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1445 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00543_ga2a7429ff031f77023d1bf31339a266db_icgraph.dot\n@@ -529,15 +529,15 @@\n -rw-r--r-- 0 root (0) root (0) 663 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544.dot\n -rw-r--r-- 0 root (0) root (0) 113810 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544.html\n -rw-r--r-- 0 root (0) root (0) 1627 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga07cee55fd522cca16fb59b7a8f0b1376_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1619 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 3821 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga21e9de33de9c8c492aa2f96c823596bb_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1279 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga22c7f413d43fc0d511e122a3de389166_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2726 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga22c7f413d43fc0d511e122a3de389166_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1547 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1550 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2282 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga315d875d90c64d12d61fc9e33b4dee96_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2296 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga315d875d90c64d12d61fc9e33b4dee96_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 4677 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga39453d084f3f780ac4602d4abf2839f7_cgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1572 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 3588 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga3e1b4df4410a86a563a8c155e7799720_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2233 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga3e1b4df4410a86a563a8c155e7799720_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 1640 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_ga416cf119c1d4a0fca27dc5b50c261358_cgraph.dot.gz\n@@ -602,20 +602,20 @@\n -rw-r--r-- 0 root (0) root (0) 726 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_gaf233e79967f82f4e0dd4d11524917a34_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 2554 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_gafb26aba5d935e40b87b95e21a5185848_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 4029 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00544_gafb26aba5d935e40b87b95e21a5185848_icgraph.dot\n -rw-r--r-- 0 root (0) root (0) 672 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545.dot\n -rw-r--r-- 0 root (0) root (0) 30525 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545.html\n -rw-r--r-- 0 root (0) root (0) 1491 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga0cd7863ba7c2d2da4a193234472a3d14_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 765 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1172 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1173 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2456 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1476 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_ga6aa14b8b717b51afcfb65bd55143689d_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1060 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_gab78cc59b110df2817b00f9bed74c6ff1_cgraph.dot\n -rw-r--r-- 0 root (0) root (0) 746 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_gad96366d9fa93bfc283cef1299fbe97ab_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 3066 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 3067 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 1866 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00545_gae092e53680d954bcf4f19334987d43c7_icgraph.dot.gz\n -rw-r--r-- 0 root (0) root (0) 2614 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00546.dot\n -rw-r--r-- 0 root (0) root (0) 7601 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00546.html\n -rw-r--r-- 0 root (0) root (0) 5422 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00547.html\n -rw-r--r-- 0 root (0) root (0) 7724 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00550.html\n -rw-r--r-- 0 root (0) root (0) 3793 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00551.html\n -rw-r--r-- 0 root (0) root (0) 4725 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a00554.html\n@@ -1087,23 +1087,23 @@\n -rw-r--r-- 0 root (0) root (0) 6298 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01323.html\n -rw-r--r-- 0 root (0) root (0) 8589 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01326.html\n -rw-r--r-- 0 root (0) root (0) 6254 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01327.html\n -rw-r--r-- 0 root (0) root (0) 8617 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01330.html\n -rw-r--r-- 0 root (0) root (0) 13797 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01331.html\n -rw-r--r-- 0 root (0) root (0) 3688 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01332_source.html\n -rw-r--r-- 0 root (0) root (0) 3674 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01335_source.html\n--rw-r--r-- 0 root (0) root (0) 34728 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01353.html\n--rw-r--r-- 0 root (0) root (0) 1516 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1104 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1050 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01353_ad53f508d8f2177a898f8022736834afd_icgraph.dot\n--rw-r--r-- 0 root (0) root (0) 1416 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01354.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 34728 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01344.html\n+-rw-r--r-- 0 root (0) root (0) 1516 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1104 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1050 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01344_ad53f508d8f2177a898f8022736834afd_icgraph.dot\n+-rw-r--r-- 0 root (0) root (0) 1417 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01345.dot.gz\n -rw-r--r-- 0 root (0) root (0) 18081 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01365.html\n--rw-r--r-- 0 root (0) root (0) 1245 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01366.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1240 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01366.dot.gz\n -rw-r--r-- 0 root (0) root (0) 24413 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01368.html\n--rw-r--r-- 0 root (0) root (0) 1230 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01369.dot.gz\n+-rw-r--r-- 0 root (0) root (0) 1227 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/a01369.dot.gz\n -rw-r--r-- 0 root (0) root (0) 4541 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_0.js\n -rw-r--r-- 0 root (0) root (0) 898 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_1.js\n -rw-r--r-- 0 root (0) root (0) 1785 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_10.js\n -rw-r--r-- 0 root (0) root (0) 2973 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_11.js\n -rw-r--r-- 0 root (0) root (0) 62107 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_12.js\n -rw-r--r-- 0 root (0) root (0) 450 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_13.js\n -rw-r--r-- 0 root (0) root (0) 422 2023-01-27 00:59:14.000000 ./usr/share/doc/freetds-doc/reference/all_14.js\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00008_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00008_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/tds/sec_negotiate_gnutls.h Source File\n+FreeTDS API: src/odbc/error_export.h Source File\n \n \n \n \n \n \n \n@@ -70,383 +70,224 @@\n \n \n \n \n \n
\n \n+
  • src
  • odbc
  • \n
    \n \n
    \n-
    sec_negotiate_gnutls.h
    \n+
    error_export.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2015 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#include <gnutls/gnutls.h>
    \n-
    21#include <gnutls/crypto.h>
    \n-
    22#ifdef HAVE_GNUTLS_ABSTRACT_H
    \n-
    23# include <gnutls/abstract.h>
    \n-
    24#endif
    \n-
    25
    \n-
    26#if !defined(HAVE_NETTLE) || !defined(HAVE_GMP) || !defined(HAVE_GNUTLS_RND)
    \n-
    27# include <gcrypt.h>
    \n-
    28#endif
    \n-
    29
    \n-
    30#ifndef HAVE_NETTLE
    \n-
    31# include <libtasn1.h>
    \n-
    32#endif
    \n-
    33
    \n-
    34#ifdef HAVE_NETTLE
    \n-
    35# include <nettle/asn1.h>
    \n-
    36# include <nettle/rsa.h>
    \n-
    37# include <nettle/bignum.h>
    \n-
    38#endif
    \n-
    39
    \n-
    51#ifndef HAVE_GNUTLS
    \n-
    52#error HAVE_GNUTLS not defines, this file should not be included
    \n-
    53#endif
    \n-
    54
    \n-
    55/* emulate GMP if not present */
    \n-
    56#ifndef HAVE_GMP
    \n-
    57#define HAVE_GMP 1
    \n-
    58
    \n-
    \n-
    59typedef struct {
    \n-
    60 gcry_mpi_t num;
    \n-
    61} mpz_t[1];
    \n-
    \n-
    62
    \n-
    63#define mpz_powm(w,n,e,m) \\
    \n-
    64 gcry_mpi_powm((w)->num, (n)->num, (e)->num, (m)->num);
    \n-
    65#define mpz_init(n) do { (n)->num = NULL; } while(0)
    \n-
    66#define mpz_clear(n) gcry_mpi_release((n)->num)
    \n-
    67
    \n-
    68#endif
    \n-
    69
    \n-
    70
    \n-
    71/* emulate Nettle is not present */
    \n-
    72#ifndef HAVE_NETTLE
    \n-
    73#define HAVE_NETTLE 1
    \n+
    1#undef tdsdump_log
    \n+
    2
    \n+
    3#ifdef ENABLE_ODBC_WIDE
    \n+
    4static SQLRETURN _SQLGetDiagRec(SQLSMALLINT handleType,
    \n+
    5 SQLHANDLE handle,
    \n+
    6 SQLSMALLINT numRecord,
    \n+
    7 ODBC_CHAR * szSqlStat,
    \n+
    8 SQLINTEGER * pfNativeError,
    \n+
    9 ODBC_CHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg, int wide);
    \n+
    10
    \n+
    11SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagRecW(
    \n+
    12 SQLSMALLINT handleType,
    \n+
    13 SQLHANDLE handle,
    \n+
    14 SQLSMALLINT numRecord,
    \n+
    15 SQLWCHAR * szSqlStat,
    \n+
    16 SQLINTEGER * pfNativeError,
    \n+
    17 SQLWCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg)
    \n+
    18{
    \n+
    19 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDiagRecW(%d, %p, %d, %p, %p, %p, %d, %p)\\n",
    \n+
    20 (int) handleType,
    \n+
    21 handle,
    \n+
    22 (int) numRecord,
    \n+
    23 szSqlStat,
    \n+
    24 pfNativeError,
    \n+
    25 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);
    \n+
    26 return _SQLGetDiagRec(handleType,
    \n+
    27 handle,
    \n+
    28 numRecord,
    \n+
    29 (ODBC_CHAR*) szSqlStat,
    \n+
    30 pfNativeError,
    \n+
    31 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 1);
    \n+
    32}
    \n+
    33#endif
    \n+
    34
    \n+
    35SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagRec(
    \n+
    36 SQLSMALLINT handleType,
    \n+
    37 SQLHANDLE handle,
    \n+
    38 SQLSMALLINT numRecord,
    \n+
    39 SQLCHAR * szSqlStat,
    \n+
    40 SQLINTEGER * pfNativeError,
    \n+
    41 SQLCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg)
    \n+
    42{
    \n+
    43 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDiagRec(%d, %p, %d, %p, %p, %p, %d, %p)\\n",
    \n+
    44 (int) handleType,
    \n+
    45 handle,
    \n+
    46 (int) numRecord,
    \n+
    47 szSqlStat,
    \n+
    48 pfNativeError,
    \n+
    49 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);
    \n+
    50#ifdef ENABLE_ODBC_WIDE
    \n+
    51 return _SQLGetDiagRec(handleType,
    \n+
    52 handle,
    \n+
    53 numRecord,
    \n+
    54 (ODBC_CHAR*) szSqlStat,
    \n+
    55 pfNativeError,
    \n+
    56 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 0);
    \n+
    57#else
    \n+
    58 return _SQLGetDiagRec(handleType,
    \n+
    59 handle,
    \n+
    60 numRecord,
    \n+
    61 szSqlStat,
    \n+
    62 pfNativeError,
    \n+
    63 szErrorMsg, cbErrorMsgMax, pcbErrorMsg);
    \n+
    64#endif
    \n+
    65}
    \n+
    66
    \n+
    67#ifdef ENABLE_ODBC_WIDE
    \n+
    68static SQLRETURN _SQLError(SQLHENV henv,
    \n+
    69 SQLHDBC hdbc,
    \n+
    70 SQLHSTMT hstmt,
    \n+
    71 ODBC_CHAR * szSqlStat,
    \n+
    72 SQLINTEGER * pfNativeError,
    \n+
    73 ODBC_CHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg, int wide);
    \n
    74
    \n-
    75typedef void nettle_random_func(void *ctx, size_t len, uint8_t *out);
    \n-
    76
    \n-
    77static inline void
    \n-
    78nettle_mpz_set_str_256_u(mpz_t x, unsigned length, const uint8_t *s)
    \n-
    79{
    \n-
    80 gcry_mpi_scan(&x->num, GCRYMPI_FMT_USG, s, length, NULL);
    \n-
    81}
    \n-
    82
    \n-
    83static inline void
    \n-
    84nettle_mpz_get_str_256(unsigned length, uint8_t *s, const mpz_t x)
    \n-
    85{
    \n-
    86 gcry_mpi_print(GCRYMPI_FMT_USG, s, length, NULL, x->num);
    \n-
    87}
    \n-
    88
    \n-
    \n-\n-
    90 const unsigned char *data, *data_end;
    \n-
    91 unsigned long length;
    \n-
    92 unsigned long type;
    \n-
    93};
    \n-
    \n-
    94
    \n-
    95enum asn1_iterator_result {
    \n-
    96 ASN1_ITERATOR_ERROR,
    \n-
    97 ASN1_ITERATOR_PRIMITIVE,
    \n-
    98 ASN1_ITERATOR_CONSTRUCTED,
    \n-
    99 ASN1_ITERATOR_END,
    \n-
    100};
    \n-
    101
    \n-
    102enum {
    \n-
    103 ASN1_SEQUENCE = ASN1_TAG_SEQUENCE,
    \n-
    104};
    \n-
    105
    \n-
    106static enum asn1_iterator_result
    \n-
    107asn1_der_iterator_next(struct asn1_der_iterator *der)
    \n-
    108{
    \n-
    109 unsigned char cls;
    \n-
    110 unsigned long tag;
    \n-
    111 int len;
    \n-
    112 long l;
    \n-
    113
    \n-
    114 if (asn1_get_tag_der(der->data, der->data_end - der->data, &cls, &len, &tag) != ASN1_SUCCESS)
    \n-
    115 return ASN1_ITERATOR_ERROR;
    \n-
    116 der->type = tag;
    \n-
    117 der->data += len;
    \n-
    118 l = asn1_get_length_der(der->data, der->data_end - der->data, &len);
    \n-
    119 if (l < 0)
    \n-
    120 return ASN1_ITERATOR_ERROR;
    \n-
    121 der->data += len;
    \n-
    122 der->length = l;
    \n-
    123 if (cls == ASN1_CLASS_STRUCTURED)
    \n-
    124 return ASN1_ITERATOR_CONSTRUCTED;
    \n-
    125 return ASN1_ITERATOR_PRIMITIVE;
    \n-
    126}
    \n-
    127
    \n-
    128static enum asn1_iterator_result
    \n-
    129asn1_der_iterator_first(struct asn1_der_iterator *der, int size, const void *der_buf)
    \n-
    130{
    \n-
    131 der->data = (const unsigned char *) der_buf;
    \n-
    132 der->data_end = der->data + size;
    \n-
    133
    \n-
    134 return asn1_der_iterator_next(der);
    \n-
    135}
    \n-
    136
    \n-
    \n-\n-
    138 unsigned size;
    \n-
    139 mpz_t n, e;
    \n-
    140};
    \n-
    \n-
    141
    \n-
    142static void
    \n-
    143rsa_public_key_init(struct rsa_public_key *key)
    \n-
    144{
    \n-
    145 key->size = 0;
    \n-
    146 mpz_init(key->n);
    \n-
    147 mpz_init(key->e);
    \n-
    148}
    \n-
    149
    \n-
    150static void
    \n-
    151rsa_public_key_clear(struct rsa_public_key *key)
    \n-
    152{
    \n-
    153 mpz_clear(key->n);
    \n-
    154 mpz_clear(key->e);
    \n-
    155}
    \n-
    156
    \n-
    157static int
    \n-
    158rsa_public_key_from_der_iterator(struct rsa_public_key *key, unsigned key_bits, struct asn1_der_iterator *der)
    \n-
    159{
    \n-
    160 enum asn1_iterator_result ret;
    \n-
    161
    \n-
    162 ret = asn1_der_iterator_next(der);
    \n-
    163 if (ret != ASN1_ITERATOR_PRIMITIVE || der->type != ASN1_TAG_INTEGER)
    \n-
    164 return 0;
    \n-
    165 gcry_mpi_scan(&key->n->num, GCRYMPI_FMT_USG, der->data, der->length, NULL);
    \n-
    166 key->size = (gcry_mpi_get_nbits(key->n->num)+7)/8;
    \n-
    167 der->data += der->length;
    \n-
    168
    \n-
    169 ret = asn1_der_iterator_next(der);
    \n-
    170 if (ret != ASN1_ITERATOR_PRIMITIVE || der->type != ASN1_TAG_INTEGER)
    \n-
    171 return 0;
    \n-
    172 gcry_mpi_scan(&key->e->num, GCRYMPI_FMT_USG, der->data, der->length, NULL);
    \n-
    173
    \n-
    174 return 1;
    \n-
    175}
    \n-
    176
    \n-
    177static void
    \n-
    178sha1(uint8_t *hash, const void *data, size_t len)
    \n-
    179{
    \n-
    180 gcry_md_hash_buffer(GCRY_MD_SHA1, hash, data, len);
    \n-
    181}
    \n-
    182#else
    \n-
    183static void
    \n-
    184sha1(uint8_t *hash, const void *data, size_t len)
    \n-
    185{
    \n-
    186 struct sha1_ctx ctx;
    \n-
    187 sha1_init(&ctx);
    \n-
    188 sha1_update(&ctx, len, (const uint8_t *) data);
    \n-
    189 sha1_digest(&ctx, 20, hash);
    \n-
    190}
    \n-
    191#endif
    \n-
    192
    \n-
    193
    \n-
    194static void
    \n-
    195rnd_func(void *ctx, size_t len, uint8_t * out)
    \n-
    196{
    \n-
    197 tds_random_buffer(out, len);
    \n-
    198}
    \n-
    199
    \n-
    200#define dumpl(b,l) tdsdump_dump_buf(TDS_DBG_INFO1, #b, b, l)
    \n-
    201#ifndef dumpl
    \n-
    202#define dumpl(b,l) do {} while(0)
    \n-
    203#endif
    \n-
    204#define dump(b) dumpl(b, sizeof(b))
    \n-
    205
    \n-
    206/* OAEP configuration parameters */
    \n-
    207#define hash_func sha1
    \n-
    208enum { hash_len = 20 }; /* sha1 length */
    \n-
    209enum { key_size_max = 1024 }; /* max key in bytes */
    \n-
    210static const char label[] = "";
    \n-
    211
    \n-
    212static void
    \n-
    213memxor(uint8_t *dest, const uint8_t *src, size_t len)
    \n-
    214{
    \n-
    215 size_t n;
    \n-
    216 for (n = 0; n < len; ++n)
    \n-
    217 dest[n] = dest[n] ^ src[n];
    \n-
    218}
    \n-
    219
    \n-
    220static void
    \n-
    221mgf_mask(uint8_t *dest, size_t dest_len, const uint8_t *mask, size_t mask_len)
    \n-
    222{
    \n-
    223 unsigned n = 0;
    \n-
    224 uint8_t hash[hash_len];
    \n-
    225 uint8_t seed[mask_len + 4];
    \n-
    226
    \n-
    227 memcpy(seed, mask, mask_len);
    \n-
    228 /* we always have some data and check is done internally */
    \n-
    229 for (;;) {
    \n-
    230 TDS_PUT_UA4BE(seed+mask_len, n);
    \n-
    231
    \n-
    232 hash_func(hash, seed, sizeof(seed));
    \n-
    233 if (dest_len <= hash_len) {
    \n-
    234 memxor(dest, hash, dest_len);
    \n-
    235 break;
    \n-
    236 }
    \n-
    237
    \n-
    238 memxor(dest, hash, hash_len);
    \n-
    239 dest += hash_len;
    \n-
    240 dest_len -= hash_len;
    \n-
    241 ++n;
    \n-
    242 }
    \n-
    243}
    \n-
    244
    \n-
    245static int
    \n-
    246oaep_encrypt(size_t key_size, void *random_ctx, nettle_random_func *random,
    \n-
    247 size_t length, const uint8_t *message, mpz_t m)
    \n-
    248{
    \n-
    249 /* EM: 0x00 ROS (HASH 0x00.. 0x01 message) */
    \n-
    250 struct {
    \n-
    251 uint8_t all[1]; /* zero but used to access all data */
    \n-
    252 uint8_t ros[hash_len];
    \n-
    253 uint8_t db[key_size_max - hash_len - 1];
    \n-
    254 } em;
    \n-
    255 const unsigned db_len = key_size - hash_len - 1;
    \n-
    256
    \n-
    257 if (length + hash_len * 2 + 2 > key_size)
    \n-
    258 /* Message too long for this key. */
    \n-
    259 return 0;
    \n-
    260
    \n-
    261 /* create db */
    \n-
    262 memset(&em, 0, sizeof(em));
    \n-
    263 hash_func(em.db, label, strlen(label));
    \n-
    264 em.all[key_size - length - 1] = 0x1;
    \n-
    265 memcpy(em.all+(key_size - length), message, length);
    \n-
    266 dumpl(em.db, db_len);
    \n-
    267
    \n-
    268 /* create ros */
    \n-
    269 random(random_ctx, hash_len, em.ros);
    \n-
    270 dump(em.ros);
    \n-
    271
    \n-
    272 /* mask db */
    \n-
    273 mgf_mask(em.db, db_len, em.ros, hash_len);
    \n-
    274 dumpl(em.db, db_len);
    \n-
    275
    \n-
    276 /* mask ros */
    \n-
    277 mgf_mask(em.ros, hash_len, em.db, db_len);
    \n-
    278 dump(em.ros);
    \n-
    279
    \n-
    280 nettle_mpz_set_str_256_u(m, key_size, em.all);
    \n-
    281
    \n-
    282 return 1;
    \n-
    283}
    \n-
    284
    \n-
    285static int
    \n-
    286rsa_encrypt_oaep(const struct rsa_public_key *key, void *random_ctx, nettle_random_func *random,
    \n-
    287 size_t length, const uint8_t *message, mpz_t gibberish)
    \n-
    288{
    \n-
    289 if (!oaep_encrypt(key->size, random_ctx, random, length, message, gibberish))
    \n-
    290 return 0;
    \n-
    291
    \n-
    292 mpz_powm(gibberish, gibberish, key->e, key->n);
    \n-
    293 return 1;
    \n-
    294}
    \n-
    295
    \n-
    296static void*
    \n-
    297tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t nonce_len, const char *pwd, size_t *em_size)
    \n-
    298{
    \n-
    299 int ret;
    \n-
    300 mpz_t p;
    \n-
    301 gnutls_datum_t pubkey_datum = { (unsigned char *) key, key_len };
    \n-
    302 struct asn1_der_iterator der;
    \n-
    303 struct rsa_public_key pubkey;
    \n-
    304 uint8_t *message;
    \n-
    305 size_t message_len, pwd_len;
    \n-
    306 uint8_t *em = NULL;
    \n-
    307 unsigned char der_buf[2048];
    \n-
    308 size_t size = sizeof(der_buf);
    \n-
    309
    \n-
    310 mpz_init(p);
    \n-
    311 rsa_public_key_init(&pubkey);
    \n-
    312
    \n-
    313 pwd_len = strlen(pwd);
    \n-
    314 message_len = nonce_len + pwd_len;
    \n-
    315 message = tds_new(uint8_t, message_len);
    \n-
    316 if (!message)
    \n-
    317 return NULL;
    \n-
    318 memcpy(message, nonce, nonce_len);
    \n-
    319 memcpy(message + nonce_len, pwd, pwd_len);
    \n-
    320
    \n-
    321 /* use nettle directly */
    \n-
    322 /* parse PEM, get DER */
    \n-
    323 ret = gnutls_pem_base64_decode("RSA PUBLIC KEY", &pubkey_datum, der_buf, &size);
    \n-
    324 if (ret) {
    \n-
    325 tdsdump_log(TDS_DBG_ERROR, "Error %d decoding public key: %s\\n", ret, gnutls_strerror(ret));
    \n-
    326 goto error;
    \n-
    327 }
    \n-
    328
    \n-
    329 /* get key with nettle using DER */
    \n-
    330 ret = asn1_der_iterator_first(&der, size, der_buf);
    \n-
    331 if (ret != ASN1_ITERATOR_CONSTRUCTED || der.type != ASN1_SEQUENCE) {
    \n-
    332 tdsdump_log(TDS_DBG_ERROR, "Invalid DER content\\n");
    \n-
    333 goto error;
    \n-
    334 }
    \n-
    335
    \n-
    336 ret = rsa_public_key_from_der_iterator(&pubkey, key_size_max * 8, &der);
    \n-
    337 if (!ret) {
    \n-
    338 tdsdump_log(TDS_DBG_ERROR, "Invalid DER content\\n");
    \n-
    339 goto error;
    \n-
    340 }
    \n-
    341
    \n-
    342 /* get password encrypted */
    \n-
    343 ret = rsa_encrypt_oaep(&pubkey, NULL, rnd_func, message_len, message, p);
    \n-
    344 if (!ret) {
    \n-
    345 tdsdump_log(TDS_DBG_ERROR, "Error encrypting message\\n");
    \n-
    346 goto error;
    \n-
    347 }
    \n-
    348
    \n-
    349 em = tds_new(uint8_t, pubkey.size);
    \n-
    350 *em_size = pubkey.size;
    \n-
    351 if (!em)
    \n-
    352 goto error;
    \n-
    353
    \n-
    354 nettle_mpz_get_str_256(pubkey.size, em, p);
    \n-
    355
    \n-
    356 tdsdump_dump_buf(TDS_DBG_INFO1, "em", em, pubkey.size);
    \n-
    357
    \n-
    358error:
    \n-
    359 free(message);
    \n-
    360 rsa_public_key_clear(&pubkey);
    \n-
    361 mpz_clear(p);
    \n-
    362 return em;
    \n-
    363}
    \n-
    364
    \n-
    Definition sec_negotiate_gnutls.h:59
    \n-
    Definition sec_negotiate_gnutls.h:89
    \n-
    Definition sec_negotiate_gnutls.h:137
    \n+
    75SQLRETURN ODBC_PUBLIC ODBC_API SQLErrorW(
    \n+
    76 SQLHENV henv,
    \n+
    77 SQLHDBC hdbc,
    \n+
    78 SQLHSTMT hstmt,
    \n+
    79 SQLWCHAR * szSqlStat,
    \n+
    80 SQLINTEGER * pfNativeError,
    \n+
    81 SQLWCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg)
    \n+
    82{
    \n+
    83 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLErrorW(%p, %p, %p, %p, %p, %p, %d, %p)\\n",
    \n+
    84 henv,
    \n+
    85 hdbc,
    \n+
    86 hstmt,
    \n+
    87 szSqlStat,
    \n+
    88 pfNativeError,
    \n+
    89 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);
    \n+
    90 return _SQLError(henv,
    \n+
    91 hdbc,
    \n+
    92 hstmt,
    \n+
    93 (ODBC_CHAR*) szSqlStat,
    \n+
    94 pfNativeError,
    \n+
    95 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 1);
    \n+
    96}
    \n+
    97#endif
    \n+
    98
    \n+
    99SQLRETURN ODBC_PUBLIC ODBC_API SQLError(
    \n+
    100 SQLHENV henv,
    \n+
    101 SQLHDBC hdbc,
    \n+
    102 SQLHSTMT hstmt,
    \n+
    103 SQLCHAR * szSqlStat,
    \n+
    104 SQLINTEGER * pfNativeError,
    \n+
    105 SQLCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR* pcbErrorMsg)
    \n+
    106{
    \n+
    107 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLError(%p, %p, %p, %p, %p, %p, %d, %p)\\n",
    \n+
    108 henv,
    \n+
    109 hdbc,
    \n+
    110 hstmt,
    \n+
    111 szSqlStat,
    \n+
    112 pfNativeError,
    \n+
    113 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);
    \n+
    114#ifdef ENABLE_ODBC_WIDE
    \n+
    115 return _SQLError(henv,
    \n+
    116 hdbc,
    \n+
    117 hstmt,
    \n+
    118 (ODBC_CHAR*) szSqlStat,
    \n+
    119 pfNativeError,
    \n+
    120 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 0);
    \n+
    121#else
    \n+
    122 return _SQLError(henv,
    \n+
    123 hdbc,
    \n+
    124 hstmt,
    \n+
    125 szSqlStat,
    \n+
    126 pfNativeError,
    \n+
    127 szErrorMsg, cbErrorMsgMax, pcbErrorMsg);
    \n+
    128#endif
    \n+
    129}
    \n+
    130
    \n+
    131#ifdef ENABLE_ODBC_WIDE
    \n+
    132static SQLRETURN _SQLGetDiagField(SQLSMALLINT handleType,
    \n+
    133 SQLHANDLE handle,
    \n+
    134 SQLSMALLINT numRecord,
    \n+
    135 SQLSMALLINT diagIdentifier,
    \n+
    136 SQLPOINTER buffer,
    \n+
    137 SQLSMALLINT cbBuffer,
    \n+
    138 SQLSMALLINT * pcbBuffer, int wide);
    \n+
    139
    \n+
    140SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagFieldW(
    \n+
    141 SQLSMALLINT handleType,
    \n+
    142 SQLHANDLE handle,
    \n+
    143 SQLSMALLINT numRecord,
    \n+
    144 SQLSMALLINT diagIdentifier,
    \n+
    145 SQLPOINTER buffer,
    \n+
    146 SQLSMALLINT cbBuffer,
    \n+
    147 SQLSMALLINT * pcbBuffer)
    \n+
    148{
    \n+
    149 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDiagFieldW(%d, %p, %d, %d, %p, %d, %p)\\n",
    \n+
    150 (int) handleType,
    \n+
    151 handle,
    \n+
    152 (int) numRecord,
    \n+
    153 (int) diagIdentifier,
    \n+
    154 buffer,
    \n+
    155 (int) cbBuffer,
    \n+
    156 pcbBuffer);
    \n+
    157 return _SQLGetDiagField(handleType,
    \n+
    158 handle,
    \n+
    159 numRecord,
    \n+
    160 diagIdentifier,
    \n+
    161 buffer,
    \n+
    162 cbBuffer,
    \n+
    163 pcbBuffer, 1);
    \n+
    164}
    \n+
    165#endif
    \n+
    166
    \n+
    167SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagField(
    \n+
    168 SQLSMALLINT handleType,
    \n+
    169 SQLHANDLE handle,
    \n+
    170 SQLSMALLINT numRecord,
    \n+
    171 SQLSMALLINT diagIdentifier,
    \n+
    172 SQLPOINTER buffer,
    \n+
    173 SQLSMALLINT cbBuffer,
    \n+
    174 SQLSMALLINT * pcbBuffer)
    \n+
    175{
    \n+
    176 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDiagField(%d, %p, %d, %d, %p, %d, %p)\\n",
    \n+
    177 (int) handleType,
    \n+
    178 handle,
    \n+
    179 (int) numRecord,
    \n+
    180 (int) diagIdentifier,
    \n+
    181 buffer,
    \n+
    182 (int) cbBuffer,
    \n+
    183 pcbBuffer);
    \n+
    184#ifdef ENABLE_ODBC_WIDE
    \n+
    185 return _SQLGetDiagField(handleType,
    \n+
    186 handle,
    \n+
    187 numRecord,
    \n+
    188 diagIdentifier,
    \n+
    189 buffer,
    \n+
    190 cbBuffer,
    \n+
    191 pcbBuffer, 0);
    \n+
    192#else
    \n+
    193 return _SQLGetDiagField(handleType,
    \n+
    194 handle,
    \n+
    195 numRecord,
    \n+
    196 diagIdentifier,
    \n+
    197 buffer,
    \n+
    198 cbBuffer,
    \n+
    199 pcbBuffer);
    \n+
    200#endif
    \n+
    201}
    \n+
    202
    \n+
    203#define tdsdump_log TDSDUMP_LOG_FAST
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,382 +6,227 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * tds\n-sec_negotiate_gnutls.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2015 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#include \n- 21#include \n- 22#ifdef HAVE_GNUTLS_ABSTRACT_H\n- 23# include \n- 24#endif\n- 25\n- 26#if !defined(HAVE_NETTLE) || !defined(HAVE_GMP) || !defined(HAVE_GNUTLS_RND)\n- 27# include \n- 28#endif\n- 29\n- 30#ifndef HAVE_NETTLE\n- 31# include \n- 32#endif\n- 33\n- 34#ifdef HAVE_NETTLE\n- 35# include \n- 36# include \n- 37# include \n- 38#endif\n- 39\n- 51#ifndef HAVE_GNUTLS\n- 52#error HAVE_GNUTLS not defines, this file should not be included\n- 53#endif\n- 54\n- 55/* emulate GMP if not present */\n- 56#ifndef HAVE_GMP\n- 57#define HAVE_GMP 1\n- 58\n-59typedef struct {\n- 60 gcry_mpi_t num;\n- 61} mpz_t[1];\n- 62\n- 63#define mpz_powm(w,n,e,m) \\\n- 64 gcry_mpi_powm((w)->num, (n)->num, (e)->num, (m)->num);\n- 65#define mpz_init(n) do { (n)->num = NULL; } while(0)\n- 66#define mpz_clear(n) gcry_mpi_release((n)->num)\n- 67\n- 68#endif\n- 69\n- 70\n- 71/* emulate Nettle is not present */\n- 72#ifndef HAVE_NETTLE\n- 73#define HAVE_NETTLE 1\n+ * odbc\n+error_export.h\n+ 1#undef tdsdump_log\n+ 2\n+ 3#ifdef ENABLE_ODBC_WIDE\n+ 4static SQLRETURN _SQLGetDiagRec(SQLSMALLINT handleType,\n+ 5 SQLHANDLE handle,\n+ 6 SQLSMALLINT numRecord,\n+ 7 ODBC_CHAR * szSqlStat,\n+ 8 SQLINTEGER * pfNativeError,\n+ 9 ODBC_CHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg, int wide);\n+ 10\n+ 11SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagRecW(\n+ 12 SQLSMALLINT handleType,\n+ 13 SQLHANDLE handle,\n+ 14 SQLSMALLINT numRecord,\n+ 15 SQLWCHAR * szSqlStat,\n+ 16 SQLINTEGER * pfNativeError,\n+ 17 SQLWCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg)\n+ 18{\n+ 19 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDiagRecW(%d, %p, %d, %p, %p, %p, %d,\n+%p)\\n\",\n+ 20 (int) handleType,\n+ 21 handle,\n+ 22 (int) numRecord,\n+ 23 szSqlStat,\n+ 24 pfNativeError,\n+ 25 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);\n+ 26 return _SQLGetDiagRec(handleType,\n+ 27 handle,\n+ 28 numRecord,\n+ 29 (ODBC_CHAR*) szSqlStat,\n+ 30 pfNativeError,\n+ 31 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 1);\n+ 32}\n+ 33#endif\n+ 34\n+ 35SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagRec(\n+ 36 SQLSMALLINT handleType,\n+ 37 SQLHANDLE handle,\n+ 38 SQLSMALLINT numRecord,\n+ 39 SQLCHAR * szSqlStat,\n+ 40 SQLINTEGER * pfNativeError,\n+ 41 SQLCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg)\n+ 42{\n+ 43 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDiagRec(%d, %p, %d, %p, %p, %p, %d,\n+%p)\\n\",\n+ 44 (int) handleType,\n+ 45 handle,\n+ 46 (int) numRecord,\n+ 47 szSqlStat,\n+ 48 pfNativeError,\n+ 49 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);\n+ 50#ifdef ENABLE_ODBC_WIDE\n+ 51 return _SQLGetDiagRec(handleType,\n+ 52 handle,\n+ 53 numRecord,\n+ 54 (ODBC_CHAR*) szSqlStat,\n+ 55 pfNativeError,\n+ 56 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 0);\n+ 57#else\n+ 58 return _SQLGetDiagRec(handleType,\n+ 59 handle,\n+ 60 numRecord,\n+ 61 szSqlStat,\n+ 62 pfNativeError,\n+ 63 szErrorMsg, cbErrorMsgMax, pcbErrorMsg);\n+ 64#endif\n+ 65}\n+ 66\n+ 67#ifdef ENABLE_ODBC_WIDE\n+ 68static SQLRETURN _SQLError(SQLHENV henv,\n+ 69 SQLHDBC hdbc,\n+ 70 SQLHSTMT hstmt,\n+ 71 ODBC_CHAR * szSqlStat,\n+ 72 SQLINTEGER * pfNativeError,\n+ 73 ODBC_CHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg, int wide);\n 74\n- 75typedef void nettle_random_func(void *ctx, size_t len, uint8_t *out);\n- 76\n- 77static inline void\n- 78nettle_mpz_set_str_256_u(mpz_t x, unsigned length, const uint8_t *s)\n- 79{\n- 80 gcry_mpi_scan(&x->num, GCRYMPI_FMT_USG, s, length, NULL);\n- 81}\n- 82\n- 83static inline void\n- 84nettle_mpz_get_str_256(unsigned length, uint8_t *s, const mpz_t x)\n- 85{\n- 86 gcry_mpi_print(GCRYMPI_FMT_USG, s, length, NULL, x->num);\n- 87}\n- 88\n-89struct asn1_der_iterator {\n- 90 const unsigned char *data, *data_end;\n- 91 unsigned long length;\n- 92 unsigned long type;\n- 93};\n- 94\n- 95enum asn1_iterator_result {\n- 96 ASN1_ITERATOR_ERROR,\n- 97 ASN1_ITERATOR_PRIMITIVE,\n- 98 ASN1_ITERATOR_CONSTRUCTED,\n- 99 ASN1_ITERATOR_END,\n- 100};\n- 101\n- 102enum {\n- 103 ASN1_SEQUENCE = ASN1_TAG_SEQUENCE,\n- 104};\n- 105\n- 106static enum asn1_iterator_result\n- 107asn1_der_iterator_next(struct asn1_der_iterator *der)\n- 108{\n- 109 unsigned char cls;\n- 110 unsigned long tag;\n- 111 int len;\n- 112 long l;\n- 113\n- 114 if (asn1_get_tag_der(der->data, der->data_end - der->data, &cls, &len,\n-&tag) != ASN1_SUCCESS)\n- 115 return ASN1_ITERATOR_ERROR;\n- 116 der->type = tag;\n- 117 der->data += len;\n- 118 l = asn1_get_length_der(der->data, der->data_end - der->data, &len);\n- 119 if (l < 0)\n- 120 return ASN1_ITERATOR_ERROR;\n- 121 der->data += len;\n- 122 der->length = l;\n- 123 if (cls == ASN1_CLASS_STRUCTURED)\n- 124 return ASN1_ITERATOR_CONSTRUCTED;\n- 125 return ASN1_ITERATOR_PRIMITIVE;\n- 126}\n- 127\n- 128static enum asn1_iterator_result\n- 129asn1_der_iterator_first(struct asn1_der_iterator *der, int size, const void\n-*der_buf)\n- 130{\n- 131 der->data = (const unsigned char *) der_buf;\n- 132 der->data_end = der->data + size;\n- 133\n- 134 return asn1_der_iterator_next(der);\n- 135}\n- 136\n-137struct rsa_public_key {\n- 138 unsigned size;\n- 139 mpz_t n, e;\n- 140};\n- 141\n- 142static void\n- 143rsa_public_key_init(struct rsa_public_key *key)\n- 144{\n- 145 key->size = 0;\n- 146 mpz_init(key->n);\n- 147 mpz_init(key->e);\n- 148}\n- 149\n- 150static void\n- 151rsa_public_key_clear(struct rsa_public_key *key)\n- 152{\n- 153 mpz_clear(key->n);\n- 154 mpz_clear(key->e);\n- 155}\n- 156\n- 157static int\n- 158rsa_public_key_from_der_iterator(struct rsa_public_key *key, unsigned\n-key_bits, struct asn1_der_iterator *der)\n- 159{\n- 160 enum asn1_iterator_result ret;\n- 161\n- 162 ret = asn1_der_iterator_next(der);\n- 163 if (ret != ASN1_ITERATOR_PRIMITIVE || der->type != ASN1_TAG_INTEGER)\n- 164 return 0;\n- 165 gcry_mpi_scan(&key->n->num, GCRYMPI_FMT_USG, der->data, der->length,\n-NULL);\n- 166 key->size = (gcry_mpi_get_nbits(key->n->num)+7)/8;\n- 167 der->data += der->length;\n- 168\n- 169 ret = asn1_der_iterator_next(der);\n- 170 if (ret != ASN1_ITERATOR_PRIMITIVE || der->type != ASN1_TAG_INTEGER)\n- 171 return 0;\n- 172 gcry_mpi_scan(&key->e->num, GCRYMPI_FMT_USG, der->data, der->length,\n-NULL);\n- 173\n- 174 return 1;\n- 175}\n- 176\n- 177static void\n- 178sha1(uint8_t *hash, const void *data, size_t len)\n- 179{\n- 180 gcry_md_hash_buffer(GCRY_MD_SHA1, hash, data, len);\n- 181}\n- 182#else\n- 183static void\n- 184sha1(uint8_t *hash, const void *data, size_t len)\n- 185{\n- 186 struct sha1_ctx ctx;\n- 187 sha1_init(&ctx);\n- 188 sha1_update(&ctx, len, (const uint8_t *) data);\n- 189 sha1_digest(&ctx, 20, hash);\n- 190}\n- 191#endif\n- 192\n- 193\n- 194static void\n- 195rnd_func(void *ctx, size_t len, uint8_t * out)\n- 196{\n- 197 tds_random_buffer(out, len);\n- 198}\n- 199\n- 200#define dumpl(b,l) tdsdump_dump_buf(TDS_DBG_INFO1, #b, b, l)\n- 201#ifndef dumpl\n- 202#define dumpl(b,l) do {} while(0)\n- 203#endif\n- 204#define dump(b) dumpl(b, sizeof(b))\n- 205\n- 206/* OAEP configuration parameters */\n- 207#define hash_func sha1\n- 208enum { hash_len = 20 }; /* sha1 length */\n- 209enum { key_size_max = 1024 }; /* max key in bytes */\n- 210static const char label[] = \"\";\n- 211\n- 212static void\n- 213memxor(uint8_t *dest, const uint8_t *src, size_t len)\n- 214{\n- 215 size_t n;\n- 216 for (n = 0; n < len; ++n)\n- 217 dest[n] = dest[n] ^ src[n];\n- 218}\n- 219\n- 220static void\n- 221mgf_mask(uint8_t *dest, size_t dest_len, const uint8_t *mask, size_t\n-mask_len)\n- 222{\n- 223 unsigned n = 0;\n- 224 uint8_t hash[hash_len];\n- 225 uint8_t seed[mask_len + 4];\n- 226\n- 227 memcpy(seed, mask, mask_len);\n- 228 /* we always have some data and check is done internally */\n- 229 for (;;) {\n- 230 TDS_PUT_UA4BE(seed+mask_len, n);\n- 231\n- 232 hash_func(hash, seed, sizeof(seed));\n- 233 if (dest_len <= hash_len) {\n- 234 memxor(dest, hash, dest_len);\n- 235 break;\n- 236 }\n- 237\n- 238 memxor(dest, hash, hash_len);\n- 239 dest += hash_len;\n- 240 dest_len -= hash_len;\n- 241 ++n;\n- 242 }\n- 243}\n- 244\n- 245static int\n- 246oaep_encrypt(size_t key_size, void *random_ctx, nettle_random_func *random,\n- 247 size_t length, const uint8_t *message, mpz_t m)\n- 248{\n- 249 /* EM: 0x00 ROS (HASH 0x00.. 0x01 message) */\n- 250 struct {\n- 251 uint8_t all[1]; /* zero but used to access all data */\n- 252 uint8_t ros[hash_len];\n- 253 uint8_t db[key_size_max - hash_len - 1];\n- 254 } em;\n- 255 const unsigned db_len = key_size - hash_len - 1;\n- 256\n- 257 if (length + hash_len * 2 + 2 > key_size)\n- 258 /* Message too long for this key. */\n- 259 return 0;\n- 260\n- 261 /* create db */\n- 262 memset(&em, 0, sizeof(em));\n- 263 hash_func(em.db, label, strlen(label));\n- 264 em.all[key_size - length - 1] = 0x1;\n- 265 memcpy(em.all+(key_size - length), message, length);\n- 266 dumpl(em.db, db_len);\n- 267\n- 268 /* create ros */\n- 269 random(random_ctx, hash_len, em.ros);\n- 270 dump(em.ros);\n- 271\n- 272 /* mask db */\n- 273 mgf_mask(em.db, db_len, em.ros, hash_len);\n- 274 dumpl(em.db, db_len);\n- 275\n- 276 /* mask ros */\n- 277 mgf_mask(em.ros, hash_len, em.db, db_len);\n- 278 dump(em.ros);\n- 279\n- 280 nettle_mpz_set_str_256_u(m, key_size, em.all);\n- 281\n- 282 return 1;\n- 283}\n- 284\n- 285static int\n- 286rsa_encrypt_oaep(const struct rsa_public_key *key, void *random_ctx,\n-nettle_random_func *random,\n- 287 size_t length, const uint8_t *message, mpz_t gibberish)\n- 288{\n- 289 if (!oaep_encrypt(key->size, random_ctx, random, length, message,\n-gibberish))\n- 290 return 0;\n- 291\n- 292 mpz_powm(gibberish, gibberish, key->e, key->n);\n- 293 return 1;\n- 294}\n- 295\n- 296static void*\n- 297tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t\n-nonce_len, const char *pwd, size_t *em_size)\n- 298{\n- 299 int ret;\n- 300 mpz_t p;\n- 301 gnutls_datum_t pubkey_datum = { (unsigned char *) key, key_len };\n- 302 struct asn1_der_iterator der;\n- 303 struct rsa_public_key pubkey;\n- 304 uint8_t *message;\n- 305 size_t message_len, pwd_len;\n- 306 uint8_t *em = NULL;\n- 307 unsigned char der_buf[2048];\n- 308 size_t size = sizeof(der_buf);\n- 309\n- 310 mpz_init(p);\n- 311 rsa_public_key_init(&pubkey);\n- 312\n- 313 pwd_len = strlen(pwd);\n- 314 message_len = nonce_len + pwd_len;\n- 315 message = tds_new(uint8_t, message_len);\n- 316 if (!message)\n- 317 return NULL;\n- 318 memcpy(message, nonce, nonce_len);\n- 319 memcpy(message + nonce_len, pwd, pwd_len);\n- 320\n- 321 /* use nettle directly */\n- 322 /* parse PEM, get DER */\n- 323 ret = gnutls_pem_base64_decode(\"RSA PUBLIC KEY\", &pubkey_datum, der_buf,\n-&size);\n- 324 if (ret) {\n- 325 tdsdump_log(TDS_DBG_ERROR, \"Error %d decoding public key: %s\\n\", ret,\n-gnutls_strerror(ret));\n- 326 goto error;\n- 327 }\n- 328\n- 329 /* get key with nettle using DER */\n- 330 ret = asn1_der_iterator_first(&der, size, der_buf);\n- 331 if (ret != ASN1_ITERATOR_CONSTRUCTED || der.type != ASN1_SEQUENCE) {\n- 332 tdsdump_log(TDS_DBG_ERROR, \"Invalid DER content\\n\");\n- 333 goto error;\n- 334 }\n- 335\n- 336 ret = rsa_public_key_from_der_iterator(&pubkey, key_size_max * 8, &der);\n- 337 if (!ret) {\n- 338 tdsdump_log(TDS_DBG_ERROR, \"Invalid DER content\\n\");\n- 339 goto error;\n- 340 }\n- 341\n- 342 /* get password encrypted */\n- 343 ret = rsa_encrypt_oaep(&pubkey, NULL, rnd_func, message_len, message, p);\n- 344 if (!ret) {\n- 345 tdsdump_log(TDS_DBG_ERROR, \"Error encrypting message\\n\");\n- 346 goto error;\n- 347 }\n- 348\n- 349 em = tds_new(uint8_t, pubkey.size);\n- 350 *em_size = pubkey.size;\n- 351 if (!em)\n- 352 goto error;\n- 353\n- 354 nettle_mpz_get_str_256(pubkey.size, em, p);\n- 355\n- 356 tdsdump_dump_buf(TDS_DBG_INFO1, \"em\", em, pubkey.size);\n- 357\n- 358error:\n- 359 free(message);\n- 360 rsa_public_key_clear(&pubkey);\n- 361 mpz_clear(p);\n- 362 return em;\n- 363}\n- 364\n-mpz_t\n-Definition sec_negotiate_gnutls.h:59\n-asn1_der_iterator\n-Definition sec_negotiate_gnutls.h:89\n-rsa_public_key\n-Definition sec_negotiate_gnutls.h:137\n+ 75SQLRETURN ODBC_PUBLIC ODBC_API SQLErrorW(\n+ 76 SQLHENV henv,\n+ 77 SQLHDBC hdbc,\n+ 78 SQLHSTMT hstmt,\n+ 79 SQLWCHAR * szSqlStat,\n+ 80 SQLINTEGER * pfNativeError,\n+ 81 SQLWCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg)\n+ 82{\n+ 83 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLErrorW(%p, %p, %p, %p, %p, %p, %d,\n+%p)\\n\",\n+ 84 henv,\n+ 85 hdbc,\n+ 86 hstmt,\n+ 87 szSqlStat,\n+ 88 pfNativeError,\n+ 89 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);\n+ 90 return _SQLError(henv,\n+ 91 hdbc,\n+ 92 hstmt,\n+ 93 (ODBC_CHAR*) szSqlStat,\n+ 94 pfNativeError,\n+ 95 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 1);\n+ 96}\n+ 97#endif\n+ 98\n+ 99SQLRETURN ODBC_PUBLIC ODBC_API SQLError(\n+ 100 SQLHENV henv,\n+ 101 SQLHDBC hdbc,\n+ 102 SQLHSTMT hstmt,\n+ 103 SQLCHAR * szSqlStat,\n+ 104 SQLINTEGER * pfNativeError,\n+ 105 SQLCHAR * szErrorMsg, SQLSMALLINT cbErrorMsgMax, SQLSMALLINT FAR*\n+pcbErrorMsg)\n+ 106{\n+ 107 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLError(%p, %p, %p, %p, %p, %p, %d,\n+%p)\\n\",\n+ 108 henv,\n+ 109 hdbc,\n+ 110 hstmt,\n+ 111 szSqlStat,\n+ 112 pfNativeError,\n+ 113 szErrorMsg, (int) cbErrorMsgMax, pcbErrorMsg);\n+ 114#ifdef ENABLE_ODBC_WIDE\n+ 115 return _SQLError(henv,\n+ 116 hdbc,\n+ 117 hstmt,\n+ 118 (ODBC_CHAR*) szSqlStat,\n+ 119 pfNativeError,\n+ 120 (ODBC_CHAR*) szErrorMsg, cbErrorMsgMax, pcbErrorMsg, 0);\n+ 121#else\n+ 122 return _SQLError(henv,\n+ 123 hdbc,\n+ 124 hstmt,\n+ 125 szSqlStat,\n+ 126 pfNativeError,\n+ 127 szErrorMsg, cbErrorMsgMax, pcbErrorMsg);\n+ 128#endif\n+ 129}\n+ 130\n+ 131#ifdef ENABLE_ODBC_WIDE\n+ 132static SQLRETURN _SQLGetDiagField(SQLSMALLINT handleType,\n+ 133 SQLHANDLE handle,\n+ 134 SQLSMALLINT numRecord,\n+ 135 SQLSMALLINT diagIdentifier,\n+ 136 SQLPOINTER buffer,\n+ 137 SQLSMALLINT cbBuffer,\n+ 138 SQLSMALLINT * pcbBuffer, int wide);\n+ 139\n+ 140SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagFieldW(\n+ 141 SQLSMALLINT handleType,\n+ 142 SQLHANDLE handle,\n+ 143 SQLSMALLINT numRecord,\n+ 144 SQLSMALLINT diagIdentifier,\n+ 145 SQLPOINTER buffer,\n+ 146 SQLSMALLINT cbBuffer,\n+ 147 SQLSMALLINT * pcbBuffer)\n+ 148{\n+ 149 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDiagFieldW(%d, %p, %d, %d, %p, %d,\n+%p)\\n\",\n+ 150 (int) handleType,\n+ 151 handle,\n+ 152 (int) numRecord,\n+ 153 (int) diagIdentifier,\n+ 154 buffer,\n+ 155 (int) cbBuffer,\n+ 156 pcbBuffer);\n+ 157 return _SQLGetDiagField(handleType,\n+ 158 handle,\n+ 159 numRecord,\n+ 160 diagIdentifier,\n+ 161 buffer,\n+ 162 cbBuffer,\n+ 163 pcbBuffer, 1);\n+ 164}\n+ 165#endif\n+ 166\n+ 167SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDiagField(\n+ 168 SQLSMALLINT handleType,\n+ 169 SQLHANDLE handle,\n+ 170 SQLSMALLINT numRecord,\n+ 171 SQLSMALLINT diagIdentifier,\n+ 172 SQLPOINTER buffer,\n+ 173 SQLSMALLINT cbBuffer,\n+ 174 SQLSMALLINT * pcbBuffer)\n+ 175{\n+ 176 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDiagField(%d, %p, %d, %d, %p, %d,\n+%p)\\n\",\n+ 177 (int) handleType,\n+ 178 handle,\n+ 179 (int) numRecord,\n+ 180 (int) diagIdentifier,\n+ 181 buffer,\n+ 182 (int) cbBuffer,\n+ 183 pcbBuffer);\n+ 184#ifdef ENABLE_ODBC_WIDE\n+ 185 return _SQLGetDiagField(handleType,\n+ 186 handle,\n+ 187 numRecord,\n+ 188 diagIdentifier,\n+ 189 buffer,\n+ 190 cbBuffer,\n+ 191 pcbBuffer, 0);\n+ 192#else\n+ 193 return _SQLGetDiagField(handleType,\n+ 194 handle,\n+ 195 numRecord,\n+ 196 diagIdentifier,\n+ 197 buffer,\n+ 198 cbBuffer,\n+ 199 pcbBuffer);\n+ 200#endif\n+ 201}\n+ 202\n+ 203#define tdsdump_log TDSDUMP_LOG_FAST\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00044_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00044_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/tds/num_limits.h Source File\n+FreeTDS API: src/odbc/odbc_export.h Source File\n \n \n \n \n \n \n \n@@ -70,398 +70,1320 @@\n
    \n \n \n \n \n
    \n \n+
  • src
  • odbc
  • \n
    \n \n
    \n-
    num_limits.h
    \n+
    odbc_export.h
    \n
    \n
    \n-
    1#define LIMIT_INDEXES_ADJUST 4
    \n+
    1#undef tdsdump_log
    \n
    2
    \n-
    3static const signed char limit_indexes[79]= {
    \n-
    4 0, /* 0 */
    \n-
    5 -3, /* 1 */
    \n-
    6 -6, /* 2 */
    \n-
    7 -9, /* 3 */
    \n-
    8 -12, /* 4 */
    \n-
    9 -15, /* 5 */
    \n-
    10 -18, /* 6 */
    \n-
    11 -21, /* 7 */
    \n-
    12 -24, /* 8 */
    \n-
    13 -27, /* 9 */
    \n-
    14 -30, /* 10 */
    \n-
    15 -32, /* 11 */
    \n-
    16 -34, /* 12 */
    \n-
    17 -36, /* 13 */
    \n-
    18 -38, /* 14 */
    \n-
    19 -40, /* 15 */
    \n-
    20 -42, /* 16 */
    \n-
    21 -44, /* 17 */
    \n-
    22 -46, /* 18 */
    \n-
    23 -48, /* 19 */
    \n-
    24 -50, /* 20 */
    \n-
    25 -51, /* 21 */
    \n-
    26 -52, /* 22 */
    \n-
    27 -53, /* 23 */
    \n-
    28 -54, /* 24 */
    \n-
    29 -55, /* 25 */
    \n-
    30 -56, /* 26 */
    \n-
    31 -57, /* 27 */
    \n-
    32 -58, /* 28 */
    \n-
    33 -59, /* 29 */
    \n-
    34 -59, /* 30 */
    \n-
    35 -59, /* 31 */
    \n-
    36 -59, /* 32 */
    \n-
    37 -60, /* 33 */
    \n-
    38 -61, /* 34 */
    \n-
    39 -62, /* 35 */
    \n-
    40 -63, /* 36 */
    \n-
    41 -64, /* 37 */
    \n-
    42 -65, /* 38 */
    \n-
    43 -66, /* 39 */
    \n-
    44 -66, /* 40 */
    \n-
    45 -66, /* 41 */
    \n-
    46 -66, /* 42 */
    \n-
    47 -66, /* 43 */
    \n-
    48 -66, /* 44 */
    \n-
    49 -66, /* 45 */
    \n-
    50 -66, /* 46 */
    \n-
    51 -66, /* 47 */
    \n-
    52 -66, /* 48 */
    \n-
    53 -66, /* 49 */
    \n-
    54 -65, /* 50 */
    \n-
    55 -64, /* 51 */
    \n-
    56 -63, /* 52 */
    \n-
    57 -62, /* 53 */
    \n-
    58 -61, /* 54 */
    \n-
    59 -60, /* 55 */
    \n-
    60 -59, /* 56 */
    \n-
    61 -58, /* 57 */
    \n-
    62 -57, /* 58 */
    \n-
    63 -55, /* 59 */
    \n-
    64 -53, /* 60 */
    \n-
    65 -51, /* 61 */
    \n-
    66 -49, /* 62 */
    \n-
    67 -47, /* 63 */
    \n-
    68 -45, /* 64 */
    \n-
    69 -44, /* 65 */
    \n-
    70 -43, /* 66 */
    \n-
    71 -42, /* 67 */
    \n-
    72 -41, /* 68 */
    \n-
    73 -39, /* 69 */
    \n-
    74 -37, /* 70 */
    \n-
    75 -35, /* 71 */
    \n-
    76 -33, /* 72 */
    \n-
    77 -31, /* 73 */
    \n-
    78 -29, /* 74 */
    \n-
    79 -27, /* 75 */
    \n-
    80 -25, /* 76 */
    \n-
    81 -23, /* 77 */
    \n-
    82 -21, /* 78 */
    \n-
    83};
    \n-
    84
    \n-
    85static const TDS_WORD limits[]= {
    \n-
    86 0x00000001u, /* 0 */
    \n-
    87 0x0000000au, /* 1 */
    \n-
    88 0x00000064u, /* 2 */
    \n-
    89 0x000003e8u, /* 3 */
    \n-
    90 0x00002710u, /* 4 */
    \n-
    91 0x000186a0u, /* 5 */
    \n-
    92 0x000f4240u, /* 6 */
    \n-
    93 0x00989680u, /* 7 */
    \n-
    94 0x05f5e100u, /* 8 */
    \n-
    95 0x3b9aca00u, /* 9 */
    \n-
    96 0x00000002u, /* 10 */
    \n-
    97 0x540be400u, /* 11 */
    \n-
    98 0x00000017u, /* 12 */
    \n-
    99 0x4876e800u, /* 13 */
    \n-
    100 0x000000e8u, /* 14 */
    \n-
    101 0xd4a51000u, /* 15 */
    \n-
    102 0x00000918u, /* 16 */
    \n-
    103 0x4e72a000u, /* 17 */
    \n-
    104 0x00005af3u, /* 18 */
    \n-
    105 0x107a4000u, /* 19 */
    \n-
    106 0x00038d7eu, /* 20 */
    \n-
    107 0xa4c68000u, /* 21 */
    \n-
    108 0x002386f2u, /* 22 */
    \n-
    109 0x6fc10000u, /* 23 */
    \n-
    110 0x01634578u, /* 24 */
    \n-
    111 0x5d8a0000u, /* 25 */
    \n-
    112 0x0de0b6b3u, /* 26 */
    \n-
    113 0xa7640000u, /* 27 */
    \n-
    114 0x8ac72304u, /* 28 */
    \n-
    115 0x89e80000u, /* 29 */
    \n-
    116 0x00000005u, /* 30 */
    \n-
    117 0x6bc75e2du, /* 31 */
    \n-
    118 0x63100000u, /* 32 */
    \n-
    119 0x00000036u, /* 33 */
    \n-
    120 0x35c9adc5u, /* 34 */
    \n-
    121 0xdea00000u, /* 35 */
    \n-
    122 0x0000021eu, /* 36 */
    \n-
    123 0x19e0c9bau, /* 37 */
    \n-
    124 0xb2400000u, /* 38 */
    \n-
    125 0x0000152du, /* 39 */
    \n-
    126 0x02c7e14au, /* 40 */
    \n-
    127 0xf6800000u, /* 41 */
    \n-
    128 0x0000d3c2u, /* 42 */
    \n-
    129 0x1bceccedu, /* 43 */
    \n-
    130 0xa1000000u, /* 44 */
    \n-
    131 0x00084595u, /* 45 */
    \n-
    132 0x16140148u, /* 46 */
    \n-
    133 0x4a000000u, /* 47 */
    \n-
    134 0x0052b7d2u, /* 48 */
    \n-
    135 0xdcc80cd2u, /* 49 */
    \n-
    136 0xe4000000u, /* 50 */
    \n-
    137 0x033b2e3cu, /* 51 */
    \n-
    138 0x9fd0803cu, /* 52 */
    \n-
    139 0xe8000000u, /* 53 */
    \n-
    140 0x204fce5eu, /* 54 */
    \n-
    141 0x3e250261u, /* 55 */
    \n-
    142 0x10000000u, /* 56 */
    \n-
    143 0x00000001u, /* 57 */
    \n-
    144 0x431e0faeu, /* 58 */
    \n-
    145 0x6d7217cau, /* 59 */
    \n-
    146 0xa0000000u, /* 60 */
    \n-
    147 0x0000000cu, /* 61 */
    \n-
    148 0x9f2c9cd0u, /* 62 */
    \n-
    149 0x4674edeau, /* 63 */
    \n-
    150 0x40000000u, /* 64 */
    \n-
    151 0x0000007eu, /* 65 */
    \n-
    152 0x37be2022u, /* 66 */
    \n-
    153 0xc0914b26u, /* 67 */
    \n-
    154 0x80000000u, /* 68 */
    \n-
    155 0x000004eeu, /* 69 */
    \n-
    156 0x2d6d415bu, /* 70 */
    \n-
    157 0x85acef81u, /* 71 */
    \n-
    158 0x0000314du, /* 72 */
    \n-
    159 0xc6448d93u, /* 73 */
    \n-
    160 0x38c15b0au, /* 74 */
    \n-
    161 0x0001ed09u, /* 75 */
    \n-
    162 0xbead87c0u, /* 76 */
    \n-
    163 0x378d8e64u, /* 77 */
    \n-
    164 0x00134261u, /* 78 */
    \n-
    165 0x72c74d82u, /* 79 */
    \n-
    166 0x2b878fe8u, /* 80 */
    \n-
    167 0x00c097ceu, /* 81 */
    \n-
    168 0x7bc90715u, /* 82 */
    \n-
    169 0xb34b9f10u, /* 83 */
    \n-
    170 0x0785ee10u, /* 84 */
    \n-
    171 0xd5da46d9u, /* 85 */
    \n-
    172 0x00f436a0u, /* 86 */
    \n-
    173 0x4b3b4ca8u, /* 87 */
    \n-
    174 0x5a86c47au, /* 88 */
    \n-
    175 0x098a2240u, /* 89 */
    \n-
    176 0x00000002u, /* 90 */
    \n-
    177 0xf050fe93u, /* 91 */
    \n-
    178 0x8943acc4u, /* 92 */
    \n-
    179 0x5f655680u, /* 93 */
    \n-
    180 0x0000001du, /* 94 */
    \n-
    181 0x6329f1c3u, /* 95 */
    \n-
    182 0x5ca4bfabu, /* 96 */
    \n-
    183 0xb9f56100u, /* 97 */
    \n-
    184 0x00000125u, /* 98 */
    \n-
    185 0xdfa371a1u, /* 99 */
    \n-
    186 0x9e6f7cb5u, /* 100 */
    \n-
    187 0x4395ca00u, /* 101 */
    \n-
    188 0x00000b7au, /* 102 */
    \n-
    189 0xbc627050u, /* 103 */
    \n-
    190 0x305adf14u, /* 104 */
    \n-
    191 0xa3d9e400u, /* 105 */
    \n-
    192 0x000072cbu, /* 106 */
    \n-
    193 0x5bd86321u, /* 107 */
    \n-
    194 0xe38cb6ceu, /* 108 */
    \n-
    195 0x6682e800u, /* 109 */
    \n-
    196 0x00047bf1u, /* 110 */
    \n-
    197 0x9673df52u, /* 111 */
    \n-
    198 0xe37f2410u, /* 112 */
    \n-
    199 0x011d1000u, /* 113 */
    \n-
    200 0x002cd76fu, /* 114 */
    \n-
    201 0xe086b93cu, /* 115 */
    \n-
    202 0xe2f768a0u, /* 116 */
    \n-
    203 0x0b22a000u, /* 117 */
    \n-
    204 0x01c06a5eu, /* 118 */
    \n-
    205 0xc5433c60u, /* 119 */
    \n-
    206 0xddaa1640u, /* 120 */
    \n-
    207 0x6f5a4000u, /* 121 */
    \n-
    208 0x118427b3u, /* 122 */
    \n-
    209 0xb4a05bc8u, /* 123 */
    \n-
    210 0xa8a4de84u, /* 124 */
    \n-
    211 0x59868000u, /* 125 */
    \n-
    212 0xaf298d05u, /* 126 */
    \n-
    213 0x0e4395d6u, /* 127 */
    \n-
    214 0x9670b12bu, /* 128 */
    \n-
    215 0x7f410000u, /* 129 */
    \n-
    216 0x00000006u, /* 130 */
    \n-
    217 0xd79f8232u, /* 131 */
    \n-
    218 0x8ea3da61u, /* 132 */
    \n-
    219 0xe066ebb2u, /* 133 */
    \n-
    220 0xf88a0000u, /* 134 */
    \n-
    221 0x00000044u, /* 135 */
    \n-
    222 0x6c3b15f9u, /* 136 */
    \n-
    223 0x926687d2u, /* 137 */
    \n-
    224 0xc40534fdu, /* 138 */
    \n-
    225 0xb5640000u, /* 139 */
    \n-
    226 0x000002acu, /* 140 */
    \n-
    227 0x3a4edbbfu, /* 141 */
    \n-
    228 0xb8014e3bu, /* 142 */
    \n-
    229 0xa83411e9u, /* 143 */
    \n-
    230 0x15e80000u, /* 144 */
    \n-
    231 0x00001abau, /* 145 */
    \n-
    232 0x4714957du, /* 146 */
    \n-
    233 0x300d0e54u, /* 147 */
    \n-
    234 0x9208b31au, /* 148 */
    \n-
    235 0xdb100000u, /* 149 */
    \n-
    236 0x00010b46u, /* 150 */
    \n-
    237 0xc6cdd6e3u, /* 151 */
    \n-
    238 0xe0828f4du, /* 152 */
    \n-
    239 0xb456ff0cu, /* 153 */
    \n-
    240 0x8ea00000u, /* 154 */
    \n-
    241 0x000a70c3u, /* 155 */
    \n-
    242 0xc40a64e6u, /* 156 */
    \n-
    243 0xc5199909u, /* 157 */
    \n-
    244 0x0b65f67du, /* 158 */
    \n-
    245 0x92400000u, /* 159 */
    \n-
    246 0x006867a5u, /* 160 */
    \n-
    247 0xa867f103u, /* 161 */
    \n-
    248 0xb2fffa5au, /* 162 */
    \n-
    249 0x71fba0e7u, /* 163 */
    \n-
    250 0xb6800000u, /* 164 */
    \n-
    251 0x04140c78u, /* 165 */
    \n-
    252 0x940f6a24u, /* 166 */
    \n-
    253 0xfdffc788u, /* 167 */
    \n-
    254 0x73d4490du, /* 168 */
    \n-
    255 0x21000000u, /* 169 */
    \n-
    256 0x28c87cb5u, /* 170 */
    \n-
    257 0xc89a2571u, /* 171 */
    \n-
    258 0xebfdcb54u, /* 172 */
    \n-
    259 0x864ada83u, /* 173 */
    \n-
    260 0x4a000000u, /* 174 */
    \n-
    261 0x00000001u, /* 175 */
    \n-
    262 0x97d4df19u, /* 176 */
    \n-
    263 0xd6057673u, /* 177 */
    \n-
    264 0x37e9f14du, /* 178 */
    \n-
    265 0x3eec8920u, /* 179 */
    \n-
    266 0xe4000000u, /* 180 */
    \n-
    267 0x0000000fu, /* 181 */
    \n-
    268 0xee50b702u, /* 182 */
    \n-
    269 0x5c36a080u, /* 183 */
    \n-
    270 0x2f236d04u, /* 184 */
    \n-
    271 0x753d5b48u, /* 185 */
    \n-
    272 0xe8000000u, /* 186 */
    \n-
    273 0x0000009fu, /* 187 */
    \n-
    274 0x4f272617u, /* 188 */
    \n-
    275 0x9a224501u, /* 189 */
    \n-
    276 0xd762422cu, /* 190 */
    \n-
    277 0x946590d9u, /* 191 */
    \n-
    278 0x10000000u, /* 192 */
    \n-
    279 0x00000639u, /* 193 */
    \n-
    280 0x17877cecu, /* 194 */
    \n-
    281 0x0556b212u, /* 195 */
    \n-
    282 0x69d695bdu, /* 196 */
    \n-
    283 0xcbf7a87au, /* 197 */
    \n-
    284 0xa0000000u, /* 198 */
    \n-
    285 0x00003e3au, /* 199 */
    \n-
    286 0xeb4ae138u, /* 200 */
    \n-
    287 0x3562f4b8u, /* 201 */
    \n-
    288 0x2261d969u, /* 202 */
    \n-
    289 0xf7ac94cau, /* 203 */
    \n-
    290 0x40000000u, /* 204 */
    \n-
    291 0x00026e4du, /* 205 */
    \n-
    292 0x30eccc32u, /* 206 */
    \n-
    293 0x15dd8f31u, /* 207 */
    \n-
    294 0x57d27e23u, /* 208 */
    \n-
    295 0xacbdcfe6u, /* 209 */
    \n-
    296 0x80000000u, /* 210 */
    \n-
    297 0x00184f03u, /* 211 */
    \n-
    298 0xe93ff9f4u, /* 212 */
    \n-
    299 0xdaa797edu, /* 213 */
    \n-
    300 0x6e38ed64u, /* 214 */
    \n-
    301 0xbf6a1f01u, /* 215 */
    \n-
    302 0x00f31627u, /* 216 */
    \n-
    303 0x1c7fc390u, /* 217 */
    \n-
    304 0x8a8bef46u, /* 218 */
    \n-
    305 0x4e3945efu, /* 219 */
    \n-
    306 0x7a25360au, /* 220 */
    \n-
    307 0x097edd87u, /* 221 */
    \n-
    308 0x1cfda3a5u, /* 222 */
    \n-
    309 0x697758bfu, /* 223 */
    \n-
    310 0x0e3cbb5au, /* 224 */
    \n-
    311 0xc5741c64u, /* 225 */
    \n-
    312 0x5ef4a747u, /* 226 */
    \n-
    313 0x21e86476u, /* 227 */
    \n-
    314 0x1ea97776u, /* 228 */
    \n-
    315 0x8e5f518bu, /* 229 */
    \n-
    316 0xb6891be8u, /* 230 */
    \n-
    317 0x00000003u, /* 231 */
    \n-
    318 0xb58e88c7u, /* 232 */
    \n-
    319 0x5313ec9du, /* 233 */
    \n-
    320 0x329eaaa1u, /* 234 */
    \n-
    321 0x8fb92f75u, /* 235 */
    \n-
    322 0x215b1710u, /* 236 */
    \n-
    323 0x00000025u, /* 237 */
    \n-
    324 0x179157c9u, /* 238 */
    \n-
    325 0x3ec73e23u, /* 239 */
    \n-
    326 0xfa32aa4fu, /* 240 */
    \n-
    327 0x9d3bda93u, /* 241 */
    \n-
    328 0x4d8ee6a0u, /* 242 */
    \n-
    329 0x00000172u, /* 243 */
    \n-
    330 0xebad6ddcu, /* 244 */
    \n-
    331 0x73c86d67u, /* 245 */
    \n-
    332 0xc5faa71cu, /* 246 */
    \n-
    333 0x245689c1u, /* 247 */
    \n-
    334 0x07950240u, /* 248 */
    \n-
    335 0x00000e7du, /* 249 */
    \n-
    336 0x34c64a9cu, /* 250 */
    \n-
    337 0x85d4460du, /* 251 */
    \n-
    338 0xbbca8719u, /* 252 */
    \n-
    339 0x6b61618au, /* 253 */
    \n-
    340 0x4bd21680u, /* 254 */
    \n-
    341 0x000090e4u, /* 255 */
    \n-
    342 0x0fbeea1du, /* 256 */
    \n-
    343 0x3a4abc89u, /* 257 */
    \n-
    344 0x55e946feu, /* 258 */
    \n-
    345 0x31cdcf66u, /* 259 */
    \n-
    346 0xf634e100u, /* 260 */
    \n-
    347 0x0005a8e8u, /* 261 */
    \n-
    348 0x9d752524u, /* 262 */
    \n-
    349 0x46eb5d5du, /* 263 */
    \n-
    350 0x5b1cc5edu, /* 264 */
    \n-
    351 0xf20a1a05u, /* 265 */
    \n-
    352 0x9e10ca00u, /* 266 */
    \n-
    353 0x00389916u, /* 267 */
    \n-
    354 0x2693736au, /* 268 */
    \n-
    355 0xc531a5a5u, /* 269 */
    \n-
    356 0x8f1fbb4bu, /* 270 */
    \n-
    357 0x74650438u, /* 271 */
    \n-
    358 0x2ca7e400u, /* 272 */
    \n-
    359 0x0235faddu, /* 273 */
    \n-
    360 0x81c2822bu, /* 274 */
    \n-
    361 0xb3f07877u, /* 275 */
    \n-
    362 0x973d50f2u, /* 276 */
    \n-
    363 0x8bf22a31u, /* 277 */
    \n-
    364 0xbe8ee800u, /* 278 */
    \n-
    365 0x161bcca7u, /* 279 */
    \n-
    366 0x119915b5u, /* 280 */
    \n-
    367 0x0764b4abu, /* 281 */
    \n-
    368 0xe8652979u, /* 282 */
    \n-
    369 0x7775a5f1u, /* 283 */
    \n-
    370 0x71951000u, /* 284 */
    \n-
    371 0xdd15fe86u, /* 285 */
    \n-
    372 0xaffad912u, /* 286 */
    \n-
    373 0x49ef0eb7u, /* 287 */
    \n-
    374 0x13f39ebeu, /* 288 */
    \n-
    375 0xaa987b6eu, /* 289 */
    \n-
    376 0x6fd2a000u, /* 290 */
    \n-
    377};
    \n+
    3#ifdef ENABLE_ODBC_WIDE
    \n+
    4static SQLRETURN _SQLDriverConnect(SQLHDBC hdbc,
    \n+
    5 SQLHWND hwnd,
    \n+
    6 ODBC_CHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,
    \n+
    7 ODBC_CHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR* pcbConnStrOut,
    \n+
    8 SQLUSMALLINT fDriverCompletion, int wide);
    \n+
    9
    \n+
    10SQLRETURN ODBC_PUBLIC ODBC_API SQLDriverConnectW(
    \n+
    11 SQLHDBC hdbc,
    \n+
    12 SQLHWND hwnd,
    \n+
    13 SQLWCHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,
    \n+
    14 SQLWCHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR* pcbConnStrOut,
    \n+
    15 SQLUSMALLINT fDriverCompletion)
    \n+
    16{
    \n+
    17 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    18 SQLWSTR_BUFS(1);
    \n+
    19 tdsdump_log(TDS_DBG_FUNC, "SQLDriverConnectW(%p, %p, %ls, %d, %p, %d, %p, %u)\\n",
    \n+
    20 hdbc,
    \n+
    21 hwnd,
    \n+
    22 SQLWSTR(szConnStrIn), (int) cbConnStrIn,
    \n+
    23 szConnStrOut, (int) cbConnStrOutMax, pcbConnStrOut,
    \n+
    24 (unsigned int) fDriverCompletion);
    \n+
    25 SQLWSTR_FREE();
    \n+
    26 }
    \n+
    27 return _SQLDriverConnect(hdbc,
    \n+
    28 hwnd,
    \n+
    29 (ODBC_CHAR*) szConnStrIn, cbConnStrIn,
    \n+
    30 (ODBC_CHAR*) szConnStrOut, cbConnStrOutMax, pcbConnStrOut,
    \n+
    31 fDriverCompletion, 1);
    \n+
    32}
    \n+
    33#endif
    \n+
    34
    \n+
    35SQLRETURN ODBC_PUBLIC ODBC_API SQLDriverConnect(
    \n+
    36 SQLHDBC hdbc,
    \n+
    37 SQLHWND hwnd,
    \n+
    38 SQLCHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,
    \n+
    39 SQLCHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR* pcbConnStrOut,
    \n+
    40 SQLUSMALLINT fDriverCompletion)
    \n+
    41{
    \n+
    42 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLDriverConnect(%p, %p, %s, %d, %p, %d, %p, %u)\\n",
    \n+
    43 hdbc,
    \n+
    44 hwnd,
    \n+
    45 (const char*) szConnStrIn, (int) cbConnStrIn,
    \n+
    46 szConnStrOut, (int) cbConnStrOutMax, pcbConnStrOut,
    \n+
    47 (unsigned int) fDriverCompletion);
    \n+
    48#ifdef ENABLE_ODBC_WIDE
    \n+
    49 return _SQLDriverConnect(hdbc,
    \n+
    50 hwnd,
    \n+
    51 (ODBC_CHAR*) szConnStrIn, cbConnStrIn,
    \n+
    52 (ODBC_CHAR*) szConnStrOut, cbConnStrOutMax, pcbConnStrOut,
    \n+
    53 fDriverCompletion, 0);
    \n+
    54#else
    \n+
    55 return _SQLDriverConnect(hdbc,
    \n+
    56 hwnd,
    \n+
    57 szConnStrIn, cbConnStrIn,
    \n+
    58 szConnStrOut, cbConnStrOutMax, pcbConnStrOut,
    \n+
    59 fDriverCompletion);
    \n+
    60#endif
    \n+
    61}
    \n+
    62
    \n+
    63#ifdef ENABLE_ODBC_WIDE
    \n+
    64static SQLRETURN _SQLColumnPrivileges(SQLHSTMT hstmt,
    \n+
    65 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    66 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    67 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    68 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);
    \n+
    69
    \n+
    70SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnPrivilegesW(
    \n+
    71 SQLHSTMT hstmt,
    \n+
    72 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    73 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    74 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    75 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    76{
    \n+
    77 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    78 SQLWSTR_BUFS(4);
    \n+
    79 tdsdump_log(TDS_DBG_FUNC, "SQLColumnPrivilegesW(%p, %ls, %d, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    80 hstmt,
    \n+
    81 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    82 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    83 SQLWSTR(szTableName), (int) cbTableName,
    \n+
    84 SQLWSTR(szColumnName), (int) cbColumnName);
    \n+
    85 SQLWSTR_FREE();
    \n+
    86 }
    \n+
    87 return _SQLColumnPrivileges(hstmt,
    \n+
    88 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    89 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    90 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    91 (ODBC_CHAR*) szColumnName, cbColumnName, 1);
    \n+
    92}
    \n+
    93#endif
    \n+
    94
    \n+
    95SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnPrivileges(
    \n+
    96 SQLHSTMT hstmt,
    \n+
    97 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    98 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    99 SQLCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    100 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    101{
    \n+
    102 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLColumnPrivileges(%p, %s, %d, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    103 hstmt,
    \n+
    104 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    105 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    106 (const char*) szTableName, (int) cbTableName,
    \n+
    107 (const char*) szColumnName, (int) cbColumnName);
    \n+
    108#ifdef ENABLE_ODBC_WIDE
    \n+
    109 return _SQLColumnPrivileges(hstmt,
    \n+
    110 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    111 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    112 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    113 (ODBC_CHAR*) szColumnName, cbColumnName, 0);
    \n+
    114#else
    \n+
    115 return _SQLColumnPrivileges(hstmt,
    \n+
    116 szCatalogName, cbCatalogName,
    \n+
    117 szSchemaName, cbSchemaName,
    \n+
    118 szTableName, cbTableName,
    \n+
    119 szColumnName, cbColumnName);
    \n+
    120#endif
    \n+
    121}
    \n+
    122
    \n+
    123#ifdef ENABLE_ODBC_WIDE
    \n+
    124static SQLRETURN _SQLForeignKeys(SQLHSTMT hstmt,
    \n+
    125 ODBC_CHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,
    \n+
    126 ODBC_CHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,
    \n+
    127 ODBC_CHAR * szPkTableName, SQLSMALLINT cbPkTableName,
    \n+
    128 ODBC_CHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,
    \n+
    129 ODBC_CHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,
    \n+
    130 ODBC_CHAR * szFkTableName, SQLSMALLINT cbFkTableName, int wide);
    \n+
    131
    \n+
    132SQLRETURN ODBC_PUBLIC ODBC_API SQLForeignKeysW(
    \n+
    133 SQLHSTMT hstmt,
    \n+
    134 SQLWCHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,
    \n+
    135 SQLWCHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,
    \n+
    136 SQLWCHAR * szPkTableName, SQLSMALLINT cbPkTableName,
    \n+
    137 SQLWCHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,
    \n+
    138 SQLWCHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,
    \n+
    139 SQLWCHAR * szFkTableName, SQLSMALLINT cbFkTableName)
    \n+
    140{
    \n+
    141 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    142 SQLWSTR_BUFS(6);
    \n+
    143 tdsdump_log(TDS_DBG_FUNC, "SQLForeignKeysW(%p, %ls, %d, %ls, %d, %ls, %d, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    144 hstmt,
    \n+
    145 SQLWSTR(szPkCatalogName), (int) cbPkCatalogName,
    \n+
    146 SQLWSTR(szPkSchemaName), (int) cbPkSchemaName,
    \n+
    147 SQLWSTR(szPkTableName), (int) cbPkTableName,
    \n+
    148 SQLWSTR(szFkCatalogName), (int) cbFkCatalogName,
    \n+
    149 SQLWSTR(szFkSchemaName), (int) cbFkSchemaName,
    \n+
    150 SQLWSTR(szFkTableName), (int) cbFkTableName);
    \n+
    151 SQLWSTR_FREE();
    \n+
    152 }
    \n+
    153 return _SQLForeignKeys(hstmt,
    \n+
    154 (ODBC_CHAR*) szPkCatalogName, cbPkCatalogName,
    \n+
    155 (ODBC_CHAR*) szPkSchemaName, cbPkSchemaName,
    \n+
    156 (ODBC_CHAR*) szPkTableName, cbPkTableName,
    \n+
    157 (ODBC_CHAR*) szFkCatalogName, cbFkCatalogName,
    \n+
    158 (ODBC_CHAR*) szFkSchemaName, cbFkSchemaName,
    \n+
    159 (ODBC_CHAR*) szFkTableName, cbFkTableName, 1);
    \n+
    160}
    \n+
    161#endif
    \n+
    162
    \n+
    163SQLRETURN ODBC_PUBLIC ODBC_API SQLForeignKeys(
    \n+
    164 SQLHSTMT hstmt,
    \n+
    165 SQLCHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,
    \n+
    166 SQLCHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,
    \n+
    167 SQLCHAR * szPkTableName, SQLSMALLINT cbPkTableName,
    \n+
    168 SQLCHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,
    \n+
    169 SQLCHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,
    \n+
    170 SQLCHAR * szFkTableName, SQLSMALLINT cbFkTableName)
    \n+
    171{
    \n+
    172 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLForeignKeys(%p, %s, %d, %s, %d, %s, %d, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    173 hstmt,
    \n+
    174 (const char*) szPkCatalogName, (int) cbPkCatalogName,
    \n+
    175 (const char*) szPkSchemaName, (int) cbPkSchemaName,
    \n+
    176 (const char*) szPkTableName, (int) cbPkTableName,
    \n+
    177 (const char*) szFkCatalogName, (int) cbFkCatalogName,
    \n+
    178 (const char*) szFkSchemaName, (int) cbFkSchemaName,
    \n+
    179 (const char*) szFkTableName, (int) cbFkTableName);
    \n+
    180#ifdef ENABLE_ODBC_WIDE
    \n+
    181 return _SQLForeignKeys(hstmt,
    \n+
    182 (ODBC_CHAR*) szPkCatalogName, cbPkCatalogName,
    \n+
    183 (ODBC_CHAR*) szPkSchemaName, cbPkSchemaName,
    \n+
    184 (ODBC_CHAR*) szPkTableName, cbPkTableName,
    \n+
    185 (ODBC_CHAR*) szFkCatalogName, cbFkCatalogName,
    \n+
    186 (ODBC_CHAR*) szFkSchemaName, cbFkSchemaName,
    \n+
    187 (ODBC_CHAR*) szFkTableName, cbFkTableName, 0);
    \n+
    188#else
    \n+
    189 return _SQLForeignKeys(hstmt,
    \n+
    190 szPkCatalogName, cbPkCatalogName,
    \n+
    191 szPkSchemaName, cbPkSchemaName,
    \n+
    192 szPkTableName, cbPkTableName,
    \n+
    193 szFkCatalogName, cbFkCatalogName,
    \n+
    194 szFkSchemaName, cbFkSchemaName,
    \n+
    195 szFkTableName, cbFkTableName);
    \n+
    196#endif
    \n+
    197}
    \n+
    198
    \n+
    199#ifdef ENABLE_ODBC_WIDE
    \n+
    200static SQLRETURN _SQLNativeSql(SQLHDBC hdbc,
    \n+
    201 ODBC_CHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,
    \n+
    202 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr, int wide);
    \n+
    203
    \n+
    204SQLRETURN ODBC_PUBLIC ODBC_API SQLNativeSqlW(
    \n+
    205 SQLHDBC hdbc,
    \n+
    206 SQLWCHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,
    \n+
    207 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr)
    \n+
    208{
    \n+
    209 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    210 SQLWSTR_BUFS(1);
    \n+
    211 tdsdump_log(TDS_DBG_FUNC, "SQLNativeSqlW(%p, %ls, %d, %p, %d, %p)\\n",
    \n+
    212 hdbc,
    \n+
    213 SQLWSTR(szSqlStrIn), (int) cbSqlStrIn,
    \n+
    214 szSqlStr, (int) cbSqlStrMax, pcbSqlStr);
    \n+
    215 SQLWSTR_FREE();
    \n+
    216 }
    \n+
    217 return _SQLNativeSql(hdbc,
    \n+
    218 (ODBC_CHAR*) szSqlStrIn, cbSqlStrIn,
    \n+
    219 (ODBC_CHAR*) szSqlStr, cbSqlStrMax, pcbSqlStr, 1);
    \n+
    220}
    \n+
    221#endif
    \n+
    222
    \n+
    223SQLRETURN ODBC_PUBLIC ODBC_API SQLNativeSql(
    \n+
    224 SQLHDBC hdbc,
    \n+
    225 SQLCHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,
    \n+
    226 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr)
    \n+
    227{
    \n+
    228 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLNativeSql(%p, %s, %d, %p, %d, %p)\\n",
    \n+
    229 hdbc,
    \n+
    230 (const char*) szSqlStrIn, (int) cbSqlStrIn,
    \n+
    231 szSqlStr, (int) cbSqlStrMax, pcbSqlStr);
    \n+
    232#ifdef ENABLE_ODBC_WIDE
    \n+
    233 return _SQLNativeSql(hdbc,
    \n+
    234 (ODBC_CHAR*) szSqlStrIn, cbSqlStrIn,
    \n+
    235 (ODBC_CHAR*) szSqlStr, cbSqlStrMax, pcbSqlStr, 0);
    \n+
    236#else
    \n+
    237 return _SQLNativeSql(hdbc,
    \n+
    238 szSqlStrIn, cbSqlStrIn,
    \n+
    239 szSqlStr, cbSqlStrMax, pcbSqlStr);
    \n+
    240#endif
    \n+
    241}
    \n+
    242
    \n+
    243#ifdef ENABLE_ODBC_WIDE
    \n+
    244static SQLRETURN _SQLPrimaryKeys(SQLHSTMT hstmt,
    \n+
    245 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    246 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    247 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName, int wide);
    \n+
    248
    \n+
    249SQLRETURN ODBC_PUBLIC ODBC_API SQLPrimaryKeysW(
    \n+
    250 SQLHSTMT hstmt,
    \n+
    251 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    252 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    253 SQLWCHAR * szTableName, SQLSMALLINT cbTableName)
    \n+
    254{
    \n+
    255 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    256 SQLWSTR_BUFS(3);
    \n+
    257 tdsdump_log(TDS_DBG_FUNC, "SQLPrimaryKeysW(%p, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    258 hstmt,
    \n+
    259 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    260 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    261 SQLWSTR(szTableName), (int) cbTableName);
    \n+
    262 SQLWSTR_FREE();
    \n+
    263 }
    \n+
    264 return _SQLPrimaryKeys(hstmt,
    \n+
    265 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    266 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    267 (ODBC_CHAR*) szTableName, cbTableName, 1);
    \n+
    268}
    \n+
    269#endif
    \n+
    270
    \n+
    271SQLRETURN ODBC_PUBLIC ODBC_API SQLPrimaryKeys(
    \n+
    272 SQLHSTMT hstmt,
    \n+
    273 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    274 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    275 SQLCHAR * szTableName, SQLSMALLINT cbTableName)
    \n+
    276{
    \n+
    277 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLPrimaryKeys(%p, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    278 hstmt,
    \n+
    279 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    280 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    281 (const char*) szTableName, (int) cbTableName);
    \n+
    282#ifdef ENABLE_ODBC_WIDE
    \n+
    283 return _SQLPrimaryKeys(hstmt,
    \n+
    284 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    285 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    286 (ODBC_CHAR*) szTableName, cbTableName, 0);
    \n+
    287#else
    \n+
    288 return _SQLPrimaryKeys(hstmt,
    \n+
    289 szCatalogName, cbCatalogName,
    \n+
    290 szSchemaName, cbSchemaName,
    \n+
    291 szTableName, cbTableName);
    \n+
    292#endif
    \n+
    293}
    \n+
    294
    \n+
    295#ifdef ENABLE_ODBC_WIDE
    \n+
    296static SQLRETURN _SQLProcedureColumns(SQLHSTMT hstmt,
    \n+
    297 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    298 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    299 ODBC_CHAR * szProcName, SQLSMALLINT cbProcName,
    \n+
    300 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);
    \n+
    301
    \n+
    302SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedureColumnsW(
    \n+
    303 SQLHSTMT hstmt,
    \n+
    304 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    305 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    306 SQLWCHAR * szProcName, SQLSMALLINT cbProcName,
    \n+
    307 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    308{
    \n+
    309 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    310 SQLWSTR_BUFS(4);
    \n+
    311 tdsdump_log(TDS_DBG_FUNC, "SQLProcedureColumnsW(%p, %ls, %d, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    312 hstmt,
    \n+
    313 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    314 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    315 SQLWSTR(szProcName), (int) cbProcName,
    \n+
    316 SQLWSTR(szColumnName), (int) cbColumnName);
    \n+
    317 SQLWSTR_FREE();
    \n+
    318 }
    \n+
    319 return _SQLProcedureColumns(hstmt,
    \n+
    320 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    321 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    322 (ODBC_CHAR*) szProcName, cbProcName,
    \n+
    323 (ODBC_CHAR*) szColumnName, cbColumnName, 1);
    \n+
    324}
    \n+
    325#endif
    \n+
    326
    \n+
    327SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedureColumns(
    \n+
    328 SQLHSTMT hstmt,
    \n+
    329 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    330 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    331 SQLCHAR * szProcName, SQLSMALLINT cbProcName,
    \n+
    332 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    333{
    \n+
    334 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLProcedureColumns(%p, %s, %d, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    335 hstmt,
    \n+
    336 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    337 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    338 (const char*) szProcName, (int) cbProcName,
    \n+
    339 (const char*) szColumnName, (int) cbColumnName);
    \n+
    340#ifdef ENABLE_ODBC_WIDE
    \n+
    341 return _SQLProcedureColumns(hstmt,
    \n+
    342 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    343 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    344 (ODBC_CHAR*) szProcName, cbProcName,
    \n+
    345 (ODBC_CHAR*) szColumnName, cbColumnName, 0);
    \n+
    346#else
    \n+
    347 return _SQLProcedureColumns(hstmt,
    \n+
    348 szCatalogName, cbCatalogName,
    \n+
    349 szSchemaName, cbSchemaName,
    \n+
    350 szProcName, cbProcName,
    \n+
    351 szColumnName, cbColumnName);
    \n+
    352#endif
    \n+
    353}
    \n+
    354
    \n+
    355#ifdef ENABLE_ODBC_WIDE
    \n+
    356static SQLRETURN _SQLProcedures(SQLHSTMT hstmt,
    \n+
    357 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    358 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    359 ODBC_CHAR * szProcName, SQLSMALLINT cbProcName, int wide);
    \n+
    360
    \n+
    361SQLRETURN ODBC_PUBLIC ODBC_API SQLProceduresW(
    \n+
    362 SQLHSTMT hstmt,
    \n+
    363 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    364 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    365 SQLWCHAR * szProcName, SQLSMALLINT cbProcName)
    \n+
    366{
    \n+
    367 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    368 SQLWSTR_BUFS(3);
    \n+
    369 tdsdump_log(TDS_DBG_FUNC, "SQLProceduresW(%p, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    370 hstmt,
    \n+
    371 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    372 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    373 SQLWSTR(szProcName), (int) cbProcName);
    \n+
    374 SQLWSTR_FREE();
    \n+
    375 }
    \n+
    376 return _SQLProcedures(hstmt,
    \n+
    377 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    378 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    379 (ODBC_CHAR*) szProcName, cbProcName, 1);
    \n+
    380}
    \n+
    381#endif
    \n+
    382
    \n+
    383SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedures(
    \n+
    384 SQLHSTMT hstmt,
    \n+
    385 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    386 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    387 SQLCHAR * szProcName, SQLSMALLINT cbProcName)
    \n+
    388{
    \n+
    389 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLProcedures(%p, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    390 hstmt,
    \n+
    391 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    392 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    393 (const char*) szProcName, (int) cbProcName);
    \n+
    394#ifdef ENABLE_ODBC_WIDE
    \n+
    395 return _SQLProcedures(hstmt,
    \n+
    396 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    397 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    398 (ODBC_CHAR*) szProcName, cbProcName, 0);
    \n+
    399#else
    \n+
    400 return _SQLProcedures(hstmt,
    \n+
    401 szCatalogName, cbCatalogName,
    \n+
    402 szSchemaName, cbSchemaName,
    \n+
    403 szProcName, cbProcName);
    \n+
    404#endif
    \n+
    405}
    \n+
    406
    \n+
    407#ifdef ENABLE_ODBC_WIDE
    \n+
    408static SQLRETURN _SQLTablePrivileges(SQLHSTMT hstmt,
    \n+
    409 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    410 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    411 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName, int wide);
    \n+
    412
    \n+
    413SQLRETURN ODBC_PUBLIC ODBC_API SQLTablePrivilegesW(
    \n+
    414 SQLHSTMT hstmt,
    \n+
    415 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    416 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    417 SQLWCHAR * szTableName, SQLSMALLINT cbTableName)
    \n+
    418{
    \n+
    419 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    420 SQLWSTR_BUFS(3);
    \n+
    421 tdsdump_log(TDS_DBG_FUNC, "SQLTablePrivilegesW(%p, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    422 hstmt,
    \n+
    423 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    424 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    425 SQLWSTR(szTableName), (int) cbTableName);
    \n+
    426 SQLWSTR_FREE();
    \n+
    427 }
    \n+
    428 return _SQLTablePrivileges(hstmt,
    \n+
    429 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    430 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    431 (ODBC_CHAR*) szTableName, cbTableName, 1);
    \n+
    432}
    \n+
    433#endif
    \n+
    434
    \n+
    435SQLRETURN ODBC_PUBLIC ODBC_API SQLTablePrivileges(
    \n+
    436 SQLHSTMT hstmt,
    \n+
    437 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    438 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    439 SQLCHAR * szTableName, SQLSMALLINT cbTableName)
    \n+
    440{
    \n+
    441 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLTablePrivileges(%p, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    442 hstmt,
    \n+
    443 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    444 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    445 (const char*) szTableName, (int) cbTableName);
    \n+
    446#ifdef ENABLE_ODBC_WIDE
    \n+
    447 return _SQLTablePrivileges(hstmt,
    \n+
    448 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    449 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    450 (ODBC_CHAR*) szTableName, cbTableName, 0);
    \n+
    451#else
    \n+
    452 return _SQLTablePrivileges(hstmt,
    \n+
    453 szCatalogName, cbCatalogName,
    \n+
    454 szSchemaName, cbSchemaName,
    \n+
    455 szTableName, cbTableName);
    \n+
    456#endif
    \n+
    457}
    \n+
    458
    \n+
    459#ifdef ENABLE_ODBC_WIDE
    \n+
    460static SQLRETURN _SQLConnect(SQLHDBC hdbc,
    \n+
    461 ODBC_CHAR * szDSN, SQLSMALLINT cbDSN,
    \n+
    462 ODBC_CHAR * szUID, SQLSMALLINT cbUID,
    \n+
    463 ODBC_CHAR * szAuthStr, SQLSMALLINT cbAuthStr, int wide);
    \n+
    464
    \n+
    465SQLRETURN ODBC_PUBLIC ODBC_API SQLConnectW(
    \n+
    466 SQLHDBC hdbc,
    \n+
    467 SQLWCHAR * szDSN, SQLSMALLINT cbDSN,
    \n+
    468 SQLWCHAR * szUID, SQLSMALLINT cbUID,
    \n+
    469 SQLWCHAR * szAuthStr, SQLSMALLINT cbAuthStr)
    \n+
    470{
    \n+
    471 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    472 SQLWSTR_BUFS(3);
    \n+
    473 tdsdump_log(TDS_DBG_FUNC, "SQLConnectW(%p, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    474 hdbc,
    \n+
    475 SQLWSTR(szDSN), (int) cbDSN,
    \n+
    476 SQLWSTR(szUID), (int) cbUID,
    \n+
    477 SQLWSTR(szAuthStr), (int) cbAuthStr);
    \n+
    478 SQLWSTR_FREE();
    \n+
    479 }
    \n+
    480 return _SQLConnect(hdbc,
    \n+
    481 (ODBC_CHAR*) szDSN, cbDSN,
    \n+
    482 (ODBC_CHAR*) szUID, cbUID,
    \n+
    483 (ODBC_CHAR*) szAuthStr, cbAuthStr, 1);
    \n+
    484}
    \n+
    485#endif
    \n+
    486
    \n+
    487SQLRETURN ODBC_PUBLIC ODBC_API SQLConnect(
    \n+
    488 SQLHDBC hdbc,
    \n+
    489 SQLCHAR * szDSN, SQLSMALLINT cbDSN,
    \n+
    490 SQLCHAR * szUID, SQLSMALLINT cbUID,
    \n+
    491 SQLCHAR * szAuthStr, SQLSMALLINT cbAuthStr)
    \n+
    492{
    \n+
    493 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLConnect(%p, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    494 hdbc,
    \n+
    495 (const char*) szDSN, (int) cbDSN,
    \n+
    496 (const char*) szUID, (int) cbUID,
    \n+
    497 (const char*) szAuthStr, (int) cbAuthStr);
    \n+
    498#ifdef ENABLE_ODBC_WIDE
    \n+
    499 return _SQLConnect(hdbc,
    \n+
    500 (ODBC_CHAR*) szDSN, cbDSN,
    \n+
    501 (ODBC_CHAR*) szUID, cbUID,
    \n+
    502 (ODBC_CHAR*) szAuthStr, cbAuthStr, 0);
    \n+
    503#else
    \n+
    504 return _SQLConnect(hdbc,
    \n+
    505 szDSN, cbDSN,
    \n+
    506 szUID, cbUID,
    \n+
    507 szAuthStr, cbAuthStr);
    \n+
    508#endif
    \n+
    509}
    \n+
    510
    \n+
    511#ifdef ENABLE_ODBC_WIDE
    \n+
    512static SQLRETURN _SQLDescribeCol(SQLHSTMT hstmt,
    \n+
    513 SQLUSMALLINT icol,
    \n+
    514 ODBC_CHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR* pcbColName,
    \n+
    515 SQLSMALLINT * pfSqlType,
    \n+
    516 SQLULEN * pcbColDef,
    \n+
    517 SQLSMALLINT * pibScale,
    \n+
    518 SQLSMALLINT * pfNullable, int wide);
    \n+
    519
    \n+
    520SQLRETURN ODBC_PUBLIC ODBC_API SQLDescribeColW(
    \n+
    521 SQLHSTMT hstmt,
    \n+
    522 SQLUSMALLINT icol,
    \n+
    523 SQLWCHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR* pcbColName,
    \n+
    524 SQLSMALLINT * pfSqlType,
    \n+
    525 SQLULEN * pcbColDef,
    \n+
    526 SQLSMALLINT * pibScale,
    \n+
    527 SQLSMALLINT * pfNullable)
    \n+
    528{
    \n+
    529 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLDescribeColW(%p, %u, %p, %d, %p, %p, %p, %p, %p)\\n",
    \n+
    530 hstmt,
    \n+
    531 (unsigned int) icol,
    \n+
    532 szColName, (int) cbColNameMax, pcbColName,
    \n+
    533 pfSqlType,
    \n+
    534 pcbColDef,
    \n+
    535 pibScale,
    \n+
    536 pfNullable);
    \n+
    537 return _SQLDescribeCol(hstmt,
    \n+
    538 icol,
    \n+
    539 (ODBC_CHAR*) szColName, cbColNameMax, pcbColName,
    \n+
    540 pfSqlType,
    \n+
    541 pcbColDef,
    \n+
    542 pibScale,
    \n+
    543 pfNullable, 1);
    \n+
    544}
    \n+
    545#endif
    \n+
    546
    \n+
    547SQLRETURN ODBC_PUBLIC ODBC_API SQLDescribeCol(
    \n+
    548 SQLHSTMT hstmt,
    \n+
    549 SQLUSMALLINT icol,
    \n+
    550 SQLCHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR* pcbColName,
    \n+
    551 SQLSMALLINT * pfSqlType,
    \n+
    552 SQLULEN * pcbColDef,
    \n+
    553 SQLSMALLINT * pibScale,
    \n+
    554 SQLSMALLINT * pfNullable)
    \n+
    555{
    \n+
    556 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLDescribeCol(%p, %u, %p, %d, %p, %p, %p, %p, %p)\\n",
    \n+
    557 hstmt,
    \n+
    558 (unsigned int) icol,
    \n+
    559 szColName, (int) cbColNameMax, pcbColName,
    \n+
    560 pfSqlType,
    \n+
    561 pcbColDef,
    \n+
    562 pibScale,
    \n+
    563 pfNullable);
    \n+
    564#ifdef ENABLE_ODBC_WIDE
    \n+
    565 return _SQLDescribeCol(hstmt,
    \n+
    566 icol,
    \n+
    567 (ODBC_CHAR*) szColName, cbColNameMax, pcbColName,
    \n+
    568 pfSqlType,
    \n+
    569 pcbColDef,
    \n+
    570 pibScale,
    \n+
    571 pfNullable, 0);
    \n+
    572#else
    \n+
    573 return _SQLDescribeCol(hstmt,
    \n+
    574 icol,
    \n+
    575 szColName, cbColNameMax, pcbColName,
    \n+
    576 pfSqlType,
    \n+
    577 pcbColDef,
    \n+
    578 pibScale,
    \n+
    579 pfNullable);
    \n+
    580#endif
    \n+
    581}
    \n+
    582
    \n+
    583#ifdef ENABLE_ODBC_WIDE
    \n+
    584static SQLRETURN _SQLGetDescRec(SQLHDESC hdesc,
    \n+
    585 SQLSMALLINT RecordNumber,
    \n+
    586 ODBC_CHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,
    \n+
    587 SQLSMALLINT * Type,
    \n+
    588 SQLSMALLINT * SubType,
    \n+
    589 SQLLEN * Length,
    \n+
    590 SQLSMALLINT * Precision,
    \n+
    591 SQLSMALLINT * Scale,
    \n+
    592 SQLSMALLINT * Nullable, int wide);
    \n+
    593
    \n+
    594SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescRecW(
    \n+
    595 SQLHDESC hdesc,
    \n+
    596 SQLSMALLINT RecordNumber,
    \n+
    597 SQLWCHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,
    \n+
    598 SQLSMALLINT * Type,
    \n+
    599 SQLSMALLINT * SubType,
    \n+
    600 SQLLEN * Length,
    \n+
    601 SQLSMALLINT * Precision,
    \n+
    602 SQLSMALLINT * Scale,
    \n+
    603 SQLSMALLINT * Nullable)
    \n+
    604{
    \n+
    605 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDescRecW(%p, %d, %p, %d, %p, %p, %p, %p, %p, %p, %p)\\n",
    \n+
    606 hdesc,
    \n+
    607 (int) RecordNumber,
    \n+
    608 szName, (int) cbNameMax, pcbName,
    \n+
    609 Type,
    \n+
    610 SubType,
    \n+
    611 Length,
    \n+
    612 Precision,
    \n+
    613 Scale,
    \n+
    614 Nullable);
    \n+
    615 return _SQLGetDescRec(hdesc,
    \n+
    616 RecordNumber,
    \n+
    617 (ODBC_CHAR*) szName, cbNameMax, pcbName,
    \n+
    618 Type,
    \n+
    619 SubType,
    \n+
    620 Length,
    \n+
    621 Precision,
    \n+
    622 Scale,
    \n+
    623 Nullable, 1);
    \n+
    624}
    \n+
    625#endif
    \n+
    626
    \n+
    627SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescRec(
    \n+
    628 SQLHDESC hdesc,
    \n+
    629 SQLSMALLINT RecordNumber,
    \n+
    630 SQLCHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,
    \n+
    631 SQLSMALLINT * Type,
    \n+
    632 SQLSMALLINT * SubType,
    \n+
    633 SQLLEN * Length,
    \n+
    634 SQLSMALLINT * Precision,
    \n+
    635 SQLSMALLINT * Scale,
    \n+
    636 SQLSMALLINT * Nullable)
    \n+
    637{
    \n+
    638 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDescRec(%p, %d, %p, %d, %p, %p, %p, %p, %p, %p, %p)\\n",
    \n+
    639 hdesc,
    \n+
    640 (int) RecordNumber,
    \n+
    641 szName, (int) cbNameMax, pcbName,
    \n+
    642 Type,
    \n+
    643 SubType,
    \n+
    644 Length,
    \n+
    645 Precision,
    \n+
    646 Scale,
    \n+
    647 Nullable);
    \n+
    648#ifdef ENABLE_ODBC_WIDE
    \n+
    649 return _SQLGetDescRec(hdesc,
    \n+
    650 RecordNumber,
    \n+
    651 (ODBC_CHAR*) szName, cbNameMax, pcbName,
    \n+
    652 Type,
    \n+
    653 SubType,
    \n+
    654 Length,
    \n+
    655 Precision,
    \n+
    656 Scale,
    \n+
    657 Nullable, 0);
    \n+
    658#else
    \n+
    659 return _SQLGetDescRec(hdesc,
    \n+
    660 RecordNumber,
    \n+
    661 szName, cbNameMax, pcbName,
    \n+
    662 Type,
    \n+
    663 SubType,
    \n+
    664 Length,
    \n+
    665 Precision,
    \n+
    666 Scale,
    \n+
    667 Nullable);
    \n+
    668#endif
    \n+
    669}
    \n+
    670
    \n+
    671#ifdef ENABLE_ODBC_WIDE
    \n+
    672static SQLRETURN _SQLGetDescField(SQLHDESC hdesc,
    \n+
    673 SQLSMALLINT icol,
    \n+
    674 SQLSMALLINT fDescType,
    \n+
    675 SQLPOINTER Value,
    \n+
    676 SQLINTEGER BufferLength,
    \n+
    677 SQLINTEGER * StringLength, int wide);
    \n+
    678
    \n+
    679SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescFieldW(
    \n+
    680 SQLHDESC hdesc,
    \n+
    681 SQLSMALLINT icol,
    \n+
    682 SQLSMALLINT fDescType,
    \n+
    683 SQLPOINTER Value,
    \n+
    684 SQLINTEGER BufferLength,
    \n+
    685 SQLINTEGER * StringLength)
    \n+
    686{
    \n+
    687 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDescFieldW(%p, %d, %d, %p, %d, %p)\\n",
    \n+
    688 hdesc,
    \n+
    689 (int) icol,
    \n+
    690 (int) fDescType,
    \n+
    691 Value,
    \n+
    692 (int) BufferLength,
    \n+
    693 StringLength);
    \n+
    694 return _SQLGetDescField(hdesc,
    \n+
    695 icol,
    \n+
    696 fDescType,
    \n+
    697 Value,
    \n+
    698 BufferLength,
    \n+
    699 StringLength, 1);
    \n+
    700}
    \n+
    701#endif
    \n+
    702
    \n+
    703SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescField(
    \n+
    704 SQLHDESC hdesc,
    \n+
    705 SQLSMALLINT icol,
    \n+
    706 SQLSMALLINT fDescType,
    \n+
    707 SQLPOINTER Value,
    \n+
    708 SQLINTEGER BufferLength,
    \n+
    709 SQLINTEGER * StringLength)
    \n+
    710{
    \n+
    711 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetDescField(%p, %d, %d, %p, %d, %p)\\n",
    \n+
    712 hdesc,
    \n+
    713 (int) icol,
    \n+
    714 (int) fDescType,
    \n+
    715 Value,
    \n+
    716 (int) BufferLength,
    \n+
    717 StringLength);
    \n+
    718#ifdef ENABLE_ODBC_WIDE
    \n+
    719 return _SQLGetDescField(hdesc,
    \n+
    720 icol,
    \n+
    721 fDescType,
    \n+
    722 Value,
    \n+
    723 BufferLength,
    \n+
    724 StringLength, 0);
    \n+
    725#else
    \n+
    726 return _SQLGetDescField(hdesc,
    \n+
    727 icol,
    \n+
    728 fDescType,
    \n+
    729 Value,
    \n+
    730 BufferLength,
    \n+
    731 StringLength);
    \n+
    732#endif
    \n+
    733}
    \n+
    734
    \n+
    735#ifdef ENABLE_ODBC_WIDE
    \n+
    736static SQLRETURN _SQLSetDescField(SQLHDESC hdesc,
    \n+
    737 SQLSMALLINT icol,
    \n+
    738 SQLSMALLINT fDescType,
    \n+
    739 SQLPOINTER Value,
    \n+
    740 SQLINTEGER BufferLength, int wide);
    \n+
    741
    \n+
    742SQLRETURN ODBC_PUBLIC ODBC_API SQLSetDescFieldW(
    \n+
    743 SQLHDESC hdesc,
    \n+
    744 SQLSMALLINT icol,
    \n+
    745 SQLSMALLINT fDescType,
    \n+
    746 SQLPOINTER Value,
    \n+
    747 SQLINTEGER BufferLength)
    \n+
    748{
    \n+
    749 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSetDescFieldW(%p, %d, %d, %p, %d)\\n",
    \n+
    750 hdesc,
    \n+
    751 (int) icol,
    \n+
    752 (int) fDescType,
    \n+
    753 Value,
    \n+
    754 (int) BufferLength);
    \n+
    755 return _SQLSetDescField(hdesc,
    \n+
    756 icol,
    \n+
    757 fDescType,
    \n+
    758 Value,
    \n+
    759 BufferLength, 1);
    \n+
    760}
    \n+
    761#endif
    \n+
    762
    \n+
    763SQLRETURN ODBC_PUBLIC ODBC_API SQLSetDescField(
    \n+
    764 SQLHDESC hdesc,
    \n+
    765 SQLSMALLINT icol,
    \n+
    766 SQLSMALLINT fDescType,
    \n+
    767 SQLPOINTER Value,
    \n+
    768 SQLINTEGER BufferLength)
    \n+
    769{
    \n+
    770 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSetDescField(%p, %d, %d, %p, %d)\\n",
    \n+
    771 hdesc,
    \n+
    772 (int) icol,
    \n+
    773 (int) fDescType,
    \n+
    774 Value,
    \n+
    775 (int) BufferLength);
    \n+
    776#ifdef ENABLE_ODBC_WIDE
    \n+
    777 return _SQLSetDescField(hdesc,
    \n+
    778 icol,
    \n+
    779 fDescType,
    \n+
    780 Value,
    \n+
    781 BufferLength, 0);
    \n+
    782#else
    \n+
    783 return _SQLSetDescField(hdesc,
    \n+
    784 icol,
    \n+
    785 fDescType,
    \n+
    786 Value,
    \n+
    787 BufferLength);
    \n+
    788#endif
    \n+
    789}
    \n+
    790
    \n+
    791#ifdef ENABLE_ODBC_WIDE
    \n+
    792static SQLRETURN _SQLExecDirect(SQLHSTMT hstmt,
    \n+
    793 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStr, int wide);
    \n+
    794
    \n+
    795SQLRETURN ODBC_PUBLIC ODBC_API SQLExecDirectW(
    \n+
    796 SQLHSTMT hstmt,
    \n+
    797 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStr)
    \n+
    798{
    \n+
    799 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    800 SQLWSTR_BUFS(1);
    \n+
    801 tdsdump_log(TDS_DBG_FUNC, "SQLExecDirectW(%p, %ls, %d)\\n",
    \n+
    802 hstmt,
    \n+
    803 SQLWSTR(szSqlStr), (int) cbSqlStr);
    \n+
    804 SQLWSTR_FREE();
    \n+
    805 }
    \n+
    806 return _SQLExecDirect(hstmt,
    \n+
    807 (ODBC_CHAR*) szSqlStr, cbSqlStr, 1);
    \n+
    808}
    \n+
    809#endif
    \n+
    810
    \n+
    811SQLRETURN ODBC_PUBLIC ODBC_API SQLExecDirect(
    \n+
    812 SQLHSTMT hstmt,
    \n+
    813 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStr)
    \n+
    814{
    \n+
    815 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLExecDirect(%p, %s, %d)\\n",
    \n+
    816 hstmt,
    \n+
    817 (const char*) szSqlStr, (int) cbSqlStr);
    \n+
    818#ifdef ENABLE_ODBC_WIDE
    \n+
    819 return _SQLExecDirect(hstmt,
    \n+
    820 (ODBC_CHAR*) szSqlStr, cbSqlStr, 0);
    \n+
    821#else
    \n+
    822 return _SQLExecDirect(hstmt,
    \n+
    823 szSqlStr, cbSqlStr);
    \n+
    824#endif
    \n+
    825}
    \n+
    826
    \n+
    827#ifdef ENABLE_ODBC_WIDE
    \n+
    828static SQLRETURN _SQLPrepare(SQLHSTMT hstmt,
    \n+
    829 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStr, int wide);
    \n+
    830
    \n+
    831SQLRETURN ODBC_PUBLIC ODBC_API SQLPrepareW(
    \n+
    832 SQLHSTMT hstmt,
    \n+
    833 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStr)
    \n+
    834{
    \n+
    835 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    836 SQLWSTR_BUFS(1);
    \n+
    837 tdsdump_log(TDS_DBG_FUNC, "SQLPrepareW(%p, %ls, %d)\\n",
    \n+
    838 hstmt,
    \n+
    839 SQLWSTR(szSqlStr), (int) cbSqlStr);
    \n+
    840 SQLWSTR_FREE();
    \n+
    841 }
    \n+
    842 return _SQLPrepare(hstmt,
    \n+
    843 (ODBC_CHAR*) szSqlStr, cbSqlStr, 1);
    \n+
    844}
    \n+
    845#endif
    \n+
    846
    \n+
    847SQLRETURN ODBC_PUBLIC ODBC_API SQLPrepare(
    \n+
    848 SQLHSTMT hstmt,
    \n+
    849 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStr)
    \n+
    850{
    \n+
    851 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLPrepare(%p, %s, %d)\\n",
    \n+
    852 hstmt,
    \n+
    853 (const char*) szSqlStr, (int) cbSqlStr);
    \n+
    854#ifdef ENABLE_ODBC_WIDE
    \n+
    855 return _SQLPrepare(hstmt,
    \n+
    856 (ODBC_CHAR*) szSqlStr, cbSqlStr, 0);
    \n+
    857#else
    \n+
    858 return _SQLPrepare(hstmt,
    \n+
    859 szSqlStr, cbSqlStr);
    \n+
    860#endif
    \n+
    861}
    \n+
    862
    \n+
    863#ifdef ENABLE_ODBC_WIDE
    \n+
    864static SQLRETURN _SQLSetCursorName(SQLHSTMT hstmt,
    \n+
    865 ODBC_CHAR * szCursor, SQLSMALLINT cbCursor, int wide);
    \n+
    866
    \n+
    867SQLRETURN ODBC_PUBLIC ODBC_API SQLSetCursorNameW(
    \n+
    868 SQLHSTMT hstmt,
    \n+
    869 SQLWCHAR * szCursor, SQLSMALLINT cbCursor)
    \n+
    870{
    \n+
    871 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    872 SQLWSTR_BUFS(1);
    \n+
    873 tdsdump_log(TDS_DBG_FUNC, "SQLSetCursorNameW(%p, %ls, %d)\\n",
    \n+
    874 hstmt,
    \n+
    875 SQLWSTR(szCursor), (int) cbCursor);
    \n+
    876 SQLWSTR_FREE();
    \n+
    877 }
    \n+
    878 return _SQLSetCursorName(hstmt,
    \n+
    879 (ODBC_CHAR*) szCursor, cbCursor, 1);
    \n+
    880}
    \n+
    881#endif
    \n+
    882
    \n+
    883SQLRETURN ODBC_PUBLIC ODBC_API SQLSetCursorName(
    \n+
    884 SQLHSTMT hstmt,
    \n+
    885 SQLCHAR * szCursor, SQLSMALLINT cbCursor)
    \n+
    886{
    \n+
    887 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSetCursorName(%p, %s, %d)\\n",
    \n+
    888 hstmt,
    \n+
    889 (const char*) szCursor, (int) cbCursor);
    \n+
    890#ifdef ENABLE_ODBC_WIDE
    \n+
    891 return _SQLSetCursorName(hstmt,
    \n+
    892 (ODBC_CHAR*) szCursor, cbCursor, 0);
    \n+
    893#else
    \n+
    894 return _SQLSetCursorName(hstmt,
    \n+
    895 szCursor, cbCursor);
    \n+
    896#endif
    \n+
    897}
    \n+
    898
    \n+
    899#ifdef ENABLE_ODBC_WIDE
    \n+
    900static SQLRETURN _SQLGetCursorName(SQLHSTMT hstmt,
    \n+
    901 ODBC_CHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor, int wide);
    \n+
    902
    \n+
    903SQLRETURN ODBC_PUBLIC ODBC_API SQLGetCursorNameW(
    \n+
    904 SQLHSTMT hstmt,
    \n+
    905 SQLWCHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor)
    \n+
    906{
    \n+
    907 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetCursorNameW(%p, %p, %d, %p)\\n",
    \n+
    908 hstmt,
    \n+
    909 szCursor, (int) cbCursorMax, pcbCursor);
    \n+
    910 return _SQLGetCursorName(hstmt,
    \n+
    911 (ODBC_CHAR*) szCursor, cbCursorMax, pcbCursor, 1);
    \n+
    912}
    \n+
    913#endif
    \n+
    914
    \n+
    915SQLRETURN ODBC_PUBLIC ODBC_API SQLGetCursorName(
    \n+
    916 SQLHSTMT hstmt,
    \n+
    917 SQLCHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor)
    \n+
    918{
    \n+
    919 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetCursorName(%p, %p, %d, %p)\\n",
    \n+
    920 hstmt,
    \n+
    921 szCursor, (int) cbCursorMax, pcbCursor);
    \n+
    922#ifdef ENABLE_ODBC_WIDE
    \n+
    923 return _SQLGetCursorName(hstmt,
    \n+
    924 (ODBC_CHAR*) szCursor, cbCursorMax, pcbCursor, 0);
    \n+
    925#else
    \n+
    926 return _SQLGetCursorName(hstmt,
    \n+
    927 szCursor, cbCursorMax, pcbCursor);
    \n+
    928#endif
    \n+
    929}
    \n+
    930
    \n+
    931#ifdef ENABLE_ODBC_WIDE
    \n+
    932static SQLRETURN _SQLColumns(SQLHSTMT hstmt,
    \n+
    933 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    934 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    935 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    936 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);
    \n+
    937
    \n+
    938SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnsW(
    \n+
    939 SQLHSTMT hstmt,
    \n+
    940 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    941 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    942 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    943 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    944{
    \n+
    945 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    946 SQLWSTR_BUFS(4);
    \n+
    947 tdsdump_log(TDS_DBG_FUNC, "SQLColumnsW(%p, %ls, %d, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    948 hstmt,
    \n+
    949 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    950 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    951 SQLWSTR(szTableName), (int) cbTableName,
    \n+
    952 SQLWSTR(szColumnName), (int) cbColumnName);
    \n+
    953 SQLWSTR_FREE();
    \n+
    954 }
    \n+
    955 return _SQLColumns(hstmt,
    \n+
    956 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    957 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    958 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    959 (ODBC_CHAR*) szColumnName, cbColumnName, 1);
    \n+
    960}
    \n+
    961#endif
    \n+
    962
    \n+
    963SQLRETURN ODBC_PUBLIC ODBC_API SQLColumns(
    \n+
    964 SQLHSTMT hstmt,
    \n+
    965 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    966 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    967 SQLCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    968 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)
    \n+
    969{
    \n+
    970 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLColumns(%p, %s, %d, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    971 hstmt,
    \n+
    972 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    973 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    974 (const char*) szTableName, (int) cbTableName,
    \n+
    975 (const char*) szColumnName, (int) cbColumnName);
    \n+
    976#ifdef ENABLE_ODBC_WIDE
    \n+
    977 return _SQLColumns(hstmt,
    \n+
    978 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    979 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    980 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    981 (ODBC_CHAR*) szColumnName, cbColumnName, 0);
    \n+
    982#else
    \n+
    983 return _SQLColumns(hstmt,
    \n+
    984 szCatalogName, cbCatalogName,
    \n+
    985 szSchemaName, cbSchemaName,
    \n+
    986 szTableName, cbTableName,
    \n+
    987 szColumnName, cbColumnName);
    \n+
    988#endif
    \n+
    989}
    \n+
    990
    \n+
    991#ifdef ENABLE_ODBC_WIDE
    \n+
    992static SQLRETURN _SQLGetConnectAttr(SQLHDBC hdbc,
    \n+
    993 SQLINTEGER Attribute,
    \n+
    994 SQLPOINTER Value,
    \n+
    995 SQLINTEGER BufferLength,
    \n+
    996 SQLINTEGER * StringLength, int wide);
    \n+
    997
    \n+
    998SQLRETURN ODBC_PUBLIC ODBC_API SQLGetConnectAttrW(
    \n+
    999 SQLHDBC hdbc,
    \n+
    1000 SQLINTEGER Attribute,
    \n+
    1001 SQLPOINTER Value,
    \n+
    1002 SQLINTEGER BufferLength,
    \n+
    1003 SQLINTEGER * StringLength)
    \n+
    1004{
    \n+
    1005 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetConnectAttrW(%p, %d, %p, %d, %p)\\n",
    \n+
    1006 hdbc,
    \n+
    1007 (int) Attribute,
    \n+
    1008 Value,
    \n+
    1009 (int) BufferLength,
    \n+
    1010 StringLength);
    \n+
    1011 return _SQLGetConnectAttr(hdbc,
    \n+
    1012 Attribute,
    \n+
    1013 Value,
    \n+
    1014 BufferLength,
    \n+
    1015 StringLength, 1);
    \n+
    1016}
    \n+
    1017#endif
    \n+
    1018
    \n+
    1019SQLRETURN ODBC_PUBLIC ODBC_API SQLGetConnectAttr(
    \n+
    1020 SQLHDBC hdbc,
    \n+
    1021 SQLINTEGER Attribute,
    \n+
    1022 SQLPOINTER Value,
    \n+
    1023 SQLINTEGER BufferLength,
    \n+
    1024 SQLINTEGER * StringLength)
    \n+
    1025{
    \n+
    1026 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLGetConnectAttr(%p, %d, %p, %d, %p)\\n",
    \n+
    1027 hdbc,
    \n+
    1028 (int) Attribute,
    \n+
    1029 Value,
    \n+
    1030 (int) BufferLength,
    \n+
    1031 StringLength);
    \n+
    1032#ifdef ENABLE_ODBC_WIDE
    \n+
    1033 return _SQLGetConnectAttr(hdbc,
    \n+
    1034 Attribute,
    \n+
    1035 Value,
    \n+
    1036 BufferLength,
    \n+
    1037 StringLength, 0);
    \n+
    1038#else
    \n+
    1039 return _SQLGetConnectAttr(hdbc,
    \n+
    1040 Attribute,
    \n+
    1041 Value,
    \n+
    1042 BufferLength,
    \n+
    1043 StringLength);
    \n+
    1044#endif
    \n+
    1045}
    \n+
    1046
    \n+
    1047#ifdef ENABLE_ODBC_WIDE
    \n+
    1048static SQLRETURN _SQLSetConnectAttr(SQLHDBC hdbc,
    \n+
    1049 SQLINTEGER Attribute,
    \n+
    1050 SQLPOINTER ValuePtr,
    \n+
    1051 SQLINTEGER StringLength, int wide);
    \n+
    1052
    \n+
    1053SQLRETURN ODBC_PUBLIC ODBC_API SQLSetConnectAttrW(
    \n+
    1054 SQLHDBC hdbc,
    \n+
    1055 SQLINTEGER Attribute,
    \n+
    1056 SQLPOINTER ValuePtr,
    \n+
    1057 SQLINTEGER StringLength)
    \n+
    1058{
    \n+
    1059 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSetConnectAttrW(%p, %d, %p, %d)\\n",
    \n+
    1060 hdbc,
    \n+
    1061 (int) Attribute,
    \n+
    1062 ValuePtr,
    \n+
    1063 (int) StringLength);
    \n+
    1064 return _SQLSetConnectAttr(hdbc,
    \n+
    1065 Attribute,
    \n+
    1066 ValuePtr,
    \n+
    1067 StringLength, 1);
    \n+
    1068}
    \n+
    1069#endif
    \n+
    1070
    \n+
    1071SQLRETURN ODBC_PUBLIC ODBC_API SQLSetConnectAttr(
    \n+
    1072 SQLHDBC hdbc,
    \n+
    1073 SQLINTEGER Attribute,
    \n+
    1074 SQLPOINTER ValuePtr,
    \n+
    1075 SQLINTEGER StringLength)
    \n+
    1076{
    \n+
    1077 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSetConnectAttr(%p, %d, %p, %d)\\n",
    \n+
    1078 hdbc,
    \n+
    1079 (int) Attribute,
    \n+
    1080 ValuePtr,
    \n+
    1081 (int) StringLength);
    \n+
    1082#ifdef ENABLE_ODBC_WIDE
    \n+
    1083 return _SQLSetConnectAttr(hdbc,
    \n+
    1084 Attribute,
    \n+
    1085 ValuePtr,
    \n+
    1086 StringLength, 0);
    \n+
    1087#else
    \n+
    1088 return _SQLSetConnectAttr(hdbc,
    \n+
    1089 Attribute,
    \n+
    1090 ValuePtr,
    \n+
    1091 StringLength);
    \n+
    1092#endif
    \n+
    1093}
    \n+
    1094
    \n+
    1095#ifdef ENABLE_ODBC_WIDE
    \n+
    1096static SQLRETURN _SQLSpecialColumns(SQLHSTMT hstmt,
    \n+
    1097 SQLUSMALLINT fColType,
    \n+
    1098 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1099 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1100 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1101 SQLUSMALLINT fScope,
    \n+
    1102 SQLUSMALLINT fNullable, int wide);
    \n+
    1103
    \n+
    1104SQLRETURN ODBC_PUBLIC ODBC_API SQLSpecialColumnsW(
    \n+
    1105 SQLHSTMT hstmt,
    \n+
    1106 SQLUSMALLINT fColType,
    \n+
    1107 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1108 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1109 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1110 SQLUSMALLINT fScope,
    \n+
    1111 SQLUSMALLINT fNullable)
    \n+
    1112{
    \n+
    1113 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    1114 SQLWSTR_BUFS(3);
    \n+
    1115 tdsdump_log(TDS_DBG_FUNC, "SQLSpecialColumnsW(%p, %u, %ls, %d, %ls, %d, %ls, %d, %u, %u)\\n",
    \n+
    1116 hstmt,
    \n+
    1117 (unsigned int) fColType,
    \n+
    1118 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    1119 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    1120 SQLWSTR(szTableName), (int) cbTableName,
    \n+
    1121 (unsigned int) fScope,
    \n+
    1122 (unsigned int) fNullable);
    \n+
    1123 SQLWSTR_FREE();
    \n+
    1124 }
    \n+
    1125 return _SQLSpecialColumns(hstmt,
    \n+
    1126 fColType,
    \n+
    1127 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1128 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1129 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1130 fScope,
    \n+
    1131 fNullable, 1);
    \n+
    1132}
    \n+
    1133#endif
    \n+
    1134
    \n+
    1135SQLRETURN ODBC_PUBLIC ODBC_API SQLSpecialColumns(
    \n+
    1136 SQLHSTMT hstmt,
    \n+
    1137 SQLUSMALLINT fColType,
    \n+
    1138 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1139 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1140 SQLCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1141 SQLUSMALLINT fScope,
    \n+
    1142 SQLUSMALLINT fNullable)
    \n+
    1143{
    \n+
    1144 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLSpecialColumns(%p, %u, %s, %d, %s, %d, %s, %d, %u, %u)\\n",
    \n+
    1145 hstmt,
    \n+
    1146 (unsigned int) fColType,
    \n+
    1147 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    1148 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    1149 (const char*) szTableName, (int) cbTableName,
    \n+
    1150 (unsigned int) fScope,
    \n+
    1151 (unsigned int) fNullable);
    \n+
    1152#ifdef ENABLE_ODBC_WIDE
    \n+
    1153 return _SQLSpecialColumns(hstmt,
    \n+
    1154 fColType,
    \n+
    1155 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1156 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1157 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1158 fScope,
    \n+
    1159 fNullable, 0);
    \n+
    1160#else
    \n+
    1161 return _SQLSpecialColumns(hstmt,
    \n+
    1162 fColType,
    \n+
    1163 szCatalogName, cbCatalogName,
    \n+
    1164 szSchemaName, cbSchemaName,
    \n+
    1165 szTableName, cbTableName,
    \n+
    1166 fScope,
    \n+
    1167 fNullable);
    \n+
    1168#endif
    \n+
    1169}
    \n+
    1170
    \n+
    1171#ifdef ENABLE_ODBC_WIDE
    \n+
    1172static SQLRETURN _SQLStatistics(SQLHSTMT hstmt,
    \n+
    1173 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1174 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1175 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1176 SQLUSMALLINT fUnique,
    \n+
    1177 SQLUSMALLINT fAccuracy, int wide);
    \n+
    1178
    \n+
    1179SQLRETURN ODBC_PUBLIC ODBC_API SQLStatisticsW(
    \n+
    1180 SQLHSTMT hstmt,
    \n+
    1181 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1182 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1183 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1184 SQLUSMALLINT fUnique,
    \n+
    1185 SQLUSMALLINT fAccuracy)
    \n+
    1186{
    \n+
    1187 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    1188 SQLWSTR_BUFS(3);
    \n+
    1189 tdsdump_log(TDS_DBG_FUNC, "SQLStatisticsW(%p, %ls, %d, %ls, %d, %ls, %d, %u, %u)\\n",
    \n+
    1190 hstmt,
    \n+
    1191 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    1192 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    1193 SQLWSTR(szTableName), (int) cbTableName,
    \n+
    1194 (unsigned int) fUnique,
    \n+
    1195 (unsigned int) fAccuracy);
    \n+
    1196 SQLWSTR_FREE();
    \n+
    1197 }
    \n+
    1198 return _SQLStatistics(hstmt,
    \n+
    1199 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1200 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1201 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1202 fUnique,
    \n+
    1203 fAccuracy, 1);
    \n+
    1204}
    \n+
    1205#endif
    \n+
    1206
    \n+
    1207SQLRETURN ODBC_PUBLIC ODBC_API SQLStatistics(
    \n+
    1208 SQLHSTMT hstmt,
    \n+
    1209 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1210 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1211 SQLCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1212 SQLUSMALLINT fUnique,
    \n+
    1213 SQLUSMALLINT fAccuracy)
    \n+
    1214{
    \n+
    1215 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLStatistics(%p, %s, %d, %s, %d, %s, %d, %u, %u)\\n",
    \n+
    1216 hstmt,
    \n+
    1217 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    1218 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    1219 (const char*) szTableName, (int) cbTableName,
    \n+
    1220 (unsigned int) fUnique,
    \n+
    1221 (unsigned int) fAccuracy);
    \n+
    1222#ifdef ENABLE_ODBC_WIDE
    \n+
    1223 return _SQLStatistics(hstmt,
    \n+
    1224 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1225 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1226 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1227 fUnique,
    \n+
    1228 fAccuracy, 0);
    \n+
    1229#else
    \n+
    1230 return _SQLStatistics(hstmt,
    \n+
    1231 szCatalogName, cbCatalogName,
    \n+
    1232 szSchemaName, cbSchemaName,
    \n+
    1233 szTableName, cbTableName,
    \n+
    1234 fUnique,
    \n+
    1235 fAccuracy);
    \n+
    1236#endif
    \n+
    1237}
    \n+
    1238
    \n+
    1239#ifdef ENABLE_ODBC_WIDE
    \n+
    1240static SQLRETURN _SQLTables(SQLHSTMT hstmt,
    \n+
    1241 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1242 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1243 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1244 ODBC_CHAR * szTableType, SQLSMALLINT cbTableType, int wide);
    \n+
    1245
    \n+
    1246SQLRETURN ODBC_PUBLIC ODBC_API SQLTablesW(
    \n+
    1247 SQLHSTMT hstmt,
    \n+
    1248 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1249 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1250 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1251 SQLWCHAR * szTableType, SQLSMALLINT cbTableType)
    \n+
    1252{
    \n+
    1253 if (TDS_UNLIKELY(tds_write_dump)) {
    \n+
    1254 SQLWSTR_BUFS(4);
    \n+
    1255 tdsdump_log(TDS_DBG_FUNC, "SQLTablesW(%p, %ls, %d, %ls, %d, %ls, %d, %ls, %d)\\n",
    \n+
    1256 hstmt,
    \n+
    1257 SQLWSTR(szCatalogName), (int) cbCatalogName,
    \n+
    1258 SQLWSTR(szSchemaName), (int) cbSchemaName,
    \n+
    1259 SQLWSTR(szTableName), (int) cbTableName,
    \n+
    1260 SQLWSTR(szTableType), (int) cbTableType);
    \n+
    1261 SQLWSTR_FREE();
    \n+
    1262 }
    \n+
    1263 return _SQLTables(hstmt,
    \n+
    1264 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1265 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1266 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1267 (ODBC_CHAR*) szTableType, cbTableType, 1);
    \n+
    1268}
    \n+
    1269#endif
    \n+
    1270
    \n+
    1271SQLRETURN ODBC_PUBLIC ODBC_API SQLTables(
    \n+
    1272 SQLHSTMT hstmt,
    \n+
    1273 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,
    \n+
    1274 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,
    \n+
    1275 SQLCHAR * szTableName, SQLSMALLINT cbTableName,
    \n+
    1276 SQLCHAR * szTableType, SQLSMALLINT cbTableType)
    \n+
    1277{
    \n+
    1278 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, "SQLTables(%p, %s, %d, %s, %d, %s, %d, %s, %d)\\n",
    \n+
    1279 hstmt,
    \n+
    1280 (const char*) szCatalogName, (int) cbCatalogName,
    \n+
    1281 (const char*) szSchemaName, (int) cbSchemaName,
    \n+
    1282 (const char*) szTableName, (int) cbTableName,
    \n+
    1283 (const char*) szTableType, (int) cbTableType);
    \n+
    1284#ifdef ENABLE_ODBC_WIDE
    \n+
    1285 return _SQLTables(hstmt,
    \n+
    1286 (ODBC_CHAR*) szCatalogName, cbCatalogName,
    \n+
    1287 (ODBC_CHAR*) szSchemaName, cbSchemaName,
    \n+
    1288 (ODBC_CHAR*) szTableName, cbTableName,
    \n+
    1289 (ODBC_CHAR*) szTableType, cbTableType, 0);
    \n+
    1290#else
    \n+
    1291 return _SQLTables(hstmt,
    \n+
    1292 szCatalogName, cbCatalogName,
    \n+
    1293 szSchemaName, cbSchemaName,
    \n+
    1294 szTableName, cbTableName,
    \n+
    1295 szTableType, cbTableType);
    \n+
    1296#endif
    \n+
    1297}
    \n+
    1298
    \n+
    1299#define tdsdump_log TDSDUMP_LOG_FAST
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,389 +6,1348 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * tds\n-num_limits.h\n- 1#define LIMIT_INDEXES_ADJUST 4\n+ * odbc\n+odbc_export.h\n+ 1#undef tdsdump_log\n 2\n- 3static const signed char limit_indexes[79]= {\n- 4 0, /* 0 */\n- 5 -3, /* 1 */\n- 6 -6, /* 2 */\n- 7 -9, /* 3 */\n- 8 -12, /* 4 */\n- 9 -15, /* 5 */\n- 10 -18, /* 6 */\n- 11 -21, /* 7 */\n- 12 -24, /* 8 */\n- 13 -27, /* 9 */\n- 14 -30, /* 10 */\n- 15 -32, /* 11 */\n- 16 -34, /* 12 */\n- 17 -36, /* 13 */\n- 18 -38, /* 14 */\n- 19 -40, /* 15 */\n- 20 -42, /* 16 */\n- 21 -44, /* 17 */\n- 22 -46, /* 18 */\n- 23 -48, /* 19 */\n- 24 -50, /* 20 */\n- 25 -51, /* 21 */\n- 26 -52, /* 22 */\n- 27 -53, /* 23 */\n- 28 -54, /* 24 */\n- 29 -55, /* 25 */\n- 30 -56, /* 26 */\n- 31 -57, /* 27 */\n- 32 -58, /* 28 */\n- 33 -59, /* 29 */\n- 34 -59, /* 30 */\n- 35 -59, /* 31 */\n- 36 -59, /* 32 */\n- 37 -60, /* 33 */\n- 38 -61, /* 34 */\n- 39 -62, /* 35 */\n- 40 -63, /* 36 */\n- 41 -64, /* 37 */\n- 42 -65, /* 38 */\n- 43 -66, /* 39 */\n- 44 -66, /* 40 */\n- 45 -66, /* 41 */\n- 46 -66, /* 42 */\n- 47 -66, /* 43 */\n- 48 -66, /* 44 */\n- 49 -66, /* 45 */\n- 50 -66, /* 46 */\n- 51 -66, /* 47 */\n- 52 -66, /* 48 */\n- 53 -66, /* 49 */\n- 54 -65, /* 50 */\n- 55 -64, /* 51 */\n- 56 -63, /* 52 */\n- 57 -62, /* 53 */\n- 58 -61, /* 54 */\n- 59 -60, /* 55 */\n- 60 -59, /* 56 */\n- 61 -58, /* 57 */\n- 62 -57, /* 58 */\n- 63 -55, /* 59 */\n- 64 -53, /* 60 */\n- 65 -51, /* 61 */\n- 66 -49, /* 62 */\n- 67 -47, /* 63 */\n- 68 -45, /* 64 */\n- 69 -44, /* 65 */\n- 70 -43, /* 66 */\n- 71 -42, /* 67 */\n- 72 -41, /* 68 */\n- 73 -39, /* 69 */\n- 74 -37, /* 70 */\n- 75 -35, /* 71 */\n- 76 -33, /* 72 */\n- 77 -31, /* 73 */\n- 78 -29, /* 74 */\n- 79 -27, /* 75 */\n- 80 -25, /* 76 */\n- 81 -23, /* 77 */\n- 82 -21, /* 78 */\n- 83};\n- 84\n- 85static const TDS_WORD limits[]= {\n- 86 0x00000001u, /* 0 */\n- 87 0x0000000au, /* 1 */\n- 88 0x00000064u, /* 2 */\n- 89 0x000003e8u, /* 3 */\n- 90 0x00002710u, /* 4 */\n- 91 0x000186a0u, /* 5 */\n- 92 0x000f4240u, /* 6 */\n- 93 0x00989680u, /* 7 */\n- 94 0x05f5e100u, /* 8 */\n- 95 0x3b9aca00u, /* 9 */\n- 96 0x00000002u, /* 10 */\n- 97 0x540be400u, /* 11 */\n- 98 0x00000017u, /* 12 */\n- 99 0x4876e800u, /* 13 */\n- 100 0x000000e8u, /* 14 */\n- 101 0xd4a51000u, /* 15 */\n- 102 0x00000918u, /* 16 */\n- 103 0x4e72a000u, /* 17 */\n- 104 0x00005af3u, /* 18 */\n- 105 0x107a4000u, /* 19 */\n- 106 0x00038d7eu, /* 20 */\n- 107 0xa4c68000u, /* 21 */\n- 108 0x002386f2u, /* 22 */\n- 109 0x6fc10000u, /* 23 */\n- 110 0x01634578u, /* 24 */\n- 111 0x5d8a0000u, /* 25 */\n- 112 0x0de0b6b3u, /* 26 */\n- 113 0xa7640000u, /* 27 */\n- 114 0x8ac72304u, /* 28 */\n- 115 0x89e80000u, /* 29 */\n- 116 0x00000005u, /* 30 */\n- 117 0x6bc75e2du, /* 31 */\n- 118 0x63100000u, /* 32 */\n- 119 0x00000036u, /* 33 */\n- 120 0x35c9adc5u, /* 34 */\n- 121 0xdea00000u, /* 35 */\n- 122 0x0000021eu, /* 36 */\n- 123 0x19e0c9bau, /* 37 */\n- 124 0xb2400000u, /* 38 */\n- 125 0x0000152du, /* 39 */\n- 126 0x02c7e14au, /* 40 */\n- 127 0xf6800000u, /* 41 */\n- 128 0x0000d3c2u, /* 42 */\n- 129 0x1bceccedu, /* 43 */\n- 130 0xa1000000u, /* 44 */\n- 131 0x00084595u, /* 45 */\n- 132 0x16140148u, /* 46 */\n- 133 0x4a000000u, /* 47 */\n- 134 0x0052b7d2u, /* 48 */\n- 135 0xdcc80cd2u, /* 49 */\n- 136 0xe4000000u, /* 50 */\n- 137 0x033b2e3cu, /* 51 */\n- 138 0x9fd0803cu, /* 52 */\n- 139 0xe8000000u, /* 53 */\n- 140 0x204fce5eu, /* 54 */\n- 141 0x3e250261u, /* 55 */\n- 142 0x10000000u, /* 56 */\n- 143 0x00000001u, /* 57 */\n- 144 0x431e0faeu, /* 58 */\n- 145 0x6d7217cau, /* 59 */\n- 146 0xa0000000u, /* 60 */\n- 147 0x0000000cu, /* 61 */\n- 148 0x9f2c9cd0u, /* 62 */\n- 149 0x4674edeau, /* 63 */\n- 150 0x40000000u, /* 64 */\n- 151 0x0000007eu, /* 65 */\n- 152 0x37be2022u, /* 66 */\n- 153 0xc0914b26u, /* 67 */\n- 154 0x80000000u, /* 68 */\n- 155 0x000004eeu, /* 69 */\n- 156 0x2d6d415bu, /* 70 */\n- 157 0x85acef81u, /* 71 */\n- 158 0x0000314du, /* 72 */\n- 159 0xc6448d93u, /* 73 */\n- 160 0x38c15b0au, /* 74 */\n- 161 0x0001ed09u, /* 75 */\n- 162 0xbead87c0u, /* 76 */\n- 163 0x378d8e64u, /* 77 */\n- 164 0x00134261u, /* 78 */\n- 165 0x72c74d82u, /* 79 */\n- 166 0x2b878fe8u, /* 80 */\n- 167 0x00c097ceu, /* 81 */\n- 168 0x7bc90715u, /* 82 */\n- 169 0xb34b9f10u, /* 83 */\n- 170 0x0785ee10u, /* 84 */\n- 171 0xd5da46d9u, /* 85 */\n- 172 0x00f436a0u, /* 86 */\n- 173 0x4b3b4ca8u, /* 87 */\n- 174 0x5a86c47au, /* 88 */\n- 175 0x098a2240u, /* 89 */\n- 176 0x00000002u, /* 90 */\n- 177 0xf050fe93u, /* 91 */\n- 178 0x8943acc4u, /* 92 */\n- 179 0x5f655680u, /* 93 */\n- 180 0x0000001du, /* 94 */\n- 181 0x6329f1c3u, /* 95 */\n- 182 0x5ca4bfabu, /* 96 */\n- 183 0xb9f56100u, /* 97 */\n- 184 0x00000125u, /* 98 */\n- 185 0xdfa371a1u, /* 99 */\n- 186 0x9e6f7cb5u, /* 100 */\n- 187 0x4395ca00u, /* 101 */\n- 188 0x00000b7au, /* 102 */\n- 189 0xbc627050u, /* 103 */\n- 190 0x305adf14u, /* 104 */\n- 191 0xa3d9e400u, /* 105 */\n- 192 0x000072cbu, /* 106 */\n- 193 0x5bd86321u, /* 107 */\n- 194 0xe38cb6ceu, /* 108 */\n- 195 0x6682e800u, /* 109 */\n- 196 0x00047bf1u, /* 110 */\n- 197 0x9673df52u, /* 111 */\n- 198 0xe37f2410u, /* 112 */\n- 199 0x011d1000u, /* 113 */\n- 200 0x002cd76fu, /* 114 */\n- 201 0xe086b93cu, /* 115 */\n- 202 0xe2f768a0u, /* 116 */\n- 203 0x0b22a000u, /* 117 */\n- 204 0x01c06a5eu, /* 118 */\n- 205 0xc5433c60u, /* 119 */\n- 206 0xddaa1640u, /* 120 */\n- 207 0x6f5a4000u, /* 121 */\n- 208 0x118427b3u, /* 122 */\n- 209 0xb4a05bc8u, /* 123 */\n- 210 0xa8a4de84u, /* 124 */\n- 211 0x59868000u, /* 125 */\n- 212 0xaf298d05u, /* 126 */\n- 213 0x0e4395d6u, /* 127 */\n- 214 0x9670b12bu, /* 128 */\n- 215 0x7f410000u, /* 129 */\n- 216 0x00000006u, /* 130 */\n- 217 0xd79f8232u, /* 131 */\n- 218 0x8ea3da61u, /* 132 */\n- 219 0xe066ebb2u, /* 133 */\n- 220 0xf88a0000u, /* 134 */\n- 221 0x00000044u, /* 135 */\n- 222 0x6c3b15f9u, /* 136 */\n- 223 0x926687d2u, /* 137 */\n- 224 0xc40534fdu, /* 138 */\n- 225 0xb5640000u, /* 139 */\n- 226 0x000002acu, /* 140 */\n- 227 0x3a4edbbfu, /* 141 */\n- 228 0xb8014e3bu, /* 142 */\n- 229 0xa83411e9u, /* 143 */\n- 230 0x15e80000u, /* 144 */\n- 231 0x00001abau, /* 145 */\n- 232 0x4714957du, /* 146 */\n- 233 0x300d0e54u, /* 147 */\n- 234 0x9208b31au, /* 148 */\n- 235 0xdb100000u, /* 149 */\n- 236 0x00010b46u, /* 150 */\n- 237 0xc6cdd6e3u, /* 151 */\n- 238 0xe0828f4du, /* 152 */\n- 239 0xb456ff0cu, /* 153 */\n- 240 0x8ea00000u, /* 154 */\n- 241 0x000a70c3u, /* 155 */\n- 242 0xc40a64e6u, /* 156 */\n- 243 0xc5199909u, /* 157 */\n- 244 0x0b65f67du, /* 158 */\n- 245 0x92400000u, /* 159 */\n- 246 0x006867a5u, /* 160 */\n- 247 0xa867f103u, /* 161 */\n- 248 0xb2fffa5au, /* 162 */\n- 249 0x71fba0e7u, /* 163 */\n- 250 0xb6800000u, /* 164 */\n- 251 0x04140c78u, /* 165 */\n- 252 0x940f6a24u, /* 166 */\n- 253 0xfdffc788u, /* 167 */\n- 254 0x73d4490du, /* 168 */\n- 255 0x21000000u, /* 169 */\n- 256 0x28c87cb5u, /* 170 */\n- 257 0xc89a2571u, /* 171 */\n- 258 0xebfdcb54u, /* 172 */\n- 259 0x864ada83u, /* 173 */\n- 260 0x4a000000u, /* 174 */\n- 261 0x00000001u, /* 175 */\n- 262 0x97d4df19u, /* 176 */\n- 263 0xd6057673u, /* 177 */\n- 264 0x37e9f14du, /* 178 */\n- 265 0x3eec8920u, /* 179 */\n- 266 0xe4000000u, /* 180 */\n- 267 0x0000000fu, /* 181 */\n- 268 0xee50b702u, /* 182 */\n- 269 0x5c36a080u, /* 183 */\n- 270 0x2f236d04u, /* 184 */\n- 271 0x753d5b48u, /* 185 */\n- 272 0xe8000000u, /* 186 */\n- 273 0x0000009fu, /* 187 */\n- 274 0x4f272617u, /* 188 */\n- 275 0x9a224501u, /* 189 */\n- 276 0xd762422cu, /* 190 */\n- 277 0x946590d9u, /* 191 */\n- 278 0x10000000u, /* 192 */\n- 279 0x00000639u, /* 193 */\n- 280 0x17877cecu, /* 194 */\n- 281 0x0556b212u, /* 195 */\n- 282 0x69d695bdu, /* 196 */\n- 283 0xcbf7a87au, /* 197 */\n- 284 0xa0000000u, /* 198 */\n- 285 0x00003e3au, /* 199 */\n- 286 0xeb4ae138u, /* 200 */\n- 287 0x3562f4b8u, /* 201 */\n- 288 0x2261d969u, /* 202 */\n- 289 0xf7ac94cau, /* 203 */\n- 290 0x40000000u, /* 204 */\n- 291 0x00026e4du, /* 205 */\n- 292 0x30eccc32u, /* 206 */\n- 293 0x15dd8f31u, /* 207 */\n- 294 0x57d27e23u, /* 208 */\n- 295 0xacbdcfe6u, /* 209 */\n- 296 0x80000000u, /* 210 */\n- 297 0x00184f03u, /* 211 */\n- 298 0xe93ff9f4u, /* 212 */\n- 299 0xdaa797edu, /* 213 */\n- 300 0x6e38ed64u, /* 214 */\n- 301 0xbf6a1f01u, /* 215 */\n- 302 0x00f31627u, /* 216 */\n- 303 0x1c7fc390u, /* 217 */\n- 304 0x8a8bef46u, /* 218 */\n- 305 0x4e3945efu, /* 219 */\n- 306 0x7a25360au, /* 220 */\n- 307 0x097edd87u, /* 221 */\n- 308 0x1cfda3a5u, /* 222 */\n- 309 0x697758bfu, /* 223 */\n- 310 0x0e3cbb5au, /* 224 */\n- 311 0xc5741c64u, /* 225 */\n- 312 0x5ef4a747u, /* 226 */\n- 313 0x21e86476u, /* 227 */\n- 314 0x1ea97776u, /* 228 */\n- 315 0x8e5f518bu, /* 229 */\n- 316 0xb6891be8u, /* 230 */\n- 317 0x00000003u, /* 231 */\n- 318 0xb58e88c7u, /* 232 */\n- 319 0x5313ec9du, /* 233 */\n- 320 0x329eaaa1u, /* 234 */\n- 321 0x8fb92f75u, /* 235 */\n- 322 0x215b1710u, /* 236 */\n- 323 0x00000025u, /* 237 */\n- 324 0x179157c9u, /* 238 */\n- 325 0x3ec73e23u, /* 239 */\n- 326 0xfa32aa4fu, /* 240 */\n- 327 0x9d3bda93u, /* 241 */\n- 328 0x4d8ee6a0u, /* 242 */\n- 329 0x00000172u, /* 243 */\n- 330 0xebad6ddcu, /* 244 */\n- 331 0x73c86d67u, /* 245 */\n- 332 0xc5faa71cu, /* 246 */\n- 333 0x245689c1u, /* 247 */\n- 334 0x07950240u, /* 248 */\n- 335 0x00000e7du, /* 249 */\n- 336 0x34c64a9cu, /* 250 */\n- 337 0x85d4460du, /* 251 */\n- 338 0xbbca8719u, /* 252 */\n- 339 0x6b61618au, /* 253 */\n- 340 0x4bd21680u, /* 254 */\n- 341 0x000090e4u, /* 255 */\n- 342 0x0fbeea1du, /* 256 */\n- 343 0x3a4abc89u, /* 257 */\n- 344 0x55e946feu, /* 258 */\n- 345 0x31cdcf66u, /* 259 */\n- 346 0xf634e100u, /* 260 */\n- 347 0x0005a8e8u, /* 261 */\n- 348 0x9d752524u, /* 262 */\n- 349 0x46eb5d5du, /* 263 */\n- 350 0x5b1cc5edu, /* 264 */\n- 351 0xf20a1a05u, /* 265 */\n- 352 0x9e10ca00u, /* 266 */\n- 353 0x00389916u, /* 267 */\n- 354 0x2693736au, /* 268 */\n- 355 0xc531a5a5u, /* 269 */\n- 356 0x8f1fbb4bu, /* 270 */\n- 357 0x74650438u, /* 271 */\n- 358 0x2ca7e400u, /* 272 */\n- 359 0x0235faddu, /* 273 */\n- 360 0x81c2822bu, /* 274 */\n- 361 0xb3f07877u, /* 275 */\n- 362 0x973d50f2u, /* 276 */\n- 363 0x8bf22a31u, /* 277 */\n- 364 0xbe8ee800u, /* 278 */\n- 365 0x161bcca7u, /* 279 */\n- 366 0x119915b5u, /* 280 */\n- 367 0x0764b4abu, /* 281 */\n- 368 0xe8652979u, /* 282 */\n- 369 0x7775a5f1u, /* 283 */\n- 370 0x71951000u, /* 284 */\n- 371 0xdd15fe86u, /* 285 */\n- 372 0xaffad912u, /* 286 */\n- 373 0x49ef0eb7u, /* 287 */\n- 374 0x13f39ebeu, /* 288 */\n- 375 0xaa987b6eu, /* 289 */\n- 376 0x6fd2a000u, /* 290 */\n- 377};\n+ 3#ifdef ENABLE_ODBC_WIDE\n+ 4static SQLRETURN _SQLDriverConnect(SQLHDBC hdbc,\n+ 5 SQLHWND hwnd,\n+ 6 ODBC_CHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,\n+ 7 ODBC_CHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR*\n+pcbConnStrOut,\n+ 8 SQLUSMALLINT fDriverCompletion, int wide);\n+ 9\n+ 10SQLRETURN ODBC_PUBLIC ODBC_API SQLDriverConnectW(\n+ 11 SQLHDBC hdbc,\n+ 12 SQLHWND hwnd,\n+ 13 SQLWCHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,\n+ 14 SQLWCHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR*\n+pcbConnStrOut,\n+ 15 SQLUSMALLINT fDriverCompletion)\n+ 16{\n+ 17 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 18 SQLWSTR_BUFS(1);\n+ 19 tdsdump_log(TDS_DBG_FUNC, \"SQLDriverConnectW(%p, %p, %ls, %d, %p, %d, %p,\n+%u)\\n\",\n+ 20 hdbc,\n+ 21 hwnd,\n+ 22 SQLWSTR(szConnStrIn), (int) cbConnStrIn,\n+ 23 szConnStrOut, (int) cbConnStrOutMax, pcbConnStrOut,\n+ 24 (unsigned int) fDriverCompletion);\n+ 25 SQLWSTR_FREE();\n+ 26 }\n+ 27 return _SQLDriverConnect(hdbc,\n+ 28 hwnd,\n+ 29 (ODBC_CHAR*) szConnStrIn, cbConnStrIn,\n+ 30 (ODBC_CHAR*) szConnStrOut, cbConnStrOutMax, pcbConnStrOut,\n+ 31 fDriverCompletion, 1);\n+ 32}\n+ 33#endif\n+ 34\n+ 35SQLRETURN ODBC_PUBLIC ODBC_API SQLDriverConnect(\n+ 36 SQLHDBC hdbc,\n+ 37 SQLHWND hwnd,\n+ 38 SQLCHAR * szConnStrIn, SQLSMALLINT cbConnStrIn,\n+ 39 SQLCHAR * szConnStrOut, SQLSMALLINT cbConnStrOutMax, SQLSMALLINT FAR*\n+pcbConnStrOut,\n+ 40 SQLUSMALLINT fDriverCompletion)\n+ 41{\n+ 42 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLDriverConnect(%p, %p, %s, %d, %p, %d,\n+%p, %u)\\n\",\n+ 43 hdbc,\n+ 44 hwnd,\n+ 45 (const char*) szConnStrIn, (int) cbConnStrIn,\n+ 46 szConnStrOut, (int) cbConnStrOutMax, pcbConnStrOut,\n+ 47 (unsigned int) fDriverCompletion);\n+ 48#ifdef ENABLE_ODBC_WIDE\n+ 49 return _SQLDriverConnect(hdbc,\n+ 50 hwnd,\n+ 51 (ODBC_CHAR*) szConnStrIn, cbConnStrIn,\n+ 52 (ODBC_CHAR*) szConnStrOut, cbConnStrOutMax, pcbConnStrOut,\n+ 53 fDriverCompletion, 0);\n+ 54#else\n+ 55 return _SQLDriverConnect(hdbc,\n+ 56 hwnd,\n+ 57 szConnStrIn, cbConnStrIn,\n+ 58 szConnStrOut, cbConnStrOutMax, pcbConnStrOut,\n+ 59 fDriverCompletion);\n+ 60#endif\n+ 61}\n+ 62\n+ 63#ifdef ENABLE_ODBC_WIDE\n+ 64static SQLRETURN _SQLColumnPrivileges(SQLHSTMT hstmt,\n+ 65 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 66 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 67 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,\n+ 68 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);\n+ 69\n+ 70SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnPrivilegesW(\n+ 71 SQLHSTMT hstmt,\n+ 72 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 73 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 74 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 75 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 76{\n+ 77 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 78 SQLWSTR_BUFS(4);\n+ 79 tdsdump_log(TDS_DBG_FUNC, \"SQLColumnPrivilegesW(%p, %ls, %d, %ls, %d, %ls,\n+%d, %ls, %d)\\n\",\n+ 80 hstmt,\n+ 81 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 82 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 83 SQLWSTR(szTableName), (int) cbTableName,\n+ 84 SQLWSTR(szColumnName), (int) cbColumnName);\n+ 85 SQLWSTR_FREE();\n+ 86 }\n+ 87 return _SQLColumnPrivileges(hstmt,\n+ 88 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 89 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 90 (ODBC_CHAR*) szTableName, cbTableName,\n+ 91 (ODBC_CHAR*) szColumnName, cbColumnName, 1);\n+ 92}\n+ 93#endif\n+ 94\n+ 95SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnPrivileges(\n+ 96 SQLHSTMT hstmt,\n+ 97 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 98 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 99 SQLCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 100 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 101{\n+ 102 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLColumnPrivileges(%p, %s, %d, %s, %d,\n+%s, %d, %s, %d)\\n\",\n+ 103 hstmt,\n+ 104 (const char*) szCatalogName, (int) cbCatalogName,\n+ 105 (const char*) szSchemaName, (int) cbSchemaName,\n+ 106 (const char*) szTableName, (int) cbTableName,\n+ 107 (const char*) szColumnName, (int) cbColumnName);\n+ 108#ifdef ENABLE_ODBC_WIDE\n+ 109 return _SQLColumnPrivileges(hstmt,\n+ 110 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 111 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 112 (ODBC_CHAR*) szTableName, cbTableName,\n+ 113 (ODBC_CHAR*) szColumnName, cbColumnName, 0);\n+ 114#else\n+ 115 return _SQLColumnPrivileges(hstmt,\n+ 116 szCatalogName, cbCatalogName,\n+ 117 szSchemaName, cbSchemaName,\n+ 118 szTableName, cbTableName,\n+ 119 szColumnName, cbColumnName);\n+ 120#endif\n+ 121}\n+ 122\n+ 123#ifdef ENABLE_ODBC_WIDE\n+ 124static SQLRETURN _SQLForeignKeys(SQLHSTMT hstmt,\n+ 125 ODBC_CHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,\n+ 126 ODBC_CHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,\n+ 127 ODBC_CHAR * szPkTableName, SQLSMALLINT cbPkTableName,\n+ 128 ODBC_CHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,\n+ 129 ODBC_CHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,\n+ 130 ODBC_CHAR * szFkTableName, SQLSMALLINT cbFkTableName, int wide);\n+ 131\n+ 132SQLRETURN ODBC_PUBLIC ODBC_API SQLForeignKeysW(\n+ 133 SQLHSTMT hstmt,\n+ 134 SQLWCHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,\n+ 135 SQLWCHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,\n+ 136 SQLWCHAR * szPkTableName, SQLSMALLINT cbPkTableName,\n+ 137 SQLWCHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,\n+ 138 SQLWCHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,\n+ 139 SQLWCHAR * szFkTableName, SQLSMALLINT cbFkTableName)\n+ 140{\n+ 141 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 142 SQLWSTR_BUFS(6);\n+ 143 tdsdump_log(TDS_DBG_FUNC, \"SQLForeignKeysW(%p, %ls, %d, %ls, %d, %ls, %d,\n+%ls, %d, %ls, %d, %ls, %d)\\n\",\n+ 144 hstmt,\n+ 145 SQLWSTR(szPkCatalogName), (int) cbPkCatalogName,\n+ 146 SQLWSTR(szPkSchemaName), (int) cbPkSchemaName,\n+ 147 SQLWSTR(szPkTableName), (int) cbPkTableName,\n+ 148 SQLWSTR(szFkCatalogName), (int) cbFkCatalogName,\n+ 149 SQLWSTR(szFkSchemaName), (int) cbFkSchemaName,\n+ 150 SQLWSTR(szFkTableName), (int) cbFkTableName);\n+ 151 SQLWSTR_FREE();\n+ 152 }\n+ 153 return _SQLForeignKeys(hstmt,\n+ 154 (ODBC_CHAR*) szPkCatalogName, cbPkCatalogName,\n+ 155 (ODBC_CHAR*) szPkSchemaName, cbPkSchemaName,\n+ 156 (ODBC_CHAR*) szPkTableName, cbPkTableName,\n+ 157 (ODBC_CHAR*) szFkCatalogName, cbFkCatalogName,\n+ 158 (ODBC_CHAR*) szFkSchemaName, cbFkSchemaName,\n+ 159 (ODBC_CHAR*) szFkTableName, cbFkTableName, 1);\n+ 160}\n+ 161#endif\n+ 162\n+ 163SQLRETURN ODBC_PUBLIC ODBC_API SQLForeignKeys(\n+ 164 SQLHSTMT hstmt,\n+ 165 SQLCHAR * szPkCatalogName, SQLSMALLINT cbPkCatalogName,\n+ 166 SQLCHAR * szPkSchemaName, SQLSMALLINT cbPkSchemaName,\n+ 167 SQLCHAR * szPkTableName, SQLSMALLINT cbPkTableName,\n+ 168 SQLCHAR * szFkCatalogName, SQLSMALLINT cbFkCatalogName,\n+ 169 SQLCHAR * szFkSchemaName, SQLSMALLINT cbFkSchemaName,\n+ 170 SQLCHAR * szFkTableName, SQLSMALLINT cbFkTableName)\n+ 171{\n+ 172 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLForeignKeys(%p, %s, %d, %s, %d, %s, %d,\n+%s, %d, %s, %d, %s, %d)\\n\",\n+ 173 hstmt,\n+ 174 (const char*) szPkCatalogName, (int) cbPkCatalogName,\n+ 175 (const char*) szPkSchemaName, (int) cbPkSchemaName,\n+ 176 (const char*) szPkTableName, (int) cbPkTableName,\n+ 177 (const char*) szFkCatalogName, (int) cbFkCatalogName,\n+ 178 (const char*) szFkSchemaName, (int) cbFkSchemaName,\n+ 179 (const char*) szFkTableName, (int) cbFkTableName);\n+ 180#ifdef ENABLE_ODBC_WIDE\n+ 181 return _SQLForeignKeys(hstmt,\n+ 182 (ODBC_CHAR*) szPkCatalogName, cbPkCatalogName,\n+ 183 (ODBC_CHAR*) szPkSchemaName, cbPkSchemaName,\n+ 184 (ODBC_CHAR*) szPkTableName, cbPkTableName,\n+ 185 (ODBC_CHAR*) szFkCatalogName, cbFkCatalogName,\n+ 186 (ODBC_CHAR*) szFkSchemaName, cbFkSchemaName,\n+ 187 (ODBC_CHAR*) szFkTableName, cbFkTableName, 0);\n+ 188#else\n+ 189 return _SQLForeignKeys(hstmt,\n+ 190 szPkCatalogName, cbPkCatalogName,\n+ 191 szPkSchemaName, cbPkSchemaName,\n+ 192 szPkTableName, cbPkTableName,\n+ 193 szFkCatalogName, cbFkCatalogName,\n+ 194 szFkSchemaName, cbFkSchemaName,\n+ 195 szFkTableName, cbFkTableName);\n+ 196#endif\n+ 197}\n+ 198\n+ 199#ifdef ENABLE_ODBC_WIDE\n+ 200static SQLRETURN _SQLNativeSql(SQLHDBC hdbc,\n+ 201 ODBC_CHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,\n+ 202 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr,\n+int wide);\n+ 203\n+ 204SQLRETURN ODBC_PUBLIC ODBC_API SQLNativeSqlW(\n+ 205 SQLHDBC hdbc,\n+ 206 SQLWCHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,\n+ 207 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr)\n+ 208{\n+ 209 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 210 SQLWSTR_BUFS(1);\n+ 211 tdsdump_log(TDS_DBG_FUNC, \"SQLNativeSqlW(%p, %ls, %d, %p, %d, %p)\\n\",\n+ 212 hdbc,\n+ 213 SQLWSTR(szSqlStrIn), (int) cbSqlStrIn,\n+ 214 szSqlStr, (int) cbSqlStrMax, pcbSqlStr);\n+ 215 SQLWSTR_FREE();\n+ 216 }\n+ 217 return _SQLNativeSql(hdbc,\n+ 218 (ODBC_CHAR*) szSqlStrIn, cbSqlStrIn,\n+ 219 (ODBC_CHAR*) szSqlStr, cbSqlStrMax, pcbSqlStr, 1);\n+ 220}\n+ 221#endif\n+ 222\n+ 223SQLRETURN ODBC_PUBLIC ODBC_API SQLNativeSql(\n+ 224 SQLHDBC hdbc,\n+ 225 SQLCHAR * szSqlStrIn, SQLINTEGER cbSqlStrIn,\n+ 226 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStrMax, SQLINTEGER FAR* pcbSqlStr)\n+ 227{\n+ 228 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLNativeSql(%p, %s, %d, %p, %d, %p)\\n\",\n+ 229 hdbc,\n+ 230 (const char*) szSqlStrIn, (int) cbSqlStrIn,\n+ 231 szSqlStr, (int) cbSqlStrMax, pcbSqlStr);\n+ 232#ifdef ENABLE_ODBC_WIDE\n+ 233 return _SQLNativeSql(hdbc,\n+ 234 (ODBC_CHAR*) szSqlStrIn, cbSqlStrIn,\n+ 235 (ODBC_CHAR*) szSqlStr, cbSqlStrMax, pcbSqlStr, 0);\n+ 236#else\n+ 237 return _SQLNativeSql(hdbc,\n+ 238 szSqlStrIn, cbSqlStrIn,\n+ 239 szSqlStr, cbSqlStrMax, pcbSqlStr);\n+ 240#endif\n+ 241}\n+ 242\n+ 243#ifdef ENABLE_ODBC_WIDE\n+ 244static SQLRETURN _SQLPrimaryKeys(SQLHSTMT hstmt,\n+ 245 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 246 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 247 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName, int wide);\n+ 248\n+ 249SQLRETURN ODBC_PUBLIC ODBC_API SQLPrimaryKeysW(\n+ 250 SQLHSTMT hstmt,\n+ 251 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 252 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 253 SQLWCHAR * szTableName, SQLSMALLINT cbTableName)\n+ 254{\n+ 255 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 256 SQLWSTR_BUFS(3);\n+ 257 tdsdump_log(TDS_DBG_FUNC, \"SQLPrimaryKeysW(%p, %ls, %d, %ls, %d, %ls,\n+%d)\\n\",\n+ 258 hstmt,\n+ 259 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 260 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 261 SQLWSTR(szTableName), (int) cbTableName);\n+ 262 SQLWSTR_FREE();\n+ 263 }\n+ 264 return _SQLPrimaryKeys(hstmt,\n+ 265 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 266 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 267 (ODBC_CHAR*) szTableName, cbTableName, 1);\n+ 268}\n+ 269#endif\n+ 270\n+ 271SQLRETURN ODBC_PUBLIC ODBC_API SQLPrimaryKeys(\n+ 272 SQLHSTMT hstmt,\n+ 273 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 274 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 275 SQLCHAR * szTableName, SQLSMALLINT cbTableName)\n+ 276{\n+ 277 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLPrimaryKeys(%p, %s, %d, %s, %d, %s,\n+%d)\\n\",\n+ 278 hstmt,\n+ 279 (const char*) szCatalogName, (int) cbCatalogName,\n+ 280 (const char*) szSchemaName, (int) cbSchemaName,\n+ 281 (const char*) szTableName, (int) cbTableName);\n+ 282#ifdef ENABLE_ODBC_WIDE\n+ 283 return _SQLPrimaryKeys(hstmt,\n+ 284 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 285 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 286 (ODBC_CHAR*) szTableName, cbTableName, 0);\n+ 287#else\n+ 288 return _SQLPrimaryKeys(hstmt,\n+ 289 szCatalogName, cbCatalogName,\n+ 290 szSchemaName, cbSchemaName,\n+ 291 szTableName, cbTableName);\n+ 292#endif\n+ 293}\n+ 294\n+ 295#ifdef ENABLE_ODBC_WIDE\n+ 296static SQLRETURN _SQLProcedureColumns(SQLHSTMT hstmt,\n+ 297 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 298 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 299 ODBC_CHAR * szProcName, SQLSMALLINT cbProcName,\n+ 300 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);\n+ 301\n+ 302SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedureColumnsW(\n+ 303 SQLHSTMT hstmt,\n+ 304 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 305 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 306 SQLWCHAR * szProcName, SQLSMALLINT cbProcName,\n+ 307 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 308{\n+ 309 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 310 SQLWSTR_BUFS(4);\n+ 311 tdsdump_log(TDS_DBG_FUNC, \"SQLProcedureColumnsW(%p, %ls, %d, %ls, %d, %ls,\n+%d, %ls, %d)\\n\",\n+ 312 hstmt,\n+ 313 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 314 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 315 SQLWSTR(szProcName), (int) cbProcName,\n+ 316 SQLWSTR(szColumnName), (int) cbColumnName);\n+ 317 SQLWSTR_FREE();\n+ 318 }\n+ 319 return _SQLProcedureColumns(hstmt,\n+ 320 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 321 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 322 (ODBC_CHAR*) szProcName, cbProcName,\n+ 323 (ODBC_CHAR*) szColumnName, cbColumnName, 1);\n+ 324}\n+ 325#endif\n+ 326\n+ 327SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedureColumns(\n+ 328 SQLHSTMT hstmt,\n+ 329 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 330 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 331 SQLCHAR * szProcName, SQLSMALLINT cbProcName,\n+ 332 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 333{\n+ 334 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLProcedureColumns(%p, %s, %d, %s, %d,\n+%s, %d, %s, %d)\\n\",\n+ 335 hstmt,\n+ 336 (const char*) szCatalogName, (int) cbCatalogName,\n+ 337 (const char*) szSchemaName, (int) cbSchemaName,\n+ 338 (const char*) szProcName, (int) cbProcName,\n+ 339 (const char*) szColumnName, (int) cbColumnName);\n+ 340#ifdef ENABLE_ODBC_WIDE\n+ 341 return _SQLProcedureColumns(hstmt,\n+ 342 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 343 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 344 (ODBC_CHAR*) szProcName, cbProcName,\n+ 345 (ODBC_CHAR*) szColumnName, cbColumnName, 0);\n+ 346#else\n+ 347 return _SQLProcedureColumns(hstmt,\n+ 348 szCatalogName, cbCatalogName,\n+ 349 szSchemaName, cbSchemaName,\n+ 350 szProcName, cbProcName,\n+ 351 szColumnName, cbColumnName);\n+ 352#endif\n+ 353}\n+ 354\n+ 355#ifdef ENABLE_ODBC_WIDE\n+ 356static SQLRETURN _SQLProcedures(SQLHSTMT hstmt,\n+ 357 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 358 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 359 ODBC_CHAR * szProcName, SQLSMALLINT cbProcName, int wide);\n+ 360\n+ 361SQLRETURN ODBC_PUBLIC ODBC_API SQLProceduresW(\n+ 362 SQLHSTMT hstmt,\n+ 363 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 364 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 365 SQLWCHAR * szProcName, SQLSMALLINT cbProcName)\n+ 366{\n+ 367 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 368 SQLWSTR_BUFS(3);\n+ 369 tdsdump_log(TDS_DBG_FUNC, \"SQLProceduresW(%p, %ls, %d, %ls, %d, %ls,\n+%d)\\n\",\n+ 370 hstmt,\n+ 371 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 372 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 373 SQLWSTR(szProcName), (int) cbProcName);\n+ 374 SQLWSTR_FREE();\n+ 375 }\n+ 376 return _SQLProcedures(hstmt,\n+ 377 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 378 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 379 (ODBC_CHAR*) szProcName, cbProcName, 1);\n+ 380}\n+ 381#endif\n+ 382\n+ 383SQLRETURN ODBC_PUBLIC ODBC_API SQLProcedures(\n+ 384 SQLHSTMT hstmt,\n+ 385 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 386 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 387 SQLCHAR * szProcName, SQLSMALLINT cbProcName)\n+ 388{\n+ 389 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLProcedures(%p, %s, %d, %s, %d, %s,\n+%d)\\n\",\n+ 390 hstmt,\n+ 391 (const char*) szCatalogName, (int) cbCatalogName,\n+ 392 (const char*) szSchemaName, (int) cbSchemaName,\n+ 393 (const char*) szProcName, (int) cbProcName);\n+ 394#ifdef ENABLE_ODBC_WIDE\n+ 395 return _SQLProcedures(hstmt,\n+ 396 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 397 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 398 (ODBC_CHAR*) szProcName, cbProcName, 0);\n+ 399#else\n+ 400 return _SQLProcedures(hstmt,\n+ 401 szCatalogName, cbCatalogName,\n+ 402 szSchemaName, cbSchemaName,\n+ 403 szProcName, cbProcName);\n+ 404#endif\n+ 405}\n+ 406\n+ 407#ifdef ENABLE_ODBC_WIDE\n+ 408static SQLRETURN _SQLTablePrivileges(SQLHSTMT hstmt,\n+ 409 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 410 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 411 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName, int wide);\n+ 412\n+ 413SQLRETURN ODBC_PUBLIC ODBC_API SQLTablePrivilegesW(\n+ 414 SQLHSTMT hstmt,\n+ 415 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 416 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 417 SQLWCHAR * szTableName, SQLSMALLINT cbTableName)\n+ 418{\n+ 419 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 420 SQLWSTR_BUFS(3);\n+ 421 tdsdump_log(TDS_DBG_FUNC, \"SQLTablePrivilegesW(%p, %ls, %d, %ls, %d, %ls,\n+%d)\\n\",\n+ 422 hstmt,\n+ 423 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 424 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 425 SQLWSTR(szTableName), (int) cbTableName);\n+ 426 SQLWSTR_FREE();\n+ 427 }\n+ 428 return _SQLTablePrivileges(hstmt,\n+ 429 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 430 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 431 (ODBC_CHAR*) szTableName, cbTableName, 1);\n+ 432}\n+ 433#endif\n+ 434\n+ 435SQLRETURN ODBC_PUBLIC ODBC_API SQLTablePrivileges(\n+ 436 SQLHSTMT hstmt,\n+ 437 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 438 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 439 SQLCHAR * szTableName, SQLSMALLINT cbTableName)\n+ 440{\n+ 441 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLTablePrivileges(%p, %s, %d, %s, %d, %s,\n+%d)\\n\",\n+ 442 hstmt,\n+ 443 (const char*) szCatalogName, (int) cbCatalogName,\n+ 444 (const char*) szSchemaName, (int) cbSchemaName,\n+ 445 (const char*) szTableName, (int) cbTableName);\n+ 446#ifdef ENABLE_ODBC_WIDE\n+ 447 return _SQLTablePrivileges(hstmt,\n+ 448 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 449 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 450 (ODBC_CHAR*) szTableName, cbTableName, 0);\n+ 451#else\n+ 452 return _SQLTablePrivileges(hstmt,\n+ 453 szCatalogName, cbCatalogName,\n+ 454 szSchemaName, cbSchemaName,\n+ 455 szTableName, cbTableName);\n+ 456#endif\n+ 457}\n+ 458\n+ 459#ifdef ENABLE_ODBC_WIDE\n+ 460static SQLRETURN _SQLConnect(SQLHDBC hdbc,\n+ 461 ODBC_CHAR * szDSN, SQLSMALLINT cbDSN,\n+ 462 ODBC_CHAR * szUID, SQLSMALLINT cbUID,\n+ 463 ODBC_CHAR * szAuthStr, SQLSMALLINT cbAuthStr, int wide);\n+ 464\n+ 465SQLRETURN ODBC_PUBLIC ODBC_API SQLConnectW(\n+ 466 SQLHDBC hdbc,\n+ 467 SQLWCHAR * szDSN, SQLSMALLINT cbDSN,\n+ 468 SQLWCHAR * szUID, SQLSMALLINT cbUID,\n+ 469 SQLWCHAR * szAuthStr, SQLSMALLINT cbAuthStr)\n+ 470{\n+ 471 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 472 SQLWSTR_BUFS(3);\n+ 473 tdsdump_log(TDS_DBG_FUNC, \"SQLConnectW(%p, %ls, %d, %ls, %d, %ls, %d)\\n\",\n+ 474 hdbc,\n+ 475 SQLWSTR(szDSN), (int) cbDSN,\n+ 476 SQLWSTR(szUID), (int) cbUID,\n+ 477 SQLWSTR(szAuthStr), (int) cbAuthStr);\n+ 478 SQLWSTR_FREE();\n+ 479 }\n+ 480 return _SQLConnect(hdbc,\n+ 481 (ODBC_CHAR*) szDSN, cbDSN,\n+ 482 (ODBC_CHAR*) szUID, cbUID,\n+ 483 (ODBC_CHAR*) szAuthStr, cbAuthStr, 1);\n+ 484}\n+ 485#endif\n+ 486\n+ 487SQLRETURN ODBC_PUBLIC ODBC_API SQLConnect(\n+ 488 SQLHDBC hdbc,\n+ 489 SQLCHAR * szDSN, SQLSMALLINT cbDSN,\n+ 490 SQLCHAR * szUID, SQLSMALLINT cbUID,\n+ 491 SQLCHAR * szAuthStr, SQLSMALLINT cbAuthStr)\n+ 492{\n+ 493 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLConnect(%p, %s, %d, %s, %d, %s, %d)\\n\",\n+ 494 hdbc,\n+ 495 (const char*) szDSN, (int) cbDSN,\n+ 496 (const char*) szUID, (int) cbUID,\n+ 497 (const char*) szAuthStr, (int) cbAuthStr);\n+ 498#ifdef ENABLE_ODBC_WIDE\n+ 499 return _SQLConnect(hdbc,\n+ 500 (ODBC_CHAR*) szDSN, cbDSN,\n+ 501 (ODBC_CHAR*) szUID, cbUID,\n+ 502 (ODBC_CHAR*) szAuthStr, cbAuthStr, 0);\n+ 503#else\n+ 504 return _SQLConnect(hdbc,\n+ 505 szDSN, cbDSN,\n+ 506 szUID, cbUID,\n+ 507 szAuthStr, cbAuthStr);\n+ 508#endif\n+ 509}\n+ 510\n+ 511#ifdef ENABLE_ODBC_WIDE\n+ 512static SQLRETURN _SQLDescribeCol(SQLHSTMT hstmt,\n+ 513 SQLUSMALLINT icol,\n+ 514 ODBC_CHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR*\n+pcbColName,\n+ 515 SQLSMALLINT * pfSqlType,\n+ 516 SQLULEN * pcbColDef,\n+ 517 SQLSMALLINT * pibScale,\n+ 518 SQLSMALLINT * pfNullable, int wide);\n+ 519\n+ 520SQLRETURN ODBC_PUBLIC ODBC_API SQLDescribeColW(\n+ 521 SQLHSTMT hstmt,\n+ 522 SQLUSMALLINT icol,\n+ 523 SQLWCHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR*\n+pcbColName,\n+ 524 SQLSMALLINT * pfSqlType,\n+ 525 SQLULEN * pcbColDef,\n+ 526 SQLSMALLINT * pibScale,\n+ 527 SQLSMALLINT * pfNullable)\n+ 528{\n+ 529 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLDescribeColW(%p, %u, %p, %d, %p, %p,\n+%p, %p, %p)\\n\",\n+ 530 hstmt,\n+ 531 (unsigned int) icol,\n+ 532 szColName, (int) cbColNameMax, pcbColName,\n+ 533 pfSqlType,\n+ 534 pcbColDef,\n+ 535 pibScale,\n+ 536 pfNullable);\n+ 537 return _SQLDescribeCol(hstmt,\n+ 538 icol,\n+ 539 (ODBC_CHAR*) szColName, cbColNameMax, pcbColName,\n+ 540 pfSqlType,\n+ 541 pcbColDef,\n+ 542 pibScale,\n+ 543 pfNullable, 1);\n+ 544}\n+ 545#endif\n+ 546\n+ 547SQLRETURN ODBC_PUBLIC ODBC_API SQLDescribeCol(\n+ 548 SQLHSTMT hstmt,\n+ 549 SQLUSMALLINT icol,\n+ 550 SQLCHAR * szColName, SQLSMALLINT cbColNameMax, SQLSMALLINT FAR*\n+pcbColName,\n+ 551 SQLSMALLINT * pfSqlType,\n+ 552 SQLULEN * pcbColDef,\n+ 553 SQLSMALLINT * pibScale,\n+ 554 SQLSMALLINT * pfNullable)\n+ 555{\n+ 556 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLDescribeCol(%p, %u, %p, %d, %p, %p, %p,\n+%p, %p)\\n\",\n+ 557 hstmt,\n+ 558 (unsigned int) icol,\n+ 559 szColName, (int) cbColNameMax, pcbColName,\n+ 560 pfSqlType,\n+ 561 pcbColDef,\n+ 562 pibScale,\n+ 563 pfNullable);\n+ 564#ifdef ENABLE_ODBC_WIDE\n+ 565 return _SQLDescribeCol(hstmt,\n+ 566 icol,\n+ 567 (ODBC_CHAR*) szColName, cbColNameMax, pcbColName,\n+ 568 pfSqlType,\n+ 569 pcbColDef,\n+ 570 pibScale,\n+ 571 pfNullable, 0);\n+ 572#else\n+ 573 return _SQLDescribeCol(hstmt,\n+ 574 icol,\n+ 575 szColName, cbColNameMax, pcbColName,\n+ 576 pfSqlType,\n+ 577 pcbColDef,\n+ 578 pibScale,\n+ 579 pfNullable);\n+ 580#endif\n+ 581}\n+ 582\n+ 583#ifdef ENABLE_ODBC_WIDE\n+ 584static SQLRETURN _SQLGetDescRec(SQLHDESC hdesc,\n+ 585 SQLSMALLINT RecordNumber,\n+ 586 ODBC_CHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,\n+ 587 SQLSMALLINT * Type,\n+ 588 SQLSMALLINT * SubType,\n+ 589 SQLLEN * Length,\n+ 590 SQLSMALLINT * Precision,\n+ 591 SQLSMALLINT * Scale,\n+ 592 SQLSMALLINT * Nullable, int wide);\n+ 593\n+ 594SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescRecW(\n+ 595 SQLHDESC hdesc,\n+ 596 SQLSMALLINT RecordNumber,\n+ 597 SQLWCHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,\n+ 598 SQLSMALLINT * Type,\n+ 599 SQLSMALLINT * SubType,\n+ 600 SQLLEN * Length,\n+ 601 SQLSMALLINT * Precision,\n+ 602 SQLSMALLINT * Scale,\n+ 603 SQLSMALLINT * Nullable)\n+ 604{\n+ 605 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDescRecW(%p, %d, %p, %d, %p, %p, %p,\n+%p, %p, %p, %p)\\n\",\n+ 606 hdesc,\n+ 607 (int) RecordNumber,\n+ 608 szName, (int) cbNameMax, pcbName,\n+ 609 Type,\n+ 610 SubType,\n+ 611 Length,\n+ 612 Precision,\n+ 613 Scale,\n+ 614 Nullable);\n+ 615 return _SQLGetDescRec(hdesc,\n+ 616 RecordNumber,\n+ 617 (ODBC_CHAR*) szName, cbNameMax, pcbName,\n+ 618 Type,\n+ 619 SubType,\n+ 620 Length,\n+ 621 Precision,\n+ 622 Scale,\n+ 623 Nullable, 1);\n+ 624}\n+ 625#endif\n+ 626\n+ 627SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescRec(\n+ 628 SQLHDESC hdesc,\n+ 629 SQLSMALLINT RecordNumber,\n+ 630 SQLCHAR * szName, SQLSMALLINT cbNameMax, SQLSMALLINT FAR* pcbName,\n+ 631 SQLSMALLINT * Type,\n+ 632 SQLSMALLINT * SubType,\n+ 633 SQLLEN * Length,\n+ 634 SQLSMALLINT * Precision,\n+ 635 SQLSMALLINT * Scale,\n+ 636 SQLSMALLINT * Nullable)\n+ 637{\n+ 638 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDescRec(%p, %d, %p, %d, %p, %p, %p,\n+%p, %p, %p, %p)\\n\",\n+ 639 hdesc,\n+ 640 (int) RecordNumber,\n+ 641 szName, (int) cbNameMax, pcbName,\n+ 642 Type,\n+ 643 SubType,\n+ 644 Length,\n+ 645 Precision,\n+ 646 Scale,\n+ 647 Nullable);\n+ 648#ifdef ENABLE_ODBC_WIDE\n+ 649 return _SQLGetDescRec(hdesc,\n+ 650 RecordNumber,\n+ 651 (ODBC_CHAR*) szName, cbNameMax, pcbName,\n+ 652 Type,\n+ 653 SubType,\n+ 654 Length,\n+ 655 Precision,\n+ 656 Scale,\n+ 657 Nullable, 0);\n+ 658#else\n+ 659 return _SQLGetDescRec(hdesc,\n+ 660 RecordNumber,\n+ 661 szName, cbNameMax, pcbName,\n+ 662 Type,\n+ 663 SubType,\n+ 664 Length,\n+ 665 Precision,\n+ 666 Scale,\n+ 667 Nullable);\n+ 668#endif\n+ 669}\n+ 670\n+ 671#ifdef ENABLE_ODBC_WIDE\n+ 672static SQLRETURN _SQLGetDescField(SQLHDESC hdesc,\n+ 673 SQLSMALLINT icol,\n+ 674 SQLSMALLINT fDescType,\n+ 675 SQLPOINTER Value,\n+ 676 SQLINTEGER BufferLength,\n+ 677 SQLINTEGER * StringLength, int wide);\n+ 678\n+ 679SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescFieldW(\n+ 680 SQLHDESC hdesc,\n+ 681 SQLSMALLINT icol,\n+ 682 SQLSMALLINT fDescType,\n+ 683 SQLPOINTER Value,\n+ 684 SQLINTEGER BufferLength,\n+ 685 SQLINTEGER * StringLength)\n+ 686{\n+ 687 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDescFieldW(%p, %d, %d, %p, %d,\n+%p)\\n\",\n+ 688 hdesc,\n+ 689 (int) icol,\n+ 690 (int) fDescType,\n+ 691 Value,\n+ 692 (int) BufferLength,\n+ 693 StringLength);\n+ 694 return _SQLGetDescField(hdesc,\n+ 695 icol,\n+ 696 fDescType,\n+ 697 Value,\n+ 698 BufferLength,\n+ 699 StringLength, 1);\n+ 700}\n+ 701#endif\n+ 702\n+ 703SQLRETURN ODBC_PUBLIC ODBC_API SQLGetDescField(\n+ 704 SQLHDESC hdesc,\n+ 705 SQLSMALLINT icol,\n+ 706 SQLSMALLINT fDescType,\n+ 707 SQLPOINTER Value,\n+ 708 SQLINTEGER BufferLength,\n+ 709 SQLINTEGER * StringLength)\n+ 710{\n+ 711 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetDescField(%p, %d, %d, %p, %d,\n+%p)\\n\",\n+ 712 hdesc,\n+ 713 (int) icol,\n+ 714 (int) fDescType,\n+ 715 Value,\n+ 716 (int) BufferLength,\n+ 717 StringLength);\n+ 718#ifdef ENABLE_ODBC_WIDE\n+ 719 return _SQLGetDescField(hdesc,\n+ 720 icol,\n+ 721 fDescType,\n+ 722 Value,\n+ 723 BufferLength,\n+ 724 StringLength, 0);\n+ 725#else\n+ 726 return _SQLGetDescField(hdesc,\n+ 727 icol,\n+ 728 fDescType,\n+ 729 Value,\n+ 730 BufferLength,\n+ 731 StringLength);\n+ 732#endif\n+ 733}\n+ 734\n+ 735#ifdef ENABLE_ODBC_WIDE\n+ 736static SQLRETURN _SQLSetDescField(SQLHDESC hdesc,\n+ 737 SQLSMALLINT icol,\n+ 738 SQLSMALLINT fDescType,\n+ 739 SQLPOINTER Value,\n+ 740 SQLINTEGER BufferLength, int wide);\n+ 741\n+ 742SQLRETURN ODBC_PUBLIC ODBC_API SQLSetDescFieldW(\n+ 743 SQLHDESC hdesc,\n+ 744 SQLSMALLINT icol,\n+ 745 SQLSMALLINT fDescType,\n+ 746 SQLPOINTER Value,\n+ 747 SQLINTEGER BufferLength)\n+ 748{\n+ 749 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSetDescFieldW(%p, %d, %d, %p, %d)\\n\",\n+ 750 hdesc,\n+ 751 (int) icol,\n+ 752 (int) fDescType,\n+ 753 Value,\n+ 754 (int) BufferLength);\n+ 755 return _SQLSetDescField(hdesc,\n+ 756 icol,\n+ 757 fDescType,\n+ 758 Value,\n+ 759 BufferLength, 1);\n+ 760}\n+ 761#endif\n+ 762\n+ 763SQLRETURN ODBC_PUBLIC ODBC_API SQLSetDescField(\n+ 764 SQLHDESC hdesc,\n+ 765 SQLSMALLINT icol,\n+ 766 SQLSMALLINT fDescType,\n+ 767 SQLPOINTER Value,\n+ 768 SQLINTEGER BufferLength)\n+ 769{\n+ 770 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSetDescField(%p, %d, %d, %p, %d)\\n\",\n+ 771 hdesc,\n+ 772 (int) icol,\n+ 773 (int) fDescType,\n+ 774 Value,\n+ 775 (int) BufferLength);\n+ 776#ifdef ENABLE_ODBC_WIDE\n+ 777 return _SQLSetDescField(hdesc,\n+ 778 icol,\n+ 779 fDescType,\n+ 780 Value,\n+ 781 BufferLength, 0);\n+ 782#else\n+ 783 return _SQLSetDescField(hdesc,\n+ 784 icol,\n+ 785 fDescType,\n+ 786 Value,\n+ 787 BufferLength);\n+ 788#endif\n+ 789}\n+ 790\n+ 791#ifdef ENABLE_ODBC_WIDE\n+ 792static SQLRETURN _SQLExecDirect(SQLHSTMT hstmt,\n+ 793 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStr, int wide);\n+ 794\n+ 795SQLRETURN ODBC_PUBLIC ODBC_API SQLExecDirectW(\n+ 796 SQLHSTMT hstmt,\n+ 797 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStr)\n+ 798{\n+ 799 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 800 SQLWSTR_BUFS(1);\n+ 801 tdsdump_log(TDS_DBG_FUNC, \"SQLExecDirectW(%p, %ls, %d)\\n\",\n+ 802 hstmt,\n+ 803 SQLWSTR(szSqlStr), (int) cbSqlStr);\n+ 804 SQLWSTR_FREE();\n+ 805 }\n+ 806 return _SQLExecDirect(hstmt,\n+ 807 (ODBC_CHAR*) szSqlStr, cbSqlStr, 1);\n+ 808}\n+ 809#endif\n+ 810\n+ 811SQLRETURN ODBC_PUBLIC ODBC_API SQLExecDirect(\n+ 812 SQLHSTMT hstmt,\n+ 813 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStr)\n+ 814{\n+ 815 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLExecDirect(%p, %s, %d)\\n\",\n+ 816 hstmt,\n+ 817 (const char*) szSqlStr, (int) cbSqlStr);\n+ 818#ifdef ENABLE_ODBC_WIDE\n+ 819 return _SQLExecDirect(hstmt,\n+ 820 (ODBC_CHAR*) szSqlStr, cbSqlStr, 0);\n+ 821#else\n+ 822 return _SQLExecDirect(hstmt,\n+ 823 szSqlStr, cbSqlStr);\n+ 824#endif\n+ 825}\n+ 826\n+ 827#ifdef ENABLE_ODBC_WIDE\n+ 828static SQLRETURN _SQLPrepare(SQLHSTMT hstmt,\n+ 829 ODBC_CHAR * szSqlStr, SQLINTEGER cbSqlStr, int wide);\n+ 830\n+ 831SQLRETURN ODBC_PUBLIC ODBC_API SQLPrepareW(\n+ 832 SQLHSTMT hstmt,\n+ 833 SQLWCHAR * szSqlStr, SQLINTEGER cbSqlStr)\n+ 834{\n+ 835 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 836 SQLWSTR_BUFS(1);\n+ 837 tdsdump_log(TDS_DBG_FUNC, \"SQLPrepareW(%p, %ls, %d)\\n\",\n+ 838 hstmt,\n+ 839 SQLWSTR(szSqlStr), (int) cbSqlStr);\n+ 840 SQLWSTR_FREE();\n+ 841 }\n+ 842 return _SQLPrepare(hstmt,\n+ 843 (ODBC_CHAR*) szSqlStr, cbSqlStr, 1);\n+ 844}\n+ 845#endif\n+ 846\n+ 847SQLRETURN ODBC_PUBLIC ODBC_API SQLPrepare(\n+ 848 SQLHSTMT hstmt,\n+ 849 SQLCHAR * szSqlStr, SQLINTEGER cbSqlStr)\n+ 850{\n+ 851 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLPrepare(%p, %s, %d)\\n\",\n+ 852 hstmt,\n+ 853 (const char*) szSqlStr, (int) cbSqlStr);\n+ 854#ifdef ENABLE_ODBC_WIDE\n+ 855 return _SQLPrepare(hstmt,\n+ 856 (ODBC_CHAR*) szSqlStr, cbSqlStr, 0);\n+ 857#else\n+ 858 return _SQLPrepare(hstmt,\n+ 859 szSqlStr, cbSqlStr);\n+ 860#endif\n+ 861}\n+ 862\n+ 863#ifdef ENABLE_ODBC_WIDE\n+ 864static SQLRETURN _SQLSetCursorName(SQLHSTMT hstmt,\n+ 865 ODBC_CHAR * szCursor, SQLSMALLINT cbCursor, int wide);\n+ 866\n+ 867SQLRETURN ODBC_PUBLIC ODBC_API SQLSetCursorNameW(\n+ 868 SQLHSTMT hstmt,\n+ 869 SQLWCHAR * szCursor, SQLSMALLINT cbCursor)\n+ 870{\n+ 871 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 872 SQLWSTR_BUFS(1);\n+ 873 tdsdump_log(TDS_DBG_FUNC, \"SQLSetCursorNameW(%p, %ls, %d)\\n\",\n+ 874 hstmt,\n+ 875 SQLWSTR(szCursor), (int) cbCursor);\n+ 876 SQLWSTR_FREE();\n+ 877 }\n+ 878 return _SQLSetCursorName(hstmt,\n+ 879 (ODBC_CHAR*) szCursor, cbCursor, 1);\n+ 880}\n+ 881#endif\n+ 882\n+ 883SQLRETURN ODBC_PUBLIC ODBC_API SQLSetCursorName(\n+ 884 SQLHSTMT hstmt,\n+ 885 SQLCHAR * szCursor, SQLSMALLINT cbCursor)\n+ 886{\n+ 887 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSetCursorName(%p, %s, %d)\\n\",\n+ 888 hstmt,\n+ 889 (const char*) szCursor, (int) cbCursor);\n+ 890#ifdef ENABLE_ODBC_WIDE\n+ 891 return _SQLSetCursorName(hstmt,\n+ 892 (ODBC_CHAR*) szCursor, cbCursor, 0);\n+ 893#else\n+ 894 return _SQLSetCursorName(hstmt,\n+ 895 szCursor, cbCursor);\n+ 896#endif\n+ 897}\n+ 898\n+ 899#ifdef ENABLE_ODBC_WIDE\n+ 900static SQLRETURN _SQLGetCursorName(SQLHSTMT hstmt,\n+ 901 ODBC_CHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor,\n+int wide);\n+ 902\n+ 903SQLRETURN ODBC_PUBLIC ODBC_API SQLGetCursorNameW(\n+ 904 SQLHSTMT hstmt,\n+ 905 SQLWCHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor)\n+ 906{\n+ 907 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetCursorNameW(%p, %p, %d, %p)\\n\",\n+ 908 hstmt,\n+ 909 szCursor, (int) cbCursorMax, pcbCursor);\n+ 910 return _SQLGetCursorName(hstmt,\n+ 911 (ODBC_CHAR*) szCursor, cbCursorMax, pcbCursor, 1);\n+ 912}\n+ 913#endif\n+ 914\n+ 915SQLRETURN ODBC_PUBLIC ODBC_API SQLGetCursorName(\n+ 916 SQLHSTMT hstmt,\n+ 917 SQLCHAR * szCursor, SQLSMALLINT cbCursorMax, SQLSMALLINT FAR* pcbCursor)\n+ 918{\n+ 919 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetCursorName(%p, %p, %d, %p)\\n\",\n+ 920 hstmt,\n+ 921 szCursor, (int) cbCursorMax, pcbCursor);\n+ 922#ifdef ENABLE_ODBC_WIDE\n+ 923 return _SQLGetCursorName(hstmt,\n+ 924 (ODBC_CHAR*) szCursor, cbCursorMax, pcbCursor, 0);\n+ 925#else\n+ 926 return _SQLGetCursorName(hstmt,\n+ 927 szCursor, cbCursorMax, pcbCursor);\n+ 928#endif\n+ 929}\n+ 930\n+ 931#ifdef ENABLE_ODBC_WIDE\n+ 932static SQLRETURN _SQLColumns(SQLHSTMT hstmt,\n+ 933 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 934 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 935 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,\n+ 936 ODBC_CHAR * szColumnName, SQLSMALLINT cbColumnName, int wide);\n+ 937\n+ 938SQLRETURN ODBC_PUBLIC ODBC_API SQLColumnsW(\n+ 939 SQLHSTMT hstmt,\n+ 940 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 941 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 942 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 943 SQLWCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 944{\n+ 945 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 946 SQLWSTR_BUFS(4);\n+ 947 tdsdump_log(TDS_DBG_FUNC, \"SQLColumnsW(%p, %ls, %d, %ls, %d, %ls, %d, %ls,\n+%d)\\n\",\n+ 948 hstmt,\n+ 949 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 950 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 951 SQLWSTR(szTableName), (int) cbTableName,\n+ 952 SQLWSTR(szColumnName), (int) cbColumnName);\n+ 953 SQLWSTR_FREE();\n+ 954 }\n+ 955 return _SQLColumns(hstmt,\n+ 956 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 957 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 958 (ODBC_CHAR*) szTableName, cbTableName,\n+ 959 (ODBC_CHAR*) szColumnName, cbColumnName, 1);\n+ 960}\n+ 961#endif\n+ 962\n+ 963SQLRETURN ODBC_PUBLIC ODBC_API SQLColumns(\n+ 964 SQLHSTMT hstmt,\n+ 965 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 966 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 967 SQLCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 968 SQLCHAR * szColumnName, SQLSMALLINT cbColumnName)\n+ 969{\n+ 970 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLColumns(%p, %s, %d, %s, %d, %s, %d, %s,\n+%d)\\n\",\n+ 971 hstmt,\n+ 972 (const char*) szCatalogName, (int) cbCatalogName,\n+ 973 (const char*) szSchemaName, (int) cbSchemaName,\n+ 974 (const char*) szTableName, (int) cbTableName,\n+ 975 (const char*) szColumnName, (int) cbColumnName);\n+ 976#ifdef ENABLE_ODBC_WIDE\n+ 977 return _SQLColumns(hstmt,\n+ 978 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 979 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 980 (ODBC_CHAR*) szTableName, cbTableName,\n+ 981 (ODBC_CHAR*) szColumnName, cbColumnName, 0);\n+ 982#else\n+ 983 return _SQLColumns(hstmt,\n+ 984 szCatalogName, cbCatalogName,\n+ 985 szSchemaName, cbSchemaName,\n+ 986 szTableName, cbTableName,\n+ 987 szColumnName, cbColumnName);\n+ 988#endif\n+ 989}\n+ 990\n+ 991#ifdef ENABLE_ODBC_WIDE\n+ 992static SQLRETURN _SQLGetConnectAttr(SQLHDBC hdbc,\n+ 993 SQLINTEGER Attribute,\n+ 994 SQLPOINTER Value,\n+ 995 SQLINTEGER BufferLength,\n+ 996 SQLINTEGER * StringLength, int wide);\n+ 997\n+ 998SQLRETURN ODBC_PUBLIC ODBC_API SQLGetConnectAttrW(\n+ 999 SQLHDBC hdbc,\n+ 1000 SQLINTEGER Attribute,\n+ 1001 SQLPOINTER Value,\n+ 1002 SQLINTEGER BufferLength,\n+ 1003 SQLINTEGER * StringLength)\n+ 1004{\n+ 1005 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetConnectAttrW(%p, %d, %p, %d,\n+%p)\\n\",\n+ 1006 hdbc,\n+ 1007 (int) Attribute,\n+ 1008 Value,\n+ 1009 (int) BufferLength,\n+ 1010 StringLength);\n+ 1011 return _SQLGetConnectAttr(hdbc,\n+ 1012 Attribute,\n+ 1013 Value,\n+ 1014 BufferLength,\n+ 1015 StringLength, 1);\n+ 1016}\n+ 1017#endif\n+ 1018\n+ 1019SQLRETURN ODBC_PUBLIC ODBC_API SQLGetConnectAttr(\n+ 1020 SQLHDBC hdbc,\n+ 1021 SQLINTEGER Attribute,\n+ 1022 SQLPOINTER Value,\n+ 1023 SQLINTEGER BufferLength,\n+ 1024 SQLINTEGER * StringLength)\n+ 1025{\n+ 1026 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLGetConnectAttr(%p, %d, %p, %d, %p)\\n\",\n+ 1027 hdbc,\n+ 1028 (int) Attribute,\n+ 1029 Value,\n+ 1030 (int) BufferLength,\n+ 1031 StringLength);\n+ 1032#ifdef ENABLE_ODBC_WIDE\n+ 1033 return _SQLGetConnectAttr(hdbc,\n+ 1034 Attribute,\n+ 1035 Value,\n+ 1036 BufferLength,\n+ 1037 StringLength, 0);\n+ 1038#else\n+ 1039 return _SQLGetConnectAttr(hdbc,\n+ 1040 Attribute,\n+ 1041 Value,\n+ 1042 BufferLength,\n+ 1043 StringLength);\n+ 1044#endif\n+ 1045}\n+ 1046\n+ 1047#ifdef ENABLE_ODBC_WIDE\n+ 1048static SQLRETURN _SQLSetConnectAttr(SQLHDBC hdbc,\n+ 1049 SQLINTEGER Attribute,\n+ 1050 SQLPOINTER ValuePtr,\n+ 1051 SQLINTEGER StringLength, int wide);\n+ 1052\n+ 1053SQLRETURN ODBC_PUBLIC ODBC_API SQLSetConnectAttrW(\n+ 1054 SQLHDBC hdbc,\n+ 1055 SQLINTEGER Attribute,\n+ 1056 SQLPOINTER ValuePtr,\n+ 1057 SQLINTEGER StringLength)\n+ 1058{\n+ 1059 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSetConnectAttrW(%p, %d, %p, %d)\\n\",\n+ 1060 hdbc,\n+ 1061 (int) Attribute,\n+ 1062 ValuePtr,\n+ 1063 (int) StringLength);\n+ 1064 return _SQLSetConnectAttr(hdbc,\n+ 1065 Attribute,\n+ 1066 ValuePtr,\n+ 1067 StringLength, 1);\n+ 1068}\n+ 1069#endif\n+ 1070\n+ 1071SQLRETURN ODBC_PUBLIC ODBC_API SQLSetConnectAttr(\n+ 1072 SQLHDBC hdbc,\n+ 1073 SQLINTEGER Attribute,\n+ 1074 SQLPOINTER ValuePtr,\n+ 1075 SQLINTEGER StringLength)\n+ 1076{\n+ 1077 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSetConnectAttr(%p, %d, %p, %d)\\n\",\n+ 1078 hdbc,\n+ 1079 (int) Attribute,\n+ 1080 ValuePtr,\n+ 1081 (int) StringLength);\n+ 1082#ifdef ENABLE_ODBC_WIDE\n+ 1083 return _SQLSetConnectAttr(hdbc,\n+ 1084 Attribute,\n+ 1085 ValuePtr,\n+ 1086 StringLength, 0);\n+ 1087#else\n+ 1088 return _SQLSetConnectAttr(hdbc,\n+ 1089 Attribute,\n+ 1090 ValuePtr,\n+ 1091 StringLength);\n+ 1092#endif\n+ 1093}\n+ 1094\n+ 1095#ifdef ENABLE_ODBC_WIDE\n+ 1096static SQLRETURN _SQLSpecialColumns(SQLHSTMT hstmt,\n+ 1097 SQLUSMALLINT fColType,\n+ 1098 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1099 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1100 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1101 SQLUSMALLINT fScope,\n+ 1102 SQLUSMALLINT fNullable, int wide);\n+ 1103\n+ 1104SQLRETURN ODBC_PUBLIC ODBC_API SQLSpecialColumnsW(\n+ 1105 SQLHSTMT hstmt,\n+ 1106 SQLUSMALLINT fColType,\n+ 1107 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1108 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1109 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1110 SQLUSMALLINT fScope,\n+ 1111 SQLUSMALLINT fNullable)\n+ 1112{\n+ 1113 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 1114 SQLWSTR_BUFS(3);\n+ 1115 tdsdump_log(TDS_DBG_FUNC, \"SQLSpecialColumnsW(%p, %u, %ls, %d, %ls, %d,\n+%ls, %d, %u, %u)\\n\",\n+ 1116 hstmt,\n+ 1117 (unsigned int) fColType,\n+ 1118 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 1119 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 1120 SQLWSTR(szTableName), (int) cbTableName,\n+ 1121 (unsigned int) fScope,\n+ 1122 (unsigned int) fNullable);\n+ 1123 SQLWSTR_FREE();\n+ 1124 }\n+ 1125 return _SQLSpecialColumns(hstmt,\n+ 1126 fColType,\n+ 1127 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1128 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1129 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1130 fScope,\n+ 1131 fNullable, 1);\n+ 1132}\n+ 1133#endif\n+ 1134\n+ 1135SQLRETURN ODBC_PUBLIC ODBC_API SQLSpecialColumns(\n+ 1136 SQLHSTMT hstmt,\n+ 1137 SQLUSMALLINT fColType,\n+ 1138 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1139 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1140 SQLCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1141 SQLUSMALLINT fScope,\n+ 1142 SQLUSMALLINT fNullable)\n+ 1143{\n+ 1144 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLSpecialColumns(%p, %u, %s, %d, %s, %d,\n+%s, %d, %u, %u)\\n\",\n+ 1145 hstmt,\n+ 1146 (unsigned int) fColType,\n+ 1147 (const char*) szCatalogName, (int) cbCatalogName,\n+ 1148 (const char*) szSchemaName, (int) cbSchemaName,\n+ 1149 (const char*) szTableName, (int) cbTableName,\n+ 1150 (unsigned int) fScope,\n+ 1151 (unsigned int) fNullable);\n+ 1152#ifdef ENABLE_ODBC_WIDE\n+ 1153 return _SQLSpecialColumns(hstmt,\n+ 1154 fColType,\n+ 1155 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1156 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1157 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1158 fScope,\n+ 1159 fNullable, 0);\n+ 1160#else\n+ 1161 return _SQLSpecialColumns(hstmt,\n+ 1162 fColType,\n+ 1163 szCatalogName, cbCatalogName,\n+ 1164 szSchemaName, cbSchemaName,\n+ 1165 szTableName, cbTableName,\n+ 1166 fScope,\n+ 1167 fNullable);\n+ 1168#endif\n+ 1169}\n+ 1170\n+ 1171#ifdef ENABLE_ODBC_WIDE\n+ 1172static SQLRETURN _SQLStatistics(SQLHSTMT hstmt,\n+ 1173 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1174 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1175 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1176 SQLUSMALLINT fUnique,\n+ 1177 SQLUSMALLINT fAccuracy, int wide);\n+ 1178\n+ 1179SQLRETURN ODBC_PUBLIC ODBC_API SQLStatisticsW(\n+ 1180 SQLHSTMT hstmt,\n+ 1181 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1182 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1183 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1184 SQLUSMALLINT fUnique,\n+ 1185 SQLUSMALLINT fAccuracy)\n+ 1186{\n+ 1187 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 1188 SQLWSTR_BUFS(3);\n+ 1189 tdsdump_log(TDS_DBG_FUNC, \"SQLStatisticsW(%p, %ls, %d, %ls, %d, %ls, %d,\n+%u, %u)\\n\",\n+ 1190 hstmt,\n+ 1191 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 1192 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 1193 SQLWSTR(szTableName), (int) cbTableName,\n+ 1194 (unsigned int) fUnique,\n+ 1195 (unsigned int) fAccuracy);\n+ 1196 SQLWSTR_FREE();\n+ 1197 }\n+ 1198 return _SQLStatistics(hstmt,\n+ 1199 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1200 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1201 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1202 fUnique,\n+ 1203 fAccuracy, 1);\n+ 1204}\n+ 1205#endif\n+ 1206\n+ 1207SQLRETURN ODBC_PUBLIC ODBC_API SQLStatistics(\n+ 1208 SQLHSTMT hstmt,\n+ 1209 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1210 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1211 SQLCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1212 SQLUSMALLINT fUnique,\n+ 1213 SQLUSMALLINT fAccuracy)\n+ 1214{\n+ 1215 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLStatistics(%p, %s, %d, %s, %d, %s, %d,\n+%u, %u)\\n\",\n+ 1216 hstmt,\n+ 1217 (const char*) szCatalogName, (int) cbCatalogName,\n+ 1218 (const char*) szSchemaName, (int) cbSchemaName,\n+ 1219 (const char*) szTableName, (int) cbTableName,\n+ 1220 (unsigned int) fUnique,\n+ 1221 (unsigned int) fAccuracy);\n+ 1222#ifdef ENABLE_ODBC_WIDE\n+ 1223 return _SQLStatistics(hstmt,\n+ 1224 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1225 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1226 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1227 fUnique,\n+ 1228 fAccuracy, 0);\n+ 1229#else\n+ 1230 return _SQLStatistics(hstmt,\n+ 1231 szCatalogName, cbCatalogName,\n+ 1232 szSchemaName, cbSchemaName,\n+ 1233 szTableName, cbTableName,\n+ 1234 fUnique,\n+ 1235 fAccuracy);\n+ 1236#endif\n+ 1237}\n+ 1238\n+ 1239#ifdef ENABLE_ODBC_WIDE\n+ 1240static SQLRETURN _SQLTables(SQLHSTMT hstmt,\n+ 1241 ODBC_CHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1242 ODBC_CHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1243 ODBC_CHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1244 ODBC_CHAR * szTableType, SQLSMALLINT cbTableType, int wide);\n+ 1245\n+ 1246SQLRETURN ODBC_PUBLIC ODBC_API SQLTablesW(\n+ 1247 SQLHSTMT hstmt,\n+ 1248 SQLWCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1249 SQLWCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1250 SQLWCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1251 SQLWCHAR * szTableType, SQLSMALLINT cbTableType)\n+ 1252{\n+ 1253 if (TDS_UNLIKELY(tds_write_dump)) {\n+ 1254 SQLWSTR_BUFS(4);\n+ 1255 tdsdump_log(TDS_DBG_FUNC, \"SQLTablesW(%p, %ls, %d, %ls, %d, %ls, %d, %ls,\n+%d)\\n\",\n+ 1256 hstmt,\n+ 1257 SQLWSTR(szCatalogName), (int) cbCatalogName,\n+ 1258 SQLWSTR(szSchemaName), (int) cbSchemaName,\n+ 1259 SQLWSTR(szTableName), (int) cbTableName,\n+ 1260 SQLWSTR(szTableType), (int) cbTableType);\n+ 1261 SQLWSTR_FREE();\n+ 1262 }\n+ 1263 return _SQLTables(hstmt,\n+ 1264 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1265 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1266 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1267 (ODBC_CHAR*) szTableType, cbTableType, 1);\n+ 1268}\n+ 1269#endif\n+ 1270\n+ 1271SQLRETURN ODBC_PUBLIC ODBC_API SQLTables(\n+ 1272 SQLHSTMT hstmt,\n+ 1273 SQLCHAR * szCatalogName, SQLSMALLINT cbCatalogName,\n+ 1274 SQLCHAR * szSchemaName, SQLSMALLINT cbSchemaName,\n+ 1275 SQLCHAR * szTableName, SQLSMALLINT cbTableName,\n+ 1276 SQLCHAR * szTableType, SQLSMALLINT cbTableType)\n+ 1277{\n+ 1278 TDSDUMP_LOG_FAST(TDS_DBG_FUNC, \"SQLTables(%p, %s, %d, %s, %d, %s, %d, %s,\n+%d)\\n\",\n+ 1279 hstmt,\n+ 1280 (const char*) szCatalogName, (int) cbCatalogName,\n+ 1281 (const char*) szSchemaName, (int) cbSchemaName,\n+ 1282 (const char*) szTableName, (int) cbTableName,\n+ 1283 (const char*) szTableType, (int) cbTableType);\n+ 1284#ifdef ENABLE_ODBC_WIDE\n+ 1285 return _SQLTables(hstmt,\n+ 1286 (ODBC_CHAR*) szCatalogName, cbCatalogName,\n+ 1287 (ODBC_CHAR*) szSchemaName, cbSchemaName,\n+ 1288 (ODBC_CHAR*) szTableName, cbTableName,\n+ 1289 (ODBC_CHAR*) szTableType, cbTableType, 0);\n+ 1290#else\n+ 1291 return _SQLTables(hstmt,\n+ 1292 szCatalogName, cbCatalogName,\n+ 1293 szSchemaName, cbSchemaName,\n+ 1294 szTableName, cbTableName,\n+ 1295 szTableType, cbTableType);\n+ 1296#endif\n+ 1297}\n+ 1298\n+ 1299#define tdsdump_log TDSDUMP_LOG_FAST\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00050_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00050_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/tds/sec_negotiate_openssl.h Source File\n+FreeTDS API: src/odbc/resource.h Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,48 @@\n
    \n \n \n \n \n
    \n \n+
  • src
  • odbc
  • \n
    \n \n
    \n-
    sec_negotiate_openssl.h
    \n+
    resource.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2015 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#include <openssl/rand.h>
    \n-
    21#include <openssl/bio.h>
    \n-
    22#include <openssl/pem.h>
    \n-
    23#include <openssl/err.h>
    \n-
    24
    \n-
    36#ifndef HAVE_OPENSSL
    \n-
    37#error HAVE_OPENSSL not defines, this file should not be included
    \n-
    38#endif
    \n-
    39
    \n-
    40static inline const BIGNUM*
    \n-
    41rsa_get_n(const RSA *rsa)
    \n-
    42{
    \n-
    43#if HAVE_RSA_GET0_KEY
    \n-
    44 const BIGNUM *n, *e, *d;
    \n-
    45 RSA_get0_key(rsa, &n, &e, &d);
    \n-
    46 return n;
    \n-
    47#else
    \n-
    48 return rsa->n;
    \n-
    49#endif
    \n-
    50}
    \n-
    51
    \n-
    52static void*
    \n-
    53tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t nonce_len, const char *pwd, size_t *em_size)
    \n-
    54{
    \n-
    55 RSA *rsa = NULL;
    \n-
    56 BIO *keybio;
    \n-
    57
    \n-
    58 uint8_t *message = NULL;
    \n-
    59 size_t message_len, pwd_len;
    \n-
    60 uint8_t *em = NULL;
    \n-
    61
    \n-
    62 int result;
    \n-
    63
    \n-
    64 keybio = BIO_new_mem_buf((void*) key, key_len);
    \n-
    65 if (keybio == NULL)
    \n-
    66 goto error;
    \n-
    67
    \n-
    68 rsa = PEM_read_bio_RSAPublicKey(keybio, &rsa, NULL, NULL);
    \n-
    69 if (!rsa)
    \n-
    70 goto error;
    \n-
    71
    \n-
    72 pwd_len = strlen(pwd);
    \n-
    73 message_len = nonce_len + pwd_len;
    \n-
    74 message = tds_new(uint8_t, message_len);
    \n-
    75 if (!message)
    \n-
    76 goto error;
    \n-
    77 memcpy(message, nonce, nonce_len);
    \n-
    78 memcpy(message + nonce_len, pwd, pwd_len);
    \n-
    79
    \n-
    80 em = tds_new(uint8_t, BN_num_bytes(rsa_get_n(rsa)));
    \n-
    81 if (!em)
    \n-
    82 goto error;
    \n-
    83
    \n-
    84 result = RSA_public_encrypt(message_len, message, em, rsa, RSA_PKCS1_OAEP_PADDING);
    \n-
    85 if (result < 0)
    \n-
    86 goto error;
    \n-
    87
    \n-
    88 free(message);
    \n-
    89 RSA_free(rsa);
    \n-
    90 BIO_free(keybio);
    \n-
    91
    \n-
    92 *em_size = result;
    \n-
    93 return em;
    \n-
    94
    \n-
    95error:
    \n-
    96 free(message);
    \n-
    97 free(em);
    \n-
    98 RSA_free(rsa);
    \n-
    99 BIO_free(keybio);
    \n-
    100 return NULL;
    \n-
    101}
    \n-
    102
    \n+
    1//{{NO_DEPENDENCIES}}
    \n+
    2// Microsoft Developer Studio generated include file.
    \n+
    3// Used by setup.rc
    \n+
    4//
    \n+
    5#define IDD_LOGIN 102
    \n+
    6#define IDD_DSN 106
    \n+
    7#define IDC_PROTOCOL 1003
    \n+
    8#define IDC_ADDRESS 1004
    \n+
    9#define IDC_PORT 1005
    \n+
    10#define IDC_DATABASE 1011
    \n+
    11#define IDC_DSNNAME 1015
    \n+
    12#define IDC_HINT 1017
    \n+
    13#define IDC_LOGINSERVER 1020
    \n+
    14#define IDC_LOGINUID 1021
    \n+
    15#define IDC_LOGINPWD 1022
    \n+
    16#define IDC_LOGINDUMP 1023
    \n+
    17
    \n+
    18// Next default values for new objects
    \n+
    19//
    \n+
    20#ifdef APSTUDIO_INVOKED
    \n+
    21#ifndef APSTUDIO_READONLY_SYMBOLS
    \n+
    22#define _APS_NEXT_RESOURCE_VALUE 103
    \n+
    23#define _APS_NEXT_COMMAND_VALUE 40001
    \n+
    24#define _APS_NEXT_CONTROL_VALUE 1024
    \n+
    25#define _APS_NEXT_SYMED_VALUE 101
    \n+
    26#endif
    \n+
    27#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,105 +6,39 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * tds\n-sec_negotiate_openssl.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2015 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#include \n- 21#include \n- 22#include \n- 23#include \n- 24\n- 36#ifndef HAVE_OPENSSL\n- 37#error HAVE_OPENSSL not defines, this file should not be included\n- 38#endif\n- 39\n- 40static inline const BIGNUM*\n- 41rsa_get_n(const RSA *rsa)\n- 42{\n- 43#if HAVE_RSA_GET0_KEY\n- 44 const BIGNUM *n, *e, *d;\n- 45 RSA_get0_key(rsa, &n, &e, &d);\n- 46 return n;\n- 47#else\n- 48 return rsa->n;\n- 49#endif\n- 50}\n- 51\n- 52static void*\n- 53tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t\n-nonce_len, const char *pwd, size_t *em_size)\n- 54{\n- 55 RSA *rsa = NULL;\n- 56 BIO *keybio;\n- 57\n- 58 uint8_t *message = NULL;\n- 59 size_t message_len, pwd_len;\n- 60 uint8_t *em = NULL;\n- 61\n- 62 int result;\n- 63\n- 64 keybio = BIO_new_mem_buf((void*) key, key_len);\n- 65 if (keybio == NULL)\n- 66 goto error;\n- 67\n- 68 rsa = PEM_read_bio_RSAPublicKey(keybio, &rsa, NULL, NULL);\n- 69 if (!rsa)\n- 70 goto error;\n- 71\n- 72 pwd_len = strlen(pwd);\n- 73 message_len = nonce_len + pwd_len;\n- 74 message = tds_new(uint8_t, message_len);\n- 75 if (!message)\n- 76 goto error;\n- 77 memcpy(message, nonce, nonce_len);\n- 78 memcpy(message + nonce_len, pwd, pwd_len);\n- 79\n- 80 em = tds_new(uint8_t, BN_num_bytes(rsa_get_n(rsa)));\n- 81 if (!em)\n- 82 goto error;\n- 83\n- 84 result = RSA_public_encrypt(message_len, message, em, rsa,\n-RSA_PKCS1_OAEP_PADDING);\n- 85 if (result < 0)\n- 86 goto error;\n- 87\n- 88 free(message);\n- 89 RSA_free(rsa);\n- 90 BIO_free(keybio);\n- 91\n- 92 *em_size = result;\n- 93 return em;\n- 94\n- 95error:\n- 96 free(message);\n- 97 free(em);\n- 98 RSA_free(rsa);\n- 99 BIO_free(keybio);\n- 100 return NULL;\n- 101}\n- 102\n+ * odbc\n+resource.h\n+ 1//{{NO_DEPENDENCIES}}\n+ 2// Microsoft Developer Studio generated include file.\n+ 3// Used by setup.rc\n+ 4//\n+ 5#define IDD_LOGIN 102\n+ 6#define IDD_DSN 106\n+ 7#define IDC_PROTOCOL 1003\n+ 8#define IDC_ADDRESS 1004\n+ 9#define IDC_PORT 1005\n+ 10#define IDC_DATABASE 1011\n+ 11#define IDC_DSNNAME 1015\n+ 12#define IDC_HINT 1017\n+ 13#define IDC_LOGINSERVER 1020\n+ 14#define IDC_LOGINUID 1021\n+ 15#define IDC_LOGINPWD 1022\n+ 16#define IDC_LOGINDUMP 1023\n+ 17\n+ 18// Next default values for new objects\n+ 19//\n+ 20#ifdef APSTUDIO_INVOKED\n+ 21#ifndef APSTUDIO_READONLY_SYMBOLS\n+ 22#define _APS_NEXT_RESOURCE_VALUE 103\n+ 23#define _APS_NEXT_COMMAND_VALUE 40001\n+ 24#define _APS_NEXT_CONTROL_VALUE 1024\n+ 25#define _APS_NEXT_SYMED_VALUE 101\n+ 26#endif\n+ 27#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080.html", "source2": "./usr/share/doc/freetds-doc/reference/a00080.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/tds/data.c File Reference\n+FreeTDS API: src/dblib/dblib.c File Reference\n \n \n \n \n \n \n \n@@ -65,500 +65,862 @@\n
    \n \n \n \n \n
    \n \n+
  • src
  • dblib
  • \n
    \n \n
    \n
    \n Classes |\n-Macros |\n Typedefs |\n-Functions
    \n-
    data.c File Reference
    \n+Functions |\n+Variables
    \n+
    dblib.c File Reference
    \n \n
    \n \n-

    Handle different data handling from network. \n+

    Main implementation file for db-lib. \n More...

    \n
    #include <config.h>
    \n #include <stdarg.h>
    \n-#include <stdio.h>
    \n+#include <freetds/time.h>
    \n #include <assert.h>
    \n-#include <freetds/utils.h>
    \n-#include <freetds/tds.h>
    \n-#include <freetds/bytes.h>
    \n-#include <freetds/iconv.h>
    \n-#include <freetds/checks.h>
    \n-#include <freetds/stream.h>
    \n+#include <stdio.h>
    \n+#include <freetds/tds.h>
    \n+#include <freetds/thread.h>
    \n+#include <freetds/convert.h>
    \n+#include <freetds/utils/string.h>
    \n #include <freetds/data.h>
    \n-#include <freetds/pushvis.h>
    \n-#include <freetds/popvis.h>
    \n-#include "tds_types.h"
    \n+#include <freetds/replacements.h>
    \n+#include <sybfront.h>
    \n+#include <sybdb.h>
    \n+#include <syberror.h>
    \n+#include <dblib.h>
    \n+#include "buffering.h"
    \n
    \n-Include dependency graph for data.c:
    \n+Include dependency graph for dblib.c:
    \n
    \n
    \n
    \n
    \n \n-\n+\n+\n+\n \n-

    \n Classes

    struct  tds_varmax_stream
    struct  _dblib_error_message
     
    struct  dblib_context
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Macros

    \n-#define MAX(a, b)   (((a) > (b)) ? (a) : (b))
     
    \n-#define MIN(a, b)   (((a) < (b)) ? (a) : (b))
     
    \n-#define TDS_DECLARE_FUNCS(name)    extern const TDSCOLUMNFUNCS tds_ ## name ## _funcs
     
    \n-#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
     
    \n-#define USE_ICONV   (tds->conn->use_iconv)
     
    \n \n-\n-\n+\n+\n+\n+\n

    \n Typedefs

    \n-typedef struct tds_varmax_stream TDSVARMAXSTREAM
     
    typedef struct _dblib_error_message DBLIB_ERROR_MESSAGE
     
    typedef struct dblib_context DBLIBCONTEXT
     
    \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n Functions

    \n-static TDSRET tds72_get_varmax (TDSSOCKET *tds, TDSCOLUMN *curcol)
     
    \n-TDSRET tds_clrudt_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_clrudt_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDS_INT tds_clrudt_row_len (TDSCOLUMN *col)
     
    \n- TDS_COMPILE_CHECK (tds_variant_offset, TDS_OFFSET(TDSVARIANT, data)==TDS_OFFSET(TDSBLOB, textvalue))
     
    \n- TDS_COMPILE_CHECK (tds_variant_size, sizeof(((TDSVARIANT *) 0) ->data)==sizeof(((TDSBLOB *) 0) ->textvalue))
     
    \n- TDS_COMPILE_CHECK (variant_size, sizeof(TDSBLOB) >=sizeof(TDSVARIANT))
     
    \n- TDS_DECLARE_FUNCS (clrudt)
     
    \n- TDS_DECLARE_FUNCS (generic)
     
    \n- TDS_DECLARE_FUNCS (invalid)
     
    \n- TDS_DECLARE_FUNCS (msdatetime)
     
    \n- TDS_DECLARE_FUNCS (numeric)
     
    \n- TDS_DECLARE_FUNCS (sybbigtime)
     
    \n- TDS_DECLARE_FUNCS (variant)
     
    TDSRET tds_generic_get (TDSSOCKET *tds, TDSCOLUMN *curcol)
     Read a data from wire.
     
    \n-TDSRET tds_generic_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    TDSRET tds_generic_put (TDSSOCKET *tds, TDSCOLUMN *curcol, int bcp7)
     Write data to wire.
     
    TDSRET tds_generic_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     Put data information to wire.
     
    \n-TDS_INT tds_generic_row_len (TDSCOLUMN *col)
     
    \n-TDS_SERVER_TYPE tds_get_cardinal_type (TDS_SERVER_TYPE datatype, int usertype)
     
    \n-static TDSRET tds_get_char_dynamic (TDSSOCKET *tds, TDSCOLUMN *curcol, void **pp, size_t allocated, TDSINSTREAM *r_stream)
     
    \n-static const TDSCOLUMNFUNCStds_get_column_funcs (TDSCONNECTION *conn, int type)
     
    \n-TDSRET tds_invalid_get (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_invalid_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_invalid_put (TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
     
    \n-TDSRET tds_invalid_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDS_INT tds_invalid_row_len (TDSCOLUMN *col)
     
    \n-TDSRET tds_msdatetime_get (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_msdatetime_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_msdatetime_put (TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
     
    \n-TDSRET tds_msdatetime_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDS_INT tds_msdatetime_row_len (TDSCOLUMN *col)
     
    \n-TDSRET tds_numeric_get (TDSSOCKET *tds, TDSCOLUMN *curcol)
     
    \n-TDSRET tds_numeric_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_numeric_put (TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
     
    \n-TDSRET tds_numeric_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDS_INT tds_numeric_row_len (TDSCOLUMN *col)
     
    void tds_set_column_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
     Set type of column initializing all dependency.
     
    void tds_set_param_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
     Set type of column initializing all dependency.
     
    static void tds_swap_numeric (TDS_NUMERIC *num)
     Converts numeric from Microsoft representation to internal one (Sybase).
     
    \n-TDSRET tds_sybbigtime_get (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_sybbigtime_get_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDSRET tds_sybbigtime_put (TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
     
    \n-TDSRET tds_sybbigtime_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-TDS_INT tds_sybbigtime_row_len (TDSCOLUMN *col)
     
    \n-TDSRET tds_variant_get (TDSSOCKET *tds, TDSCOLUMN *curcol)
     
    \n-TDSRET tds_variant_put (TDSSOCKET *tds, TDSCOLUMN *col, int bcp7)
     
    \n-TDSRET tds_variant_put_info (TDSSOCKET *tds, TDSCOLUMN *col)
     
    \n-static int tds_varmax_stream_read (TDSINSTREAM *stream, void *ptr, size_t len)
     
    static BYTE * _dbcoldata (TDSCOLUMN *colinfo)
     Return data from a column.
     
    \n+static int _dbnullable (DBPROCESS *dbproc, int column)
     
    \n+static char * _dbprdate (char *timestr)
     
    static RETCODE _dbresults (DBPROCESS *dbproc)
     
    \n+static int _get_printable_size (TDSCOLUMN *colinfo)
     
    \n+void copy_data_to_host_var (DBPROCESS *, TDS_SERVER_TYPE, const BYTE *, int, BYTE *, DBINT, int, DBINT *)
     
    \n+void copy_data_to_host_var (DBPROCESS *dbproc, TDS_SERVER_TYPE srctype, const BYTE *src, DBINT srclen, BYTE *dest, DBINT destlen, int bindtype, DBINT *indicator)
     
    \n+static void db_env_chg (TDSSOCKET *tds, int type, char *oldval, char *newval)
     
    const char * dbacolname (DBPROCESS *dbproc, int computeid, int column)
     Return name of a computed result column.
     
    \n+static TDSCOLUMNdbacolptr (DBPROCESS *dbproc, int computeid, int column, int is_bind)
     
    BYTE * dbadata (DBPROCESS *dbproc, int computeid, int column)
     Get address of compute column data.
     
    DBINT dbadlen (DBPROCESS *dbproc, int computeid, int column)
     Get size of data in a compute column.
     
    RETCODE dbaltbind (DBPROCESS *dbproc, int computeid, int column, int vartype, DBINT varlen, BYTE *varaddr)
     Bind a compute column to a program variable.
     
    int dbaltcolid (DBPROCESS *dbproc, int computeid, int column)
     Get column ID of a compute column.
     
    DBINT dbaltlen (DBPROCESS *dbproc, int computeid, int column)
     Get size of data in compute column.
     
    int dbaltop (DBPROCESS *dbproc, int computeid, int column)
     Get aggregation operator for a compute column.
     
    int dbalttype (DBPROCESS *dbproc, int computeid, int column)
     Get datatype for a compute column.
     
    DBINT dbaltutype (DBPROCESS *dbproc, int computeid, int column)
     Get user-defined datatype of a compute column.
     
    RETCODE dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
     Tie a null-indicator to a compute result column.
     
    RETCODE dbanydatecrack (DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void *data)
     Break any kind of date or time value into useful pieces.
     
    RETCODE dbbind (DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
     Tie a host variable to a resultset column.
     
    \n+static int dbbindtype (int datatype)
     
    BYTE * dbbylist (DBPROCESS *dbproc, int computeid, int *size)
     Get bylist for a compute row.
     
    RETCODE dbcancel (DBPROCESS *dbproc)
     Cancel the current command batch.
     
    RETCODE dbcanquery (DBPROCESS *dbproc)
     Cancel the query currently being retrieved, discarding all pending rows.
     
    char * dbchange (DBPROCESS *dbproc)
     See if a command caused the current database to change.
     
    void dbclose (DBPROCESS *dbproc)
     Close a connection to the server and free associated resources.
     
    void dbclrbuf (DBPROCESS *dbproc, DBINT n)
     Clear n rows from the row buffer.
     
    RETCODE dbclropt (DBPROCESS *dbproc, int option, const char param[])
     Reset an option.
     
    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)
     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.
     
    static TDSCOLUMNdbcolptr (DBPROCESS *dbproc, int column)
     Sanity checks for column-oriented functions.
    \n+
     
    char * dbcolsource (DBPROCESS *dbproc, int column)
     Get base database column name for a result set column.
     
    int dbcoltype (DBPROCESS *dbproc, int column)
     Get the datatype of a regular result set column.
     
    DBTYPEINFOdbcoltypeinfo (DBPROCESS *dbproc, int column)
     Get precision and scale information for a regular result column.
     
    int dbcolutype (DBPROCESS *dbproc, int column)
     Get user-defined datatype of a regular result column.
     
    DBINT dbconvert (DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
     cf.
     
    DBINT dbconvert_ps (DBPROCESS *dbproc, int db_srctype, const BYTE *src, DBINT srclen, int db_desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
     Convert one datatype to another.
     
    DBINT dbcount (DBPROCESS *dbproc)
     Get count of rows processed.
     
    int dbcurcmd (DBPROCESS *dbproc)
     Get number of the row just returned.
     
    DBINT dbcurrow (DBPROCESS *dbproc)
     Get number of the row currently being read.
     
    BYTE * dbdata (DBPROCESS *dbproc, int column)
     Get address of data in a regular result column.
     
    int dbdatecmp (DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
     Compare DBDATETIME values, similar to strcmp(3).
     
    RETCODE dbdatecrack (DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *datetime)
     Break a DBDATETIME value into useful pieces.
     
    DBINT dbdatlen (DBPROCESS *dbproc, int column)
     Get size of current row's data in a regular result column.
     
    DBBOOL dbdead (DBPROCESS *dbproc)
     Check if dbproc is an ex-parrot.
    \n+
     
    EHANDLEFUNC dberrhandle (EHANDLEFUNC handler)
     Set an error handler, for messages from db-lib.
     
    void dbexit ()
     Close server connections and free all related structures.
     
    RETCODE dbfcmd (DBPROCESS *dbproc, const char *fmt,...)
     printf-like way to form SQL to send to the server.
     
    DBINT dbfirstrow (DBPROCESS *dbproc)
     See if a server response has arrived.
     
    void dbfreebuf (DBPROCESS *dbproc)
     Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
     
    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)
     
    int dbgetpacket (DBPROCESS *dbproc)
     Get TDS packet size for the connection.
     
    RETCODE dbgetrow (DBPROCESS *dbproc, DBINT row)
     Read a row from the row buffer.
     
    int dbgettime (void)
     Get maximum seconds db-lib waits for a server response to query.
     
    BYTE * dbgetuserdata (DBPROCESS *dbproc)
     Get address of user-allocated data from a DBPROCESS.
     
    DBBOOL dbhasretstat (DBPROCESS *dbproc)
     Determine if query generated a return status number.
     
    RETCODE dbinit (void)
     Initialize db-lib.
     
    int dbiordesc (DBPROCESS *dbproc)
     Get file descriptor of the socket used by a DBPROCESS to read data coming from the server. (!)
     
    int dbiowdesc (DBPROCESS *dbproc)
     Get file descriptor of the socket used by a DBPROCESS to write data coming to the server. (!)
     
    \n+DBBOOL dbisavail (DBPROCESS *dbproc)
     
    BOOL dbiscount (DBPROCESS *dbproc)
     Indicates whether or not the count returned by dbcount is real (Microsoft-compatibility feature).
     
    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.
     
    \n+static int dblib_add_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
     
    \n+static TDS_SERVER_TYPE dblib_bound_type (int bindtype)
     
    \n+static int dblib_coltype (TDSCOLUMN *colinfo)
     
    \n+static RETCODE dblib_datecrack (DBPROCESS *dbproc, BOOL nano_precision, DBDATEREC *output, int type, const void *data)
     
    \n+static void dblib_del_connection (DBLIBCONTEXT *ctx, TDSSOCKET *tds)
     
    \n+static TDSCONTEXTdblib_get_tds_ctx (void)
     
    \n+static void dblib_release_tds_ctx (int count)
     
    LOGINRECdblogin (void)
     Allocate a LOGINREC structure.
     
    \n+void dbloginfree (LOGINREC *login)
     free the LOGINREC
     
    RETCODE dbmny4add (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
     Add two DBMONEY4 values.
     
    int dbmny4cmp (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
     Compare two DBMONEY4 values.
     
    RETCODE dbmny4copy (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
     Copy a DBMONEY4 value.
     
    RETCODE dbmny4minus (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
     Negate a DBMONEY4 value.
     
    RETCODE dbmny4sub (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
     Subtract two DBMONEY4 values.
     
    RETCODE dbmny4zero (DBPROCESS *dbproc, DBMONEY4 *dest)
     Zero a DBMONEY4 value.
     
    int dbmnycmp (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
     Compare two DBMONEY values.
     
    RETCODE dbmnycopy (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
     Copy a DBMONEY value.
     
    RETCODE dbmnydec (DBPROCESS *dbproc, DBMONEY *amount)
     Subtract $0.0001 from a DBMONEY value.
     
    RETCODE dbmnyinc (DBPROCESS *dbproc, DBMONEY *amount)
     Add $0.0001 to a DBMONEY value.
     
    RETCODE dbmnymaxneg (DBPROCESS *dbproc, DBMONEY *amount)
     Get maximum negative DBMONEY value supported.
     
    RETCODE dbmnymaxpos (DBPROCESS *dbproc, DBMONEY *amount)
     Get maximum positive DBMONEY value supported.
     
    RETCODE dbmnyminus (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
     Negate a DBMONEY value.
     
    RETCODE dbmnyzero (DBPROCESS *dbproc, DBMONEY *dest)
     Set a DBMONEY value to zero.
     
    const char * dbmonthname (DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
     Get name of a month, in some human language.
     
    RETCODE dbmorecmds (DBPROCESS *dbproc)
     See if more commands are to be processed.
     
    RETCODE dbmoretext (DBPROCESS *dbproc, DBINT size, const BYTE text[])
     Send chunk of a text/image value to the server.
     
    MHANDLEFUNC dbmsghandle (MHANDLEFUNC handler)
     Set a message handler, for messages from the server.
     
    char * dbname (DBPROCESS *dbproc)
     Get name of current database.
     
    \n+STATUS dbnextrow (DBPROCESS *dbproc)
     
    RETCODE dbnullbind (DBPROCESS *dbproc, int column, DBINT *indicator)
     Tie a null-indicator to a regular result column.
     
    int dbnumalts (DBPROCESS *dbproc, int computeid)
     Get count of columns in a compute row.
     
    int dbnumcols (DBPROCESS *dbproc)
     Return number of regular columns in a result set.
     
    int dbnumcompute (DBPROCESS *dbproc)
     Get count of COMPUTE clauses for a result set.
     
    int dbnumrets (DBPROCESS *dbproc)
     Get count of output parameters filled by a stored procedure.
     
    int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum,...)
     Call client-installed error handler.
     
    DBINT dbprcollen (DBPROCESS *dbproc, int column)
     Get size of a result column needed to print column.
     
    void dbprhead (DBPROCESS *dbproc)
     Print result set headings to stdout.
     
    RETCODE dbprrow (DBPROCESS *dbproc)
     Print a result set to stdout.
     
    const char * dbprtype (int token)
     Print a token value's name to a buffer.
     
    STATUS dbreadtext (DBPROCESS *dbproc, void *buf, DBINT bufsize)
     Fetch part of a text or image value from the server.
     
    void dbrecftos (const char filename[])
     Record to a file all SQL commands sent to the server.
     
    RETCODE dbresults (DBPROCESS *dbproc)
     Set up query results.
     
    BYTE * dbretdata (DBPROCESS *dbproc, int retnum)
     Get value of an output parameter filled by a stored procedure.
     
    int dbretlen (DBPROCESS *dbproc, int retnum)
     Get size of an output parameter filled by a stored procedure.
     
    char * dbretname (DBPROCESS *dbproc, int retnum)
     Get name of an output parameter filled by a stored procedure.
     
    DBINT dbretstatus (DBPROCESS *dbproc)
     Fetch status value returned by query or remote procedure call.
     
    int dbrettype (DBPROCESS *dbproc, int retnum)
     Get datatype of a stored procedure's return parameter.
     
    RETCODE dbrows (DBPROCESS *dbproc)
     Indicate whether a query returned rows.
     
    STATUS dbrowtype (DBPROCESS *dbproc)
     Get returned row's type.
     
    RETCODE dbsafestr (DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype)
     safely quotes character values in SQL text.
     
    char * dbservcharset (DBPROCESS *dbproc)
     Get syscharset name of the server character set.
     
    void dbsetavail (DBPROCESS *dbproc)
     Mark a DBPROCESS as \"available\".
     
    void dbsetifile (char *filename)
     set name and location of the interfaces file FreeTDS should use to look up a servername.
     
    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.
     
    RETCODE dbsetlbool (LOGINREC *login, int value, int which)
     Set a boolean value in a LOGINREC structure.
    \n+
     
    RETCODE dbsetllong (LOGINREC *login, long value, int which)
     Set an integer value in a LOGINREC structure.
    \n+
     
    RETCODE dbsetlname (LOGINREC *login, const char *value, int which)
     Set the value of a string in a LOGINREC structure.
    \n+
     
    RETCODE dbsetlogintime (int seconds)
     Set maximum seconds db-lib waits for a server response to a login attempt.
     
    \n+RETCODE dbsetlversion (LOGINREC *login, BYTE version)
     Set TDS version for future connections.
     
    RETCODE dbsetmaxprocs (int maxprocs)
     Set maximum simultaneous connections db-lib will open to the server.
     
    RETCODE dbsetnull (DBPROCESS *dbproc, int bindtype, int bindlen, BYTE *bindval)
     Define substitution values to be used when binding null values.
     
    RETCODE dbsetopt (DBPROCESS *dbproc, int option, const char *char_param, int int_param)
     Set db-lib or server option.
     
    STATUS dbsetrow (DBPROCESS *dbproc, DBINT row)
     Make a buffered row \"current\" without fetching it into bound variables.
     
    RETCODE dbsettime (int seconds)
     Set maximum seconds db-lib waits for a server response to query.
     
    void dbsetuserdata (DBPROCESS *dbproc, BYTE *ptr)
     Associate client-allocated (and defined) data with a DBPROCESS.
     
    RETCODE dbsetversion (DBINT version)
     Specify a db-lib version level.
     
    int dbspid (DBPROCESS *dbproc)
     Get server process ID for a DBPROCESS.
     
    RETCODE dbspr1row (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
     Print a regular result row to a buffer.
     
    DBINT dbspr1rowlen (DBPROCESS *dbproc)
     Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(), and dbspr1row().
     
    RETCODE dbsprhead (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
     Print result set headings to a buffer.
     
    RETCODE dbsprline (DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
     Get formatted string for underlining dbsprhead() column names.
     
    RETCODE dbsqlexec (DBPROCESS *dbproc)
     send the SQL command to the server and wait for an answer.
     
    RETCODE dbsqlok (DBPROCESS *dbproc)
     Wait for results of a query from the server.
     
    RETCODE dbsqlsend (DBPROCESS *dbproc)
     Transmit the command buffer to the server.
     
    RETCODE dbstrbuild (DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char *formats,...)
     Build a printable string from text containing placeholders for variables.
     
    RETCODE dbstrcpy (DBPROCESS *dbproc, int start, int numbytes, char *dest)
     Get a copy of a chunk of the command buffer.
     
    \n+static RETCODE dbstring_assign (DBSTRING **dbstrp, const char *p)
     
    \n+static RETCODE dbstring_concat (DBSTRING **dbstrp, const char *p)
     
    \n+static void dbstring_free (DBSTRING **dbstrp)
     
    \n+static char * dbstring_get (DBSTRING *dbstr)
     
    \n+static int dbstring_getchar (DBSTRING *dbstr, int i)
     
    \n+static DBINT dbstring_length (DBSTRING *dbstr)
     
    int dbstrlen (DBPROCESS *dbproc)
     Get size of the command buffer, in bytes.
     
    RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)
     describe table column attributes with a single call (Freetds-only API function modelled on dbcolinfo)
     
    int dbtds (DBPROCESS *dbproc)
     Get the TDS version in use for dbproc.
    \n+
     
    DBBINARY * dbtxptr (DBPROCESS *dbproc, int column)
     Get text pointer for a column in the current row.
     
    DBBINARY * dbtxtimestamp (DBPROCESS *dbproc, int column)
     Get text timestamp for a column in the current row.
     
    RETCODE dbuse (DBPROCESS *dbproc, const char *name)
     Change current database.
     
    DBINT dbvarylen (DBPROCESS *dbproc, int column)
     Determine whether a column can vary in size.
     
    const char * dbversion ()
     See which version of db-lib is in use.
     
    DBBOOL dbwillconvert (int srctype, int desttype)
     Test whether or not a datatype can be converted to another datatype.
     
    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.
     
    static int default_err_handler (DBPROCESS *dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)
     default error handler for db-lib (handles library-generated errors)
     
    \n+static DBOPTIONinit_dboptions (void)
     
    \n+static const char * prdbresults_state (int retcode)
     
    \n+static const char * prdbretcode (RETCODE retcode)
     
    \n+static const char * prresult_type (int result_type)
     
    \n+static const char * prretcode (int retcode)
     
    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.
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Variables

    \n+EHANDLEFUNC _dblib_err_handler = default_err_handler
     
    \n+MHANDLEFUNC _dblib_msg_handler = NULL
     
    \n+static const DBLIB_ERROR_MESSAGE dblib_error_messages []
     
    \n+static tds_mutex dblib_mutex = TDS_MUTEX_INITIALIZER
     
    \n+static NULLREP default_null_representations [MAXBINDTYPES]
     
    \n+static DBLIBCONTEXT g_dblib_ctx
     
    static int g_dblib_version
     
    \n+static const DBBIGINT null_BIGINT = 0
     
    \n+static const DBBIT null_BIT = 0
     
    \n+static const DBCHAR null_CHAR = '\\0'
     
    \n+static const DBDATETIME null_DATETIME = { 0, 0 }
     
    \n+static const TDS_DATETIMEALL null_DATETIMEALL = { 0, 0, 0, 0 }
     
    \n+static const DBFLT8 null_FLT8 = 0
     
    \n+static const DBINT null_INT = 0
     
    \n+static const DBMONEY null_MONEY = { 0, 0 }
     
    \n+static const DBNUMERIC null_NUMERIC = { 0, 0, {0} }
     
    \n+static const DBREAL null_REAL = 0
     
    \n+static const DBDATETIME4 null_SMALLDATETIME = { 0, 0 }
     
    \n+static const DBSMALLINT null_SMALLINT = 0
     
    \n+static const DBMONEY4 null_SMALLMONEY = {0}
     
    \n+static const DBTINYINT null_TINYINT = 0
     
    \n+static const DBVARYCHAR null_VARYCHAR = { 0, {0} }
     
    \n+static const char *const opttext [DBNUMOPTIONS]
     
    \n

    Detailed Description

    \n-

    Handle different data handling from network.

    \n-

    Function Documentation

    \n-\n-

    ◆ tds_generic_get()

    \n+

    Main implementation file for db-lib.

    \n+

    Typedef Documentation

    \n+\n+

    ◆ DBLIBCONTEXT

    \n \n
    \n
    \n \n \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n+ \n \n
    TDSRET tds_generic_get (TDSSOCKETtds,
    TDSCOLUMNcurcol 
    )typedef struct dblib_context DBLIBCONTEXT
    \n
    \n-\n-

    Read a data from wire.

    \n-
    Parameters
    \n- \n- \n- \n-
    tdsstate information for the socket and the TDS protocol
    curcolcolumn where store column information
    \n-
    \n-
    \n-
    Returns
    TDS_FAIL on error or TDS_SUCCESS
    \n-
    \n-Here is the call graph for this function:
    \n-
    \n-
    \n-
    \n+

    \\dblib_internal

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

    ◆ tds_generic_put()

    \n+

    Function Documentation

    \n+\n+

    ◆ dbcolinfo()

    \n \n
    \n
    \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \n \n- \n- \n+ \n+ \n \n \n \n \n- \n- \n+ \n+ \n \n \n+ \n \n- \n- \n- \n-
    TDSRET tds_generic_put RETCODE dbcolinfo (TDSSOCKETtds, DBPROCESSdbproc,
    TDSCOLUMNcurcol, CI_TYPE type,
    int bcp7 DBINT column,
    )
    \n-
    \n-\n-

    Write data to wire.

    \n-
    Parameters
    \n- \n- \n- \n-
    tdsstate information for the socket and the TDS protocol
    curcolcolumn where store column information
    \n-
    \n-
    \n-
    Returns
    TDS_FAIL on error or TDS_SUCCESS
    \n-
    \n-Here is the call graph for this function:
    \n-
    \n-
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ tds_generic_put_info()

    \n-\n-
    \n-
    \n- \n- \n- \n- \n- \n- \n+ \n+ \n \n \n \n \n- \n- \n+ \n+ \n \n \n \n \n \n \n
    TDSRET tds_generic_put_info (TDSSOCKETtds, DBINT computeid,
    TDSCOLUMNcol DBCOLpdbcol 
    )
    \n
    \n \n-

    Put data information to wire.

    \n+

    Get a bunch of column attributes with a single call (Microsoft-compatibility feature).

    \n+


    \n+

    \n
    Parameters
    \n \n- \n- \n+ \n+ \n+ \n+ \n+ \n
    tdsstate information for the socket and the TDS protocol
    colcolumn where to store information
    dbproccontains all information needed by db-lib to manage communications with the server.
    typemust be CI_REGULAR or CI_ALTERNATE (CI_CURSOR is defined by the vendor, but is not yet implemented).
    columnNth in the result set, starting from 1.
    computeid(ignored)
    pdbcoladdress of structure to be populated by this function.
    \n+
    \n
    \n
    \n-
    Returns
    TDS_SUCCESS or TDS_FAIL
    \n+
    Returns
    SUCCEED or FAIL.
    \n+
    See also
    dbcolbrowse(), dbqual(), dbtabbrowse(), dbtabcount(), dbtabname(), dbtabsource(), dbtsnewlen(), dbtsnewval(), dbtsput().
    \n+
    Todo:
    Support cursor rows.
    \n
    \n Here is the call graph for this function:
    \n
    \n-
    \n+
    \n
    \n \n
    \n
    \n-\n-

    ◆ tds_set_column_type()

    \n+\n+

    ◆ dbgetnull()

    \n \n
    \n
    \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \n \n- \n- \n+ \n+ \n \n \n \n \n- \n- \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n \n \n \n \n \n \n
    void tds_set_column_type RETCODE dbgetnull (TDSCONNECTIONconn, DBPROCESSdbproc,
    TDSCOLUMNcurcol, int bindtype,
    TDS_SERVER_TYPE type int varlen,
    BYTE * varaddr 
    )
    \n
    \n-\n-

    Set type of column initializing all dependency.

    \n-

    column_usertype should already be set.

    Parameters
    \n- \n- \n- \n-
    curcolcolumn to set
    typetype to set
    \n-
    \n-
    \n+

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


    \n+

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

    \n+
    \n+Here is the call graph for this function:
    \n+
    \n+
    \n+
    \n
    \n Here is the caller graph for this function:
    \n
    \n-
    \n+
    \n
    \n \n
    \n
    \n-\n-

    ◆ tds_set_param_type()

    \n+\n+

    ◆ tds_prdatatype()

    \n \n
    \n
    \n+\n+ \n+ \n+ \n+ \n+
    \n \n \n- \n+ \n \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n+ \n+ \n \n- \n- \n- \n- \n- \n- \n- \n \n
    void tds_set_param_type static const char * tds_prdatatype (TDSCONNECTIONconn,
    TDSCOLUMNcurcol,
    int datatype_token)TDS_SERVER_TYPE type 
    )
    \n+
    \n+static
    \n
    \n \n-

    Set type of column initializing all dependency.

    \n-
    Parameters
    \n- \n- \n- \n- \n-
    tdsstate information for the socket and the TDS protocol
    curcolcolumn to set
    typetype to set
    \n-
    \n-
    \n+

    Returns type in string.

    \n+

    Used for debugging purpose

    \n
    \n-Here is the call graph for this function:
    \n+Here is the caller graph for this function:
    \n
    \n-
    \n+
    \n
    \n \n
    \n \n-\n-

    ◆ tds_swap_numeric()

    \n+

    Variable Documentation

    \n+\n+

    ◆ g_dblib_version

    \n \n
    \n
    \n \n \n \n \n \n
    \n \n \n- \n- \n- \n- \n- \n+ \n \n
    static void tds_swap_numeric (TDS_NUMERICnum)int g_dblib_version
    \n
    \n static
    \n
    \n-\n-

    Converts numeric from Microsoft representation to internal one (Sybase).

    \n-
    Parameters
    \n- \n- \n-
    numnumeric data to convert
    \n-
    \n-
    \n-
    \n-Here is the caller graph for this function:
    \n-
    \n-
    \n-
    \n-\n+Initial value:
    =
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+\n+
    #define DBVERSION_UNKNOWN
    DBVERSION_xxx are used with dbsetversion()
    Definition sybdb.h:70
    \n+
    \n
    \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,259 +5,731 @@\n \n FreeTDS API\n \n Loading...\n Searching...\n No Matches\n * src\n- * tds\n-Classes | Macros | Typedefs | Functions\n-data.c File Reference\n-Handle different data handling from network. More...\n+ * dblib\n+Classes | Typedefs | Functions | Variables\n+dblib.c File Reference\n+Main implementation file for db-lib. More...\n #include \n #include \n-#include \n+#include \n #include \n-#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n+#include \n+#include \n+#include \n #include \n-#include \n-#include \n-#include \"tds_types.h\"\n-Include dependency graph for data.c:\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \"buffering.h\"\n+Include dependency graph for dblib.c:\n Classes\n-struct \u00a0tds_varmax_stream\n+struct \u00a0_dblib_error_message\n \u00a0\n- Macros\n- #define\u00a0MAX(a, b)\u00a0\u00a0\u00a0(((a) > (b)) ? (a) : (b))\n+struct \u00a0dblib_context\n \u00a0\n- #define\u00a0MIN(a, b)\u00a0\u00a0\u00a0(((a) < (b)) ? (a) : (b))\n+ Typedefs\n+typedef struct _dblib_error_message\u00a0DBLIB_ERROR_MESSAGE\n \u00a0\n- #define\u00a0TDS_DECLARE_FUNCS(name)\u00a0\u00a0\u00a0 extern const TDSCOLUMNFUNCS tds_ ## name ##\n- _funcs\n+ typedef struct dblib_context\u00a0DBLIBCONTEXT\n \u00a0\n- #define\u00a0TDS_DONT_DEFINE_DEFAULT_FUNCTIONS\n+ Functions\n+ static BYTE *\u00a0_dbcoldata (TDSCOLUMN *colinfo)\n+\u00a0 Return data from a column.\n \u00a0\n- #define\u00a0USE_ICONV\u00a0\u00a0\u00a0(tds->conn->use_iconv)\n+ static int\u00a0_dbnullable (DBPROCESS *dbproc, int column)\n \u00a0\n- Typedefs\n- typedef struct tds_varmax_stream\u00a0TDSVARMAXSTREAM\n+ static char *\u00a0_dbprdate (char *timestr)\n \u00a0\n- Functions\n- static TDSRET\u00a0tds72_get_varmax (TDSSOCKET *tds, TDSCOLUMN\n- *curcol)\n+ static RETCODE\u00a0_dbresults (DBPROCESS *dbproc)\n+\u00a0\n+ static int\u00a0_get_printable_size (TDSCOLUMN *colinfo)\n+\u00a0\n+ void\u00a0copy_data_to_host_var (DBPROCESS *, TDS_SERVER_TYPE,\n+ const BYTE *, int, BYTE *, DBINT, int, DBINT *)\n+\u00a0\n+ void\u00a0copy_data_to_host_var (DBPROCESS *dbproc,\n+ TDS_SERVER_TYPE srctype, const BYTE *src, DBINT\n+ srclen, BYTE *dest, DBINT destlen, int bindtype, DBINT\n+ *indicator)\n+\u00a0\n+ static void\u00a0db_env_chg (TDSSOCKET *tds, int type, char *oldval,\n+ char *newval)\n \u00a0\n- TDSRET\u00a0tds_clrudt_get_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ const char *\u00a0dbacolname (DBPROCESS *dbproc, int computeid, int\n+ column)\n+\u00a0 Return name of a computed result column.\n \u00a0\n- TDSRET\u00a0tds_clrudt_put_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ static TDSCOLUMN *\u00a0dbacolptr (DBPROCESS *dbproc, int computeid, int\n+ column, int is_bind)\n \u00a0\n- TDS_INT\u00a0tds_clrudt_row_len (TDSCOLUMN *col)\n+ BYTE *\u00a0dbadata (DBPROCESS *dbproc, int computeid, int column)\n+\u00a0 Get address of compute column data.\n \u00a0\n- \u00a0TDS_COMPILE_CHECK (tds_variant_offset,\n- TDS_OFFSET(TDSVARIANT, data)==TDS_OFFSET\n- (TDSBLOB, textvalue))\n+ DBINT\u00a0dbadlen (DBPROCESS *dbproc, int computeid, int column)\n+\u00a0 Get size of data in a compute column.\n \u00a0\n- \u00a0TDS_COMPILE_CHECK (tds_variant_size, sizeof((\n- (TDSVARIANT *) 0) ->data)==sizeof(((TDSBLOB *)\n- 0) ->textvalue))\n+ RETCODE\u00a0dbaltbind (DBPROCESS *dbproc, int computeid, int\n+ column, int vartype, DBINT varlen, BYTE *varaddr)\n+\u00a0 Bind a compute column to a program variable.\n \u00a0\n- \u00a0TDS_COMPILE_CHECK (variant_size, sizeof\n- (TDSBLOB) >=sizeof(TDSVARIANT))\n+ int\u00a0dbaltcolid (DBPROCESS *dbproc, int computeid, int\n+ column)\n+\u00a0 Get column ID of a compute column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (clrudt)\n+ DBINT\u00a0dbaltlen (DBPROCESS *dbproc, int computeid, int\n+ column)\n+\u00a0 Get size of data in compute column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (generic)\n+ int\u00a0dbaltop (DBPROCESS *dbproc, int computeid, int column)\n+\u00a0 Get aggregation operator for a compute column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (invalid)\n+ int\u00a0dbalttype (DBPROCESS *dbproc, int computeid, int\n+ column)\n+\u00a0 Get datatype for a compute column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (msdatetime)\n+ DBINT\u00a0dbaltutype (DBPROCESS *dbproc, int computeid, int\n+ column)\n+\u00a0 Get user-defined datatype of a compute column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (numeric)\n+ RETCODE\u00a0dbanullbind (DBPROCESS *dbproc, int computeid, int\n+ column, DBINT *indicator)\n+\u00a0 Tie a null-indicator to a compute result column.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (sybbigtime)\n+ RETCODE\u00a0dbanydatecrack (DBPROCESS *dbproc, DBDATEREC2 *di, int\n+ type, const void *data)\n+\u00a0 Break any kind of date or time value into useful\n+ pieces.\n \u00a0\n- \u00a0TDS_DECLARE_FUNCS (variant)\n+ RETCODE\u00a0dbbind (DBPROCESS *dbproc, int column, int vartype,\n+ DBINT varlen, BYTE *varaddr)\n+\u00a0 Tie a host variable to a resultset column.\n \u00a0\n- TDSRET\u00a0tds_generic_get (TDSSOCKET *tds, TDSCOLUMN\n- *curcol)\n-\u00a0 Read a data from wire.\n+ static int\u00a0dbbindtype (int datatype)\n \u00a0\n- TDSRET\u00a0tds_generic_get_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ BYTE *\u00a0dbbylist (DBPROCESS *dbproc, int computeid, int *size)\n+\u00a0 Get bylist for a compute row.\n \u00a0\n- TDSRET\u00a0tds_generic_put (TDSSOCKET *tds, TDSCOLUMN\n- *curcol, int bcp7)\n-\u00a0 Write data to wire.\n+ RETCODE\u00a0dbcancel (DBPROCESS *dbproc)\n+\u00a0 Cancel the current command batch.\n \u00a0\n- TDSRET\u00a0tds_generic_put_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n-\u00a0 Put data information to wire.\n+ RETCODE\u00a0dbcanquery (DBPROCESS *dbproc)\n+\u00a0 Cancel the query currently being retrieved, discarding\n+ all pending rows.\n \u00a0\n- TDS_INT\u00a0tds_generic_row_len (TDSCOLUMN *col)\n+ char *\u00a0dbchange (DBPROCESS *dbproc)\n+\u00a0 See if a command caused the current database to\n+ change.\n \u00a0\n- TDS_SERVER_TYPE\u00a0tds_get_cardinal_type (TDS_SERVER_TYPE\n- datatype, int usertype)\n+ void\u00a0dbclose (DBPROCESS *dbproc)\n+\u00a0 Close a connection to the server and free associated\n+ resources.\n \u00a0\n- static TDSRET\u00a0tds_get_char_dynamic (TDSSOCKET *tds, TDSCOLUMN\n- *curcol, void **pp, size_t allocated,\n- TDSINSTREAM *r_stream)\n+ void\u00a0dbclrbuf (DBPROCESS *dbproc, DBINT n)\n+\u00a0 Clear n rows from the row buffer.\n \u00a0\n- static const TDSCOLUMNFUNCS *\u00a0tds_get_column_funcs (TDSCONNECTION *conn, int\n- type)\n+ RETCODE\u00a0dbclropt (DBPROCESS *dbproc, int option, const char\n+ param[])\n+\u00a0 Reset an option.\n \u00a0\n- TDSRET\u00a0tds_invalid_get (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ RETCODE\u00a0dbcmd (DBPROCESS *dbproc, const char cmdstring[])\n+\u00a0 Append SQL to the command buffer.\n \u00a0\n- TDSRET\u00a0tds_invalid_get_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ RETCODE\u00a0dbcmdrow (DBPROCESS *dbproc)\n+\u00a0 See if the current command can return rows.\n \u00a0\n- TDSRET\u00a0tds_invalid_put (TDSSOCKET *tds, TDSCOLUMN\n- *col, int bcp7)\n+ RETCODE\u00a0dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT\n+ column, DBINT computeid, DBCOL *pdbcol)\n+\u00a0 Get a bunch of column attributes with a single call\n+ (Microsoft-compatibility feature).\n \u00a0\n- TDSRET\u00a0tds_invalid_put_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ DBINT\u00a0dbcollen (DBPROCESS *dbproc, int column)\n+\u00a0 Get size of a regular result column.\n \u00a0\n- TDS_INT\u00a0tds_invalid_row_len (TDSCOLUMN *col)\n+ char *\u00a0dbcolname (DBPROCESS *dbproc, int column)\n+\u00a0 Return name of a regular result column.\n \u00a0\n- TDSRET\u00a0tds_msdatetime_get (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ static TDSCOLUMN *\u00a0dbcolptr (DBPROCESS *dbproc, int column)\n+\u00a0 Sanity checks for column-oriented functions.\n+\n+\u00a0\n+ char *\u00a0dbcolsource (DBPROCESS *dbproc, int column)\n+\u00a0 Get base database column name for a result set column.\n+\n+\u00a0\n+ int\u00a0dbcoltype (DBPROCESS *dbproc, int column)\n+\u00a0 Get the datatype of a regular result set column.\n+\u00a0\n+ DBTYPEINFO *\u00a0dbcoltypeinfo (DBPROCESS *dbproc, int column)\n+\u00a0 Get precision and scale information for a regular\n+ result column.\n \u00a0\n- TDSRET\u00a0tds_msdatetime_get_info (TDSSOCKET *tds,\n- TDSCOLUMN *col)\n+ int\u00a0dbcolutype (DBPROCESS *dbproc, int column)\n+\u00a0 Get user-defined datatype of a regular result column.\n \u00a0\n- TDSRET\u00a0tds_msdatetime_put (TDSSOCKET *tds, TDSCOLUMN\n- *col, int bcp7)\n+ DBINT\u00a0dbconvert (DBPROCESS *dbproc, int srctype, const BYTE\n+ *src, DBINT srclen, int desttype, BYTE *dest, DBINT\n+ destlen)\n+\u00a0 cf.\n \u00a0\n- TDSRET\u00a0tds_msdatetime_put_info (TDSSOCKET *tds,\n- TDSCOLUMN *col)\n+ DBINT\u00a0dbconvert_ps (DBPROCESS *dbproc, int db_srctype, const\n+ BYTE *src, DBINT srclen, int db_desttype, BYTE *dest,\n+ DBINT destlen, DBTYPEINFO *typeinfo)\n+\u00a0 Convert one datatype to another.\n \u00a0\n- TDS_INT\u00a0tds_msdatetime_row_len (TDSCOLUMN *col)\n+ DBINT\u00a0dbcount (DBPROCESS *dbproc)\n+\u00a0 Get count of rows processed.\n \u00a0\n- TDSRET\u00a0tds_numeric_get (TDSSOCKET *tds, TDSCOLUMN\n- *curcol)\n+ int\u00a0dbcurcmd (DBPROCESS *dbproc)\n+\u00a0 Get number of the row just returned.\n \u00a0\n- TDSRET\u00a0tds_numeric_get_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ DBINT\u00a0dbcurrow (DBPROCESS *dbproc)\n+\u00a0 Get number of the row currently being read.\n \u00a0\n- TDSRET\u00a0tds_numeric_put (TDSSOCKET *tds, TDSCOLUMN\n- *col, int bcp7)\n+ BYTE *\u00a0dbdata (DBPROCESS *dbproc, int column)\n+\u00a0 Get address of data in a regular result column.\n \u00a0\n- TDSRET\u00a0tds_numeric_put_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ int\u00a0dbdatecmp (DBPROCESS *dbproc, DBDATETIME *d1,\n+ DBDATETIME *d2)\n+\u00a0 Compare DBDATETIME values, similar to strcmp(3).\n \u00a0\n- TDS_INT\u00a0tds_numeric_row_len (TDSCOLUMN *col)\n+ RETCODE\u00a0dbdatecrack (DBPROCESS *dbproc, DBDATEREC *di,\n+ DBDATETIME *datetime)\n+\u00a0 Break a DBDATETIME value into useful pieces.\n \u00a0\n- void\u00a0tds_set_column_type (TDSCONNECTION *conn,\n- TDSCOLUMN *curcol, TDS_SERVER_TYPE type)\n-\u00a0 Set type of column initializing all dependency.\n+ DBINT\u00a0dbdatlen (DBPROCESS *dbproc, int column)\n+\u00a0 Get size of current row's data in a regular result\n+ column.\n+\u00a0\n+ DBBOOL\u00a0dbdead (DBPROCESS *dbproc)\n+\u00a0 Check if dbproc is an ex-parrot.\n \n \u00a0\n- void\u00a0tds_set_param_type (TDSCONNECTION *conn,\n- TDSCOLUMN *curcol, TDS_SERVER_TYPE type)\n-\u00a0 Set type of column initializing all dependency.\n+ EHANDLEFUNC\u00a0dberrhandle (EHANDLEFUNC handler)\n+\u00a0 Set an error handler, for messages from db-lib.\n+\u00a0\n+ void\u00a0dbexit ()\n+\u00a0 Close server connections and free all related\n+ structures.\n+\u00a0\n+ RETCODE\u00a0dbfcmd (DBPROCESS *dbproc, const char *fmt,...)\n+\u00a0 printf-like way to form SQL to send to the server.\n+\u00a0\n+ DBINT\u00a0dbfirstrow (DBPROCESS *dbproc)\n+\u00a0 See if a server response has arrived.\n+\u00a0\n+ void\u00a0dbfreebuf (DBPROCESS *dbproc)\n+\u00a0 Erase the command buffer, in case DBNOAUTOFREE was set\n+ with dbsetopt().\n+\u00a0\n+ char *\u00a0dbgetchar (DBPROCESS *dbproc, int pos)\n+\u00a0 Get address of a position in the command buffer.\n+\u00a0\n+ int\u00a0dbgetmaxprocs (void)\n+\u00a0 get maximum simultaneous connections db-lib will open\n+ to the server.\n+\u00a0\n+ RETCODE\u00a0dbgetnull (DBPROCESS *dbproc, int bindtype, int\n+ varlen, BYTE *varaddr)\n+\u00a0\n+ int\u00a0dbgetpacket (DBPROCESS *dbproc)\n+\u00a0 Get TDS packet size for the connection.\n+\u00a0\n+ RETCODE\u00a0dbgetrow (DBPROCESS *dbproc, DBINT row)\n+\u00a0 Read a row from the row buffer.\n+\u00a0\n+ int\u00a0dbgettime (void)\n+\u00a0 Get maximum seconds db-lib waits for a server response\n+ to query.\n+\u00a0\n+ BYTE *\u00a0dbgetuserdata (DBPROCESS *dbproc)\n+\u00a0 Get address of user-allocated data from a DBPROCESS.\n+\u00a0\n+ DBBOOL\u00a0dbhasretstat (DBPROCESS *dbproc)\n+\u00a0 Determine if query generated a return status number.\n+\u00a0\n+ RETCODE\u00a0dbinit (void)\n+\u00a0 Initialize db-lib.\n+\u00a0\n+ int\u00a0dbiordesc (DBPROCESS *dbproc)\n+\u00a0 Get file descriptor of the socket used by a DBPROCESS\n+ to read data coming from the server. (!)\n+\u00a0\n+ int\u00a0dbiowdesc (DBPROCESS *dbproc)\n+\u00a0 Get file descriptor of the socket used by a DBPROCESS\n+ to write data coming to the server. (!)\n+\u00a0\n+ DBBOOL\u00a0dbisavail (DBPROCESS *dbproc)\n+\u00a0\n+ BOOL\u00a0dbiscount (DBPROCESS *dbproc)\n+\u00a0 Indicates whether or not the count returned by dbcount\n+ is real (Microsoft-compatibility feature).\n+\u00a0\n+ DBBOOL\u00a0dbisopt (DBPROCESS *dbproc, int option, const char\n+ param[])\n+\u00a0 Get value of an option.\n+\u00a0\n+ DBINT\u00a0dblastrow (DBPROCESS *dbproc)\n+\u00a0 Get number of the last row in the row buffer.\n+\u00a0\n+ static int\u00a0dblib_add_connection (DBLIBCONTEXT *ctx, TDSSOCKET\n+ *tds)\n+\u00a0\n+ static TDS_SERVER_TYPE\u00a0dblib_bound_type (int bindtype)\n+\u00a0\n+ static int\u00a0dblib_coltype (TDSCOLUMN *colinfo)\n+\u00a0\n+ static RETCODE\u00a0dblib_datecrack (DBPROCESS *dbproc, BOOL\n+ nano_precision, DBDATEREC *output, int type, const\n+ void *data)\n+\u00a0\n+ static void\u00a0dblib_del_connection (DBLIBCONTEXT *ctx, TDSSOCKET\n+ *tds)\n+\u00a0\n+ static TDSCONTEXT *\u00a0dblib_get_tds_ctx (void)\n+\u00a0\n+ static void\u00a0dblib_release_tds_ctx (int count)\n+\u00a0\n+ LOGINREC *\u00a0dblogin (void)\n+\u00a0 Allocate a LOGINREC structure.\n+\u00a0\n+ void\u00a0dbloginfree (LOGINREC *login)\n+\u00a0 free the LOGINREC\n+\u00a0\n+ RETCODE\u00a0dbmny4add (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4\n+ *m2, DBMONEY4 *sum)\n+\u00a0 Add two DBMONEY4 values.\n+\u00a0\n+ int\u00a0dbmny4cmp (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4\n+ *m2)\n+\u00a0 Compare two DBMONEY4 values.\n+\u00a0\n+ RETCODE\u00a0dbmny4copy (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4\n+ *dest)\n+\u00a0 Copy a DBMONEY4 value.\n+\u00a0\n+ RETCODE\u00a0dbmny4minus (DBPROCESS *dbproc, DBMONEY4 *src,\n+ DBMONEY4 *dest)\n+\u00a0 Negate a DBMONEY4 value.\n+\u00a0\n+ RETCODE\u00a0dbmny4sub (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4\n+ *m2, DBMONEY4 *diff)\n+\u00a0 Subtract two DBMONEY4 values.\n+\u00a0\n+ RETCODE\u00a0dbmny4zero (DBPROCESS *dbproc, DBMONEY4 *dest)\n+\u00a0 Zero a DBMONEY4 value.\n+\u00a0\n+ int\u00a0dbmnycmp (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)\n+\u00a0 Compare two DBMONEY values.\n+\u00a0\n+ RETCODE\u00a0dbmnycopy (DBPROCESS *dbproc, DBMONEY *src, DBMONEY\n+ *dest)\n+\u00a0 Copy a DBMONEY value.\n+\u00a0\n+ RETCODE\u00a0dbmnydec (DBPROCESS *dbproc, DBMONEY *amount)\n+\u00a0 Subtract $0.0001 from a DBMONEY value.\n+\u00a0\n+ RETCODE\u00a0dbmnyinc (DBPROCESS *dbproc, DBMONEY *amount)\n+\u00a0 Add $0.0001 to a DBMONEY value.\n+\u00a0\n+ RETCODE\u00a0dbmnymaxneg (DBPROCESS *dbproc, DBMONEY *amount)\n+\u00a0 Get maximum negative DBMONEY value supported.\n+\u00a0\n+ RETCODE\u00a0dbmnymaxpos (DBPROCESS *dbproc, DBMONEY *amount)\n+\u00a0 Get maximum positive DBMONEY value supported.\n+\u00a0\n+ RETCODE\u00a0dbmnyminus (DBPROCESS *dbproc, DBMONEY *src, DBMONEY\n+ *dest)\n+\u00a0 Negate a DBMONEY value.\n+\u00a0\n+ RETCODE\u00a0dbmnyzero (DBPROCESS *dbproc, DBMONEY *dest)\n+\u00a0 Set a DBMONEY value to zero.\n+\u00a0\n+ const char *\u00a0dbmonthname (DBPROCESS *dbproc, char *language, int\n+ monthnum, DBBOOL shortform)\n+\u00a0 Get name of a month, in some human language.\n+\u00a0\n+ RETCODE\u00a0dbmorecmds (DBPROCESS *dbproc)\n+\u00a0 See if more commands are to be processed.\n+\u00a0\n+ RETCODE\u00a0dbmoretext (DBPROCESS *dbproc, DBINT size, const BYTE\n+ text[])\n+\u00a0 Send chunk of a text/image value to the server.\n+\u00a0\n+ MHANDLEFUNC\u00a0dbmsghandle (MHANDLEFUNC handler)\n+\u00a0 Set a message handler, for messages from the server.\n+\u00a0\n+ char *\u00a0dbname (DBPROCESS *dbproc)\n+\u00a0 Get name of current database.\n+\u00a0\n+ STATUS\u00a0dbnextrow (DBPROCESS *dbproc)\n+\u00a0\n+ RETCODE\u00a0dbnullbind (DBPROCESS *dbproc, int column, DBINT\n+ *indicator)\n+\u00a0 Tie a null-indicator to a regular result column.\n+\u00a0\n+ int\u00a0dbnumalts (DBPROCESS *dbproc, int computeid)\n+\u00a0 Get count of columns in a compute row.\n+\u00a0\n+ int\u00a0dbnumcols (DBPROCESS *dbproc)\n+\u00a0 Return number of regular columns in a result set.\n+\u00a0\n+ int\u00a0dbnumcompute (DBPROCESS *dbproc)\n+\u00a0 Get count of COMPUTE clauses for a result set.\n+\u00a0\n+ int\u00a0dbnumrets (DBPROCESS *dbproc)\n+\u00a0 Get count of output parameters filled by a stored\n+ procedure.\n+\u00a0\n+ int\u00a0dbperror (DBPROCESS *dbproc, DBINT msgno, long\n+ errnum,...)\n+\u00a0 Call client-installed error handler.\n+\u00a0\n+ DBINT\u00a0dbprcollen (DBPROCESS *dbproc, int column)\n+\u00a0 Get size of a result column needed to print column.\n+\u00a0\n+ void\u00a0dbprhead (DBPROCESS *dbproc)\n+\u00a0 Print result set headings to stdout.\n+\u00a0\n+ RETCODE\u00a0dbprrow (DBPROCESS *dbproc)\n+\u00a0 Print a result set to stdout.\n+\u00a0\n+ const char *\u00a0dbprtype (int token)\n+\u00a0 Print a token value's name to a buffer.\n+\u00a0\n+ STATUS\u00a0dbreadtext (DBPROCESS *dbproc, void *buf, DBINT\n+ bufsize)\n+\u00a0 Fetch part of a text or image value from the server.\n+\u00a0\n+ void\u00a0dbrecftos (const char filename[])\n+\u00a0 Record to a file all SQL commands sent to the server.\n+\u00a0\n+ RETCODE\u00a0dbresults (DBPROCESS *dbproc)\n+\u00a0 Set up query results.\n+\u00a0\n+ BYTE *\u00a0dbretdata (DBPROCESS *dbproc, int retnum)\n+\u00a0 Get value of an output parameter filled by a stored\n+ procedure.\n+\u00a0\n+ int\u00a0dbretlen (DBPROCESS *dbproc, int retnum)\n+\u00a0 Get size of an output parameter filled by a stored\n+ procedure.\n+\u00a0\n+ char *\u00a0dbretname (DBPROCESS *dbproc, int retnum)\n+\u00a0 Get name of an output parameter filled by a stored\n+ procedure.\n+\u00a0\n+ DBINT\u00a0dbretstatus (DBPROCESS *dbproc)\n+\u00a0 Fetch status value returned by query or remote\n+ procedure call.\n+\u00a0\n+ int\u00a0dbrettype (DBPROCESS *dbproc, int retnum)\n+\u00a0 Get datatype of a stored procedure's return parameter.\n+\n+\u00a0\n+ RETCODE\u00a0dbrows (DBPROCESS *dbproc)\n+\u00a0 Indicate whether a query returned rows.\n+\u00a0\n+ STATUS\u00a0dbrowtype (DBPROCESS *dbproc)\n+\u00a0 Get returned row's type.\n+\u00a0\n+ RETCODE\u00a0dbsafestr (DBPROCESS *dbproc, const char *src, DBINT\n+ srclen, char *dest, DBINT destlen, int quotetype)\n+\u00a0 safely quotes character values in SQL text.\n+\u00a0\n+ char *\u00a0dbservcharset (DBPROCESS *dbproc)\n+\u00a0 Get syscharset name of the server character set.\n+\u00a0\n+ void\u00a0dbsetavail (DBPROCESS *dbproc)\n+\u00a0 Mark a DBPROCESS as \"available\".\n+\u00a0\n+ void\u00a0dbsetifile (char *filename)\n+\u00a0 set name and location of the interfaces file FreeTDS\n+ should use to look up a servername.\n+\u00a0\n+ void\u00a0dbsetinterrupt (DBPROCESS *dbproc, DB_DBCHKINTR_FUNC\n+ chkintr, DB_DBHNDLINTR_FUNC hndlintr)\n+\u00a0 Set interrupt handler for db-lib to use while blocked\n+ against a read from the server.\n+\u00a0\n+ RETCODE\u00a0dbsetlbool (LOGINREC *login, int value, int which)\n+\u00a0 Set a boolean value in a LOGINREC structure.\n+\n+\u00a0\n+ RETCODE\u00a0dbsetllong (LOGINREC *login, long value, int which)\n+\u00a0 Set an integer value in a LOGINREC structure.\n+\n+\u00a0\n+ RETCODE\u00a0dbsetlname (LOGINREC *login, const char *value, int\n+ which)\n+\u00a0 Set the value of a string in a LOGINREC structure.\n+\n+\u00a0\n+ RETCODE\u00a0dbsetlogintime (int seconds)\n+\u00a0 Set maximum seconds db-lib waits for a server response\n+ to a login attempt.\n+\u00a0\n+ RETCODE\u00a0dbsetlversion (LOGINREC *login, BYTE version)\n+\u00a0 Set TDS version for future connections.\n+\u00a0\n+ RETCODE\u00a0dbsetmaxprocs (int maxprocs)\n+\u00a0 Set maximum simultaneous connections db-lib will open\n+ to the server.\n+\u00a0\n+ RETCODE\u00a0dbsetnull (DBPROCESS *dbproc, int bindtype, int\n+ bindlen, BYTE *bindval)\n+\u00a0 Define substitution values to be used when binding\n+ null values.\n+\u00a0\n+ RETCODE\u00a0dbsetopt (DBPROCESS *dbproc, int option, const char\n+ *char_param, int int_param)\n+\u00a0 Set db-lib or server option.\n+\u00a0\n+ STATUS\u00a0dbsetrow (DBPROCESS *dbproc, DBINT row)\n+\u00a0 Make a buffered row \"current\" without fetching it into\n+ bound variables.\n+\u00a0\n+ RETCODE\u00a0dbsettime (int seconds)\n+\u00a0 Set maximum seconds db-lib waits for a server response\n+ to query.\n+\u00a0\n+ void\u00a0dbsetuserdata (DBPROCESS *dbproc, BYTE *ptr)\n+\u00a0 Associate client-allocated (and defined) data with a\n+ DBPROCESS.\n+\u00a0\n+ RETCODE\u00a0dbsetversion (DBINT version)\n+\u00a0 Specify a db-lib version level.\n+\u00a0\n+ int\u00a0dbspid (DBPROCESS *dbproc)\n+\u00a0 Get server process ID for a DBPROCESS.\n+\u00a0\n+ RETCODE\u00a0dbspr1row (DBPROCESS *dbproc, char *buffer, DBINT\n+ buf_len)\n+\u00a0 Print a regular result row to a buffer.\n+\u00a0\n+ DBINT\u00a0dbspr1rowlen (DBPROCESS *dbproc)\n+ Determine size buffer required to hold the results\n+\u00a0 returned by dbsprhead(), dbsprline(), and dbspr1row().\n \n \u00a0\n- static void\u00a0tds_swap_numeric (TDS_NUMERIC *num)\n-\u00a0 Converts numeric from Microsoft representation\n- to internal one (Sybase).\n+ RETCODE\u00a0dbsprhead (DBPROCESS *dbproc, char *buffer, DBINT\n+ buf_len)\n+\u00a0 Print result set headings to a buffer.\n+\u00a0\n+ RETCODE\u00a0dbsprline (DBPROCESS *dbproc, char *buffer, DBINT\n+ buf_len, DBCHAR line_char)\n+\u00a0 Get formatted string for underlining dbsprhead()\n+ column names.\n+\u00a0\n+ RETCODE\u00a0dbsqlexec (DBPROCESS *dbproc)\n+\u00a0 send the SQL command to the server and wait for an\n+ answer.\n+\u00a0\n+ RETCODE\u00a0dbsqlok (DBPROCESS *dbproc)\n+\u00a0 Wait for results of a query from the server.\n+\u00a0\n+ RETCODE\u00a0dbsqlsend (DBPROCESS *dbproc)\n+\u00a0 Transmit the command buffer to the server.\n+\u00a0\n+ RETCODE\u00a0dbstrbuild (DBPROCESS *dbproc, char *charbuf, int\n+ bufsize, char *text, char *formats,...)\n+\u00a0 Build a printable string from text containing\n+ placeholders for variables.\n+\u00a0\n+ RETCODE\u00a0dbstrcpy (DBPROCESS *dbproc, int start, int numbytes,\n+ char *dest)\n+\u00a0 Get a copy of a chunk of the command buffer.\n+\u00a0\n+ static RETCODE\u00a0dbstring_assign (DBSTRING **dbstrp, const char *p)\n+\u00a0\n+ static RETCODE\u00a0dbstring_concat (DBSTRING **dbstrp, const char *p)\n+\u00a0\n+ static void\u00a0dbstring_free (DBSTRING **dbstrp)\n+\u00a0\n+ static char *\u00a0dbstring_get (DBSTRING *dbstr)\n+\u00a0\n+ static int\u00a0dbstring_getchar (DBSTRING *dbstr, int i)\n+\u00a0\n+ static DBINT\u00a0dbstring_length (DBSTRING *dbstr)\n+\u00a0\n+ int\u00a0dbstrlen (DBPROCESS *dbproc)\n+\u00a0 Get size of the command buffer, in bytes.\n+\u00a0\n+ RETCODE\u00a0dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL\n+ *pdbcol)\n+\u00a0 describe table column attributes with a single call\n+ (Freetds-only API function modelled on dbcolinfo)\n+\u00a0\n+ int\u00a0dbtds (DBPROCESS *dbproc)\n+\u00a0 Get the TDS version in use for dbproc.\n+\n+\u00a0\n+ DBBINARY *\u00a0dbtxptr (DBPROCESS *dbproc, int column)\n+\u00a0 Get text pointer for a column in the current row.\n+\u00a0\n+ DBBINARY *\u00a0dbtxtimestamp (DBPROCESS *dbproc, int column)\n+\u00a0 Get text timestamp for a column in the current row.\n \u00a0\n- TDSRET\u00a0tds_sybbigtime_get (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ RETCODE\u00a0dbuse (DBPROCESS *dbproc, const char *name)\n+\u00a0 Change current database.\n \u00a0\n- TDSRET\u00a0tds_sybbigtime_get_info (TDSSOCKET *tds,\n- TDSCOLUMN *col)\n+ DBINT\u00a0dbvarylen (DBPROCESS *dbproc, int column)\n+\u00a0 Determine whether a column can vary in size.\n \u00a0\n- TDSRET\u00a0tds_sybbigtime_put (TDSSOCKET *tds, TDSCOLUMN\n- *col, int bcp7)\n+ const char *\u00a0dbversion ()\n+\u00a0 See which version of db-lib is in use.\n \u00a0\n- TDSRET\u00a0tds_sybbigtime_put_info (TDSSOCKET *tds,\n- TDSCOLUMN *col)\n+ DBBOOL\u00a0dbwillconvert (int srctype, int desttype)\n+\u00a0 Test whether or not a datatype can be converted to\n+ another datatype.\n \u00a0\n- TDS_INT\u00a0tds_sybbigtime_row_len (TDSCOLUMN *col)\n+ RETCODE\u00a0dbwritetext (DBPROCESS *dbproc, char *objname,\n+ DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY\n+ *timestamp, DBBOOL log, DBINT size, BYTE *text)\n+\u00a0 Send text or image data to the server.\n \u00a0\n- TDSRET\u00a0tds_variant_get (TDSSOCKET *tds, TDSCOLUMN\n- *curcol)\n+ static int\u00a0default_err_handler (DBPROCESS *dbproc, int severity,\n+ int dberr, int oserr, char *dberrstr, char *oserrstr)\n+\u00a0 default error handler for db-lib (handles library-\n+ generated errors)\n \u00a0\n- TDSRET\u00a0tds_variant_put (TDSSOCKET *tds, TDSCOLUMN\n- *col, int bcp7)\n+ static DBOPTION *\u00a0init_dboptions (void)\n \u00a0\n- TDSRET\u00a0tds_variant_put_info (TDSSOCKET *tds, TDSCOLUMN\n- *col)\n+ static const char *\u00a0prdbresults_state (int retcode)\n \u00a0\n- static int\u00a0tds_varmax_stream_read (TDSINSTREAM *stream,\n- void *ptr, size_t len)\n+ static const char *\u00a0prdbretcode (RETCODE retcode)\n+\u00a0\n+ static const char *\u00a0prresult_type (int result_type)\n+\u00a0\n+ static const char *\u00a0prretcode (int retcode)\n+\u00a0\n+ static const char *\u00a0tds_prdatatype (int datatype_token)\n+\u00a0 Returns type in string.\n+\u00a0\n+ DBPROCESS *\u00a0tdsdbopen (LOGINREC *login, const char *server, int\n+ msdblib)\n+\u00a0 Form a connection with the server.\n+\u00a0\n+ Variables\n+ EHANDLEFUNC\u00a0_dblib_err_handler = default_err_handler\n+\u00a0\n+ MHANDLEFUNC\u00a0_dblib_msg_handler = NULL\n+\u00a0\n+ static const DBLIB_ERROR_MESSAGE\u00a0dblib_error_messages []\n+\u00a0\n+ static tds_mutex\u00a0dblib_mutex = TDS_MUTEX_INITIALIZER\n+\u00a0\n+ static NULLREP\u00a0default_null_representations [MAXBINDTYPES]\n+\u00a0\n+ static DBLIBCONTEXT\u00a0g_dblib_ctx\n+\u00a0\n+ static int\u00a0g_dblib_version\n+\u00a0\n+ static const DBBIGINT\u00a0null_BIGINT = 0\n+\u00a0\n+ static const DBBIT\u00a0null_BIT = 0\n+\u00a0\n+ static const DBCHAR\u00a0null_CHAR = '\\0'\n+\u00a0\n+ static const DBDATETIME\u00a0null_DATETIME = { 0, 0 }\n+\u00a0\n+ static const TDS_DATETIMEALL\u00a0null_DATETIMEALL = { 0, 0, 0, 0 }\n+\u00a0\n+ static const DBFLT8\u00a0null_FLT8 = 0\n+\u00a0\n+ static const DBINT\u00a0null_INT = 0\n+\u00a0\n+ static const DBMONEY\u00a0null_MONEY = { 0, 0 }\n+\u00a0\n+ static const DBNUMERIC\u00a0null_NUMERIC = { 0, 0, {0} }\n+\u00a0\n+ static const DBREAL\u00a0null_REAL = 0\n+\u00a0\n+ static const DBDATETIME4\u00a0null_SMALLDATETIME = { 0, 0 }\n+\u00a0\n+ static const DBSMALLINT\u00a0null_SMALLINT = 0\n+\u00a0\n+ static const DBMONEY4\u00a0null_SMALLMONEY = {0}\n+\u00a0\n+ static const DBTINYINT\u00a0null_TINYINT = 0\n+\u00a0\n+ static const DBVARYCHAR\u00a0null_VARYCHAR = { 0, {0} }\n+\u00a0\n+ static const char *const\u00a0opttext [DBNUMOPTIONS]\n \u00a0\n ***** Detailed Description *****\n-Handle different data handling from network.\n+Main implementation file for db-lib.\n+***** Typedef Documentation *****\n+***** \u25c6\u00a0DBLIBCONTEXT *****\n+typedef struct dblib_context DBLIBCONTEXT\n+\\dblib_internal\n+ Remarks\n+ A db-lib connection has an implicit TDS context.\n ***** Function Documentation *****\n-***** \u25c6\u00a0tds_generic_get() *****\n-TDSRET tds_generic_get ( TDSSOCKET *\u00a0tds,\n- TDSCOLUMN *\u00a0curcol\u00a0\n- )\n-Read a data from wire.\n- Parameters\n- tds state information for the socket and the TDS protocol\n- curcol column where store column information\n- Returns\n- TDS_FAIL on error or TDS_SUCCESS\n-Here is the call graph for this function:\n-***** \u25c6\u00a0tds_generic_put() *****\n-TDSRET tds_generic_put ( TDSSOCKET *\u00a0tds,\n- TDSCOLUMN *\u00a0curcol,\n- int\u00a0 bcp7\u00a0\n- )\n-Write data to wire.\n+***** \u25c6\u00a0dbcolinfo() *****\n+RETCODE dbcolinfo ( DBPROCESS *\u00a0dbproc,\n+ CI_TYPE\u00a0 type,\n+ DBINT\u00a0 column,\n+ DBINT\u00a0 computeid,\n+ DBCOL *\u00a0 pdbcol\u00a0\n+ )\n+Get a bunch of column attributes with a single call (Microsoft-compatibility\n+feature).\n+\n Parameters\n- tds state information for the socket and the TDS protocol\n- curcol column where store column information\n+ dbproc contains all information needed by db-lib to manage\n+ communications with the server.\n+ type must be CI_REGULAR or CI_ALTERNATE (CI_CURSOR is defined by the\n+ vendor, but is not yet implemented).\n+ column Nth in the result set, starting from 1.\n+ computeid (ignored)\n+ pdbcol address of structure to be populated by this function.\n Returns\n- TDS_FAIL on error or TDS_SUCCESS\n+ SUCCEED or FAIL.\n+ See also\n+ dbcolbrowse(), dbqual(), dbtabbrowse(), dbtabcount(), dbtabname(),\n+ dbtabsource(), dbtsnewlen(), dbtsnewval(), dbtsput().\n+ Todo:\n+ Support cursor rows.\n Here is the call graph for this function:\n-***** \u25c6\u00a0tds_generic_put_info() *****\n-TDSRET tds_generic_put_info ( TDSSOCKET *\u00a0tds,\n- TDSCOLUMN *\u00a0col\u00a0\n- )\n-Put data information to wire.\n- Parameters\n- tds state information for the socket and the TDS protocol\n- col column where to store information\n- Returns\n- TDS_SUCCESS or TDS_FAIL\n+***** \u25c6\u00a0dbgetnull() *****\n+RETCODE dbgetnull ( DBPROCESS *\u00a0dbproc,\n+ int\u00a0 bindtype,\n+ int\u00a0 varlen,\n+ BYTE *\u00a0 varaddr\u00a0\n+ )\n+dbbind() says: \"Note that if varlen is 0, no padding takes place\" dbgetnull()\n+will not pad varaddr unless varlen is positive.\n+Vartype Program Type Padding Terminator\n+===============================================================================\n+CHARBIND DBCHAR blanks none STRINGBIND DBCHAR blanks \\0 NTBSTRINGBIND DBCHAR\n+none \\0 VARYCHARBIND DBVARYCHAR none none BOUNDARYBIND DBCHAR none \\0\n+SENSITIVITYBIND DBCHAR none \\0\n Here is the call graph for this function:\n-***** \u25c6\u00a0tds_set_column_type() *****\n-void tds_set_column_type ( TDSCONNECTION *\u00a0conn,\n- TDSCOLUMN *\u00a0 curcol,\n- TDS_SERVER_TYPE\u00a0type\u00a0\n- )\n-Set type of column initializing all dependency.\n-column_usertype should already be set.\n- Parameters\n- curcol column to set\n- type type to set\n Here is the caller graph for this function:\n-***** \u25c6\u00a0tds_set_param_type() *****\n-void tds_set_param_type ( TDSCONNECTION *\u00a0conn,\n- TDSCOLUMN *\u00a0 curcol,\n- TDS_SERVER_TYPE\u00a0type\u00a0\n- )\n-Set type of column initializing all dependency.\n- Parameters\n- tds state information for the socket and the TDS protocol\n- curcol column to set\n- type type to set\n-Here is the call graph for this function:\n-***** \u25c6\u00a0tds_swap_numeric() *****\n-static void ( TDS_NUMERIC *\u00a0num ) static\n-tds_swap_numeric\n-Converts numeric from Microsoft representation to internal one (Sybase).\n- Parameters\n- num numeric data to convert\n+***** \u25c6\u00a0tds_prdatatype() *****\n+static const char * ( int\u00a0datatype_token ) static\n+tds_prdatatype\n+Returns type in string.\n+Used for debugging purpose\n Here is the caller graph for this function:\n+***** Variable Documentation *****\n+***** \u25c6\u00a0g_dblib_version *****\n+int g_dblib_version static\n+Initial value:\n+=\n+DBVERSION_UNKNOWN\n+DBVERSION_UNKNOWN\n+#define DBVERSION_UNKNOWN\n+DBVERSION_xxx are used with dbsetversion()\n+Definition sybdb.h:70\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00081.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00081.dot.gz", "unified_diff": null, "details": [{"source1": "a00081.dot", "source2": "a00081.dot", "unified_diff": "@@ -1,91 +1,89 @@\n-digraph \"src/tds/data.c\"\n+digraph \"src/dblib/dblib.c\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- Node1 [id=\"Node000001\",label=\"src/tds/data.c\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Handle different data handling from network.\"];\n+ Node1 [id=\"Node000001\",label=\"src/dblib/dblib.c\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Main implementation file for db-lib.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00485_source.html\",tooltip=\" \"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"stdarg.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"stdio.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n- Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node4 [id=\"Node000004\",label=\"freetds/time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00389_source.html\",tooltip=\" \"];\n+ Node4 -> Node4 [id=\"edge4_Node000004_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node5 [id=\"edge5_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"assert.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n- Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"freetds/utils.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00356_source.html\",tooltip=\" \"];\n- Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"freetds/time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n- Node7 -> Node7 [id=\"edge7_Node000007_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 -> Node8 [id=\"edge8_Node000006_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00455_source.html\",tooltip=\" \"];\n- Node6 -> Node9 [id=\"edge9_Node000006_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n- Node6 -> Node10 [id=\"edge10_Node000006_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00458_source.html\",tooltip=\" \"];\n- Node1 -> Node11 [id=\"edge11_Node000001_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368.html\",tooltip=\"Main include file for libtds.\"];\n- Node11 -> Node3 [id=\"edge12_Node000011_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node4 [id=\"edge13_Node000011_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node7 [id=\"edge14_Node000011_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node12 [id=\"edge15_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00461_source.html\",tooltip=\" \"];\n- Node11 -> Node8 [id=\"edge16_Node000011_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node13 [id=\"edge17_Node000011_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n- Node13 -> Node14 [id=\"edge18_Node000013_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00476_source.html\",tooltip=\" \"];\n- Node11 -> Node16 [id=\"edge19_Node000011_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395_source.html\",tooltip=\" \"];\n- Node11 -> Node17 [id=\"edge20_Node000011_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00452_source.html\",tooltip=\" \"];\n- Node17 -> Node14 [id=\"edge21_Node000017_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node18 [id=\"edge22_Node000011_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00410_source.html\",tooltip=\" \"];\n- Node18 -> Node17 [id=\"edge23_Node000018_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 -> Node9 [id=\"edge24_Node000018_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 -> Node10 [id=\"edge25_Node000018_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node19 [id=\"edge26_Node000011_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n- Node19 -> Node3 [id=\"edge27_Node000019_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node14 [id=\"edge28_Node000019_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node8 [id=\"edge29_Node000019_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node20 [id=\"edge30_Node000019_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00377_source.html\",tooltip=\" \"];\n- Node20 -> Node9 [id=\"edge31_Node000020_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 -> Node10 [id=\"edge32_Node000020_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node21 [id=\"edge33_Node000019_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00374.html\",tooltip=\"Provide poll call where missing.\"];\n- Node21 -> Node2 [id=\"edge34_Node000021_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 -> Node9 [id=\"edge35_Node000021_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 -> Node10 [id=\"edge36_Node000021_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node9 [id=\"edge37_Node000019_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 -> Node10 [id=\"edge38_Node000019_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node9 [id=\"edge39_Node000011_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 -> Node22 [id=\"edge40_Node000011_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node22 [id=\"Node000022\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00440_source.html\",tooltip=\" \"];\n- Node11 -> Node10 [id=\"edge41_Node000011_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node23 [id=\"edge42_Node000001_Node000023\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"freetds/bytes.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n- Node1 -> Node24 [id=\"edge43_Node000001_Node000024\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node24 [id=\"Node000024\",label=\"freetds/iconv.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00398_source.html\",tooltip=\" \"];\n- Node24 -> Node9 [id=\"edge44_Node000024_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node24 -> Node10 [id=\"edge45_Node000024_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node25 [id=\"edge46_Node000001_Node000025\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node25 [id=\"Node000025\",label=\"freetds/checks.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00437_source.html\",tooltip=\" \"];\n- Node25 -> Node9 [id=\"edge47_Node000025_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node25 -> Node10 [id=\"edge48_Node000025_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node26 [id=\"edge49_Node000001_Node000026\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node26 [id=\"Node000026\",label=\"freetds/stream.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00383_source.html\",tooltip=\" \"];\n- Node26 -> Node9 [id=\"edge50_Node000026_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node26 -> Node10 [id=\"edge51_Node000026_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node6 [id=\"Node000006\",label=\"stdio.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n+ Node1 -> Node7 [id=\"edge7_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 [id=\"Node000007\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00425.html\",tooltip=\"Main include file for libtds.\"];\n+ Node7 -> Node3 [id=\"edge8_Node000007_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node6 [id=\"edge9_Node000007_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node4 [id=\"edge10_Node000007_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node8 [id=\"edge11_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node8 [id=\"Node000008\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n+ Node7 -> Node9 [id=\"edge12_Node000007_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node9 [id=\"Node000009\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368_source.html\",tooltip=\" \"];\n+ Node7 -> Node10 [id=\"edge13_Node000007_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node10 [id=\"Node000010\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00437_source.html\",tooltip=\" \"];\n+ Node10 -> Node11 [id=\"edge14_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node11 [id=\"Node000011\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00350_source.html\",tooltip=\" \"];\n+ Node7 -> Node13 [id=\"edge15_Node000007_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node13 [id=\"Node000013\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00371_source.html\",tooltip=\" \"];\n+ Node7 -> Node14 [id=\"edge16_Node000007_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node14 [id=\"Node000014\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n+ Node14 -> Node11 [id=\"edge17_Node000014_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node15 [id=\"edge18_Node000007_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node15 [id=\"Node000015\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n+ Node15 -> Node14 [id=\"edge19_Node000015_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node15 -> Node16 [id=\"edge20_Node000015_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node16 [id=\"Node000016\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n+ Node15 -> Node17 [id=\"edge21_Node000015_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node17 [id=\"Node000017\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00359_source.html\",tooltip=\" \"];\n+ Node7 -> Node18 [id=\"edge22_Node000007_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 [id=\"Node000018\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n+ Node18 -> Node3 [id=\"edge23_Node000018_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node11 [id=\"edge24_Node000018_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node9 [id=\"edge25_Node000018_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node19 [id=\"edge26_Node000018_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node19 [id=\"Node000019\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00392_source.html\",tooltip=\" \"];\n+ Node19 -> Node16 [id=\"edge27_Node000019_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node19 -> Node17 [id=\"edge28_Node000019_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node20 [id=\"edge29_Node000018_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395.html\",tooltip=\"Provide poll call where missing.\"];\n+ Node20 -> Node2 [id=\"edge30_Node000020_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node20 -> Node16 [id=\"edge31_Node000020_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node20 -> Node17 [id=\"edge32_Node000020_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node16 [id=\"edge33_Node000018_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node18 -> Node17 [id=\"edge34_Node000018_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node16 [id=\"edge35_Node000007_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node7 -> Node21 [id=\"edge36_Node000007_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node21 [id=\"Node000021\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00419_source.html\",tooltip=\" \"];\n+ Node7 -> Node17 [id=\"edge37_Node000007_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node10 [id=\"edge38_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node22 [id=\"edge39_Node000001_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node22 [id=\"Node000022\",label=\"freetds/convert.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00401_source.html\",tooltip=\" \"];\n+ Node22 -> Node16 [id=\"edge40_Node000022_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node22 -> Node17 [id=\"edge41_Node000022_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node15 [id=\"edge42_Node000001_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node23 [id=\"edge43_Node000001_Node000023\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node23 [id=\"Node000023\",label=\"freetds/data.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00410_source.html\",tooltip=\" \"];\n+ Node23 -> Node16 [id=\"edge44_Node000023_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node23 -> Node17 [id=\"edge45_Node000023_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node18 [id=\"edge46_Node000001_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node24 [id=\"edge47_Node000001_Node000024\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node24 [id=\"Node000024\",label=\"sybfront.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n+ Node24 -> Node25 [id=\"edge48_Node000024_Node000025\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node25 [id=\"Node000025\",label=\"sybdb.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00491.html\",tooltip=\"Primary include file for db-lib applications.\"];\n+ Node25 -> Node11 [id=\"edge49_Node000025_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node25 [id=\"edge50_Node000001_Node000025\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node26 [id=\"edge51_Node000001_Node000026\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node26 [id=\"Node000026\",label=\"syberror.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00353_source.html\",tooltip=\" \"];\n Node1 -> Node27 [id=\"edge52_Node000001_Node000027\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"freetds/data.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00389_source.html\",tooltip=\" \"];\n- Node27 -> Node9 [id=\"edge53_Node000027_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 -> Node10 [id=\"edge54_Node000027_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node9 [id=\"edge55_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node10 [id=\"edge56_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node1 -> Node28 [id=\"edge57_Node000001_Node000028\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node28 [id=\"Node000028\",label=\"tds_types.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00074_source.html\",tooltip=\" \"];\n+ Node27 [id=\"Node000027\",label=\"dblib.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00497_source.html\",tooltip=\" \"];\n+ Node27 -> Node16 [id=\"edge53_Node000027_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node27 -> Node17 [id=\"edge54_Node000027_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node1 -> Node28 [id=\"edge55_Node000001_Node000028\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node28 [id=\"Node000028\",label=\"buffering.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00086_source.html\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00182_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00182_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/dblib/buffering.h Source File\n+FreeTDS API: src/tds/num_limits.h Source File\n \n \n \n \n \n \n \n@@ -70,517 +70,398 @@\n \n \n \n \n \n
    \n \n+
  • src
  • tds
  • \n
    \n \n
    \n-
    buffering.h
    \n+
    num_limits.h
    \n
    \n
    \n-
    \n-
    1typedef struct dblib_buffer_row {
    \n-\n-
    5 unsigned char *row_data;
    \n-
    7 DBINT row;
    \n-
    9 TDS_INT *sizes;
    \n-\n-
    \n-
    11
    \n-
    12static void buffer_struct_print(const DBPROC_ROWBUF *buf);
    \n-
    13static RETCODE buffer_save_row(DBPROCESS *dbproc);
    \n-
    14static DBLIB_BUFFER_ROW* buffer_row_address(const DBPROC_ROWBUF * buf, int idx);
    \n-
    15
    \n-
    16#if ENABLE_EXTRA_CHECKS
    \n-
    17static void buffer_check_row_empty(DBLIB_BUFFER_ROW *row)
    \n-
    18{
    \n-
    19 assert(row->resinfo == NULL);
    \n-
    20 assert(row->row_data == NULL);
    \n-
    21 assert(row->sizes == NULL);
    \n-
    22 assert(row->row == 0);
    \n-
    23}
    \n-
    24
    \n-
    25static void buffer_check(const DBPROC_ROWBUF *buf)
    \n-
    26{
    \n-
    27 int i;
    \n-
    28
    \n-
    29 /* no buffering */
    \n-
    30 if (buf->capacity == 0 || buf->capacity == 1) {
    \n-
    31 assert(buf->head == 0);
    \n-
    32 assert(buf->tail == 0 || buf->tail == 1);
    \n-
    33 assert(buf->capacity == 1 || buf->rows == NULL);
    \n-
    34 return;
    \n-
    35 }
    \n-
    36
    \n-
    37 assert(buf->capacity > 0);
    \n-
    38 assert(buf->head >= 0);
    \n-
    39 assert(buf->tail >= 0);
    \n-
    40 assert(buf->head < buf->capacity);
    \n-
    41 assert(buf->tail <= buf->capacity);
    \n-
    42
    \n-
    43 /* check empty */
    \n-
    44 if (buf->tail == buf->capacity) {
    \n-
    45 assert(buf->head == 0);
    \n-
    46 for (i = 0; buf->rows && i < buf->capacity; ++i)
    \n-
    47 buffer_check_row_empty(&buf->rows[i]);
    \n-
    48 return;
    \n-
    49 }
    \n-
    50
    \n-
    51 if (buf->rows == NULL)
    \n-
    52 return;
    \n-
    53
    \n-
    54 /* check filled part */
    \n-
    55 i = buf->tail;
    \n-
    56 do {
    \n-
    57 assert(i >= 0 && i < buf->capacity);
    \n-
    58 assert(buf->rows[i].resinfo != NULL);
    \n-
    59 assert(buf->rows[i].row > 0);
    \n-
    60 assert(buf->rows[i].row <= buf->received);
    \n-
    61 ++i;
    \n-
    62 if (i == buf->capacity)
    \n-
    63 i = 0;
    \n-
    64 } while (i != buf->head);
    \n-
    65
    \n-
    66 /* check empty part */
    \n-
    67 if (buf->head != buf->tail) {
    \n-
    68 i = buf->head;
    \n-
    69 do {
    \n-
    70 assert(i >= 0 && i < buf->capacity);
    \n-
    71 buffer_check_row_empty(&buf->rows[i]);
    \n-
    72 ++i;
    \n-
    73 if (i == buf->capacity)
    \n-
    74 i = 0;
    \n-
    75 } while (i != buf->tail);
    \n-
    76 }
    \n-
    77}
    \n-
    78#define BUFFER_CHECK(buf) buffer_check(buf)
    \n-
    79#else
    \n-
    80#define BUFFER_CHECK(buf) do {} while(0)
    \n-
    81#endif
    \n-
    111static int
    \n-
    112buffer_count(const DBPROC_ROWBUF *buf)
    \n-
    113{
    \n-
    114 BUFFER_CHECK(buf);
    \n-
    115 return (buf->head > buf->tail) ?
    \n-
    116 buf->head - buf->tail : /* |...TddddH....| */
    \n-
    117 buf->capacity - (buf->tail - buf->head); /* |ddddH....Tddd| */
    \n-
    118}
    \n-
    119
    \n-
    123static int
    \n-
    124buffer_is_full(const DBPROC_ROWBUF *buf)
    \n-
    125{
    \n-
    126 BUFFER_CHECK(buf);
    \n-
    127 return buf->capacity == buffer_count(buf) && buf->capacity > 1;
    \n-
    128}
    \n-
    129
    \n-
    130#ifndef NDEBUG
    \n-
    131static int
    \n-
    132buffer_index_valid(const DBPROC_ROWBUF *buf, int idx)
    \n-
    133{
    \n-
    134 BUFFER_CHECK(buf);
    \n-
    135 if (buf->tail <= buf->head)
    \n-
    136 if (buf->head <= idx && idx <= buf->tail)
    \n-
    137 return 1;
    \n-
    138
    \n-
    139 if (0 <= idx && idx <= buf->head)
    \n-
    140 return 1;
    \n-
    141
    \n-
    142 if (buf->tail <= idx && idx < buf->capacity)
    \n-
    143 return 1;
    \n-
    144#if 0
    \n-
    145 printf("buffer_index_valid: idx = %d\\n", idx);
    \n-
    146 buffer_struct_print(buf);
    \n-
    147#endif
    \n-
    148 return 0;
    \n-
    149}
    \n-
    150#endif
    \n-
    151
    \n-
    152static void
    \n-
    153buffer_free_row(DBLIB_BUFFER_ROW *row)
    \n-
    154{
    \n-
    155 if (row->sizes)
    \n-
    156 TDS_ZERO_FREE(row->sizes);
    \n-
    157 if (row->row_data) {
    \n-
    158 tds_free_row(row->resinfo, row->row_data);
    \n-
    159 row->row_data = NULL;
    \n-
    160 }
    \n-
    161 tds_free_results(row->resinfo);
    \n-
    162 row->resinfo = NULL;
    \n-
    163 row->row = 0;
    \n-
    164}
    \n-
    165
    \n-
    166/*
    \n-
    167 * Buffer is freed at slightly odd points, whenever
    \n-
    168 * capacity changes:
    \n-
    169 *
    \n-
    170 * 1. When setting capacity, to release prior buffer.
    \n-
    171 * 2. By dbresults. When called the second time, it has to
    \n-
    172 * release prior storage because the new resultset will have
    \n-
    173 * a different width.
    \n-
    174 * 3. By dbclose(), else open/close/open would leak.
    \n-
    175 */
    \n-
    176static void
    \n-
    177buffer_free(DBPROC_ROWBUF *buf)
    \n-
    178{
    \n-
    179 BUFFER_CHECK(buf);
    \n-
    180 if (buf->rows != NULL) {
    \n-
    181 int i;
    \n-
    182 for (i = 0; i < buf->capacity; ++i)
    \n-
    183 buffer_free_row(&buf->rows[i]);
    \n-
    184 TDS_ZERO_FREE(buf->rows);
    \n-
    185 }
    \n-
    186 BUFFER_CHECK(buf);
    \n-
    187}
    \n-
    188
    \n-
    189/*
    \n-
    190 * When no rows are currently buffered (and the buffer is allocated)
    \n-
    191 * set the indices to their initial positions.
    \n-
    192 */
    \n-
    193static void
    \n-
    194buffer_reset(DBPROC_ROWBUF *buf)
    \n-
    195{
    \n-
    196 buf->head = 0;
    \n-
    197 buf->current = buf->tail = buf->capacity;
    \n-
    198 BUFFER_CHECK(buf);
    \n-
    199}
    \n-
    200
    \n-
    201static int
    \n-
    202buffer_idx_increment(const DBPROC_ROWBUF *buf, int idx)
    \n-
    203{
    \n-
    204 if (++idx >= buf->capacity) {
    \n-
    205 idx = 0;
    \n-
    206 }
    \n-
    207 return idx;
    \n-
    208}
    \n-
    209
    \n-
    214static DBLIB_BUFFER_ROW*
    \n-
    215buffer_row_address(const DBPROC_ROWBUF * buf, int idx)
    \n-
    216{
    \n-
    217 BUFFER_CHECK(buf);
    \n-
    218 if (idx < 0 || idx >= buf->capacity) {
    \n-
    219 printf("idx is %d:\\n", idx);
    \n-
    220 buffer_struct_print(buf);
    \n-
    221 return NULL;
    \n-
    222 }
    \n-
    223
    \n-
    224 return &(buf->rows[idx]);
    \n-
    225}
    \n-
    226
    \n-
    230static DBINT
    \n-
    231buffer_idx2row(const DBPROC_ROWBUF *buf, int idx)
    \n-
    232{
    \n-
    233 BUFFER_CHECK(buf);
    \n-
    234 return buffer_row_address(buf, idx)->row;
    \n-
    235}
    \n-
    236
    \n-
    240static int
    \n-
    241buffer_row2idx(const DBPROC_ROWBUF *buf, int row_number)
    \n-
    242{
    \n-
    243 int i = buf->tail;
    \n-
    244#ifndef NDEBUG
    \n-
    245 int ii = 0;
    \n-
    246#endif
    \n-
    247
    \n-
    248 BUFFER_CHECK(buf);
    \n-
    249 if (i == buf->capacity) {
    \n-
    250 assert (buf->head == 0);
    \n-
    251 return -1; /* no rows buffered */
    \n-
    252 }
    \n-
    253
    \n-
    254 /*
    \n-
    255 * March through the buffers from tail to head, stop if we find our row.
    \n-
    256 * A full queue is indicated by tail == head (which means we can't write).
    \n-
    257 */
    \n-
    258 do {
    \n-
    259 if (buffer_idx2row(buf, i) == row_number)
    \n-
    260 return i;
    \n-
    261
    \n-
    262 assert(ii++ < buf->capacity); /* prevent infinite loop */
    \n-
    263
    \n-
    264 i = buffer_idx_increment(buf, i);
    \n-
    265 } while (i != buf->head);
    \n-
    266
    \n-
    267 return -1;
    \n-
    268}
    \n-
    269
    \n-
    274static void
    \n-
    275buffer_delete_rows(DBPROC_ROWBUF * buf, int count)
    \n-
    276{
    \n-
    277 int i;
    \n-
    278
    \n-
    279 BUFFER_CHECK(buf);
    \n-
    280 if (count < 0 || count > buffer_count(buf)) {
    \n-
    281 count = buffer_count(buf);
    \n-
    282 }
    \n-
    283
    \n-
    284 for (i=0; i < count; i++) {
    \n-
    285 if (buf->tail < buf->capacity)
    \n-
    286 buffer_free_row(&buf->rows[buf->tail]);
    \n-
    287 buf->tail = buffer_idx_increment(buf, buf->tail);
    \n-
    288 /*
    \n-
    289 * If deleting rows from the buffer catches the tail to the head,
    \n-
    290 * return to the initial position. Otherwise, it will look full.
    \n-
    291 */
    \n-
    292 if (buf->tail == buf->head) {
    \n-
    293 buffer_reset(buf);
    \n-
    294 break;
    \n-
    295 }
    \n-
    296 }
    \n-
    297#if 0
    \n-
    298 buffer_struct_print(buf);
    \n-
    299#endif
    \n-
    300 BUFFER_CHECK(buf);
    \n-
    301}
    \n-
    302
    \n-
    306static void
    \n-
    307buffer_transfer_bound_data(DBPROC_ROWBUF *buf, TDS_INT res_type, TDS_INT compute_id, DBPROCESS * dbproc, int idx)
    \n-
    308{
    \n-
    309 int i;
    \n-
    310 BYTE *src;
    \n-
    311 const DBLIB_BUFFER_ROW *row;
    \n-
    312
    \n-
    313 tdsdump_log(TDS_DBG_FUNC, "buffer_transfer_bound_data(%p %d %d %p %d)\\n", buf, res_type, compute_id, dbproc, idx);
    \n-
    314 BUFFER_CHECK(buf);
    \n-
    315 assert(buffer_index_valid(buf, idx));
    \n-
    316
    \n-
    317 row = buffer_row_address(buf, idx);
    \n-
    318 assert(row->resinfo);
    \n-
    319
    \n-
    320 for (i = 0; i < row->resinfo->num_cols; i++) {
    \n-
    321 TDS_SERVER_TYPE srctype;
    \n-
    322 DBINT srclen;
    \n-
    323 TDSCOLUMN *curcol = row->resinfo->columns[i];
    \n-
    324
    \n-
    325 if (row->sizes)
    \n-
    326 curcol->column_cur_size = row->sizes[i];
    \n-
    327
    \n-
    328 srclen = curcol->column_cur_size;
    \n-
    329
    \n-
    330 if (curcol->column_nullbind) {
    \n-
    331 if (srclen < 0) {
    \n-
    332 *(DBINT *)(curcol->column_nullbind) = -1;
    \n-
    333 } else {
    \n-
    334 *(DBINT *)(curcol->column_nullbind) = 0;
    \n-
    335 }
    \n-
    336 }
    \n-
    337 if (!curcol->column_varaddr)
    \n-
    338 continue;
    \n-
    339
    \n-
    340 if (srclen <= 0) {
    \n-
    341 if (srclen == 0 || !curcol->column_nullbind)
    \n-
    342 dbgetnull(dbproc, curcol->column_bindtype, curcol->column_bindlen,
    \n-
    343 (BYTE *) curcol->column_varaddr);
    \n-
    344 continue;
    \n-
    345 }
    \n-
    346
    \n-
    347 srctype = tds_get_conversion_type(curcol->column_type, curcol->column_size);
    \n-
    348
    \n-
    349 if (row->row_data)
    \n-
    350 src = &row->row_data[curcol->column_data - row->resinfo->current_row];
    \n-
    351 else
    \n-
    352 src = curcol->column_data;
    \n-
    353 if (is_blob_col(curcol))
    \n-
    354 src = (BYTE *) ((TDSBLOB *) src)->textvalue;
    \n-
    355
    \n-
    356 copy_data_to_host_var(dbproc, srctype, src, srclen,
    \n-
    357 (BYTE *) curcol->column_varaddr, curcol->column_bindlen,
    \n-
    358 curcol->column_bindtype, (DBINT*) curcol->column_nullbind);
    \n-
    359 }
    \n-
    360
    \n-
    361 /*
    \n-
    362 * This function always bumps current. Usually, it's called
    \n-
    363 * by dbnextrow(), so bumping current is a pretty obvious choice.
    \n-
    364 * It can also be called by dbgetrow(), but that function also
    \n-
    365 * causes the bump. If you call dbgetrow() for row N, a subsequent
    \n-
    366 * call to dbnextrow() yields N+1.
    \n-
    367 */
    \n-
    368 buf->current = buffer_idx_increment(buf, buf->current);
    \n-
    369
    \n-
    370} /* end buffer_transfer_bound_data() */
    \n-
    371
    \n-
    372static void
    \n-
    373buffer_struct_print(const DBPROC_ROWBUF *buf)
    \n-
    374{
    \n-
    375 assert(buf);
    \n-
    376
    \n-
    377 printf("\\t%d rows in buffer\\n", buffer_count(buf));
    \n-
    378
    \n-
    379 printf("\\thead = %d\\t", buf->head);
    \n-
    380 printf("\\ttail = %d\\t", buf->tail);
    \n-
    381 printf("\\tcurrent = %d\\n", buf->current);
    \n-
    382 printf("\\tcapacity = %d\\t", buf->capacity);
    \n-
    383 printf("\\thead row number = %d\\n", buf->received);
    \n-
    384}
    \n-
    385
    \n-
    386/* * * Functions called only by public db-lib API take DBPROCESS* * */
    \n-
    387
    \n-
    404static int
    \n-
    405buffer_current_index(const DBPROCESS *dbproc)
    \n-
    406{
    \n-
    407 const DBPROC_ROWBUF *buf = &dbproc->row_buf;
    \n-
    408#if 0
    \n-
    409 buffer_struct_print(buf);
    \n-
    410#endif
    \n-
    411 if (buf->capacity <= 1) /* no buffering */
    \n-
    412 return -1;
    \n-
    413 if (buf->current == buf->head || buf->current == buf->capacity)
    \n-
    414 return -1;
    \n-
    415
    \n-
    416 assert(buf->current >= 0);
    \n-
    417 assert(buf->current < buf->capacity);
    \n-
    418
    \n-
    419 if( buf->tail < buf->head) {
    \n-
    420 assert(buf->tail < buf->current);
    \n-
    421 assert(buf->current < buf->head);
    \n-
    422 } else {
    \n-
    423 if (buf->current > buf->head)
    \n-
    424 assert(buf->current > buf->tail);
    \n-
    425 }
    \n-
    426 return buf->current;
    \n-
    427}
    \n-
    428
    \n-
    429/*
    \n-
    430 * Normally called by dbsetopt() to prepare for buffering
    \n-
    431 * Called with nrows == 0 by dbopen to safely set buf->rows to NULL.
    \n-
    432 */
    \n-
    433static void
    \n-
    434buffer_set_capacity(DBPROCESS *dbproc, int nrows)
    \n-
    435{
    \n-
    436 DBPROC_ROWBUF *buf = &dbproc->row_buf;
    \n-
    437
    \n-
    438 buffer_free(buf);
    \n-
    439
    \n-
    440 memset(buf, 0, sizeof(DBPROC_ROWBUF));
    \n-
    441
    \n-
    442 if (0 == nrows) {
    \n-
    443 buf->capacity = 1;
    \n-
    444 BUFFER_CHECK(buf);
    \n-
    445 return;
    \n-
    446 }
    \n-
    447
    \n-
    448 assert(0 < nrows);
    \n-
    449
    \n-
    450 buf->capacity = nrows;
    \n-
    451 BUFFER_CHECK(buf);
    \n-
    452}
    \n-
    453
    \n-
    454/*
    \n-
    455 * Called only by dbresults(); capacity must be >= 1.
    \n-
    456 * Sybase's documents say dbresults() cannot return FAIL if the prior calls worked,
    \n-
    457 * which is a little strange, because (for FreeTDS, at least), dbresults
    \n-
    458 * is when we learn about the result set's width. Without that information, we
    \n-
    459 * can't allocate memory for the buffer. But if we *fail* to allocate memory,
    \n-
    460 * we're not to communicate it back to the caller?
    \n-
    461 */
    \n-
    462static void
    \n-
    463buffer_alloc(DBPROCESS *dbproc)
    \n-
    464{
    \n-
    465 DBPROC_ROWBUF *buf = &dbproc->row_buf;
    \n-
    466
    \n-
    467 /* Call this function only after setting capacity. */
    \n-
    468
    \n-
    469 assert(buf);
    \n-
    470 assert(buf->capacity > 0);
    \n-
    471 assert(buf->rows == NULL);
    \n-
    472
    \n-
    473 buf->rows = tds_new0(DBLIB_BUFFER_ROW, buf->capacity);
    \n-
    474
    \n-
    475 assert(buf->rows);
    \n-
    476
    \n-
    477 buffer_reset(buf);
    \n-
    478
    \n-
    479 buf->received = 0;
    \n-
    480}
    \n-
    481
    \n-
    486static int
    \n-
    487buffer_add_row(DBPROCESS *dbproc, TDSRESULTINFO *resinfo)
    \n-
    488{
    \n-
    489 DBPROC_ROWBUF *buf = &dbproc->row_buf;
    \n-
    490 DBLIB_BUFFER_ROW *row;
    \n-
    491 int i;
    \n-
    492
    \n-
    493 assert(buf->capacity >= 0);
    \n-
    494
    \n-
    495 if (buffer_is_full(buf))
    \n-
    496 return -1;
    \n-
    497
    \n-
    498 row = buffer_row_address(buf, buf->head);
    \n-
    499
    \n-
    500 /* bump the row number, write it, and move the data to head */
    \n-
    501 if (row->resinfo) {
    \n-
    502 tds_free_row(row->resinfo, row->row_data);
    \n-
    503 tds_free_results(row->resinfo);
    \n-
    504 }
    \n-
    505 row->row = ++buf->received;
    \n-
    506 ++resinfo->ref_count;
    \n-
    507 row->resinfo = resinfo;
    \n-
    508 row->row_data = NULL;
    \n-
    509 if (row->sizes)
    \n-
    510 free(row->sizes);
    \n-
    511 row->sizes = tds_new0(TDS_INT, resinfo->num_cols);
    \n-
    512 for (i = 0; i < resinfo->num_cols; ++i)
    \n-
    513 row->sizes[i] = resinfo->columns[i]->column_cur_size;
    \n-
    514
    \n-
    515 /* initial condition is head == 0 and tail == capacity */
    \n-
    516 if (buf->tail == buf->capacity) {
    \n-
    517 /* bumping this tail will set it to zero */
    \n-
    518 assert(buf->head == 0);
    \n-
    519 buf->tail = 0;
    \n-
    520 }
    \n-
    521
    \n-
    522 /* update current, bump the head */
    \n-
    523 buf->current = buf->head;
    \n-
    524 buf->head = buffer_idx_increment(buf, buf->head);
    \n-
    525
    \n-
    526 return buf->current;
    \n-
    527}
    \n-
    528
    \n-
    532static RETCODE
    \n-
    533buffer_save_row(DBPROCESS *dbproc)
    \n-
    534{
    \n-
    535 DBPROC_ROWBUF *buf = &dbproc->row_buf;
    \n-
    536 DBLIB_BUFFER_ROW *row;
    \n-
    537 int idx = buf->head - 1;
    \n-
    538
    \n-
    539 if (buf->capacity <= 1)
    \n-
    540 return SUCCEED;
    \n-
    541
    \n-
    542 if (idx < 0)
    \n-
    543 idx = buf->capacity - 1;
    \n-
    544 if (idx >= 0 && idx < buf->capacity) {
    \n-
    545 row = &buf->rows[idx];
    \n-
    546
    \n-
    547 if (row->resinfo && !row->row_data) {
    \n-
    548 row->row_data = row->resinfo->current_row;
    \n-\n-
    550 }
    \n-
    551 }
    \n-
    552
    \n-
    553 return SUCCEED;
    \n-
    554}
    \n-
    555
    \n-
    RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    Definition dblib.c:529
    \n-
    TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
    Allocate space for row store return NULL on out of memory.
    Definition mem.c:524
    \n-
    Definition buffering.h:1
    \n-
    DBINT row
    row number
    Definition buffering.h:7
    \n-
    unsigned char * row_data
    row data, NULL for resinfo->current_row
    Definition buffering.h:5
    \n-
    TDS_INT * sizes
    save old sizes
    Definition buffering.h:9
    \n-
    TDSRESULTINFO * resinfo
    pointer to result informations
    Definition buffering.h:3
    \n-
    Definition dblib.h:52
    \n-
    Definition dblib.h:123
    \n-
    Information about blobs (e.g.
    Definition tds.h:593
    \n-
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n-
    TDS_INT column_size
    maximun size of data.
    Definition tds.h:694
    \n-
    TDS_SERVER_TYPE column_type
    This type can be different from wire type because conversion (e.g.
    Definition tds.h:696
    \n-
    TDS_INT column_cur_size
    size written in variable (ie: char, text, binary).
    Definition tds.h:736
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n+
    1#define LIMIT_INDEXES_ADJUST 4
    \n+
    2
    \n+
    3static const signed char limit_indexes[79]= {
    \n+
    4 0, /* 0 */
    \n+
    5 -3, /* 1 */
    \n+
    6 -6, /* 2 */
    \n+
    7 -9, /* 3 */
    \n+
    8 -12, /* 4 */
    \n+
    9 -15, /* 5 */
    \n+
    10 -18, /* 6 */
    \n+
    11 -21, /* 7 */
    \n+
    12 -24, /* 8 */
    \n+
    13 -27, /* 9 */
    \n+
    14 -30, /* 10 */
    \n+
    15 -32, /* 11 */
    \n+
    16 -34, /* 12 */
    \n+
    17 -36, /* 13 */
    \n+
    18 -38, /* 14 */
    \n+
    19 -40, /* 15 */
    \n+
    20 -42, /* 16 */
    \n+
    21 -44, /* 17 */
    \n+
    22 -46, /* 18 */
    \n+
    23 -48, /* 19 */
    \n+
    24 -50, /* 20 */
    \n+
    25 -51, /* 21 */
    \n+
    26 -52, /* 22 */
    \n+
    27 -53, /* 23 */
    \n+
    28 -54, /* 24 */
    \n+
    29 -55, /* 25 */
    \n+
    30 -56, /* 26 */
    \n+
    31 -57, /* 27 */
    \n+
    32 -58, /* 28 */
    \n+
    33 -59, /* 29 */
    \n+
    34 -59, /* 30 */
    \n+
    35 -59, /* 31 */
    \n+
    36 -59, /* 32 */
    \n+
    37 -60, /* 33 */
    \n+
    38 -61, /* 34 */
    \n+
    39 -62, /* 35 */
    \n+
    40 -63, /* 36 */
    \n+
    41 -64, /* 37 */
    \n+
    42 -65, /* 38 */
    \n+
    43 -66, /* 39 */
    \n+
    44 -66, /* 40 */
    \n+
    45 -66, /* 41 */
    \n+
    46 -66, /* 42 */
    \n+
    47 -66, /* 43 */
    \n+
    48 -66, /* 44 */
    \n+
    49 -66, /* 45 */
    \n+
    50 -66, /* 46 */
    \n+
    51 -66, /* 47 */
    \n+
    52 -66, /* 48 */
    \n+
    53 -66, /* 49 */
    \n+
    54 -65, /* 50 */
    \n+
    55 -64, /* 51 */
    \n+
    56 -63, /* 52 */
    \n+
    57 -62, /* 53 */
    \n+
    58 -61, /* 54 */
    \n+
    59 -60, /* 55 */
    \n+
    60 -59, /* 56 */
    \n+
    61 -58, /* 57 */
    \n+
    62 -57, /* 58 */
    \n+
    63 -55, /* 59 */
    \n+
    64 -53, /* 60 */
    \n+
    65 -51, /* 61 */
    \n+
    66 -49, /* 62 */
    \n+
    67 -47, /* 63 */
    \n+
    68 -45, /* 64 */
    \n+
    69 -44, /* 65 */
    \n+
    70 -43, /* 66 */
    \n+
    71 -42, /* 67 */
    \n+
    72 -41, /* 68 */
    \n+
    73 -39, /* 69 */
    \n+
    74 -37, /* 70 */
    \n+
    75 -35, /* 71 */
    \n+
    76 -33, /* 72 */
    \n+
    77 -31, /* 73 */
    \n+
    78 -29, /* 74 */
    \n+
    79 -27, /* 75 */
    \n+
    80 -25, /* 76 */
    \n+
    81 -23, /* 77 */
    \n+
    82 -21, /* 78 */
    \n+
    83};
    \n+
    84
    \n+
    85static const TDS_WORD limits[]= {
    \n+
    86 0x00000001u, /* 0 */
    \n+
    87 0x0000000au, /* 1 */
    \n+
    88 0x00000064u, /* 2 */
    \n+
    89 0x000003e8u, /* 3 */
    \n+
    90 0x00002710u, /* 4 */
    \n+
    91 0x000186a0u, /* 5 */
    \n+
    92 0x000f4240u, /* 6 */
    \n+
    93 0x00989680u, /* 7 */
    \n+
    94 0x05f5e100u, /* 8 */
    \n+
    95 0x3b9aca00u, /* 9 */
    \n+
    96 0x00000002u, /* 10 */
    \n+
    97 0x540be400u, /* 11 */
    \n+
    98 0x00000017u, /* 12 */
    \n+
    99 0x4876e800u, /* 13 */
    \n+
    100 0x000000e8u, /* 14 */
    \n+
    101 0xd4a51000u, /* 15 */
    \n+
    102 0x00000918u, /* 16 */
    \n+
    103 0x4e72a000u, /* 17 */
    \n+
    104 0x00005af3u, /* 18 */
    \n+
    105 0x107a4000u, /* 19 */
    \n+
    106 0x00038d7eu, /* 20 */
    \n+
    107 0xa4c68000u, /* 21 */
    \n+
    108 0x002386f2u, /* 22 */
    \n+
    109 0x6fc10000u, /* 23 */
    \n+
    110 0x01634578u, /* 24 */
    \n+
    111 0x5d8a0000u, /* 25 */
    \n+
    112 0x0de0b6b3u, /* 26 */
    \n+
    113 0xa7640000u, /* 27 */
    \n+
    114 0x8ac72304u, /* 28 */
    \n+
    115 0x89e80000u, /* 29 */
    \n+
    116 0x00000005u, /* 30 */
    \n+
    117 0x6bc75e2du, /* 31 */
    \n+
    118 0x63100000u, /* 32 */
    \n+
    119 0x00000036u, /* 33 */
    \n+
    120 0x35c9adc5u, /* 34 */
    \n+
    121 0xdea00000u, /* 35 */
    \n+
    122 0x0000021eu, /* 36 */
    \n+
    123 0x19e0c9bau, /* 37 */
    \n+
    124 0xb2400000u, /* 38 */
    \n+
    125 0x0000152du, /* 39 */
    \n+
    126 0x02c7e14au, /* 40 */
    \n+
    127 0xf6800000u, /* 41 */
    \n+
    128 0x0000d3c2u, /* 42 */
    \n+
    129 0x1bceccedu, /* 43 */
    \n+
    130 0xa1000000u, /* 44 */
    \n+
    131 0x00084595u, /* 45 */
    \n+
    132 0x16140148u, /* 46 */
    \n+
    133 0x4a000000u, /* 47 */
    \n+
    134 0x0052b7d2u, /* 48 */
    \n+
    135 0xdcc80cd2u, /* 49 */
    \n+
    136 0xe4000000u, /* 50 */
    \n+
    137 0x033b2e3cu, /* 51 */
    \n+
    138 0x9fd0803cu, /* 52 */
    \n+
    139 0xe8000000u, /* 53 */
    \n+
    140 0x204fce5eu, /* 54 */
    \n+
    141 0x3e250261u, /* 55 */
    \n+
    142 0x10000000u, /* 56 */
    \n+
    143 0x00000001u, /* 57 */
    \n+
    144 0x431e0faeu, /* 58 */
    \n+
    145 0x6d7217cau, /* 59 */
    \n+
    146 0xa0000000u, /* 60 */
    \n+
    147 0x0000000cu, /* 61 */
    \n+
    148 0x9f2c9cd0u, /* 62 */
    \n+
    149 0x4674edeau, /* 63 */
    \n+
    150 0x40000000u, /* 64 */
    \n+
    151 0x0000007eu, /* 65 */
    \n+
    152 0x37be2022u, /* 66 */
    \n+
    153 0xc0914b26u, /* 67 */
    \n+
    154 0x80000000u, /* 68 */
    \n+
    155 0x000004eeu, /* 69 */
    \n+
    156 0x2d6d415bu, /* 70 */
    \n+
    157 0x85acef81u, /* 71 */
    \n+
    158 0x0000314du, /* 72 */
    \n+
    159 0xc6448d93u, /* 73 */
    \n+
    160 0x38c15b0au, /* 74 */
    \n+
    161 0x0001ed09u, /* 75 */
    \n+
    162 0xbead87c0u, /* 76 */
    \n+
    163 0x378d8e64u, /* 77 */
    \n+
    164 0x00134261u, /* 78 */
    \n+
    165 0x72c74d82u, /* 79 */
    \n+
    166 0x2b878fe8u, /* 80 */
    \n+
    167 0x00c097ceu, /* 81 */
    \n+
    168 0x7bc90715u, /* 82 */
    \n+
    169 0xb34b9f10u, /* 83 */
    \n+
    170 0x0785ee10u, /* 84 */
    \n+
    171 0xd5da46d9u, /* 85 */
    \n+
    172 0x00f436a0u, /* 86 */
    \n+
    173 0x4b3b4ca8u, /* 87 */
    \n+
    174 0x5a86c47au, /* 88 */
    \n+
    175 0x098a2240u, /* 89 */
    \n+
    176 0x00000002u, /* 90 */
    \n+
    177 0xf050fe93u, /* 91 */
    \n+
    178 0x8943acc4u, /* 92 */
    \n+
    179 0x5f655680u, /* 93 */
    \n+
    180 0x0000001du, /* 94 */
    \n+
    181 0x6329f1c3u, /* 95 */
    \n+
    182 0x5ca4bfabu, /* 96 */
    \n+
    183 0xb9f56100u, /* 97 */
    \n+
    184 0x00000125u, /* 98 */
    \n+
    185 0xdfa371a1u, /* 99 */
    \n+
    186 0x9e6f7cb5u, /* 100 */
    \n+
    187 0x4395ca00u, /* 101 */
    \n+
    188 0x00000b7au, /* 102 */
    \n+
    189 0xbc627050u, /* 103 */
    \n+
    190 0x305adf14u, /* 104 */
    \n+
    191 0xa3d9e400u, /* 105 */
    \n+
    192 0x000072cbu, /* 106 */
    \n+
    193 0x5bd86321u, /* 107 */
    \n+
    194 0xe38cb6ceu, /* 108 */
    \n+
    195 0x6682e800u, /* 109 */
    \n+
    196 0x00047bf1u, /* 110 */
    \n+
    197 0x9673df52u, /* 111 */
    \n+
    198 0xe37f2410u, /* 112 */
    \n+
    199 0x011d1000u, /* 113 */
    \n+
    200 0x002cd76fu, /* 114 */
    \n+
    201 0xe086b93cu, /* 115 */
    \n+
    202 0xe2f768a0u, /* 116 */
    \n+
    203 0x0b22a000u, /* 117 */
    \n+
    204 0x01c06a5eu, /* 118 */
    \n+
    205 0xc5433c60u, /* 119 */
    \n+
    206 0xddaa1640u, /* 120 */
    \n+
    207 0x6f5a4000u, /* 121 */
    \n+
    208 0x118427b3u, /* 122 */
    \n+
    209 0xb4a05bc8u, /* 123 */
    \n+
    210 0xa8a4de84u, /* 124 */
    \n+
    211 0x59868000u, /* 125 */
    \n+
    212 0xaf298d05u, /* 126 */
    \n+
    213 0x0e4395d6u, /* 127 */
    \n+
    214 0x9670b12bu, /* 128 */
    \n+
    215 0x7f410000u, /* 129 */
    \n+
    216 0x00000006u, /* 130 */
    \n+
    217 0xd79f8232u, /* 131 */
    \n+
    218 0x8ea3da61u, /* 132 */
    \n+
    219 0xe066ebb2u, /* 133 */
    \n+
    220 0xf88a0000u, /* 134 */
    \n+
    221 0x00000044u, /* 135 */
    \n+
    222 0x6c3b15f9u, /* 136 */
    \n+
    223 0x926687d2u, /* 137 */
    \n+
    224 0xc40534fdu, /* 138 */
    \n+
    225 0xb5640000u, /* 139 */
    \n+
    226 0x000002acu, /* 140 */
    \n+
    227 0x3a4edbbfu, /* 141 */
    \n+
    228 0xb8014e3bu, /* 142 */
    \n+
    229 0xa83411e9u, /* 143 */
    \n+
    230 0x15e80000u, /* 144 */
    \n+
    231 0x00001abau, /* 145 */
    \n+
    232 0x4714957du, /* 146 */
    \n+
    233 0x300d0e54u, /* 147 */
    \n+
    234 0x9208b31au, /* 148 */
    \n+
    235 0xdb100000u, /* 149 */
    \n+
    236 0x00010b46u, /* 150 */
    \n+
    237 0xc6cdd6e3u, /* 151 */
    \n+
    238 0xe0828f4du, /* 152 */
    \n+
    239 0xb456ff0cu, /* 153 */
    \n+
    240 0x8ea00000u, /* 154 */
    \n+
    241 0x000a70c3u, /* 155 */
    \n+
    242 0xc40a64e6u, /* 156 */
    \n+
    243 0xc5199909u, /* 157 */
    \n+
    244 0x0b65f67du, /* 158 */
    \n+
    245 0x92400000u, /* 159 */
    \n+
    246 0x006867a5u, /* 160 */
    \n+
    247 0xa867f103u, /* 161 */
    \n+
    248 0xb2fffa5au, /* 162 */
    \n+
    249 0x71fba0e7u, /* 163 */
    \n+
    250 0xb6800000u, /* 164 */
    \n+
    251 0x04140c78u, /* 165 */
    \n+
    252 0x940f6a24u, /* 166 */
    \n+
    253 0xfdffc788u, /* 167 */
    \n+
    254 0x73d4490du, /* 168 */
    \n+
    255 0x21000000u, /* 169 */
    \n+
    256 0x28c87cb5u, /* 170 */
    \n+
    257 0xc89a2571u, /* 171 */
    \n+
    258 0xebfdcb54u, /* 172 */
    \n+
    259 0x864ada83u, /* 173 */
    \n+
    260 0x4a000000u, /* 174 */
    \n+
    261 0x00000001u, /* 175 */
    \n+
    262 0x97d4df19u, /* 176 */
    \n+
    263 0xd6057673u, /* 177 */
    \n+
    264 0x37e9f14du, /* 178 */
    \n+
    265 0x3eec8920u, /* 179 */
    \n+
    266 0xe4000000u, /* 180 */
    \n+
    267 0x0000000fu, /* 181 */
    \n+
    268 0xee50b702u, /* 182 */
    \n+
    269 0x5c36a080u, /* 183 */
    \n+
    270 0x2f236d04u, /* 184 */
    \n+
    271 0x753d5b48u, /* 185 */
    \n+
    272 0xe8000000u, /* 186 */
    \n+
    273 0x0000009fu, /* 187 */
    \n+
    274 0x4f272617u, /* 188 */
    \n+
    275 0x9a224501u, /* 189 */
    \n+
    276 0xd762422cu, /* 190 */
    \n+
    277 0x946590d9u, /* 191 */
    \n+
    278 0x10000000u, /* 192 */
    \n+
    279 0x00000639u, /* 193 */
    \n+
    280 0x17877cecu, /* 194 */
    \n+
    281 0x0556b212u, /* 195 */
    \n+
    282 0x69d695bdu, /* 196 */
    \n+
    283 0xcbf7a87au, /* 197 */
    \n+
    284 0xa0000000u, /* 198 */
    \n+
    285 0x00003e3au, /* 199 */
    \n+
    286 0xeb4ae138u, /* 200 */
    \n+
    287 0x3562f4b8u, /* 201 */
    \n+
    288 0x2261d969u, /* 202 */
    \n+
    289 0xf7ac94cau, /* 203 */
    \n+
    290 0x40000000u, /* 204 */
    \n+
    291 0x00026e4du, /* 205 */
    \n+
    292 0x30eccc32u, /* 206 */
    \n+
    293 0x15dd8f31u, /* 207 */
    \n+
    294 0x57d27e23u, /* 208 */
    \n+
    295 0xacbdcfe6u, /* 209 */
    \n+
    296 0x80000000u, /* 210 */
    \n+
    297 0x00184f03u, /* 211 */
    \n+
    298 0xe93ff9f4u, /* 212 */
    \n+
    299 0xdaa797edu, /* 213 */
    \n+
    300 0x6e38ed64u, /* 214 */
    \n+
    301 0xbf6a1f01u, /* 215 */
    \n+
    302 0x00f31627u, /* 216 */
    \n+
    303 0x1c7fc390u, /* 217 */
    \n+
    304 0x8a8bef46u, /* 218 */
    \n+
    305 0x4e3945efu, /* 219 */
    \n+
    306 0x7a25360au, /* 220 */
    \n+
    307 0x097edd87u, /* 221 */
    \n+
    308 0x1cfda3a5u, /* 222 */
    \n+
    309 0x697758bfu, /* 223 */
    \n+
    310 0x0e3cbb5au, /* 224 */
    \n+
    311 0xc5741c64u, /* 225 */
    \n+
    312 0x5ef4a747u, /* 226 */
    \n+
    313 0x21e86476u, /* 227 */
    \n+
    314 0x1ea97776u, /* 228 */
    \n+
    315 0x8e5f518bu, /* 229 */
    \n+
    316 0xb6891be8u, /* 230 */
    \n+
    317 0x00000003u, /* 231 */
    \n+
    318 0xb58e88c7u, /* 232 */
    \n+
    319 0x5313ec9du, /* 233 */
    \n+
    320 0x329eaaa1u, /* 234 */
    \n+
    321 0x8fb92f75u, /* 235 */
    \n+
    322 0x215b1710u, /* 236 */
    \n+
    323 0x00000025u, /* 237 */
    \n+
    324 0x179157c9u, /* 238 */
    \n+
    325 0x3ec73e23u, /* 239 */
    \n+
    326 0xfa32aa4fu, /* 240 */
    \n+
    327 0x9d3bda93u, /* 241 */
    \n+
    328 0x4d8ee6a0u, /* 242 */
    \n+
    329 0x00000172u, /* 243 */
    \n+
    330 0xebad6ddcu, /* 244 */
    \n+
    331 0x73c86d67u, /* 245 */
    \n+
    332 0xc5faa71cu, /* 246 */
    \n+
    333 0x245689c1u, /* 247 */
    \n+
    334 0x07950240u, /* 248 */
    \n+
    335 0x00000e7du, /* 249 */
    \n+
    336 0x34c64a9cu, /* 250 */
    \n+
    337 0x85d4460du, /* 251 */
    \n+
    338 0xbbca8719u, /* 252 */
    \n+
    339 0x6b61618au, /* 253 */
    \n+
    340 0x4bd21680u, /* 254 */
    \n+
    341 0x000090e4u, /* 255 */
    \n+
    342 0x0fbeea1du, /* 256 */
    \n+
    343 0x3a4abc89u, /* 257 */
    \n+
    344 0x55e946feu, /* 258 */
    \n+
    345 0x31cdcf66u, /* 259 */
    \n+
    346 0xf634e100u, /* 260 */
    \n+
    347 0x0005a8e8u, /* 261 */
    \n+
    348 0x9d752524u, /* 262 */
    \n+
    349 0x46eb5d5du, /* 263 */
    \n+
    350 0x5b1cc5edu, /* 264 */
    \n+
    351 0xf20a1a05u, /* 265 */
    \n+
    352 0x9e10ca00u, /* 266 */
    \n+
    353 0x00389916u, /* 267 */
    \n+
    354 0x2693736au, /* 268 */
    \n+
    355 0xc531a5a5u, /* 269 */
    \n+
    356 0x8f1fbb4bu, /* 270 */
    \n+
    357 0x74650438u, /* 271 */
    \n+
    358 0x2ca7e400u, /* 272 */
    \n+
    359 0x0235faddu, /* 273 */
    \n+
    360 0x81c2822bu, /* 274 */
    \n+
    361 0xb3f07877u, /* 275 */
    \n+
    362 0x973d50f2u, /* 276 */
    \n+
    363 0x8bf22a31u, /* 277 */
    \n+
    364 0xbe8ee800u, /* 278 */
    \n+
    365 0x161bcca7u, /* 279 */
    \n+
    366 0x119915b5u, /* 280 */
    \n+
    367 0x0764b4abu, /* 281 */
    \n+
    368 0xe8652979u, /* 282 */
    \n+
    369 0x7775a5f1u, /* 283 */
    \n+
    370 0x71951000u, /* 284 */
    \n+
    371 0xdd15fe86u, /* 285 */
    \n+
    372 0xaffad912u, /* 286 */
    \n+
    373 0x49ef0eb7u, /* 287 */
    \n+
    374 0x13f39ebeu, /* 288 */
    \n+
    375 0xaa987b6eu, /* 289 */
    \n+
    376 0x6fd2a000u, /* 290 */
    \n+
    377};
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,548 +6,389 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * dblib\n-buffering.h\n-1typedef struct dblib_buffer_row {\n-3 TDSRESULTINFO *resinfo;\n-5 unsigned char *row_data;\n-7 DBINT row;\n-9 TDS_INT *sizes;\n- 10} DBLIB_BUFFER_ROW;\n- 11\n- 12static void buffer_struct_print(const DBPROC_ROWBUF *buf);\n- 13static RETCODE buffer_save_row(DBPROCESS *dbproc);\n- 14static DBLIB_BUFFER_ROW* buffer_row_address(const DBPROC_ROWBUF * buf, int\n-idx);\n- 15\n- 16#if ENABLE_EXTRA_CHECKS\n- 17static void buffer_check_row_empty(DBLIB_BUFFER_ROW *row)\n- 18{\n- 19 assert(row->resinfo == NULL);\n- 20 assert(row->row_data == NULL);\n- 21 assert(row->sizes == NULL);\n- 22 assert(row->row == 0);\n- 23}\n- 24\n- 25static void buffer_check(const DBPROC_ROWBUF *buf)\n- 26{\n- 27 int i;\n- 28\n- 29 /* no buffering */\n- 30 if (buf->capacity == 0 || buf->capacity == 1) {\n- 31 assert(buf->head == 0);\n- 32 assert(buf->tail == 0 || buf->tail == 1);\n- 33 assert(buf->capacity == 1 || buf->rows == NULL);\n- 34 return;\n- 35 }\n- 36\n- 37 assert(buf->capacity > 0);\n- 38 assert(buf->head >= 0);\n- 39 assert(buf->tail >= 0);\n- 40 assert(buf->head < buf->capacity);\n- 41 assert(buf->tail <= buf->capacity);\n- 42\n- 43 /* check empty */\n- 44 if (buf->tail == buf->capacity) {\n- 45 assert(buf->head == 0);\n- 46 for (i = 0; buf->rows && i < buf->capacity; ++i)\n- 47 buffer_check_row_empty(&buf->rows[i]);\n- 48 return;\n- 49 }\n- 50\n- 51 if (buf->rows == NULL)\n- 52 return;\n- 53\n- 54 /* check filled part */\n- 55 i = buf->tail;\n- 56 do {\n- 57 assert(i >= 0 && i < buf->capacity);\n- 58 assert(buf->rows[i].resinfo != NULL);\n- 59 assert(buf->rows[i].row > 0);\n- 60 assert(buf->rows[i].row <= buf->received);\n- 61 ++i;\n- 62 if (i == buf->capacity)\n- 63 i = 0;\n- 64 } while (i != buf->head);\n- 65\n- 66 /* check empty part */\n- 67 if (buf->head != buf->tail) {\n- 68 i = buf->head;\n- 69 do {\n- 70 assert(i >= 0 && i < buf->capacity);\n- 71 buffer_check_row_empty(&buf->rows[i]);\n- 72 ++i;\n- 73 if (i == buf->capacity)\n- 74 i = 0;\n- 75 } while (i != buf->tail);\n- 76 }\n- 77}\n- 78#define BUFFER_CHECK(buf) buffer_check(buf)\n- 79#else\n- 80#define BUFFER_CHECK(buf) do {} while(0)\n- 81#endif\n- 111static int\n- 112buffer_count(const DBPROC_ROWBUF *buf)\n- 113{\n- 114 BUFFER_CHECK(buf);\n- 115 return (buf->head > buf->tail) ?\n- 116 buf->head - buf->tail : /* |...TddddH....| */\n- 117 buf->capacity - (buf->tail - buf->head); /* |ddddH....Tddd| */\n- 118}\n- 119\n- 123static int\n- 124buffer_is_full(const DBPROC_ROWBUF *buf)\n- 125{\n- 126 BUFFER_CHECK(buf);\n- 127 return buf->capacity == buffer_count(buf) && buf->capacity > 1;\n- 128}\n- 129\n- 130#ifndef NDEBUG\n- 131static int\n- 132buffer_index_valid(const DBPROC_ROWBUF *buf, int idx)\n- 133{\n- 134 BUFFER_CHECK(buf);\n- 135 if (buf->tail <= buf->head)\n- 136 if (buf->head <= idx && idx <= buf->tail)\n- 137 return 1;\n- 138\n- 139 if (0 <= idx && idx <= buf->head)\n- 140 return 1;\n- 141\n- 142 if (buf->tail <= idx && idx < buf->capacity)\n- 143 return 1;\n- 144#if 0\n- 145 printf(\"buffer_index_valid: idx = %d\\n\", idx);\n- 146 buffer_struct_print(buf);\n- 147#endif\n- 148 return 0;\n- 149}\n- 150#endif\n- 151\n- 152static void\n- 153buffer_free_row(DBLIB_BUFFER_ROW *row)\n- 154{\n- 155 if (row->sizes)\n- 156 TDS_ZERO_FREE(row->sizes);\n- 157 if (row->row_data) {\n- 158 tds_free_row(row->resinfo, row->row_data);\n- 159 row->row_data = NULL;\n- 160 }\n- 161 tds_free_results(row->resinfo);\n- 162 row->resinfo = NULL;\n- 163 row->row = 0;\n- 164}\n- 165\n- 166/*\n- 167 * Buffer is freed at slightly odd points, whenever\n- 168 * capacity changes:\n- 169 *\n- 170 * 1. When setting capacity, to release prior buffer.\n- 171 * 2. By dbresults. When called the second time, it has to\n- 172 * release prior storage because the new resultset will have\n- 173 * a different width.\n- 174 * 3. By dbclose(), else open/close/open would leak.\n- 175 */\n- 176static void\n- 177buffer_free(DBPROC_ROWBUF *buf)\n- 178{\n- 179 BUFFER_CHECK(buf);\n- 180 if (buf->rows != NULL) {\n- 181 int i;\n- 182 for (i = 0; i < buf->capacity; ++i)\n- 183 buffer_free_row(&buf->rows[i]);\n- 184 TDS_ZERO_FREE(buf->rows);\n- 185 }\n- 186 BUFFER_CHECK(buf);\n- 187}\n- 188\n- 189/*\n- 190 * When no rows are currently buffered (and the buffer is allocated)\n- 191 * set the indices to their initial positions.\n- 192 */\n- 193static void\n- 194buffer_reset(DBPROC_ROWBUF *buf)\n- 195{\n- 196 buf->head = 0;\n- 197 buf->current = buf->tail = buf->capacity;\n- 198 BUFFER_CHECK(buf);\n- 199}\n- 200\n- 201static int\n- 202buffer_idx_increment(const DBPROC_ROWBUF *buf, int idx)\n- 203{\n- 204 if (++idx >= buf->capacity) {\n- 205 idx = 0;\n- 206 }\n- 207 return idx;\n- 208}\n- 209\n- 214static DBLIB_BUFFER_ROW*\n- 215buffer_row_address(const DBPROC_ROWBUF * buf, int idx)\n- 216{\n- 217 BUFFER_CHECK(buf);\n- 218 if (idx < 0 || idx >= buf->capacity) {\n- 219 printf(\"idx is %d:\\n\", idx);\n- 220 buffer_struct_print(buf);\n- 221 return NULL;\n- 222 }\n- 223\n- 224 return &(buf->rows[idx]);\n- 225}\n- 226\n- 230static DBINT\n- 231buffer_idx2row(const DBPROC_ROWBUF *buf, int idx)\n- 232{\n- 233 BUFFER_CHECK(buf);\n- 234 return buffer_row_address(buf, idx)->row;\n- 235}\n- 236\n- 240static int\n- 241buffer_row2idx(const DBPROC_ROWBUF *buf, int row_number)\n- 242{\n- 243 int i = buf->tail;\n- 244#ifndef NDEBUG\n- 245 int ii = 0;\n- 246#endif\n- 247\n- 248 BUFFER_CHECK(buf);\n- 249 if (i == buf->capacity) {\n- 250 assert (buf->head == 0);\n- 251 return -1; /* no rows buffered */\n- 252 }\n- 253\n- 254 /*\n- 255 * March through the buffers from tail to head, stop if we find our row.\n- 256 * A full queue is indicated by tail == head (which means we can't write).\n- 257 */\n- 258 do {\n- 259 if (buffer_idx2row(buf, i) == row_number)\n- 260 return i;\n- 261\n- 262 assert(ii++ < buf->capacity); /* prevent infinite loop */\n- 263\n- 264 i = buffer_idx_increment(buf, i);\n- 265 } while (i != buf->head);\n- 266\n- 267 return -1;\n- 268}\n- 269\n- 274static void\n- 275buffer_delete_rows(DBPROC_ROWBUF * buf, int count)\n- 276{\n- 277 int i;\n- 278\n- 279 BUFFER_CHECK(buf);\n- 280 if (count < 0 || count > buffer_count(buf)) {\n- 281 count = buffer_count(buf);\n- 282 }\n- 283\n- 284 for (i=0; i < count; i++) {\n- 285 if (buf->tail < buf->capacity)\n- 286 buffer_free_row(&buf->rows[buf->tail]);\n- 287 buf->tail = buffer_idx_increment(buf, buf->tail);\n- 288 /*\n- 289 * If deleting rows from the buffer catches the tail to the head,\n- 290 * return to the initial position. Otherwise, it will look full.\n- 291 */\n- 292 if (buf->tail == buf->head) {\n- 293 buffer_reset(buf);\n- 294 break;\n- 295 }\n- 296 }\n- 297#if 0\n- 298 buffer_struct_print(buf);\n- 299#endif\n- 300 BUFFER_CHECK(buf);\n- 301}\n- 302\n- 306static void\n- 307buffer_transfer_bound_data(DBPROC_ROWBUF *buf, TDS_INT res_type, TDS_INT\n-compute_id, DBPROCESS * dbproc, int idx)\n- 308{\n- 309 int i;\n- 310 BYTE *src;\n- 311 const DBLIB_BUFFER_ROW *row;\n- 312\n- 313 tdsdump_log(TDS_DBG_FUNC, \"buffer_transfer_bound_data(%p %d %d %p %d)\\n\",\n-buf, res_type, compute_id, dbproc, idx);\n- 314 BUFFER_CHECK(buf);\n- 315 assert(buffer_index_valid(buf, idx));\n- 316\n- 317 row = buffer_row_address(buf, idx);\n- 318 assert(row->resinfo);\n- 319\n- 320 for (i = 0; i < row->resinfo->num_cols; i++) {\n- 321 TDS_SERVER_TYPE srctype;\n- 322 DBINT srclen;\n- 323 TDSCOLUMN *curcol = row->resinfo->columns[i];\n- 324\n- 325 if (row->sizes)\n- 326 curcol->column_cur_size = row->sizes[i];\n- 327\n- 328 srclen = curcol->column_cur_size;\n- 329\n- 330 if (curcol->column_nullbind) {\n- 331 if (srclen < 0) {\n- 332 *(DBINT *)(curcol->column_nullbind) = -1;\n- 333 } else {\n- 334 *(DBINT *)(curcol->column_nullbind) = 0;\n- 335 }\n- 336 }\n- 337 if (!curcol->column_varaddr)\n- 338 continue;\n- 339\n- 340 if (srclen <= 0) {\n- 341 if (srclen == 0 || !curcol->column_nullbind)\n- 342 dbgetnull(dbproc, curcol->column_bindtype, curcol->column_bindlen,\n- 343 (BYTE *) curcol->column_varaddr);\n- 344 continue;\n- 345 }\n- 346\n- 347 srctype = tds_get_conversion_type(curcol->column_type, curcol-\n->column_size);\n- 348\n- 349 if (row->row_data)\n- 350 src = &row->row_data[curcol->column_data - row->resinfo->current_row];\n- 351 else\n- 352 src = curcol->column_data;\n- 353 if (is_blob_col(curcol))\n- 354 src = (BYTE *) ((TDSBLOB *) src)->textvalue;\n- 355\n- 356 copy_data_to_host_var(dbproc, srctype, src, srclen,\n- 357 (BYTE *) curcol->column_varaddr, curcol->column_bindlen,\n- 358 curcol->column_bindtype, (DBINT*) curcol->column_nullbind);\n- 359 }\n- 360\n- 361 /*\n- 362 * This function always bumps current. Usually, it's called\n- 363 * by dbnextrow(), so bumping current is a pretty obvious choice.\n- 364 * It can also be called by dbgetrow(), but that function also\n- 365 * causes the bump. If you call dbgetrow() for row N, a subsequent\n- 366 * call to dbnextrow() yields N+1.\n- 367 */\n- 368 buf->current = buffer_idx_increment(buf, buf->current);\n- 369\n- 370} /* end buffer_transfer_bound_data() */\n- 371\n- 372static void\n- 373buffer_struct_print(const DBPROC_ROWBUF *buf)\n- 374{\n- 375 assert(buf);\n- 376\n- 377 printf(\"\\t%d rows in buffer\\n\", buffer_count(buf));\n- 378\n- 379 printf(\"\\thead = %d\\t\", buf->head);\n- 380 printf(\"\\ttail = %d\\t\", buf->tail);\n- 381 printf(\"\\tcurrent = %d\\n\", buf->current);\n- 382 printf(\"\\tcapacity = %d\\t\", buf->capacity);\n- 383 printf(\"\\thead row number = %d\\n\", buf->received);\n- 384}\n- 385\n- 386/* * * Functions called only by public db-lib API take DBPROCESS* * */\n- 387\n- 404static int\n- 405buffer_current_index(const DBPROCESS *dbproc)\n- 406{\n- 407 const DBPROC_ROWBUF *buf = &dbproc->row_buf;\n- 408#if 0\n- 409 buffer_struct_print(buf);\n- 410#endif\n- 411 if (buf->capacity <= 1) /* no buffering */\n- 412 return -1;\n- 413 if (buf->current == buf->head || buf->current == buf->capacity)\n- 414 return -1;\n- 415\n- 416 assert(buf->current >= 0);\n- 417 assert(buf->current < buf->capacity);\n- 418\n- 419 if( buf->tail < buf->head) {\n- 420 assert(buf->tail < buf->current);\n- 421 assert(buf->current < buf->head);\n- 422 } else {\n- 423 if (buf->current > buf->head)\n- 424 assert(buf->current > buf->tail);\n- 425 }\n- 426 return buf->current;\n- 427}\n- 428\n- 429/*\n- 430 * Normally called by dbsetopt() to prepare for buffering\n- 431 * Called with nrows == 0 by dbopen to safely set buf->rows to NULL.\n- 432 */\n- 433static void\n- 434buffer_set_capacity(DBPROCESS *dbproc, int nrows)\n- 435{\n- 436 DBPROC_ROWBUF *buf = &dbproc->row_buf;\n- 437\n- 438 buffer_free(buf);\n- 439\n- 440 memset(buf, 0, sizeof(DBPROC_ROWBUF));\n- 441\n- 442 if (0 == nrows) {\n- 443 buf->capacity = 1;\n- 444 BUFFER_CHECK(buf);\n- 445 return;\n- 446 }\n- 447\n- 448 assert(0 < nrows);\n- 449\n- 450 buf->capacity = nrows;\n- 451 BUFFER_CHECK(buf);\n- 452}\n- 453\n- 454/*\n- 455 * Called only by dbresults(); capacity must be >= 1.\n- 456 * Sybase's documents say dbresults() cannot return FAIL if the prior calls\n-worked,\n- 457 * which is a little strange, because (for FreeTDS, at least), dbresults\n- 458 * is when we learn about the result set's width. Without that information,\n-we\n- 459 * can't allocate memory for the buffer. But if we *fail* to allocate\n-memory,\n- 460 * we're not to communicate it back to the caller?\n- 461 */\n- 462static void\n- 463buffer_alloc(DBPROCESS *dbproc)\n- 464{\n- 465 DBPROC_ROWBUF *buf = &dbproc->row_buf;\n- 466\n- 467 /* Call this function only after setting capacity. */\n- 468\n- 469 assert(buf);\n- 470 assert(buf->capacity > 0);\n- 471 assert(buf->rows == NULL);\n- 472\n- 473 buf->rows = tds_new0(DBLIB_BUFFER_ROW, buf->capacity);\n- 474\n- 475 assert(buf->rows);\n- 476\n- 477 buffer_reset(buf);\n- 478\n- 479 buf->received = 0;\n- 480}\n- 481\n- 486static int\n- 487buffer_add_row(DBPROCESS *dbproc, TDSRESULTINFO *resinfo)\n- 488{\n- 489 DBPROC_ROWBUF *buf = &dbproc->row_buf;\n- 490 DBLIB_BUFFER_ROW *row;\n- 491 int i;\n- 492\n- 493 assert(buf->capacity >= 0);\n- 494\n- 495 if (buffer_is_full(buf))\n- 496 return -1;\n- 497\n- 498 row = buffer_row_address(buf, buf->head);\n- 499\n- 500 /* bump the row number, write it, and move the data to head */\n- 501 if (row->resinfo) {\n- 502 tds_free_row(row->resinfo, row->row_data);\n- 503 tds_free_results(row->resinfo);\n- 504 }\n- 505 row->row = ++buf->received;\n- 506 ++resinfo->ref_count;\n- 507 row->resinfo = resinfo;\n- 508 row->row_data = NULL;\n- 509 if (row->sizes)\n- 510 free(row->sizes);\n- 511 row->sizes = tds_new0(TDS_INT, resinfo->num_cols);\n- 512 for (i = 0; i < resinfo->num_cols; ++i)\n- 513 row->sizes[i] = resinfo->columns[i]->column_cur_size;\n- 514\n- 515 /* initial condition is head == 0 and tail == capacity */\n- 516 if (buf->tail == buf->capacity) {\n- 517 /* bumping this tail will set it to zero */\n- 518 assert(buf->head == 0);\n- 519 buf->tail = 0;\n- 520 }\n- 521\n- 522 /* update current, bump the head */\n- 523 buf->current = buf->head;\n- 524 buf->head = buffer_idx_increment(buf, buf->head);\n- 525\n- 526 return buf->current;\n- 527}\n- 528\n- 532static RETCODE\n- 533buffer_save_row(DBPROCESS *dbproc)\n- 534{\n- 535 DBPROC_ROWBUF *buf = &dbproc->row_buf;\n- 536 DBLIB_BUFFER_ROW *row;\n- 537 int idx = buf->head - 1;\n- 538\n- 539 if (buf->capacity <= 1)\n- 540 return SUCCEED;\n- 541\n- 542 if (idx < 0)\n- 543 idx = buf->capacity - 1;\n- 544 if (idx >= 0 && idx < buf->capacity) {\n- 545 row = &buf->rows[idx];\n- 546\n- 547 if (row->resinfo && !row->row_data) {\n- 548 row->row_data = row->resinfo->current_row;\n- 549 tds_alloc_row(row->resinfo);\n- 550 }\n- 551 }\n- 552\n- 553 return SUCCEED;\n- 554}\n- 555\n-dbgetnull\n-RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)\n-Definition dblib.c:529\n-tds_alloc_row\n-TDSRET tds_alloc_row(TDSRESULTINFO *res_info)\n-Allocate space for row store return NULL on out of memory.\n-Definition mem.c:524\n-dblib_buffer_row\n-Definition buffering.h:1\n-dblib_buffer_row::row\n-DBINT row\n-row number\n-Definition buffering.h:7\n-dblib_buffer_row::row_data\n-unsigned char * row_data\n-row data, NULL for resinfo->current_row\n-Definition buffering.h:5\n-dblib_buffer_row::sizes\n-TDS_INT * sizes\n-save old sizes\n-Definition buffering.h:9\n-dblib_buffer_row::resinfo\n-TDSRESULTINFO * resinfo\n-pointer to result informations\n-Definition buffering.h:3\n-DBPROC_ROWBUF\n-Definition dblib.h:52\n-tds_dblib_dbprocess\n-Definition dblib.h:123\n-tds_blob\n-Information about blobs (e.g.\n-Definition tds.h:593\n-tds_column\n-Metadata about columns in regular and compute rows.\n-Definition tds.h:689\n-tds_column::column_size\n-TDS_INT column_size\n-maximun size of data.\n-Definition tds.h:694\n-tds_column::column_type\n-TDS_SERVER_TYPE column_type\n-This type can be different from wire type because conversion (e.g.\n-Definition tds.h:696\n-tds_column::column_cur_size\n-TDS_INT column_cur_size\n-size written in variable (ie: char, text, binary).\n-Definition tds.h:736\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n+ * tds\n+num_limits.h\n+ 1#define LIMIT_INDEXES_ADJUST 4\n+ 2\n+ 3static const signed char limit_indexes[79]= {\n+ 4 0, /* 0 */\n+ 5 -3, /* 1 */\n+ 6 -6, /* 2 */\n+ 7 -9, /* 3 */\n+ 8 -12, /* 4 */\n+ 9 -15, /* 5 */\n+ 10 -18, /* 6 */\n+ 11 -21, /* 7 */\n+ 12 -24, /* 8 */\n+ 13 -27, /* 9 */\n+ 14 -30, /* 10 */\n+ 15 -32, /* 11 */\n+ 16 -34, /* 12 */\n+ 17 -36, /* 13 */\n+ 18 -38, /* 14 */\n+ 19 -40, /* 15 */\n+ 20 -42, /* 16 */\n+ 21 -44, /* 17 */\n+ 22 -46, /* 18 */\n+ 23 -48, /* 19 */\n+ 24 -50, /* 20 */\n+ 25 -51, /* 21 */\n+ 26 -52, /* 22 */\n+ 27 -53, /* 23 */\n+ 28 -54, /* 24 */\n+ 29 -55, /* 25 */\n+ 30 -56, /* 26 */\n+ 31 -57, /* 27 */\n+ 32 -58, /* 28 */\n+ 33 -59, /* 29 */\n+ 34 -59, /* 30 */\n+ 35 -59, /* 31 */\n+ 36 -59, /* 32 */\n+ 37 -60, /* 33 */\n+ 38 -61, /* 34 */\n+ 39 -62, /* 35 */\n+ 40 -63, /* 36 */\n+ 41 -64, /* 37 */\n+ 42 -65, /* 38 */\n+ 43 -66, /* 39 */\n+ 44 -66, /* 40 */\n+ 45 -66, /* 41 */\n+ 46 -66, /* 42 */\n+ 47 -66, /* 43 */\n+ 48 -66, /* 44 */\n+ 49 -66, /* 45 */\n+ 50 -66, /* 46 */\n+ 51 -66, /* 47 */\n+ 52 -66, /* 48 */\n+ 53 -66, /* 49 */\n+ 54 -65, /* 50 */\n+ 55 -64, /* 51 */\n+ 56 -63, /* 52 */\n+ 57 -62, /* 53 */\n+ 58 -61, /* 54 */\n+ 59 -60, /* 55 */\n+ 60 -59, /* 56 */\n+ 61 -58, /* 57 */\n+ 62 -57, /* 58 */\n+ 63 -55, /* 59 */\n+ 64 -53, /* 60 */\n+ 65 -51, /* 61 */\n+ 66 -49, /* 62 */\n+ 67 -47, /* 63 */\n+ 68 -45, /* 64 */\n+ 69 -44, /* 65 */\n+ 70 -43, /* 66 */\n+ 71 -42, /* 67 */\n+ 72 -41, /* 68 */\n+ 73 -39, /* 69 */\n+ 74 -37, /* 70 */\n+ 75 -35, /* 71 */\n+ 76 -33, /* 72 */\n+ 77 -31, /* 73 */\n+ 78 -29, /* 74 */\n+ 79 -27, /* 75 */\n+ 80 -25, /* 76 */\n+ 81 -23, /* 77 */\n+ 82 -21, /* 78 */\n+ 83};\n+ 84\n+ 85static const TDS_WORD limits[]= {\n+ 86 0x00000001u, /* 0 */\n+ 87 0x0000000au, /* 1 */\n+ 88 0x00000064u, /* 2 */\n+ 89 0x000003e8u, /* 3 */\n+ 90 0x00002710u, /* 4 */\n+ 91 0x000186a0u, /* 5 */\n+ 92 0x000f4240u, /* 6 */\n+ 93 0x00989680u, /* 7 */\n+ 94 0x05f5e100u, /* 8 */\n+ 95 0x3b9aca00u, /* 9 */\n+ 96 0x00000002u, /* 10 */\n+ 97 0x540be400u, /* 11 */\n+ 98 0x00000017u, /* 12 */\n+ 99 0x4876e800u, /* 13 */\n+ 100 0x000000e8u, /* 14 */\n+ 101 0xd4a51000u, /* 15 */\n+ 102 0x00000918u, /* 16 */\n+ 103 0x4e72a000u, /* 17 */\n+ 104 0x00005af3u, /* 18 */\n+ 105 0x107a4000u, /* 19 */\n+ 106 0x00038d7eu, /* 20 */\n+ 107 0xa4c68000u, /* 21 */\n+ 108 0x002386f2u, /* 22 */\n+ 109 0x6fc10000u, /* 23 */\n+ 110 0x01634578u, /* 24 */\n+ 111 0x5d8a0000u, /* 25 */\n+ 112 0x0de0b6b3u, /* 26 */\n+ 113 0xa7640000u, /* 27 */\n+ 114 0x8ac72304u, /* 28 */\n+ 115 0x89e80000u, /* 29 */\n+ 116 0x00000005u, /* 30 */\n+ 117 0x6bc75e2du, /* 31 */\n+ 118 0x63100000u, /* 32 */\n+ 119 0x00000036u, /* 33 */\n+ 120 0x35c9adc5u, /* 34 */\n+ 121 0xdea00000u, /* 35 */\n+ 122 0x0000021eu, /* 36 */\n+ 123 0x19e0c9bau, /* 37 */\n+ 124 0xb2400000u, /* 38 */\n+ 125 0x0000152du, /* 39 */\n+ 126 0x02c7e14au, /* 40 */\n+ 127 0xf6800000u, /* 41 */\n+ 128 0x0000d3c2u, /* 42 */\n+ 129 0x1bceccedu, /* 43 */\n+ 130 0xa1000000u, /* 44 */\n+ 131 0x00084595u, /* 45 */\n+ 132 0x16140148u, /* 46 */\n+ 133 0x4a000000u, /* 47 */\n+ 134 0x0052b7d2u, /* 48 */\n+ 135 0xdcc80cd2u, /* 49 */\n+ 136 0xe4000000u, /* 50 */\n+ 137 0x033b2e3cu, /* 51 */\n+ 138 0x9fd0803cu, /* 52 */\n+ 139 0xe8000000u, /* 53 */\n+ 140 0x204fce5eu, /* 54 */\n+ 141 0x3e250261u, /* 55 */\n+ 142 0x10000000u, /* 56 */\n+ 143 0x00000001u, /* 57 */\n+ 144 0x431e0faeu, /* 58 */\n+ 145 0x6d7217cau, /* 59 */\n+ 146 0xa0000000u, /* 60 */\n+ 147 0x0000000cu, /* 61 */\n+ 148 0x9f2c9cd0u, /* 62 */\n+ 149 0x4674edeau, /* 63 */\n+ 150 0x40000000u, /* 64 */\n+ 151 0x0000007eu, /* 65 */\n+ 152 0x37be2022u, /* 66 */\n+ 153 0xc0914b26u, /* 67 */\n+ 154 0x80000000u, /* 68 */\n+ 155 0x000004eeu, /* 69 */\n+ 156 0x2d6d415bu, /* 70 */\n+ 157 0x85acef81u, /* 71 */\n+ 158 0x0000314du, /* 72 */\n+ 159 0xc6448d93u, /* 73 */\n+ 160 0x38c15b0au, /* 74 */\n+ 161 0x0001ed09u, /* 75 */\n+ 162 0xbead87c0u, /* 76 */\n+ 163 0x378d8e64u, /* 77 */\n+ 164 0x00134261u, /* 78 */\n+ 165 0x72c74d82u, /* 79 */\n+ 166 0x2b878fe8u, /* 80 */\n+ 167 0x00c097ceu, /* 81 */\n+ 168 0x7bc90715u, /* 82 */\n+ 169 0xb34b9f10u, /* 83 */\n+ 170 0x0785ee10u, /* 84 */\n+ 171 0xd5da46d9u, /* 85 */\n+ 172 0x00f436a0u, /* 86 */\n+ 173 0x4b3b4ca8u, /* 87 */\n+ 174 0x5a86c47au, /* 88 */\n+ 175 0x098a2240u, /* 89 */\n+ 176 0x00000002u, /* 90 */\n+ 177 0xf050fe93u, /* 91 */\n+ 178 0x8943acc4u, /* 92 */\n+ 179 0x5f655680u, /* 93 */\n+ 180 0x0000001du, /* 94 */\n+ 181 0x6329f1c3u, /* 95 */\n+ 182 0x5ca4bfabu, /* 96 */\n+ 183 0xb9f56100u, /* 97 */\n+ 184 0x00000125u, /* 98 */\n+ 185 0xdfa371a1u, /* 99 */\n+ 186 0x9e6f7cb5u, /* 100 */\n+ 187 0x4395ca00u, /* 101 */\n+ 188 0x00000b7au, /* 102 */\n+ 189 0xbc627050u, /* 103 */\n+ 190 0x305adf14u, /* 104 */\n+ 191 0xa3d9e400u, /* 105 */\n+ 192 0x000072cbu, /* 106 */\n+ 193 0x5bd86321u, /* 107 */\n+ 194 0xe38cb6ceu, /* 108 */\n+ 195 0x6682e800u, /* 109 */\n+ 196 0x00047bf1u, /* 110 */\n+ 197 0x9673df52u, /* 111 */\n+ 198 0xe37f2410u, /* 112 */\n+ 199 0x011d1000u, /* 113 */\n+ 200 0x002cd76fu, /* 114 */\n+ 201 0xe086b93cu, /* 115 */\n+ 202 0xe2f768a0u, /* 116 */\n+ 203 0x0b22a000u, /* 117 */\n+ 204 0x01c06a5eu, /* 118 */\n+ 205 0xc5433c60u, /* 119 */\n+ 206 0xddaa1640u, /* 120 */\n+ 207 0x6f5a4000u, /* 121 */\n+ 208 0x118427b3u, /* 122 */\n+ 209 0xb4a05bc8u, /* 123 */\n+ 210 0xa8a4de84u, /* 124 */\n+ 211 0x59868000u, /* 125 */\n+ 212 0xaf298d05u, /* 126 */\n+ 213 0x0e4395d6u, /* 127 */\n+ 214 0x9670b12bu, /* 128 */\n+ 215 0x7f410000u, /* 129 */\n+ 216 0x00000006u, /* 130 */\n+ 217 0xd79f8232u, /* 131 */\n+ 218 0x8ea3da61u, /* 132 */\n+ 219 0xe066ebb2u, /* 133 */\n+ 220 0xf88a0000u, /* 134 */\n+ 221 0x00000044u, /* 135 */\n+ 222 0x6c3b15f9u, /* 136 */\n+ 223 0x926687d2u, /* 137 */\n+ 224 0xc40534fdu, /* 138 */\n+ 225 0xb5640000u, /* 139 */\n+ 226 0x000002acu, /* 140 */\n+ 227 0x3a4edbbfu, /* 141 */\n+ 228 0xb8014e3bu, /* 142 */\n+ 229 0xa83411e9u, /* 143 */\n+ 230 0x15e80000u, /* 144 */\n+ 231 0x00001abau, /* 145 */\n+ 232 0x4714957du, /* 146 */\n+ 233 0x300d0e54u, /* 147 */\n+ 234 0x9208b31au, /* 148 */\n+ 235 0xdb100000u, /* 149 */\n+ 236 0x00010b46u, /* 150 */\n+ 237 0xc6cdd6e3u, /* 151 */\n+ 238 0xe0828f4du, /* 152 */\n+ 239 0xb456ff0cu, /* 153 */\n+ 240 0x8ea00000u, /* 154 */\n+ 241 0x000a70c3u, /* 155 */\n+ 242 0xc40a64e6u, /* 156 */\n+ 243 0xc5199909u, /* 157 */\n+ 244 0x0b65f67du, /* 158 */\n+ 245 0x92400000u, /* 159 */\n+ 246 0x006867a5u, /* 160 */\n+ 247 0xa867f103u, /* 161 */\n+ 248 0xb2fffa5au, /* 162 */\n+ 249 0x71fba0e7u, /* 163 */\n+ 250 0xb6800000u, /* 164 */\n+ 251 0x04140c78u, /* 165 */\n+ 252 0x940f6a24u, /* 166 */\n+ 253 0xfdffc788u, /* 167 */\n+ 254 0x73d4490du, /* 168 */\n+ 255 0x21000000u, /* 169 */\n+ 256 0x28c87cb5u, /* 170 */\n+ 257 0xc89a2571u, /* 171 */\n+ 258 0xebfdcb54u, /* 172 */\n+ 259 0x864ada83u, /* 173 */\n+ 260 0x4a000000u, /* 174 */\n+ 261 0x00000001u, /* 175 */\n+ 262 0x97d4df19u, /* 176 */\n+ 263 0xd6057673u, /* 177 */\n+ 264 0x37e9f14du, /* 178 */\n+ 265 0x3eec8920u, /* 179 */\n+ 266 0xe4000000u, /* 180 */\n+ 267 0x0000000fu, /* 181 */\n+ 268 0xee50b702u, /* 182 */\n+ 269 0x5c36a080u, /* 183 */\n+ 270 0x2f236d04u, /* 184 */\n+ 271 0x753d5b48u, /* 185 */\n+ 272 0xe8000000u, /* 186 */\n+ 273 0x0000009fu, /* 187 */\n+ 274 0x4f272617u, /* 188 */\n+ 275 0x9a224501u, /* 189 */\n+ 276 0xd762422cu, /* 190 */\n+ 277 0x946590d9u, /* 191 */\n+ 278 0x10000000u, /* 192 */\n+ 279 0x00000639u, /* 193 */\n+ 280 0x17877cecu, /* 194 */\n+ 281 0x0556b212u, /* 195 */\n+ 282 0x69d695bdu, /* 196 */\n+ 283 0xcbf7a87au, /* 197 */\n+ 284 0xa0000000u, /* 198 */\n+ 285 0x00003e3au, /* 199 */\n+ 286 0xeb4ae138u, /* 200 */\n+ 287 0x3562f4b8u, /* 201 */\n+ 288 0x2261d969u, /* 202 */\n+ 289 0xf7ac94cau, /* 203 */\n+ 290 0x40000000u, /* 204 */\n+ 291 0x00026e4du, /* 205 */\n+ 292 0x30eccc32u, /* 206 */\n+ 293 0x15dd8f31u, /* 207 */\n+ 294 0x57d27e23u, /* 208 */\n+ 295 0xacbdcfe6u, /* 209 */\n+ 296 0x80000000u, /* 210 */\n+ 297 0x00184f03u, /* 211 */\n+ 298 0xe93ff9f4u, /* 212 */\n+ 299 0xdaa797edu, /* 213 */\n+ 300 0x6e38ed64u, /* 214 */\n+ 301 0xbf6a1f01u, /* 215 */\n+ 302 0x00f31627u, /* 216 */\n+ 303 0x1c7fc390u, /* 217 */\n+ 304 0x8a8bef46u, /* 218 */\n+ 305 0x4e3945efu, /* 219 */\n+ 306 0x7a25360au, /* 220 */\n+ 307 0x097edd87u, /* 221 */\n+ 308 0x1cfda3a5u, /* 222 */\n+ 309 0x697758bfu, /* 223 */\n+ 310 0x0e3cbb5au, /* 224 */\n+ 311 0xc5741c64u, /* 225 */\n+ 312 0x5ef4a747u, /* 226 */\n+ 313 0x21e86476u, /* 227 */\n+ 314 0x1ea97776u, /* 228 */\n+ 315 0x8e5f518bu, /* 229 */\n+ 316 0xb6891be8u, /* 230 */\n+ 317 0x00000003u, /* 231 */\n+ 318 0xb58e88c7u, /* 232 */\n+ 319 0x5313ec9du, /* 233 */\n+ 320 0x329eaaa1u, /* 234 */\n+ 321 0x8fb92f75u, /* 235 */\n+ 322 0x215b1710u, /* 236 */\n+ 323 0x00000025u, /* 237 */\n+ 324 0x179157c9u, /* 238 */\n+ 325 0x3ec73e23u, /* 239 */\n+ 326 0xfa32aa4fu, /* 240 */\n+ 327 0x9d3bda93u, /* 241 */\n+ 328 0x4d8ee6a0u, /* 242 */\n+ 329 0x00000172u, /* 243 */\n+ 330 0xebad6ddcu, /* 244 */\n+ 331 0x73c86d67u, /* 245 */\n+ 332 0xc5faa71cu, /* 246 */\n+ 333 0x245689c1u, /* 247 */\n+ 334 0x07950240u, /* 248 */\n+ 335 0x00000e7du, /* 249 */\n+ 336 0x34c64a9cu, /* 250 */\n+ 337 0x85d4460du, /* 251 */\n+ 338 0xbbca8719u, /* 252 */\n+ 339 0x6b61618au, /* 253 */\n+ 340 0x4bd21680u, /* 254 */\n+ 341 0x000090e4u, /* 255 */\n+ 342 0x0fbeea1du, /* 256 */\n+ 343 0x3a4abc89u, /* 257 */\n+ 344 0x55e946feu, /* 258 */\n+ 345 0x31cdcf66u, /* 259 */\n+ 346 0xf634e100u, /* 260 */\n+ 347 0x0005a8e8u, /* 261 */\n+ 348 0x9d752524u, /* 262 */\n+ 349 0x46eb5d5du, /* 263 */\n+ 350 0x5b1cc5edu, /* 264 */\n+ 351 0xf20a1a05u, /* 265 */\n+ 352 0x9e10ca00u, /* 266 */\n+ 353 0x00389916u, /* 267 */\n+ 354 0x2693736au, /* 268 */\n+ 355 0xc531a5a5u, /* 269 */\n+ 356 0x8f1fbb4bu, /* 270 */\n+ 357 0x74650438u, /* 271 */\n+ 358 0x2ca7e400u, /* 272 */\n+ 359 0x0235faddu, /* 273 */\n+ 360 0x81c2822bu, /* 274 */\n+ 361 0xb3f07877u, /* 275 */\n+ 362 0x973d50f2u, /* 276 */\n+ 363 0x8bf22a31u, /* 277 */\n+ 364 0xbe8ee800u, /* 278 */\n+ 365 0x161bcca7u, /* 279 */\n+ 366 0x119915b5u, /* 280 */\n+ 367 0x0764b4abu, /* 281 */\n+ 368 0xe8652979u, /* 282 */\n+ 369 0x7775a5f1u, /* 283 */\n+ 370 0x71951000u, /* 284 */\n+ 371 0xdd15fe86u, /* 285 */\n+ 372 0xaffad912u, /* 286 */\n+ 373 0x49ef0eb7u, /* 287 */\n+ 374 0x13f39ebeu, /* 288 */\n+ 375 0xaa987b6eu, /* 289 */\n+ 376 0x6fd2a000u, /* 290 */\n+ 377};\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00221_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00221_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/odbc/sqlwparams.h Source File\n+FreeTDS API: src/tds/tds_types.h Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,982 @@\n
    \n \n \n \n \n
    \n \n+
  • src
  • tds
  • \n
    \n \n
    \n-
    sqlwparams.h
    \n+
    tds_types.h
    \n
    \n
    \n-
    1#if 0
    \n-
    2# ODBC_FUNC(SQLTest, (P(SQLSMALLINT, x), PCHAR(y) WIDE))
    \n-
    3#endif
    \n+
    1/*
    \n+
    2 * This file produced from ./types.pl
    \n+
    3 */
    \n
    4
    \n-
    5#undef WIDE
    \n-
    6#undef P
    \n-
    7#undef PCHAR
    \n-
    8#undef PCHARIN
    \n-
    9#undef PCHAROUT
    \n-
    10
    \n-
    11#ifdef ENABLE_ODBC_WIDE
    \n-
    12# define WIDE , int wide
    \n-
    13# define PCHAR(a) ODBC_CHAR* a
    \n-
    14#else
    \n-
    15# define WIDE
    \n-
    16# define PCHAR(a) SQLCHAR* a
    \n-
    17#endif
    \n-
    18
    \n-
    19#define P(a,b) a b
    \n-
    20#define PCHARIN(n,t) PCHAR(sz ## n), P(t, cb ## n)
    \n-
    21#define PCHAROUT(n,t) PCHAR(sz ## n), P(t, cb ## n ## Max), P(t FAR*, pcb ## n)
    \n-
    22
    \n-
    23#define ODBC_FUNC(name, params) \\
    \n-
    24 static SQLRETURN _ ## name params
    \n-
    25
    \n+
    8int
    \n+
    \n+
    9tds_get_size_by_type(TDS_SERVER_TYPE servertype)
    \n+
    10{
    \n+
    11 switch (servertype) {
    \n+
    12 case SYBVOID:
    \n+
    13 return 0;
    \n+
    14 case SYBBIT:
    \n+
    15 case SYBBITN:
    \n+
    16 case SYBINT1:
    \n+
    17 case SYBSINT1:
    \n+
    18 case SYBUINT1:
    \n+
    19 return 1;
    \n+
    20 case SYBINT2:
    \n+
    21 case SYBUINT2:
    \n+
    22 return 2;
    \n+
    23 case SYBMSDATE:
    \n+
    24 return 3;
    \n+
    25 case SYBDATE:
    \n+
    26 case SYBDATEN:
    \n+
    27 case SYBDATETIME4:
    \n+
    28 case SYBINT4:
    \n+
    29 case SYBMONEY4:
    \n+
    30 case SYBREAL:
    \n+
    31 case SYBTIME:
    \n+
    32 case SYBTIMEN:
    \n+
    33 case SYBUINT4:
    \n+
    34 return 4;
    \n+
    35 case SYB5BIGDATETIME:
    \n+
    36 case SYB5BIGTIME:
    \n+
    37 case SYB5INT8:
    \n+
    38 case SYBDATETIME:
    \n+
    39 case SYBFLT8:
    \n+
    40 case SYBINT8:
    \n+
    41 case SYBINTERVAL:
    \n+
    42 case SYBMONEY:
    \n+
    43 case SYBUINT8:
    \n+
    44 return 8;
    \n+
    45 case SYBUNIQUE:
    \n+
    46 return 16;
    \n+
    47 default:
    \n+
    48 return 0;
    \n+
    49 }
    \n+
    50}
    \n+
    \n+
    51
    \n+
    56int
    \n+
    \n+
    57tds_get_varint_size(TDSCONNECTION * conn, int datatype)
    \n+
    58{
    \n+
    59 switch (datatype) {
    \n+
    60 case SYBBIT:
    \n+
    61 case SYBDATETIME:
    \n+
    62 case SYBDATETIME4:
    \n+
    63 case SYBFLT8:
    \n+
    64 case SYBINT1:
    \n+
    65 case SYBINT2:
    \n+
    66 case SYBINT4:
    \n+
    67 case SYBMONEY:
    \n+
    68 case SYBMONEY4:
    \n+
    69 case SYBREAL:
    \n+
    70 case SYBVOID:
    \n+
    71 return 0;
    \n+
    72 case SYBIMAGE:
    \n+
    73 case SYBTEXT:
    \n+
    74 return 4;
    \n+
    75 }
    \n+
    76
    \n+
    77 if (IS_TDS7_PLUS(conn)) {
    \n+
    78 switch (datatype) {
    \n+
    79 case SYBINT8:
    \n+
    80 return 0;
    \n+
    81 case XSYBBINARY:
    \n+
    82 case XSYBCHAR:
    \n+
    83 case XSYBNCHAR:
    \n+
    84 case XSYBNVARCHAR:
    \n+
    85 case XSYBVARBINARY:
    \n+
    86 case XSYBVARCHAR:
    \n+
    87 return 2;
    \n+
    88 case SYBNTEXT:
    \n+
    89 case SYBVARIANT:
    \n+
    90 return 4;
    \n+
    91 case SYBMSUDT:
    \n+
    92 case SYBMSXML:
    \n+
    93 return 8;
    \n+
    94 }
    \n+
    95 } else if (IS_TDS50(conn)) {
    \n+
    96 switch (datatype) {
    \n+
    97 case SYB5INT8:
    \n+
    98 case SYBDATE:
    \n+
    99 case SYBINTERVAL:
    \n+
    100 case SYBSINT1:
    \n+
    101 case SYBTIME:
    \n+
    102 case SYBUINT1:
    \n+
    103 case SYBUINT2:
    \n+
    104 case SYBUINT4:
    \n+
    105 case SYBUINT8:
    \n+
    106 return 0;
    \n+
    107 case SYBUNITEXT:
    \n+
    108 case SYBXML:
    \n+
    109 return 4;
    \n+
    110 case SYBLONGBINARY:
    \n+
    111 case SYBLONGCHAR:
    \n+
    112 return 5;
    \n+
    113 }
    \n+
    114 }
    \n+
    115 return 1;
    \n+
    116}
    \n+
    \n+
    117
    \n+
    124TDS_SERVER_TYPE
    \n+
    \n+
    125tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)
    \n+
    126{
    \n+
    127 switch (srctype) {
    \n+
    128 case SYBBITN:
    \n+
    129 return SYBBIT;
    \n+
    130 case SYBDATEN:
    \n+
    131 return SYBDATE;
    \n+
    132 case SYBDATETIMN:
    \n+
    133 switch (colsize) {
    \n+
    134 case 8:
    \n+
    135 return SYBDATETIME;
    \n+
    136 case 4:
    \n+
    137 return SYBDATETIME4;
    \n+
    138 }
    \n+
    139 break;
    \n+
    140 case SYBFLTN:
    \n+
    141 switch (colsize) {
    \n+
    142 case 8:
    \n+
    143 return SYBFLT8;
    \n+
    144 case 4:
    \n+
    145 return SYBREAL;
    \n+
    146 }
    \n+
    147 break;
    \n+
    148 case SYBINTN:
    \n+
    149 switch (colsize) {
    \n+
    150 case 8:
    \n+
    151 return SYBINT8;
    \n+
    152 case 4:
    \n+
    153 return SYBINT4;
    \n+
    154 case 2:
    \n+
    155 return SYBINT2;
    \n+
    156 case 1:
    \n+
    157 return SYBINT1;
    \n+
    158 }
    \n+
    159 break;
    \n+
    160 case SYBMONEYN:
    \n+
    161 switch (colsize) {
    \n+
    162 case 8:
    \n+
    163 return SYBMONEY;
    \n+
    164 case 4:
    \n+
    165 return SYBMONEY4;
    \n+
    166 }
    \n+
    167 break;
    \n+
    168 case SYBTIMEN:
    \n+
    169 return SYBTIME;
    \n+
    170 case SYBUINTN:
    \n+
    171 switch (colsize) {
    \n+
    172 case 8:
    \n+
    173 return SYBUINT8;
    \n+
    174 case 4:
    \n+
    175 return SYBUINT4;
    \n+
    176 case 2:
    \n+
    177 return SYBUINT2;
    \n+
    178 case 1:
    \n+
    179 return SYBUINT1;
    \n+
    180 }
    \n+
    181 break;
    \n+
    182 case SYB5INT8:
    \n+
    183 return SYBINT8;
    \n+
    184 default:
    \n+
    185 break;
    \n+
    186 }
    \n+
    187 return srctype;
    \n+
    188}
    \n+
    \n+
    189
    \n+
    190const uint16_t tds_type_flags_ms[256] = {
    \n+
    191 /* 0 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    192 /* 1 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    193 /* 2 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    194 /* 3 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    195 /* 4 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    196 /* 5 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    197 /* 6 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    198 /* 7 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    199 /* 8 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    200 /* 9 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    201 /* 10 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    202 /* 11 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    203 /* 12 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    204 /* 13 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    205 /* 14 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    206 /* 15 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    207 /* 16 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    208 /* 17 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    209 /* 18 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    210 /* 19 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    211 /* 20 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    212 /* 21 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    213 /* 22 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    214 /* 23 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    215 /* 24 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    216 /* 25 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    217 /* 26 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    218 /* 27 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    219 /* 28 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    220 /* 29 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    221 /* 30 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    222 /* 31 SYBVOID */ TDS_TYPEFLAG_FIXED,
    \n+
    223 /* 32 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    224 /* 33 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    225 /* 34 SYBIMAGE */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    226 /* 35 SYBTEXT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII,
    \n+
    227 /* 36 SYBUNIQUE */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    228 /* 37 SYBVARBINARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    229 /* 38 SYBINTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    230 /* 39 SYBVARCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    231 /* 40 SYBMSDATE */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    232 /* 41 SYBMSTIME */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    233 /* 42 SYBMSDATETIME2 */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    234 /* 43 SYBMSDATETIMEOFFSET */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    235 /* 44 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    236 /* 45 SYBBINARY */ TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    237 /* 46 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    238 /* 47 SYBCHAR */ TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    239 /* 48 SYBINT1 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    240 /* 49 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,
    \n+
    241 /* 50 SYBBIT */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    242 /* 51 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,
    \n+
    243 /* 52 SYBINT2 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    244 /* 53 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    245 /* 54 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    246 /* 55 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    247 /* 56 SYBINT4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    248 /* 57 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    249 /* 58 SYBDATETIME4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    250 /* 59 SYBREAL */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    251 /* 60 SYBMONEY */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    252 /* 61 SYBDATETIME */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    253 /* 62 SYBFLT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    254 /* 63 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    255 /* 64 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    256 /* 65 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    257 /* 66 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    258 /* 67 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    259 /* 68 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE,
    \n+
    260 /* 69 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    261 /* 70 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    262 /* 71 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    263 /* 72 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    264 /* 73 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    265 /* 74 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    266 /* 75 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    267 /* 76 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    268 /* 77 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    269 /* 78 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    270 /* 79 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    271 /* 80 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    272 /* 81 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    273 /* 82 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    274 /* 83 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    275 /* 84 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    276 /* 85 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    277 /* 86 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    278 /* 87 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    279 /* 88 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    280 /* 89 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    281 /* 90 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    282 /* 91 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    283 /* 92 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    284 /* 93 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    285 /* 94 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    286 /* 95 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    287 /* 96 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    288 /* 97 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    289 /* 98 SYBVARIANT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    290 /* 99 SYBNTEXT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE,
    \n+
    291 /* 100 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    292 /* 101 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    293 /* 102 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    294 /* 103 SYBNVARCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,
    \n+
    295 /* 104 SYBBITN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    296 /* 105 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    297 /* 106 SYBDECIMAL */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,
    \n+
    298 /* 107 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    299 /* 108 SYBNUMERIC */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,
    \n+
    300 /* 109 SYBFLTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    301 /* 110 SYBMONEYN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    302 /* 111 SYBDATETIMN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    303 /* 112 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    304 /* 113 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    305 /* 114 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    306 /* 115 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    307 /* 116 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    308 /* 117 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    309 /* 118 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    310 /* 119 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    311 /* 120 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    312 /* 121 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    313 /* 122 SYBMONEY4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    314 /* 123 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    315 /* 124 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    316 /* 125 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    317 /* 126 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    318 /* 127 SYBINT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    319 /* 128 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    320 /* 129 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    321 /* 130 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    322 /* 131 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    323 /* 132 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    324 /* 133 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    325 /* 134 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    326 /* 135 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    327 /* 136 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    328 /* 137 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    329 /* 138 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    330 /* 139 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    331 /* 140 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    332 /* 141 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    333 /* 142 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    334 /* 143 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    335 /* 144 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    336 /* 145 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    337 /* 146 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    338 /* 147 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    339 /* 148 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    340 /* 149 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    341 /* 150 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    342 /* 151 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    343 /* 152 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    344 /* 153 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    345 /* 154 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    346 /* 155 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    347 /* 156 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    348 /* 157 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    349 /* 158 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    350 /* 159 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    351 /* 160 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    352 /* 161 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    353 /* 162 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    354 /* 163 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    355 /* 164 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    356 /* 165 XSYBVARBINARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    357 /* 166 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    358 /* 167 XSYBVARCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    359 /* 168 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    360 /* 169 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    361 /* 170 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    362 /* 171 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    363 /* 172 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    364 /* 173 XSYBBINARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    365 /* 174 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    366 /* 175 XSYBCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    367 /* 176 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    368 /* 177 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    369 /* 178 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    370 /* 179 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    371 /* 180 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    372 /* 181 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    373 /* 182 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    374 /* 183 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    375 /* 184 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    376 /* 185 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    377 /* 186 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    378 /* 187 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    379 /* 188 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    380 /* 189 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    381 /* 190 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    382 /* 191 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    383 /* 192 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    384 /* 193 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    385 /* 194 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    386 /* 195 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    387 /* 196 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    388 /* 197 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    389 /* 198 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    390 /* 199 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    391 /* 200 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    392 /* 201 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    393 /* 202 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    394 /* 203 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    395 /* 204 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    396 /* 205 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    397 /* 206 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    398 /* 207 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    399 /* 208 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    400 /* 209 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    401 /* 210 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    402 /* 211 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    403 /* 212 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    404 /* 213 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    405 /* 214 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    406 /* 215 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    407 /* 216 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    408 /* 217 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    409 /* 218 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    410 /* 219 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    411 /* 220 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    412 /* 221 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    413 /* 222 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    414 /* 223 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    415 /* 224 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    416 /* 225 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    417 /* 226 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    418 /* 227 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    419 /* 228 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    420 /* 229 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    421 /* 230 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    422 /* 231 XSYBNVARCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,
    \n+
    423 /* 232 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    424 /* 233 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    425 /* 234 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    426 /* 235 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    427 /* 236 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    428 /* 237 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    429 /* 238 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    430 /* 239 XSYBNCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,
    \n+
    431 /* 240 SYBMSUDT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    432 /* 241 SYBMSXML */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    433 /* 242 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    434 /* 243 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    435 /* 244 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    436 /* 245 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    437 /* 246 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    438 /* 247 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    439 /* 248 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    440 /* 249 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    441 /* 250 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    442 /* 251 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    443 /* 252 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    444 /* 253 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    445 /* 254 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    446 /* 255 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    447};
    \n+
    448
    \n+
    449#if 0
    \n+
    450const uint16_t tds_type_flags_syb[256] = {
    \n+
    451 /* 0 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    452 /* 1 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    453 /* 2 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    454 /* 3 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    455 /* 4 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    456 /* 5 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    457 /* 6 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    458 /* 7 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    459 /* 8 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    460 /* 9 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    461 /* 10 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    462 /* 11 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    463 /* 12 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    464 /* 13 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    465 /* 14 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    466 /* 15 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    467 /* 16 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    468 /* 17 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    469 /* 18 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    470 /* 19 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    471 /* 20 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    472 /* 21 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    473 /* 22 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    474 /* 23 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    475 /* 24 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    476 /* 25 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    477 /* 26 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    478 /* 27 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    479 /* 28 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    480 /* 29 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    481 /* 30 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    482 /* 31 SYBVOID */ TDS_TYPEFLAG_FIXED,
    \n+
    483 /* 32 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    484 /* 33 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    485 /* 34 SYBIMAGE */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    486 /* 35 SYBTEXT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII,
    \n+
    487 /* 36 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_NULLABLE,
    \n+
    488 /* 37 SYBVARBINARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    489 /* 38 SYBINTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    490 /* 39 SYBVARCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    491 /* 40 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    492 /* 41 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    493 /* 42 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    494 /* 43 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    495 /* 44 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    496 /* 45 SYBBINARY */ TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,
    \n+
    497 /* 46 SYBINTERVAL */ TDS_TYPEFLAG_FIXED,
    \n+
    498 /* 47 SYBCHAR */ TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,
    \n+
    499 /* 48 SYBINT1 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    500 /* 49 SYBDATE */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,
    \n+
    501 /* 50 SYBBIT */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    502 /* 51 SYBTIME */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,
    \n+
    503 /* 52 SYBINT2 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    504 /* 53 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    505 /* 54 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    506 /* 55 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    507 /* 56 SYBINT4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    508 /* 57 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    509 /* 58 SYBDATETIME4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    510 /* 59 SYBREAL */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    511 /* 60 SYBMONEY */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    512 /* 61 SYBDATETIME */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    513 /* 62 SYBFLT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    514 /* 63 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    515 /* 64 SYBUINT1 */ TDS_TYPEFLAG_FIXED,
    \n+
    516 /* 65 SYBUINT2 */ TDS_TYPEFLAG_FIXED,
    \n+
    517 /* 66 SYBUINT4 */ TDS_TYPEFLAG_FIXED,
    \n+
    518 /* 67 SYBUINT8 */ TDS_TYPEFLAG_FIXED,
    \n+
    519 /* 68 SYBUINTN */ TDS_TYPEFLAG_NULLABLE,
    \n+
    520 /* 69 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    521 /* 70 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    522 /* 71 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    523 /* 72 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    524 /* 73 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    525 /* 74 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    526 /* 75 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    527 /* 76 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    528 /* 77 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    529 /* 78 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    530 /* 79 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    531 /* 80 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    532 /* 81 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    533 /* 82 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    534 /* 83 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    535 /* 84 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    536 /* 85 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    537 /* 86 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    538 /* 87 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    539 /* 88 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    540 /* 89 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    541 /* 90 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    542 /* 91 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    543 /* 92 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    544 /* 93 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    545 /* 94 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    546 /* 95 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    547 /* 96 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    548 /* 97 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    549 /* 98 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    550 /* 99 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    551 /* 100 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    552 /* 101 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    553 /* 102 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    554 /* 103 SYBSENSITIVITY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,
    \n+
    555 /* 104 SYBBOUNDARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,
    \n+
    556 /* 105 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    557 /* 106 SYBDECIMAL */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,
    \n+
    558 /* 107 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    559 /* 108 SYBNUMERIC */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,
    \n+
    560 /* 109 SYBFLTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    561 /* 110 SYBMONEYN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,
    \n+
    562 /* 111 SYBDATETIMN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,
    \n+
    563 /* 112 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    564 /* 113 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    565 /* 114 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    566 /* 115 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    567 /* 116 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    568 /* 117 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    569 /* 118 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    570 /* 119 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    571 /* 120 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    572 /* 121 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    573 /* 122 SYBMONEY4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,
    \n+
    574 /* 123 SYBDATEN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    575 /* 124 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    576 /* 125 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    577 /* 126 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    578 /* 127 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,
    \n+
    579 /* 128 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    580 /* 129 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    581 /* 130 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    582 /* 131 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    583 /* 132 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    584 /* 133 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    585 /* 134 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    586 /* 135 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    587 /* 136 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    588 /* 137 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    589 /* 138 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    590 /* 139 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    591 /* 140 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    592 /* 141 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    593 /* 142 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    594 /* 143 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    595 /* 144 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    596 /* 145 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    597 /* 146 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    598 /* 147 SYBTIMEN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    599 /* 148 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    600 /* 149 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    601 /* 150 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    602 /* 151 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    603 /* 152 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    604 /* 153 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    605 /* 154 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    606 /* 155 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    607 /* 156 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    608 /* 157 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    609 /* 158 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    610 /* 159 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    611 /* 160 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    612 /* 161 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    613 /* 162 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    614 /* 163 SYBXML */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    615 /* 164 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    616 /* 165 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    617 /* 166 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    618 /* 167 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    619 /* 168 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    620 /* 169 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    621 /* 170 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    622 /* 171 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    623 /* 172 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    624 /* 173 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    625 /* 174 SYBUNITEXT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    626 /* 175 SYBLONGCHAR */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,
    \n+
    627 /* 176 SYBSINT1 */ TDS_TYPEFLAG_FIXED,
    \n+
    628 /* 177 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    629 /* 178 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    630 /* 179 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    631 /* 180 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    632 /* 181 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    633 /* 182 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    634 /* 183 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    635 /* 184 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    636 /* 185 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    637 /* 186 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    638 /* 187 SYB5BIGDATETIME */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    639 /* 188 SYB5BIGTIME */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,
    \n+
    640 /* 189 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    641 /* 190 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    642 /* 191 SYB5INT8 */ TDS_TYPEFLAG_FIXED,
    \n+
    643 /* 192 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    644 /* 193 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    645 /* 194 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    646 /* 195 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    647 /* 196 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    648 /* 197 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    649 /* 198 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    650 /* 199 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    651 /* 200 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    652 /* 201 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    653 /* 202 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    654 /* 203 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    655 /* 204 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    656 /* 205 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    657 /* 206 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    658 /* 207 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    659 /* 208 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    660 /* 209 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    661 /* 210 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    662 /* 211 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    663 /* 212 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    664 /* 213 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    665 /* 214 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    666 /* 215 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    667 /* 216 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    668 /* 217 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    669 /* 218 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    670 /* 219 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    671 /* 220 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    672 /* 221 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    673 /* 222 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    674 /* 223 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    675 /* 224 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    676 /* 225 SYBLONGBINARY */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,
    \n+
    677 /* 226 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    678 /* 227 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    679 /* 228 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    680 /* 229 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    681 /* 230 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    682 /* 231 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    683 /* 232 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    684 /* 233 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    685 /* 234 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    686 /* 235 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    687 /* 236 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    688 /* 237 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    689 /* 238 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    690 /* 239 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    691 /* 240 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,
    \n+
    692 /* 241 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,
    \n+
    693 /* 242 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    694 /* 243 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    695 /* 244 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    696 /* 245 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    697 /* 246 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    698 /* 247 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    699 /* 248 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    700 /* 249 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    701 /* 250 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    702 /* 251 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    703 /* 252 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    704 /* 253 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    705 /* 254 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    706 /* 255 empty */ TDS_TYPEFLAG_INVALID,
    \n+
    707};
    \n+
    708
    \n+
    709const char *const tds_type_names[256] = {
    \n+
    710 /* 0 */ "",
    \n+
    711 /* 1 */ "",
    \n+
    712 /* 2 */ "",
    \n+
    713 /* 3 */ "",
    \n+
    714 /* 4 */ "",
    \n+
    715 /* 5 */ "",
    \n+
    716 /* 6 */ "",
    \n+
    717 /* 7 */ "",
    \n+
    718 /* 8 */ "",
    \n+
    719 /* 9 */ "",
    \n+
    720 /* 10 */ "",
    \n+
    721 /* 11 */ "",
    \n+
    722 /* 12 */ "",
    \n+
    723 /* 13 */ "",
    \n+
    724 /* 14 */ "",
    \n+
    725 /* 15 */ "",
    \n+
    726 /* 16 */ "",
    \n+
    727 /* 17 */ "",
    \n+
    728 /* 18 */ "",
    \n+
    729 /* 19 */ "",
    \n+
    730 /* 20 */ "",
    \n+
    731 /* 21 */ "",
    \n+
    732 /* 22 */ "",
    \n+
    733 /* 23 */ "",
    \n+
    734 /* 24 */ "",
    \n+
    735 /* 25 */ "",
    \n+
    736 /* 26 */ "",
    \n+
    737 /* 27 */ "",
    \n+
    738 /* 28 */ "",
    \n+
    739 /* 29 */ "",
    \n+
    740 /* 30 */ "",
    \n+
    741 /* 31 */ "SYBVOID",
    \n+
    742 /* 32 */ "",
    \n+
    743 /* 33 */ "",
    \n+
    744 /* 34 */ "SYBIMAGE",
    \n+
    745 /* 35 */ "SYBTEXT",
    \n+
    746 /* 36 */ "SYBUNIQUE",
    \n+
    747 /* 37 */ "SYBVARBINARY",
    \n+
    748 /* 38 */ "SYBINTN",
    \n+
    749 /* 39 */ "SYBVARCHAR",
    \n+
    750 /* 40 */ "SYBMSDATE",
    \n+
    751 /* 41 */ "SYBMSTIME",
    \n+
    752 /* 42 */ "SYBMSDATETIME2",
    \n+
    753 /* 43 */ "SYBMSDATETIMEOFFSET",
    \n+
    754 /* 44 */ "",
    \n+
    755 /* 45 */ "SYBBINARY",
    \n+
    756 /* 46 */ "SYBINTERVAL",
    \n+
    757 /* 47 */ "SYBCHAR",
    \n+
    758 /* 48 */ "SYBINT1",
    \n+
    759 /* 49 */ "SYBDATE",
    \n+
    760 /* 50 */ "SYBBIT",
    \n+
    761 /* 51 */ "SYBTIME",
    \n+
    762 /* 52 */ "SYBINT2",
    \n+
    763 /* 53 */ "",
    \n+
    764 /* 54 */ "",
    \n+
    765 /* 55 */ "",
    \n+
    766 /* 56 */ "SYBINT4",
    \n+
    767 /* 57 */ "",
    \n+
    768 /* 58 */ "SYBDATETIME4",
    \n+
    769 /* 59 */ "SYBREAL",
    \n+
    770 /* 60 */ "SYBMONEY",
    \n+
    771 /* 61 */ "SYBDATETIME",
    \n+
    772 /* 62 */ "SYBFLT8",
    \n+
    773 /* 63 */ "",
    \n+
    774 /* 64 */ "SYBUINT1",
    \n+
    775 /* 65 */ "SYBUINT2",
    \n+
    776 /* 66 */ "SYBUINT4",
    \n+
    777 /* 67 */ "SYBUINT8",
    \n+
    778 /* 68 */ "SYBUINTN",
    \n+
    779 /* 69 */ "",
    \n+
    780 /* 70 */ "",
    \n+
    781 /* 71 */ "",
    \n+
    782 /* 72 */ "",
    \n+
    783 /* 73 */ "",
    \n+
    784 /* 74 */ "",
    \n+
    785 /* 75 */ "",
    \n+
    786 /* 76 */ "",
    \n+
    787 /* 77 */ "",
    \n+
    788 /* 78 */ "",
    \n+
    789 /* 79 */ "",
    \n+
    790 /* 80 */ "",
    \n+
    791 /* 81 */ "",
    \n+
    792 /* 82 */ "",
    \n+
    793 /* 83 */ "",
    \n+
    794 /* 84 */ "",
    \n+
    795 /* 85 */ "",
    \n+
    796 /* 86 */ "",
    \n+
    797 /* 87 */ "",
    \n+
    798 /* 88 */ "",
    \n+
    799 /* 89 */ "",
    \n+
    800 /* 90 */ "",
    \n+
    801 /* 91 */ "",
    \n+
    802 /* 92 */ "",
    \n+
    803 /* 93 */ "",
    \n+
    804 /* 94 */ "",
    \n+
    805 /* 95 */ "",
    \n+
    806 /* 96 */ "",
    \n+
    807 /* 97 */ "",
    \n+
    808 /* 98 */ "SYBVARIANT",
    \n+
    809 /* 99 */ "SYBNTEXT",
    \n+
    810 /* 100 */ "",
    \n+
    811 /* 101 */ "",
    \n+
    812 /* 102 */ "",
    \n+
    813 /* 103 */ "SYBNVARCHAR or SYBSENSITIVITY",
    \n+
    814 /* 104 */ "SYBBITN or SYBBOUNDARY",
    \n+
    815 /* 105 */ "",
    \n+
    816 /* 106 */ "SYBDECIMAL",
    \n+
    817 /* 107 */ "",
    \n+
    818 /* 108 */ "SYBNUMERIC",
    \n+
    819 /* 109 */ "SYBFLTN",
    \n+
    820 /* 110 */ "SYBMONEYN",
    \n+
    821 /* 111 */ "SYBDATETIMN",
    \n+
    822 /* 112 */ "",
    \n+
    823 /* 113 */ "",
    \n+
    824 /* 114 */ "",
    \n+
    825 /* 115 */ "",
    \n+
    826 /* 116 */ "",
    \n+
    827 /* 117 */ "",
    \n+
    828 /* 118 */ "",
    \n+
    829 /* 119 */ "",
    \n+
    830 /* 120 */ "",
    \n+
    831 /* 121 */ "",
    \n+
    832 /* 122 */ "SYBMONEY4",
    \n+
    833 /* 123 */ "SYBDATEN",
    \n+
    834 /* 124 */ "",
    \n+
    835 /* 125 */ "",
    \n+
    836 /* 126 */ "",
    \n+
    837 /* 127 */ "SYBINT8",
    \n+
    838 /* 128 */ "",
    \n+
    839 /* 129 */ "",
    \n+
    840 /* 130 */ "",
    \n+
    841 /* 131 */ "",
    \n+
    842 /* 132 */ "",
    \n+
    843 /* 133 */ "",
    \n+
    844 /* 134 */ "",
    \n+
    845 /* 135 */ "",
    \n+
    846 /* 136 */ "",
    \n+
    847 /* 137 */ "",
    \n+
    848 /* 138 */ "",
    \n+
    849 /* 139 */ "",
    \n+
    850 /* 140 */ "",
    \n+
    851 /* 141 */ "",
    \n+
    852 /* 142 */ "",
    \n+
    853 /* 143 */ "",
    \n+
    854 /* 144 */ "",
    \n+
    855 /* 145 */ "",
    \n+
    856 /* 146 */ "",
    \n+
    857 /* 147 */ "SYBTIMEN",
    \n+
    858 /* 148 */ "",
    \n+
    859 /* 149 */ "",
    \n+
    860 /* 150 */ "",
    \n+
    861 /* 151 */ "",
    \n+
    862 /* 152 */ "",
    \n+
    863 /* 153 */ "",
    \n+
    864 /* 154 */ "",
    \n+
    865 /* 155 */ "",
    \n+
    866 /* 156 */ "",
    \n+
    867 /* 157 */ "",
    \n+
    868 /* 158 */ "",
    \n+
    869 /* 159 */ "",
    \n+
    870 /* 160 */ "",
    \n+
    871 /* 161 */ "",
    \n+
    872 /* 162 */ "",
    \n+
    873 /* 163 */ "SYBXML",
    \n+
    874 /* 164 */ "",
    \n+
    875 /* 165 */ "XSYBVARBINARY",
    \n+
    876 /* 166 */ "",
    \n+
    877 /* 167 */ "XSYBVARCHAR",
    \n+
    878 /* 168 */ "",
    \n+
    879 /* 169 */ "",
    \n+
    880 /* 170 */ "",
    \n+
    881 /* 171 */ "",
    \n+
    882 /* 172 */ "",
    \n+
    883 /* 173 */ "XSYBBINARY",
    \n+
    884 /* 174 */ "SYBUNITEXT",
    \n+
    885 /* 175 */ "XSYBCHAR or SYBLONGCHAR",
    \n+
    886 /* 176 */ "SYBSINT1",
    \n+
    887 /* 177 */ "",
    \n+
    888 /* 178 */ "",
    \n+
    889 /* 179 */ "",
    \n+
    890 /* 180 */ "",
    \n+
    891 /* 181 */ "",
    \n+
    892 /* 182 */ "",
    \n+
    893 /* 183 */ "",
    \n+
    894 /* 184 */ "",
    \n+
    895 /* 185 */ "",
    \n+
    896 /* 186 */ "",
    \n+
    897 /* 187 */ "SYB5BIGDATETIME",
    \n+
    898 /* 188 */ "SYB5BIGTIME",
    \n+
    899 /* 189 */ "",
    \n+
    900 /* 190 */ "",
    \n+
    901 /* 191 */ "SYB5INT8",
    \n+
    902 /* 192 */ "",
    \n+
    903 /* 193 */ "",
    \n+
    904 /* 194 */ "",
    \n+
    905 /* 195 */ "",
    \n+
    906 /* 196 */ "",
    \n+
    907 /* 197 */ "",
    \n+
    908 /* 198 */ "",
    \n+
    909 /* 199 */ "",
    \n+
    910 /* 200 */ "",
    \n+
    911 /* 201 */ "",
    \n+
    912 /* 202 */ "",
    \n+
    913 /* 203 */ "",
    \n+
    914 /* 204 */ "",
    \n+
    915 /* 205 */ "",
    \n+
    916 /* 206 */ "",
    \n+
    917 /* 207 */ "",
    \n+
    918 /* 208 */ "",
    \n+
    919 /* 209 */ "",
    \n+
    920 /* 210 */ "",
    \n+
    921 /* 211 */ "",
    \n+
    922 /* 212 */ "",
    \n+
    923 /* 213 */ "",
    \n+
    924 /* 214 */ "",
    \n+
    925 /* 215 */ "",
    \n+
    926 /* 216 */ "",
    \n+
    927 /* 217 */ "",
    \n+
    928 /* 218 */ "",
    \n+
    929 /* 219 */ "",
    \n+
    930 /* 220 */ "",
    \n+
    931 /* 221 */ "",
    \n+
    932 /* 222 */ "",
    \n+
    933 /* 223 */ "",
    \n+
    934 /* 224 */ "",
    \n+
    935 /* 225 */ "SYBLONGBINARY",
    \n+
    936 /* 226 */ "",
    \n+
    937 /* 227 */ "",
    \n+
    938 /* 228 */ "",
    \n+
    939 /* 229 */ "",
    \n+
    940 /* 230 */ "",
    \n+
    941 /* 231 */ "XSYBNVARCHAR",
    \n+
    942 /* 232 */ "",
    \n+
    943 /* 233 */ "",
    \n+
    944 /* 234 */ "",
    \n+
    945 /* 235 */ "",
    \n+
    946 /* 236 */ "",
    \n+
    947 /* 237 */ "",
    \n+
    948 /* 238 */ "",
    \n+
    949 /* 239 */ "XSYBNCHAR",
    \n+
    950 /* 240 */ "SYBMSUDT",
    \n+
    951 /* 241 */ "SYBMSXML",
    \n+
    952 /* 242 */ "",
    \n+
    953 /* 243 */ "",
    \n+
    954 /* 244 */ "",
    \n+
    955 /* 245 */ "",
    \n+
    956 /* 246 */ "",
    \n+
    957 /* 247 */ "",
    \n+
    958 /* 248 */ "",
    \n+
    959 /* 249 */ "",
    \n+
    960 /* 250 */ "",
    \n+
    961 /* 251 */ "",
    \n+
    962 /* 252 */ "",
    \n+
    963 /* 253 */ "",
    \n+
    964 /* 254 */ "",
    \n+
    965 /* 255 */ "",
    \n+
    966};
    \n+
    967#endif
    \n+
    Definition tds.h:1091
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,38 +6,1028 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * odbc\n-sqlwparams.h\n- 1#if 0\n- 2# ODBC_FUNC(SQLTest, (P(SQLSMALLINT, x), PCHAR(y) WIDE))\n- 3#endif\n+ * tds\n+tds_types.h\n+ 1/*\n+ 2 * This file produced from ./types.pl\n+ 3 */\n 4\n- 5#undef WIDE\n- 6#undef P\n- 7#undef PCHAR\n- 8#undef PCHARIN\n- 9#undef PCHAROUT\n- 10\n- 11#ifdef ENABLE_ODBC_WIDE\n- 12# define WIDE , int wide\n- 13# define PCHAR(a) ODBC_CHAR* a\n- 14#else\n- 15# define WIDE\n- 16# define PCHAR(a) SQLCHAR* a\n- 17#endif\n- 18\n- 19#define P(a,b) a b\n- 20#define PCHARIN(n,t) PCHAR(sz ## n), P(t, cb ## n)\n- 21#define PCHAROUT(n,t) PCHAR(sz ## n), P(t, cb ## n ## Max), P(t FAR*, pcb ##\n-n)\n- 22\n- 23#define ODBC_FUNC(name, params) \\\n- 24 static SQLRETURN _ ## name params\n- 25\n+ 8int\n+9tds_get_size_by_type(TDS_SERVER_TYPE servertype)\n+ 10{\n+ 11 switch (servertype) {\n+ 12 case SYBVOID:\n+ 13 return 0;\n+ 14 case SYBBIT:\n+ 15 case SYBBITN:\n+ 16 case SYBINT1:\n+ 17 case SYBSINT1:\n+ 18 case SYBUINT1:\n+ 19 return 1;\n+ 20 case SYBINT2:\n+ 21 case SYBUINT2:\n+ 22 return 2;\n+ 23 case SYBMSDATE:\n+ 24 return 3;\n+ 25 case SYBDATE:\n+ 26 case SYBDATEN:\n+ 27 case SYBDATETIME4:\n+ 28 case SYBINT4:\n+ 29 case SYBMONEY4:\n+ 30 case SYBREAL:\n+ 31 case SYBTIME:\n+ 32 case SYBTIMEN:\n+ 33 case SYBUINT4:\n+ 34 return 4;\n+ 35 case SYB5BIGDATETIME:\n+ 36 case SYB5BIGTIME:\n+ 37 case SYB5INT8:\n+ 38 case SYBDATETIME:\n+ 39 case SYBFLT8:\n+ 40 case SYBINT8:\n+ 41 case SYBINTERVAL:\n+ 42 case SYBMONEY:\n+ 43 case SYBUINT8:\n+ 44 return 8;\n+ 45 case SYBUNIQUE:\n+ 46 return 16;\n+ 47 default:\n+ 48 return 0;\n+ 49 }\n+ 50}\n+ 51\n+ 56int\n+57tds_get_varint_size(TDSCONNECTION * conn, int datatype)\n+ 58{\n+ 59 switch (datatype) {\n+ 60 case SYBBIT:\n+ 61 case SYBDATETIME:\n+ 62 case SYBDATETIME4:\n+ 63 case SYBFLT8:\n+ 64 case SYBINT1:\n+ 65 case SYBINT2:\n+ 66 case SYBINT4:\n+ 67 case SYBMONEY:\n+ 68 case SYBMONEY4:\n+ 69 case SYBREAL:\n+ 70 case SYBVOID:\n+ 71 return 0;\n+ 72 case SYBIMAGE:\n+ 73 case SYBTEXT:\n+ 74 return 4;\n+ 75 }\n+ 76\n+ 77 if (IS_TDS7_PLUS(conn)) {\n+ 78 switch (datatype) {\n+ 79 case SYBINT8:\n+ 80 return 0;\n+ 81 case XSYBBINARY:\n+ 82 case XSYBCHAR:\n+ 83 case XSYBNCHAR:\n+ 84 case XSYBNVARCHAR:\n+ 85 case XSYBVARBINARY:\n+ 86 case XSYBVARCHAR:\n+ 87 return 2;\n+ 88 case SYBNTEXT:\n+ 89 case SYBVARIANT:\n+ 90 return 4;\n+ 91 case SYBMSUDT:\n+ 92 case SYBMSXML:\n+ 93 return 8;\n+ 94 }\n+ 95 } else if (IS_TDS50(conn)) {\n+ 96 switch (datatype) {\n+ 97 case SYB5INT8:\n+ 98 case SYBDATE:\n+ 99 case SYBINTERVAL:\n+ 100 case SYBSINT1:\n+ 101 case SYBTIME:\n+ 102 case SYBUINT1:\n+ 103 case SYBUINT2:\n+ 104 case SYBUINT4:\n+ 105 case SYBUINT8:\n+ 106 return 0;\n+ 107 case SYBUNITEXT:\n+ 108 case SYBXML:\n+ 109 return 4;\n+ 110 case SYBLONGBINARY:\n+ 111 case SYBLONGCHAR:\n+ 112 return 5;\n+ 113 }\n+ 114 }\n+ 115 return 1;\n+ 116}\n+ 117\n+ 124TDS_SERVER_TYPE\n+125tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)\n+ 126{\n+ 127 switch (srctype) {\n+ 128 case SYBBITN:\n+ 129 return SYBBIT;\n+ 130 case SYBDATEN:\n+ 131 return SYBDATE;\n+ 132 case SYBDATETIMN:\n+ 133 switch (colsize) {\n+ 134 case 8:\n+ 135 return SYBDATETIME;\n+ 136 case 4:\n+ 137 return SYBDATETIME4;\n+ 138 }\n+ 139 break;\n+ 140 case SYBFLTN:\n+ 141 switch (colsize) {\n+ 142 case 8:\n+ 143 return SYBFLT8;\n+ 144 case 4:\n+ 145 return SYBREAL;\n+ 146 }\n+ 147 break;\n+ 148 case SYBINTN:\n+ 149 switch (colsize) {\n+ 150 case 8:\n+ 151 return SYBINT8;\n+ 152 case 4:\n+ 153 return SYBINT4;\n+ 154 case 2:\n+ 155 return SYBINT2;\n+ 156 case 1:\n+ 157 return SYBINT1;\n+ 158 }\n+ 159 break;\n+ 160 case SYBMONEYN:\n+ 161 switch (colsize) {\n+ 162 case 8:\n+ 163 return SYBMONEY;\n+ 164 case 4:\n+ 165 return SYBMONEY4;\n+ 166 }\n+ 167 break;\n+ 168 case SYBTIMEN:\n+ 169 return SYBTIME;\n+ 170 case SYBUINTN:\n+ 171 switch (colsize) {\n+ 172 case 8:\n+ 173 return SYBUINT8;\n+ 174 case 4:\n+ 175 return SYBUINT4;\n+ 176 case 2:\n+ 177 return SYBUINT2;\n+ 178 case 1:\n+ 179 return SYBUINT1;\n+ 180 }\n+ 181 break;\n+ 182 case SYB5INT8:\n+ 183 return SYBINT8;\n+ 184 default:\n+ 185 break;\n+ 186 }\n+ 187 return srctype;\n+ 188}\n+ 189\n+ 190const uint16_t tds_type_flags_ms[256] = {\n+ 191 /* 0 empty */ TDS_TYPEFLAG_INVALID,\n+ 192 /* 1 empty */ TDS_TYPEFLAG_INVALID,\n+ 193 /* 2 empty */ TDS_TYPEFLAG_INVALID,\n+ 194 /* 3 empty */ TDS_TYPEFLAG_INVALID,\n+ 195 /* 4 empty */ TDS_TYPEFLAG_INVALID,\n+ 196 /* 5 empty */ TDS_TYPEFLAG_INVALID,\n+ 197 /* 6 empty */ TDS_TYPEFLAG_INVALID,\n+ 198 /* 7 empty */ TDS_TYPEFLAG_INVALID,\n+ 199 /* 8 empty */ TDS_TYPEFLAG_INVALID,\n+ 200 /* 9 empty */ TDS_TYPEFLAG_INVALID,\n+ 201 /* 10 empty */ TDS_TYPEFLAG_INVALID,\n+ 202 /* 11 empty */ TDS_TYPEFLAG_INVALID,\n+ 203 /* 12 empty */ TDS_TYPEFLAG_INVALID,\n+ 204 /* 13 empty */ TDS_TYPEFLAG_INVALID,\n+ 205 /* 14 empty */ TDS_TYPEFLAG_INVALID,\n+ 206 /* 15 empty */ TDS_TYPEFLAG_INVALID,\n+ 207 /* 16 empty */ TDS_TYPEFLAG_INVALID,\n+ 208 /* 17 empty */ TDS_TYPEFLAG_INVALID,\n+ 209 /* 18 empty */ TDS_TYPEFLAG_INVALID,\n+ 210 /* 19 empty */ TDS_TYPEFLAG_INVALID,\n+ 211 /* 20 empty */ TDS_TYPEFLAG_INVALID,\n+ 212 /* 21 empty */ TDS_TYPEFLAG_INVALID,\n+ 213 /* 22 empty */ TDS_TYPEFLAG_INVALID,\n+ 214 /* 23 empty */ TDS_TYPEFLAG_INVALID,\n+ 215 /* 24 empty */ TDS_TYPEFLAG_INVALID,\n+ 216 /* 25 empty */ TDS_TYPEFLAG_INVALID,\n+ 217 /* 26 empty */ TDS_TYPEFLAG_INVALID,\n+ 218 /* 27 empty */ TDS_TYPEFLAG_INVALID,\n+ 219 /* 28 empty */ TDS_TYPEFLAG_INVALID,\n+ 220 /* 29 empty */ TDS_TYPEFLAG_INVALID,\n+ 221 /* 30 empty */ TDS_TYPEFLAG_INVALID,\n+ 222 /* 31 SYBVOID */ TDS_TYPEFLAG_FIXED,\n+ 223 /* 32 empty */ TDS_TYPEFLAG_INVALID,\n+ 224 /* 33 empty */ TDS_TYPEFLAG_INVALID,\n+ 225 /* 34 SYBIMAGE */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 226 /* 35 SYBTEXT */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII,\n+ 227 /* 36 SYBUNIQUE */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 228 /* 37 SYBVARBINARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 229 /* 38 SYBINTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 230 /* 39 SYBVARCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 231 /* 40 SYBMSDATE */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 232 /* 41 SYBMSTIME */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 233 /* 42 SYBMSDATETIME2 */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 234 /* 43 SYBMSDATETIMEOFFSET */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 235 /* 44 empty */ TDS_TYPEFLAG_INVALID,\n+ 236 /* 45 SYBBINARY */\n+TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 237 /* 46 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 238 /* 47 SYBCHAR */\n+TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 239 /* 48 SYBINT1 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 240 /* 49 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,\n+ 241 /* 50 SYBBIT */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 242 /* 51 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,\n+ 243 /* 52 SYBINT2 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 244 /* 53 empty */ TDS_TYPEFLAG_INVALID,\n+ 245 /* 54 empty */ TDS_TYPEFLAG_INVALID,\n+ 246 /* 55 empty */ TDS_TYPEFLAG_INVALID,\n+ 247 /* 56 SYBINT4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 248 /* 57 empty */ TDS_TYPEFLAG_INVALID,\n+ 249 /* 58 SYBDATETIME4 */\n+TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 250 /* 59 SYBREAL */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 251 /* 60 SYBMONEY */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 252 /* 61 SYBDATETIME */\n+TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 253 /* 62 SYBFLT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 254 /* 63 empty */ TDS_TYPEFLAG_INVALID,\n+ 255 /* 64 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 256 /* 65 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 257 /* 66 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 258 /* 67 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 259 /* 68 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE,\n+ 260 /* 69 empty */ TDS_TYPEFLAG_INVALID,\n+ 261 /* 70 empty */ TDS_TYPEFLAG_INVALID,\n+ 262 /* 71 empty */ TDS_TYPEFLAG_INVALID,\n+ 263 /* 72 empty */ TDS_TYPEFLAG_INVALID,\n+ 264 /* 73 empty */ TDS_TYPEFLAG_INVALID,\n+ 265 /* 74 empty */ TDS_TYPEFLAG_INVALID,\n+ 266 /* 75 empty */ TDS_TYPEFLAG_INVALID,\n+ 267 /* 76 empty */ TDS_TYPEFLAG_INVALID,\n+ 268 /* 77 empty */ TDS_TYPEFLAG_INVALID,\n+ 269 /* 78 empty */ TDS_TYPEFLAG_INVALID,\n+ 270 /* 79 empty */ TDS_TYPEFLAG_INVALID,\n+ 271 /* 80 empty */ TDS_TYPEFLAG_INVALID,\n+ 272 /* 81 empty */ TDS_TYPEFLAG_INVALID,\n+ 273 /* 82 empty */ TDS_TYPEFLAG_INVALID,\n+ 274 /* 83 empty */ TDS_TYPEFLAG_INVALID,\n+ 275 /* 84 empty */ TDS_TYPEFLAG_INVALID,\n+ 276 /* 85 empty */ TDS_TYPEFLAG_INVALID,\n+ 277 /* 86 empty */ TDS_TYPEFLAG_INVALID,\n+ 278 /* 87 empty */ TDS_TYPEFLAG_INVALID,\n+ 279 /* 88 empty */ TDS_TYPEFLAG_INVALID,\n+ 280 /* 89 empty */ TDS_TYPEFLAG_INVALID,\n+ 281 /* 90 empty */ TDS_TYPEFLAG_INVALID,\n+ 282 /* 91 empty */ TDS_TYPEFLAG_INVALID,\n+ 283 /* 92 empty */ TDS_TYPEFLAG_INVALID,\n+ 284 /* 93 empty */ TDS_TYPEFLAG_INVALID,\n+ 285 /* 94 empty */ TDS_TYPEFLAG_INVALID,\n+ 286 /* 95 empty */ TDS_TYPEFLAG_INVALID,\n+ 287 /* 96 empty */ TDS_TYPEFLAG_INVALID,\n+ 288 /* 97 empty */ TDS_TYPEFLAG_INVALID,\n+ 289 /* 98 SYBVARIANT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 290 /* 99 SYBNTEXT */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE,\n+ 291 /* 100 empty */ TDS_TYPEFLAG_INVALID,\n+ 292 /* 101 empty */ TDS_TYPEFLAG_INVALID,\n+ 293 /* 102 empty */ TDS_TYPEFLAG_INVALID,\n+ 294 /* 103 SYBNVARCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,\n+ 295 /* 104 SYBBITN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 296 /* 105 empty */ TDS_TYPEFLAG_INVALID,\n+ 297 /* 106 SYBDECIMAL */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,\n+ 298 /* 107 empty */ TDS_TYPEFLAG_INVALID,\n+ 299 /* 108 SYBNUMERIC */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,\n+ 300 /* 109 SYBFLTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 301 /* 110 SYBMONEYN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 302 /* 111 SYBDATETIMN */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 303 /* 112 empty */ TDS_TYPEFLAG_INVALID,\n+ 304 /* 113 empty */ TDS_TYPEFLAG_INVALID,\n+ 305 /* 114 empty */ TDS_TYPEFLAG_INVALID,\n+ 306 /* 115 empty */ TDS_TYPEFLAG_INVALID,\n+ 307 /* 116 empty */ TDS_TYPEFLAG_INVALID,\n+ 308 /* 117 empty */ TDS_TYPEFLAG_INVALID,\n+ 309 /* 118 empty */ TDS_TYPEFLAG_INVALID,\n+ 310 /* 119 empty */ TDS_TYPEFLAG_INVALID,\n+ 311 /* 120 empty */ TDS_TYPEFLAG_INVALID,\n+ 312 /* 121 empty */ TDS_TYPEFLAG_INVALID,\n+ 313 /* 122 SYBMONEY4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 314 /* 123 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 315 /* 124 empty */ TDS_TYPEFLAG_INVALID,\n+ 316 /* 125 empty */ TDS_TYPEFLAG_INVALID,\n+ 317 /* 126 empty */ TDS_TYPEFLAG_INVALID,\n+ 318 /* 127 SYBINT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 319 /* 128 empty */ TDS_TYPEFLAG_INVALID,\n+ 320 /* 129 empty */ TDS_TYPEFLAG_INVALID,\n+ 321 /* 130 empty */ TDS_TYPEFLAG_INVALID,\n+ 322 /* 131 empty */ TDS_TYPEFLAG_INVALID,\n+ 323 /* 132 empty */ TDS_TYPEFLAG_INVALID,\n+ 324 /* 133 empty */ TDS_TYPEFLAG_INVALID,\n+ 325 /* 134 empty */ TDS_TYPEFLAG_INVALID,\n+ 326 /* 135 empty */ TDS_TYPEFLAG_INVALID,\n+ 327 /* 136 empty */ TDS_TYPEFLAG_INVALID,\n+ 328 /* 137 empty */ TDS_TYPEFLAG_INVALID,\n+ 329 /* 138 empty */ TDS_TYPEFLAG_INVALID,\n+ 330 /* 139 empty */ TDS_TYPEFLAG_INVALID,\n+ 331 /* 140 empty */ TDS_TYPEFLAG_INVALID,\n+ 332 /* 141 empty */ TDS_TYPEFLAG_INVALID,\n+ 333 /* 142 empty */ TDS_TYPEFLAG_INVALID,\n+ 334 /* 143 empty */ TDS_TYPEFLAG_INVALID,\n+ 335 /* 144 empty */ TDS_TYPEFLAG_INVALID,\n+ 336 /* 145 empty */ TDS_TYPEFLAG_INVALID,\n+ 337 /* 146 empty */ TDS_TYPEFLAG_INVALID,\n+ 338 /* 147 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 339 /* 148 empty */ TDS_TYPEFLAG_INVALID,\n+ 340 /* 149 empty */ TDS_TYPEFLAG_INVALID,\n+ 341 /* 150 empty */ TDS_TYPEFLAG_INVALID,\n+ 342 /* 151 empty */ TDS_TYPEFLAG_INVALID,\n+ 343 /* 152 empty */ TDS_TYPEFLAG_INVALID,\n+ 344 /* 153 empty */ TDS_TYPEFLAG_INVALID,\n+ 345 /* 154 empty */ TDS_TYPEFLAG_INVALID,\n+ 346 /* 155 empty */ TDS_TYPEFLAG_INVALID,\n+ 347 /* 156 empty */ TDS_TYPEFLAG_INVALID,\n+ 348 /* 157 empty */ TDS_TYPEFLAG_INVALID,\n+ 349 /* 158 empty */ TDS_TYPEFLAG_INVALID,\n+ 350 /* 159 empty */ TDS_TYPEFLAG_INVALID,\n+ 351 /* 160 empty */ TDS_TYPEFLAG_INVALID,\n+ 352 /* 161 empty */ TDS_TYPEFLAG_INVALID,\n+ 353 /* 162 empty */ TDS_TYPEFLAG_INVALID,\n+ 354 /* 163 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 355 /* 164 empty */ TDS_TYPEFLAG_INVALID,\n+ 356 /* 165 XSYBVARBINARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 357 /* 166 empty */ TDS_TYPEFLAG_INVALID,\n+ 358 /* 167 XSYBVARCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 359 /* 168 empty */ TDS_TYPEFLAG_INVALID,\n+ 360 /* 169 empty */ TDS_TYPEFLAG_INVALID,\n+ 361 /* 170 empty */ TDS_TYPEFLAG_INVALID,\n+ 362 /* 171 empty */ TDS_TYPEFLAG_INVALID,\n+ 363 /* 172 empty */ TDS_TYPEFLAG_INVALID,\n+ 364 /* 173 XSYBBINARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 365 /* 174 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 366 /* 175 XSYBCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 367 /* 176 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 368 /* 177 empty */ TDS_TYPEFLAG_INVALID,\n+ 369 /* 178 empty */ TDS_TYPEFLAG_INVALID,\n+ 370 /* 179 empty */ TDS_TYPEFLAG_INVALID,\n+ 371 /* 180 empty */ TDS_TYPEFLAG_INVALID,\n+ 372 /* 181 empty */ TDS_TYPEFLAG_INVALID,\n+ 373 /* 182 empty */ TDS_TYPEFLAG_INVALID,\n+ 374 /* 183 empty */ TDS_TYPEFLAG_INVALID,\n+ 375 /* 184 empty */ TDS_TYPEFLAG_INVALID,\n+ 376 /* 185 empty */ TDS_TYPEFLAG_INVALID,\n+ 377 /* 186 empty */ TDS_TYPEFLAG_INVALID,\n+ 378 /* 187 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 379 /* 188 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 380 /* 189 empty */ TDS_TYPEFLAG_INVALID,\n+ 381 /* 190 empty */ TDS_TYPEFLAG_INVALID,\n+ 382 /* 191 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 383 /* 192 empty */ TDS_TYPEFLAG_INVALID,\n+ 384 /* 193 empty */ TDS_TYPEFLAG_INVALID,\n+ 385 /* 194 empty */ TDS_TYPEFLAG_INVALID,\n+ 386 /* 195 empty */ TDS_TYPEFLAG_INVALID,\n+ 387 /* 196 empty */ TDS_TYPEFLAG_INVALID,\n+ 388 /* 197 empty */ TDS_TYPEFLAG_INVALID,\n+ 389 /* 198 empty */ TDS_TYPEFLAG_INVALID,\n+ 390 /* 199 empty */ TDS_TYPEFLAG_INVALID,\n+ 391 /* 200 empty */ TDS_TYPEFLAG_INVALID,\n+ 392 /* 201 empty */ TDS_TYPEFLAG_INVALID,\n+ 393 /* 202 empty */ TDS_TYPEFLAG_INVALID,\n+ 394 /* 203 empty */ TDS_TYPEFLAG_INVALID,\n+ 395 /* 204 empty */ TDS_TYPEFLAG_INVALID,\n+ 396 /* 205 empty */ TDS_TYPEFLAG_INVALID,\n+ 397 /* 206 empty */ TDS_TYPEFLAG_INVALID,\n+ 398 /* 207 empty */ TDS_TYPEFLAG_INVALID,\n+ 399 /* 208 empty */ TDS_TYPEFLAG_INVALID,\n+ 400 /* 209 empty */ TDS_TYPEFLAG_INVALID,\n+ 401 /* 210 empty */ TDS_TYPEFLAG_INVALID,\n+ 402 /* 211 empty */ TDS_TYPEFLAG_INVALID,\n+ 403 /* 212 empty */ TDS_TYPEFLAG_INVALID,\n+ 404 /* 213 empty */ TDS_TYPEFLAG_INVALID,\n+ 405 /* 214 empty */ TDS_TYPEFLAG_INVALID,\n+ 406 /* 215 empty */ TDS_TYPEFLAG_INVALID,\n+ 407 /* 216 empty */ TDS_TYPEFLAG_INVALID,\n+ 408 /* 217 empty */ TDS_TYPEFLAG_INVALID,\n+ 409 /* 218 empty */ TDS_TYPEFLAG_INVALID,\n+ 410 /* 219 empty */ TDS_TYPEFLAG_INVALID,\n+ 411 /* 220 empty */ TDS_TYPEFLAG_INVALID,\n+ 412 /* 221 empty */ TDS_TYPEFLAG_INVALID,\n+ 413 /* 222 empty */ TDS_TYPEFLAG_INVALID,\n+ 414 /* 223 empty */ TDS_TYPEFLAG_INVALID,\n+ 415 /* 224 empty */ TDS_TYPEFLAG_INVALID,\n+ 416 /* 225 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 417 /* 226 empty */ TDS_TYPEFLAG_INVALID,\n+ 418 /* 227 empty */ TDS_TYPEFLAG_INVALID,\n+ 419 /* 228 empty */ TDS_TYPEFLAG_INVALID,\n+ 420 /* 229 empty */ TDS_TYPEFLAG_INVALID,\n+ 421 /* 230 empty */ TDS_TYPEFLAG_INVALID,\n+ 422 /* 231 XSYBNVARCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,\n+ 423 /* 232 empty */ TDS_TYPEFLAG_INVALID,\n+ 424 /* 233 empty */ TDS_TYPEFLAG_INVALID,\n+ 425 /* 234 empty */ TDS_TYPEFLAG_INVALID,\n+ 426 /* 235 empty */ TDS_TYPEFLAG_INVALID,\n+ 427 /* 236 empty */ TDS_TYPEFLAG_INVALID,\n+ 428 /* 237 empty */ TDS_TYPEFLAG_INVALID,\n+ 429 /* 238 empty */ TDS_TYPEFLAG_INVALID,\n+ 430 /* 239 XSYBNCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_UNICODE|TDS_TYPEFLAG_VARIANT,\n+ 431 /* 240 SYBMSUDT */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 432 /* 241 SYBMSXML */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 433 /* 242 empty */ TDS_TYPEFLAG_INVALID,\n+ 434 /* 243 empty */ TDS_TYPEFLAG_INVALID,\n+ 435 /* 244 empty */ TDS_TYPEFLAG_INVALID,\n+ 436 /* 245 empty */ TDS_TYPEFLAG_INVALID,\n+ 437 /* 246 empty */ TDS_TYPEFLAG_INVALID,\n+ 438 /* 247 empty */ TDS_TYPEFLAG_INVALID,\n+ 439 /* 248 empty */ TDS_TYPEFLAG_INVALID,\n+ 440 /* 249 empty */ TDS_TYPEFLAG_INVALID,\n+ 441 /* 250 empty */ TDS_TYPEFLAG_INVALID,\n+ 442 /* 251 empty */ TDS_TYPEFLAG_INVALID,\n+ 443 /* 252 empty */ TDS_TYPEFLAG_INVALID,\n+ 444 /* 253 empty */ TDS_TYPEFLAG_INVALID,\n+ 445 /* 254 empty */ TDS_TYPEFLAG_INVALID,\n+ 446 /* 255 empty */ TDS_TYPEFLAG_INVALID,\n+ 447};\n+ 448\n+ 449#if 0\n+ 450const uint16_t tds_type_flags_syb[256] = {\n+ 451 /* 0 empty */ TDS_TYPEFLAG_INVALID,\n+ 452 /* 1 empty */ TDS_TYPEFLAG_INVALID,\n+ 453 /* 2 empty */ TDS_TYPEFLAG_INVALID,\n+ 454 /* 3 empty */ TDS_TYPEFLAG_INVALID,\n+ 455 /* 4 empty */ TDS_TYPEFLAG_INVALID,\n+ 456 /* 5 empty */ TDS_TYPEFLAG_INVALID,\n+ 457 /* 6 empty */ TDS_TYPEFLAG_INVALID,\n+ 458 /* 7 empty */ TDS_TYPEFLAG_INVALID,\n+ 459 /* 8 empty */ TDS_TYPEFLAG_INVALID,\n+ 460 /* 9 empty */ TDS_TYPEFLAG_INVALID,\n+ 461 /* 10 empty */ TDS_TYPEFLAG_INVALID,\n+ 462 /* 11 empty */ TDS_TYPEFLAG_INVALID,\n+ 463 /* 12 empty */ TDS_TYPEFLAG_INVALID,\n+ 464 /* 13 empty */ TDS_TYPEFLAG_INVALID,\n+ 465 /* 14 empty */ TDS_TYPEFLAG_INVALID,\n+ 466 /* 15 empty */ TDS_TYPEFLAG_INVALID,\n+ 467 /* 16 empty */ TDS_TYPEFLAG_INVALID,\n+ 468 /* 17 empty */ TDS_TYPEFLAG_INVALID,\n+ 469 /* 18 empty */ TDS_TYPEFLAG_INVALID,\n+ 470 /* 19 empty */ TDS_TYPEFLAG_INVALID,\n+ 471 /* 20 empty */ TDS_TYPEFLAG_INVALID,\n+ 472 /* 21 empty */ TDS_TYPEFLAG_INVALID,\n+ 473 /* 22 empty */ TDS_TYPEFLAG_INVALID,\n+ 474 /* 23 empty */ TDS_TYPEFLAG_INVALID,\n+ 475 /* 24 empty */ TDS_TYPEFLAG_INVALID,\n+ 476 /* 25 empty */ TDS_TYPEFLAG_INVALID,\n+ 477 /* 26 empty */ TDS_TYPEFLAG_INVALID,\n+ 478 /* 27 empty */ TDS_TYPEFLAG_INVALID,\n+ 479 /* 28 empty */ TDS_TYPEFLAG_INVALID,\n+ 480 /* 29 empty */ TDS_TYPEFLAG_INVALID,\n+ 481 /* 30 empty */ TDS_TYPEFLAG_INVALID,\n+ 482 /* 31 SYBVOID */ TDS_TYPEFLAG_FIXED,\n+ 483 /* 32 empty */ TDS_TYPEFLAG_INVALID,\n+ 484 /* 33 empty */ TDS_TYPEFLAG_INVALID,\n+ 485 /* 34 SYBIMAGE */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 486 /* 35 SYBTEXT */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_COLLATE|TDS_TYPEFLAG_ASCII,\n+ 487 /* 36 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_NULLABLE,\n+ 488 /* 37 SYBVARBINARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 489 /* 38 SYBINTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 490 /* 39 SYBVARCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 491 /* 40 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 492 /* 41 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 493 /* 42 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 494 /* 43 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 495 /* 44 empty */ TDS_TYPEFLAG_INVALID,\n+ 496 /* 45 SYBBINARY */\n+TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY|TDS_TYPEFLAG_VARIANT,\n+ 497 /* 46 SYBINTERVAL */ TDS_TYPEFLAG_FIXED,\n+ 498 /* 47 SYBCHAR */\n+TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_VARIANT,\n+ 499 /* 48 SYBINT1 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 500 /* 49 SYBDATE */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,\n+ 501 /* 50 SYBBIT */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 502 /* 51 SYBTIME */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME,\n+ 503 /* 52 SYBINT2 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 504 /* 53 empty */ TDS_TYPEFLAG_INVALID,\n+ 505 /* 54 empty */ TDS_TYPEFLAG_INVALID,\n+ 506 /* 55 empty */ TDS_TYPEFLAG_INVALID,\n+ 507 /* 56 SYBINT4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 508 /* 57 empty */ TDS_TYPEFLAG_INVALID,\n+ 509 /* 58 SYBDATETIME4 */\n+TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 510 /* 59 SYBREAL */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 511 /* 60 SYBMONEY */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 512 /* 61 SYBDATETIME */\n+TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 513 /* 62 SYBFLT8 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 514 /* 63 empty */ TDS_TYPEFLAG_INVALID,\n+ 515 /* 64 SYBUINT1 */ TDS_TYPEFLAG_FIXED,\n+ 516 /* 65 SYBUINT2 */ TDS_TYPEFLAG_FIXED,\n+ 517 /* 66 SYBUINT4 */ TDS_TYPEFLAG_FIXED,\n+ 518 /* 67 SYBUINT8 */ TDS_TYPEFLAG_FIXED,\n+ 519 /* 68 SYBUINTN */ TDS_TYPEFLAG_NULLABLE,\n+ 520 /* 69 empty */ TDS_TYPEFLAG_INVALID,\n+ 521 /* 70 empty */ TDS_TYPEFLAG_INVALID,\n+ 522 /* 71 empty */ TDS_TYPEFLAG_INVALID,\n+ 523 /* 72 empty */ TDS_TYPEFLAG_INVALID,\n+ 524 /* 73 empty */ TDS_TYPEFLAG_INVALID,\n+ 525 /* 74 empty */ TDS_TYPEFLAG_INVALID,\n+ 526 /* 75 empty */ TDS_TYPEFLAG_INVALID,\n+ 527 /* 76 empty */ TDS_TYPEFLAG_INVALID,\n+ 528 /* 77 empty */ TDS_TYPEFLAG_INVALID,\n+ 529 /* 78 empty */ TDS_TYPEFLAG_INVALID,\n+ 530 /* 79 empty */ TDS_TYPEFLAG_INVALID,\n+ 531 /* 80 empty */ TDS_TYPEFLAG_INVALID,\n+ 532 /* 81 empty */ TDS_TYPEFLAG_INVALID,\n+ 533 /* 82 empty */ TDS_TYPEFLAG_INVALID,\n+ 534 /* 83 empty */ TDS_TYPEFLAG_INVALID,\n+ 535 /* 84 empty */ TDS_TYPEFLAG_INVALID,\n+ 536 /* 85 empty */ TDS_TYPEFLAG_INVALID,\n+ 537 /* 86 empty */ TDS_TYPEFLAG_INVALID,\n+ 538 /* 87 empty */ TDS_TYPEFLAG_INVALID,\n+ 539 /* 88 empty */ TDS_TYPEFLAG_INVALID,\n+ 540 /* 89 empty */ TDS_TYPEFLAG_INVALID,\n+ 541 /* 90 empty */ TDS_TYPEFLAG_INVALID,\n+ 542 /* 91 empty */ TDS_TYPEFLAG_INVALID,\n+ 543 /* 92 empty */ TDS_TYPEFLAG_INVALID,\n+ 544 /* 93 empty */ TDS_TYPEFLAG_INVALID,\n+ 545 /* 94 empty */ TDS_TYPEFLAG_INVALID,\n+ 546 /* 95 empty */ TDS_TYPEFLAG_INVALID,\n+ 547 /* 96 empty */ TDS_TYPEFLAG_INVALID,\n+ 548 /* 97 empty */ TDS_TYPEFLAG_INVALID,\n+ 549 /* 98 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 550 /* 99 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 551 /* 100 empty */ TDS_TYPEFLAG_INVALID,\n+ 552 /* 101 empty */ TDS_TYPEFLAG_INVALID,\n+ 553 /* 102 empty */ TDS_TYPEFLAG_INVALID,\n+ 554 /* 103 SYBSENSITIVITY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,\n+ 555 /* 104 SYBBOUNDARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,\n+ 556 /* 105 empty */ TDS_TYPEFLAG_INVALID,\n+ 557 /* 106 SYBDECIMAL */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,\n+ 558 /* 107 empty */ TDS_TYPEFLAG_INVALID,\n+ 559 /* 108 SYBNUMERIC */ TDS_TYPEFLAG_NUMERIC|TDS_TYPEFLAG_VARIANT,\n+ 560 /* 109 SYBFLTN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 561 /* 110 SYBMONEYN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIANT,\n+ 562 /* 111 SYBDATETIMN */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME|TDS_TYPEFLAG_VARIANT,\n+ 563 /* 112 empty */ TDS_TYPEFLAG_INVALID,\n+ 564 /* 113 empty */ TDS_TYPEFLAG_INVALID,\n+ 565 /* 114 empty */ TDS_TYPEFLAG_INVALID,\n+ 566 /* 115 empty */ TDS_TYPEFLAG_INVALID,\n+ 567 /* 116 empty */ TDS_TYPEFLAG_INVALID,\n+ 568 /* 117 empty */ TDS_TYPEFLAG_INVALID,\n+ 569 /* 118 empty */ TDS_TYPEFLAG_INVALID,\n+ 570 /* 119 empty */ TDS_TYPEFLAG_INVALID,\n+ 571 /* 120 empty */ TDS_TYPEFLAG_INVALID,\n+ 572 /* 121 empty */ TDS_TYPEFLAG_INVALID,\n+ 573 /* 122 SYBMONEY4 */ TDS_TYPEFLAG_FIXED|TDS_TYPEFLAG_VARIANT,\n+ 574 /* 123 SYBDATEN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 575 /* 124 empty */ TDS_TYPEFLAG_INVALID,\n+ 576 /* 125 empty */ TDS_TYPEFLAG_INVALID,\n+ 577 /* 126 empty */ TDS_TYPEFLAG_INVALID,\n+ 578 /* 127 empty */ TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_FIXED,\n+ 579 /* 128 empty */ TDS_TYPEFLAG_INVALID,\n+ 580 /* 129 empty */ TDS_TYPEFLAG_INVALID,\n+ 581 /* 130 empty */ TDS_TYPEFLAG_INVALID,\n+ 582 /* 131 empty */ TDS_TYPEFLAG_INVALID,\n+ 583 /* 132 empty */ TDS_TYPEFLAG_INVALID,\n+ 584 /* 133 empty */ TDS_TYPEFLAG_INVALID,\n+ 585 /* 134 empty */ TDS_TYPEFLAG_INVALID,\n+ 586 /* 135 empty */ TDS_TYPEFLAG_INVALID,\n+ 587 /* 136 empty */ TDS_TYPEFLAG_INVALID,\n+ 588 /* 137 empty */ TDS_TYPEFLAG_INVALID,\n+ 589 /* 138 empty */ TDS_TYPEFLAG_INVALID,\n+ 590 /* 139 empty */ TDS_TYPEFLAG_INVALID,\n+ 591 /* 140 empty */ TDS_TYPEFLAG_INVALID,\n+ 592 /* 141 empty */ TDS_TYPEFLAG_INVALID,\n+ 593 /* 142 empty */ TDS_TYPEFLAG_INVALID,\n+ 594 /* 143 empty */ TDS_TYPEFLAG_INVALID,\n+ 595 /* 144 empty */ TDS_TYPEFLAG_INVALID,\n+ 596 /* 145 empty */ TDS_TYPEFLAG_INVALID,\n+ 597 /* 146 empty */ TDS_TYPEFLAG_INVALID,\n+ 598 /* 147 SYBTIMEN */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 599 /* 148 empty */ TDS_TYPEFLAG_INVALID,\n+ 600 /* 149 empty */ TDS_TYPEFLAG_INVALID,\n+ 601 /* 150 empty */ TDS_TYPEFLAG_INVALID,\n+ 602 /* 151 empty */ TDS_TYPEFLAG_INVALID,\n+ 603 /* 152 empty */ TDS_TYPEFLAG_INVALID,\n+ 604 /* 153 empty */ TDS_TYPEFLAG_INVALID,\n+ 605 /* 154 empty */ TDS_TYPEFLAG_INVALID,\n+ 606 /* 155 empty */ TDS_TYPEFLAG_INVALID,\n+ 607 /* 156 empty */ TDS_TYPEFLAG_INVALID,\n+ 608 /* 157 empty */ TDS_TYPEFLAG_INVALID,\n+ 609 /* 158 empty */ TDS_TYPEFLAG_INVALID,\n+ 610 /* 159 empty */ TDS_TYPEFLAG_INVALID,\n+ 611 /* 160 empty */ TDS_TYPEFLAG_INVALID,\n+ 612 /* 161 empty */ TDS_TYPEFLAG_INVALID,\n+ 613 /* 162 empty */ TDS_TYPEFLAG_INVALID,\n+ 614 /* 163 SYBXML */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 615 /* 164 empty */ TDS_TYPEFLAG_INVALID,\n+ 616 /* 165 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 617 /* 166 empty */ TDS_TYPEFLAG_INVALID,\n+ 618 /* 167 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 619 /* 168 empty */ TDS_TYPEFLAG_INVALID,\n+ 620 /* 169 empty */ TDS_TYPEFLAG_INVALID,\n+ 621 /* 170 empty */ TDS_TYPEFLAG_INVALID,\n+ 622 /* 171 empty */ TDS_TYPEFLAG_INVALID,\n+ 623 /* 172 empty */ TDS_TYPEFLAG_INVALID,\n+ 624 /* 173 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 625 /* 174 SYBUNITEXT */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 626 /* 175 SYBLONGCHAR */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_ASCII,\n+ 627 /* 176 SYBSINT1 */ TDS_TYPEFLAG_FIXED,\n+ 628 /* 177 empty */ TDS_TYPEFLAG_INVALID,\n+ 629 /* 178 empty */ TDS_TYPEFLAG_INVALID,\n+ 630 /* 179 empty */ TDS_TYPEFLAG_INVALID,\n+ 631 /* 180 empty */ TDS_TYPEFLAG_INVALID,\n+ 632 /* 181 empty */ TDS_TYPEFLAG_INVALID,\n+ 633 /* 182 empty */ TDS_TYPEFLAG_INVALID,\n+ 634 /* 183 empty */ TDS_TYPEFLAG_INVALID,\n+ 635 /* 184 empty */ TDS_TYPEFLAG_INVALID,\n+ 636 /* 185 empty */ TDS_TYPEFLAG_INVALID,\n+ 637 /* 186 empty */ TDS_TYPEFLAG_INVALID,\n+ 638 /* 187 SYB5BIGDATETIME */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 639 /* 188 SYB5BIGTIME */ TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_DATETIME,\n+ 640 /* 189 empty */ TDS_TYPEFLAG_INVALID,\n+ 641 /* 190 empty */ TDS_TYPEFLAG_INVALID,\n+ 642 /* 191 SYB5INT8 */ TDS_TYPEFLAG_FIXED,\n+ 643 /* 192 empty */ TDS_TYPEFLAG_INVALID,\n+ 644 /* 193 empty */ TDS_TYPEFLAG_INVALID,\n+ 645 /* 194 empty */ TDS_TYPEFLAG_INVALID,\n+ 646 /* 195 empty */ TDS_TYPEFLAG_INVALID,\n+ 647 /* 196 empty */ TDS_TYPEFLAG_INVALID,\n+ 648 /* 197 empty */ TDS_TYPEFLAG_INVALID,\n+ 649 /* 198 empty */ TDS_TYPEFLAG_INVALID,\n+ 650 /* 199 empty */ TDS_TYPEFLAG_INVALID,\n+ 651 /* 200 empty */ TDS_TYPEFLAG_INVALID,\n+ 652 /* 201 empty */ TDS_TYPEFLAG_INVALID,\n+ 653 /* 202 empty */ TDS_TYPEFLAG_INVALID,\n+ 654 /* 203 empty */ TDS_TYPEFLAG_INVALID,\n+ 655 /* 204 empty */ TDS_TYPEFLAG_INVALID,\n+ 656 /* 205 empty */ TDS_TYPEFLAG_INVALID,\n+ 657 /* 206 empty */ TDS_TYPEFLAG_INVALID,\n+ 658 /* 207 empty */ TDS_TYPEFLAG_INVALID,\n+ 659 /* 208 empty */ TDS_TYPEFLAG_INVALID,\n+ 660 /* 209 empty */ TDS_TYPEFLAG_INVALID,\n+ 661 /* 210 empty */ TDS_TYPEFLAG_INVALID,\n+ 662 /* 211 empty */ TDS_TYPEFLAG_INVALID,\n+ 663 /* 212 empty */ TDS_TYPEFLAG_INVALID,\n+ 664 /* 213 empty */ TDS_TYPEFLAG_INVALID,\n+ 665 /* 214 empty */ TDS_TYPEFLAG_INVALID,\n+ 666 /* 215 empty */ TDS_TYPEFLAG_INVALID,\n+ 667 /* 216 empty */ TDS_TYPEFLAG_INVALID,\n+ 668 /* 217 empty */ TDS_TYPEFLAG_INVALID,\n+ 669 /* 218 empty */ TDS_TYPEFLAG_INVALID,\n+ 670 /* 219 empty */ TDS_TYPEFLAG_INVALID,\n+ 671 /* 220 empty */ TDS_TYPEFLAG_INVALID,\n+ 672 /* 221 empty */ TDS_TYPEFLAG_INVALID,\n+ 673 /* 222 empty */ TDS_TYPEFLAG_INVALID,\n+ 674 /* 223 empty */ TDS_TYPEFLAG_INVALID,\n+ 675 /* 224 empty */ TDS_TYPEFLAG_INVALID,\n+ 676 /* 225 SYBLONGBINARY */\n+TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_BINARY,\n+ 677 /* 226 empty */ TDS_TYPEFLAG_INVALID,\n+ 678 /* 227 empty */ TDS_TYPEFLAG_INVALID,\n+ 679 /* 228 empty */ TDS_TYPEFLAG_INVALID,\n+ 680 /* 229 empty */ TDS_TYPEFLAG_INVALID,\n+ 681 /* 230 empty */ TDS_TYPEFLAG_INVALID,\n+ 682 /* 231 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 683 /* 232 empty */ TDS_TYPEFLAG_INVALID,\n+ 684 /* 233 empty */ TDS_TYPEFLAG_INVALID,\n+ 685 /* 234 empty */ TDS_TYPEFLAG_INVALID,\n+ 686 /* 235 empty */ TDS_TYPEFLAG_INVALID,\n+ 687 /* 236 empty */ TDS_TYPEFLAG_INVALID,\n+ 688 /* 237 empty */ TDS_TYPEFLAG_INVALID,\n+ 689 /* 238 empty */ TDS_TYPEFLAG_INVALID,\n+ 690 /* 239 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 691 /* 240 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE,\n+ 692 /* 241 empty */\n+TDS_TYPEFLAG_INVALID|TDS_TYPEFLAG_NULLABLE|TDS_TYPEFLAG_VARIABLE|TDS_TYPEFLAG_UNICODE,\n+ 693 /* 242 empty */ TDS_TYPEFLAG_INVALID,\n+ 694 /* 243 empty */ TDS_TYPEFLAG_INVALID,\n+ 695 /* 244 empty */ TDS_TYPEFLAG_INVALID,\n+ 696 /* 245 empty */ TDS_TYPEFLAG_INVALID,\n+ 697 /* 246 empty */ TDS_TYPEFLAG_INVALID,\n+ 698 /* 247 empty */ TDS_TYPEFLAG_INVALID,\n+ 699 /* 248 empty */ TDS_TYPEFLAG_INVALID,\n+ 700 /* 249 empty */ TDS_TYPEFLAG_INVALID,\n+ 701 /* 250 empty */ TDS_TYPEFLAG_INVALID,\n+ 702 /* 251 empty */ TDS_TYPEFLAG_INVALID,\n+ 703 /* 252 empty */ TDS_TYPEFLAG_INVALID,\n+ 704 /* 253 empty */ TDS_TYPEFLAG_INVALID,\n+ 705 /* 254 empty */ TDS_TYPEFLAG_INVALID,\n+ 706 /* 255 empty */ TDS_TYPEFLAG_INVALID,\n+ 707};\n+ 708\n+ 709const char *const tds_type_names[256] = {\n+ 710 /* 0 */ \"\",\n+ 711 /* 1 */ \"\",\n+ 712 /* 2 */ \"\",\n+ 713 /* 3 */ \"\",\n+ 714 /* 4 */ \"\",\n+ 715 /* 5 */ \"\",\n+ 716 /* 6 */ \"\",\n+ 717 /* 7 */ \"\",\n+ 718 /* 8 */ \"\",\n+ 719 /* 9 */ \"\",\n+ 720 /* 10 */ \"\",\n+ 721 /* 11 */ \"\",\n+ 722 /* 12 */ \"\",\n+ 723 /* 13 */ \"\",\n+ 724 /* 14 */ \"\",\n+ 725 /* 15 */ \"\",\n+ 726 /* 16 */ \"\",\n+ 727 /* 17 */ \"\",\n+ 728 /* 18 */ \"\",\n+ 729 /* 19 */ \"\",\n+ 730 /* 20 */ \"\",\n+ 731 /* 21 */ \"\",\n+ 732 /* 22 */ \"\",\n+ 733 /* 23 */ \"\",\n+ 734 /* 24 */ \"\",\n+ 735 /* 25 */ \"\",\n+ 736 /* 26 */ \"\",\n+ 737 /* 27 */ \"\",\n+ 738 /* 28 */ \"\",\n+ 739 /* 29 */ \"\",\n+ 740 /* 30 */ \"\",\n+ 741 /* 31 */ \"SYBVOID\",\n+ 742 /* 32 */ \"\",\n+ 743 /* 33 */ \"\",\n+ 744 /* 34 */ \"SYBIMAGE\",\n+ 745 /* 35 */ \"SYBTEXT\",\n+ 746 /* 36 */ \"SYBUNIQUE\",\n+ 747 /* 37 */ \"SYBVARBINARY\",\n+ 748 /* 38 */ \"SYBINTN\",\n+ 749 /* 39 */ \"SYBVARCHAR\",\n+ 750 /* 40 */ \"SYBMSDATE\",\n+ 751 /* 41 */ \"SYBMSTIME\",\n+ 752 /* 42 */ \"SYBMSDATETIME2\",\n+ 753 /* 43 */ \"SYBMSDATETIMEOFFSET\",\n+ 754 /* 44 */ \"\",\n+ 755 /* 45 */ \"SYBBINARY\",\n+ 756 /* 46 */ \"SYBINTERVAL\",\n+ 757 /* 47 */ \"SYBCHAR\",\n+ 758 /* 48 */ \"SYBINT1\",\n+ 759 /* 49 */ \"SYBDATE\",\n+ 760 /* 50 */ \"SYBBIT\",\n+ 761 /* 51 */ \"SYBTIME\",\n+ 762 /* 52 */ \"SYBINT2\",\n+ 763 /* 53 */ \"\",\n+ 764 /* 54 */ \"\",\n+ 765 /* 55 */ \"\",\n+ 766 /* 56 */ \"SYBINT4\",\n+ 767 /* 57 */ \"\",\n+ 768 /* 58 */ \"SYBDATETIME4\",\n+ 769 /* 59 */ \"SYBREAL\",\n+ 770 /* 60 */ \"SYBMONEY\",\n+ 771 /* 61 */ \"SYBDATETIME\",\n+ 772 /* 62 */ \"SYBFLT8\",\n+ 773 /* 63 */ \"\",\n+ 774 /* 64 */ \"SYBUINT1\",\n+ 775 /* 65 */ \"SYBUINT2\",\n+ 776 /* 66 */ \"SYBUINT4\",\n+ 777 /* 67 */ \"SYBUINT8\",\n+ 778 /* 68 */ \"SYBUINTN\",\n+ 779 /* 69 */ \"\",\n+ 780 /* 70 */ \"\",\n+ 781 /* 71 */ \"\",\n+ 782 /* 72 */ \"\",\n+ 783 /* 73 */ \"\",\n+ 784 /* 74 */ \"\",\n+ 785 /* 75 */ \"\",\n+ 786 /* 76 */ \"\",\n+ 787 /* 77 */ \"\",\n+ 788 /* 78 */ \"\",\n+ 789 /* 79 */ \"\",\n+ 790 /* 80 */ \"\",\n+ 791 /* 81 */ \"\",\n+ 792 /* 82 */ \"\",\n+ 793 /* 83 */ \"\",\n+ 794 /* 84 */ \"\",\n+ 795 /* 85 */ \"\",\n+ 796 /* 86 */ \"\",\n+ 797 /* 87 */ \"\",\n+ 798 /* 88 */ \"\",\n+ 799 /* 89 */ \"\",\n+ 800 /* 90 */ \"\",\n+ 801 /* 91 */ \"\",\n+ 802 /* 92 */ \"\",\n+ 803 /* 93 */ \"\",\n+ 804 /* 94 */ \"\",\n+ 805 /* 95 */ \"\",\n+ 806 /* 96 */ \"\",\n+ 807 /* 97 */ \"\",\n+ 808 /* 98 */ \"SYBVARIANT\",\n+ 809 /* 99 */ \"SYBNTEXT\",\n+ 810 /* 100 */ \"\",\n+ 811 /* 101 */ \"\",\n+ 812 /* 102 */ \"\",\n+ 813 /* 103 */ \"SYBNVARCHAR or SYBSENSITIVITY\",\n+ 814 /* 104 */ \"SYBBITN or SYBBOUNDARY\",\n+ 815 /* 105 */ \"\",\n+ 816 /* 106 */ \"SYBDECIMAL\",\n+ 817 /* 107 */ \"\",\n+ 818 /* 108 */ \"SYBNUMERIC\",\n+ 819 /* 109 */ \"SYBFLTN\",\n+ 820 /* 110 */ \"SYBMONEYN\",\n+ 821 /* 111 */ \"SYBDATETIMN\",\n+ 822 /* 112 */ \"\",\n+ 823 /* 113 */ \"\",\n+ 824 /* 114 */ \"\",\n+ 825 /* 115 */ \"\",\n+ 826 /* 116 */ \"\",\n+ 827 /* 117 */ \"\",\n+ 828 /* 118 */ \"\",\n+ 829 /* 119 */ \"\",\n+ 830 /* 120 */ \"\",\n+ 831 /* 121 */ \"\",\n+ 832 /* 122 */ \"SYBMONEY4\",\n+ 833 /* 123 */ \"SYBDATEN\",\n+ 834 /* 124 */ \"\",\n+ 835 /* 125 */ \"\",\n+ 836 /* 126 */ \"\",\n+ 837 /* 127 */ \"SYBINT8\",\n+ 838 /* 128 */ \"\",\n+ 839 /* 129 */ \"\",\n+ 840 /* 130 */ \"\",\n+ 841 /* 131 */ \"\",\n+ 842 /* 132 */ \"\",\n+ 843 /* 133 */ \"\",\n+ 844 /* 134 */ \"\",\n+ 845 /* 135 */ \"\",\n+ 846 /* 136 */ \"\",\n+ 847 /* 137 */ \"\",\n+ 848 /* 138 */ \"\",\n+ 849 /* 139 */ \"\",\n+ 850 /* 140 */ \"\",\n+ 851 /* 141 */ \"\",\n+ 852 /* 142 */ \"\",\n+ 853 /* 143 */ \"\",\n+ 854 /* 144 */ \"\",\n+ 855 /* 145 */ \"\",\n+ 856 /* 146 */ \"\",\n+ 857 /* 147 */ \"SYBTIMEN\",\n+ 858 /* 148 */ \"\",\n+ 859 /* 149 */ \"\",\n+ 860 /* 150 */ \"\",\n+ 861 /* 151 */ \"\",\n+ 862 /* 152 */ \"\",\n+ 863 /* 153 */ \"\",\n+ 864 /* 154 */ \"\",\n+ 865 /* 155 */ \"\",\n+ 866 /* 156 */ \"\",\n+ 867 /* 157 */ \"\",\n+ 868 /* 158 */ \"\",\n+ 869 /* 159 */ \"\",\n+ 870 /* 160 */ \"\",\n+ 871 /* 161 */ \"\",\n+ 872 /* 162 */ \"\",\n+ 873 /* 163 */ \"SYBXML\",\n+ 874 /* 164 */ \"\",\n+ 875 /* 165 */ \"XSYBVARBINARY\",\n+ 876 /* 166 */ \"\",\n+ 877 /* 167 */ \"XSYBVARCHAR\",\n+ 878 /* 168 */ \"\",\n+ 879 /* 169 */ \"\",\n+ 880 /* 170 */ \"\",\n+ 881 /* 171 */ \"\",\n+ 882 /* 172 */ \"\",\n+ 883 /* 173 */ \"XSYBBINARY\",\n+ 884 /* 174 */ \"SYBUNITEXT\",\n+ 885 /* 175 */ \"XSYBCHAR or SYBLONGCHAR\",\n+ 886 /* 176 */ \"SYBSINT1\",\n+ 887 /* 177 */ \"\",\n+ 888 /* 178 */ \"\",\n+ 889 /* 179 */ \"\",\n+ 890 /* 180 */ \"\",\n+ 891 /* 181 */ \"\",\n+ 892 /* 182 */ \"\",\n+ 893 /* 183 */ \"\",\n+ 894 /* 184 */ \"\",\n+ 895 /* 185 */ \"\",\n+ 896 /* 186 */ \"\",\n+ 897 /* 187 */ \"SYB5BIGDATETIME\",\n+ 898 /* 188 */ \"SYB5BIGTIME\",\n+ 899 /* 189 */ \"\",\n+ 900 /* 190 */ \"\",\n+ 901 /* 191 */ \"SYB5INT8\",\n+ 902 /* 192 */ \"\",\n+ 903 /* 193 */ \"\",\n+ 904 /* 194 */ \"\",\n+ 905 /* 195 */ \"\",\n+ 906 /* 196 */ \"\",\n+ 907 /* 197 */ \"\",\n+ 908 /* 198 */ \"\",\n+ 909 /* 199 */ \"\",\n+ 910 /* 200 */ \"\",\n+ 911 /* 201 */ \"\",\n+ 912 /* 202 */ \"\",\n+ 913 /* 203 */ \"\",\n+ 914 /* 204 */ \"\",\n+ 915 /* 205 */ \"\",\n+ 916 /* 206 */ \"\",\n+ 917 /* 207 */ \"\",\n+ 918 /* 208 */ \"\",\n+ 919 /* 209 */ \"\",\n+ 920 /* 210 */ \"\",\n+ 921 /* 211 */ \"\",\n+ 922 /* 212 */ \"\",\n+ 923 /* 213 */ \"\",\n+ 924 /* 214 */ \"\",\n+ 925 /* 215 */ \"\",\n+ 926 /* 216 */ \"\",\n+ 927 /* 217 */ \"\",\n+ 928 /* 218 */ \"\",\n+ 929 /* 219 */ \"\",\n+ 930 /* 220 */ \"\",\n+ 931 /* 221 */ \"\",\n+ 932 /* 222 */ \"\",\n+ 933 /* 223 */ \"\",\n+ 934 /* 224 */ \"\",\n+ 935 /* 225 */ \"SYBLONGBINARY\",\n+ 936 /* 226 */ \"\",\n+ 937 /* 227 */ \"\",\n+ 938 /* 228 */ \"\",\n+ 939 /* 229 */ \"\",\n+ 940 /* 230 */ \"\",\n+ 941 /* 231 */ \"XSYBNVARCHAR\",\n+ 942 /* 232 */ \"\",\n+ 943 /* 233 */ \"\",\n+ 944 /* 234 */ \"\",\n+ 945 /* 235 */ \"\",\n+ 946 /* 236 */ \"\",\n+ 947 /* 237 */ \"\",\n+ 948 /* 238 */ \"\",\n+ 949 /* 239 */ \"XSYBNCHAR\",\n+ 950 /* 240 */ \"SYBMSUDT\",\n+ 951 /* 241 */ \"SYBMSXML\",\n+ 952 /* 242 */ \"\",\n+ 953 /* 243 */ \"\",\n+ 954 /* 244 */ \"\",\n+ 955 /* 245 */ \"\",\n+ 956 /* 246 */ \"\",\n+ 957 /* 247 */ \"\",\n+ 958 /* 248 */ \"\",\n+ 959 /* 249 */ \"\",\n+ 960 /* 250 */ \"\",\n+ 961 /* 251 */ \"\",\n+ 962 /* 252 */ \"\",\n+ 963 /* 253 */ \"\",\n+ 964 /* 254 */ \"\",\n+ 965 /* 255 */ \"\",\n+ 966};\n+ 967#endif\n+tds_connection\n+Definition tds.h:1091\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00290_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00290_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/apps/fisql/handlers.h Source File\n+FreeTDS API: src/pool/pool.h Source File\n \n \n \n \n \n \n \n@@ -70,47 +70,210 @@\n
    \n \n \n \n \n
    \n \n+
  • src
  • pool
  • \n
    \n \n
    \n-
    handlers.h
    \n+
    pool.h
    \n
    \n
    \n-
    1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano
    \n-
    2 *
    \n-
    3 * This program is free software; you can redistribute it and/or
    \n-
    4 * modify it under the terms of the GNU General Public
    \n-
    5 * License as published by the Free Software Foundation; either
    \n-
    6 * version 2 of the License, or (at your option) any later version.
    \n-
    7 *
    \n-
    8 * This library is distributed in the hope that it will be useful,
    \n-
    9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    11 * Library General Public License for more details.
    \n-
    12 *
    \n-
    13 * You should have received a copy of the GNU General Public
    \n-
    14 * License along with this library; if not, write to the
    \n-
    15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    16 * Boston, MA 02111-1307, USA.
    \n-
    17 */
    \n-
    18
    \n-
    19/* $Id: handlers.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */
    \n-
    20extern int global_errorlevel;
    \n-
    21
    \n-
    22int err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    \n-
    23
    \n-
    24int msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate,
    \n-
    25 int severity, char *msgtext, char *srvname, char *procname, int line);
    \n-
    Definition dblib.h:123
    \n+
    1/* TDSPool - Connection pooling for TDS based databases
    \n+
    2 * Copyright (C) 2001 Brian Bruns
    \n+
    3 *
    \n+
    4 * This program is free software; you can redistribute it and/or modify
    \n+
    5 * it under the terms of the GNU General Public License as published by
    \n+
    6 * the Free Software Foundation; either version 2 of the License, or
    \n+
    7 * (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This program is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    \n+
    12 * GNU General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU General Public License
    \n+
    15 * along with this program; if not, write to the Free Software
    \n+
    16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    \n+
    17 *
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _pool_h_
    \n+
    21#define _pool_h_
    \n+
    22
    \n+
    23#include <assert.h>
    \n+
    24
    \n+
    25#if HAVE_SYS_TYPES_H
    \n+
    26#include <sys/types.h>
    \n+
    27#endif
    \n+
    28
    \n+
    29#if HAVE_NETINET_IN_H
    \n+
    30#include <netinet/in.h>
    \n+
    31#endif
    \n+
    32
    \n+
    33/*
    \n+
    34 * POSIX says fd_set type may be defined in either sys/select.h or sys/time.h.
    \n+
    35 */
    \n+
    36#if HAVE_SYS_TIME_H
    \n+
    37#include <sys/time.h>
    \n+
    38#endif
    \n+
    39
    \n+
    40#include <freetds/tds.h>
    \n+
    41#include <freetds/utils/dlist.h>
    \n+
    42
    \n+
    43/* defines */
    \n+
    44#define PGSIZ 2048
    \n+
    45#define BLOCKSIZ 512
    \n+
    46#define MAX_POOL_USERS 1024
    \n+
    47
    \n+
    48/* enums and typedefs */
    \n+
    49typedef enum
    \n+
    50{
    \n+
    51 TDS_SRV_WAIT, /* if no members are free wait */
    \n+
    52 TDS_SRV_QUERY,
    \n+
    53} TDS_USER_STATE;
    \n+
    54
    \n+
    55/* forward declaration */
    \n+
    56typedef struct tds_pool_event TDS_POOL_EVENT;
    \n+
    57typedef struct tds_pool_socket TDS_POOL_SOCKET;
    \n+
    58typedef struct tds_pool_member TDS_POOL_MEMBER;
    \n+
    59typedef struct tds_pool_user TDS_POOL_USER;
    \n+
    60typedef struct tds_pool TDS_POOL;
    \n+
    61typedef void (*TDS_POOL_EXECUTE)(TDS_POOL_EVENT *event);
    \n+
    62
    \n+
    \n+\n+
    64{
    \n+
    65 TDS_POOL_EVENT *next;
    \n+
    66 TDS_POOL_EXECUTE execute;
    \n+
    67};
    \n+
    \n+
    68
    \n+
    \n+\n+
    70{
    \n+
    71 TDSSOCKET *tds;
    \n+
    72 bool poll_recv;
    \n+
    73 bool poll_send;
    \n+
    74};
    \n+
    \n+
    75
    \n+
    \n+\n+
    77{
    \n+
    78 TDS_POOL_SOCKET sock;
    \n+
    79 DLIST_FIELDS(dlist_user_item);
    \n+
    80 TDSLOGIN *login;
    \n+
    81 TDS_USER_STATE user_state;
    \n+
    82 TDS_POOL_MEMBER *assigned_member;
    \n+
    83};
    \n+
    \n+
    84
    \n+
    \n+\n+
    86{
    \n+
    87 TDS_POOL_SOCKET sock;
    \n+
    88 DLIST_FIELDS(dlist_member_item);
    \n+
    89 bool doing_async;
    \n+
    90 time_t last_used_tm;
    \n+
    91 TDS_POOL_USER *current_user;
    \n+
    92};
    \n+
    \n+
    93
    \n+
    94#define DLIST_PREFIX dlist_member
    \n+
    95#define DLIST_LIST_TYPE dlist_members
    \n+
    96#define DLIST_ITEM_TYPE TDS_POOL_MEMBER
    \n+
    97#include <freetds/utils/dlist.tmpl.h>
    \n+
    98
    \n+
    99#define DLIST_PREFIX dlist_user
    \n+
    100#define DLIST_LIST_TYPE dlist_users
    \n+
    101#define DLIST_ITEM_TYPE TDS_POOL_USER
    \n+
    102#include <freetds/utils/dlist.tmpl.h>
    \n+
    103
    \n+
    \n+\n+
    105{
    \n+
    106 char *name;
    \n+
    107 char *user;
    \n+
    108 char *password;
    \n+
    109 char *server;
    \n+
    110 char *database;
    \n+
    111 char *server_user;
    \n+
    112 char *server_password;
    \n+
    113 int port;
    \n+
    114 int max_member_age; /* in seconds */
    \n+
    115 int min_open_conn;
    \n+
    116 int max_open_conn;
    \n+
    117 tds_mutex events_mtx;
    \n+
    118 TDS_SYS_SOCKET listen_fd;
    \n+
    119 TDS_SYS_SOCKET wakeup_fd;
    \n+
    120 TDS_SYS_SOCKET event_fd;
    \n+
    121 TDS_POOL_EVENT *events;
    \n+
    122
    \n+
    123 int num_active_members;
    \n+
    124 dlist_members active_members;
    \n+
    125 dlist_members idle_members;
    \n+
    126
    \n+
    128 dlist_users waiters;
    \n+
    129 int num_users;
    \n+
    130 dlist_users users;
    \n+
    131 TDSCONTEXT *ctx;
    \n+
    132
    \n+
    133 unsigned long user_logins;
    \n+
    134 unsigned long member_logins;
    \n+
    135};
    \n+
    \n+
    136
    \n+
    137/* prototypes */
    \n+
    138
    \n+
    139/* member.c */
    \n+
    140int pool_process_members(TDS_POOL * pool, fd_set * rfds, fd_set * wfds);
    \n+
    141TDS_POOL_MEMBER *pool_assign_idle_member(TDS_POOL * pool, TDS_POOL_USER *user);
    \n+
    142void pool_mbr_init(TDS_POOL * pool);
    \n+
    143void pool_mbr_destroy(TDS_POOL * pool);
    \n+
    144void pool_free_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);
    \n+
    145void pool_assign_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr, TDS_POOL_USER *puser);
    \n+
    146void pool_deassign_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);
    \n+
    147void pool_reset_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);
    \n+
    148bool pool_packet_read(TDSSOCKET * tds);
    \n+
    149
    \n+
    150/* user.c */
    \n+
    151void pool_process_users(TDS_POOL * pool, fd_set * rfds, fd_set * wfds);
    \n+
    152void pool_user_init(TDS_POOL * pool);
    \n+
    153void pool_user_destroy(TDS_POOL * pool);
    \n+
    154TDS_POOL_USER *pool_user_create(TDS_POOL * pool, TDS_SYS_SOCKET s);
    \n+
    155void pool_free_user(TDS_POOL * pool, TDS_POOL_USER * puser);
    \n+
    156void pool_user_query(TDS_POOL * pool, TDS_POOL_USER * puser);
    \n+
    157bool pool_user_send_login_ack(TDS_POOL * pool, TDS_POOL_USER * puser);
    \n+
    158void pool_user_finish_login(TDS_POOL * pool, TDS_POOL_USER * puser);
    \n+
    159
    \n+
    160/* util.c */
    \n+
    161void dump_login(TDSLOGIN * login);
    \n+
    162void pool_event_add(TDS_POOL *pool, TDS_POOL_EVENT *ev, TDS_POOL_EXECUTE execute);
    \n+
    163int pool_write(TDS_SYS_SOCKET sock, const void *buf, size_t len);
    \n+
    164bool pool_write_data(TDS_POOL_SOCKET *from, TDS_POOL_SOCKET *to);
    \n+
    165
    \n+
    166/* config.c */
    \n+
    167bool pool_read_conf_files(const char *path, const char *poolname, TDS_POOL * pool, char **err);
    \n+
    168
    \n+
    169
    \n+
    170#endif
    \n+
    Main include file for libtds.
    \n+
    Definition pool.h:64
    \n+
    Definition pool.h:70
    \n+
    Definition pool.h:77
    \n+
    Definition pool.h:86
    \n+
    Definition pool.h:105
    \n+
    dlist_users waiters
    users in wait state
    Definition pool.h:128
    \n+
    Definition tds.h:517
    \n+
    Definition tds.h:1029
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,41 +6,209 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * src\n- * apps\n- * fisql\n-handlers.h\n- 1/* Free ISQL - An isql for DB-Library (C) 2007 Nicholas S. Castellano\n- 2 *\n- 3 * This program is free software; you can redistribute it and/or\n- 4 * modify it under the terms of the GNU General Public\n- 5 * License as published by the Free Software Foundation; either\n- 6 * version 2 of the License, or (at your option) any later version.\n- 7 *\n- 8 * This library is distributed in the hope that it will be useful,\n- 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 11 * Library General Public License for more details.\n- 12 *\n- 13 * You should have received a copy of the GNU General Public\n- 14 * License along with this library; if not, write to the\n- 15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 16 * Boston, MA 02111-1307, USA.\n- 17 */\n- 18\n- 19/* $Id: handlers.h,v 1.4 2007-01-20 06:32:27 castellano Exp $ */\n- 20extern int global_errorlevel;\n- 21\n- 22int err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char\n-*dberrstr, char *oserrstr);\n- 23\n- 24int msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate,\n- 25 int severity, char *msgtext, char *srvname, char *procname, int line);\n-tds_dblib_dbprocess\n-Definition dblib.h:123\n+ * pool\n+pool.h\n+ 1/* TDSPool - Connection pooling for TDS based databases\n+ 2 * Copyright (C) 2001 Brian Bruns\n+ 3 *\n+ 4 * This program is free software; you can redistribute it and/or modify\n+ 5 * it under the terms of the GNU General Public License as published by\n+ 6 * the Free Software Foundation; either version 2 of the License, or\n+ 7 * (at your option) any later version.\n+ 8 *\n+ 9 * This program is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ 12 * GNU General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU General Public License\n+ 15 * along with this program; if not, write to the Free Software\n+ 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n+ 17 *\n+ 18 */\n+ 19\n+ 20#ifndef _pool_h_\n+ 21#define _pool_h_\n+ 22\n+ 23#include \n+ 24\n+ 25#if HAVE_SYS_TYPES_H\n+ 26#include \n+ 27#endif\n+ 28\n+ 29#if HAVE_NETINET_IN_H\n+ 30#include \n+ 31#endif\n+ 32\n+ 33/*\n+ 34 * POSIX says fd_set type may be defined in either sys/select.h or sys/\n+time.h.\n+ 35 */\n+ 36#if HAVE_SYS_TIME_H\n+ 37#include \n+ 38#endif\n+ 39\n+ 40#include \n+ 41#include \n+ 42\n+ 43/* defines */\n+ 44#define PGSIZ 2048\n+ 45#define BLOCKSIZ 512\n+ 46#define MAX_POOL_USERS 1024\n+ 47\n+ 48/* enums and typedefs */\n+ 49typedef enum\n+ 50{\n+ 51 TDS_SRV_WAIT, /* if no members are free wait */\n+ 52 TDS_SRV_QUERY,\n+ 53} TDS_USER_STATE;\n+ 54\n+ 55/* forward declaration */\n+ 56typedef struct tds_pool_event TDS_POOL_EVENT;\n+ 57typedef struct tds_pool_socket TDS_POOL_SOCKET;\n+ 58typedef struct tds_pool_member TDS_POOL_MEMBER;\n+ 59typedef struct tds_pool_user TDS_POOL_USER;\n+ 60typedef struct tds_pool TDS_POOL;\n+ 61typedef void (*TDS_POOL_EXECUTE)(TDS_POOL_EVENT *event);\n+ 62\n+63struct tds_pool_event\n+ 64{\n+ 65 TDS_POOL_EVENT *next;\n+ 66 TDS_POOL_EXECUTE execute;\n+ 67};\n+ 68\n+69struct tds_pool_socket\n+ 70{\n+ 71 TDSSOCKET *tds;\n+ 72 bool poll_recv;\n+ 73 bool poll_send;\n+ 74};\n+ 75\n+76struct tds_pool_user\n+ 77{\n+ 78 TDS_POOL_SOCKET sock;\n+ 79 DLIST_FIELDS(dlist_user_item);\n+ 80 TDSLOGIN *login;\n+ 81 TDS_USER_STATE user_state;\n+ 82 TDS_POOL_MEMBER *assigned_member;\n+ 83};\n+ 84\n+85struct tds_pool_member\n+ 86{\n+ 87 TDS_POOL_SOCKET sock;\n+ 88 DLIST_FIELDS(dlist_member_item);\n+ 89 bool doing_async;\n+ 90 time_t last_used_tm;\n+ 91 TDS_POOL_USER *current_user;\n+ 92};\n+ 93\n+ 94#define DLIST_PREFIX dlist_member\n+ 95#define DLIST_LIST_TYPE dlist_members\n+ 96#define DLIST_ITEM_TYPE TDS_POOL_MEMBER\n+ 97#include \n+ 98\n+ 99#define DLIST_PREFIX dlist_user\n+ 100#define DLIST_LIST_TYPE dlist_users\n+ 101#define DLIST_ITEM_TYPE TDS_POOL_USER\n+ 102#include \n+ 103\n+104struct tds_pool\n+ 105{\n+ 106 char *name;\n+ 107 char *user;\n+ 108 char *password;\n+ 109 char *server;\n+ 110 char *database;\n+ 111 char *server_user;\n+ 112 char *server_password;\n+ 113 int port;\n+ 114 int max_member_age; /* in seconds */\n+ 115 int min_open_conn;\n+ 116 int max_open_conn;\n+ 117 tds_mutex events_mtx;\n+ 118 TDS_SYS_SOCKET listen_fd;\n+ 119 TDS_SYS_SOCKET wakeup_fd;\n+ 120 TDS_SYS_SOCKET event_fd;\n+ 121 TDS_POOL_EVENT *events;\n+ 122\n+ 123 int num_active_members;\n+ 124 dlist_members active_members;\n+ 125 dlist_members idle_members;\n+ 126\n+128 dlist_users waiters;\n+ 129 int num_users;\n+ 130 dlist_users users;\n+ 131 TDSCONTEXT *ctx;\n+ 132\n+ 133 unsigned long user_logins;\n+ 134 unsigned long member_logins;\n+ 135};\n+ 136\n+ 137/* prototypes */\n+ 138\n+ 139/* member.c */\n+ 140int pool_process_members(TDS_POOL * pool, fd_set * rfds, fd_set * wfds);\n+ 141TDS_POOL_MEMBER *pool_assign_idle_member(TDS_POOL * pool, TDS_POOL_USER\n+*user);\n+ 142void pool_mbr_init(TDS_POOL * pool);\n+ 143void pool_mbr_destroy(TDS_POOL * pool);\n+ 144void pool_free_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);\n+ 145void pool_assign_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr,\n+TDS_POOL_USER *puser);\n+ 146void pool_deassign_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);\n+ 147void pool_reset_member(TDS_POOL *pool, TDS_POOL_MEMBER * pmbr);\n+ 148bool pool_packet_read(TDSSOCKET * tds);\n+ 149\n+ 150/* user.c */\n+ 151void pool_process_users(TDS_POOL * pool, fd_set * rfds, fd_set * wfds);\n+ 152void pool_user_init(TDS_POOL * pool);\n+ 153void pool_user_destroy(TDS_POOL * pool);\n+ 154TDS_POOL_USER *pool_user_create(TDS_POOL * pool, TDS_SYS_SOCKET s);\n+ 155void pool_free_user(TDS_POOL * pool, TDS_POOL_USER * puser);\n+ 156void pool_user_query(TDS_POOL * pool, TDS_POOL_USER * puser);\n+ 157bool pool_user_send_login_ack(TDS_POOL * pool, TDS_POOL_USER * puser);\n+ 158void pool_user_finish_login(TDS_POOL * pool, TDS_POOL_USER * puser);\n+ 159\n+ 160/* util.c */\n+ 161void dump_login(TDSLOGIN * login);\n+ 162void pool_event_add(TDS_POOL *pool, TDS_POOL_EVENT *ev, TDS_POOL_EXECUTE\n+execute);\n+ 163int pool_write(TDS_SYS_SOCKET sock, const void *buf, size_t len);\n+ 164bool pool_write_data(TDS_POOL_SOCKET *from, TDS_POOL_SOCKET *to);\n+ 165\n+ 166/* config.c */\n+ 167bool pool_read_conf_files(const char *path, const char *poolname, TDS_POOL\n+* pool, char **err);\n+ 168\n+ 169\n+ 170#endif\n+tds.h\n+Main include file for libtds.\n+tds_pool_event\n+Definition pool.h:64\n+tds_pool_socket\n+Definition pool.h:70\n+tds_pool_user\n+Definition pool.h:77\n+tds_pool_member\n+Definition pool.h:86\n+tds_pool\n+Definition pool.h:105\n+tds_pool::waiters\n+dlist_users waiters\n+users in wait state\n+Definition pool.h:128\n+tds_login\n+Definition tds.h:517\n+tds_context\n+Definition tds.h:1029\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00344_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00344_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/config.h Source File\n+FreeTDS API: include/sybfront.h Source File\n \n \n \n \n \n \n \n@@ -74,796 +74,64 @@\n \n
    \n \n
    \n
    \n
    \n-
    config.h
    \n+
    sybfront.h
    \n
    \n
    \n-
    1/* include/config.h. Generated from config.h.in by configure. */
    \n-
    2/* include/config.h.in. Generated from configure.ac by autoheader. */
    \n-
    3
    \n-
    4#define _freetds_config_h_
    \n-
    5
    \n-
    6/* Define if building universal (internal helper macro) */
    \n-
    7/* #undef AC_APPLE_UNIVERSAL_BUILD */
    \n-
    8
    \n-
    9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */
    \n-
    10/* #undef BSD_COMP */
    \n-
    11
    \n-
    12/* Define to 1 if using 'alloca.c'. */
    \n-
    13/* #undef C_ALLOCA */
    \n-
    14
    \n-
    15/* Define to enable work in progress code */
    \n-
    16/* #undef ENABLE_DEVELOPING */
    \n-
    17
    \n-
    18/* Define to enable extra checks on code */
    \n-
    19/* #undef ENABLE_EXTRA_CHECKS */
    \n-
    20
    \n-
    21/* Defined if --enable-krb5 used and library detected */
    \n-
    22#define ENABLE_KRB5 1
    \n-
    23
    \n-
    24/* Define to enable MARS support */
    \n-
    25#define ENABLE_ODBC_MARS 1
    \n-
    26
    \n-
    27/* Define to enable ODBC wide string support */
    \n-
    28#define ENABLE_ODBC_WIDE 1
    \n-
    29
    \n-
    30/* Define to 1 if GNU tls use nettle as backend. */
    \n-
    31#define GNUTLS_USE_NETTLE 1
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef SYBFRONT_h
    \n+
    21#define SYBFRONT_h
    \n+
    22
    \n+
    23#include "sybdb.h"
    \n+
    24
    \n+
    25#ifdef __cplusplus
    \n+
    26extern "C"
    \n+
    27{
    \n+
    28#if 0
    \n+
    29}
    \n+
    30#endif
    \n+
    31#endif
    \n
    32
    \n-
    33/* Define to 1 if you have the `alarm' function. */
    \n-
    34#define HAVE_ALARM 1
    \n+
    33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12:42:12 freddy77 Exp $";
    \n+
    34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, no_unused_sybfront_h_warn };
    \n
    35
    \n-
    36/* Define to 1 if you have 'alloca', as a function or macro. */
    \n-
    37#define HAVE_ALLOCA 1
    \n-
    38
    \n-
    39/* Define to 1 if <alloca.h> works. */
    \n-
    40#define HAVE_ALLOCA_H 1
    \n-
    41
    \n-
    42/* Define to 1 if you have the <arpa/inet.h> header file. */
    \n-
    43#define HAVE_ARPA_INET_H 1
    \n+
    36
    \n+
    37
    \n+
    38#ifdef __cplusplus
    \n+
    39#if 0
    \n+
    40{
    \n+
    41#endif
    \n+
    42}
    \n+
    43#endif
    \n
    44
    \n-
    45/* Define to 1 if you have the `ASN1_STRING_get0_data' function. */
    \n-
    46/* #undef HAVE_ASN1_STRING_GET0_DATA */
    \n-
    47
    \n-
    48/* Define to 1 if you have the `asprintf' function. */
    \n-
    49#define HAVE_ASPRINTF 1
    \n-
    50
    \n-
    51/* Define to 1 if you have the `basename' function. */
    \n-
    52#define HAVE_BASENAME 1
    \n-
    53
    \n-
    54/* Define to 1 if you have the `BIO_get_data' function. */
    \n-
    55/* #undef HAVE_BIO_GET_DATA */
    \n-
    56
    \n-
    57/* Define if you have the clock_gettime function. */
    \n-
    58#define HAVE_CLOCK_GETTIME 1
    \n-
    59
    \n-
    60/* Define to 1 if you have the <com_err.h> header file. */
    \n-
    61#define HAVE_COM_ERR_H 1
    \n-
    62
    \n-
    63/* Define to 1 if you have the `daemon' function. */
    \n-
    64#define HAVE_DAEMON 1
    \n-
    65
    \n-
    66/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
    \n-
    67 */
    \n-
    68/* #undef HAVE_DECL_TZNAME */
    \n-
    69
    \n-
    70/* Define to 1 if you have the <dirent.h> header file. */
    \n-
    71#define HAVE_DIRENT_H 1
    \n-
    72
    \n-
    73/* Define to 1 if you have the <dlfcn.h> header file. */
    \n-
    74#define HAVE_DLFCN_H 1
    \n-
    75
    \n-
    76/* Define to 1 if you have the <errno.h> header file. */
    \n-
    77#define HAVE_ERRNO_H 1
    \n-
    78
    \n-
    79/* Define to 1 if you have the `error_message' function. */
    \n-
    80/* #undef HAVE_ERROR_MESSAGE */
    \n-
    81
    \n-
    82/* Define to 1 if you have the `eventfd' function. */
    \n-
    83#define HAVE_EVENTFD 1
    \n-
    84
    \n-
    85/* Define to 1 if you have the <fcntl.h> header file. */
    \n-
    86#define HAVE_FCNTL_H 1
    \n-
    87
    \n-
    88/* Define to 1 if you have the `fork' function. */
    \n-
    89#define HAVE_FORK 1
    \n-
    90
    \n-
    91/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
    \n-
    92#define HAVE_FSEEKO 1
    \n-
    93
    \n-
    94/* Define to 1 if you have the `fstat' function. */
    \n-
    95#define HAVE_FSTAT 1
    \n-
    96
    \n-
    97/* Define to 1 if your system provides the 5-parameter version of
    \n-
    98 gethostbyaddr_r(). */
    \n-
    99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */
    \n-
    100
    \n-
    101/* Define to 1 if your system provides the 7-parameter version of
    \n-
    102 gethostbyaddr_r(). */
    \n-
    103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */
    \n-
    104
    \n-
    105/* Define to 1 if your system provides the 8-parameter version of
    \n-
    106 gethostbyaddr_r(). */
    \n-
    107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1
    \n-
    108
    \n-
    109/* Define to 1 if your system provides the 3-parameter version of
    \n-
    110 gethostbyname_r(). */
    \n-
    111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */
    \n-
    112
    \n-
    113/* Define to 1 if your system provides the 5-parameter version of
    \n-
    114 gethostbyname_r(). */
    \n-
    115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */
    \n-
    116
    \n-
    117/* Define to 1 if your system provides the 6-parameter version of
    \n-
    118 gethostbyname_r(). */
    \n-
    119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1
    \n-
    120
    \n-
    121/* Define to 1 if your system provides the 4-parameter version of
    \n-
    122 getpwuid_r(). */
    \n-
    123/* #undef HAVE_FUNC_GETPWUID_R_4 */
    \n-
    124
    \n-
    125/* Define to 1 if your system getpwuid_r() have 4 parameters and return struct
    \n-
    126 passwd*. */
    \n-
    127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */
    \n-
    128
    \n-
    129/* Define to 1 if your system provides the 5-parameter version of
    \n-
    130 getpwuid_r(). */
    \n-
    131#define HAVE_FUNC_GETPWUID_R_5 1
    \n-
    132
    \n-
    133/* Define to 1 if your system provides the 4-parameter version of
    \n-
    134 getservbyname_r(). */
    \n-
    135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */
    \n-
    136
    \n-
    137/* Define to 1 if your system provides the 5-parameter version of
    \n-
    138 getservbyname_r(). */
    \n-
    139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */
    \n-
    140
    \n-
    141/* Define to 1 if your system provides the 6-parameter version of
    \n-
    142 getservbyname_r(). */
    \n-
    143#define HAVE_FUNC_GETSERVBYNAME_R_6 1
    \n-
    144
    \n-
    145/* Define to 1 if your localtime_r return a int. */
    \n-
    146/* #undef HAVE_FUNC_LOCALTIME_R_INT */
    \n-
    147
    \n-
    148/* Define to 1 if your localtime_r return a struct tm*. */
    \n-
    149#define HAVE_FUNC_LOCALTIME_R_TM 1
    \n-
    150
    \n-
    151/* Define if you have getaddrinfo function */
    \n-
    152#define HAVE_GETADDRINFO 1
    \n-
    153
    \n-
    154/* Define to 1 if you have the `gethostname' function. */
    \n-
    155#define HAVE_GETHOSTNAME 1
    \n-
    156
    \n-
    157/* Define to 1 if you have the `gethrtime' function. */
    \n-
    158/* #undef HAVE_GETHRTIME */
    \n-
    159
    \n-
    160/* Define to 1 if you have the `getipnodebyaddr' function. */
    \n-
    161/* #undef HAVE_GETIPNODEBYADDR */
    \n-
    162
    \n-
    163/* Define to 1 if you have the `getipnodebyname' function. */
    \n-
    164/* #undef HAVE_GETIPNODEBYNAME */
    \n-
    165
    \n-
    166/* Define to 1 if you have the `getopt' function. */
    \n-
    167#define HAVE_GETOPT 1
    \n-
    168
    \n-
    169/* Define to 1 if you have the <getopt.h> header file. */
    \n-
    170#define HAVE_GETOPT_H 1
    \n-
    171
    \n-
    172/* Define if your getopt(3) defines and uses optreset */
    \n-
    173/* #undef HAVE_GETOPT_OPTRESET */
    \n-
    174
    \n-
    175/* Define to 1 if you have the `getpwuid' function. */
    \n-
    176#define HAVE_GETPWUID 1
    \n-
    177
    \n-
    178/* Define to 1 if you have the `getpwuid_r' function. */
    \n-
    179#define HAVE_GETPWUID_R 1
    \n-
    180
    \n-
    181/* Define to 1 if you have the `gettimeofday' function. */
    \n-
    182#define HAVE_GETTIMEOFDAY 1
    \n-
    183
    \n-
    184/* Define to 1 if you have the `getuid' function. */
    \n-
    185#define HAVE_GETUID 1
    \n-
    186
    \n-
    187/* Define if you have GMP library */
    \n-
    188#define HAVE_GMP 1
    \n-
    189
    \n-
    190/* Define to 1 if you have GnuTLS. */
    \n-
    191#define HAVE_GNUTLS 1
    \n-
    192
    \n-
    193/* Define to 1 if you have the <gnutls/abstract.h> header file. */
    \n-
    194#define HAVE_GNUTLS_ABSTRACT_H 1
    \n-
    195
    \n-
    196/* Define to 1 if you have the `gnutls_certificate_set_verify_function'
    \n-
    197 function. */
    \n-
    198#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1
    \n-
    199
    \n-
    200/* Define to 1 if you have the `gnutls_record_disable_padding' function. */
    \n-
    201#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1
    \n-
    202
    \n-
    203/* Define to 1 if you have the `gnutls_rnd' function. */
    \n-
    204#define HAVE_GNUTLS_RND 1
    \n-
    205
    \n-
    206/* Define if you have the iconv() function and it works. */
    \n-
    207#define HAVE_ICONV 1
    \n-
    208
    \n-
    209/* Define to 1 if you have the `inet_ntoa_r' function. */
    \n-
    210/* #undef HAVE_INET_NTOA_R */
    \n-
    211
    \n-
    212/* Define to 1 if you have the `inet_ntop' function. */
    \n-
    213#define HAVE_INET_NTOP 1
    \n-
    214
    \n-
    215/* Define to 1 if you have the <inttypes.h> header file. */
    \n-
    216#define HAVE_INTTYPES_H 1
    \n-
    217
    \n-
    218/* Define to 1 if you have the <iodbcinst.h> header file. */
    \n-
    219/* #undef HAVE_IODBCINST_H */
    \n-
    220
    \n-
    221/* Define to 1 if you have the <langinfo.h> header file. */
    \n-
    222#define HAVE_LANGINFO_H 1
    \n-
    223
    \n-
    224/* Define to 1 if you have the <libgen.h> header file. */
    \n-
    225#define HAVE_LIBGEN_H 1
    \n-
    226
    \n-
    227/* Define to 1 if you have the <limits.h> header file. */
    \n-
    228#define HAVE_LIMITS_H 1
    \n-
    229
    \n-
    230/* Define to 1 if you have the <localcharset.h> header file. */
    \n-
    231/* #undef HAVE_LOCALCHARSET_H */
    \n-
    232
    \n-
    233/* Define to 1 if you have the `locale_charset' function. */
    \n-
    234/* #undef HAVE_LOCALE_CHARSET */
    \n-
    235
    \n-
    236/* Define to 1 if you have the <locale.h> header file. */
    \n-
    237#define HAVE_LOCALE_H 1
    \n-
    238
    \n-
    239/* Define to 1 if you have the `localtime_r' function. */
    \n-
    240#define HAVE_LOCALTIME_R 1
    \n-
    241
    \n-
    242/* Define to 1 if you have the <malloc.h> header file. */
    \n-
    243#define HAVE_MALLOC_H 1
    \n-
    244
    \n-
    245/* Define to 1 if your system provides the malloc_options variable. */
    \n-
    246/* #undef HAVE_MALLOC_OPTIONS */
    \n-
    247
    \n-
    248/* Define to 1 if you have the <minix/config.h> header file. */
    \n-
    249/* #undef HAVE_MINIX_CONFIG_H */
    \n-
    250
    \n-
    251/* Define to 1 if you have the `nanosleep' function. */
    \n-
    252#define HAVE_NANOSLEEP 1
    \n-
    253
    \n-
    254/* Define to 1 if you have the <netdb.h> header file. */
    \n-
    255#define HAVE_NETDB_H 1
    \n-
    256
    \n-
    257/* Define to 1 if you have the <netinet/in.h> header file. */
    \n-
    258#define HAVE_NETINET_IN_H 1
    \n-
    259
    \n-
    260/* Define to 1 if you have the <netinet/tcp.h> header file. */
    \n-
    261#define HAVE_NETINET_TCP_H 1
    \n-
    262
    \n-
    263/* Define to 1 if nettle is present. */
    \n-
    264#define HAVE_NETTLE 1
    \n-
    265
    \n-
    266/* Define to 1 if you have the `nl_langinfo' function. */
    \n-
    267#define HAVE_NL_LANGINFO 1
    \n-
    268
    \n-
    269/* Define to 1 if you have the <odbcss.h> header file. */
    \n-
    270/* #undef HAVE_ODBCSS_H */
    \n-
    271
    \n-
    272/* Define if you have the OpenSSL. */
    \n-
    273/* #undef HAVE_OPENSSL */
    \n-
    274
    \n-
    275/* Define to 1 if you have the <paths.h> header file. */
    \n-
    276#define HAVE_PATHS_H 1
    \n-
    277
    \n-
    278/* Define to 1 if you have the `poll' function. */
    \n-
    279#define HAVE_POLL 1
    \n-
    280
    \n-
    281/* Define to 1 if you have the <poll.h> header file. */
    \n-
    282#define HAVE_POLL_H 1
    \n-
    283
    \n-
    284/* Define if you have POSIX threads libraries and header files. */
    \n-
    285#define HAVE_PTHREAD 1
    \n-
    286
    \n-
    287/* Define to 1 if you have the `pthread_condattr_setclock' function. */
    \n-
    288#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
    \n-
    289
    \n-
    290/* Define to 1 if you have the `pthread_cond_timedwait' function. */
    \n-
    291#define HAVE_PTHREAD_COND_TIMEDWAIT 1
    \n-
    292
    \n-
    293/* Define to 1 if you have the `pthread_cond_timedwait_relative_np' function.
    \n-
    294 */
    \n-
    295/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */
    \n-
    296
    \n-
    297/* Define to 1 if you have the `putenv' function. */
    \n-
    298#define HAVE_PUTENV 1
    \n-
    299
    \n-
    300/* Define to 1 if you have the `readdir_r' function. */
    \n-
    301#define HAVE_READDIR_R 1
    \n-
    302
    \n-
    303/* Define to 1 if you have the GNU Readline library. */
    \n-
    304#define HAVE_READLINE 1
    \n-
    305
    \n-
    306/* Define to 1 if you have the `readpassphrase' function. */
    \n-
    307/* #undef HAVE_READPASSPHRASE */
    \n-
    308
    \n-
    309/* Define to 1 if you have rl_inhibit_completion. */
    \n-
    310#define HAVE_RL_INHIBIT_COMPLETION 1
    \n-
    311
    \n-
    312/* Define to 1 if you have the `rl_on_new_line' function. */
    \n-
    313#define HAVE_RL_ON_NEW_LINE 1
    \n-
    314
    \n-
    315/* Define to 1 if you have the `rl_reset_line_state' function. */
    \n-
    316#define HAVE_RL_RESET_LINE_STATE 1
    \n-
    317
    \n-
    318/* Define to 1 if you have the <roken.h> header file. */
    \n-
    319/* #undef HAVE_ROKEN_H */
    \n-
    320
    \n-
    321/* Define to 1 if you have the `RSA_get0_key' function. */
    \n-
    322/* #undef HAVE_RSA_GET0_KEY */
    \n-
    323
    \n-
    324/* Define to 1 if you have the `setenv' function. */
    \n-
    325#define HAVE_SETENV 1
    \n-
    326
    \n-
    327/* Define to 1 if you have the `setitimer' function. */
    \n-
    328#define HAVE_SETITIMER 1
    \n-
    329
    \n-
    330/* Define to 1 if you have the `setrlimit' function. */
    \n-
    331#define HAVE_SETRLIMIT 1
    \n-
    332
    \n-
    333/* Define to 1 if you have the <signal.h> header file. */
    \n-
    334#define HAVE_SIGNAL_H 1
    \n-
    335
    \n-
    336/* Define to 1 if you have the `socketpair' function. */
    \n-
    337#define HAVE_SOCKETPAIR 1
    \n-
    338
    \n-
    339/* Define to 1 if you have the SQLGetPrivateProfileString function. */
    \n-
    340#define HAVE_SQLGETPRIVATEPROFILESTRING 1
    \n-
    341
    \n-
    342/* Define if sqltypes.h define SQLLEN */
    \n-
    343#define HAVE_SQLLEN 1
    \n-
    344
    \n-
    345/* Define to 1 if the system has the type `SQLROWOFFSET'. */
    \n-
    346#define HAVE_SQLROWOFFSET 1
    \n-
    347
    \n-
    348/* Define to 1 if the system has the type `SQLROWSETSIZE'. */
    \n-
    349#define HAVE_SQLROWSETSIZE 1
    \n-
    350
    \n-
    351/* Define to 1 if the system has the type `SQLSETPOSIROW'. */
    \n-
    352#define HAVE_SQLSETPOSIROW 1
    \n-
    353
    \n-
    354/* Define to 1 if you have the <sql.h> header file. */
    \n-
    355#define HAVE_SQL_H 1
    \n-
    356
    \n-
    357/* Defined if not --disable-sspi and SSPI detected */
    \n-
    358/* #undef HAVE_SSPI */
    \n-
    359
    \n-
    360/* Define to 1 if you have the <stdbool.h> header file. */
    \n-
    361#define HAVE_STDBOOL_H 1
    \n-
    362
    \n-
    363/* Define to 1 if you have the <stddef.h> header file. */
    \n-
    364#define HAVE_STDDEF_H 1
    \n-
    365
    \n-
    366/* Define to 1 if you have the <stdint.h> header file. */
    \n-
    367#define HAVE_STDINT_H 1
    \n-
    368
    \n-
    369/* Define to 1 if you have the <stdio.h> header file. */
    \n-
    370#define HAVE_STDIO_H 1
    \n-
    371
    \n-
    372/* Define to 1 if you have the <stdlib.h> header file. */
    \n-
    373#define HAVE_STDLIB_H 1
    \n-
    374
    \n-
    375/* Define to 1 if you have the <strings.h> header file. */
    \n-
    376#define HAVE_STRINGS_H 1
    \n-
    377
    \n-
    378/* Define to 1 if you have the <string.h> header file. */
    \n-
    379#define HAVE_STRING_H 1
    \n-
    380
    \n-
    381/* Define to 1 if you have the `strlcat' function. */
    \n-
    382/* #undef HAVE_STRLCAT */
    \n-
    383
    \n-
    384/* Define to 1 if you have the `strlcpy' function. */
    \n-
    385/* #undef HAVE_STRLCPY */
    \n-
    386
    \n-
    387/* Define to 1 if you have the `strsep' function. */
    \n-
    388#define HAVE_STRSEP 1
    \n-
    389
    \n-
    390/* Define to 1 if you have the `strtok_r' function. */
    \n-
    391#define HAVE_STRTOK_R 1
    \n-
    392
    \n-
    393/* Define to 1 if you have the `strtok_s' function. */
    \n-
    394/* #undef HAVE_STRTOK_S */
    \n-
    395
    \n-
    396/* Define to 1 if `tm_zone' is a member of `struct tm'. */
    \n-
    397#define HAVE_STRUCT_TM_TM_ZONE 1
    \n-
    398
    \n-
    399/* Define to 1 if `__tm_zone' is a member of `struct tm'. */
    \n-
    400/* #undef HAVE_STRUCT_TM___TM_ZONE */
    \n-
    401
    \n-
    402/* Define to 1 if you have the 'system' function */
    \n-
    403#define HAVE_SYSTEM 1
    \n-
    404
    \n-
    405/* Define to 1 if you have the <sys/eventfd.h> header file. */
    \n-
    406#define HAVE_SYS_EVENTFD_H 1
    \n-
    407
    \n-
    408/* Define to 1 if you have the <sys/ioctl.h> header file. */
    \n-
    409#define HAVE_SYS_IOCTL_H 1
    \n-
    410
    \n-
    411/* Define to 1 if you have the <sys/param.h> header file. */
    \n-
    412#define HAVE_SYS_PARAM_H 1
    \n-
    413
    \n-
    414/* Define to 1 if you have the <sys/resource.h> header file. */
    \n-
    415#define HAVE_SYS_RESOURCE_H 1
    \n-
    416
    \n-
    417/* Define to 1 if you have the <sys/select.h> header file. */
    \n-
    418#define HAVE_SYS_SELECT_H 1
    \n-
    419
    \n-
    420/* Define to 1 if you have the <sys/socket.h> header file. */
    \n-
    421#define HAVE_SYS_SOCKET_H 1
    \n-
    422
    \n-
    423/* Define to 1 if you have the <sys/stat.h> header file. */
    \n-
    424#define HAVE_SYS_STAT_H 1
    \n-
    425
    \n-
    426/* Define to 1 if you have the <sys/time.h> header file. */
    \n-
    427#define HAVE_SYS_TIME_H 1
    \n-
    428
    \n-
    429/* Define to 1 if you have the <sys/types.h> header file. */
    \n-
    430#define HAVE_SYS_TYPES_H 1
    \n-
    431
    \n-
    432/* Define to 1 if you have the <sys/wait.h> header file. */
    \n-
    433#define HAVE_SYS_WAIT_H 1
    \n-
    434
    \n-
    435/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
    \n-
    436 `HAVE_STRUCT_TM_TM_ZONE' instead. */
    \n-
    437#define HAVE_TM_ZONE 1
    \n-
    438
    \n-
    439/* Define to 1 if you don't have `tm_zone' but do have the external array
    \n-
    440 `tzname'. */
    \n-
    441/* #undef HAVE_TZNAME */
    \n-
    442
    \n-
    443/* Define to 1 if you have the <unistd.h> header file. */
    \n-
    444#define HAVE_UNISTD_H 1
    \n-
    445
    \n-
    446/* Define to 1 if you have the `usleep' function. */
    \n-
    447#define HAVE_USLEEP 1
    \n-
    448
    \n-
    449/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
    \n-
    450/* #undef HAVE_VALGRIND_MEMCHECK_H */
    \n-
    451
    \n-
    452/* Define to 1 if you have the `vasprintf' function. */
    \n-
    453#define HAVE_VASPRINTF 1
    \n-
    454
    \n-
    455/* Define to 1 if you have the `vsnprintf' function. */
    \n-
    456#define HAVE_VSNPRINTF 1
    \n-
    457
    \n-
    458/* Define to 1 if you have the <wchar.h> header file. */
    \n-
    459#define HAVE_WCHAR_H 1
    \n-
    460
    \n-
    461/* Define to 1 if you have the <windows.h> header file. */
    \n-
    462/* #undef HAVE_WINDOWS_H */
    \n-
    463
    \n-
    464/* Define to 1 if you have the <winsock2.h> header file. */
    \n-
    465/* #undef HAVE_WINSOCK2_H */
    \n-
    466
    \n-
    467/* Define to 1 if you have the `_fseeki64' function. */
    \n-
    468/* #undef HAVE__FSEEKI64 */
    \n-
    469
    \n-
    470/* Define to 1 if you have the `_ftelli64' function. */
    \n-
    471/* #undef HAVE__FTELLI64 */
    \n-
    472
    \n-
    473/* Define to 1 if you have the `_lock_file' function. */
    \n-
    474/* #undef HAVE__LOCK_FILE */
    \n-
    475
    \n-
    476/* Define to 1 if you have the `_unlock_file' function. */
    \n-
    477/* #undef HAVE__UNLOCK_FILE */
    \n-
    478
    \n-
    479/* Define to 1 if you have the `_vscprintf' function. */
    \n-
    480/* #undef HAVE__VSCPRINTF */
    \n-
    481
    \n-
    482/* Define to 1 if you have the `_vsnprintf' function. */
    \n-
    483/* #undef HAVE__VSNPRINTF */
    \n-
    484
    \n-
    485/* Define to 1 if you have the `_xpg_accept' function. */
    \n-
    486/* #undef HAVE__XPG_ACCEPT */
    \n-
    487
    \n-
    488/* Define to 1 if you have the `_xpg_getpeername' function. */
    \n-
    489/* #undef HAVE__XPG_GETPEERNAME */
    \n-
    490
    \n-
    491/* Define to 1 if you have the `_xpg_getsockname' function. */
    \n-
    492/* #undef HAVE__XPG_GETSOCKNAME */
    \n-
    493
    \n-
    494/* Define to 1 if you have the `_xpg_getsockopt' function. */
    \n-
    495/* #undef HAVE__XPG_GETSOCKOPT */
    \n-
    496
    \n-
    497/* Define to 1 if you have the `_xpg_recvfrom' function. */
    \n-
    498/* #undef HAVE__XPG_RECVFROM */
    \n-
    499
    \n-
    500/* Define to 1 if you have the `__accept' function. */
    \n-
    501/* #undef HAVE___ACCEPT */
    \n-
    502
    \n-
    503/* Define to 1 if you have the `__getpeername' function. */
    \n-
    504/* #undef HAVE___GETPEERNAME */
    \n-
    505
    \n-
    506/* Define to 1 if you have the `__getsockname' function. */
    \n-
    507/* #undef HAVE___GETSOCKNAME */
    \n-
    508
    \n-
    509/* Define to 1 if you have the `__getsockopt' function. */
    \n-
    510/* #undef HAVE___GETSOCKOPT */
    \n-
    511
    \n-
    512/* Define to 1 if you have the `__recvfrom' function. */
    \n-
    513/* #undef HAVE___RECVFROM */
    \n-
    514
    \n-
    515/* Define as const if the declaration of iconv() needs const. */
    \n-
    516#define ICONV_CONST
    \n-
    517
    \n-
    518/* Define to value of INADDR_NONE if not provided by your system header files.
    \n-
    519 */
    \n-
    520/* #undef INADDR_NONE */
    \n-
    521
    \n-
    522/* Define to the sub-directory where libtool stores uninstalled libraries. */
    \n-
    523#define LT_OBJDIR ".libs/"
    \n-
    524
    \n-
    525/* Define to 1 if the BSD-style netdb interface is reentrant. */
    \n-
    526/* #undef NETDB_REENTRANT */
    \n-
    527
    \n-
    528/* Define to 1 if memset(0) sets pointers to NULL. */
    \n-
    529#define NULL_REP_IS_ZERO_BYTES 1
    \n-
    530
    \n-
    531/* Name of package */
    \n-
    532#define PACKAGE "freetds"
    \n-
    533
    \n-
    534/* Define to the address where bug reports for this package should be sent. */
    \n-
    535#define PACKAGE_BUGREPORT ""
    \n-
    536
    \n-
    537/* Define to the full name of this package. */
    \n-
    538#define PACKAGE_NAME "FreeTDS"
    \n-
    539
    \n-
    540/* Define to the full name and version of this package. */
    \n-
    541#define PACKAGE_STRING "FreeTDS 1.3.17"
    \n-
    542
    \n-
    543/* Define to the one symbol short name of this package. */
    \n-
    544#define PACKAGE_TARNAME "freetds"
    \n-
    545
    \n-
    546/* Define to the home page for this package. */
    \n-
    547#define PACKAGE_URL ""
    \n-
    548
    \n-
    549/* Define to the version of this package. */
    \n-
    550#define PACKAGE_VERSION "1.3.17"
    \n-
    551
    \n-
    552/* Define to necessary symbol if this constant uses a non-standard name on
    \n-
    553 your system. */
    \n-
    554/* #undef PTHREAD_CREATE_JOINABLE */
    \n-
    555
    \n-
    556/* The size of `char', as computed by sizeof. */
    \n-
    557#define SIZEOF_CHAR 1
    \n-
    558
    \n-
    559/* The size of `double', as computed by sizeof. */
    \n-
    560#define SIZEOF_DOUBLE 8
    \n-
    561
    \n-
    562/* The size of `float', as computed by sizeof. */
    \n-
    563#define SIZEOF_FLOAT 4
    \n-
    564
    \n-
    565/* The size of `int', as computed by sizeof. */
    \n-
    566#define SIZEOF_INT 4
    \n-
    567
    \n-
    568/* The size of `long', as computed by sizeof. */
    \n-
    569#define SIZEOF_LONG 4
    \n-
    570
    \n-
    571/* The size of `long double', as computed by sizeof. */
    \n-
    572#define SIZEOF_LONG_DOUBLE 8
    \n-
    573
    \n-
    574/* The size of `long long', as computed by sizeof. */
    \n-
    575#define SIZEOF_LONG_LONG 8
    \n-
    576
    \n-
    577/* The size of `short', as computed by sizeof. */
    \n-
    578#define SIZEOF_SHORT 2
    \n-
    579
    \n-
    580/* The size of `SQLWCHAR', as computed by sizeof. */
    \n-
    581#define SIZEOF_SQLWCHAR 2
    \n-
    582
    \n-
    583/* The size of `void *', as computed by sizeof. */
    \n-
    584#define SIZEOF_VOID_P 4
    \n-
    585
    \n-
    586/* The size of `wchar_t', as computed by sizeof. */
    \n-
    587#define SIZEOF_WCHAR_T 4
    \n-
    588
    \n-
    589/* The size of `__int64', as computed by sizeof. */
    \n-
    590#define SIZEOF___INT64 0
    \n-
    591
    \n-
    592/* If using the C implementation of alloca, define if you know the
    \n-
    593 direction of stack growth for your system; otherwise it will be
    \n-
    594 automatically deduced at runtime.
    \n-
    595 STACK_DIRECTION > 0 => grows toward higher addresses
    \n-
    596 STACK_DIRECTION < 0 => grows toward lower addresses
    \n-
    597 STACK_DIRECTION = 0 => direction of growth unknown */
    \n-
    598/* #undef STACK_DIRECTION */
    \n-
    599
    \n-
    600/* Define to 1 if all of the C90 standard headers exist (not just the ones
    \n-
    601 required in a freestanding environment). This macro is provided for
    \n-
    602 backward compatibility; new code need not use it. */
    \n-
    603#define STDC_HEADERS 1
    \n-
    604
    \n-
    605/* Define to use TDS 5.0 by default */
    \n-
    606/* #undef TDS50 */
    \n-
    607
    \n-
    608/* Define to use TDS 7.1 by default */
    \n-
    609/* #undef TDS71 */
    \n-
    610
    \n-
    611/* Define to use TDS 7.2 by default */
    \n-
    612/* #undef TDS72 */
    \n-
    613
    \n-
    614/* Define to use TDS 7.3 by default */
    \n-
    615/* #undef TDS73 */
    \n-
    616
    \n-
    617/* Define to use TDS 7.4 by default */
    \n-
    618/* #undef TDS74 */
    \n-
    619
    \n-
    620/* Define to 1 if your compiler supports __attribute__((destructor)). */
    \n-
    621#define TDS_ATTRIBUTE_DESTRUCTOR 1
    \n-
    622
    \n-
    623/* define to constant to use for clock_gettime */
    \n-
    624#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC
    \n-
    625
    \n-
    626/* Define if you have pthread with mutex support */
    \n-
    627#define TDS_HAVE_PTHREAD_MUTEX 1
    \n-
    628
    \n-
    629/* Define if stdio support locking */
    \n-
    630#define TDS_HAVE_STDIO_LOCKED 1
    \n-
    631
    \n-
    632/* define to prefix format string used for 64bit integers */
    \n-
    633#define TDS_I64_PREFIX "ll"
    \n-
    634
    \n-
    635/* Define if you don't care about thread safety */
    \n-
    636/* #undef TDS_NO_THREADSAFE */
    \n-
    637
    \n-
    638/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */
    \n-
    639#define TDS_SQLCOLATTRIBUTE_SQLLEN 1
    \n-
    640
    \n-
    641/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */
    \n-
    642#define TDS_SQLPARAMOPTIONS_SQLLEN 1
    \n-
    643
    \n-
    644/* Defined if --enable-sybase-compat used */
    \n-
    645#define TDS_SYBASE_COMPAT 1
    \n-
    646
    \n-
    647/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. This
    \n-
    648 macro is obsolete. */
    \n-
    649#define TIME_WITH_SYS_TIME 1
    \n-
    650
    \n-
    651/* Define to 1 if your <sys/time.h> declares `struct tm'. */
    \n-
    652/* #undef TM_IN_SYS_TIME */
    \n-
    653
    \n-
    654/* Enable extensions on AIX 3, Interix. */
    \n-
    655#ifndef _ALL_SOURCE
    \n-
    656# define _ALL_SOURCE 1
    \n-
    657#endif
    \n-
    658/* Enable general extensions on macOS. */
    \n-
    659#ifndef _DARWIN_C_SOURCE
    \n-
    660# define _DARWIN_C_SOURCE 1
    \n-
    661#endif
    \n-
    662/* Enable general extensions on Solaris. */
    \n-
    663#ifndef __EXTENSIONS__
    \n-
    664# define __EXTENSIONS__ 1
    \n-
    665#endif
    \n-
    666/* Enable GNU extensions on systems that have them. */
    \n-
    667#ifndef _GNU_SOURCE
    \n-
    668# define _GNU_SOURCE 1
    \n-
    669#endif
    \n-
    670/* Enable X/Open compliant socket functions that do not require linking
    \n-
    671 with -lxnet on HP-UX 11.11. */
    \n-
    672#ifndef _HPUX_ALT_XOPEN_SOCKET_API
    \n-
    673# define _HPUX_ALT_XOPEN_SOCKET_API 1
    \n-
    674#endif
    \n-
    675/* Identify the host operating system as Minix.
    \n-
    676 This macro does not affect the system headers' behavior.
    \n-
    677 A future release of Autoconf may stop defining this macro. */
    \n-
    678#ifndef _MINIX
    \n-
    679/* # undef _MINIX */
    \n-
    680#endif
    \n-
    681/* Enable general extensions on NetBSD.
    \n-
    682 Enable NetBSD compatibility extensions on Minix. */
    \n-
    683#ifndef _NETBSD_SOURCE
    \n-
    684# define _NETBSD_SOURCE 1
    \n-
    685#endif
    \n-
    686/* Enable OpenBSD compatibility extensions on NetBSD.
    \n-
    687 Oddly enough, this does nothing on OpenBSD. */
    \n-
    688#ifndef _OPENBSD_SOURCE
    \n-
    689# define _OPENBSD_SOURCE 1
    \n-
    690#endif
    \n-
    691/* Define to 1 if needed for POSIX-compatible behavior. */
    \n-
    692#ifndef _POSIX_SOURCE
    \n-
    693/* # undef _POSIX_SOURCE */
    \n-
    694#endif
    \n-
    695/* Define to 2 if needed for POSIX-compatible behavior. */
    \n-
    696#ifndef _POSIX_1_SOURCE
    \n-
    697/* # undef _POSIX_1_SOURCE */
    \n-
    698#endif
    \n-
    699/* Enable POSIX-compatible threading on Solaris. */
    \n-
    700#ifndef _POSIX_PTHREAD_SEMANTICS
    \n-
    701# define _POSIX_PTHREAD_SEMANTICS 1
    \n-
    702#endif
    \n-
    703/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
    \n-
    704#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
    \n-
    705# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
    \n-
    706#endif
    \n-
    707/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
    \n-
    708#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
    \n-
    709# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
    \n-
    710#endif
    \n-
    711/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
    \n-
    712#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
    \n-
    713# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
    \n-
    714#endif
    \n-
    715/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
    \n-
    716#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
    \n-
    717# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
    \n-
    718#endif
    \n-
    719/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
    \n-
    720#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
    \n-
    721# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
    \n-
    722#endif
    \n-
    723/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
    \n-
    724#ifndef __STDC_WANT_LIB_EXT2__
    \n-
    725# define __STDC_WANT_LIB_EXT2__ 1
    \n-
    726#endif
    \n-
    727/* Enable extensions specified by ISO/IEC 24747:2009. */
    \n-
    728#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
    \n-
    729# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
    \n-
    730#endif
    \n-
    731/* Enable extensions on HP NonStop. */
    \n-
    732#ifndef _TANDEM_SOURCE
    \n-
    733# define _TANDEM_SOURCE 1
    \n-
    734#endif
    \n-
    735/* Enable X/Open extensions. Define to 500 only if necessary
    \n-
    736 to make mbstate_t available. */
    \n-
    737#ifndef _XOPEN_SOURCE
    \n-
    738/* # undef _XOPEN_SOURCE */
    \n-
    739#endif
    \n-
    740
    \n-
    741
    \n-
    742/* Version number of package */
    \n-
    743#define VERSION "1.3.17"
    \n-
    744
    \n-
    745/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    \n-
    746 significant byte first (like Motorola and SPARC, unlike Intel). */
    \n-
    747#if defined AC_APPLE_UNIVERSAL_BUILD
    \n-
    748# if defined __BIG_ENDIAN__
    \n-
    749# define WORDS_BIGENDIAN 1
    \n-
    750# endif
    \n-
    751#else
    \n-
    752# ifndef WORDS_BIGENDIAN
    \n-
    753/* # undef WORDS_BIGENDIAN */
    \n-
    754# endif
    \n-
    755#endif
    \n-
    756
    \n-
    757/* Number of bits in a file offset, on hosts where this is settable. */
    \n-
    758#define _FILE_OFFSET_BITS 64
    \n-
    759
    \n-
    760/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
    \n-
    761/* #undef _LARGEFILE_SOURCE */
    \n-
    762
    \n-
    763/* Define for large files, on AIX-style hosts. */
    \n-
    764/* #undef _LARGE_FILES */
    \n-
    765
    \n-
    766/* Define to empty if `const' does not conform to ANSI C. */
    \n-
    767/* #undef const */
    \n-
    768
    \n-
    769/* Define to `__inline__' or `__inline' if that's what the C compiler
    \n-
    770 calls it, or to nothing if 'inline' is not supported under any name. */
    \n-
    771#ifndef __cplusplus
    \n-
    772/* #undef inline */
    \n-
    773#endif
    \n-
    774
    \n-
    775/* Define to `unsigned int' if <sys/types.h> does not define. */
    \n-
    776/* #undef size_t */
    \n-
    777
    \n-
    778/* type to use in place of socklen_t if not defined */
    \n-
    779/* #undef socklen_t */
    \n+
    45
    \n+
    46#endif
    \n+
    Primary include file for db-lib applications.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,797 +6,61 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-config.h\n- 1/* include/config.h. Generated from config.h.in by configure. */\n- 2/* include/config.h.in. Generated from configure.ac by autoheader. */\n- 3\n- 4#define _freetds_config_h_\n- 5\n- 6/* Define if building universal (internal helper macro) */\n- 7/* #undef AC_APPLE_UNIVERSAL_BUILD */\n- 8\n- 9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */\n- 10/* #undef BSD_COMP */\n- 11\n- 12/* Define to 1 if using 'alloca.c'. */\n- 13/* #undef C_ALLOCA */\n- 14\n- 15/* Define to enable work in progress code */\n- 16/* #undef ENABLE_DEVELOPING */\n- 17\n- 18/* Define to enable extra checks on code */\n- 19/* #undef ENABLE_EXTRA_CHECKS */\n- 20\n- 21/* Defined if --enable-krb5 used and library detected */\n- 22#define ENABLE_KRB5 1\n- 23\n- 24/* Define to enable MARS support */\n- 25#define ENABLE_ODBC_MARS 1\n- 26\n- 27/* Define to enable ODBC wide string support */\n- 28#define ENABLE_ODBC_WIDE 1\n- 29\n- 30/* Define to 1 if GNU tls use nettle as backend. */\n- 31#define GNUTLS_USE_NETTLE 1\n+sybfront.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef SYBFRONT_h\n+ 21#define SYBFRONT_h\n+ 22\n+ 23#include \"sybdb.h\"\n+ 24\n+ 25#ifdef __cplusplus\n+ 26extern \"C\"\n+ 27{\n+ 28#if 0\n+ 29}\n+ 30#endif\n+ 31#endif\n 32\n- 33/* Define to 1 if you have the `alarm' function. */\n- 34#define HAVE_ALARM 1\n+ 33static const char rcsid_sybfront_h[] = \"$Id: sybfront.h,v 1.3 2004-10-28 12:\n+42:12 freddy77 Exp $\";\n+ 34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h,\n+no_unused_sybfront_h_warn };\n 35\n- 36/* Define to 1 if you have 'alloca', as a function or macro. */\n- 37#define HAVE_ALLOCA 1\n- 38\n- 39/* Define to 1 if works. */\n- 40#define HAVE_ALLOCA_H 1\n- 41\n- 42/* Define to 1 if you have the header file. */\n- 43#define HAVE_ARPA_INET_H 1\n+ 36\n+ 37\n+ 38#ifdef __cplusplus\n+ 39#if 0\n+ 40{\n+ 41#endif\n+ 42}\n+ 43#endif\n 44\n- 45/* Define to 1 if you have the `ASN1_STRING_get0_data' function. */\n- 46/* #undef HAVE_ASN1_STRING_GET0_DATA */\n- 47\n- 48/* Define to 1 if you have the `asprintf' function. */\n- 49#define HAVE_ASPRINTF 1\n- 50\n- 51/* Define to 1 if you have the `basename' function. */\n- 52#define HAVE_BASENAME 1\n- 53\n- 54/* Define to 1 if you have the `BIO_get_data' function. */\n- 55/* #undef HAVE_BIO_GET_DATA */\n- 56\n- 57/* Define if you have the clock_gettime function. */\n- 58#define HAVE_CLOCK_GETTIME 1\n- 59\n- 60/* Define to 1 if you have the header file. */\n- 61#define HAVE_COM_ERR_H 1\n- 62\n- 63/* Define to 1 if you have the `daemon' function. */\n- 64#define HAVE_DAEMON 1\n- 65\n- 66/* Define to 1 if you have the declaration of `tzname', and to 0 if you\n-don't.\n- 67 */\n- 68/* #undef HAVE_DECL_TZNAME */\n- 69\n- 70/* Define to 1 if you have the header file. */\n- 71#define HAVE_DIRENT_H 1\n- 72\n- 73/* Define to 1 if you have the header file. */\n- 74#define HAVE_DLFCN_H 1\n- 75\n- 76/* Define to 1 if you have the header file. */\n- 77#define HAVE_ERRNO_H 1\n- 78\n- 79/* Define to 1 if you have the `error_message' function. */\n- 80/* #undef HAVE_ERROR_MESSAGE */\n- 81\n- 82/* Define to 1 if you have the `eventfd' function. */\n- 83#define HAVE_EVENTFD 1\n- 84\n- 85/* Define to 1 if you have the header file. */\n- 86#define HAVE_FCNTL_H 1\n- 87\n- 88/* Define to 1 if you have the `fork' function. */\n- 89#define HAVE_FORK 1\n- 90\n- 91/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */\n- 92#define HAVE_FSEEKO 1\n- 93\n- 94/* Define to 1 if you have the `fstat' function. */\n- 95#define HAVE_FSTAT 1\n- 96\n- 97/* Define to 1 if your system provides the 5-parameter version of\n- 98 gethostbyaddr_r(). */\n- 99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */\n- 100\n- 101/* Define to 1 if your system provides the 7-parameter version of\n- 102 gethostbyaddr_r(). */\n- 103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */\n- 104\n- 105/* Define to 1 if your system provides the 8-parameter version of\n- 106 gethostbyaddr_r(). */\n- 107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1\n- 108\n- 109/* Define to 1 if your system provides the 3-parameter version of\n- 110 gethostbyname_r(). */\n- 111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */\n- 112\n- 113/* Define to 1 if your system provides the 5-parameter version of\n- 114 gethostbyname_r(). */\n- 115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */\n- 116\n- 117/* Define to 1 if your system provides the 6-parameter version of\n- 118 gethostbyname_r(). */\n- 119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1\n- 120\n- 121/* Define to 1 if your system provides the 4-parameter version of\n- 122 getpwuid_r(). */\n- 123/* #undef HAVE_FUNC_GETPWUID_R_4 */\n- 124\n- 125/* Define to 1 if your system getpwuid_r() have 4 parameters and return\n-struct\n- 126 passwd*. */\n- 127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */\n- 128\n- 129/* Define to 1 if your system provides the 5-parameter version of\n- 130 getpwuid_r(). */\n- 131#define HAVE_FUNC_GETPWUID_R_5 1\n- 132\n- 133/* Define to 1 if your system provides the 4-parameter version of\n- 134 getservbyname_r(). */\n- 135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */\n- 136\n- 137/* Define to 1 if your system provides the 5-parameter version of\n- 138 getservbyname_r(). */\n- 139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */\n- 140\n- 141/* Define to 1 if your system provides the 6-parameter version of\n- 142 getservbyname_r(). */\n- 143#define HAVE_FUNC_GETSERVBYNAME_R_6 1\n- 144\n- 145/* Define to 1 if your localtime_r return a int. */\n- 146/* #undef HAVE_FUNC_LOCALTIME_R_INT */\n- 147\n- 148/* Define to 1 if your localtime_r return a struct tm*. */\n- 149#define HAVE_FUNC_LOCALTIME_R_TM 1\n- 150\n- 151/* Define if you have getaddrinfo function */\n- 152#define HAVE_GETADDRINFO 1\n- 153\n- 154/* Define to 1 if you have the `gethostname' function. */\n- 155#define HAVE_GETHOSTNAME 1\n- 156\n- 157/* Define to 1 if you have the `gethrtime' function. */\n- 158/* #undef HAVE_GETHRTIME */\n- 159\n- 160/* Define to 1 if you have the `getipnodebyaddr' function. */\n- 161/* #undef HAVE_GETIPNODEBYADDR */\n- 162\n- 163/* Define to 1 if you have the `getipnodebyname' function. */\n- 164/* #undef HAVE_GETIPNODEBYNAME */\n- 165\n- 166/* Define to 1 if you have the `getopt' function. */\n- 167#define HAVE_GETOPT 1\n- 168\n- 169/* Define to 1 if you have the header file. */\n- 170#define HAVE_GETOPT_H 1\n- 171\n- 172/* Define if your getopt(3) defines and uses optreset */\n- 173/* #undef HAVE_GETOPT_OPTRESET */\n- 174\n- 175/* Define to 1 if you have the `getpwuid' function. */\n- 176#define HAVE_GETPWUID 1\n- 177\n- 178/* Define to 1 if you have the `getpwuid_r' function. */\n- 179#define HAVE_GETPWUID_R 1\n- 180\n- 181/* Define to 1 if you have the `gettimeofday' function. */\n- 182#define HAVE_GETTIMEOFDAY 1\n- 183\n- 184/* Define to 1 if you have the `getuid' function. */\n- 185#define HAVE_GETUID 1\n- 186\n- 187/* Define if you have GMP library */\n- 188#define HAVE_GMP 1\n- 189\n- 190/* Define to 1 if you have GnuTLS. */\n- 191#define HAVE_GNUTLS 1\n- 192\n- 193/* Define to 1 if you have the header file. */\n- 194#define HAVE_GNUTLS_ABSTRACT_H 1\n- 195\n- 196/* Define to 1 if you have the `gnutls_certificate_set_verify_function'\n- 197 function. */\n- 198#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1\n- 199\n- 200/* Define to 1 if you have the `gnutls_record_disable_padding' function. */\n- 201#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1\n- 202\n- 203/* Define to 1 if you have the `gnutls_rnd' function. */\n- 204#define HAVE_GNUTLS_RND 1\n- 205\n- 206/* Define if you have the iconv() function and it works. */\n- 207#define HAVE_ICONV 1\n- 208\n- 209/* Define to 1 if you have the `inet_ntoa_r' function. */\n- 210/* #undef HAVE_INET_NTOA_R */\n- 211\n- 212/* Define to 1 if you have the `inet_ntop' function. */\n- 213#define HAVE_INET_NTOP 1\n- 214\n- 215/* Define to 1 if you have the header file. */\n- 216#define HAVE_INTTYPES_H 1\n- 217\n- 218/* Define to 1 if you have the header file. */\n- 219/* #undef HAVE_IODBCINST_H */\n- 220\n- 221/* Define to 1 if you have the header file. */\n- 222#define HAVE_LANGINFO_H 1\n- 223\n- 224/* Define to 1 if you have the header file. */\n- 225#define HAVE_LIBGEN_H 1\n- 226\n- 227/* Define to 1 if you have the header file. */\n- 228#define HAVE_LIMITS_H 1\n- 229\n- 230/* Define to 1 if you have the header file. */\n- 231/* #undef HAVE_LOCALCHARSET_H */\n- 232\n- 233/* Define to 1 if you have the `locale_charset' function. */\n- 234/* #undef HAVE_LOCALE_CHARSET */\n- 235\n- 236/* Define to 1 if you have the header file. */\n- 237#define HAVE_LOCALE_H 1\n- 238\n- 239/* Define to 1 if you have the `localtime_r' function. */\n- 240#define HAVE_LOCALTIME_R 1\n- 241\n- 242/* Define to 1 if you have the header file. */\n- 243#define HAVE_MALLOC_H 1\n- 244\n- 245/* Define to 1 if your system provides the malloc_options variable. */\n- 246/* #undef HAVE_MALLOC_OPTIONS */\n- 247\n- 248/* Define to 1 if you have the header file. */\n- 249/* #undef HAVE_MINIX_CONFIG_H */\n- 250\n- 251/* Define to 1 if you have the `nanosleep' function. */\n- 252#define HAVE_NANOSLEEP 1\n- 253\n- 254/* Define to 1 if you have the header file. */\n- 255#define HAVE_NETDB_H 1\n- 256\n- 257/* Define to 1 if you have the header file. */\n- 258#define HAVE_NETINET_IN_H 1\n- 259\n- 260/* Define to 1 if you have the header file. */\n- 261#define HAVE_NETINET_TCP_H 1\n- 262\n- 263/* Define to 1 if nettle is present. */\n- 264#define HAVE_NETTLE 1\n- 265\n- 266/* Define to 1 if you have the `nl_langinfo' function. */\n- 267#define HAVE_NL_LANGINFO 1\n- 268\n- 269/* Define to 1 if you have the header file. */\n- 270/* #undef HAVE_ODBCSS_H */\n- 271\n- 272/* Define if you have the OpenSSL. */\n- 273/* #undef HAVE_OPENSSL */\n- 274\n- 275/* Define to 1 if you have the header file. */\n- 276#define HAVE_PATHS_H 1\n- 277\n- 278/* Define to 1 if you have the `poll' function. */\n- 279#define HAVE_POLL 1\n- 280\n- 281/* Define to 1 if you have the header file. */\n- 282#define HAVE_POLL_H 1\n- 283\n- 284/* Define if you have POSIX threads libraries and header files. */\n- 285#define HAVE_PTHREAD 1\n- 286\n- 287/* Define to 1 if you have the `pthread_condattr_setclock' function. */\n- 288#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1\n- 289\n- 290/* Define to 1 if you have the `pthread_cond_timedwait' function. */\n- 291#define HAVE_PTHREAD_COND_TIMEDWAIT 1\n- 292\n- 293/* Define to 1 if you have the `pthread_cond_timedwait_relative_np'\n-function.\n- 294 */\n- 295/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */\n- 296\n- 297/* Define to 1 if you have the `putenv' function. */\n- 298#define HAVE_PUTENV 1\n- 299\n- 300/* Define to 1 if you have the `readdir_r' function. */\n- 301#define HAVE_READDIR_R 1\n- 302\n- 303/* Define to 1 if you have the GNU Readline library. */\n- 304#define HAVE_READLINE 1\n- 305\n- 306/* Define to 1 if you have the `readpassphrase' function. */\n- 307/* #undef HAVE_READPASSPHRASE */\n- 308\n- 309/* Define to 1 if you have rl_inhibit_completion. */\n- 310#define HAVE_RL_INHIBIT_COMPLETION 1\n- 311\n- 312/* Define to 1 if you have the `rl_on_new_line' function. */\n- 313#define HAVE_RL_ON_NEW_LINE 1\n- 314\n- 315/* Define to 1 if you have the `rl_reset_line_state' function. */\n- 316#define HAVE_RL_RESET_LINE_STATE 1\n- 317\n- 318/* Define to 1 if you have the header file. */\n- 319/* #undef HAVE_ROKEN_H */\n- 320\n- 321/* Define to 1 if you have the `RSA_get0_key' function. */\n- 322/* #undef HAVE_RSA_GET0_KEY */\n- 323\n- 324/* Define to 1 if you have the `setenv' function. */\n- 325#define HAVE_SETENV 1\n- 326\n- 327/* Define to 1 if you have the `setitimer' function. */\n- 328#define HAVE_SETITIMER 1\n- 329\n- 330/* Define to 1 if you have the `setrlimit' function. */\n- 331#define HAVE_SETRLIMIT 1\n- 332\n- 333/* Define to 1 if you have the header file. */\n- 334#define HAVE_SIGNAL_H 1\n- 335\n- 336/* Define to 1 if you have the `socketpair' function. */\n- 337#define HAVE_SOCKETPAIR 1\n- 338\n- 339/* Define to 1 if you have the SQLGetPrivateProfileString function. */\n- 340#define HAVE_SQLGETPRIVATEPROFILESTRING 1\n- 341\n- 342/* Define if sqltypes.h define SQLLEN */\n- 343#define HAVE_SQLLEN 1\n- 344\n- 345/* Define to 1 if the system has the type `SQLROWOFFSET'. */\n- 346#define HAVE_SQLROWOFFSET 1\n- 347\n- 348/* Define to 1 if the system has the type `SQLROWSETSIZE'. */\n- 349#define HAVE_SQLROWSETSIZE 1\n- 350\n- 351/* Define to 1 if the system has the type `SQLSETPOSIROW'. */\n- 352#define HAVE_SQLSETPOSIROW 1\n- 353\n- 354/* Define to 1 if you have the header file. */\n- 355#define HAVE_SQL_H 1\n- 356\n- 357/* Defined if not --disable-sspi and SSPI detected */\n- 358/* #undef HAVE_SSPI */\n- 359\n- 360/* Define to 1 if you have the header file. */\n- 361#define HAVE_STDBOOL_H 1\n- 362\n- 363/* Define to 1 if you have the header file. */\n- 364#define HAVE_STDDEF_H 1\n- 365\n- 366/* Define to 1 if you have the header file. */\n- 367#define HAVE_STDINT_H 1\n- 368\n- 369/* Define to 1 if you have the header file. */\n- 370#define HAVE_STDIO_H 1\n- 371\n- 372/* Define to 1 if you have the header file. */\n- 373#define HAVE_STDLIB_H 1\n- 374\n- 375/* Define to 1 if you have the header file. */\n- 376#define HAVE_STRINGS_H 1\n- 377\n- 378/* Define to 1 if you have the header file. */\n- 379#define HAVE_STRING_H 1\n- 380\n- 381/* Define to 1 if you have the `strlcat' function. */\n- 382/* #undef HAVE_STRLCAT */\n- 383\n- 384/* Define to 1 if you have the `strlcpy' function. */\n- 385/* #undef HAVE_STRLCPY */\n- 386\n- 387/* Define to 1 if you have the `strsep' function. */\n- 388#define HAVE_STRSEP 1\n- 389\n- 390/* Define to 1 if you have the `strtok_r' function. */\n- 391#define HAVE_STRTOK_R 1\n- 392\n- 393/* Define to 1 if you have the `strtok_s' function. */\n- 394/* #undef HAVE_STRTOK_S */\n- 395\n- 396/* Define to 1 if `tm_zone' is a member of `struct tm'. */\n- 397#define HAVE_STRUCT_TM_TM_ZONE 1\n- 398\n- 399/* Define to 1 if `__tm_zone' is a member of `struct tm'. */\n- 400/* #undef HAVE_STRUCT_TM___TM_ZONE */\n- 401\n- 402/* Define to 1 if you have the 'system' function */\n- 403#define HAVE_SYSTEM 1\n- 404\n- 405/* Define to 1 if you have the header file. */\n- 406#define HAVE_SYS_EVENTFD_H 1\n- 407\n- 408/* Define to 1 if you have the header file. */\n- 409#define HAVE_SYS_IOCTL_H 1\n- 410\n- 411/* Define to 1 if you have the header file. */\n- 412#define HAVE_SYS_PARAM_H 1\n- 413\n- 414/* Define to 1 if you have the header file. */\n- 415#define HAVE_SYS_RESOURCE_H 1\n- 416\n- 417/* Define to 1 if you have the header file. */\n- 418#define HAVE_SYS_SELECT_H 1\n- 419\n- 420/* Define to 1 if you have the header file. */\n- 421#define HAVE_SYS_SOCKET_H 1\n- 422\n- 423/* Define to 1 if you have the header file. */\n- 424#define HAVE_SYS_STAT_H 1\n- 425\n- 426/* Define to 1 if you have the header file. */\n- 427#define HAVE_SYS_TIME_H 1\n- 428\n- 429/* Define to 1 if you have the header file. */\n- 430#define HAVE_SYS_TYPES_H 1\n- 431\n- 432/* Define to 1 if you have the header file. */\n- 433#define HAVE_SYS_WAIT_H 1\n- 434\n- 435/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use\n- 436 `HAVE_STRUCT_TM_TM_ZONE' instead. */\n- 437#define HAVE_TM_ZONE 1\n- 438\n- 439/* Define to 1 if you don't have `tm_zone' but do have the external array\n- 440 `tzname'. */\n- 441/* #undef HAVE_TZNAME */\n- 442\n- 443/* Define to 1 if you have the header file. */\n- 444#define HAVE_UNISTD_H 1\n- 445\n- 446/* Define to 1 if you have the `usleep' function. */\n- 447#define HAVE_USLEEP 1\n- 448\n- 449/* Define to 1 if you have the header file. */\n- 450/* #undef HAVE_VALGRIND_MEMCHECK_H */\n- 451\n- 452/* Define to 1 if you have the `vasprintf' function. */\n- 453#define HAVE_VASPRINTF 1\n- 454\n- 455/* Define to 1 if you have the `vsnprintf' function. */\n- 456#define HAVE_VSNPRINTF 1\n- 457\n- 458/* Define to 1 if you have the header file. */\n- 459#define HAVE_WCHAR_H 1\n- 460\n- 461/* Define to 1 if you have the header file. */\n- 462/* #undef HAVE_WINDOWS_H */\n- 463\n- 464/* Define to 1 if you have the header file. */\n- 465/* #undef HAVE_WINSOCK2_H */\n- 466\n- 467/* Define to 1 if you have the `_fseeki64' function. */\n- 468/* #undef HAVE__FSEEKI64 */\n- 469\n- 470/* Define to 1 if you have the `_ftelli64' function. */\n- 471/* #undef HAVE__FTELLI64 */\n- 472\n- 473/* Define to 1 if you have the `_lock_file' function. */\n- 474/* #undef HAVE__LOCK_FILE */\n- 475\n- 476/* Define to 1 if you have the `_unlock_file' function. */\n- 477/* #undef HAVE__UNLOCK_FILE */\n- 478\n- 479/* Define to 1 if you have the `_vscprintf' function. */\n- 480/* #undef HAVE__VSCPRINTF */\n- 481\n- 482/* Define to 1 if you have the `_vsnprintf' function. */\n- 483/* #undef HAVE__VSNPRINTF */\n- 484\n- 485/* Define to 1 if you have the `_xpg_accept' function. */\n- 486/* #undef HAVE__XPG_ACCEPT */\n- 487\n- 488/* Define to 1 if you have the `_xpg_getpeername' function. */\n- 489/* #undef HAVE__XPG_GETPEERNAME */\n- 490\n- 491/* Define to 1 if you have the `_xpg_getsockname' function. */\n- 492/* #undef HAVE__XPG_GETSOCKNAME */\n- 493\n- 494/* Define to 1 if you have the `_xpg_getsockopt' function. */\n- 495/* #undef HAVE__XPG_GETSOCKOPT */\n- 496\n- 497/* Define to 1 if you have the `_xpg_recvfrom' function. */\n- 498/* #undef HAVE__XPG_RECVFROM */\n- 499\n- 500/* Define to 1 if you have the `__accept' function. */\n- 501/* #undef HAVE___ACCEPT */\n- 502\n- 503/* Define to 1 if you have the `__getpeername' function. */\n- 504/* #undef HAVE___GETPEERNAME */\n- 505\n- 506/* Define to 1 if you have the `__getsockname' function. */\n- 507/* #undef HAVE___GETSOCKNAME */\n- 508\n- 509/* Define to 1 if you have the `__getsockopt' function. */\n- 510/* #undef HAVE___GETSOCKOPT */\n- 511\n- 512/* Define to 1 if you have the `__recvfrom' function. */\n- 513/* #undef HAVE___RECVFROM */\n- 514\n- 515/* Define as const if the declaration of iconv() needs const. */\n- 516#define ICONV_CONST\n- 517\n- 518/* Define to value of INADDR_NONE if not provided by your system header\n-files.\n- 519 */\n- 520/* #undef INADDR_NONE */\n- 521\n- 522/* Define to the sub-directory where libtool stores uninstalled libraries.\n-*/\n- 523#define LT_OBJDIR \".libs/\"\n- 524\n- 525/* Define to 1 if the BSD-style netdb interface is reentrant. */\n- 526/* #undef NETDB_REENTRANT */\n- 527\n- 528/* Define to 1 if memset(0) sets pointers to NULL. */\n- 529#define NULL_REP_IS_ZERO_BYTES 1\n- 530\n- 531/* Name of package */\n- 532#define PACKAGE \"freetds\"\n- 533\n- 534/* Define to the address where bug reports for this package should be sent.\n-*/\n- 535#define PACKAGE_BUGREPORT \"\"\n- 536\n- 537/* Define to the full name of this package. */\n- 538#define PACKAGE_NAME \"FreeTDS\"\n- 539\n- 540/* Define to the full name and version of this package. */\n- 541#define PACKAGE_STRING \"FreeTDS 1.3.17\"\n- 542\n- 543/* Define to the one symbol short name of this package. */\n- 544#define PACKAGE_TARNAME \"freetds\"\n- 545\n- 546/* Define to the home page for this package. */\n- 547#define PACKAGE_URL \"\"\n- 548\n- 549/* Define to the version of this package. */\n- 550#define PACKAGE_VERSION \"1.3.17\"\n- 551\n- 552/* Define to necessary symbol if this constant uses a non-standard name on\n- 553 your system. */\n- 554/* #undef PTHREAD_CREATE_JOINABLE */\n- 555\n- 556/* The size of `char', as computed by sizeof. */\n- 557#define SIZEOF_CHAR 1\n- 558\n- 559/* The size of `double', as computed by sizeof. */\n- 560#define SIZEOF_DOUBLE 8\n- 561\n- 562/* The size of `float', as computed by sizeof. */\n- 563#define SIZEOF_FLOAT 4\n- 564\n- 565/* The size of `int', as computed by sizeof. */\n- 566#define SIZEOF_INT 4\n- 567\n- 568/* The size of `long', as computed by sizeof. */\n- 569#define SIZEOF_LONG 4\n- 570\n- 571/* The size of `long double', as computed by sizeof. */\n- 572#define SIZEOF_LONG_DOUBLE 8\n- 573\n- 574/* The size of `long long', as computed by sizeof. */\n- 575#define SIZEOF_LONG_LONG 8\n- 576\n- 577/* The size of `short', as computed by sizeof. */\n- 578#define SIZEOF_SHORT 2\n- 579\n- 580/* The size of `SQLWCHAR', as computed by sizeof. */\n- 581#define SIZEOF_SQLWCHAR 2\n- 582\n- 583/* The size of `void *', as computed by sizeof. */\n- 584#define SIZEOF_VOID_P 4\n- 585\n- 586/* The size of `wchar_t', as computed by sizeof. */\n- 587#define SIZEOF_WCHAR_T 4\n- 588\n- 589/* The size of `__int64', as computed by sizeof. */\n- 590#define SIZEOF___INT64 0\n- 591\n- 592/* If using the C implementation of alloca, define if you know the\n- 593 direction of stack growth for your system; otherwise it will be\n- 594 automatically deduced at runtime.\n- 595 STACK_DIRECTION > 0 => grows toward higher addresses\n- 596 STACK_DIRECTION < 0 => grows toward lower addresses\n- 597 STACK_DIRECTION = 0 => direction of growth unknown */\n- 598/* #undef STACK_DIRECTION */\n- 599\n- 600/* Define to 1 if all of the C90 standard headers exist (not just the ones\n- 601 required in a freestanding environment). This macro is provided for\n- 602 backward compatibility; new code need not use it. */\n- 603#define STDC_HEADERS 1\n- 604\n- 605/* Define to use TDS 5.0 by default */\n- 606/* #undef TDS50 */\n- 607\n- 608/* Define to use TDS 7.1 by default */\n- 609/* #undef TDS71 */\n- 610\n- 611/* Define to use TDS 7.2 by default */\n- 612/* #undef TDS72 */\n- 613\n- 614/* Define to use TDS 7.3 by default */\n- 615/* #undef TDS73 */\n- 616\n- 617/* Define to use TDS 7.4 by default */\n- 618/* #undef TDS74 */\n- 619\n- 620/* Define to 1 if your compiler supports __attribute__((destructor)). */\n- 621#define TDS_ATTRIBUTE_DESTRUCTOR 1\n- 622\n- 623/* define to constant to use for clock_gettime */\n- 624#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC\n- 625\n- 626/* Define if you have pthread with mutex support */\n- 627#define TDS_HAVE_PTHREAD_MUTEX 1\n- 628\n- 629/* Define if stdio support locking */\n- 630#define TDS_HAVE_STDIO_LOCKED 1\n- 631\n- 632/* define to prefix format string used for 64bit integers */\n- 633#define TDS_I64_PREFIX \"ll\"\n- 634\n- 635/* Define if you don't care about thread safety */\n- 636/* #undef TDS_NO_THREADSAFE */\n- 637\n- 638/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */\n- 639#define TDS_SQLCOLATTRIBUTE_SQLLEN 1\n- 640\n- 641/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */\n- 642#define TDS_SQLPARAMOPTIONS_SQLLEN 1\n- 643\n- 644/* Defined if --enable-sybase-compat used */\n- 645#define TDS_SYBASE_COMPAT 1\n- 646\n- 647/* Define to 1 if you can safely include both and .\n-This\n- 648 macro is obsolete. */\n- 649#define TIME_WITH_SYS_TIME 1\n- 650\n- 651/* Define to 1 if your declares `struct tm'. */\n- 652/* #undef TM_IN_SYS_TIME */\n- 653\n- 654/* Enable extensions on AIX 3, Interix. */\n- 655#ifndef _ALL_SOURCE\n- 656# define _ALL_SOURCE 1\n- 657#endif\n- 658/* Enable general extensions on macOS. */\n- 659#ifndef _DARWIN_C_SOURCE\n- 660# define _DARWIN_C_SOURCE 1\n- 661#endif\n- 662/* Enable general extensions on Solaris. */\n- 663#ifndef __EXTENSIONS__\n- 664# define __EXTENSIONS__ 1\n- 665#endif\n- 666/* Enable GNU extensions on systems that have them. */\n- 667#ifndef _GNU_SOURCE\n- 668# define _GNU_SOURCE 1\n- 669#endif\n- 670/* Enable X/Open compliant socket functions that do not require linking\n- 671 with -lxnet on HP-UX 11.11. */\n- 672#ifndef _HPUX_ALT_XOPEN_SOCKET_API\n- 673# define _HPUX_ALT_XOPEN_SOCKET_API 1\n- 674#endif\n- 675/* Identify the host operating system as Minix.\n- 676 This macro does not affect the system headers' behavior.\n- 677 A future release of Autoconf may stop defining this macro. */\n- 678#ifndef _MINIX\n- 679/* # undef _MINIX */\n- 680#endif\n- 681/* Enable general extensions on NetBSD.\n- 682 Enable NetBSD compatibility extensions on Minix. */\n- 683#ifndef _NETBSD_SOURCE\n- 684# define _NETBSD_SOURCE 1\n- 685#endif\n- 686/* Enable OpenBSD compatibility extensions on NetBSD.\n- 687 Oddly enough, this does nothing on OpenBSD. */\n- 688#ifndef _OPENBSD_SOURCE\n- 689# define _OPENBSD_SOURCE 1\n- 690#endif\n- 691/* Define to 1 if needed for POSIX-compatible behavior. */\n- 692#ifndef _POSIX_SOURCE\n- 693/* # undef _POSIX_SOURCE */\n- 694#endif\n- 695/* Define to 2 if needed for POSIX-compatible behavior. */\n- 696#ifndef _POSIX_1_SOURCE\n- 697/* # undef _POSIX_1_SOURCE */\n- 698#endif\n- 699/* Enable POSIX-compatible threading on Solaris. */\n- 700#ifndef _POSIX_PTHREAD_SEMANTICS\n- 701# define _POSIX_PTHREAD_SEMANTICS 1\n- 702#endif\n- 703/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */\n- 704#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__\n- 705# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1\n- 706#endif\n- 707/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */\n- 708#ifndef __STDC_WANT_IEC_60559_BFP_EXT__\n- 709# define __STDC_WANT_IEC_60559_BFP_EXT__ 1\n- 710#endif\n- 711/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */\n- 712#ifndef __STDC_WANT_IEC_60559_DFP_EXT__\n- 713# define __STDC_WANT_IEC_60559_DFP_EXT__ 1\n- 714#endif\n- 715/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */\n- 716#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__\n- 717# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1\n- 718#endif\n- 719/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */\n- 720#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__\n- 721# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1\n- 722#endif\n- 723/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */\n- 724#ifndef __STDC_WANT_LIB_EXT2__\n- 725# define __STDC_WANT_LIB_EXT2__ 1\n- 726#endif\n- 727/* Enable extensions specified by ISO/IEC 24747:2009. */\n- 728#ifndef __STDC_WANT_MATH_SPEC_FUNCS__\n- 729# define __STDC_WANT_MATH_SPEC_FUNCS__ 1\n- 730#endif\n- 731/* Enable extensions on HP NonStop. */\n- 732#ifndef _TANDEM_SOURCE\n- 733# define _TANDEM_SOURCE 1\n- 734#endif\n- 735/* Enable X/Open extensions. Define to 500 only if necessary\n- 736 to make mbstate_t available. */\n- 737#ifndef _XOPEN_SOURCE\n- 738/* # undef _XOPEN_SOURCE */\n- 739#endif\n- 740\n- 741\n- 742/* Version number of package */\n- 743#define VERSION \"1.3.17\"\n- 744\n- 745/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most\n- 746 significant byte first (like Motorola and SPARC, unlike Intel). */\n- 747#if defined AC_APPLE_UNIVERSAL_BUILD\n- 748# if defined __BIG_ENDIAN__\n- 749# define WORDS_BIGENDIAN 1\n- 750# endif\n- 751#else\n- 752# ifndef WORDS_BIGENDIAN\n- 753/* # undef WORDS_BIGENDIAN */\n- 754# endif\n- 755#endif\n- 756\n- 757/* Number of bits in a file offset, on hosts where this is settable. */\n- 758#define _FILE_OFFSET_BITS 64\n- 759\n- 760/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */\n- 761/* #undef _LARGEFILE_SOURCE */\n- 762\n- 763/* Define for large files, on AIX-style hosts. */\n- 764/* #undef _LARGE_FILES */\n- 765\n- 766/* Define to empty if `const' does not conform to ANSI C. */\n- 767/* #undef const */\n- 768\n- 769/* Define to `__inline__' or `__inline' if that's what the C compiler\n- 770 calls it, or to nothing if 'inline' is not supported under any name. */\n- 771#ifndef __cplusplus\n- 772/* #undef inline */\n- 773#endif\n- 774\n- 775/* Define to `unsigned int' if does not define. */\n- 776/* #undef size_t */\n- 777\n- 778/* type to use in place of socklen_t if not defined */\n- 779/* #undef socklen_t */\n+ 45\n+ 46#endif\n+sybdb.h\n+Primary include file for db-lib applications.\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00347_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00347_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/sqlfront.h Source File\n+FreeTDS API: include/cstypes.h Source File\n \n \n \n \n \n \n \n@@ -74,78 +74,272 @@\n \n
    \n \n
    \n
    \n
    \n-
    sqlfront.h
    \n+
    cstypes.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n-
    3 * Copyright (C) 2011 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n-
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    21#ifndef SQLFRONT_h
    \n-
    22#define SQLFRONT_h
    \n-
    23
    \n-
    24#include "./sybfront.h"
    \n-
    25
    \n-
    26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11:06:31 freddy77 Exp $";
    \n-
    27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, no_unused_sqlfront_h_warn };
    \n-
    28
    \n-
    29typedef DBPROCESS * PDBPROCESS;
    \n-
    30typedef LOGINREC * PLOGINREC;
    \n-
    31typedef DBCURSOR * PDBCURSOR;
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _cstypes_h_
    \n+
    21#define _cstypes_h_
    \n+
    22
    \n+
    23#include "tds_sysdep_public.h"
    \n+
    24
    \n+
    25#ifdef __cplusplus
    \n+
    26extern "C"
    \n+
    27{
    \n+
    28#if 0
    \n+
    29}
    \n+
    30#endif
    \n+
    31#endif
    \n
    32
    \n-
    33typedef int * LPINT;
    \n-
    34typedef char * LPSTR;
    \n-
    35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)
    \n-
    36typedef BYTE * LPBYTE;
    \n-
    37#endif
    \n-
    38typedef void * LPVOID;
    \n-
    39typedef const char * LPCSTR;
    \n-
    40
    \n-
    41typedef const LPINT LPCINT;
    \n-
    42#ifndef _LPCBYTE_DEFINED
    \n-
    43#define _LPCBYTE_DEFINED
    \n-
    44typedef const BYTE * LPCBYTE;
    \n-
    45#endif
    \n-
    46typedef USHORT * LPUSHORT;
    \n-
    47typedef const LPUSHORT LPCUSHORT;
    \n-
    48typedef DBINT * LPDBINT;
    \n-
    49typedef const LPDBINT LPCDBINT;
    \n-
    50typedef DBBINARY * LPDBBINARY;
    \n-
    51typedef const LPDBBINARY LPCDBBINARY;
    \n-
    52typedef DBDATEREC * LPDBDATEREC;
    \n-
    53typedef const LPDBDATEREC LPCDBDATEREC;
    \n-
    54typedef DBDATETIME * LPDBDATETIME;
    \n-
    55typedef const LPDBDATETIME LPCDBDATETIME;
    \n+
    33typedef int32_t CS_INT;
    \n+
    34typedef uint32_t CS_UINT;
    \n+
    35typedef int64_t CS_BIGINT;
    \n+
    36typedef uint64_t CS_UBIGINT;
    \n+
    37typedef int16_t CS_SMALLINT;
    \n+
    38typedef uint16_t CS_USMALLINT;
    \n+
    39typedef unsigned char CS_TINYINT;
    \n+
    40typedef char CS_CHAR;
    \n+
    41typedef unsigned char CS_BYTE;
    \n+
    42typedef tds_sysdep_real32_type CS_REAL;
    \n+
    43typedef tds_sysdep_real64_type CS_FLOAT;
    \n+
    44typedef int32_t CS_BOOL;
    \n+
    45typedef void CS_VOID;
    \n+
    46typedef unsigned char CS_IMAGE;
    \n+
    47typedef unsigned char CS_TEXT;
    \n+
    48typedef unsigned char CS_LONGBINARY;
    \n+
    49typedef unsigned char CS_LONGCHAR;
    \n+
    50typedef long CS_LONG;
    \n+
    51typedef unsigned char CS_BINARY;
    \n+
    52typedef uint16_t CS_USHORT;
    \n+
    53typedef unsigned char CS_BIT;
    \n+
    54
    \n+
    55typedef CS_INT CS_RETCODE;
    \n
    56
    \n-
    57#endif
    \n-
    Definition bsqlodbc.c:100
    \n-
    Definition dblib.h:123
    \n-
    Definition sybdb.h:295
    \n-
    Definition sybdb.h:474
    \n+
    57#define CS_MAX_NAME 132
    \n+
    58#define CS_MAX_SCALE 77
    \n+
    59#define CS_MAX_PREC 77 /* used by php */
    \n+
    60#define CS_MAX_NUMLEN 33 /* used by roguewave */
    \n+
    61#define CS_MAX_MSG 1024
    \n+
    62#define CS_SQLSTATE_SIZE 8
    \n+
    63#define CS_OBJ_NAME 400
    \n+
    64#define CS_TP_SIZE 16 /* text pointer */
    \n+
    65#define CS_TS_SIZE 8 /* length of timestamp */
    \n+
    66
    \n+
    67
    \n+
    \n+
    68typedef struct _cs_numeric
    \n+
    69{
    \n+
    70 unsigned char precision;
    \n+
    71 unsigned char scale;
    \n+
    72 unsigned char array[CS_MAX_NUMLEN];
    \n+\n+
    \n+
    74
    \n+\n+
    76
    \n+
    \n+
    77typedef struct _cs_varbinary
    \n+
    78{
    \n+
    79 CS_SMALLINT len;
    \n+
    80 CS_CHAR array[256];
    \n+\n+
    \n+
    82
    \n+
    \n+
    83typedef struct _cs_varchar
    \n+
    84{
    \n+
    85 CS_SMALLINT len; /* length of the string */
    \n+
    86 CS_CHAR str[256]; /* string, no NULL terminator */
    \n+\n+
    \n+
    88
    \n+
    89typedef struct _cs_config CS_CONFIG;
    \n+
    90typedef struct _cs_context CS_CONTEXT;
    \n+
    91typedef struct _cs_connection CS_CONNECTION;
    \n+
    92typedef struct _cs_locale CS_LOCALE;
    \n+
    93typedef struct _cs_command CS_COMMAND;
    \n+
    94typedef struct _cs_blk_row CS_BLK_ROW;
    \n+
    95
    \n+
    \n+
    96typedef struct _cs_iodesc
    \n+
    97{
    \n+
    98 CS_INT iotype;
    \n+
    99 CS_INT datatype;
    \n+
    100 CS_LOCALE *locale;
    \n+
    101 CS_INT usertype;
    \n+
    102 CS_INT total_txtlen;
    \n+
    103 CS_INT offset;
    \n+
    104 CS_BOOL log_on_update;
    \n+
    105 CS_CHAR name[CS_OBJ_NAME];
    \n+
    106 CS_INT namelen;
    \n+
    107 CS_BYTE timestamp[CS_TS_SIZE];
    \n+
    108 CS_INT timestamplen;
    \n+
    109 CS_BYTE textptr[CS_TP_SIZE];
    \n+
    110 CS_INT textptrlen;
    \n+
    111} CS_IODESC;
    \n+
    \n+
    112
    \n+
    \n+
    113typedef struct _cs_datafmt
    \n+
    114{
    \n+
    115 CS_CHAR name[CS_MAX_NAME];
    \n+
    116 CS_INT namelen;
    \n+
    117 CS_INT datatype;
    \n+
    118 CS_INT format;
    \n+
    119 CS_INT maxlength;
    \n+
    120 CS_INT scale;
    \n+
    121 CS_INT precision;
    \n+
    122 CS_INT status;
    \n+
    123 CS_INT count;
    \n+
    124 CS_INT usertype;
    \n+
    125 CS_LOCALE *locale;
    \n+
    126} CS_DATAFMT;
    \n+
    \n+
    127
    \n+
    \n+
    128typedef struct _cs_money
    \n+
    129{
    \n+
    130 CS_INT mnyhigh;
    \n+
    131 CS_UINT mnylow;
    \n+
    132} CS_MONEY;
    \n+
    \n+
    133
    \n+
    \n+
    134typedef struct _cs_money4
    \n+
    135{
    \n+
    136 CS_INT mny4;
    \n+
    137} CS_MONEY4;
    \n+
    \n+
    138
    \n+
    139typedef CS_INT CS_DATE;
    \n+
    140
    \n+
    141typedef CS_INT CS_TIME;
    \n+
    142
    \n+
    143typedef CS_UBIGINT CS_BIGDATETIME;
    \n+
    144typedef CS_UBIGINT CS_BIGTIME;
    \n+
    145
    \n+
    \n+
    146typedef struct _cs_datetime
    \n+
    147{
    \n+
    148 CS_INT dtdays;
    \n+
    149 CS_INT dttime;
    \n+\n+
    \n+
    151
    \n+
    \n+
    152typedef struct _cs_datetime4
    \n+
    153{
    \n+
    154 CS_USHORT days;
    \n+
    155 CS_USHORT minutes;
    \n+\n+
    \n+
    157
    \n+
    \n+
    158typedef struct _cs_daterec
    \n+
    159{
    \n+
    160 CS_INT dateyear;
    \n+
    161 CS_INT datemonth;
    \n+
    162 CS_INT datedmonth;
    \n+
    163 CS_INT datedyear;
    \n+
    164 CS_INT datedweek;
    \n+
    165 CS_INT datehour;
    \n+
    166 CS_INT dateminute;
    \n+
    167 CS_INT datesecond;
    \n+
    168 CS_INT datemsecond;
    \n+
    169 CS_INT datetzone;
    \n+
    170 CS_INT datesecfrac;
    \n+
    171 CS_INT datesecprec;
    \n+
    172} CS_DATEREC;
    \n+
    \n+
    173
    \n+
    174typedef CS_INT CS_MSGNUM;
    \n+
    175
    \n+
    \n+
    176typedef struct _cs_clientmsg
    \n+
    177{
    \n+
    178 CS_INT severity;
    \n+
    179 CS_MSGNUM msgnumber;
    \n+
    180 CS_CHAR msgstring[CS_MAX_MSG];
    \n+
    181 CS_INT msgstringlen;
    \n+
    182 CS_INT osnumber;
    \n+
    183 CS_CHAR osstring[CS_MAX_MSG];
    \n+
    184 CS_INT osstringlen;
    \n+
    185 CS_INT status;
    \n+
    186 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
    \n+
    187 CS_INT sqlstatelen;
    \n+\n+
    \n+
    189
    \n+
    \n+
    190typedef struct _cs_servermsg
    \n+
    191{
    \n+
    192 CS_MSGNUM msgnumber;
    \n+
    193 CS_INT state;
    \n+
    194 CS_INT severity;
    \n+
    195 CS_CHAR text[CS_MAX_MSG];
    \n+
    196 CS_INT textlen;
    \n+
    197 CS_CHAR svrname[CS_MAX_NAME];
    \n+
    198 CS_INT svrnlen;
    \n+
    199 CS_CHAR proc[CS_MAX_NAME];
    \n+
    200 CS_INT proclen;
    \n+
    201 CS_INT line;
    \n+
    202 CS_INT status;
    \n+
    203 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
    \n+
    204 CS_INT sqlstatelen;
    \n+\n+
    \n+
    206
    \n+
    207#ifdef __cplusplus
    \n+
    208#if 0
    \n+
    209{
    \n+
    210#endif
    \n+
    211}
    \n+
    212#endif
    \n+
    213
    \n+
    214#endif
    \n+
    Definition cstypes.h:69
    \n+
    Definition cstypes.h:78
    \n+
    Definition cstypes.h:84
    \n+
    Definition cstypes.h:97
    \n+
    Definition cstypes.h:114
    \n+
    Definition cstypes.h:129
    \n+
    Definition cstypes.h:135
    \n+
    Definition cstypes.h:147
    \n+
    Definition cstypes.h:153
    \n+
    Definition cstypes.h:159
    \n+
    Definition cstypes.h:177
    \n+
    Definition cstypes.h:191
    \n+
    Definition ctlib.h:45
    \n+
    Definition ctlib.h:75
    \n+
    Definition ctlib.h:117
    \n+
    Definition ctlib.h:212
    \n+
    Definition ctlib.h:248
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,78 +6,259 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-sqlfront.h\n+cstypes.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n 2 * Copyright (C) 1998-1999 Brian Bruns\n- 3 * Copyright (C) 2011 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n- 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 21#ifndef SQLFRONT_h\n- 22#define SQLFRONT_h\n- 23\n- 24#include \"./sybfront.h\"\n- 25\n- 26static const char rcsid_sqlfront_h[] = \"$Id: sqlfront.h,v 1.10 2011-07-13\n-11:06:31 freddy77 Exp $\";\n- 27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h,\n-no_unused_sqlfront_h_warn };\n- 28\n- 29typedef DBPROCESS * PDBPROCESS;\n- 30typedef LOGINREC * PLOGINREC;\n- 31typedef DBCURSOR * PDBCURSOR;\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _cstypes_h_\n+ 21#define _cstypes_h_\n+ 22\n+ 23#include \"tds_sysdep_public.h\"\n+ 24\n+ 25#ifdef __cplusplus\n+ 26extern \"C\"\n+ 27{\n+ 28#if 0\n+ 29}\n+ 30#endif\n+ 31#endif\n 32\n- 33typedef int * LPINT;\n- 34typedef char * LPSTR;\n- 35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)\n- 36typedef BYTE * LPBYTE;\n- 37#endif\n- 38typedef void * LPVOID;\n- 39typedef const char * LPCSTR;\n- 40\n- 41typedef const LPINT LPCINT;\n- 42#ifndef _LPCBYTE_DEFINED\n- 43#define _LPCBYTE_DEFINED\n- 44typedef const BYTE * LPCBYTE;\n- 45#endif\n- 46typedef USHORT * LPUSHORT;\n- 47typedef const LPUSHORT LPCUSHORT;\n- 48typedef DBINT * LPDBINT;\n- 49typedef const LPDBINT LPCDBINT;\n- 50typedef DBBINARY * LPDBBINARY;\n- 51typedef const LPDBBINARY LPCDBBINARY;\n- 52typedef DBDATEREC * LPDBDATEREC;\n- 53typedef const LPDBDATEREC LPCDBDATEREC;\n- 54typedef DBDATETIME * LPDBDATETIME;\n- 55typedef const LPDBDATETIME LPCDBDATETIME;\n+ 33typedef int32_t CS_INT;\n+ 34typedef uint32_t CS_UINT;\n+ 35typedef int64_t CS_BIGINT;\n+ 36typedef uint64_t CS_UBIGINT;\n+ 37typedef int16_t CS_SMALLINT;\n+ 38typedef uint16_t CS_USMALLINT;\n+ 39typedef unsigned char CS_TINYINT;\n+ 40typedef char CS_CHAR;\n+ 41typedef unsigned char CS_BYTE;\n+ 42typedef tds_sysdep_real32_type CS_REAL;\n+ 43typedef tds_sysdep_real64_type CS_FLOAT;\n+ 44typedef int32_t CS_BOOL;\n+ 45typedef void CS_VOID;\n+ 46typedef unsigned char CS_IMAGE;\n+ 47typedef unsigned char CS_TEXT;\n+ 48typedef unsigned char CS_LONGBINARY;\n+ 49typedef unsigned char CS_LONGCHAR;\n+ 50typedef long CS_LONG;\n+ 51typedef unsigned char CS_BINARY;\n+ 52typedef uint16_t CS_USHORT;\n+ 53typedef unsigned char CS_BIT;\n+ 54\n+ 55typedef CS_INT CS_RETCODE;\n 56\n- 57#endif\n-LOGINREC\n-Definition bsqlodbc.c:100\n-tds_dblib_dbprocess\n-Definition dblib.h:123\n-DBDATETIME\n-Definition sybdb.h:295\n-tds_sybase_dbdaterec\n-Definition sybdb.h:474\n+ 57#define CS_MAX_NAME 132\n+ 58#define CS_MAX_SCALE 77\n+ 59#define CS_MAX_PREC 77 /* used by php */\n+ 60#define CS_MAX_NUMLEN 33 /* used by roguewave */\n+ 61#define CS_MAX_MSG 1024\n+ 62#define CS_SQLSTATE_SIZE 8\n+ 63#define CS_OBJ_NAME 400\n+ 64#define CS_TP_SIZE 16 /* text pointer */\n+ 65#define CS_TS_SIZE 8 /* length of timestamp */\n+ 66\n+ 67\n+68typedef struct _cs_numeric\n+ 69{\n+ 70 unsigned char precision;\n+ 71 unsigned char scale;\n+ 72 unsigned char array[CS_MAX_NUMLEN];\n+ 73} CS_NUMERIC;\n+ 74\n+ 75typedef CS_NUMERIC CS_DECIMAL;\n+ 76\n+77typedef struct _cs_varbinary\n+ 78{\n+ 79 CS_SMALLINT len;\n+ 80 CS_CHAR array[256];\n+ 81} CS_VARBINARY;\n+ 82\n+83typedef struct _cs_varchar\n+ 84{\n+ 85 CS_SMALLINT len; /* length of the string */\n+ 86 CS_CHAR str[256]; /* string, no NULL terminator */\n+ 87} CS_VARCHAR;\n+ 88\n+ 89typedef struct _cs_config CS_CONFIG;\n+ 90typedef struct _cs_context CS_CONTEXT;\n+ 91typedef struct _cs_connection CS_CONNECTION;\n+ 92typedef struct _cs_locale CS_LOCALE;\n+ 93typedef struct _cs_command CS_COMMAND;\n+ 94typedef struct _cs_blk_row CS_BLK_ROW;\n+ 95\n+96typedef struct _cs_iodesc\n+ 97{\n+ 98 CS_INT iotype;\n+ 99 CS_INT datatype;\n+ 100 CS_LOCALE *locale;\n+ 101 CS_INT usertype;\n+ 102 CS_INT total_txtlen;\n+ 103 CS_INT offset;\n+ 104 CS_BOOL log_on_update;\n+ 105 CS_CHAR name[CS_OBJ_NAME];\n+ 106 CS_INT namelen;\n+ 107 CS_BYTE timestamp[CS_TS_SIZE];\n+ 108 CS_INT timestamplen;\n+ 109 CS_BYTE textptr[CS_TP_SIZE];\n+ 110 CS_INT textptrlen;\n+ 111} CS_IODESC;\n+ 112\n+113typedef struct _cs_datafmt\n+ 114{\n+ 115 CS_CHAR name[CS_MAX_NAME];\n+ 116 CS_INT namelen;\n+ 117 CS_INT datatype;\n+ 118 CS_INT format;\n+ 119 CS_INT maxlength;\n+ 120 CS_INT scale;\n+ 121 CS_INT precision;\n+ 122 CS_INT status;\n+ 123 CS_INT count;\n+ 124 CS_INT usertype;\n+ 125 CS_LOCALE *locale;\n+ 126} CS_DATAFMT;\n+ 127\n+128typedef struct _cs_money\n+ 129{\n+ 130 CS_INT mnyhigh;\n+ 131 CS_UINT mnylow;\n+ 132} CS_MONEY;\n+ 133\n+134typedef struct _cs_money4\n+ 135{\n+ 136 CS_INT mny4;\n+ 137} CS_MONEY4;\n+ 138\n+ 139typedef CS_INT CS_DATE;\n+ 140\n+ 141typedef CS_INT CS_TIME;\n+ 142\n+ 143typedef CS_UBIGINT CS_BIGDATETIME;\n+ 144typedef CS_UBIGINT CS_BIGTIME;\n+ 145\n+146typedef struct _cs_datetime\n+ 147{\n+ 148 CS_INT dtdays;\n+ 149 CS_INT dttime;\n+ 150} CS_DATETIME;\n+ 151\n+152typedef struct _cs_datetime4\n+ 153{\n+ 154 CS_USHORT days;\n+ 155 CS_USHORT minutes;\n+ 156} CS_DATETIME4;\n+ 157\n+158typedef struct _cs_daterec\n+ 159{\n+ 160 CS_INT dateyear;\n+ 161 CS_INT datemonth;\n+ 162 CS_INT datedmonth;\n+ 163 CS_INT datedyear;\n+ 164 CS_INT datedweek;\n+ 165 CS_INT datehour;\n+ 166 CS_INT dateminute;\n+ 167 CS_INT datesecond;\n+ 168 CS_INT datemsecond;\n+ 169 CS_INT datetzone;\n+ 170 CS_INT datesecfrac;\n+ 171 CS_INT datesecprec;\n+ 172} CS_DATEREC;\n+ 173\n+ 174typedef CS_INT CS_MSGNUM;\n+ 175\n+176typedef struct _cs_clientmsg\n+ 177{\n+ 178 CS_INT severity;\n+ 179 CS_MSGNUM msgnumber;\n+ 180 CS_CHAR msgstring[CS_MAX_MSG];\n+ 181 CS_INT msgstringlen;\n+ 182 CS_INT osnumber;\n+ 183 CS_CHAR osstring[CS_MAX_MSG];\n+ 184 CS_INT osstringlen;\n+ 185 CS_INT status;\n+ 186 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];\n+ 187 CS_INT sqlstatelen;\n+ 188} CS_CLIENTMSG;\n+ 189\n+190typedef struct _cs_servermsg\n+ 191{\n+ 192 CS_MSGNUM msgnumber;\n+ 193 CS_INT state;\n+ 194 CS_INT severity;\n+ 195 CS_CHAR text[CS_MAX_MSG];\n+ 196 CS_INT textlen;\n+ 197 CS_CHAR svrname[CS_MAX_NAME];\n+ 198 CS_INT svrnlen;\n+ 199 CS_CHAR proc[CS_MAX_NAME];\n+ 200 CS_INT proclen;\n+ 201 CS_INT line;\n+ 202 CS_INT status;\n+ 203 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];\n+ 204 CS_INT sqlstatelen;\n+ 205} CS_SERVERMSG;\n+ 206\n+ 207#ifdef __cplusplus\n+ 208#if 0\n+ 209{\n+ 210#endif\n+ 211}\n+ 212#endif\n+ 213\n+ 214#endif\n+_cs_numeric\n+Definition cstypes.h:69\n+_cs_varbinary\n+Definition cstypes.h:78\n+_cs_varchar\n+Definition cstypes.h:84\n+_cs_iodesc\n+Definition cstypes.h:97\n+_cs_datafmt\n+Definition cstypes.h:114\n+_cs_money\n+Definition cstypes.h:129\n+_cs_money4\n+Definition cstypes.h:135\n+_cs_datetime\n+Definition cstypes.h:147\n+_cs_datetime4\n+Definition cstypes.h:153\n+_cs_daterec\n+Definition cstypes.h:159\n+_cs_clientmsg\n+Definition cstypes.h:177\n+_cs_servermsg\n+Definition cstypes.h:191\n+_cs_config\n+Definition ctlib.h:45\n+_cs_context\n+Definition ctlib.h:75\n+_cs_connection\n+Definition ctlib.h:117\n+_cs_command\n+Definition ctlib.h:212\n+_cs_locale\n+Definition ctlib.h:248\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00350_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00350_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/sqldb.h Source File\n+FreeTDS API: include/tds_sysdep_public.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n \n
    \n-
    sqldb.h
    \n+
    tds_sysdep_public.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 1998-2011 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,176 +96,117 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef SQLDB_h
    \n-
    21#define SQLDB_h
    \n+
    20#ifndef _tds_sysdep_public_h_
    \n+
    21#define _tds_sysdep_public_h_
    \n
    22
    \n-
    23#include "./sybdb.h"
    \n-
    24
    \n-
    25#define SQLCHAR SYBCHAR
    \n-
    26#define SQLVARCHAR SYBVARCHAR
    \n-
    27#define SQLINTN SYBINTN
    \n-
    28#define SQLINT1 SYBINT1
    \n-
    29#define SQLINT2 SYBINT2
    \n-
    30#define SQLINT4 SYBINT4
    \n-
    31#define SQLINT8 SYBINT8
    \n-
    32#define SQLFLT8 SYBFLT8
    \n-
    33#define SQLDATETIME SYBDATETIME
    \n-
    34#define SQLBIT SYBBIT
    \n-
    35#define SQLTEXT SYBTEXT
    \n-
    36#define SQLIMAGE SYBIMAGE
    \n-
    37#define SQLMONEY4 SYBMONEY4
    \n-
    38#define SQLMONEY SYBMONEY
    \n-
    39#define SQLDATETIM4 SYBDATETIME4
    \n-
    40#define SQLFLT4 SYBREAL
    \n-
    41#define SQLBINARY SYBBINARY
    \n-
    42#define SQLVARBINARY SYBVARBINARY
    \n-
    43#define SQLNUMERIC SYBNUMERIC
    \n-
    44#define SQLDECIMAL SYBDECIMAL
    \n-
    45#define SQLFLTN SYBFLTN
    \n-
    46#define SQLMONEYN SYBMONEYN
    \n-
    47#define SQLDATETIMN SYBDATETIMN
    \n-
    48#define SQLVOID SYBVOID
    \n-
    49
    \n-
    50#define SMALLDATETIBIND SMALLDATETIMEBIND
    \n-
    51
    \n-
    52#define DBERRHANDLE_PROC EHANDLEFUNC
    \n-
    53#define DBMSGHANDLE_PROC MHANDLEFUNC
    \n-
    54
    \n-
    55/* DB-Library errors as defined by Microsoft */
    \n-
    56#define SQLEMEM SYBEMEM
    \n-
    57#define SQLENULL SYBENULL
    \n-
    58#define SQLENLOG SYBENLOG
    \n-
    59#define SQLEPWD SYBEPWD
    \n-
    60#define SQLECONN SYBECONN
    \n-
    61#define SQLEDDNE SYBEDDNE
    \n-
    62#define SQLENULLO SYBENULLO
    \n-
    63#define SQLESMSG SYBESMSG
    \n-
    64#define SQLEBTOK SYBEBTOK
    \n-
    65#define SQLENSPE SYBENSPE
    \n-
    66#define SQLEREAD SYBEREAD
    \n-
    67#define SQLECNOR SYBECNOR
    \n-
    68#define SQLETSIT SYBETSIT
    \n-
    69#define SQLEPARM SYBEPARM
    \n-
    70#define SQLEAUTN SYBEAUTN
    \n-
    71#define SQLECOFL SYBECOFL
    \n-
    72#define SQLERDCN SYBERDCN
    \n-
    73#define SQLEICN SYBEICN
    \n-
    74#define SQLECLOS SYBECLOS
    \n-
    75#define SQLENTXT SYBENTXT
    \n-
    76#define SQLEDNTI SYBEDNTI
    \n-
    77#define SQLETMTD SYBETMTD
    \n-
    78#define SQLEASEC SYBEASEC
    \n-
    79#define SQLENTLL SYBENTLL
    \n-
    80#define SQLETIME SYBETIME
    \n-
    81#define SQLEWRIT SYBEWRIT
    \n-
    82#define SQLEMODE SYBEMODE
    \n-
    83#define SQLEOOB SYBEOOB
    \n-
    84#define SQLEITIM SYBEITIM
    \n-
    85#define SQLEDBPS SYBEDBPS
    \n-
    86#define SQLEIOPT SYBEIOPT
    \n-
    87#define SQLEASNL SYBEASNL
    \n-
    88#define SQLEASUL SYBEASUL
    \n-
    89#define SQLENPRM SYBENPRM
    \n-
    90#define SQLEDBOP SYBEDBOP
    \n-
    91#define SQLENSIP SYBENSIP
    \n-
    92#define SQLECNULL SYBECNULL
    \n-
    93#define SQLESEOF SYBESEOF
    \n-
    94#define SQLERPND SYBERPND
    \n-
    95#define SQLECSYN SYBECSYN
    \n-
    96#define SQLENONET SYBENONET
    \n-
    97#define SQLEBTYP SYBEBTYP
    \n-
    98#define SQLEABNC SYBEABNC
    \n-
    99#define SQLEABMT SYBEABMT
    \n-
    100#define SQLEABNP SYBEABNP
    \n-
    101#define SQLEBNCR SYBEBNCR
    \n-
    102#define SQLEAAMT SYBEAAMT
    \n-
    103#define SQLENXID SYBENXID
    \n-
    104#define SQLEIFNB SYBEIFNB
    \n-
    105#define SQLEKBCO SYBEKBCO
    \n-
    106#define SQLEBBCI SYBEBBCI
    \n-
    107#define SQLEKBCI SYBEKBCI
    \n-
    108#define SQLEBCWE SYBEBCWE
    \n-
    109#define SQLEBCNN SYBEBCNN
    \n-
    110#define SQLEBCOR SYBEBCOR
    \n-
    111#define SQLEBCPI SYBEBCPI
    \n-
    112#define SQLEBCPN SYBEBCPN
    \n-
    113#define SQLEBCPB SYBEBCPB
    \n-
    114#define SQLEVDPT SYBEVDPT
    \n-
    115#define SQLEBIVI SYBEBIVI
    \n-
    116#define SQLEBCBC SYBEBCBC
    \n-
    117#define SQLEBCFO SYBEBCFO
    \n-
    118#define SQLEBCVH SYBEBCVH
    \n-
    119#define SQLEBCUO SYBEBCUO
    \n-
    120#define SQLEBUOE SYBEBUOE
    \n-
    121#define SQLEBWEF SYBEBWEF
    \n-
    122#define SQLEBTMT SYBEBTMT
    \n-
    123#define SQLEBEOF SYBEBEOF
    \n-
    124#define SQLEBCSI SYBEBCSI
    \n-
    125#define SQLEPNUL SYBEPNUL
    \n-
    126#define SQLEBSKERR SYBEBSKERR
    \n-
    127#define SQLEBDIO SYBEBDIO
    \n-
    128#define SQLEBCNT SYBEBCNT
    \n-
    129#define SQLEMDBP SYBEMDBP
    \n-
    130#define SQLINIT SYBINIT
    \n-
    131#define SQLCRSINV SYBCRSINV
    \n-
    132#define SQLCRSCMD SYBCRSCMD
    \n-
    133#define SQLCRSNOIND SYBCRSNOIND
    \n-
    134#define SQLCRSDIS SYBCRSDIS
    \n-
    135#define SQLCRSAGR SYBCRSAGR
    \n-
    136#define SQLCRSORD SYBCRSORD
    \n-
    137#define SQLCRSMEM SYBCRSMEM
    \n-
    138#define SQLCRSBSKEY SYBCRSBSKEY
    \n-
    139#define SQLCRSNORES SYBCRSNORES
    \n-
    140#define SQLCRSVIEW SYBCRSVIEW
    \n-
    141#define SQLCRSBUFR SYBCRSBUFR
    \n-
    142#define SQLCRSFROWN SYBCRSFROWN
    \n-
    143#define SQLCRSBROL SYBCRSBROL
    \n-
    144#define SQLCRSFRAND SYBCRSFRAND
    \n-
    145#define SQLCRSFLAST SYBCRSFLAST
    \n-
    146#define SQLCRSRO SYBCRSRO
    \n-
    147#define SQLCRSTAB SYBCRSTAB
    \n-
    148#define SQLCRSUPDTAB SYBCRSUPDTAB
    \n-
    149#define SQLCRSUPDNB SYBCRSUPDNB
    \n-
    150#define SQLCRSVIIND SYBCRSVIIND
    \n-
    151#define SQLCRSNOUPD SYBCRSNOUPD
    \n-
    152#define SQLCRSOS SYBCRSOS
    \n-
    153#define SQLEBCSA SYBEBCSA
    \n-
    154#define SQLEBCRO SYBEBCRO
    \n-
    155#define SQLEBCNE SYBEBCNE
    \n-
    156#define SQLEBCSK SYBEBCSK
    \n-
    157#define SQLEUVBF SYBEUVBF
    \n-
    158#define SQLEBIHC SYBEBIHC
    \n-
    159#define SQLEBWFF SYBEBWFF
    \n-
    160#define SQLNUMVAL SYBNUMVAL
    \n-
    161#define SQLEOLDVR SYBEOLDVR
    \n-
    162#define SQLEBCPS SYBEBCPS
    \n-
    163#define SQLEDTC SYBEDTC
    \n-
    164#define SQLENOTIMPL SYBENOTIMPL
    \n-
    165#define SQLENONFLOAT SYBENONFLOAT
    \n-
    166#define SQLECONNFB SYBECONNFB
    \n-
    167
    \n-
    168
    \n-
    169#define dbfreelogin(x) dbloginfree((x))
    \n-
    170
    \n-
    171#define dbprocerrhandle(p, h) dberrhandle((h))
    \n-
    172#define dbprocmsghandle(p, h) dbmsghandle((h))
    \n-
    173
    \n-
    174#define dbwinexit()
    \n-
    175
    \n-
    176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 jklowden Exp $";
    \n-
    177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_unused_sqldb_h_warn };
    \n-
    178
    \n-
    179
    \n-
    180#endif
    \n-
    Primary include file for db-lib applications.
    \n+
    23/*
    \n+
    24 * This file is publicly installed.
    \n+
    25 * MUST not include config.h
    \n+
    26 */
    \n+
    27
    \n+
    28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || \\
    \n+
    29 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
    \n+
    30# include <stdint.h>
    \n+
    31#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)
    \n+
    32# include <inttypes.h>
    \n+
    33#else
    \n+
    34typedef signed char int8_t; /* 8-bit int */
    \n+
    35typedef unsigned char uint8_t; /* 8-bit int */
    \n+
    36/*
    \n+
    37 * This is where platform-specific changes need to be made.
    \n+
    38 */
    \n+
    39# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
    \n+
    40# include <winsock2.h>
    \n+
    41# include <ws2tcpip.h>
    \n+
    42# include <windows.h>
    \n+
    43 typedef signed short int16_t; /* 16-bit int */
    \n+
    44 typedef unsigned short uint16_t; /* 16-bit int */
    \n+
    45 typedef signed int int32_t; /* 32-bit int */
    \n+
    46 typedef unsigned int uint32_t; /* 32-bit int */
    \n+
    47 typedef signed __int64 int64_t; /* 64-bit int */
    \n+
    48 typedef unsigned __int64 uint64_t; /* 64-bit int */
    \n+
    49# if !defined(WIN64) && !defined(_WIN64)
    \n+
    50 typedef signed int intptr_t; /* 32-bit int */
    \n+
    51 typedef unsigned int uintptr_t; /* 32-bit int */
    \n+
    52# else
    \n+
    53 typedef signed __int64 intptr_t; /* 64-bit int */
    \n+
    54 typedef unsigned __int64 uintptr_t; /* 64-bit int */
    \n+
    55# endif
    \n+
    56# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
    \n+
    57 typedef signed short int16_t; /* 16-bit int */
    \n+
    58 typedef unsigned short uint16_t; /* 16-bit int */
    \n+
    59 typedef signed int int32_t; /* 32-bit int */
    \n+
    60 typedef unsigned int uint32_t; /* 32-bit int */
    \n+
    61 typedef signed long long int64_t; /* 64-bit int */
    \n+
    62 typedef unsigned long long uint64_t; /* 64-bit int */
    \n+
    63 typedef signed int intptr_t;
    \n+
    64 typedef unsigned int uintptr_t;
    \n+
    65# endif
    \n+
    66#endif
    \n+
    67
    \n+
    68#include <float.h>
    \n+
    69
    \n+
    70/* try to understand float sizes using float.h constants */
    \n+
    71#if FLT_RADIX == 2
    \n+
    72# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128
    \n+
    73# define tds_sysdep_real32_type float /* 32-bit real */
    \n+
    74# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128
    \n+
    75# define tds_sysdep_real32_type double /* 32-bit real */
    \n+
    76# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128
    \n+
    77# define tds_sysdep_real32_type long double /* 32-bit real */
    \n+
    78# endif
    \n+
    79# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024
    \n+
    80# define tds_sysdep_real64_type float /* 64-bit real */
    \n+
    81# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024
    \n+
    82# define tds_sysdep_real64_type double /* 64-bit real */
    \n+
    83# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
    \n+
    84# define tds_sysdep_real64_type long double /* 64-bit real */
    \n+
    85# endif
    \n+
    86# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)
    \n+
    87# error Some float type was not found!
    \n+
    88# endif
    \n+
    89#else
    \n+
    90# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38
    \n+
    91# define tds_sysdep_real32_type float /* 32-bit real */
    \n+
    92# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38
    \n+
    93# define tds_sysdep_real32_type double /* 32-bit real */
    \n+
    94# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38
    \n+
    95# define tds_sysdep_real32_type long double /* 32-bit real */
    \n+
    96# endif
    \n+
    97# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308
    \n+
    98# define tds_sysdep_real64_type float /* 64-bit real */
    \n+
    99# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308
    \n+
    100# define tds_sysdep_real64_type double /* 64-bit real */
    \n+
    101# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308
    \n+
    102# define tds_sysdep_real64_type long double /* 64-bit real */
    \n+
    103# endif
    \n+
    104#endif
    \n+
    105
    \n+
    106/* fall back to configure.ac types */
    \n+
    107#ifndef tds_sysdep_real32_type
    \n+
    108#define tds_sysdep_real32_type float /* 32-bit real */
    \n+
    109#endif /* !tds_sysdep_real32_type */
    \n+
    110
    \n+
    111#ifndef tds_sysdep_real64_type
    \n+
    112#define tds_sysdep_real64_type double /* 64-bit real */
    \n+
    113#endif /* !tds_sysdep_real64_type */
    \n+
    114
    \n+
    115#if !defined(MSDBLIB) && !defined(SYBDBLIB)
    \n+
    116#define SYBDBLIB 1
    \n+
    117#endif
    \n+
    118#if defined(MSDBLIB) && defined(SYBDBLIB)
    \n+
    119#error MSDBLIB and SYBDBLIB cannot both be defined
    \n+
    120#endif
    \n+
    121
    \n+
    122#endif /* _tds_sysdep_public_h_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-sqldb.h\n+tds_sysdep_public.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 1998-2011 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,175 +26,114 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef SQLDB_h\n- 21#define SQLDB_h\n+ 20#ifndef _tds_sysdep_public_h_\n+ 21#define _tds_sysdep_public_h_\n 22\n- 23#include \"./sybdb.h\"\n- 24\n- 25#define SQLCHAR SYBCHAR\n- 26#define SQLVARCHAR SYBVARCHAR\n- 27#define SQLINTN SYBINTN\n- 28#define SQLINT1 SYBINT1\n- 29#define SQLINT2 SYBINT2\n- 30#define SQLINT4 SYBINT4\n- 31#define SQLINT8 SYBINT8\n- 32#define SQLFLT8 SYBFLT8\n- 33#define SQLDATETIME SYBDATETIME\n- 34#define SQLBIT SYBBIT\n- 35#define SQLTEXT SYBTEXT\n- 36#define SQLIMAGE SYBIMAGE\n- 37#define SQLMONEY4 SYBMONEY4\n- 38#define SQLMONEY SYBMONEY\n- 39#define SQLDATETIM4 SYBDATETIME4\n- 40#define SQLFLT4 SYBREAL\n- 41#define SQLBINARY SYBBINARY\n- 42#define SQLVARBINARY SYBVARBINARY\n- 43#define SQLNUMERIC SYBNUMERIC\n- 44#define SQLDECIMAL SYBDECIMAL\n- 45#define SQLFLTN SYBFLTN\n- 46#define SQLMONEYN SYBMONEYN\n- 47#define SQLDATETIMN SYBDATETIMN\n- 48#define SQLVOID SYBVOID\n- 49\n- 50#define SMALLDATETIBIND SMALLDATETIMEBIND\n- 51\n- 52#define DBERRHANDLE_PROC EHANDLEFUNC\n- 53#define DBMSGHANDLE_PROC MHANDLEFUNC\n- 54\n- 55/* DB-Library errors as defined by Microsoft */\n- 56#define SQLEMEM SYBEMEM\n- 57#define SQLENULL SYBENULL\n- 58#define SQLENLOG SYBENLOG\n- 59#define SQLEPWD SYBEPWD\n- 60#define SQLECONN SYBECONN\n- 61#define SQLEDDNE SYBEDDNE\n- 62#define SQLENULLO SYBENULLO\n- 63#define SQLESMSG SYBESMSG\n- 64#define SQLEBTOK SYBEBTOK\n- 65#define SQLENSPE SYBENSPE\n- 66#define SQLEREAD SYBEREAD\n- 67#define SQLECNOR SYBECNOR\n- 68#define SQLETSIT SYBETSIT\n- 69#define SQLEPARM SYBEPARM\n- 70#define SQLEAUTN SYBEAUTN\n- 71#define SQLECOFL SYBECOFL\n- 72#define SQLERDCN SYBERDCN\n- 73#define SQLEICN SYBEICN\n- 74#define SQLECLOS SYBECLOS\n- 75#define SQLENTXT SYBENTXT\n- 76#define SQLEDNTI SYBEDNTI\n- 77#define SQLETMTD SYBETMTD\n- 78#define SQLEASEC SYBEASEC\n- 79#define SQLENTLL SYBENTLL\n- 80#define SQLETIME SYBETIME\n- 81#define SQLEWRIT SYBEWRIT\n- 82#define SQLEMODE SYBEMODE\n- 83#define SQLEOOB SYBEOOB\n- 84#define SQLEITIM SYBEITIM\n- 85#define SQLEDBPS SYBEDBPS\n- 86#define SQLEIOPT SYBEIOPT\n- 87#define SQLEASNL SYBEASNL\n- 88#define SQLEASUL SYBEASUL\n- 89#define SQLENPRM SYBENPRM\n- 90#define SQLEDBOP SYBEDBOP\n- 91#define SQLENSIP SYBENSIP\n- 92#define SQLECNULL SYBECNULL\n- 93#define SQLESEOF SYBESEOF\n- 94#define SQLERPND SYBERPND\n- 95#define SQLECSYN SYBECSYN\n- 96#define SQLENONET SYBENONET\n- 97#define SQLEBTYP SYBEBTYP\n- 98#define SQLEABNC SYBEABNC\n- 99#define SQLEABMT SYBEABMT\n- 100#define SQLEABNP SYBEABNP\n- 101#define SQLEBNCR SYBEBNCR\n- 102#define SQLEAAMT SYBEAAMT\n- 103#define SQLENXID SYBENXID\n- 104#define SQLEIFNB SYBEIFNB\n- 105#define SQLEKBCO SYBEKBCO\n- 106#define SQLEBBCI SYBEBBCI\n- 107#define SQLEKBCI SYBEKBCI\n- 108#define SQLEBCWE SYBEBCWE\n- 109#define SQLEBCNN SYBEBCNN\n- 110#define SQLEBCOR SYBEBCOR\n- 111#define SQLEBCPI SYBEBCPI\n- 112#define SQLEBCPN SYBEBCPN\n- 113#define SQLEBCPB SYBEBCPB\n- 114#define SQLEVDPT SYBEVDPT\n- 115#define SQLEBIVI SYBEBIVI\n- 116#define SQLEBCBC SYBEBCBC\n- 117#define SQLEBCFO SYBEBCFO\n- 118#define SQLEBCVH SYBEBCVH\n- 119#define SQLEBCUO SYBEBCUO\n- 120#define SQLEBUOE SYBEBUOE\n- 121#define SQLEBWEF SYBEBWEF\n- 122#define SQLEBTMT SYBEBTMT\n- 123#define SQLEBEOF SYBEBEOF\n- 124#define SQLEBCSI SYBEBCSI\n- 125#define SQLEPNUL SYBEPNUL\n- 126#define SQLEBSKERR SYBEBSKERR\n- 127#define SQLEBDIO SYBEBDIO\n- 128#define SQLEBCNT SYBEBCNT\n- 129#define SQLEMDBP SYBEMDBP\n- 130#define SQLINIT SYBINIT\n- 131#define SQLCRSINV SYBCRSINV\n- 132#define SQLCRSCMD SYBCRSCMD\n- 133#define SQLCRSNOIND SYBCRSNOIND\n- 134#define SQLCRSDIS SYBCRSDIS\n- 135#define SQLCRSAGR SYBCRSAGR\n- 136#define SQLCRSORD SYBCRSORD\n- 137#define SQLCRSMEM SYBCRSMEM\n- 138#define SQLCRSBSKEY SYBCRSBSKEY\n- 139#define SQLCRSNORES SYBCRSNORES\n- 140#define SQLCRSVIEW SYBCRSVIEW\n- 141#define SQLCRSBUFR SYBCRSBUFR\n- 142#define SQLCRSFROWN SYBCRSFROWN\n- 143#define SQLCRSBROL SYBCRSBROL\n- 144#define SQLCRSFRAND SYBCRSFRAND\n- 145#define SQLCRSFLAST SYBCRSFLAST\n- 146#define SQLCRSRO SYBCRSRO\n- 147#define SQLCRSTAB SYBCRSTAB\n- 148#define SQLCRSUPDTAB SYBCRSUPDTAB\n- 149#define SQLCRSUPDNB SYBCRSUPDNB\n- 150#define SQLCRSVIIND SYBCRSVIIND\n- 151#define SQLCRSNOUPD SYBCRSNOUPD\n- 152#define SQLCRSOS SYBCRSOS\n- 153#define SQLEBCSA SYBEBCSA\n- 154#define SQLEBCRO SYBEBCRO\n- 155#define SQLEBCNE SYBEBCNE\n- 156#define SQLEBCSK SYBEBCSK\n- 157#define SQLEUVBF SYBEUVBF\n- 158#define SQLEBIHC SYBEBIHC\n- 159#define SQLEBWFF SYBEBWFF\n- 160#define SQLNUMVAL SYBNUMVAL\n- 161#define SQLEOLDVR SYBEOLDVR\n- 162#define SQLEBCPS SYBEBCPS\n- 163#define SQLEDTC SYBEDTC\n- 164#define SQLENOTIMPL SYBENOTIMPL\n- 165#define SQLENONFLOAT SYBENONFLOAT\n- 166#define SQLECONNFB SYBECONNFB\n- 167\n- 168\n- 169#define dbfreelogin(x) dbloginfree((x))\n- 170\n- 171#define dbprocerrhandle(p, h) dberrhandle((h))\n- 172#define dbprocmsghandle(p, h) dbmsghandle((h))\n- 173\n- 174#define dbwinexit()\n- 175\n- 176static const char rcsid_sqldb_h[] = \"$Id: sqldb.h,v 1.6 2009-12-02 22:35:18\n-jklowden Exp $\";\n- 177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h,\n-no_unused_sqldb_h_warn };\n- 178\n- 179\n- 180#endif\n-sybdb.h\n-Primary include file for db-lib applications.\n+ 23/*\n+ 24 * This file is publicly installed.\n+ 25 * MUST not include config.h\n+ 26 */\n+ 27\n+ 28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L)\n+|| \\\n+ 29 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)\n+ 30# include \n+ 31#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)\n+ 32# include \n+ 33#else\n+ 34typedef signed char int8_t; /* 8-bit int */\n+ 35typedef unsigned char uint8_t; /* 8-bit int */\n+ 36/*\n+ 37 * This is where platform-specific changes need to be made.\n+ 38 */\n+ 39# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)\n+ 40# include \n+ 41# include \n+ 42# include \n+ 43 typedef signed short int16_t; /* 16-bit int */\n+ 44 typedef unsigned short uint16_t; /* 16-bit int */\n+ 45 typedef signed int int32_t; /* 32-bit int */\n+ 46 typedef unsigned int uint32_t; /* 32-bit int */\n+ 47 typedef signed __int64 int64_t; /* 64-bit int */\n+ 48 typedef unsigned __int64 uint64_t; /* 64-bit int */\n+ 49# if !defined(WIN64) && !defined(_WIN64)\n+ 50 typedef signed int intptr_t; /* 32-bit int */\n+ 51 typedef unsigned int uintptr_t; /* 32-bit int */\n+ 52# else\n+ 53 typedef signed __int64 intptr_t; /* 64-bit int */\n+ 54 typedef unsigned __int64 uintptr_t; /* 64-bit int */\n+ 55# endif\n+ 56# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */\n+ 57 typedef signed short int16_t; /* 16-bit int */\n+ 58 typedef unsigned short uint16_t; /* 16-bit int */\n+ 59 typedef signed int int32_t; /* 32-bit int */\n+ 60 typedef unsigned int uint32_t; /* 32-bit int */\n+ 61 typedef signed long long int64_t; /* 64-bit int */\n+ 62 typedef unsigned long long uint64_t; /* 64-bit int */\n+ 63 typedef signed int intptr_t;\n+ 64 typedef unsigned int uintptr_t;\n+ 65# endif\n+ 66#endif\n+ 67\n+ 68#include \n+ 69\n+ 70/* try to understand float sizes using float.h constants */\n+ 71#if FLT_RADIX == 2\n+ 72# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128\n+ 73# define tds_sysdep_real32_type float /* 32-bit real */\n+ 74# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128\n+ 75# define tds_sysdep_real32_type double /* 32-bit real */\n+ 76# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128\n+ 77# define tds_sysdep_real32_type long double /* 32-bit real */\n+ 78# endif\n+ 79# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024\n+ 80# define tds_sysdep_real64_type float /* 64-bit real */\n+ 81# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024\n+ 82# define tds_sysdep_real64_type double /* 64-bit real */\n+ 83# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024\n+ 84# define tds_sysdep_real64_type long double /* 64-bit real */\n+ 85# endif\n+ 86# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)\n+ 87# error Some float type was not found!\n+ 88# endif\n+ 89#else\n+ 90# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38\n+ 91# define tds_sysdep_real32_type float /* 32-bit real */\n+ 92# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38\n+ 93# define tds_sysdep_real32_type double /* 32-bit real */\n+ 94# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38\n+ 95# define tds_sysdep_real32_type long double /* 32-bit real */\n+ 96# endif\n+ 97# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308\n+ 98# define tds_sysdep_real64_type float /* 64-bit real */\n+ 99# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308\n+ 100# define tds_sysdep_real64_type double /* 64-bit real */\n+ 101# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308\n+ 102# define tds_sysdep_real64_type long double /* 64-bit real */\n+ 103# endif\n+ 104#endif\n+ 105\n+ 106/* fall back to configure.ac types */\n+ 107#ifndef tds_sysdep_real32_type\n+ 108#define tds_sysdep_real32_type float /* 32-bit real */\n+ 109#endif /* !tds_sysdep_real32_type */\n+ 110\n+ 111#ifndef tds_sysdep_real64_type\n+ 112#define tds_sysdep_real64_type double /* 64-bit real */\n+ 113#endif /* !tds_sysdep_real64_type */\n+ 114\n+ 115#if !defined(MSDBLIB) && !defined(SYBDBLIB)\n+ 116#define SYBDBLIB 1\n+ 117#endif\n+ 118#if defined(MSDBLIB) && defined(SYBDBLIB)\n+ 119#error MSDBLIB and SYBDBLIB cannot both be defined\n+ 120#endif\n+ 121\n+ 122#endif /* _tds_sysdep_public_h_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00353_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00353_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/windows.h Source File\n+FreeTDS API: include/syberror.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n \n \n \n \n \n
    \n \n+
  • include
  • \n
    \n \n
    \n-
    windows.h
    \n+
    syberror.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2018 Frediano Ziglio
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,24 +96,49 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef freetds_windows_h_
    \n-
    21#define freetds_windows_h_
    \n+
    20#ifndef _syberror_h_
    \n+
    21#define _syberror_h_
    \n
    22
    \n-
    23#ifdef _WIN32
    \n-
    24#include <winsock2.h>
    \n-
    25#include <ws2tcpip.h>
    \n-
    26#include <windows.h>
    \n-
    27#endif
    \n-
    28
    \n-
    29#endif /* freetds_windows_h_ */
    \n+
    23#ifdef __cplusplus
    \n+
    24extern "C"
    \n+
    25{
    \n+
    26#if 0
    \n+
    27}
    \n+
    28#endif
    \n+
    29#endif
    \n+
    30
    \n+
    31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12:42:12 freddy77 Exp $";
    \n+
    32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, no_unused_syberror_h_warn };
    \n+
    33
    \n+
    34/* severity levels, gleaned from google */
    \n+
    35#define EXINFO 1
    \n+
    36#define EXUSER 2
    \n+
    37#define EXNONFATAL 3
    \n+
    38#define EXCONVERSION 4
    \n+
    39#define EXSERVER 5
    \n+
    40#define EXTIME 6
    \n+
    41#define EXPROGRAM 7
    \n+
    42#define EXRESOURCE 8
    \n+
    43#define EXCOMM 9
    \n+
    44#define EXFATAL 10
    \n+
    45#define EXCONSISTENCY 11
    \n+
    46
    \n+
    47#ifdef __cplusplus
    \n+
    48#if 0
    \n+
    49{
    \n+
    50#endif
    \n+
    51}
    \n+
    52#endif
    \n+
    53
    \n+
    54#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,18 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n- * freetds\n-windows.h\n+syberror.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2018 Frediano Ziglio\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,20 +26,47 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef freetds_windows_h_\n- 21#define freetds_windows_h_\n+ 20#ifndef _syberror_h_\n+ 21#define _syberror_h_\n 22\n- 23#ifdef _WIN32\n- 24#include \n- 25#include \n- 26#include \n- 27#endif\n- 28\n- 29#endif /* freetds_windows_h_ */\n+ 23#ifdef __cplusplus\n+ 24extern \"C\"\n+ 25{\n+ 26#if 0\n+ 27}\n+ 28#endif\n+ 29#endif\n+ 30\n+ 31static const char rcsid_syberror_h[] = \"$Id: syberror.h,v 1.4 2004-10-28 12:\n+42:12 freddy77 Exp $\";\n+ 32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h,\n+no_unused_syberror_h_warn };\n+ 33\n+ 34/* severity levels, gleaned from google */\n+ 35#define EXINFO 1\n+ 36#define EXUSER 2\n+ 37#define EXNONFATAL 3\n+ 38#define EXCONVERSION 4\n+ 39#define EXSERVER 5\n+ 40#define EXTIME 6\n+ 41#define EXPROGRAM 7\n+ 42#define EXRESOURCE 8\n+ 43#define EXCOMM 9\n+ 44#define EXFATAL 10\n+ 45#define EXCONSISTENCY 11\n+ 46\n+ 47#ifdef __cplusplus\n+ 48#if 0\n+ 49{\n+ 50#endif\n+ 51}\n+ 52#endif\n+ 53\n+ 54#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00356_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00356_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils.h Source File\n+FreeTDS API: include/freetds/bytes.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n \n
    \n-
    utils.h
    \n+
    bytes.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2016 Frediano Ziglio
    \n+
    2 * Copyright (C) 2005-2008 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,50 +96,261 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _freetds_utils_h_
    \n-
    21#define _freetds_utils_h_
    \n+
    20#ifndef _tdsbytes_h_
    \n+
    21#define _tdsbytes_h_
    \n
    22
    \n-
    23#if HAVE_STDDEF_H
    \n-
    24#include <stddef.h>
    \n-
    25#endif /* HAVE_STDDEF_H */
    \n-
    26
    \n-
    27#include <freetds/time.h>
    \n-
    28#include <freetds/sysdep_private.h>
    \n-
    29
    \n-
    30#include <freetds/pushvis.h>
    \n-
    31
    \n-
    32#ifdef __cplusplus
    \n-
    33extern "C" {
    \n-
    34#endif
    \n-
    35
    \n-
    36void tds_sleep_s(unsigned sec);
    \n-
    37void tds_sleep_ms(unsigned ms);
    \n-
    38
    \n-
    39char *tds_getpassarg(char *arg);
    \n-
    40
    \n-
    41char *tds_timestamp_str(char *str, int maxlen);
    \n-
    42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);
    \n-
    43int tds_getservice(const char *name);
    \n-
    44char *tds_get_homedir(void);
    \n-
    45
    \n-
    46int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);
    \n-
    47
    \n-
    48#ifdef __cplusplus
    \n-
    49}
    \n-
    50#endif
    \n-
    51
    \n-
    52#include <freetds/popvis.h>
    \n-
    53
    \n-
    54#endif
    \n-
    int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)
    Set socket to not throw SIGPIPE.
    Definition net.c:72
    \n+
    23/*
    \n+
    24 * read a word of n bytes aligned, architecture dependent endian
    \n+
    25 * TDS_GET_An
    \n+
    26 * read a word of n bytes aligned, little endian
    \n+
    27 * TDS_GET_AnLE
    \n+
    28 * read a word of n bytes aligned, big endian
    \n+
    29 * TDS_GET_AnBE
    \n+
    30 * read a word of n bytes unaligned, architecture dependent endian
    \n+
    31 * TDS_GET_UAn
    \n+
    32 * read a word of n bytes unaligned, little endian
    \n+
    33 * TDS_GET_UAnLE
    \n+
    34 * read a word of n bytes unaligned, big endian
    \n+
    35 * TDS_GET_UAnBE
    \n+
    36 */
    \n+
    37
    \n+
    38/* one byte, easy... */
    \n+
    39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])
    \n+
    40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)
    \n+
    41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)
    \n+
    42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)
    \n+
    43
    \n+
    44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)
    \n+
    45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n+
    46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n+
    47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n+
    48
    \n+
    49/* two bytes */
    \n+
    50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
    \n+
    51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)(ptr))[1])
    \n+
    52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)
    \n+
    53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)
    \n+
    54
    \n+
    55#define TDS_PUT_UA2LE(ptr,val) do {\\
    \n+
    56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
    \n+
    57#define TDS_PUT_UA2BE(ptr,val) do {\\
    \n+
    58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_t)(val); } while(0)
    \n+
    59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)
    \n+
    60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)
    \n+
    61
    \n+
    62/* four bytes */
    \n+
    63#define TDS_GET_UA4LE(ptr) \\
    \n+
    64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\\
    \n+
    65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
    \n+
    66#define TDS_GET_UA4BE(ptr) \\
    \n+
    67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\\
    \n+
    68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])
    \n+
    69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)
    \n+
    70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)
    \n+
    71
    \n+
    72#define TDS_PUT_UA4LE(ptr,val) do {\\
    \n+
    73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>16);\\
    \n+
    74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
    \n+
    75#define TDS_PUT_UA4BE(ptr,val) do {\\
    \n+
    76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>16);\\
    \n+
    77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_t)(val); } while(0)
    \n+
    78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)
    \n+
    79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)
    \n+
    80
    \n+
    81#if defined(__GNUC__)
    \n+
    82# define TDS_MAY_ALIAS __attribute__((__may_alias__))
    \n+
    83#else
    \n+
    84# define TDS_MAY_ALIAS
    \n+
    85#endif
    \n+
    86
    \n+
    \n+
    87typedef union {
    \n+
    88 uint16_t usi;
    \n+
    89 uint8_t uc[2];
    \n+
    90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;
    \n+
    \n+
    91
    \n+
    92typedef union {
    \n+
    93 uint32_t ui;
    \n+
    94 uint8_t uc[4];
    \n+
    95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;
    \n+
    96
    \n+
    97/* architecture dependent */
    \n+
    98/* map to generic macros or redefine for aligned and same endianess */
    \n+
    99#ifdef WORDS_BIGENDIAN
    \n+
    100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)
    \n+
    101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)
    \n+
    102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)
    \n+
    103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)
    \n+
    104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)
    \n+
    105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)
    \n+
    106# undef TDS_GET_A2BE
    \n+
    107# undef TDS_GET_A4BE
    \n+
    108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
    \n+
    109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
    \n+
    110
    \n+
    111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)
    \n+
    112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)
    \n+
    113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)
    \n+
    114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)
    \n+
    115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)
    \n+
    116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)
    \n+
    117# undef TDS_PUT_A2BE
    \n+
    118# undef TDS_PUT_A4BE
    \n+
    119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
    \n+
    120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
    \n+
    121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)
    \n+
    122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)
    \n+
    123# define TDS_HOST2BE(val) (val)
    \n+
    124# define TDS_HOST4BE(val) (val)
    \n+
    125#else
    \n+
    126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)
    \n+
    127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)
    \n+
    128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)
    \n+
    129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)
    \n+
    130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)
    \n+
    131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)
    \n+
    132# undef TDS_GET_A2LE
    \n+
    133# undef TDS_GET_A4LE
    \n+
    134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
    \n+
    135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
    \n+
    136
    \n+
    137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n+
    138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)
    \n+
    139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)
    \n+
    140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)
    \n+
    141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)
    \n+
    142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)
    \n+
    143# undef TDS_PUT_A2LE
    \n+
    144# undef TDS_PUT_A4LE
    \n+
    145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
    \n+
    146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
    \n+
    147# define TDS_HOST2LE(val) (val)
    \n+
    148# define TDS_HOST4LE(val) (val)
    \n+
    149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)
    \n+
    150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)
    \n+
    151#endif
    \n+
    152
    \n+
    153/* these platform support unaligned fetch/store */
    \n+
    154/* map unaligned macro to aligned ones */
    \n+
    155#if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\\
    \n+
    156 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\\
    \n+
    157 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\\
    \n+
    158 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_X64))) ||\\
    \n+
    159 defined(__ARM_FEATURE_UNALIGNED) ||\\
    \n+
    160 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\\
    \n+
    161 (defined(_M_ARM) && (_M_ARM >= 7))
    \n+
    162# ifdef WORDS_BIGENDIAN
    \n+
    163# undef TDS_GET_UA2BE
    \n+
    164# undef TDS_GET_UA4BE
    \n+
    165# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)
    \n+
    166# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)
    \n+
    167
    \n+
    168# undef TDS_PUT_UA2BE
    \n+
    169# undef TDS_PUT_UA4BE
    \n+
    170# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)
    \n+
    171# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)
    \n+
    172# else
    \n+
    173# undef TDS_GET_UA2LE
    \n+
    174# undef TDS_GET_UA4LE
    \n+
    175# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)
    \n+
    176# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)
    \n+
    177
    \n+
    178# undef TDS_PUT_UA2LE
    \n+
    179# undef TDS_PUT_UA4LE
    \n+
    180# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)
    \n+
    181# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)
    \n+
    182# endif
    \n+
    183#endif
    \n+
    184
    \n+
    185#undef TDS_BSWAP16
    \n+
    186#undef TDS_BSWAP32
    \n+
    187/* __builtin_bswap16 was introduced in GCC 4.8 */
    \n+
    188#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && defined(__OPTIMIZE__)
    \n+
    189# define TDS_BSWAP16(val) __builtin_bswap16(val)
    \n+
    190# define TDS_BSWAP32(val) __builtin_bswap32(val)
    \n+
    191/* __builtin_bswap32 was introduced in GCC 4.3 */
    \n+
    192#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)
    \n+
    193# define TDS_BSWAP32(val) __builtin_bswap32(val)
    \n+
    194#elif defined(_MSC_VER)
    \n+
    195# define TDS_BSWAP16(val) _byteswap_ushort(val)
    \n+
    196# define TDS_BSWAP32(val) _byteswap_ulong(val)
    \n+
    197#endif
    \n+
    198
    \n+
    199#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)
    \n+
    200# undef TDS_GET_UA2BE
    \n+
    201# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))
    \n+
    202
    \n+
    203# undef TDS_PUT_UA2BE
    \n+
    204# define TDS_PUT_UA2BE(ptr,val) do {\\
    \n+
    205 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0)
    \n+
    206#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)
    \n+
    207# undef TDS_GET_UA2LE
    \n+
    208# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))
    \n+
    209
    \n+
    210# undef TDS_PUT_UA2LE
    \n+
    211# define TDS_PUT_UA2LE(ptr,val) do {\\
    \n+
    212 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0)
    \n+
    213#endif
    \n+
    214
    \n+
    215#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)
    \n+
    216# undef TDS_GET_UA4BE
    \n+
    217# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))
    \n+
    218
    \n+
    219# undef TDS_PUT_UA4BE
    \n+
    220# define TDS_PUT_UA4BE(ptr,val) do {\\
    \n+
    221 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)
    \n+
    222#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)
    \n+
    223# undef TDS_GET_UA4LE
    \n+
    224# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))
    \n+
    225
    \n+
    226# undef TDS_PUT_UA4LE
    \n+
    227# define TDS_PUT_UA4LE(ptr,val) do {\\
    \n+
    228 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)
    \n+
    229#endif
    \n+
    230
    \n+
    231#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)
    \n+
    232# undef TDS_GET_UA2LE
    \n+
    233# undef TDS_GET_UA4LE
    \n+
    234static inline uint16_t
    \n+
    235TDS_GET_UA2LE(void *ptr)
    \n+
    236{
    \n+
    237 unsigned long res;
    \n+
    238 __asm__ ("lhbrx %0,0,%1\\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_t *)ptr));
    \n+
    239 return (uint16_t) res;
    \n+
    240}
    \n+
    241static inline uint32_t
    \n+
    242TDS_GET_UA4LE(void *ptr)
    \n+
    243{
    \n+
    244 unsigned long res;
    \n+
    245 __asm__ ("lwbrx %0,0,%1\\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_t *)ptr));
    \n+
    246 return (uint32_t) res;
    \n+
    247}
    \n+
    248
    \n+
    249# undef TDS_PUT_UA2LE
    \n+
    250# undef TDS_PUT_UA4LE
    \n+
    251static inline void
    \n+
    252TDS_PUT_UA2LE(void *ptr, unsigned data)
    \n+
    253{
    \n+
    254 __asm__ ("sthbrx %1,0,%2\\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" (ptr));
    \n+
    255}
    \n+
    256static inline void
    \n+
    257TDS_PUT_UA4LE(void *ptr, unsigned data)
    \n+
    258{
    \n+
    259 __asm__ ("stwbrx %1,0,%2\\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" (ptr));
    \n+
    260}
    \n+
    261#endif
    \n+
    262
    \n+
    263#endif
    \n+
    Definition bytes.h:87
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,17 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-utils.h\n+bytes.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2016 Frediano Ziglio\n+ 2 * Copyright (C) 2005-2008 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,49 +27,274 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _freetds_utils_h_\n- 21#define _freetds_utils_h_\n+ 20#ifndef _tdsbytes_h_\n+ 21#define _tdsbytes_h_\n 22\n- 23#if HAVE_STDDEF_H\n- 24#include \n- 25#endif /* HAVE_STDDEF_H */\n- 26\n- 27#include \n- 28#include \n- 29\n- 30#include \n- 31\n- 32#ifdef __cplusplus\n- 33extern \"C\" {\n- 34#endif\n- 35\n- 36void tds_sleep_s(unsigned sec);\n- 37void tds_sleep_ms(unsigned ms);\n- 38\n- 39char *tds_getpassarg(char *arg);\n- 40\n- 41char *tds_timestamp_str(char *str, int maxlen);\n- 42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);\n- 43int tds_getservice(const char *name);\n- 44char *tds_get_homedir(void);\n- 45\n- 46int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);\n- 47\n- 48#ifdef __cplusplus\n- 49}\n- 50#endif\n- 51\n- 52#include \n- 53\n- 54#endif\n-tds_socket_set_nosigpipe\n-int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)\n-Set socket to not throw SIGPIPE.\n-Definition net.c:72\n+ 23/*\n+ 24 * read a word of n bytes aligned, architecture dependent endian\n+ 25 * TDS_GET_An\n+ 26 * read a word of n bytes aligned, little endian\n+ 27 * TDS_GET_AnLE\n+ 28 * read a word of n bytes aligned, big endian\n+ 29 * TDS_GET_AnBE\n+ 30 * read a word of n bytes unaligned, architecture dependent endian\n+ 31 * TDS_GET_UAn\n+ 32 * read a word of n bytes unaligned, little endian\n+ 33 * TDS_GET_UAnLE\n+ 34 * read a word of n bytes unaligned, big endian\n+ 35 * TDS_GET_UAnBE\n+ 36 */\n+ 37\n+ 38/* one byte, easy... */\n+ 39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])\n+ 40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)\n+ 41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)\n+ 42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)\n+ 43\n+ 44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)\n+ 45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)\n+ 46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)\n+ 47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)\n+ 48\n+ 49/* two bytes */\n+ 50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)\n+(ptr))[0])\n+ 51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)\n+(ptr))[1])\n+ 52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)\n+ 53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)\n+ 54\n+ 55#define TDS_PUT_UA2LE(ptr,val) do {\\\n+ 56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] =\n+(uint8_t)(val); } while(0)\n+ 57#define TDS_PUT_UA2BE(ptr,val) do {\\\n+ 58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] =\n+(uint8_t)(val); } while(0)\n+ 59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)\n+ 60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)\n+ 61\n+ 62/* four bytes */\n+ 63#define TDS_GET_UA4LE(ptr) \\\n+ 64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\\\n+ 65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])\n+ 66#define TDS_GET_UA4BE(ptr) \\\n+ 67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\\\n+ 68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])\n+ 69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)\n+ 70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)\n+ 71\n+ 72#define TDS_PUT_UA4LE(ptr,val) do {\\\n+ 73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] =\n+(uint8_t)((val)>>16);\\\n+ 74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] =\n+(uint8_t)(val); } while(0)\n+ 75#define TDS_PUT_UA4BE(ptr,val) do {\\\n+ 76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] =\n+(uint8_t)((val)>>16);\\\n+ 77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] =\n+(uint8_t)(val); } while(0)\n+ 78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)\n+ 79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)\n+ 80\n+ 81#if defined(__GNUC__)\n+ 82# define TDS_MAY_ALIAS __attribute__((__may_alias__))\n+ 83#else\n+ 84# define TDS_MAY_ALIAS\n+ 85#endif\n+ 86\n+87typedef union {\n+ 88 uint16_t usi;\n+ 89 uint8_t uc[2];\n+ 90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;\n+ 91\n+ 92typedef union {\n+ 93 uint32_t ui;\n+ 94 uint8_t uc[4];\n+ 95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;\n+ 96\n+ 97/* architecture dependent */\n+ 98/* map to generic macros or redefine for aligned and same endianess */\n+ 99#ifdef WORDS_BIGENDIAN\n+ 100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)\n+ 101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)\n+ 102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)\n+ 103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)\n+ 104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)\n+ 105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)\n+ 106# undef TDS_GET_A2BE\n+ 107# undef TDS_GET_A4BE\n+ 108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)\n+ 109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)\n+ 110\n+ 111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)\n+ 112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)\n+ 113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)\n+ 114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)\n+ 115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)\n+ 116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)\n+ 117# undef TDS_PUT_A2BE\n+ 118# undef TDS_PUT_A4BE\n+ 119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))\n+ 120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))\n+ 121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)\n+ 122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)\n+ 123# define TDS_HOST2BE(val) (val)\n+ 124# define TDS_HOST4BE(val) (val)\n+ 125#else\n+ 126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)\n+ 127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)\n+ 128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)\n+ 129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)\n+ 130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)\n+ 131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)\n+ 132# undef TDS_GET_A2LE\n+ 133# undef TDS_GET_A4LE\n+ 134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)\n+ 135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)\n+ 136\n+ 137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)\n+ 138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)\n+ 139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)\n+ 140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)\n+ 141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)\n+ 142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)\n+ 143# undef TDS_PUT_A2LE\n+ 144# undef TDS_PUT_A4LE\n+ 145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))\n+ 146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))\n+ 147# define TDS_HOST2LE(val) (val)\n+ 148# define TDS_HOST4LE(val) (val)\n+ 149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)\n+ 150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)\n+ 151#endif\n+ 152\n+ 153/* these platform support unaligned fetch/store */\n+ 154/* map unaligned macro to aligned ones */\n+ 155#if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\\\n+ 156 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) ||\n+defined(__ppc64__) ||\\\n+ 157 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\\\n+ 158 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined\n+(_M_X64))) ||\\\n+ 159 defined(__ARM_FEATURE_UNALIGNED) ||\\\n+ 160 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\\\n+ 161 (defined(_M_ARM) && (_M_ARM >= 7))\n+ 162# ifdef WORDS_BIGENDIAN\n+ 163# undef TDS_GET_UA2BE\n+ 164# undef TDS_GET_UA4BE\n+ 165# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)\n+ 166# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)\n+ 167\n+ 168# undef TDS_PUT_UA2BE\n+ 169# undef TDS_PUT_UA4BE\n+ 170# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)\n+ 171# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)\n+ 172# else\n+ 173# undef TDS_GET_UA2LE\n+ 174# undef TDS_GET_UA4LE\n+ 175# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)\n+ 176# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)\n+ 177\n+ 178# undef TDS_PUT_UA2LE\n+ 179# undef TDS_PUT_UA4LE\n+ 180# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)\n+ 181# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)\n+ 182# endif\n+ 183#endif\n+ 184\n+ 185#undef TDS_BSWAP16\n+ 186#undef TDS_BSWAP32\n+ 187/* __builtin_bswap16 was introduced in GCC 4.8 */\n+ 188#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__\n+>= 8)) && defined(__OPTIMIZE__)\n+ 189# define TDS_BSWAP16(val) __builtin_bswap16(val)\n+ 190# define TDS_BSWAP32(val) __builtin_bswap32(val)\n+ 191/* __builtin_bswap32 was introduced in GCC 4.3 */\n+ 192#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 &&\n+__GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)\n+ 193# define TDS_BSWAP32(val) __builtin_bswap32(val)\n+ 194#elif defined(_MSC_VER)\n+ 195# define TDS_BSWAP16(val) _byteswap_ushort(val)\n+ 196# define TDS_BSWAP32(val) _byteswap_ulong(val)\n+ 197#endif\n+ 198\n+ 199#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)\n+ 200# undef TDS_GET_UA2BE\n+ 201# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))\n+ 202\n+ 203# undef TDS_PUT_UA2BE\n+ 204# define TDS_PUT_UA2BE(ptr,val) do {\\\n+ 205 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while\n+(0)\n+ 206#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)\n+ 207# undef TDS_GET_UA2LE\n+ 208# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))\n+ 209\n+ 210# undef TDS_PUT_UA2LE\n+ 211# define TDS_PUT_UA2LE(ptr,val) do {\\\n+ 212 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while\n+(0)\n+ 213#endif\n+ 214\n+ 215#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)\n+ 216# undef TDS_GET_UA4BE\n+ 217# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))\n+ 218\n+ 219# undef TDS_PUT_UA4BE\n+ 220# define TDS_PUT_UA4BE(ptr,val) do {\\\n+ 221 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)\n+ 222#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)\n+ 223# undef TDS_GET_UA4LE\n+ 224# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))\n+ 225\n+ 226# undef TDS_PUT_UA4LE\n+ 227# define TDS_PUT_UA4LE(ptr,val) do {\\\n+ 228 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)\n+ 229#endif\n+ 230\n+ 231#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)\n+ 232# undef TDS_GET_UA2LE\n+ 233# undef TDS_GET_UA4LE\n+ 234static inline uint16_t\n+ 235TDS_GET_UA2LE(void *ptr)\n+ 236{\n+ 237 unsigned long res;\n+ 238 __asm__ (\"lhbrx %0,0,%1\\n\" : \"=r\" (res) : \"r\" (ptr), \"m\"(*(uint16_t\n+*)ptr));\n+ 239 return (uint16_t) res;\n+ 240}\n+ 241static inline uint32_t\n+ 242TDS_GET_UA4LE(void *ptr)\n+ 243{\n+ 244 unsigned long res;\n+ 245 __asm__ (\"lwbrx %0,0,%1\\n\" : \"=r\" (res) : \"r\" (ptr), \"m\"(*(uint32_t\n+*)ptr));\n+ 246 return (uint32_t) res;\n+ 247}\n+ 248\n+ 249# undef TDS_PUT_UA2LE\n+ 250# undef TDS_PUT_UA4LE\n+ 251static inline void\n+ 252TDS_PUT_UA2LE(void *ptr, unsigned data)\n+ 253{\n+ 254 __asm__ (\"sthbrx %1,0,%2\\n\" : \"=m\" (*(uint16_t *)ptr) : \"r\" (data), \"r\"\n+(ptr));\n+ 255}\n+ 256static inline void\n+ 257TDS_PUT_UA4LE(void *ptr, unsigned data)\n+ 258{\n+ 259 __asm__ (\"stwbrx %1,0,%2\\n\" : \"=m\" (*(uint32_t *)ptr) : \"r\" (data), \"r\"\n+(ptr));\n+ 260}\n+ 261#endif\n+ 262\n+ 263#endif\n+TDS_MAY_ALIAS\n+Definition bytes.h:87\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00359_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00359_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/encodings.h Source File\n+FreeTDS API: include/freetds/popvis.h Source File\n \n \n \n \n \n \n \n@@ -74,583 +74,20 @@\n \n
    \n \n
    \n \n
    \n-
    encodings.h
    \n+
    popvis.h
    \n
    \n
    \n-
    1/*
    \n-
    2 * This file produced from ./encodings.pl on Sat Jan 21 09:01:33 2023
    \n-
    3 */
    \n-
    4#ifdef TDS_ICONV_ENCODING_TABLES
    \n-
    5
    \n-
    6static const TDS_ENCODING canonic_charsets[] = {
    \n-
    7 { "ISO-8859-1", 1, 1, 0}, /* 0 */
    \n-
    8 { "UTF-8", 1, 4, 1}, /* 1 */
    \n-
    9 { "UCS-2LE", 2, 2, 2}, /* 2 */
    \n-
    10 { "UCS-2BE", 2, 2, 3}, /* 3 */
    \n-
    11 { "ARMSCII-8", 1, 1, 4}, /* 4 */
    \n-
    12 { "BIG-5", 1, 2, 5}, /* 5 */
    \n-
    13 { "BIG5-HKSCS", 1, 2, 6}, /* 6 */
    \n-
    14 { "C99", 1, 1, 7}, /* 7 */
    \n-
    15 { "CHINESE", 1, 1, 8}, /* 8 */
    \n-
    16 { "CN", 1, 1, 9}, /* 9 */
    \n-
    17 { "CN-GB", 1, 2, 10}, /* 10 */
    \n-
    18 { "CN-GB-ISOIR165", 1, 1, 11}, /* 11 */
    \n-
    19 { "CP1133", 1, 1, 12}, /* 12 */
    \n-
    20 { "CP1250", 1, 1, 13}, /* 13 */
    \n-
    21 { "CP1251", 1, 1, 14}, /* 14 */
    \n-
    22 { "CP1252", 1, 1, 15}, /* 15 */
    \n-
    23 { "CP1253", 1, 1, 16}, /* 16 */
    \n-
    24 { "CP1254", 1, 1, 17}, /* 17 */
    \n-
    25 { "CP1255", 1, 1, 18}, /* 18 */
    \n-
    26 { "CP1256", 1, 1, 19}, /* 19 */
    \n-
    27 { "CP1257", 1, 1, 20}, /* 20 */
    \n-
    28 { "CP1258", 1, 1, 21}, /* 21 */
    \n-
    29 { "CP1361", 1, 2, 22}, /* 22 */
    \n-
    30 { "CP437", 1, 1, 23}, /* 23 */
    \n-
    31 { "CP850", 1, 1, 24}, /* 24 */
    \n-
    32 { "CP862", 1, 1, 25}, /* 25 */
    \n-
    33 { "CP866", 1, 1, 26}, /* 26 */
    \n-
    34 { "CP874", 1, 1, 27}, /* 27 */
    \n-
    35 { "CP932", 1, 2, 28}, /* 28 */
    \n-
    36 { "CP936", 1, 2, 29}, /* 29 */
    \n-
    37 { "CP949", 1, 2, 30}, /* 30 */
    \n-
    38 { "CP950", 1, 2, 31}, /* 31 */
    \n-
    39 { "EUC-JP", 1, 3, 32}, /* 32 */
    \n-
    40 { "EUC-KR", 1, 2, 33}, /* 33 */
    \n-
    41 { "EUC-TW", 1, 4, 34}, /* 34 */
    \n-
    42 { "GB18030", 1, 4, 35}, /* 35 */
    \n-
    43 { "GEORGIAN-ACADEMY", 1, 1, 36}, /* 36 */
    \n-
    44 { "GEORGIAN-PS", 1, 1, 37}, /* 37 */
    \n-
    45 { "HZ", 1, 1, 38}, /* 38 */
    \n-
    46 { "ISO-2022-CN", 1, 4, 39}, /* 39 */
    \n-
    47 { "ISO-2022-CN-EXT", 1, 4, 40}, /* 40 */
    \n-
    48 { "ISO-2022-JP", 1, 1, 41}, /* 41 */
    \n-
    49 { "ISO-2022-JP-1", 1, 1, 42}, /* 42 */
    \n-
    50 { "ISO-2022-JP-2", 1, 1, 43}, /* 43 */
    \n-
    51 { "ISO-2022-KR", 1, 2, 44}, /* 44 */
    \n-
    52 { "ISO-8859-10", 1, 1, 45}, /* 45 */
    \n-
    53 { "ISO-8859-13", 1, 1, 46}, /* 46 */
    \n-
    54 { "ISO-8859-14", 1, 1, 47}, /* 47 */
    \n-
    55 { "ISO-8859-15", 1, 1, 48}, /* 48 */
    \n-
    56 { "ISO-8859-16", 1, 1, 49}, /* 49 */
    \n-
    57 { "ISO-8859-2", 1, 1, 50}, /* 50 */
    \n-
    58 { "ISO-8859-3", 1, 1, 51}, /* 51 */
    \n-
    59 { "ISO-8859-4", 1, 1, 52}, /* 52 */
    \n-
    60 { "ISO-8859-5", 1, 1, 53}, /* 53 */
    \n-
    61 { "ISO-8859-6", 1, 1, 54}, /* 54 */
    \n-
    62 { "ISO-8859-7", 1, 1, 55}, /* 55 */
    \n-
    63 { "ISO-8859-8", 1, 1, 56}, /* 56 */
    \n-
    64 { "ISO-8859-9", 1, 1, 57}, /* 57 */
    \n-
    65 { "ISO-IR-14", 1, 1, 58}, /* 58 */
    \n-
    66 { "ISO-IR-149", 1, 1, 59}, /* 59 */
    \n-
    67 { "ISO-IR-159", 1, 1, 60}, /* 60 */
    \n-
    68 { "ISO-IR-166", 1, 1, 61}, /* 61 */
    \n-
    69 { "ISO-IR-87", 1, 1, 62}, /* 62 */
    \n-
    70 { "JAVA", 1, 1, 63}, /* 63 */
    \n-
    71 { "JISX0201-1976", 1, 1, 64}, /* 64 */
    \n-
    72 { "KOI8-R", 1, 1, 65}, /* 65 */
    \n-
    73 { "KOI8-RU", 1, 1, 66}, /* 66 */
    \n-
    74 { "KOI8-T", 1, 1, 67}, /* 67 */
    \n-
    75 { "KOI8-U", 1, 1, 68}, /* 68 */
    \n-
    76 { "MAC", 1, 1, 69}, /* 69 */
    \n-
    77 { "MACARABIC", 1, 1, 70}, /* 70 */
    \n-
    78 { "MACCENTRALEUROPE", 1, 1, 71}, /* 71 */
    \n-
    79 { "MACCROATIAN", 1, 1, 72}, /* 72 */
    \n-
    80 { "MACCYRILLIC", 1, 1, 73}, /* 73 */
    \n-
    81 { "MACGREEK", 1, 1, 74}, /* 74 */
    \n-
    82 { "MACHEBREW", 1, 1, 75}, /* 75 */
    \n-
    83 { "MACICELAND", 1, 1, 76}, /* 76 */
    \n-
    84 { "MACROMANIA", 1, 1, 77}, /* 77 */
    \n-
    85 { "MACTHAI", 1, 1, 78}, /* 78 */
    \n-
    86 { "MACTURKISH", 1, 1, 79}, /* 79 */
    \n-
    87 { "MACUKRAINE", 1, 1, 80}, /* 80 */
    \n-
    88 { "MULELAO-1", 1, 1, 81}, /* 81 */
    \n-
    89 { "NEXTSTEP", 1, 1, 82}, /* 82 */
    \n-
    90 { "ROMAN8", 1, 1, 83}, /* 83 */
    \n-
    91 { "SJIS", 1, 2, 84}, /* 84 */
    \n-
    92 { "TCVN", 1, 1, 85}, /* 85 */
    \n-
    93 { "UCS-4BE", 4, 4, 86}, /* 86 */
    \n-
    94 { "UCS-4LE", 4, 4, 87}, /* 87 */
    \n-
    95 { "US-ASCII", 1, 1, 88}, /* 88 */
    \n-
    96 { "UTF-16BE", 2, 4, 89}, /* 89 */
    \n-
    97 { "UTF-16LE", 2, 4, 90}, /* 90 */
    \n-
    98 { "UTF-32BE", 4, 4, 91}, /* 91 */
    \n-
    99 { "UTF-32LE", 4, 4, 92}, /* 92 */
    \n-
    100 { "UTF-7", 1, 4, 93}, /* 93 */
    \n-
    101 { "VISCII", 1, 1, 94}, /* 94 */
    \n-
    102};
    \n-
    103
    \n-
    104static const CHARACTER_SET_ALIAS iconv_aliases[] = {
    \n-
    105 { "646", 88 },
    \n-
    106 { "850", 24 },
    \n-
    107 { "862", 25 },
    \n-
    108 { "866", 26 },
    \n-
    109 { "ANSI_X3.4-1968", 88 },
    \n-
    110 { "ANSI_X3.4-1986", 88 },
    \n-
    111 { "ARABIC", 54 },
    \n-
    112 { "ARMSCII-8", 4 },
    \n-
    113 { "ASCII", 88 },
    \n-
    114 { "ASMO-708", 54 },
    \n-
    115 { "BIG-5", 5 },
    \n-
    116 { "BIG-FIVE", 5 },
    \n-
    117 { "BIG5", 5 },
    \n-
    118 { "BIG5-HKSCS", 6 },
    \n-
    119 { "BIG5HKSCS", 6 },
    \n-
    120 { "BIGFIVE", 5 },
    \n-
    121 { "C99", 7 },
    \n-
    122 { "CHINESE", 8 },
    \n-
    123 { "CN", 9 },
    \n-
    124 { "CN-BIG5", 5 },
    \n-
    125 { "CN-GB", 10 },
    \n-
    126 { "CN-GB-ISOIR165", 11 },
    \n-
    127 { "CP1133", 12 },
    \n-
    128 { "CP1250", 13 },
    \n-
    129 { "CP1251", 14 },
    \n-
    130 { "CP1252", 15 },
    \n-
    131 { "CP1253", 16 },
    \n-
    132 { "CP1254", 17 },
    \n-
    133 { "CP1255", 18 },
    \n-
    134 { "CP1256", 19 },
    \n-
    135 { "CP1257", 20 },
    \n-
    136 { "CP1258", 21 },
    \n-
    137 { "CP1361", 22 },
    \n-
    138 { "CP367", 88 },
    \n-
    139 { "CP437", 23 },
    \n-
    140 { "CP819", 0 },
    \n-
    141 { "CP850", 24 },
    \n-
    142 { "CP862", 25 },
    \n-
    143 { "CP866", 26 },
    \n-
    144 { "CP874", 27 },
    \n-
    145 { "CP932", 28 },
    \n-
    146 { "CP936", 29 },
    \n-
    147 { "CP949", 30 },
    \n-
    148 { "CP950", 31 },
    \n-
    149 { "CSASCII", 88 },
    \n-
    150 { "CSBIG5", 5 },
    \n-
    151 { "CSEUCKR", 33 },
    \n-
    152 { "CSEUCPKDFMTJAPANESE", 32 },
    \n-
    153 { "CSEUCTW", 34 },
    \n-
    154 { "CSGB2312", 10 },
    \n-
    155 { "CSHALFWIDTHKATAKANA", 64 },
    \n-
    156 { "CSHPROMAN8", 83 },
    \n-
    157 { "CSIBM866", 26 },
    \n-
    158 { "CSISO14JISC6220RO", 58 },
    \n-
    159 { "CSISO159JISX02121990", 60 },
    \n-
    160 { "CSISO2022CN", 39 },
    \n-
    161 { "CSISO2022JP", 41 },
    \n-
    162 { "CSISO2022JP2", 43 },
    \n-
    163 { "CSISO2022KR", 44 },
    \n-
    164 { "CSISO57GB1988", 9 },
    \n-
    165 { "CSISO58GB231280", 8 },
    \n-
    166 { "CSISO87JISX0208", 62 },
    \n-
    167 { "CSISOLATIN1", 0 },
    \n-
    168 { "CSISOLATIN2", 50 },
    \n-
    169 { "CSISOLATIN3", 51 },
    \n-
    170 { "CSISOLATIN4", 52 },
    \n-
    171 { "CSISOLATIN5", 57 },
    \n-
    172 { "CSISOLATIN6", 45 },
    \n-
    173 { "CSISOLATINARABIC", 54 },
    \n-
    174 { "CSISOLATINCYRILLIC", 53 },
    \n-
    175 { "CSISOLATINGREEK", 55 },
    \n-
    176 { "CSISOLATINHEBREW", 56 },
    \n-
    177 { "CSKOI8R", 65 },
    \n-
    178 { "CSKSC56011987", 59 },
    \n-
    179 { "CSMACINTOSH", 69 },
    \n-
    180 { "CSPC850MULTILINGUAL", 24 },
    \n-
    181 { "CSPC862LATINHEBREW", 25 },
    \n-
    182 { "CSSHIFTJIS", 84 },
    \n-
    183 { "CSUNICODE11", 3 },
    \n-
    184 { "CSUNICODE11UTF7", 93 },
    \n-
    185 { "CSVISCII", 94 },
    \n-
    186 { "CYRILLIC", 53 },
    \n-
    187 { "ECMA-114", 54 },
    \n-
    188 { "ECMA-118", 55 },
    \n-
    189 { "ELOT_928", 55 },
    \n-
    190 { "EUC-CN", 10 },
    \n-
    191 { "EUC-JP", 32 },
    \n-
    192 { "EUC-KR", 33 },
    \n-
    193 { "EUC-TW", 34 },
    \n-
    194 { "EUCCN", 10 },
    \n-
    195 { "EUCJP", 32 },
    \n-
    196 { "EUCKR", 33 },
    \n-
    197 { "EUCTW", 34 },
    \n-
    198 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 32 },
    \n-
    199 { "GB18030", 35 },
    \n-
    200 { "GB2312", 10 },
    \n-
    201 { "GBK", 29 },
    \n-
    202 { "GB_1988-80", 9 },
    \n-
    203 { "GB_2312-80", 8 },
    \n-
    204 { "GEORGIAN-ACADEMY", 36 },
    \n-
    205 { "GEORGIAN-PS", 37 },
    \n-
    206 { "GREEK", 55 },
    \n-
    207 { "GREEK8", 55 },
    \n-
    208 { "HEBREW", 56 },
    \n-
    209 { "HP-ROMAN8", 83 },
    \n-
    210 { "HZ", 38 },
    \n-
    211 { "HZ-GB-2312", 38 },
    \n-
    212 { "IBM-CP1133", 12 },
    \n-
    213 { "IBM367", 88 },
    \n-
    214 { "IBM437", 23 },
    \n-
    215 { "IBM819", 0 },
    \n-
    216 { "IBM850", 24 },
    \n-
    217 { "IBM862", 25 },
    \n-
    218 { "IBM866", 26 },
    \n-
    219 { "ISO-2022-CN", 39 },
    \n-
    220 { "ISO-2022-CN-EXT", 40 },
    \n-
    221 { "ISO-2022-JP", 41 },
    \n-
    222 { "ISO-2022-JP-1", 42 },
    \n-
    223 { "ISO-2022-JP-2", 43 },
    \n-
    224 { "ISO-2022-KR", 44 },
    \n-
    225 { "ISO-8859-1", 0 },
    \n-
    226 { "ISO-8859-10", 45 },
    \n-
    227 { "ISO-8859-13", 46 },
    \n-
    228 { "ISO-8859-14", 47 },
    \n-
    229 { "ISO-8859-15", 48 },
    \n-
    230 { "ISO-8859-16", 49 },
    \n-
    231 { "ISO-8859-2", 50 },
    \n-
    232 { "ISO-8859-3", 51 },
    \n-
    233 { "ISO-8859-4", 52 },
    \n-
    234 { "ISO-8859-5", 53 },
    \n-
    235 { "ISO-8859-6", 54 },
    \n-
    236 { "ISO-8859-7", 55 },
    \n-
    237 { "ISO-8859-8", 56 },
    \n-
    238 { "ISO-8859-9", 57 },
    \n-
    239 { "ISO-CELTIC", 47 },
    \n-
    240 { "ISO-IR-100", 0 },
    \n-
    241 { "ISO-IR-101", 50 },
    \n-
    242 { "ISO-IR-109", 51 },
    \n-
    243 { "ISO-IR-110", 52 },
    \n-
    244 { "ISO-IR-126", 55 },
    \n-
    245 { "ISO-IR-127", 54 },
    \n-
    246 { "ISO-IR-138", 56 },
    \n-
    247 { "ISO-IR-14", 58 },
    \n-
    248 { "ISO-IR-144", 53 },
    \n-
    249 { "ISO-IR-148", 57 },
    \n-
    250 { "ISO-IR-149", 59 },
    \n-
    251 { "ISO-IR-157", 45 },
    \n-
    252 { "ISO-IR-159", 60 },
    \n-
    253 { "ISO-IR-165", 11 },
    \n-
    254 { "ISO-IR-166", 61 },
    \n-
    255 { "ISO-IR-179", 46 },
    \n-
    256 { "ISO-IR-199", 47 },
    \n-
    257 { "ISO-IR-203", 48 },
    \n-
    258 { "ISO-IR-226", 49 },
    \n-
    259 { "ISO-IR-57", 9 },
    \n-
    260 { "ISO-IR-58", 8 },
    \n-
    261 { "ISO-IR-6", 88 },
    \n-
    262 { "ISO-IR-87", 62 },
    \n-
    263 { "ISO646-CN", 9 },
    \n-
    264 { "ISO646-JP", 58 },
    \n-
    265 { "ISO646-US", 88 },
    \n-
    266 { "ISO8859-1", 0 },
    \n-
    267 { "ISO8859-10", 45 },
    \n-
    268 { "ISO8859-15", 48 },
    \n-
    269 { "ISO8859-2", 50 },
    \n-
    270 { "ISO8859-4", 52 },
    \n-
    271 { "ISO8859-5", 53 },
    \n-
    272 { "ISO8859-6", 54 },
    \n-
    273 { "ISO8859-7", 55 },
    \n-
    274 { "ISO8859-8", 56 },
    \n-
    275 { "ISO8859-9", 57 },
    \n-
    276 { "ISO_646.IRV:1991", 88 },
    \n-
    277 { "ISO_8859-1", 0 },
    \n-
    278 { "ISO_8859-10", 45 },
    \n-
    279 { "ISO_8859-10:1992", 45 },
    \n-
    280 { "ISO_8859-13", 46 },
    \n-
    281 { "ISO_8859-14", 47 },
    \n-
    282 { "ISO_8859-14:1998", 47 },
    \n-
    283 { "ISO_8859-15", 48 },
    \n-
    284 { "ISO_8859-15:1998", 48 },
    \n-
    285 { "ISO_8859-16", 49 },
    \n-
    286 { "ISO_8859-16:2000", 49 },
    \n-
    287 { "ISO_8859-1:1987", 0 },
    \n-
    288 { "ISO_8859-2", 50 },
    \n-
    289 { "ISO_8859-2:1987", 50 },
    \n-
    290 { "ISO_8859-3", 51 },
    \n-
    291 { "ISO_8859-3:1988", 51 },
    \n-
    292 { "ISO_8859-4", 52 },
    \n-
    293 { "ISO_8859-4:1988", 52 },
    \n-
    294 { "ISO_8859-5", 53 },
    \n-
    295 { "ISO_8859-5:1988", 53 },
    \n-
    296 { "ISO_8859-6", 54 },
    \n-
    297 { "ISO_8859-6:1987", 54 },
    \n-
    298 { "ISO_8859-7", 55 },
    \n-
    299 { "ISO_8859-7:1987", 55 },
    \n-
    300 { "ISO_8859-8", 56 },
    \n-
    301 { "ISO_8859-8:1988", 56 },
    \n-
    302 { "ISO_8859-9", 57 },
    \n-
    303 { "ISO_8859-9:1989", 57 },
    \n-
    304 { "JAVA", 63 },
    \n-
    305 { "JIS0208", 62 },
    \n-
    306 { "JISX0201-1976", 64 },
    \n-
    307 { "JIS_C6220-1969-RO", 58 },
    \n-
    308 { "JIS_C6226-1983", 62 },
    \n-
    309 { "JIS_X0201", 64 },
    \n-
    310 { "JIS_X0208", 62 },
    \n-
    311 { "JIS_X0208-1983", 62 },
    \n-
    312 { "JIS_X0208-1990", 62 },
    \n-
    313 { "JIS_X0212", 60 },
    \n-
    314 { "JIS_X0212-1990", 60 },
    \n-
    315 { "JIS_X0212.1990-0", 60 },
    \n-
    316 { "JOHAB", 22 },
    \n-
    317 { "JP", 58 },
    \n-
    318 { "KOI8-R", 65 },
    \n-
    319 { "KOI8-RU", 66 },
    \n-
    320 { "KOI8-T", 67 },
    \n-
    321 { "KOI8-U", 68 },
    \n-
    322 { "KOREAN", 59 },
    \n-
    323 { "KSC_5601", 59 },
    \n-
    324 { "KS_C_5601-1987", 59 },
    \n-
    325 { "KS_C_5601-1989", 59 },
    \n-
    326 { "L1", 0 },
    \n-
    327 { "L2", 50 },
    \n-
    328 { "L3", 51 },
    \n-
    329 { "L4", 52 },
    \n-
    330 { "L5", 57 },
    \n-
    331 { "L6", 45 },
    \n-
    332 { "L7", 46 },
    \n-
    333 { "L8", 47 },
    \n-
    334 { "LATIN1", 0 },
    \n-
    335 { "LATIN2", 50 },
    \n-
    336 { "LATIN3", 51 },
    \n-
    337 { "LATIN4", 52 },
    \n-
    338 { "LATIN5", 57 },
    \n-
    339 { "LATIN6", 45 },
    \n-
    340 { "LATIN7", 46 },
    \n-
    341 { "LATIN8", 47 },
    \n-
    342 { "MAC", 69 },
    \n-
    343 { "MACARABIC", 70 },
    \n-
    344 { "MACCENTRALEUROPE", 71 },
    \n-
    345 { "MACCROATIAN", 72 },
    \n-
    346 { "MACCYRILLIC", 73 },
    \n-
    347 { "MACGREEK", 74 },
    \n-
    348 { "MACHEBREW", 75 },
    \n-
    349 { "MACICELAND", 76 },
    \n-
    350 { "MACINTOSH", 69 },
    \n-
    351 { "MACROMAN", 69 },
    \n-
    352 { "MACROMANIA", 77 },
    \n-
    353 { "MACTHAI", 78 },
    \n-
    354 { "MACTURKISH", 79 },
    \n-
    355 { "MACUKRAINE", 80 },
    \n-
    356 { "MS-ANSI", 15 },
    \n-
    357 { "MS-ARAB", 19 },
    \n-
    358 { "MS-CYRL", 14 },
    \n-
    359 { "MS-EE", 13 },
    \n-
    360 { "MS-GREEK", 16 },
    \n-
    361 { "MS-HEBR", 18 },
    \n-
    362 { "MS-TURK", 17 },
    \n-
    363 { "MS_KANJI", 84 },
    \n-
    364 { "MULELAO-1", 81 },
    \n-
    365 { "NEXTSTEP", 82 },
    \n-
    366 { "R8", 83 },
    \n-
    367 { "ROMAN8", 83 },
    \n-
    368 { "SHIFT-JIS", 84 },
    \n-
    369 { "SHIFT_JIS", 84 },
    \n-
    370 { "SJIS", 84 },
    \n-
    371 { "TCVN", 85 },
    \n-
    372 { "TCVN-5712", 85 },
    \n-
    373 { "TCVN5712-1", 85 },
    \n-
    374 { "TCVN5712-1:1993", 85 },
    \n-
    375 { "TIS-620", 61 },
    \n-
    376 { "TIS620", 61 },
    \n-
    377 { "TIS620-0", 61 },
    \n-
    378 { "TIS620.2529-1", 61 },
    \n-
    379 { "TIS620.2533-0", 61 },
    \n-
    380 { "TIS620.2533-1", 61 },
    \n-
    381 { "UCS-2BE", 3 },
    \n-
    382 { "UCS-2LE", 2 },
    \n-
    383 { "UCS-4BE", 86 },
    \n-
    384 { "UCS-4LE", 87 },
    \n-
    385 { "UHC", 30 },
    \n-
    386 { "UNICODE-1-1", 3 },
    \n-
    387 { "UNICODE-1-1-UTF-7", 93 },
    \n-
    388 { "UNICODEBIG", 3 },
    \n-
    389 { "UNICODELITTLE", 2 },
    \n-
    390 { "US", 88 },
    \n-
    391 { "US-ASCII", 88 },
    \n-
    392 { "UTF-16BE", 89 },
    \n-
    393 { "UTF-16LE", 90 },
    \n-
    394 { "UTF-32BE", 91 },
    \n-
    395 { "UTF-32LE", 92 },
    \n-
    396 { "UTF-7", 93 },
    \n-
    397 { "UTF-8", 1 },
    \n-
    398 { "UTF7", 93 },
    \n-
    399 { "UTF8", 1 },
    \n-
    400 { "VISCII", 94 },
    \n-
    401 { "VISCII1.1-1", 94 },
    \n-
    402 { "WINBALTRIM", 20 },
    \n-
    403 { "WINDOWS-1250", 13 },
    \n-
    404 { "WINDOWS-1251", 14 },
    \n-
    405 { "WINDOWS-1252", 15 },
    \n-
    406 { "WINDOWS-1253", 16 },
    \n-
    407 { "WINDOWS-1254", 17 },
    \n-
    408 { "WINDOWS-1255", 18 },
    \n-
    409 { "WINDOWS-1256", 19 },
    \n-
    410 { "WINDOWS-1257", 20 },
    \n-
    411 { "WINDOWS-1258", 21 },
    \n-
    412 { "WINDOWS-874", 27 },
    \n-
    413 { "X0201", 64 },
    \n-
    414 { "X0208", 62 },
    \n-
    415 { "X0212", 60 },
    \n-
    416 { "big5", 5 },
    \n-
    417 { "cp1250", 13 },
    \n-
    418 { "cp1251", 14 },
    \n-
    419 { "cp1252", 15 },
    \n-
    420 { "cp1253", 16 },
    \n-
    421 { "cp1254", 17 },
    \n-
    422 { "cp1255", 18 },
    \n-
    423 { "cp1256", 19 },
    \n-
    424 { "cp1257", 20 },
    \n-
    425 { "cp1258", 21 },
    \n-
    426 { "cp437", 23 },
    \n-
    427 { "cp850", 24 },
    \n-
    428 { "cp862", 25 },
    \n-
    429 { "cp866", 26 },
    \n-
    430 { "cp874", 27 },
    \n-
    431 { "eucJP", 32 },
    \n-
    432 { "eucKR", 33 },
    \n-
    433 { "eucTW", 34 },
    \n-
    434 { "hp15CN", 8 },
    \n-
    435 { "iso81", 0 },
    \n-
    436 { "iso815", 48 },
    \n-
    437 { "iso82", 50 },
    \n-
    438 { "iso83", 51 },
    \n-
    439 { "iso84", 52 },
    \n-
    440 { "iso85", 53 },
    \n-
    441 { "iso86", 54 },
    \n-
    442 { "iso87", 55 },
    \n-
    443 { "iso88", 56 },
    \n-
    444 { "iso88591", 0 },
    \n-
    445 { "iso885915", 48 },
    \n-
    446 { "iso88592", 50 },
    \n-
    447 { "iso88593", 51 },
    \n-
    448 { "iso88594", 52 },
    \n-
    449 { "iso88595", 53 },
    \n-
    450 { "iso88596", 54 },
    \n-
    451 { "iso88597", 55 },
    \n-
    452 { "iso88598", 56 },
    \n-
    453 { "iso88599", 57 },
    \n-
    454 { "iso89", 57 },
    \n-
    455 { "roma8", 83 },
    \n-
    456 { "roman8", 83 },
    \n-
    457 { "sjis", 84 },
    \n-
    458 { "thai8", 61 },
    \n-
    459 { "tis620", 61 },
    \n-
    460 { "utf8", 1 },
    \n-
    461 {NULL, 0}
    \n-
    462};
    \n-
    463
    \n-
    464#endif
    \n-
    465
    \n-
    466enum {
    \n-
    467 TDS_CHARSET_ISO_8859_1 = 0,
    \n-
    468 TDS_CHARSET_UTF_8 = 1,
    \n-
    469 TDS_CHARSET_UCS_2LE = 2,
    \n-
    470 TDS_CHARSET_UCS_2BE = 3,
    \n-
    471 TDS_CHARSET_ARMSCII_8 = 4,
    \n-
    472 TDS_CHARSET_BIG_5 = 5,
    \n-
    473 TDS_CHARSET_BIG5_HKSCS = 6,
    \n-
    474 TDS_CHARSET_C99 = 7,
    \n-
    475 TDS_CHARSET_CHINESE = 8,
    \n-
    476 TDS_CHARSET_CN = 9,
    \n-
    477 TDS_CHARSET_CN_GB = 10,
    \n-
    478 TDS_CHARSET_CN_GB_ISOIR165 = 11,
    \n-
    479 TDS_CHARSET_CP1133 = 12,
    \n-
    480 TDS_CHARSET_CP1250 = 13,
    \n-
    481 TDS_CHARSET_CP1251 = 14,
    \n-
    482 TDS_CHARSET_CP1252 = 15,
    \n-
    483 TDS_CHARSET_CP1253 = 16,
    \n-
    484 TDS_CHARSET_CP1254 = 17,
    \n-
    485 TDS_CHARSET_CP1255 = 18,
    \n-
    486 TDS_CHARSET_CP1256 = 19,
    \n-
    487 TDS_CHARSET_CP1257 = 20,
    \n-
    488 TDS_CHARSET_CP1258 = 21,
    \n-
    489 TDS_CHARSET_CP1361 = 22,
    \n-
    490 TDS_CHARSET_CP437 = 23,
    \n-
    491 TDS_CHARSET_CP850 = 24,
    \n-
    492 TDS_CHARSET_CP862 = 25,
    \n-
    493 TDS_CHARSET_CP866 = 26,
    \n-
    494 TDS_CHARSET_CP874 = 27,
    \n-
    495 TDS_CHARSET_CP932 = 28,
    \n-
    496 TDS_CHARSET_CP936 = 29,
    \n-
    497 TDS_CHARSET_CP949 = 30,
    \n-
    498 TDS_CHARSET_CP950 = 31,
    \n-
    499 TDS_CHARSET_EUC_JP = 32,
    \n-
    500 TDS_CHARSET_EUC_KR = 33,
    \n-
    501 TDS_CHARSET_EUC_TW = 34,
    \n-
    502 TDS_CHARSET_GB18030 = 35,
    \n-
    503 TDS_CHARSET_GEORGIAN_ACADEMY = 36,
    \n-
    504 TDS_CHARSET_GEORGIAN_PS = 37,
    \n-
    505 TDS_CHARSET_HZ = 38,
    \n-
    506 TDS_CHARSET_ISO_2022_CN = 39,
    \n-
    507 TDS_CHARSET_ISO_2022_CN_EXT = 40,
    \n-
    508 TDS_CHARSET_ISO_2022_JP = 41,
    \n-
    509 TDS_CHARSET_ISO_2022_JP_1 = 42,
    \n-
    510 TDS_CHARSET_ISO_2022_JP_2 = 43,
    \n-
    511 TDS_CHARSET_ISO_2022_KR = 44,
    \n-
    512 TDS_CHARSET_ISO_8859_10 = 45,
    \n-
    513 TDS_CHARSET_ISO_8859_13 = 46,
    \n-
    514 TDS_CHARSET_ISO_8859_14 = 47,
    \n-
    515 TDS_CHARSET_ISO_8859_15 = 48,
    \n-
    516 TDS_CHARSET_ISO_8859_16 = 49,
    \n-
    517 TDS_CHARSET_ISO_8859_2 = 50,
    \n-
    518 TDS_CHARSET_ISO_8859_3 = 51,
    \n-
    519 TDS_CHARSET_ISO_8859_4 = 52,
    \n-
    520 TDS_CHARSET_ISO_8859_5 = 53,
    \n-
    521 TDS_CHARSET_ISO_8859_6 = 54,
    \n-
    522 TDS_CHARSET_ISO_8859_7 = 55,
    \n-
    523 TDS_CHARSET_ISO_8859_8 = 56,
    \n-
    524 TDS_CHARSET_ISO_8859_9 = 57,
    \n-
    525 TDS_CHARSET_ISO_IR_14 = 58,
    \n-
    526 TDS_CHARSET_ISO_IR_149 = 59,
    \n-
    527 TDS_CHARSET_ISO_IR_159 = 60,
    \n-
    528 TDS_CHARSET_ISO_IR_166 = 61,
    \n-
    529 TDS_CHARSET_ISO_IR_87 = 62,
    \n-
    530 TDS_CHARSET_JAVA = 63,
    \n-
    531 TDS_CHARSET_JISX0201_1976 = 64,
    \n-
    532 TDS_CHARSET_KOI8_R = 65,
    \n-
    533 TDS_CHARSET_KOI8_RU = 66,
    \n-
    534 TDS_CHARSET_KOI8_T = 67,
    \n-
    535 TDS_CHARSET_KOI8_U = 68,
    \n-
    536 TDS_CHARSET_MAC = 69,
    \n-
    537 TDS_CHARSET_MACARABIC = 70,
    \n-
    538 TDS_CHARSET_MACCENTRALEUROPE = 71,
    \n-
    539 TDS_CHARSET_MACCROATIAN = 72,
    \n-
    540 TDS_CHARSET_MACCYRILLIC = 73,
    \n-
    541 TDS_CHARSET_MACGREEK = 74,
    \n-
    542 TDS_CHARSET_MACHEBREW = 75,
    \n-
    543 TDS_CHARSET_MACICELAND = 76,
    \n-
    544 TDS_CHARSET_MACROMANIA = 77,
    \n-
    545 TDS_CHARSET_MACTHAI = 78,
    \n-
    546 TDS_CHARSET_MACTURKISH = 79,
    \n-
    547 TDS_CHARSET_MACUKRAINE = 80,
    \n-
    548 TDS_CHARSET_MULELAO_1 = 81,
    \n-
    549 TDS_CHARSET_NEXTSTEP = 82,
    \n-
    550 TDS_CHARSET_ROMAN8 = 83,
    \n-
    551 TDS_CHARSET_SJIS = 84,
    \n-
    552 TDS_CHARSET_TCVN = 85,
    \n-
    553 TDS_CHARSET_UCS_4BE = 86,
    \n-
    554 TDS_CHARSET_UCS_4LE = 87,
    \n-
    555 TDS_CHARSET_US_ASCII = 88,
    \n-
    556 TDS_CHARSET_UTF_16BE = 89,
    \n-
    557 TDS_CHARSET_UTF_16LE = 90,
    \n-
    558 TDS_CHARSET_UTF_32BE = 91,
    \n-
    559 TDS_CHARSET_UTF_32LE = 92,
    \n-
    560 TDS_CHARSET_UTF_7 = 93,
    \n-
    561 TDS_CHARSET_VISCII = 94,
    \n-
    562 TDS_NUM_CHARSETS = 95
    \n-
    563};
    \n-
    564
    \n-
    Definition iconv.h:73
    \n-
    Information relevant to libiconv.
    Definition tds.h:618
    \n+
    1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n+
    2#pragma GCC visibility pop
    \n+
    3#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,580 +7,14 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-encodings.h\n- 1/*\n- 2 * This file produced from ./encodings.pl on Sat Jan 21 09:01:33 2023\n- 3 */\n- 4#ifdef TDS_ICONV_ENCODING_TABLES\n- 5\n- 6static const TDS_ENCODING canonic_charsets[] = {\n- 7 { \"ISO-8859-1\", 1, 1, 0}, /* 0 */\n- 8 { \"UTF-8\", 1, 4, 1}, /* 1 */\n- 9 { \"UCS-2LE\", 2, 2, 2}, /* 2 */\n- 10 { \"UCS-2BE\", 2, 2, 3}, /* 3 */\n- 11 { \"ARMSCII-8\", 1, 1, 4}, /* 4 */\n- 12 { \"BIG-5\", 1, 2, 5}, /* 5 */\n- 13 { \"BIG5-HKSCS\", 1, 2, 6}, /* 6 */\n- 14 { \"C99\", 1, 1, 7}, /* 7 */\n- 15 { \"CHINESE\", 1, 1, 8}, /* 8 */\n- 16 { \"CN\", 1, 1, 9}, /* 9 */\n- 17 { \"CN-GB\", 1, 2, 10}, /* 10 */\n- 18 { \"CN-GB-ISOIR165\", 1, 1, 11}, /* 11 */\n- 19 { \"CP1133\", 1, 1, 12}, /* 12 */\n- 20 { \"CP1250\", 1, 1, 13}, /* 13 */\n- 21 { \"CP1251\", 1, 1, 14}, /* 14 */\n- 22 { \"CP1252\", 1, 1, 15}, /* 15 */\n- 23 { \"CP1253\", 1, 1, 16}, /* 16 */\n- 24 { \"CP1254\", 1, 1, 17}, /* 17 */\n- 25 { \"CP1255\", 1, 1, 18}, /* 18 */\n- 26 { \"CP1256\", 1, 1, 19}, /* 19 */\n- 27 { \"CP1257\", 1, 1, 20}, /* 20 */\n- 28 { \"CP1258\", 1, 1, 21}, /* 21 */\n- 29 { \"CP1361\", 1, 2, 22}, /* 22 */\n- 30 { \"CP437\", 1, 1, 23}, /* 23 */\n- 31 { \"CP850\", 1, 1, 24}, /* 24 */\n- 32 { \"CP862\", 1, 1, 25}, /* 25 */\n- 33 { \"CP866\", 1, 1, 26}, /* 26 */\n- 34 { \"CP874\", 1, 1, 27}, /* 27 */\n- 35 { \"CP932\", 1, 2, 28}, /* 28 */\n- 36 { \"CP936\", 1, 2, 29}, /* 29 */\n- 37 { \"CP949\", 1, 2, 30}, /* 30 */\n- 38 { \"CP950\", 1, 2, 31}, /* 31 */\n- 39 { \"EUC-JP\", 1, 3, 32}, /* 32 */\n- 40 { \"EUC-KR\", 1, 2, 33}, /* 33 */\n- 41 { \"EUC-TW\", 1, 4, 34}, /* 34 */\n- 42 { \"GB18030\", 1, 4, 35}, /* 35 */\n- 43 { \"GEORGIAN-ACADEMY\", 1, 1, 36}, /* 36 */\n- 44 { \"GEORGIAN-PS\", 1, 1, 37}, /* 37 */\n- 45 { \"HZ\", 1, 1, 38}, /* 38 */\n- 46 { \"ISO-2022-CN\", 1, 4, 39}, /* 39 */\n- 47 { \"ISO-2022-CN-EXT\", 1, 4, 40}, /* 40 */\n- 48 { \"ISO-2022-JP\", 1, 1, 41}, /* 41 */\n- 49 { \"ISO-2022-JP-1\", 1, 1, 42}, /* 42 */\n- 50 { \"ISO-2022-JP-2\", 1, 1, 43}, /* 43 */\n- 51 { \"ISO-2022-KR\", 1, 2, 44}, /* 44 */\n- 52 { \"ISO-8859-10\", 1, 1, 45}, /* 45 */\n- 53 { \"ISO-8859-13\", 1, 1, 46}, /* 46 */\n- 54 { \"ISO-8859-14\", 1, 1, 47}, /* 47 */\n- 55 { \"ISO-8859-15\", 1, 1, 48}, /* 48 */\n- 56 { \"ISO-8859-16\", 1, 1, 49}, /* 49 */\n- 57 { \"ISO-8859-2\", 1, 1, 50}, /* 50 */\n- 58 { \"ISO-8859-3\", 1, 1, 51}, /* 51 */\n- 59 { \"ISO-8859-4\", 1, 1, 52}, /* 52 */\n- 60 { \"ISO-8859-5\", 1, 1, 53}, /* 53 */\n- 61 { \"ISO-8859-6\", 1, 1, 54}, /* 54 */\n- 62 { \"ISO-8859-7\", 1, 1, 55}, /* 55 */\n- 63 { \"ISO-8859-8\", 1, 1, 56}, /* 56 */\n- 64 { \"ISO-8859-9\", 1, 1, 57}, /* 57 */\n- 65 { \"ISO-IR-14\", 1, 1, 58}, /* 58 */\n- 66 { \"ISO-IR-149\", 1, 1, 59}, /* 59 */\n- 67 { \"ISO-IR-159\", 1, 1, 60}, /* 60 */\n- 68 { \"ISO-IR-166\", 1, 1, 61}, /* 61 */\n- 69 { \"ISO-IR-87\", 1, 1, 62}, /* 62 */\n- 70 { \"JAVA\", 1, 1, 63}, /* 63 */\n- 71 { \"JISX0201-1976\", 1, 1, 64}, /* 64 */\n- 72 { \"KOI8-R\", 1, 1, 65}, /* 65 */\n- 73 { \"KOI8-RU\", 1, 1, 66}, /* 66 */\n- 74 { \"KOI8-T\", 1, 1, 67}, /* 67 */\n- 75 { \"KOI8-U\", 1, 1, 68}, /* 68 */\n- 76 { \"MAC\", 1, 1, 69}, /* 69 */\n- 77 { \"MACARABIC\", 1, 1, 70}, /* 70 */\n- 78 { \"MACCENTRALEUROPE\", 1, 1, 71}, /* 71 */\n- 79 { \"MACCROATIAN\", 1, 1, 72}, /* 72 */\n- 80 { \"MACCYRILLIC\", 1, 1, 73}, /* 73 */\n- 81 { \"MACGREEK\", 1, 1, 74}, /* 74 */\n- 82 { \"MACHEBREW\", 1, 1, 75}, /* 75 */\n- 83 { \"MACICELAND\", 1, 1, 76}, /* 76 */\n- 84 { \"MACROMANIA\", 1, 1, 77}, /* 77 */\n- 85 { \"MACTHAI\", 1, 1, 78}, /* 78 */\n- 86 { \"MACTURKISH\", 1, 1, 79}, /* 79 */\n- 87 { \"MACUKRAINE\", 1, 1, 80}, /* 80 */\n- 88 { \"MULELAO-1\", 1, 1, 81}, /* 81 */\n- 89 { \"NEXTSTEP\", 1, 1, 82}, /* 82 */\n- 90 { \"ROMAN8\", 1, 1, 83}, /* 83 */\n- 91 { \"SJIS\", 1, 2, 84}, /* 84 */\n- 92 { \"TCVN\", 1, 1, 85}, /* 85 */\n- 93 { \"UCS-4BE\", 4, 4, 86}, /* 86 */\n- 94 { \"UCS-4LE\", 4, 4, 87}, /* 87 */\n- 95 { \"US-ASCII\", 1, 1, 88}, /* 88 */\n- 96 { \"UTF-16BE\", 2, 4, 89}, /* 89 */\n- 97 { \"UTF-16LE\", 2, 4, 90}, /* 90 */\n- 98 { \"UTF-32BE\", 4, 4, 91}, /* 91 */\n- 99 { \"UTF-32LE\", 4, 4, 92}, /* 92 */\n- 100 { \"UTF-7\", 1, 4, 93}, /* 93 */\n- 101 { \"VISCII\", 1, 1, 94}, /* 94 */\n- 102};\n- 103\n- 104static const CHARACTER_SET_ALIAS iconv_aliases[] = {\n- 105 { \"646\", 88 },\n- 106 { \"850\", 24 },\n- 107 { \"862\", 25 },\n- 108 { \"866\", 26 },\n- 109 { \"ANSI_X3.4-1968\", 88 },\n- 110 { \"ANSI_X3.4-1986\", 88 },\n- 111 { \"ARABIC\", 54 },\n- 112 { \"ARMSCII-8\", 4 },\n- 113 { \"ASCII\", 88 },\n- 114 { \"ASMO-708\", 54 },\n- 115 { \"BIG-5\", 5 },\n- 116 { \"BIG-FIVE\", 5 },\n- 117 { \"BIG5\", 5 },\n- 118 { \"BIG5-HKSCS\", 6 },\n- 119 { \"BIG5HKSCS\", 6 },\n- 120 { \"BIGFIVE\", 5 },\n- 121 { \"C99\", 7 },\n- 122 { \"CHINESE\", 8 },\n- 123 { \"CN\", 9 },\n- 124 { \"CN-BIG5\", 5 },\n- 125 { \"CN-GB\", 10 },\n- 126 { \"CN-GB-ISOIR165\", 11 },\n- 127 { \"CP1133\", 12 },\n- 128 { \"CP1250\", 13 },\n- 129 { \"CP1251\", 14 },\n- 130 { \"CP1252\", 15 },\n- 131 { \"CP1253\", 16 },\n- 132 { \"CP1254\", 17 },\n- 133 { \"CP1255\", 18 },\n- 134 { \"CP1256\", 19 },\n- 135 { \"CP1257\", 20 },\n- 136 { \"CP1258\", 21 },\n- 137 { \"CP1361\", 22 },\n- 138 { \"CP367\", 88 },\n- 139 { \"CP437\", 23 },\n- 140 { \"CP819\", 0 },\n- 141 { \"CP850\", 24 },\n- 142 { \"CP862\", 25 },\n- 143 { \"CP866\", 26 },\n- 144 { \"CP874\", 27 },\n- 145 { \"CP932\", 28 },\n- 146 { \"CP936\", 29 },\n- 147 { \"CP949\", 30 },\n- 148 { \"CP950\", 31 },\n- 149 { \"CSASCII\", 88 },\n- 150 { \"CSBIG5\", 5 },\n- 151 { \"CSEUCKR\", 33 },\n- 152 { \"CSEUCPKDFMTJAPANESE\", 32 },\n- 153 { \"CSEUCTW\", 34 },\n- 154 { \"CSGB2312\", 10 },\n- 155 { \"CSHALFWIDTHKATAKANA\", 64 },\n- 156 { \"CSHPROMAN8\", 83 },\n- 157 { \"CSIBM866\", 26 },\n- 158 { \"CSISO14JISC6220RO\", 58 },\n- 159 { \"CSISO159JISX02121990\", 60 },\n- 160 { \"CSISO2022CN\", 39 },\n- 161 { \"CSISO2022JP\", 41 },\n- 162 { \"CSISO2022JP2\", 43 },\n- 163 { \"CSISO2022KR\", 44 },\n- 164 { \"CSISO57GB1988\", 9 },\n- 165 { \"CSISO58GB231280\", 8 },\n- 166 { \"CSISO87JISX0208\", 62 },\n- 167 { \"CSISOLATIN1\", 0 },\n- 168 { \"CSISOLATIN2\", 50 },\n- 169 { \"CSISOLATIN3\", 51 },\n- 170 { \"CSISOLATIN4\", 52 },\n- 171 { \"CSISOLATIN5\", 57 },\n- 172 { \"CSISOLATIN6\", 45 },\n- 173 { \"CSISOLATINARABIC\", 54 },\n- 174 { \"CSISOLATINCYRILLIC\", 53 },\n- 175 { \"CSISOLATINGREEK\", 55 },\n- 176 { \"CSISOLATINHEBREW\", 56 },\n- 177 { \"CSKOI8R\", 65 },\n- 178 { \"CSKSC56011987\", 59 },\n- 179 { \"CSMACINTOSH\", 69 },\n- 180 { \"CSPC850MULTILINGUAL\", 24 },\n- 181 { \"CSPC862LATINHEBREW\", 25 },\n- 182 { \"CSSHIFTJIS\", 84 },\n- 183 { \"CSUNICODE11\", 3 },\n- 184 { \"CSUNICODE11UTF7\", 93 },\n- 185 { \"CSVISCII\", 94 },\n- 186 { \"CYRILLIC\", 53 },\n- 187 { \"ECMA-114\", 54 },\n- 188 { \"ECMA-118\", 55 },\n- 189 { \"ELOT_928\", 55 },\n- 190 { \"EUC-CN\", 10 },\n- 191 { \"EUC-JP\", 32 },\n- 192 { \"EUC-KR\", 33 },\n- 193 { \"EUC-TW\", 34 },\n- 194 { \"EUCCN\", 10 },\n- 195 { \"EUCJP\", 32 },\n- 196 { \"EUCKR\", 33 },\n- 197 { \"EUCTW\", 34 },\n- 198 {\"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\", 32 },\n- 199 { \"GB18030\", 35 },\n- 200 { \"GB2312\", 10 },\n- 201 { \"GBK\", 29 },\n- 202 { \"GB_1988-80\", 9 },\n- 203 { \"GB_2312-80\", 8 },\n- 204 { \"GEORGIAN-ACADEMY\", 36 },\n- 205 { \"GEORGIAN-PS\", 37 },\n- 206 { \"GREEK\", 55 },\n- 207 { \"GREEK8\", 55 },\n- 208 { \"HEBREW\", 56 },\n- 209 { \"HP-ROMAN8\", 83 },\n- 210 { \"HZ\", 38 },\n- 211 { \"HZ-GB-2312\", 38 },\n- 212 { \"IBM-CP1133\", 12 },\n- 213 { \"IBM367\", 88 },\n- 214 { \"IBM437\", 23 },\n- 215 { \"IBM819\", 0 },\n- 216 { \"IBM850\", 24 },\n- 217 { \"IBM862\", 25 },\n- 218 { \"IBM866\", 26 },\n- 219 { \"ISO-2022-CN\", 39 },\n- 220 { \"ISO-2022-CN-EXT\", 40 },\n- 221 { \"ISO-2022-JP\", 41 },\n- 222 { \"ISO-2022-JP-1\", 42 },\n- 223 { \"ISO-2022-JP-2\", 43 },\n- 224 { \"ISO-2022-KR\", 44 },\n- 225 { \"ISO-8859-1\", 0 },\n- 226 { \"ISO-8859-10\", 45 },\n- 227 { \"ISO-8859-13\", 46 },\n- 228 { \"ISO-8859-14\", 47 },\n- 229 { \"ISO-8859-15\", 48 },\n- 230 { \"ISO-8859-16\", 49 },\n- 231 { \"ISO-8859-2\", 50 },\n- 232 { \"ISO-8859-3\", 51 },\n- 233 { \"ISO-8859-4\", 52 },\n- 234 { \"ISO-8859-5\", 53 },\n- 235 { \"ISO-8859-6\", 54 },\n- 236 { \"ISO-8859-7\", 55 },\n- 237 { \"ISO-8859-8\", 56 },\n- 238 { \"ISO-8859-9\", 57 },\n- 239 { \"ISO-CELTIC\", 47 },\n- 240 { \"ISO-IR-100\", 0 },\n- 241 { \"ISO-IR-101\", 50 },\n- 242 { \"ISO-IR-109\", 51 },\n- 243 { \"ISO-IR-110\", 52 },\n- 244 { \"ISO-IR-126\", 55 },\n- 245 { \"ISO-IR-127\", 54 },\n- 246 { \"ISO-IR-138\", 56 },\n- 247 { \"ISO-IR-14\", 58 },\n- 248 { \"ISO-IR-144\", 53 },\n- 249 { \"ISO-IR-148\", 57 },\n- 250 { \"ISO-IR-149\", 59 },\n- 251 { \"ISO-IR-157\", 45 },\n- 252 { \"ISO-IR-159\", 60 },\n- 253 { \"ISO-IR-165\", 11 },\n- 254 { \"ISO-IR-166\", 61 },\n- 255 { \"ISO-IR-179\", 46 },\n- 256 { \"ISO-IR-199\", 47 },\n- 257 { \"ISO-IR-203\", 48 },\n- 258 { \"ISO-IR-226\", 49 },\n- 259 { \"ISO-IR-57\", 9 },\n- 260 { \"ISO-IR-58\", 8 },\n- 261 { \"ISO-IR-6\", 88 },\n- 262 { \"ISO-IR-87\", 62 },\n- 263 { \"ISO646-CN\", 9 },\n- 264 { \"ISO646-JP\", 58 },\n- 265 { \"ISO646-US\", 88 },\n- 266 { \"ISO8859-1\", 0 },\n- 267 { \"ISO8859-10\", 45 },\n- 268 { \"ISO8859-15\", 48 },\n- 269 { \"ISO8859-2\", 50 },\n- 270 { \"ISO8859-4\", 52 },\n- 271 { \"ISO8859-5\", 53 },\n- 272 { \"ISO8859-6\", 54 },\n- 273 { \"ISO8859-7\", 55 },\n- 274 { \"ISO8859-8\", 56 },\n- 275 { \"ISO8859-9\", 57 },\n- 276 { \"ISO_646.IRV:1991\", 88 },\n- 277 { \"ISO_8859-1\", 0 },\n- 278 { \"ISO_8859-10\", 45 },\n- 279 { \"ISO_8859-10:1992\", 45 },\n- 280 { \"ISO_8859-13\", 46 },\n- 281 { \"ISO_8859-14\", 47 },\n- 282 { \"ISO_8859-14:1998\", 47 },\n- 283 { \"ISO_8859-15\", 48 },\n- 284 { \"ISO_8859-15:1998\", 48 },\n- 285 { \"ISO_8859-16\", 49 },\n- 286 { \"ISO_8859-16:2000\", 49 },\n- 287 { \"ISO_8859-1:1987\", 0 },\n- 288 { \"ISO_8859-2\", 50 },\n- 289 { \"ISO_8859-2:1987\", 50 },\n- 290 { \"ISO_8859-3\", 51 },\n- 291 { \"ISO_8859-3:1988\", 51 },\n- 292 { \"ISO_8859-4\", 52 },\n- 293 { \"ISO_8859-4:1988\", 52 },\n- 294 { \"ISO_8859-5\", 53 },\n- 295 { \"ISO_8859-5:1988\", 53 },\n- 296 { \"ISO_8859-6\", 54 },\n- 297 { \"ISO_8859-6:1987\", 54 },\n- 298 { \"ISO_8859-7\", 55 },\n- 299 { \"ISO_8859-7:1987\", 55 },\n- 300 { \"ISO_8859-8\", 56 },\n- 301 { \"ISO_8859-8:1988\", 56 },\n- 302 { \"ISO_8859-9\", 57 },\n- 303 { \"ISO_8859-9:1989\", 57 },\n- 304 { \"JAVA\", 63 },\n- 305 { \"JIS0208\", 62 },\n- 306 { \"JISX0201-1976\", 64 },\n- 307 { \"JIS_C6220-1969-RO\", 58 },\n- 308 { \"JIS_C6226-1983\", 62 },\n- 309 { \"JIS_X0201\", 64 },\n- 310 { \"JIS_X0208\", 62 },\n- 311 { \"JIS_X0208-1983\", 62 },\n- 312 { \"JIS_X0208-1990\", 62 },\n- 313 { \"JIS_X0212\", 60 },\n- 314 { \"JIS_X0212-1990\", 60 },\n- 315 { \"JIS_X0212.1990-0\", 60 },\n- 316 { \"JOHAB\", 22 },\n- 317 { \"JP\", 58 },\n- 318 { \"KOI8-R\", 65 },\n- 319 { \"KOI8-RU\", 66 },\n- 320 { \"KOI8-T\", 67 },\n- 321 { \"KOI8-U\", 68 },\n- 322 { \"KOREAN\", 59 },\n- 323 { \"KSC_5601\", 59 },\n- 324 { \"KS_C_5601-1987\", 59 },\n- 325 { \"KS_C_5601-1989\", 59 },\n- 326 { \"L1\", 0 },\n- 327 { \"L2\", 50 },\n- 328 { \"L3\", 51 },\n- 329 { \"L4\", 52 },\n- 330 { \"L5\", 57 },\n- 331 { \"L6\", 45 },\n- 332 { \"L7\", 46 },\n- 333 { \"L8\", 47 },\n- 334 { \"LATIN1\", 0 },\n- 335 { \"LATIN2\", 50 },\n- 336 { \"LATIN3\", 51 },\n- 337 { \"LATIN4\", 52 },\n- 338 { \"LATIN5\", 57 },\n- 339 { \"LATIN6\", 45 },\n- 340 { \"LATIN7\", 46 },\n- 341 { \"LATIN8\", 47 },\n- 342 { \"MAC\", 69 },\n- 343 { \"MACARABIC\", 70 },\n- 344 { \"MACCENTRALEUROPE\", 71 },\n- 345 { \"MACCROATIAN\", 72 },\n- 346 { \"MACCYRILLIC\", 73 },\n- 347 { \"MACGREEK\", 74 },\n- 348 { \"MACHEBREW\", 75 },\n- 349 { \"MACICELAND\", 76 },\n- 350 { \"MACINTOSH\", 69 },\n- 351 { \"MACROMAN\", 69 },\n- 352 { \"MACROMANIA\", 77 },\n- 353 { \"MACTHAI\", 78 },\n- 354 { \"MACTURKISH\", 79 },\n- 355 { \"MACUKRAINE\", 80 },\n- 356 { \"MS-ANSI\", 15 },\n- 357 { \"MS-ARAB\", 19 },\n- 358 { \"MS-CYRL\", 14 },\n- 359 { \"MS-EE\", 13 },\n- 360 { \"MS-GREEK\", 16 },\n- 361 { \"MS-HEBR\", 18 },\n- 362 { \"MS-TURK\", 17 },\n- 363 { \"MS_KANJI\", 84 },\n- 364 { \"MULELAO-1\", 81 },\n- 365 { \"NEXTSTEP\", 82 },\n- 366 { \"R8\", 83 },\n- 367 { \"ROMAN8\", 83 },\n- 368 { \"SHIFT-JIS\", 84 },\n- 369 { \"SHIFT_JIS\", 84 },\n- 370 { \"SJIS\", 84 },\n- 371 { \"TCVN\", 85 },\n- 372 { \"TCVN-5712\", 85 },\n- 373 { \"TCVN5712-1\", 85 },\n- 374 { \"TCVN5712-1:1993\", 85 },\n- 375 { \"TIS-620\", 61 },\n- 376 { \"TIS620\", 61 },\n- 377 { \"TIS620-0\", 61 },\n- 378 { \"TIS620.2529-1\", 61 },\n- 379 { \"TIS620.2533-0\", 61 },\n- 380 { \"TIS620.2533-1\", 61 },\n- 381 { \"UCS-2BE\", 3 },\n- 382 { \"UCS-2LE\", 2 },\n- 383 { \"UCS-4BE\", 86 },\n- 384 { \"UCS-4LE\", 87 },\n- 385 { \"UHC\", 30 },\n- 386 { \"UNICODE-1-1\", 3 },\n- 387 { \"UNICODE-1-1-UTF-7\", 93 },\n- 388 { \"UNICODEBIG\", 3 },\n- 389 { \"UNICODELITTLE\", 2 },\n- 390 { \"US\", 88 },\n- 391 { \"US-ASCII\", 88 },\n- 392 { \"UTF-16BE\", 89 },\n- 393 { \"UTF-16LE\", 90 },\n- 394 { \"UTF-32BE\", 91 },\n- 395 { \"UTF-32LE\", 92 },\n- 396 { \"UTF-7\", 93 },\n- 397 { \"UTF-8\", 1 },\n- 398 { \"UTF7\", 93 },\n- 399 { \"UTF8\", 1 },\n- 400 { \"VISCII\", 94 },\n- 401 { \"VISCII1.1-1\", 94 },\n- 402 { \"WINBALTRIM\", 20 },\n- 403 { \"WINDOWS-1250\", 13 },\n- 404 { \"WINDOWS-1251\", 14 },\n- 405 { \"WINDOWS-1252\", 15 },\n- 406 { \"WINDOWS-1253\", 16 },\n- 407 { \"WINDOWS-1254\", 17 },\n- 408 { \"WINDOWS-1255\", 18 },\n- 409 { \"WINDOWS-1256\", 19 },\n- 410 { \"WINDOWS-1257\", 20 },\n- 411 { \"WINDOWS-1258\", 21 },\n- 412 { \"WINDOWS-874\", 27 },\n- 413 { \"X0201\", 64 },\n- 414 { \"X0208\", 62 },\n- 415 { \"X0212\", 60 },\n- 416 { \"big5\", 5 },\n- 417 { \"cp1250\", 13 },\n- 418 { \"cp1251\", 14 },\n- 419 { \"cp1252\", 15 },\n- 420 { \"cp1253\", 16 },\n- 421 { \"cp1254\", 17 },\n- 422 { \"cp1255\", 18 },\n- 423 { \"cp1256\", 19 },\n- 424 { \"cp1257\", 20 },\n- 425 { \"cp1258\", 21 },\n- 426 { \"cp437\", 23 },\n- 427 { \"cp850\", 24 },\n- 428 { \"cp862\", 25 },\n- 429 { \"cp866\", 26 },\n- 430 { \"cp874\", 27 },\n- 431 { \"eucJP\", 32 },\n- 432 { \"eucKR\", 33 },\n- 433 { \"eucTW\", 34 },\n- 434 { \"hp15CN\", 8 },\n- 435 { \"iso81\", 0 },\n- 436 { \"iso815\", 48 },\n- 437 { \"iso82\", 50 },\n- 438 { \"iso83\", 51 },\n- 439 { \"iso84\", 52 },\n- 440 { \"iso85\", 53 },\n- 441 { \"iso86\", 54 },\n- 442 { \"iso87\", 55 },\n- 443 { \"iso88\", 56 },\n- 444 { \"iso88591\", 0 },\n- 445 { \"iso885915\", 48 },\n- 446 { \"iso88592\", 50 },\n- 447 { \"iso88593\", 51 },\n- 448 { \"iso88594\", 52 },\n- 449 { \"iso88595\", 53 },\n- 450 { \"iso88596\", 54 },\n- 451 { \"iso88597\", 55 },\n- 452 { \"iso88598\", 56 },\n- 453 { \"iso88599\", 57 },\n- 454 { \"iso89\", 57 },\n- 455 { \"roma8\", 83 },\n- 456 { \"roman8\", 83 },\n- 457 { \"sjis\", 84 },\n- 458 { \"thai8\", 61 },\n- 459 { \"tis620\", 61 },\n- 460 { \"utf8\", 1 },\n- 461 {NULL, 0}\n- 462};\n- 463\n- 464#endif\n- 465\n- 466enum {\n- 467 TDS_CHARSET_ISO_8859_1 = 0,\n- 468 TDS_CHARSET_UTF_8 = 1,\n- 469 TDS_CHARSET_UCS_2LE = 2,\n- 470 TDS_CHARSET_UCS_2BE = 3,\n- 471 TDS_CHARSET_ARMSCII_8 = 4,\n- 472 TDS_CHARSET_BIG_5 = 5,\n- 473 TDS_CHARSET_BIG5_HKSCS = 6,\n- 474 TDS_CHARSET_C99 = 7,\n- 475 TDS_CHARSET_CHINESE = 8,\n- 476 TDS_CHARSET_CN = 9,\n- 477 TDS_CHARSET_CN_GB = 10,\n- 478 TDS_CHARSET_CN_GB_ISOIR165 = 11,\n- 479 TDS_CHARSET_CP1133 = 12,\n- 480 TDS_CHARSET_CP1250 = 13,\n- 481 TDS_CHARSET_CP1251 = 14,\n- 482 TDS_CHARSET_CP1252 = 15,\n- 483 TDS_CHARSET_CP1253 = 16,\n- 484 TDS_CHARSET_CP1254 = 17,\n- 485 TDS_CHARSET_CP1255 = 18,\n- 486 TDS_CHARSET_CP1256 = 19,\n- 487 TDS_CHARSET_CP1257 = 20,\n- 488 TDS_CHARSET_CP1258 = 21,\n- 489 TDS_CHARSET_CP1361 = 22,\n- 490 TDS_CHARSET_CP437 = 23,\n- 491 TDS_CHARSET_CP850 = 24,\n- 492 TDS_CHARSET_CP862 = 25,\n- 493 TDS_CHARSET_CP866 = 26,\n- 494 TDS_CHARSET_CP874 = 27,\n- 495 TDS_CHARSET_CP932 = 28,\n- 496 TDS_CHARSET_CP936 = 29,\n- 497 TDS_CHARSET_CP949 = 30,\n- 498 TDS_CHARSET_CP950 = 31,\n- 499 TDS_CHARSET_EUC_JP = 32,\n- 500 TDS_CHARSET_EUC_KR = 33,\n- 501 TDS_CHARSET_EUC_TW = 34,\n- 502 TDS_CHARSET_GB18030 = 35,\n- 503 TDS_CHARSET_GEORGIAN_ACADEMY = 36,\n- 504 TDS_CHARSET_GEORGIAN_PS = 37,\n- 505 TDS_CHARSET_HZ = 38,\n- 506 TDS_CHARSET_ISO_2022_CN = 39,\n- 507 TDS_CHARSET_ISO_2022_CN_EXT = 40,\n- 508 TDS_CHARSET_ISO_2022_JP = 41,\n- 509 TDS_CHARSET_ISO_2022_JP_1 = 42,\n- 510 TDS_CHARSET_ISO_2022_JP_2 = 43,\n- 511 TDS_CHARSET_ISO_2022_KR = 44,\n- 512 TDS_CHARSET_ISO_8859_10 = 45,\n- 513 TDS_CHARSET_ISO_8859_13 = 46,\n- 514 TDS_CHARSET_ISO_8859_14 = 47,\n- 515 TDS_CHARSET_ISO_8859_15 = 48,\n- 516 TDS_CHARSET_ISO_8859_16 = 49,\n- 517 TDS_CHARSET_ISO_8859_2 = 50,\n- 518 TDS_CHARSET_ISO_8859_3 = 51,\n- 519 TDS_CHARSET_ISO_8859_4 = 52,\n- 520 TDS_CHARSET_ISO_8859_5 = 53,\n- 521 TDS_CHARSET_ISO_8859_6 = 54,\n- 522 TDS_CHARSET_ISO_8859_7 = 55,\n- 523 TDS_CHARSET_ISO_8859_8 = 56,\n- 524 TDS_CHARSET_ISO_8859_9 = 57,\n- 525 TDS_CHARSET_ISO_IR_14 = 58,\n- 526 TDS_CHARSET_ISO_IR_149 = 59,\n- 527 TDS_CHARSET_ISO_IR_159 = 60,\n- 528 TDS_CHARSET_ISO_IR_166 = 61,\n- 529 TDS_CHARSET_ISO_IR_87 = 62,\n- 530 TDS_CHARSET_JAVA = 63,\n- 531 TDS_CHARSET_JISX0201_1976 = 64,\n- 532 TDS_CHARSET_KOI8_R = 65,\n- 533 TDS_CHARSET_KOI8_RU = 66,\n- 534 TDS_CHARSET_KOI8_T = 67,\n- 535 TDS_CHARSET_KOI8_U = 68,\n- 536 TDS_CHARSET_MAC = 69,\n- 537 TDS_CHARSET_MACARABIC = 70,\n- 538 TDS_CHARSET_MACCENTRALEUROPE = 71,\n- 539 TDS_CHARSET_MACCROATIAN = 72,\n- 540 TDS_CHARSET_MACCYRILLIC = 73,\n- 541 TDS_CHARSET_MACGREEK = 74,\n- 542 TDS_CHARSET_MACHEBREW = 75,\n- 543 TDS_CHARSET_MACICELAND = 76,\n- 544 TDS_CHARSET_MACROMANIA = 77,\n- 545 TDS_CHARSET_MACTHAI = 78,\n- 546 TDS_CHARSET_MACTURKISH = 79,\n- 547 TDS_CHARSET_MACUKRAINE = 80,\n- 548 TDS_CHARSET_MULELAO_1 = 81,\n- 549 TDS_CHARSET_NEXTSTEP = 82,\n- 550 TDS_CHARSET_ROMAN8 = 83,\n- 551 TDS_CHARSET_SJIS = 84,\n- 552 TDS_CHARSET_TCVN = 85,\n- 553 TDS_CHARSET_UCS_4BE = 86,\n- 554 TDS_CHARSET_UCS_4LE = 87,\n- 555 TDS_CHARSET_US_ASCII = 88,\n- 556 TDS_CHARSET_UTF_16BE = 89,\n- 557 TDS_CHARSET_UTF_16LE = 90,\n- 558 TDS_CHARSET_UTF_32BE = 91,\n- 559 TDS_CHARSET_UTF_32LE = 92,\n- 560 TDS_CHARSET_UTF_7 = 93,\n- 561 TDS_CHARSET_VISCII = 94,\n- 562 TDS_NUM_CHARSETS = 95\n- 563};\n- 564\n-_character_set_alias\n-Definition iconv.h:73\n-tds_encoding\n-Information relevant to libiconv.\n-Definition tds.h:618\n+popvis.h\n+ 1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n+ 2#pragma GCC visibility pop\n+ 3#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00365_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00365_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/pushvis.h Source File\n+FreeTDS API: include/freetds/replacements.h Source File\n \n \n \n \n \n \n \n@@ -74,20 +74,217 @@\n \n
    \n \n
    \n
    \n
    \n-
    pushvis.h
    \n+
    replacements.h
    \n
    \n
    \n-
    1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n-
    2#pragma GCC visibility push(hidden)
    \n-
    3#endif
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _replacements_h_
    \n+
    21#define _replacements_h_
    \n+
    22
    \n+
    23#include <stdarg.h>
    \n+
    24#include "tds_sysdep_public.h"
    \n+
    25#include <freetds/sysdep_private.h>
    \n+
    26
    \n+
    27#include <freetds/replacements/readpassphrase.h>
    \n+
    28
    \n+
    29/* these headers are needed for basename */
    \n+
    30#ifdef HAVE_STRING_H
    \n+
    31# include <string.h>
    \n+
    32#endif
    \n+
    33#ifdef HAVE_LIBGEN_H
    \n+
    34# include <libgen.h>
    \n+
    35#endif
    \n+
    36#ifdef HAVE_GETOPT_H
    \n+
    37# include <getopt.h>
    \n+
    38#endif
    \n+
    39
    \n+
    40#if !HAVE_POLL
    \n+\n+
    42#endif /* !HAVE_POLL */
    \n+
    43
    \n+
    44#include <freetds/pushvis.h>
    \n+
    45
    \n+
    46#ifdef __cplusplus
    \n+
    47extern "C"
    \n+
    48{
    \n+
    49#endif
    \n+
    50
    \n+
    51#if !HAVE_ASPRINTF
    \n+
    52#undef asprintf
    \n+
    53int tds_asprintf(char **ret, const char *fmt, ...);
    \n+
    54#define asprintf tds_asprintf
    \n+
    55#endif /* !HAVE_ASPRINTF */
    \n+
    56
    \n+
    57#if !HAVE_VASPRINTF
    \n+
    58#undef vasprintf
    \n+
    59int tds_vasprintf(char **ret, const char *fmt, va_list ap);
    \n+
    60#define vasprintf tds_vasprintf
    \n+
    61#endif /* !HAVE_VASPRINTF */
    \n+
    62
    \n+
    63#if !HAVE_STRTOK_R
    \n+
    64/* Some MinGW define strtok_r macro thread-safe but not reentrant but we
    \n+
    65 need both so avoid using the macro */
    \n+
    66#undef strtok_r
    \n+
    67#if defined(_WIN32) && HAVE_STRTOK_S
    \n+
    68#define strtok_r strtok_s
    \n+
    69#else
    \n+
    70char *tds_strtok_r(char *str, const char *sep, char **lasts);
    \n+
    71#define strtok_r tds_strtok_r
    \n+
    72#endif
    \n+
    73#endif /* !HAVE_STRTOK_R */
    \n+
    74
    \n+
    75#if !HAVE_STRSEP
    \n+
    76#undef strsep
    \n+
    77char *tds_strsep(char **stringp, const char *delim);
    \n+
    78#define strsep tds_strsep
    \n+
    79#endif /* !HAVE_STRSEP */
    \n+
    80
    \n+
    81#if !HAVE_STRLCPY
    \n+
    82size_t tds_strlcpy(char *dest, const char *src, size_t len);
    \n+
    83#undef strlcpy
    \n+
    84#define strlcpy(d,s,l) tds_strlcpy(d,s,l)
    \n+
    85#endif
    \n+
    86
    \n+
    87#if !HAVE_GETADDRINFO
    \n+
    \n+
    88typedef struct tds_addrinfo {
    \n+
    89 int ai_flags;
    \n+
    90 int ai_family;
    \n+
    91 int ai_socktype;
    \n+
    92 int ai_protocol;
    \n+
    93 size_t ai_addrlen;
    \n+
    94 struct sockaddr *ai_addr;
    \n+
    95 char *ai_canonname;
    \n+
    96 struct tds_addrinfo *ai_next;
    \n+\n+
    \n+
    98
    \n+
    99int tds_getaddrinfo(const char *node, const char *service, const struct tds_addrinfo *hints, struct tds_addrinfo **res);
    \n+
    100int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
    \n+
    101void tds_freeaddrinfo(struct tds_addrinfo *addr);
    \n+
    102#define addrinfo tds_addrinfo
    \n+
    103#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)
    \n+
    104#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)
    \n+
    105#define freeaddrinfo(a) tds_freeaddrinfo(a)
    \n+
    106#endif
    \n+
    107
    \n+
    108#ifndef AI_FQDN
    \n+
    109#define AI_FQDN 0
    \n+
    110#endif
    \n+
    111
    \n+
    112#if !HAVE_STRLCAT
    \n+
    113size_t tds_strlcat(char *dest, const char *src, size_t len);
    \n+
    114#undef strlcat
    \n+
    115#define strlcat(d,s,l) tds_strlcat(d,s,l)
    \n+
    116#endif
    \n+
    117
    \n+
    118#if !HAVE_BASENAME
    \n+
    119char *tds_basename(char *path);
    \n+
    120#define basename(path) tds_basename(path)
    \n+
    121#endif
    \n+
    122
    \n+
    123/*
    \n+
    124 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.
    \n+
    125 * Other Win32 C runtime libraries, notably MinGW, may define it.
    \n+
    126 * There is no symbol uniquely defined in Microsoft's header files that
    \n+
    127 * can be used by the preprocessor to know whether we're compiling for
    \n+
    128 * Microsoft's library or not (or which version). Thus there's no
    \n+
    129 * way to automatically decide whether or not to define strcasecmp
    \n+
    130 * in terms of stricmp.
    \n+
    131 *
    \n+
    132 * The Microsoft *compiler* defines _MSC_VER. On the assumption that
    \n+
    133 * anyone using their compiler is also using their library, the below
    \n+
    134 * tests check _MSC_VER as a proxy.
    \n+
    135 */
    \n+
    136#if defined(_WIN32)
    \n+
    137# if !defined(strcasecmp) && defined(_MSC_VER)
    \n+
    138# define strcasecmp(A, B) stricmp((A), (B))
    \n+
    139# endif
    \n+
    140# if !defined(strncasecmp) && defined(_MSC_VER)
    \n+
    141# define strncasecmp(x,y,z) strnicmp((x),(y),(z))
    \n+
    142# endif
    \n+
    143
    \n+
    144#undef gettimeofday
    \n+
    145int tds_gettimeofday (struct timeval *tv, void *tz);
    \n+
    146#define gettimeofday tds_gettimeofday
    \n+
    147
    \n+
    148/* Older MinGW-w64 versions don't define these flags. */
    \n+
    149#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)
    \n+
    150# define AI_ADDRCONFIG 0x00000400
    \n+
    151#endif
    \n+
    152#if defined(__MINGW32__) && !defined(AI_V4MAPPED)
    \n+
    153# define AI_V4MAPPED 0x00000800
    \n+
    154#endif
    \n+
    155
    \n+
    156#endif
    \n+
    157
    \n+
    158#if defined(_WIN32) && defined(_MSC_VER)
    \n+
    159#define tds_strtoll _strtoi64
    \n+
    160#else
    \n+
    161#define tds_strtoll strtoll
    \n+
    162#endif
    \n+
    163
    \n+
    164#if !HAVE_GETOPT
    \n+
    165#undef getopt
    \n+
    166int tds_getopt(int argc, char * const argv[], const char *optstring);
    \n+
    167#define getopt tds_getopt
    \n+
    168
    \n+
    169extern char *optarg;
    \n+
    170extern int optind, offset, opterr, optreset;
    \n+
    171#endif
    \n+
    172
    \n+
    173#if !HAVE_SOCKETPAIR
    \n+
    174int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv[2]);
    \n+
    175#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)
    \n+
    176#endif
    \n+
    177
    \n+
    178#if !HAVE_DAEMON
    \n+
    179int tds_daemon(int no_chdir, int no_close);
    \n+
    180#define daemon(d,c) tds_daemon(d,c)
    \n+
    181#endif
    \n+
    182
    \n+
    183#if !HAVE_SETENV
    \n+
    184int tds_setenv(const char *name, const char *value, int overwrite);
    \n+
    185#define setenv(n,v,o) tds_setenv(n,v,o)
    \n+
    186int tds_unsetenv(const char *name);
    \n+
    187#define unsetenv(n) tds_unsetenv(n)
    \n+
    188#endif
    \n+
    189
    \n+
    190#ifdef __cplusplus
    \n+
    191}
    \n+
    192#endif
    \n+
    193
    \n+
    194#include <freetds/popvis.h>
    \n+
    195
    \n+
    196#endif
    \n+
    Provide poll call where missing.
    \n+
    Definition replacements.h:88
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,14 +7,214 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-pushvis.h\n- 1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n- 2#pragma GCC visibility push(hidden)\n- 3#endif\n+replacements.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _replacements_h_\n+ 21#define _replacements_h_\n+ 22\n+ 23#include \n+ 24#include \"tds_sysdep_public.h\"\n+ 25#include \n+ 26\n+ 27#include \n+ 28\n+ 29/* these headers are needed for basename */\n+ 30#ifdef HAVE_STRING_H\n+ 31# include \n+ 32#endif\n+ 33#ifdef HAVE_LIBGEN_H\n+ 34# include \n+ 35#endif\n+ 36#ifdef HAVE_GETOPT_H\n+ 37# include \n+ 38#endif\n+ 39\n+ 40#if !HAVE_POLL\n+ 41#include \n+ 42#endif /* !HAVE_POLL */\n+ 43\n+ 44#include \n+ 45\n+ 46#ifdef __cplusplus\n+ 47extern \"C\"\n+ 48{\n+ 49#endif\n+ 50\n+ 51#if !HAVE_ASPRINTF\n+ 52#undef asprintf\n+ 53int tds_asprintf(char **ret, const char *fmt, ...);\n+ 54#define asprintf tds_asprintf\n+ 55#endif /* !HAVE_ASPRINTF */\n+ 56\n+ 57#if !HAVE_VASPRINTF\n+ 58#undef vasprintf\n+ 59int tds_vasprintf(char **ret, const char *fmt, va_list ap);\n+ 60#define vasprintf tds_vasprintf\n+ 61#endif /* !HAVE_VASPRINTF */\n+ 62\n+ 63#if !HAVE_STRTOK_R\n+ 64/* Some MinGW define strtok_r macro thread-safe but not reentrant but we\n+ 65 need both so avoid using the macro */\n+ 66#undef strtok_r\n+ 67#if defined(_WIN32) && HAVE_STRTOK_S\n+ 68#define strtok_r strtok_s\n+ 69#else\n+ 70char *tds_strtok_r(char *str, const char *sep, char **lasts);\n+ 71#define strtok_r tds_strtok_r\n+ 72#endif\n+ 73#endif /* !HAVE_STRTOK_R */\n+ 74\n+ 75#if !HAVE_STRSEP\n+ 76#undef strsep\n+ 77char *tds_strsep(char **stringp, const char *delim);\n+ 78#define strsep tds_strsep\n+ 79#endif /* !HAVE_STRSEP */\n+ 80\n+ 81#if !HAVE_STRLCPY\n+ 82size_t tds_strlcpy(char *dest, const char *src, size_t len);\n+ 83#undef strlcpy\n+ 84#define strlcpy(d,s,l) tds_strlcpy(d,s,l)\n+ 85#endif\n+ 86\n+ 87#if !HAVE_GETADDRINFO\n+88typedef struct tds_addrinfo {\n+ 89 int ai_flags;\n+ 90 int ai_family;\n+ 91 int ai_socktype;\n+ 92 int ai_protocol;\n+ 93 size_t ai_addrlen;\n+ 94 struct sockaddr *ai_addr;\n+ 95 char *ai_canonname;\n+ 96 struct tds_addrinfo *ai_next;\n+ 97} tds_addrinfo;\n+ 98\n+ 99int tds_getaddrinfo(const char *node, const char *service, const struct\n+tds_addrinfo *hints, struct tds_addrinfo **res);\n+ 100int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host,\n+size_t hostlen, char *serv, size_t servlen, int flags);\n+ 101void tds_freeaddrinfo(struct tds_addrinfo *addr);\n+ 102#define addrinfo tds_addrinfo\n+ 103#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)\n+ 104#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)\n+ 105#define freeaddrinfo(a) tds_freeaddrinfo(a)\n+ 106#endif\n+ 107\n+ 108#ifndef AI_FQDN\n+ 109#define AI_FQDN 0\n+ 110#endif\n+ 111\n+ 112#if !HAVE_STRLCAT\n+ 113size_t tds_strlcat(char *dest, const char *src, size_t len);\n+ 114#undef strlcat\n+ 115#define strlcat(d,s,l) tds_strlcat(d,s,l)\n+ 116#endif\n+ 117\n+ 118#if !HAVE_BASENAME\n+ 119char *tds_basename(char *path);\n+ 120#define basename(path) tds_basename(path)\n+ 121#endif\n+ 122\n+ 123/*\n+ 124 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.\n+ 125 * Other Win32 C runtime libraries, notably MinGW, may define it.\n+ 126 * There is no symbol uniquely defined in Microsoft's header files that\n+ 127 * can be used by the preprocessor to know whether we're compiling for\n+ 128 * Microsoft's library or not (or which version). Thus there's no\n+ 129 * way to automatically decide whether or not to define strcasecmp\n+ 130 * in terms of stricmp.\n+ 131 *\n+ 132 * The Microsoft *compiler* defines _MSC_VER. On the assumption that\n+ 133 * anyone using their compiler is also using their library, the below\n+ 134 * tests check _MSC_VER as a proxy.\n+ 135 */\n+ 136#if defined(_WIN32)\n+ 137# if !defined(strcasecmp) && defined(_MSC_VER)\n+ 138# define strcasecmp(A, B) stricmp((A), (B))\n+ 139# endif\n+ 140# if !defined(strncasecmp) && defined(_MSC_VER)\n+ 141# define strncasecmp(x,y,z) strnicmp((x),(y),(z))\n+ 142# endif\n+ 143\n+ 144#undef gettimeofday\n+ 145int tds_gettimeofday (struct timeval *tv, void *tz);\n+ 146#define gettimeofday tds_gettimeofday\n+ 147\n+ 148/* Older MinGW-w64 versions don't define these flags. */\n+ 149#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)\n+ 150# define AI_ADDRCONFIG 0x00000400\n+ 151#endif\n+ 152#if defined(__MINGW32__) && !defined(AI_V4MAPPED)\n+ 153# define AI_V4MAPPED 0x00000800\n+ 154#endif\n+ 155\n+ 156#endif\n+ 157\n+ 158#if defined(_WIN32) && defined(_MSC_VER)\n+ 159#define tds_strtoll _strtoi64\n+ 160#else\n+ 161#define tds_strtoll strtoll\n+ 162#endif\n+ 163\n+ 164#if !HAVE_GETOPT\n+ 165#undef getopt\n+ 166int tds_getopt(int argc, char * const argv[], const char *optstring);\n+ 167#define getopt tds_getopt\n+ 168\n+ 169extern char *optarg;\n+ 170extern int optind, offset, opterr, optreset;\n+ 171#endif\n+ 172\n+ 173#if !HAVE_SOCKETPAIR\n+ 174int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv\n+[2]);\n+ 175#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)\n+ 176#endif\n+ 177\n+ 178#if !HAVE_DAEMON\n+ 179int tds_daemon(int no_chdir, int no_close);\n+ 180#define daemon(d,c) tds_daemon(d,c)\n+ 181#endif\n+ 182\n+ 183#if !HAVE_SETENV\n+ 184int tds_setenv(const char *name, const char *value, int overwrite);\n+ 185#define setenv(n,v,o) tds_setenv(n,v,o)\n+ 186int tds_unsetenv(const char *name);\n+ 187#define unsetenv(n) tds_unsetenv(n)\n+ 188#endif\n+ 189\n+ 190#ifdef __cplusplus\n+ 191}\n+ 192#endif\n+ 193\n+ 194#include \n+ 195\n+ 196#endif\n+poll.h\n+Provide poll call where missing.\n+tds_addrinfo\n+Definition replacements.h:88\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00368_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/tds.h Source File\n+FreeTDS API: include/freetds/sysdep_private.h Source File\n \n \n \n \n \n \n \n@@ -74,20 +74,20 @@\n \n
    \n \n
    \n
    \n
    \n-
    tds.h
    \n+
    sysdep_private.h
    \n
    \n
    \n-Go to the documentation of this file.
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n-
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n+
    3 * Copyright (C) 2010 Frediano Ziglio
    \n
    4 *
    \n
    5 * This library is free software; you can redistribute it and/or
    \n
    6 * modify it under the terms of the GNU Library General Public
    \n
    7 * License as published by the Free Software Foundation; either
    \n
    8 * version 2 of the License, or (at your option) any later version.
    \n
    9 *
    \n
    10 * This library is distributed in the hope that it will be useful,
    \n@@ -97,1866 +97,268 @@\n
    14 *
    \n
    15 * You should have received a copy of the GNU Library General Public
    \n
    16 * License along with this library; if not, write to the
    \n
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    18 * Boston, MA 02111-1307, USA.
    \n
    19 */
    \n
    20
    \n-
    21#ifndef _tds_h_
    \n-
    22#define _tds_h_
    \n+
    21#ifndef _tds_sysdep_private_h_
    \n+
    22#define _tds_sysdep_private_h_
    \n
    23
    \n-
    24#ifndef _freetds_config_h_
    \n-
    25#error should include config.h before
    \n-
    26#endif
    \n-
    27
    \n-
    28#include <stdarg.h>
    \n-
    29#include <stdio.h>
    \n-
    30#include <time.h>
    \n+
    24#define TDS_ADDITIONAL_SPACE 16
    \n+
    25
    \n+
    26#ifdef MSG_NOSIGNAL
    \n+
    27# define TDS_NOSIGNAL MSG_NOSIGNAL
    \n+
    28#else
    \n+
    29# define TDS_NOSIGNAL 0L
    \n+
    30#endif
    \n
    31
    \n-
    32#ifdef HAVE_STDDEF_H
    \n-
    33#include <stddef.h>
    \n-
    34#endif
    \n-
    35
    \n-
    36#if HAVE_NETDB_H
    \n-
    37#include <netdb.h>
    \n-
    38#endif /* HAVE_NETDB_H */
    \n+
    32#ifdef __cplusplus
    \n+
    33extern "C"
    \n+
    34{
    \n+
    35#if 0
    \n+
    36}
    \n+
    37#endif
    \n+
    38#endif
    \n
    39
    \n-
    40#if HAVE_NETINET_IN_H
    \n-
    41#include <netinet/in.h>
    \n-
    42#endif /* HAVE_NET_INET_IN_H */
    \n-
    43#if HAVE_ARPA_INET_H
    \n-
    44#include <arpa/inet.h>
    \n-
    45#endif /* HAVE_ARPA_INET_H */
    \n-
    46
    \n-
    47#if HAVE_SYS_SOCKET_H
    \n-
    48#include <sys/socket.h>
    \n-
    49#endif /* HAVE_SYS_SOCKET_H */
    \n-
    50
    \n-
    51/* forward declaration */
    \n-
    52typedef struct tdsiconvinfo TDSICONV;
    \n-
    53typedef struct tds_connection TDSCONNECTION;
    \n-
    54typedef struct tds_socket TDSSOCKET;
    \n-
    55typedef struct tds_column TDSCOLUMN;
    \n-
    56typedef struct tds_bcpinfo TDSBCPINFO;
    \n+
    40#ifdef __INCvxWorksh
    \n+
    41#include <ioLib.h> /* for FIONBIO */
    \n+
    42#endif /* __INCvxWorksh */
    \n+
    43
    \n+
    44#if defined(DOS32X)
    \n+
    45#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
    \n+
    46#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
    \n+
    47#define CLOSESOCKET(a) closesocket((a))
    \n+
    48#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
    \n+
    49#define SOCKLEN_T int
    \n+
    50#define select select_s
    \n+
    51typedef int pid_t;
    \n+
    52#define strcasecmp stricmp
    \n+
    53#define strncasecmp strnicmp
    \n+
    54/* TODO this has nothing to do with ip ... */
    \n+
    55#define getpid() _gethostid()
    \n+
    56#endif /* defined(DOS32X) */
    \n
    57
    \n-
    58#include <freetds/version.h>
    \n-
    59#include <freetds/sysdep_private.h>
    \n-
    60#include <freetds/thread.h>
    \n-
    61#include <freetds/bool.h>
    \n-
    62#include <freetds/macros.h>
    \n-
    63#include <freetds/utils/string.h>
    \n-
    64#include <freetds/replacements.h>
    \n-
    65
    \n-
    66#include <freetds/pushvis.h>
    \n-
    67
    \n-
    68#ifdef __cplusplus
    \n-
    69extern "C"
    \n-
    70{
    \n-
    71#if 0
    \n-
    72}
    \n-
    73#endif
    \n-
    74#endif
    \n-
    75
    \n-
    \n-\n-
    82{
    \n-
    83 const char *freetds_version; /* release version of FreeTDS */
    \n-
    84 const char *sysconfdir; /* location of freetds.conf */
    \n-
    85 const char *last_update; /* latest software_version date among the modules */
    \n-
    86 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1) 5.0 */
    \n-
    87 bool msdblib; /* for MS style dblib */
    \n-
    88 bool sybase_compat; /* enable increased Open Client binary compatibility */
    \n-
    89 bool threadsafe; /* compile for thread safety default=no */
    \n-
    90 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */
    \n-
    91 bool iodbc; /* build odbc driver against iODBC in DIR */
    \n-
    92 bool unixodbc; /* build odbc driver against unixODBC in DIR */
    \n-
    93 bool openssl; /* build against OpenSSL */
    \n-
    94 bool gnutls; /* build against GnuTLS */
    \n-
    95 bool mars; /* MARS enabled */
    \n-
    96 bool sspi; /* SSPI enabled */
    \n-
    97 bool kerberos; /* Kerberos enabled */
    \n-\n-
    \n-
    99
    \n-
    115/*
    \n-
    116 * All references to data that touch the wire should use the following typedefs.
    \n-
    117 *
    \n-
    118 * If you have problems on 64-bit machines and the code is
    \n-
    119 * using a native datatype, please change it to use
    \n-
    120 * these. (In the TDS layer only, the API layers have their
    \n-
    121 * own typedefs which equate to these).
    \n-
    122 */
    \n-
    123typedef char TDS_CHAR; /* 8-bit char */
    \n-
    124typedef uint8_t TDS_UCHAR; /* 8-bit uchar */
    \n-
    125typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */
    \n-
    126typedef int16_t TDS_SMALLINT; /* 16-bit int */
    \n-
    127typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */
    \n-
    128typedef int32_t TDS_INT; /* 32-bit int */
    \n-
    129typedef uint32_t TDS_UINT; /* 32-bit unsigned */
    \n-
    130typedef int64_t TDS_INT8; /* 64-bit integer */
    \n-
    131typedef uint64_t TDS_UINT8; /* 64-bit unsigned */
    \n-
    132typedef intptr_t TDS_INTPTR;
    \n-
    133typedef uintptr_t TDS_UINTPTR;
    \n-
    134typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */
    \n-
    135typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */
    \n-
    136
    \n-
    137#include <freetds/proto.h>
    \n-
    138
    \n-
    139#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)
    \n-
    140
    \n-
    \n-
    145typedef struct
    \n-
    146{
    \n-
    147 TDS_UINT8 time;
    \n-
    148 TDS_INT date;
    \n-
    149 TDS_SMALLINT offset;
    \n-
    150 TDS_USMALLINT time_prec:3;
    \n-
    151 TDS_USMALLINT _tds_reserved:10;
    \n-
    152 TDS_USMALLINT has_time:1;
    \n-
    153 TDS_USMALLINT has_date:1;
    \n-
    154 TDS_USMALLINT has_offset:1;
    \n-\n-
    \n-
    156
    \n-
    \n-
    158typedef struct tdsdaterec
    \n-
    159{
    \n-
    160 TDS_INT year;
    \n-
    161 TDS_INT quarter;
    \n-
    162 TDS_INT month;
    \n-
    163 TDS_INT day;
    \n-
    164 TDS_INT dayofyear;
    \n-
    165 TDS_INT weekday;
    \n-
    166 TDS_INT hour;
    \n-
    167 TDS_INT minute;
    \n-
    168 TDS_INT second;
    \n-\n-
    170 TDS_INT timezone;
    \n-\n-
    \n-
    172
    \n-
    178extern const int tds_numeric_bytes_per_prec[];
    \n-
    179
    \n-
    180typedef int TDSRET;
    \n-
    181#define TDS_NO_MORE_RESULTS ((TDSRET)1)
    \n-
    182#define TDS_SUCCESS ((TDSRET)0)
    \n-
    183#define TDS_FAIL ((TDSRET)-1)
    \n-
    184#define TDS_CANCELLED ((TDSRET)-2)
    \n-
    185#define TDS_FAILED(rc) ((rc)<0)
    \n-
    186#define TDS_SUCCEED(rc) ((rc)>=0)
    \n-
    187#define TDS_PROPAGATE(rc) \\
    \n-
    188 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } while(0)
    \n-
    189
    \n-
    190#define TDS_INT_CONTINUE 1
    \n-
    191#define TDS_INT_CANCEL 2
    \n-
    192#define TDS_INT_TIMEOUT 3
    \n-
    193
    \n-
    194
    \n-
    195#define TDS_NO_COUNT -1
    \n-
    196
    \n-
    197#define TDS_ROW_RESULT 4040
    \n-
    198#define TDS_PARAM_RESULT 4042
    \n-
    199#define TDS_STATUS_RESULT 4043
    \n-
    200#define TDS_MSG_RESULT 4044
    \n-
    201#define TDS_COMPUTE_RESULT 4045
    \n-
    202#define TDS_CMD_DONE 4046
    \n-
    203#define TDS_CMD_SUCCEED 4047
    \n-
    204#define TDS_CMD_FAIL 4048
    \n-
    205#define TDS_ROWFMT_RESULT 4049
    \n-
    206#define TDS_COMPUTEFMT_RESULT 4050
    \n-
    207#define TDS_DESCRIBE_RESULT 4051
    \n-
    208#define TDS_DONE_RESULT 4052
    \n-
    209#define TDS_DONEPROC_RESULT 4053
    \n-
    210#define TDS_DONEINPROC_RESULT 4054
    \n-
    211#define TDS_OTHERS_RESULT 4055
    \n-
    212
    \n-
    213enum tds_token_results
    \n-
    214{
    \n-
    215 TDS_TOKEN_RES_OTHERS,
    \n-
    216 TDS_TOKEN_RES_ROWFMT,
    \n-
    217 TDS_TOKEN_RES_COMPUTEFMT,
    \n-
    218 TDS_TOKEN_RES_PARAMFMT,
    \n-
    219 TDS_TOKEN_RES_DONE,
    \n-
    220 TDS_TOKEN_RES_ROW,
    \n-
    221 TDS_TOKEN_RES_COMPUTE,
    \n-
    222 TDS_TOKEN_RES_PROC,
    \n-
    223 TDS_TOKEN_RES_MSG,
    \n-
    224 TDS_TOKEN_RES_ENV,
    \n-
    225};
    \n-
    226
    \n-
    227#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
    \n-
    228
    \n-
    229enum tds_token_flags
    \n-
    230{
    \n-
    231 TDS_HANDLE_ALL = 0,
    \n-
    232 TDS_TOKEN_FLAG(OTHERS),
    \n-
    233 TDS_TOKEN_FLAG(ROWFMT),
    \n-
    234 TDS_TOKEN_FLAG(COMPUTEFMT),
    \n-
    235 TDS_TOKEN_FLAG(PARAMFMT),
    \n-
    236 TDS_TOKEN_FLAG(DONE),
    \n-
    237 TDS_TOKEN_FLAG(ROW),
    \n-
    238 TDS_TOKEN_FLAG(COMPUTE),
    \n-
    239 TDS_TOKEN_FLAG(PROC),
    \n-
    240 TDS_TOKEN_FLAG(MSG),
    \n-
    241 TDS_TOKEN_FLAG(ENV),
    \n-
    242 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,
    \n-
    243 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
    \n-
    244};
    \n-
    245
    \n-
    \n-\n-
    250{
    \n-
    251 TDS_DONE_FINAL = 0x00
    \n-\n-\n-\n-\n-\n-\n-
    258 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */
    \n-
    259 , TDS_DONE_SRVERROR = 0x100
    \n-
    261 /* after the above flags, a TDS_DONE packet has a field describing the state of the transaction */
    \n-
    262 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */
    \n-
    263 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */
    \n-
    264 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */
    \n-
    265 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */
    \n-
    266 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */
    \n-
    267};
    \n-
    \n-
    268
    \n-
    269
    \n-
    270/*
    \n-
    271 * TDSERRNO is emitted by libtds to the client library's error handler
    \n-
    272 * (which may in turn call the client's error handler).
    \n-
    273 * These match the db-lib msgno, because the same values have the same meaning
    \n-
    274 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).
    \n-
    275 */
    \n-
    276typedef enum { TDSEOK = TDS_SUCCESS,
    \n-
    277 TDSEVERDOWN = 100,
    \n-
    278 TDSEINPROGRESS,
    \n-
    279 TDSEICONVIU = 2400,
    \n-
    280 TDSEICONVAVAIL = 2401,
    \n-
    281 TDSEICONVO = 2402,
    \n-
    282 TDSEICONVI = 2403,
    \n-
    283 TDSEICONV2BIG = 2404,
    \n-
    284 TDSEPORTINSTANCE = 2500,
    \n-
    285 TDSESYNC = 20001,
    \n-
    286 TDSEFCON = 20002,
    \n-
    287 TDSETIME = 20003,
    \n-
    288 TDSEREAD = 20004,
    \n-
    289 TDSEWRIT = 20006,
    \n-
    290 TDSESOCK = 20008,
    \n-
    291 TDSECONN = 20009,
    \n-
    292 TDSEMEM = 20010,
    \n-
    293 TDSEINTF = 20012, /* Server name not found in interface file */
    \n-
    294 TDSEUHST = 20013, /* Unknown host machine name. */
    \n-
    295 TDSEPWD = 20014,
    \n-
    296 TDSESEOF = 20017,
    \n-
    297 TDSERPND = 20019,
    \n-
    298 TDSEBTOK = 20020,
    \n-
    299 TDSEOOB = 20022,
    \n-
    300 TDSECLOS = 20056,
    \n-
    301 TDSEUSCT = 20058,
    \n-
    302 TDSEUTDS = 20146,
    \n-
    303 TDSEEUNR = 20185,
    \n-
    304 TDSECAP = 20203,
    \n-
    305 TDSENEG = 20210,
    \n-
    306 TDSEUMSG = 20212,
    \n-
    307 TDSECAPTYP = 20213,
    \n-
    308 TDSECONF = 20214,
    \n-
    309 TDSEBPROBADTYP = 20250,
    \n-
    310 TDSECLOSEIN = 20292
    \n-
    311} TDSERRNO;
    \n-
    312
    \n-
    313
    \n-
    314enum {
    \n-
    315 TDS_CUR_ISTAT_UNUSED = 0x00,
    \n-
    316 TDS_CUR_ISTAT_DECLARED = 0x01,
    \n-
    317 TDS_CUR_ISTAT_OPEN = 0x02,
    \n-
    318 TDS_CUR_ISTAT_CLOSED = 0x04,
    \n-
    319 TDS_CUR_ISTAT_RDONLY = 0x08,
    \n-
    320 TDS_CUR_ISTAT_UPDATABLE = 0x10,
    \n-
    321 TDS_CUR_ISTAT_ROWCNT = 0x20,
    \n-
    322 TDS_CUR_ISTAT_DEALLOC = 0x40
    \n-
    323};
    \n-
    324
    \n-
    325/* string types */
    \n-
    326#define TDS_NULLTERM -9
    \n-
    327
    \n-
    328
    \n-
    \n-
    329typedef union tds_option_arg
    \n-
    330{
    \n-
    331 TDS_TINYINT ti;
    \n-
    332 TDS_INT i;
    \n-
    333 TDS_CHAR *c;
    \n-\n-
    \n-
    335
    \n-
    336
    \n-
    337typedef enum tds_encryption_level {
    \n-
    338 TDS_ENCRYPTION_DEFAULT,
    \n-
    339 TDS_ENCRYPTION_OFF,
    \n-
    340 TDS_ENCRYPTION_REQUEST,
    \n-
    341 TDS_ENCRYPTION_REQUIRE
    \n-
    342} TDS_ENCRYPTION_LEVEL;
    \n-
    343
    \n-
    344/*
    \n-
    345 * TODO use system macros for optimization
    \n-
    346 * See mcrypt for reference and linux kernel source for optimization
    \n-
    347 * check if unaligned access and use fast write/read when implemented
    \n-
    348 */
    \n-
    349#define TDS_BYTE_SWAP16(value) \\
    \n-
    350 (((((uint16_t)value)<<8) & 0xFF00u) | \\
    \n-
    351 ((((uint16_t)value)>>8) & 0x00FFu))
    \n-
    352
    \n-
    353#define TDS_BYTE_SWAP32(value) \\
    \n-
    354 (((((uint32_t)value)<<24) & 0xFF000000u)| \\
    \n-
    355 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \\
    \n-
    356 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \\
    \n-
    357 ((((uint32_t)value)>>24) & 0x000000FFu))
    \n-
    358
    \n-
    359#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_TOKEN)
    \n-
    360
    \n-
    361enum {
    \n-
    362 TDS_TYPEFLAG_INVALID = 0,
    \n-
    363 TDS_TYPEFLAG_NULLABLE = 1,
    \n-
    364 TDS_TYPEFLAG_FIXED = 2,
    \n-
    365 TDS_TYPEFLAG_VARIABLE = 4,
    \n-
    366 TDS_TYPEFLAG_COLLATE = 8,
    \n-
    367 TDS_TYPEFLAG_ASCII = 16,
    \n-
    368 TDS_TYPEFLAG_UNICODE = 32,
    \n-
    369 TDS_TYPEFLAG_BINARY = 64,
    \n-
    370 TDS_TYPEFLAG_DATETIME = 128,
    \n-
    371 TDS_TYPEFLAG_NUMERIC = 256,
    \n-
    372 TDS_TYPEFLAG_VARIANT = 512,
    \n-
    373};
    \n-
    374
    \n-
    375extern const uint16_t tds_type_flags_ms[256];
    \n-
    376#if 0
    \n-
    377extern const uint16_t tds_type_flags_syb[256];
    \n-
    378extern const char *const tds_type_names[256];
    \n-
    379#endif
    \n-
    380
    \n-
    381#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)
    \n-
    382#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) != 0)
    \n-
    383#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
    \n-
    384#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIANT) != 0)
    \n-
    385
    \n-
    386
    \n-
    387#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)
    \n-
    388#define is_blob_col(x) ((x)->column_varint_size > 2)
    \n-
    389/* large type means it has a two byte size field */
    \n-
    390/* define is_large_type(x) (x>128) */
    \n-
    391#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)
    \n-
    393#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) != 0)
    \n-
    394#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
    \n-
    395#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != 0)
    \n-
    396#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)
    \n-
    397#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != 0)
    \n-
    398#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)
    \n-
    399#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))
    \n-
    400static inline
    \n-
    401bool is_tds_type_valid(int type)
    \n-
    402{
    \n-
    403 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;
    \n-
    404}
    \n-
    405
    \n-
    406
    \n-
    407#define TDS_MAX_CAPABILITY 32
    \n-
    408#define MAXPRECISION 77
    \n-
    409#define TDS_MAX_CONN 4096
    \n-
    410#define TDS_MAX_DYNID_LEN 30
    \n-
    411
    \n-
    412/* defaults to use if no others are found */
    \n-
    413#define TDS_DEF_SERVER "SYBASE"
    \n-
    414#define TDS_DEF_BLKSZ 512
    \n-
    415#define TDS_DEF_CHARSET "iso_1"
    \n-
    416#define TDS_DEF_LANG "us_english"
    \n-
    417#if TDS50
    \n-
    418#define TDS_DEFAULT_VERSION 0x500
    \n-
    419#define TDS_DEF_PORT 4000
    \n-
    420#elif TDS71
    \n-
    421#define TDS_DEFAULT_VERSION 0x701
    \n-
    422#define TDS_DEF_PORT 1433
    \n-
    423#elif TDS72
    \n-
    424#define TDS_DEFAULT_VERSION 0x702
    \n-
    425#define TDS_DEF_PORT 1433
    \n-
    426#elif TDS73
    \n-
    427#define TDS_DEFAULT_VERSION 0x703
    \n-
    428#define TDS_DEF_PORT 1433
    \n-
    429#elif TDS74
    \n-
    430#define TDS_DEFAULT_VERSION 0x704
    \n-
    431#define TDS_DEF_PORT 1433
    \n-
    432#else
    \n-
    433#define TDS_DEFAULT_VERSION 0x000
    \n-
    434#define TDS_DEF_PORT 1433
    \n-
    435#endif
    \n-
    436
    \n-
    437/* normalized strings from freetds.conf file */
    \n-
    438#define TDS_STR_VERSION "tds version"
    \n-
    439#define TDS_STR_BLKSZ "initial block size"
    \n-
    440#define TDS_STR_SWAPDT "swap broken dates"
    \n-
    441#define TDS_STR_DUMPFILE "dump file"
    \n-
    442#define TDS_STR_DEBUGLVL "debug level"
    \n-
    443#define TDS_STR_DEBUGFLAGS "debug flags"
    \n-
    444#define TDS_STR_TIMEOUT "timeout"
    \n-
    445#define TDS_STR_QUERY_TIMEOUT "query timeout"
    \n-
    446#define TDS_STR_CONNTIMEOUT "connect timeout"
    \n-
    447#define TDS_STR_HOSTNAME "hostname"
    \n-
    448#define TDS_STR_HOST "host"
    \n-
    449#define TDS_STR_PORT "port"
    \n-
    450#define TDS_STR_TEXTSZ "text size"
    \n-
    451/* for big endian hosts, obsolete, ignored */
    \n-
    452#define TDS_STR_EMUL_LE "emulate little endian"
    \n-
    453#define TDS_STR_CHARSET "charset"
    \n-
    454#define TDS_STR_CLCHARSET "client charset"
    \n-
    455#define TDS_STR_USE_UTF_16 "use utf-16"
    \n-
    456#define TDS_STR_LANGUAGE "language"
    \n-
    457#define TDS_STR_APPENDMODE "dump file append"
    \n-
    458#define TDS_STR_DATEFMT "date format"
    \n-
    459#define TDS_STR_INSTANCE "instance"
    \n-
    460#define TDS_STR_ASA_DATABASE "asa database"
    \n-
    461#define TDS_STR_DATABASE "database"
    \n-
    462#define TDS_STR_ENCRYPTION "encryption"
    \n-
    463#define TDS_STR_USENTLMV2 "use ntlmv2"
    \n-
    464#define TDS_STR_USELANMAN "use lanman"
    \n-
    465/* conf values */
    \n-
    466#define TDS_STR_ENCRYPTION_OFF "off"
    \n-
    467#define TDS_STR_ENCRYPTION_REQUEST "request"
    \n-
    468#define TDS_STR_ENCRYPTION_REQUIRE "require"
    \n-
    469/* Defines to enable optional GSSAPI delegation */
    \n-
    470#define TDS_GSSAPI_DELEGATION "enable gssapi delegation"
    \n-
    471/* Mutual authentication */
    \n-
    472#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication"
    \n-
    473/* Kerberos realm name */
    \n-
    474#define TDS_STR_REALM "realm"
    \n-
    475/* Kerberos SPN */
    \n-
    476#define TDS_STR_SPN "spn"
    \n-
    477/* CA file */
    \n-
    478#define TDS_STR_CAFILE "ca file"
    \n-
    479/* CRL file */
    \n-
    480#define TDS_STR_CRLFILE "crl file"
    \n-
    481/* check SSL hostname */
    \n-
    482#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname"
    \n-
    483/* database filename to attach on login (MSSQL) */
    \n-
    484#define TDS_STR_DBFILENAME "database filename"
    \n-
    485/* Application Intent MSSQL 2012 support */
    \n-
    486#define TDS_STR_READONLY_INTENT "read-only intent"
    \n-
    487/* configurable cipher suite to send to openssl's SSL_set_cipher_list() function */
    \n-
    488#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers"
    \n-
    489/* enable old TLS v1, required for instance if you are using a really old Windows XP */
    \n-
    490#define TDS_STR_ENABLE_TLS_V1 "enable tls v1"
    \n-
    491
    \n-
    492
    \n-
    493/* TODO do a better check for alignment than this */
    \n-
    \n-
    494typedef union
    \n-
    495{
    \n-
    496 void *p;
    \n-
    497 int i;
    \n-
    498 int64_t ui;
    \n-\n-
    \n-
    500
    \n-
    501#define TDS_ALIGN_SIZE sizeof(tds_align_struct)
    \n-
    502
    \n-
    \n-\n-
    504{
    \n-
    505 unsigned char type;
    \n-
    506 unsigned char len; /* always sizeof(values) */
    \n-
    507 unsigned char values[TDS_MAX_CAPABILITY/2-2];
    \n-\n-
    \n-
    509
    \n-
    \n-
    510typedef struct tds_capabilities
    \n-
    511{
    \n-
    512 TDS_CAPABILITY_TYPE types[2];
    \n-\n-
    \n-
    514
    \n-
    515#define TDS_MAX_LOGIN_STR_SZ 128
    \n-
    \n-
    516typedef struct tds_login
    \n-
    517{
    \n-\n-
    519 int port;
    \n-
    520 TDS_USMALLINT tds_version;
    \n-
    521 int block_size;
    \n-
    522 DSTR language; /* e.g. us-english */
    \n-\n-
    524 TDS_INT connect_timeout;
    \n-
    525 DSTR client_host_name;
    \n-
    526 DSTR server_host_name;
    \n-\n-\n-\n-\n-\n-
    532 DSTR openssl_ciphers;
    \n-
    533 DSTR app_name;
    \n-\n-\n-\n-
    538 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */
    \n-
    539 TDS_TINYINT encryption_level;
    \n-
    540
    \n-
    541 TDS_INT query_timeout;
    \n-
    542 TDS_CAPABILITIES capabilities;
    \n-
    543 DSTR client_charset;
    \n-
    544 DSTR database;
    \n-
    545
    \n-
    546 struct addrinfo *ip_addrs;
    \n-
    547 DSTR instance_name;
    \n-
    548 DSTR dump_file;
    \n-
    549 int debug_flags;
    \n-
    550 int text_size;
    \n-
    551 DSTR routing_address;
    \n-
    552 uint16_t routing_port;
    \n-
    553
    \n-
    554 unsigned char option_flag2;
    \n-
    555
    \n-
    556 unsigned int bulk_copy:1;
    \n-
    557 unsigned int suppress_language:1;
    \n-
    558 unsigned int gssapi_use_delegation:1;
    \n-
    559 unsigned int mutual_authentication:1;
    \n-
    560 unsigned int use_ntlmv2:1;
    \n-
    561 unsigned int use_ntlmv2_specified:1;
    \n-
    562 unsigned int use_lanman:1;
    \n-
    563 unsigned int mars:1;
    \n-
    564 unsigned int use_utf16:1;
    \n-
    565 unsigned int use_new_password:1;
    \n-
    566 unsigned int valid_configuration:1;
    \n-
    567 unsigned int check_ssl_hostname:1;
    \n-
    568 unsigned int readonly_intent:1;
    \n-
    569 unsigned int enable_tls_v1:1;
    \n-
    570 unsigned int server_is_valid:1;
    \n-
    571} TDSLOGIN;
    \n-
    \n-
    572
    \n-
    \n-
    573typedef struct tds_headers
    \n-
    574{
    \n-
    575 const char *qn_options;
    \n-
    576 const char *qn_msgtext;
    \n-
    577 TDS_INT qn_timeout;
    \n-
    578 /* TDS 7.4+: trace activity ID char[20] */
    \n-
    579} TDSHEADERS;
    \n-
    \n-
    580
    \n-
    \n-
    581typedef struct tds_locale
    \n-
    582{
    \n-
    583 char *language;
    \n-
    584 char *server_charset;
    \n-
    585 char *date_fmt;
    \n-
    586} TDSLOCALE;
    \n-
    \n-
    587
    \n-
    \n-
    592typedef struct tds_blob
    \n-
    593{
    \n-
    594 TDS_CHAR *textvalue;
    \n-
    595 TDS_CHAR textptr[16];
    \n-
    596 TDS_CHAR timestamp[8];
    \n-
    597 unsigned char valid_ptr;
    \n-\n-
    \n-
    599
    \n-
    \n-
    603typedef struct tds_variant
    \n-
    604{
    \n-
    605 /* this MUST have same position and place of textvalue in tds_blob */
    \n-
    606 TDS_CHAR *data;
    \n-
    607 TDS_INT size;
    \n-
    608 TDS_INT data_len;
    \n-
    609 TDS_SERVER_TYPE type;
    \n-
    610 TDS_UCHAR collation[5];
    \n-\n-
    \n-
    612
    \n-
    \n-
    617typedef struct tds_encoding
    \n-
    618{
    \n-
    620 const char *name;
    \n-
    621 unsigned char min_bytes_per_char;
    \n-
    622 unsigned char max_bytes_per_char;
    \n-
    624 unsigned char canonic;
    \n-\n-
    \n-
    626
    \n-
    \n-
    627typedef struct tds_bcpcoldata
    \n-
    628{
    \n-
    629 TDS_UCHAR *data;
    \n-
    630 TDS_INT datalen;
    \n-
    631 bool is_null;
    \n-
    632} BCPCOLDATA;
    \n-
    \n-
    633
    \n-
    634
    \n-
    635typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);
    \n-
    636typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);
    \n-
    637typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);
    \n-
    638typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);
    \n-
    639typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);
    \n-
    640typedef int tds_func_check(const TDSCOLUMN *col);
    \n-
    641
    \n-
    \n-
    642typedef struct tds_column_funcs
    \n-
    643{
    \n-
    644 tds_func_get_info *get_info;
    \n-
    645 tds_func_get_data *get_data;
    \n-
    646 tds_func_row_len *row_len;
    \n-
    652 tds_func_put_info *put_info;
    \n-
    662 tds_func_put_data *put_data;
    \n-
    663#if ENABLE_EXTRA_CHECKS
    \n-
    678 tds_func_check *check;
    \n-
    679#endif
    \n-
    680#if 0
    \n-
    681 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);
    \n-
    682#endif
    \n-\n-
    \n-
    684
    \n-
    \n-\n-
    689{
    \n-
    690 const TDSCOLUMNFUNCS *funcs;
    \n-
    691 TDS_INT column_usertype;
    \n-
    692 TDS_INT column_flags;
    \n-
    693
    \n-
    694 TDS_INT column_size;
    \n-
    696 TDS_SERVER_TYPE column_type;
    \n-
    701 TDS_TINYINT column_varint_size;
    \n-
    703 TDS_TINYINT column_prec;
    \n-
    704 TDS_TINYINT column_scale;
    \n-
    706 struct
    \n-
    707 {
    \n-
    708 TDS_SERVER_TYPE column_type;
    \n-
    709 TDS_INT column_size;
    \n-
    710 } on_server;
    \n-
    711
    \n-\n-
    714 DSTR table_name;
    \n-
    715 DSTR column_name;
    \n-
    716 DSTR table_column_name;
    \n-
    717
    \n-
    718 unsigned char *column_data;
    \n-
    719 void (*column_data_free)(struct tds_column *column);
    \n-
    720 unsigned char column_nullable:1;
    \n-
    721 unsigned char column_writeable:1;
    \n-
    722 unsigned char column_identity:1;
    \n-
    723 unsigned char column_key:1;
    \n-
    724 unsigned char column_hidden:1;
    \n-
    725 unsigned char column_output:1;
    \n-
    726 unsigned char column_timestamp:1;
    \n-
    727 unsigned char column_computed:1;
    \n-
    728 TDS_UCHAR column_collation[5];
    \n-
    729
    \n-
    730 /* additional fields flags for compute results */
    \n-
    731 TDS_SMALLINT column_operand;
    \n-
    732 TDS_TINYINT column_operator;
    \n-
    733
    \n-
    734 /* FIXME this is data related, not column */
    \n-\n-
    737
    \n-
    738 /* related to binding or info stored by client libraries */
    \n-
    739 /* FIXME find a best place to store these data, some are unused */
    \n-
    740 TDS_SMALLINT column_bindtype;
    \n-
    741 TDS_SMALLINT column_bindfmt;
    \n-
    742 TDS_UINT column_bindlen;
    \n-
    743 TDS_SMALLINT *column_nullbind;
    \n-
    744 TDS_CHAR *column_varaddr;
    \n-
    745 TDS_INT *column_lenbind;
    \n-
    746 TDS_INT column_textpos;
    \n-
    747 TDS_INT column_text_sqlgetdatapos;
    \n-
    748 TDS_CHAR column_text_sqlputdatainfo;
    \n-
    749 unsigned char column_iconv_left;
    \n-
    750 char column_iconv_buf[9];
    \n-
    751
    \n-
    752 BCPCOLDATA *bcp_column_data;
    \n-\n-
    762 TDS_INT bcp_term_len;
    \n-
    763 TDS_CHAR *bcp_terminator;
    \n-
    764};
    \n-
    \n-
    765
    \n-
    766
    \n-
    \n-
    768typedef struct tds_result_info
    \n-
    769{
    \n-
    770 /* TODO those fields can became a struct */
    \n-
    771 TDSCOLUMN **columns;
    \n-
    772 TDS_USMALLINT num_cols;
    \n-
    773 TDS_USMALLINT computeid;
    \n-
    774 TDS_INT ref_count;
    \n-
    775 TDSSOCKET *attached_to;
    \n-
    776 unsigned char *current_row;
    \n-
    777 void (*row_free)(struct tds_result_info* result, unsigned char *row);
    \n-
    778 TDS_INT row_size;
    \n-
    779
    \n-
    780 TDS_SMALLINT *bycolumns;
    \n-
    781 TDS_USMALLINT by_cols;
    \n-
    782 bool rows_exist;
    \n-
    783 /* TODO remove ?? used only in dblib */
    \n-
    784 bool more_results;
    \n-\n-
    \n-
    786
    \n-
    \n-
    788typedef enum tds_states
    \n-
    789{
    \n-\n-\n-\n-\n-\n-
    795 TDS_DEAD
    \n-\n-
    \n-
    797
    \n-
    798typedef enum tds_operations
    \n-
    799{
    \n-
    800 TDS_OP_NONE = 0,
    \n-
    801
    \n-
    802 /* mssql operations */
    \n-
    803 TDS_OP_CURSOR = TDS_SP_CURSOR,
    \n-
    804 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,
    \n-
    805 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,
    \n-
    806 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,
    \n-
    807 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,
    \n-
    808 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,
    \n-
    809 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,
    \n-
    810 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,
    \n-
    811 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,
    \n-
    812 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,
    \n-
    813 TDS_OP_PREPARE = TDS_SP_PREPARE,
    \n-
    814 TDS_OP_EXECUTE = TDS_SP_EXECUTE,
    \n-
    815 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,
    \n-
    816 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,
    \n-
    817 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,
    \n-
    818
    \n-
    819 /* sybase operations */
    \n-
    820 TDS_OP_DYN_DEALLOC = 100,
    \n-
    821} TDS_OPERATION;
    \n-
    822
    \n-
    823#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)
    \n-
    824#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)
    \n-
    825#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)
    \n-
    826#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)
    \n-
    827#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)
    \n-
    828#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)
    \n-
    829#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)
    \n-
    830#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)
    \n-
    831#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)
    \n-
    832
    \n-
    833#define TDS_DBGFLAG_FUNC 0x80
    \n-
    834#define TDS_DBGFLAG_INFO2 0x40
    \n-
    835#define TDS_DBGFLAG_INFO1 0x20
    \n-
    836#define TDS_DBGFLAG_NETWORK 0x10
    \n-
    837#define TDS_DBGFLAG_WARN 0x08
    \n-
    838#define TDS_DBGFLAG_ERROR 0x04
    \n-
    839#define TDS_DBGFLAG_SEVERE 0x02
    \n-
    840#define TDS_DBGFLAG_ALL 0xfff
    \n-
    841#define TDS_DBGFLAG_LOGIN 0x0800
    \n-
    842#define TDS_DBGFLAG_HEADER 0x0400
    \n-
    843#define TDS_DBGFLAG_PID 0x1000
    \n-
    844#define TDS_DBGFLAG_TIME 0x2000
    \n-
    845#define TDS_DBGFLAG_SOURCE 0x4000
    \n-
    846#define TDS_DBGFLAG_THREAD 0x8000
    \n-
    847
    \n-
    848#if 0
    \n-
    854enum TDS_DBG_LOG_STATE
    \n-
    855{
    \n-
    856 TDS_DBG_LOGIN = (1 << 0)
    \n-
    858 , TDS_DBG_API = (1 << 1)
    \n-
    859 , TDS_DBG_ASYNC = (1 << 2)
    \n-
    860 , TDS_DBG_DIAG = (1 << 3)
    \n-
    861 , TDS_DBG_error = (1 << 4)
    \n-
    862 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */
    \n-
    863 /* Log FreeTDS runtime/logic error occurs. */
    \n-
    864 , TDS_DBG_PACKET = (1 << 5)
    \n-
    865 , TDS_DBG_LIBTDS = (1 << 6)
    \n-
    866 , TDS_DBG_CONFIG = (1 << 7)
    \n-
    867 , TDS_DBG_DEFAULT = 0xFE
    \n-
    868};
    \n-
    869#endif
    \n-
    870
    \n-
    871typedef struct tds_result_info TDSCOMPUTEINFO;
    \n-
    872
    \n-\n-
    874
    \n-
    \n-
    875typedef struct tds_message
    \n-
    876{
    \n-
    877 TDS_CHAR *server;
    \n-
    878 TDS_CHAR *message;
    \n-
    879 TDS_CHAR *proc_name;
    \n-
    880 TDS_CHAR *sql_state;
    \n-
    881 TDS_INT msgno;
    \n-
    882 TDS_INT line_number;
    \n-
    883 /* -1 .. 255 */
    \n-
    884 TDS_SMALLINT state;
    \n-
    885 TDS_TINYINT priv_msg_type;
    \n-
    886 TDS_TINYINT severity;
    \n-
    887 /* for library-generated errors */
    \n-
    888 int oserr;
    \n-
    889} TDSMESSAGE;
    \n-
    \n-
    890
    \n-
    \n-
    891typedef struct tds_upd_col
    \n-
    892{
    \n-
    893 struct tds_upd_col *next;
    \n-
    894 TDS_INT colnamelength;
    \n-
    895 char * columnname;
    \n-
    896} TDSUPDCOL;
    \n-
    \n-
    897
    \n-
    898typedef enum {
    \n-
    899 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */
    \n-
    900 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */
    \n-
    901 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */
    \n-
    902 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */
    \n-
    903} TDS_CURSOR_STATE;
    \n-
    904
    \n-
    \n-
    905typedef struct tds_cursor_status
    \n-
    906{
    \n-
    907 TDS_CURSOR_STATE declare;
    \n-
    908 TDS_CURSOR_STATE cursor_row;
    \n-
    909 TDS_CURSOR_STATE open;
    \n-
    910 TDS_CURSOR_STATE fetch;
    \n-
    911 TDS_CURSOR_STATE close;
    \n-
    912 TDS_CURSOR_STATE dealloc;
    \n-\n-
    \n-
    914
    \n-
    915typedef enum tds_cursor_operation
    \n-
    916{
    \n-
    917 TDS_CURSOR_POSITION = 0,
    \n-
    918 TDS_CURSOR_UPDATE = 1,
    \n-
    919 TDS_CURSOR_DELETE = 2,
    \n-
    920 TDS_CURSOR_INSERT = 4
    \n-
    921} TDS_CURSOR_OPERATION;
    \n-
    922
    \n-
    923typedef enum tds_cursor_fetch
    \n-
    924{
    \n-
    925 TDS_CURSOR_FETCH_NEXT = 1,
    \n-
    926 TDS_CURSOR_FETCH_PREV,
    \n-
    927 TDS_CURSOR_FETCH_FIRST,
    \n-
    928 TDS_CURSOR_FETCH_LAST,
    \n-
    929 TDS_CURSOR_FETCH_ABSOLUTE,
    \n-
    930 TDS_CURSOR_FETCH_RELATIVE
    \n-
    931} TDS_CURSOR_FETCH;
    \n-
    932
    \n-
    \n-
    936typedef struct tds_cursor
    \n-
    937{
    \n-
    938 struct tds_cursor *next;
    \n-
    939 TDS_INT ref_count;
    \n-\n-
    941 TDS_INT cursor_id;
    \n-
    942 TDS_TINYINT options;
    \n-\n-
    947 char *query;
    \n-
    948 /* TODO for updatable columns */
    \n-
    949 /* TDS_TINYINT number_upd_cols; */
    \n-
    950 /* TDSUPDCOL *cur_col_list; */
    \n-
    951 TDS_INT cursor_rows;
    \n-
    952 /* TDSPARAMINFO *params; */
    \n-\n-
    954 TDS_USMALLINT srv_status;
    \n-
    955 TDSRESULTINFO *res_info;
    \n-
    956 TDS_INT type, concurrency;
    \n-\n-
    \n-
    958
    \n-
    \n-
    962typedef struct tds_env
    \n-
    963{
    \n-\n-
    966 char *language;
    \n-
    968 char *charset;
    \n-
    970 char *database;
    \n-\n-
    \n-
    972
    \n-
    \n-
    976typedef struct tds_dynamic
    \n-
    977{
    \n-\n-
    979 TDS_INT ref_count;
    \n-
    981 TDS_INT num_id;
    \n-
    987 char id[30];
    \n-
    993 TDS_TINYINT emulated;
    \n-\n-
    998 /* int dyn_state; */ /* TODO use it */
    \n-\n-\n-
    1009 char *query;
    \n-\n-
    \n-
    1011
    \n-
    1012typedef enum {
    \n-
    1013 TDS_MULTIPLE_QUERY,
    \n-
    1014 TDS_MULTIPLE_EXECUTE,
    \n-
    1015 TDS_MULTIPLE_RPC
    \n-
    1016} TDS_MULTIPLE_TYPE;
    \n-
    1017
    \n-
    \n-
    1018typedef struct tds_multiple
    \n-
    1019{
    \n-
    1020 TDS_MULTIPLE_TYPE type;
    \n-
    1021 unsigned int flags;
    \n-
    1022} TDSMULTIPLE;
    \n-
    \n-
    1023
    \n-
    1024/* forward declaration */
    \n-
    1025typedef struct tds_context TDSCONTEXT;
    \n-
    1026typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n-
    1027
    \n-
    \n-\n-
    1029{
    \n-
    1030 TDSLOCALE *locale;
    \n-
    1031 void *parent;
    \n-
    1032 /* handlers */
    \n-
    1033 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n-
    1034 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n-
    1035 int (*int_handler) (void *);
    \n-
    1036 bool money_use_2_digits;
    \n-
    1037};
    \n-
    \n-
    1038
    \n-
    1039enum TDS_ICONV_ENTRY
    \n-
    1040{
    \n-
    1041 client2ucs2
    \n-
    1042 , client2server_chardata
    \n-
    1043 , initial_char_conv_count /* keep last */
    \n-
    1044};
    \n-
    1045
    \n-
    \n-\n-
    1047{
    \n-
    1048 uint8_t *packet;
    \n-
    1049 int packet_len;
    \n-
    1050 /* TDS_MSG_TOKEN type, for TDS5 */
    \n-
    1051 uint16_t msg_type;
    \n-
    1052 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);
    \n-
    1053 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, size_t len);
    \n-\n-
    \n-
    1055
    \n-
    \n-
    1056typedef struct tds_packet
    \n-
    1057{
    \n-
    1058 struct tds_packet *next;
    \n-
    1059 uint16_t sid;
    \n-
    1060
    \n-
    1061#if ENABLE_ODBC_MARS
    \n-
    1065 uint8_t data_start;
    \n-
    1066#endif
    \n-
    1067
    \n-
    1071 unsigned data_len;
    \n-
    1072 unsigned capacity;
    \n-
    1073 unsigned char buf[1];
    \n-
    1074} TDSPACKET;
    \n-
    \n-
    1075
    \n-
    1076#if ENABLE_ODBC_MARS
    \n-
    1077#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while(0)
    \n-
    1078#define tds_packet_get_data_start(pkt) ((pkt)->data_start)
    \n-
    1079#else
    \n-
    1080#define tds_packet_zero_data_start(pkt) do { } while(0)
    \n-
    1081#define tds_packet_get_data_start(pkt) 0
    \n-
    1082#endif
    \n-
    1083
    \n-
    \n-
    1084typedef struct tds_poll_wakeup
    \n-
    1085{
    \n-
    1086 TDS_SYS_SOCKET s_signal, s_signaled;
    \n-\n-
    \n-
    1088
    \n-
    1089/* field related to connection */
    \n-
    \n-\n-
    1091{
    \n-
    1092 TDS_USMALLINT tds_version;
    \n-\n-
    1094 char *product_name;
    \n-
    1095
    \n-
    1096 TDS_SYS_SOCKET s;
    \n-
    1097 TDSPOLLWAKEUP wakeup;
    \n-
    1098 const TDSCONTEXT *tds_ctx;
    \n-
    1099
    \n-\n-
    1102
    \n-\n-\n-
    1113
    \n-
    1114 int char_conv_count;
    \n-
    1115 TDSICONV **char_convs;
    \n-
    1116
    \n-
    1117 TDS_UCHAR collation[5];
    \n-
    1118 TDS_UCHAR tds72_transaction[8];
    \n-
    1119
    \n-
    1120 TDS_CAPABILITIES capabilities;
    \n-
    1121 unsigned int use_iconv:1;
    \n-
    1122 unsigned int tds71rev1:1;
    \n-
    1123 unsigned int pending_close:1;
    \n-
    1124 unsigned int encrypt_single_packet:1;
    \n-
    1125#if ENABLE_ODBC_MARS
    \n-
    1126 unsigned int mars:1;
    \n-
    1127
    \n-
    1128 TDSSOCKET *in_net_tds;
    \n-
    1129 TDSPACKET *packets;
    \n-
    1130 TDSPACKET *recv_packet;
    \n-
    1131 TDSPACKET *send_packets;
    \n-
    1132 unsigned send_pos, recv_pos;
    \n-
    1133
    \n-
    1134#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)
    \n-
    1135#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)
    \n-
    1136 struct tds_socket **sessions;
    \n-
    1137 unsigned num_sessions;
    \n-
    1138#endif
    \n-
    1139 tds_mutex list_mtx;
    \n-
    1140
    \n-
    1141 unsigned num_cached_packets;
    \n-
    1142 TDSPACKET *packet_cache;
    \n-
    1143
    \n-
    1144 int spid;
    \n-
    1145 int client_spid;
    \n-
    1146
    \n-
    1147 void *tls_session;
    \n-
    1148#if defined(HAVE_GNUTLS)
    \n-
    1149 void *tls_credentials;
    \n-
    1150#elif defined(HAVE_OPENSSL)
    \n-
    1151 void *tls_ctx;
    \n-
    1152#else
    \n-
    1153 void *tls_dummy;
    \n-
    1154#endif
    \n-
    1155 TDSAUTHENTICATION *authentication;
    \n-
    1156 char *server;
    \n-
    1157};
    \n-
    \n-
    1158
    \n-
    \n-\n-
    1163{
    \n-
    1164#if ENABLE_ODBC_MARS
    \n-
    1165 TDSCONNECTION *conn;
    \n-
    1166#else
    \n-
    1167 TDSCONNECTION conn[1];
    \n-
    1168#endif
    \n-
    1169
    \n-
    1170 void *parent;
    \n-
    1171
    \n-
    1177 unsigned char *in_buf;
    \n-
    1178
    \n-
    1185 unsigned char *out_buf;
    \n-
    1186
    \n-
    1191 unsigned int out_buf_max;
    \n-
    1192 unsigned in_pos;
    \n-
    1193 unsigned out_pos;
    \n-
    1194 unsigned in_len;
    \n-
    1195 unsigned char in_flag;
    \n-
    1196 unsigned char out_flag;
    \n-
    1198 unsigned frozen;
    \n-\n-
    1204
    \n-
    1205#if ENABLE_ODBC_MARS
    \n-
    1210 uint16_t sid;
    \n-
    1211
    \n-
    1216 tds_condition packet_cond;
    \n-
    1217
    \n-
    1222 TDSPACKET *sending_packet;
    \n-
    1223 TDS_UINT recv_seq;
    \n-
    1224 TDS_UINT send_seq;
    \n-
    1225 TDS_UINT recv_wnd;
    \n-
    1226 TDS_UINT send_wnd;
    \n-
    1227#endif
    \n-
    1228 /* packet we received */
    \n-
    1229 TDSPACKET *recv_packet;
    \n-\n-
    1232
    \n-\n-
    1239 TDSRESULTINFO *res_info;
    \n-
    1240 TDS_UINT num_comp_info;
    \n-
    1241 TDSCOMPUTEINFO **comp_info;
    \n-
    1242 TDSPARAMINFO *param_info;
    \n-\n-\n-\n-
    1246 bool in_row;
    \n-
    1247 volatile
    \n-
    1248 unsigned char in_cancel;
    \n-
    1250 TDS_INT ret_status;
    \n-
    1251 TDS_STATE state;
    \n-
    1252
    \n-
    1253 TDS_INT query_timeout;
    \n-
    1254 TDS_INT8 rows_affected;
    \n-\n-\n-
    1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char *newval);
    \n-
    1261 TDS_OPERATION current_op;
    \n-
    1262
    \n-
    1263 int option_value;
    \n-
    1264 tds_mutex wire_mtx;
    \n-
    1265};
    \n-
    \n-
    1266
    \n-
    1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)
    \n-
    1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while(0)
    \n-
    1269#define tds_get_parent(tds) ((tds)->parent)
    \n-
    1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)
    \n-
    1271#define tds_get_s(tds) ((tds)->conn->s)
    \n-
    1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)
    \n-
    1273
    \n-
    1274
    \n-
    1275/* config.c */
    \n-\n-
    1277typedef void (*TDSCONFPARSE) (const char *option, const char *value, void *param);
    \n-
    1278bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param);
    \n-
    1279bool tds_read_conf_file(TDSLOGIN * login, const char *server);
    \n-
    1280void tds_parse_conf_section(const char *option, const char *value, void *param);
    \n-
    1281TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE * locale);
    \n-
    1282void tds_fix_login(TDSLOGIN* login);
    \n-
    1283TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);
    \n-
    1284struct addrinfo *tds_lookup_host(const char *servername);
    \n-
    1285TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr);
    \n-
    1286const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int namemax);
    \n-
    1287char *tds_get_home_file(const char *file);
    \n-
    1288
    \n-
    1289TDSRET tds_set_interfaces_file_loc(const char *interfloc);
    \n-
    1290extern const char STD_DATETIME_FMT[];
    \n-
    1291int tds_parse_boolean(const char *value, int default_value);
    \n-
    1292int tds_config_boolean(const char *option, const char *value, TDSLOGIN * login);
    \n-
    1293
    \n-\n-
    1295TDSRET tds_alloc_row(TDSRESULTINFO * res_info);
    \n-
    1296TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);
    \n-
    1297BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);
    \n-
    1298TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);
    \n-
    1299/*@observer@*/ const char *tds_prtype(int token);
    \n-
    1300int tds_get_varint_size(TDSCONNECTION * conn, int datatype);
    \n-
    1301TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int usertype);
    \n-
    1302
    \n-
    1303
    \n-
    1304/* iconv.c */
    \n-
    1305TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_utf16);
    \n-
    1306void tds_iconv_close(TDSCONNECTION * conn);
    \n-
    1307void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);
    \n-
    1308void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
    \n-
    1309int tds_iconv_alloc(TDSCONNECTION * conn);
    \n-
    1310void tds_iconv_free(TDSCONNECTION * conn);
    \n-
    1311TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
    \n-
    1312
    \n-
    1313
    \n-
    1314/* mem.c */
    \n-
    1315void tds_free_socket(TDSSOCKET * tds);
    \n-
    1316void tds_free_all_results(TDSSOCKET * tds);
    \n-
    1317void tds_free_results(TDSRESULTINFO * res_info);
    \n-
    1318void tds_free_param_results(TDSPARAMINFO * param_info);
    \n-
    1319void tds_free_param_result(TDSPARAMINFO * param_info);
    \n-
    1320void tds_free_msg(TDSMESSAGE * message);
    \n-
    1321void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);
    \n-
    1322void tds_release_cursor(TDSCURSOR **pcursor);
    \n-
    1323void tds_free_bcp_column_data(BCPCOLDATA * coldata);
    \n-
    1324TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);
    \n-
    1325TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT num_cols, TDS_USMALLINT by_cols);
    \n-
    1326TDSCONTEXT *tds_alloc_context(void * parent);
    \n-
    1327void tds_free_context(TDSCONTEXT * locale);
    \n-\n-\n-
    1330void tds_release_dynamic(TDSDYNAMIC ** dyn);
    \n-
    1331static inline
    \n-
    1332void tds_release_cur_dyn(TDSSOCKET * tds)
    \n-
    1333{
    \n-\n-
    1335}
    \n-
    1336void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);
    \n-
    1337void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);
    \n-
    1338TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);
    \n-
    1339char *tds_alloc_client_sqlstate(int msgno);
    \n-
    1340char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);
    \n-
    1341TDSLOGIN *tds_alloc_login(int use_environment);
    \n-
    1342TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);
    \n-
    1343void tds_free_login(TDSLOGIN * login);
    \n-
    1344TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);
    \n-
    1345TDSLOCALE *tds_alloc_locale(void);
    \n-
    1346void *tds_alloc_param_data(TDSCOLUMN * curparam);
    \n-
    1347void tds_free_locale(TDSLOCALE * locale);
    \n-
    1348TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen);
    \n-
    1349void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);
    \n-
    1350TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);
    \n-
    1351TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);
    \n-
    1352void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);
    \n-\n-
    1354void * tds_realloc(void **pp, size_t new_size);
    \n-
    1355#define TDS_RESIZE(p, n_elem) \\
    \n-
    1356 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))
    \n-
    1357#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))
    \n-
    1358#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))
    \n-
    1359
    \n-
    1360TDSPACKET *tds_alloc_packet(void *buf, unsigned len);
    \n-
    1361TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);
    \n-
    1362void tds_free_packets(TDSPACKET *packet);
    \n-
    1363TDSBCPINFO *tds_alloc_bcpinfo(void);
    \n-
    1364void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);
    \n-
    1365void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);
    \n-
    1366
    \n-
    1367
    \n-
    1368/* login.c */
    \n-
    1369void tds_set_packet(TDSLOGIN * tds_login, int packet_size);
    \n-
    1370void tds_set_port(TDSLOGIN * tds_login, int port);
    \n-
    1371bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;
    \n-
    1372void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);
    \n-
    1373bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;
    \n-
    1374bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;
    \n-
    1375bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;
    \n-
    1376bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;
    \n-
    1377bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;
    \n-
    1378bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_WUR;
    \n-
    1379bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;
    \n-
    1380void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver);
    \n-
    1381int tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n-
    1382
    \n-
    1383
    \n-
    1384/* query.c */
    \n-
    1385void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);
    \n-
    1386
    \n-
    1387TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);
    \n-
    1388TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
    \n-
    1389TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);
    \n-
    1390TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
    \n-
    1391TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
    \n-
    1392TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
    \n-
    1393TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);
    \n-
    1394TDSRET tds_send_cancel(TDSSOCKET * tds);
    \n-
    1395const char *tds_next_placeholder(const char *start);
    \n-
    1396int tds_count_placeholders(const char *query);
    \n-\n-
    1398TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);
    \n-
    1399TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);
    \n-
    1400TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * params, TDSHEADERS * head);
    \n-
    1401TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);
    \n-
    1402TDSRET tds_submit_begin_tran(TDSSOCKET *tds);
    \n-
    1403TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont);
    \n-
    1404TDSRET tds_submit_commit(TDSSOCKET *tds, int cont);
    \n-
    1405TDSRET tds_disconnect(TDSSOCKET * tds);
    \n-
    1406size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
    \n-
    1407size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
    \n-
    1408size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int len);
    \n-
    1409const char *tds_skip_comment(const char *s);
    \n-
    1410const char *tds_skip_quoted(const char *s);
    \n-
    1411size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);
    \n-
    1412const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const char *s, int len, size_t *out_len);
    \n-
    1413void tds_convert_string_free(const char *original, const char *converted);
    \n-
    1414#if !ENABLE_EXTRA_CHECKS
    \n-
    1415#define tds_convert_string_free(original, converted) \\
    \n-
    1416 do { if (original != converted) free((char*) converted); } while(0)
    \n-
    1417#endif
    \n-
    1418TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char *out);
    \n-
    1419
    \n-
    1420TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, int *send);
    \n-
    1421TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, int *send);
    \n-
    1422TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, int *send);
    \n-
    1423TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);
    \n-
    1424TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_UINT * row_number, TDS_UINT * row_count);
    \n-
    1425TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n-
    1426TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n-\n-
    1428TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);
    \n-
    1429TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n-
    1430
    \n-
    1431TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS * head);
    \n-
    1432TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);
    \n-
    1433TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO * params);
    \n-
    1434TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC * dyn);
    \n-
    1435
    \n-
    1436
    \n-
    1437/* token.c */
    \n-
    1438TDSRET tds_process_cancel(TDSSOCKET * tds);
    \n-
    1439int tds_get_token_size(int marker);
    \n-\n-\n-
    1442int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,
    \n-
    1443 TDS_INT * tds_argsize);
    \n-
    1444TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, /*@out@*/ int *done_flags, unsigned flag);
    \n-
    1445
    \n-
    1446
    \n-
    1447/* data.c */
    \n-
    1448void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
    \n-
    1449void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
    \n-
    1450#ifdef WORDS_BIGENDIAN
    \n-
    1451void tds_swap_datatype(int coltype, void *b);
    \n-
    1452#endif
    \n-
    1453
    \n-
    1454
    \n-
    1455/* tds_convert.c */
    \n-
    1456TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);
    \n-
    1457TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize);
    \n-
    1458extern const char tds_hex_digits[];
    \n-
    1459
    \n-
    1460
    \n-
    1461/* write.c */
    \n-
    1462int tds_init_write_buf(TDSSOCKET * tds);
    \n-
    1463int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);
    \n-
    1464int tds_put_string(TDSSOCKET * tds, const char *buf, int len);
    \n-
    1465int tds_put_int(TDSSOCKET * tds, TDS_INT i);
    \n-
    1466int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);
    \n-
    1467int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);
    \n-
    1469#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)
    \n-
    1470int tds_put_byte(TDSSOCKET * tds, unsigned char c);
    \n-
    1471TDSRET tds_flush_packet(TDSSOCKET * tds);
    \n-
    1472int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int ssize);
    \n-
    1473
    \n-
    1474
    \n-
    1475/* read.c */
    \n-
    1476unsigned char tds_get_byte(TDSSOCKET * tds);
    \n-
    1477void tds_unget_byte(TDSSOCKET * tds);
    \n-
    1478unsigned char tds_peek(TDSSOCKET * tds);
    \n-
    1479TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);
    \n-
    1480#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))
    \n-
    1481TDS_UINT tds_get_uint(TDSSOCKET * tds);
    \n-
    1482#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))
    \n-
    1483TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);
    \n-
    1484#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))
    \n-
    1485size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_t dest_size);
    \n-
    1486TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, TDSCOLUMN * curcol);
    \n-
    1487bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n);
    \n-
    1488int tds_get_size_by_type(TDS_SERVER_TYPE servertype);
    \n-
    1489DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);
    \n-
    1490
    \n-
    1491
    \n-
    1492/* util.c */
    \n-
    1493int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int errnum);
    \n-\n-
    1495void tds_swap_bytes(void *buf, int bytes);
    \n-
    1496unsigned int tds_gettime_ms(void);
    \n-
    1497char *tds_strndup(const void *s, TDS_INTPTR len);
    \n-
    1498
    \n-
    1499
    \n-
    1500/* log.c */
    \n-
    \n-
    1501typedef struct tdsdump_off_item {
    \n-
    1502 struct tdsdump_off_item *next;
    \n-
    1503 tds_thread_id thread_id;
    \n-\n-
    \n-
    1505void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);
    \n-
    1506void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);
    \n-
    1507int tdsdump_isopen(void);
    \n-
    1508#include <freetds/popvis.h>
    \n-
    1509int tdsdump_open(const char *filename);
    \n-
    1510#include <freetds/pushvis.h>
    \n-
    1511void tdsdump_close(void);
    \n-
    1512void tdsdump_dump_buf(const char* file, unsigned int level_line, const char *msg, const void *buf, size_t length);
    \n-
    1513void tdsdump_col(const TDSCOLUMN *col);
    \n-
    1514#undef tdsdump_log
    \n-
    1515void tdsdump_log(const char* file, unsigned int level_line, const char *fmt, ...)
    \n-
    1516#if defined(__GNUC__) && __GNUC__ >= 2
    \n-
    1517#if defined(__MINGW32__)
    \n-
    1518 __attribute__ ((__format__ (ms_printf, 3, 4)))
    \n-
    1519#else
    \n-
    1520 __attribute__ ((__format__ (__printf__, 3, 4)))
    \n-
    1521#endif
    \n-
    1522#endif
    \n-
    1523;
    \n-
    1524#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log
    \n-
    1525#define tdsdump_log TDSDUMP_LOG_FAST
    \n-
    1526#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf
    \n-
    1527#define tdsdump_dump_buf TDSDUMP_BUF_FAST
    \n-
    1528
    \n-
    1529extern int tds_write_dump;
    \n-
    1530extern int tds_debug_flags;
    \n-
    1531extern int tds_g_append_mode;
    \n-
    1532
    \n-
    1533
    \n-
    1534/* net.c */
    \n-
    1535TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr);
    \n-
    1536void tds_close_socket(TDSSOCKET * tds);
    \n-
    1537int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);
    \n-
    1538int tds7_get_instance_port(struct addrinfo *addr, const char *instance);
    \n-
    1539char *tds_prwsaerror(int erc);
    \n-
    1540void tds_prwsaerror_free(char *s);
    \n-
    1541int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);
    \n-
    1542int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int buflen, int final);
    \n-
    1543#define TDSSELREAD POLLIN
    \n-
    1544#define TDSSELWRITE POLLOUT
    \n-
    1545int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);
    \n-
    1546void tds_connection_close(TDSCONNECTION *conn);
    \n-
    1547int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);
    \n-
    1548int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t buflen);
    \n-
    1549void tds_socket_flush(TDS_SYS_SOCKET sock);
    \n-
    1550int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);
    \n-
    1551int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);
    \n-
    1552void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);
    \n-
    1553void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);
    \n-
    1554static inline TDS_SYS_SOCKET tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup)
    \n-
    1555{
    \n-
    1556 return wakeup->s_signaled;
    \n-
    1557}
    \n-
    1558
    \n-
    1559
    \n-
    1560/* packet.c */
    \n-
    1561int tds_read_packet(TDSSOCKET * tds);
    \n-
    1562TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);
    \n-
    1563#if ENABLE_ODBC_MARS
    \n-
    1564int tds_append_cancel(TDSSOCKET *tds);
    \n-
    1565TDSRET tds_append_syn(TDSSOCKET *tds);
    \n-
    1566TDSRET tds_append_fin(TDSSOCKET *tds);
    \n-
    1567#else
    \n-
    1568int tds_put_cancel(TDSSOCKET * tds);
    \n-
    1569#endif
    \n-
    1570
    \n-
    \n-
    1571typedef struct tds_freeze {
    \n-\n-\n-
    1577 unsigned pkt_pos;
    \n-
    1579 unsigned size_len;
    \n-
    1580} TDSFREEZE;
    \n-
    \n-
    1581
    \n-
    1582void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);
    \n-
    1583size_t tds_freeze_written(TDSFREEZE *freeze);
    \n-
    1584TDSRET tds_freeze_abort(TDSFREEZE *freeze);
    \n-
    1585TDSRET tds_freeze_close(TDSFREEZE *freeze);
    \n-
    1586TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);
    \n-
    1587
    \n-
    1588static void inline
    \n-
    1589tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)
    \n-
    1590{
    \n-
    1591 tds->send_packet = pkt;
    \n-
    1592 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);
    \n-
    1593}
    \n-
    1594
    \n-
    1595/* Macros to allow some indentation of the packets.
    \n-
    1596 *
    \n-
    1597 * The 3 nested fake loops require some explanation:
    \n-
    1598 * - first is to allows to declare variables;
    \n-
    1599 * - second is to force using brackets;
    \n-
    1600 * - third is to avoids that a break inside will skip the close.
    \n-
    1601 */
    \n-
    1602#define TDS_START_LEN_GENERIC(tds_socket, len) do { \\
    \n-
    1603 TDSFREEZE current_freeze[1]; \\
    \n-
    1604 tds_freeze((tds_socket), current_freeze, (len)); do { do
    \n-
    1605#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); } while(0);
    \n-
    1606
    \n-
    1607#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 1)
    \n-
    1608#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 2)
    \n-
    1609#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4)
    \n-
    1610
    \n-
    1611/* vstrbuild.c */
    \n-
    1612TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char *text, int textlen, const char *formats, int formatlen,
    \n-
    1613 va_list ap);
    \n-
    1614
    \n-
    1615
    \n-
    1616/* numeric.c */
    \n-
    1617char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_digits);
    \n-
    1618TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);
    \n-
    1619TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char new_prec, unsigned char new_scale);
    \n-
    1620
    \n-
    1621
    \n-
    1622/* getmac.c */
    \n-
    1623void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);
    \n-
    1624
    \n-
    1625
    \n-
    1626/* challenge.c */
    \n-
    1627#ifndef HAVE_SSPI
    \n-\n-
    1629TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);
    \n-
    1630#else
    \n-
    1631TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);
    \n-
    1632#endif
    \n-
    1633TDSRET tds5_gss_send(TDSSOCKET *tds);
    \n-
    1634
    \n-
    1635
    \n-
    1636/* random.c */
    \n-
    1637void tds_random_buffer(unsigned char *out, int len);
    \n-
    1638
    \n-
    1639
    \n-
    1640/* sec_negotiate.c */
    \n-
    1641TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);
    \n-
    1642static inline
    \n-
    1643void tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_type)
    \n-
    1644{
    \n-
    1645 if (tds_auth)
    \n-
    1646 tds_auth->msg_type = msg_type;
    \n-
    1647}
    \n-
    1648
    \n-
    1649
    \n-
    1650/* bulk.c */
    \n-
    1651
    \n-
    \n-\n-
    1654{
    \n-
    1655 TDS_BCP_IN = 1,
    \n-
    1656 TDS_BCP_OUT = 2,
    \n-
    1657 TDS_BCP_QUERYOUT = 3
    \n-
    1658};
    \n-
    \n-
    1659
    \n-
    \n-\n-
    1661{
    \n-
    1662 const char *hint;
    \n-
    1663 void *parent;
    \n-
    1664 DSTR tablename;
    \n-
    1665 TDS_CHAR *insert_stmt;
    \n-
    1666 TDS_INT direction;
    \n-
    1667 TDS_INT identity_insert_on;
    \n-
    1668 TDS_INT xfer_init;
    \n-
    1669 TDS_INT bind_count;
    \n-
    1670 TDSRESULTINFO *bindinfo;
    \n-
    1671};
    \n-
    \n-
    1672
    \n-
    1673TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n-
    1674typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN *bcpcol, int offset);
    \n-
    1675typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int offset);
    \n-
    1676TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);
    \n-
    1677TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);
    \n-
    1678TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n-
    1679TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n-
    1680
    \n-
    1681TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,
    \n-
    1682 const char *terminator, size_t term_len, char **outbuf, size_t * outbytes);
    \n-
    1683
    \n-
    1684TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size);
    \n-
    1685TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size);
    \n-
    1686TDSRET tds_writetext_end(TDSSOCKET *tds);
    \n-
    1687
    \n-
    1688
    \n-
    1689static inline
    \n-
    1690bool tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
    \n-
    1691{
    \n-
    1692 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & 1;
    \n-
    1693}
    \n-
    1694#define tds_capability_has_req(conn, cap) \\
    \n-
    1695 tds_capability_enabled(&conn->capabilities.types[0], cap)
    \n-
    1696#define tds_capability_has_res(conn, cap) \\
    \n-
    1697 tds_capability_enabled(&conn->capabilities.types[1], cap)
    \n-
    1698
    \n-
    1699#define IS_TDS42(x) (x->tds_version==0x402)
    \n-
    1700#define IS_TDS46(x) (x->tds_version==0x406)
    \n-
    1701#define IS_TDS50(x) (x->tds_version==0x500)
    \n-
    1702#define IS_TDS70(x) (x->tds_version==0x700)
    \n-
    1703#define IS_TDS71(x) (x->tds_version==0x701)
    \n-
    1704#define IS_TDS72(x) (x->tds_version==0x702)
    \n-
    1705#define IS_TDS73(x) (x->tds_version==0x703)
    \n-
    1706
    \n-
    1707#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)
    \n-
    1708#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)
    \n-
    1709#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)
    \n-
    1710#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)
    \n-
    1711#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)
    \n-
    1712#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)
    \n-
    1713
    \n-
    1714#define TDS_MAJOR(x) ((x)->tds_version >> 8)
    \n-
    1715#define TDS_MINOR(x) ((x)->tds_version & 0xff)
    \n-
    1716
    \n-
    1717#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)
    \n-
    1718
    \n-
    1720#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))
    \n-
    1722#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)
    \n-
    1723
    \n-
    1727#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))
    \n-
    1728
    \n-
    1729/* TODO test if not similar to ms one*/
    \n-
    1731#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)
    \n-
    1732
    \n-
    1733#ifdef __cplusplus
    \n-
    1734#if 0
    \n-
    1735{
    \n-
    1736#endif
    \n-
    1737}
    \n-
    1738#endif
    \n-
    1739
    \n-
    1740#include <freetds/popvis.h>
    \n-
    1741
    \n-
    1742#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))
    \n-
    1743#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)(v)))
    \n-
    1744#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))
    \n-
    1745
    \n-
    1746#endif /* _tds_h_ */
    \n-
    int tds_iconv_alloc(TDSCONNECTION *conn)
    Allocate iconv stuff.
    Definition iconv.c:307
    \n-
    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
    \n-
    char * tds_strndup(const void *s, TDS_INTPTR len)
    Copy a string of length len to a new allocated buffer This function does not read more than len bytes...
    Definition util.c:406
    \n-
    TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)
    Set state of TDS connection, with logging and checking.
    Definition util.c:58
    \n-
    struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
    A structure to hold all the compile-time settings.
    \n-
    struct tds_result_info TDSRESULTINFO
    Hold information for any results.
    \n-
    int tdsdump_open(const char *filename)
    Create and truncate a human readable dump file for the TDS traffic.
    Definition log.c:131
    \n-
    struct tds_variant TDSVARIANT
    Store variant informations.
    \n-
    void tdsdump_close(void)
    Close the TDS dump log file.
    Definition log.c:212
    \n-
    void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
    Set type of column initializing all dependency.
    Definition data.c:224
    \n-
    bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR
    Set the servername in a TDSLOGIN structure.
    Definition login.c:129
    \n-
    struct tdsdaterec TDSDATEREC
    Used by tds_datecrack.
    \n-
    TDSLOCALE * tds_get_locale(void)
    Get locale information.
    Definition locale.c:50
    \n-
    struct tds_env TDSENV
    Current environment as reported by the server.
    \n-
    int tds_write_dump
    Tell if TDS debug logging is turned on or off.
    Definition log.c:58
    \n-
    struct tds_blob TDSBLOB
    Information about blobs (e.g.
    \n-
    int tds_get_size_by_type(TDS_SERVER_TYPE servertype)
    Return the number of bytes needed by specified type.
    Definition tds_types.h:9
    \n-
    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:41
    \n-
    TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Start bulk copy to server.
    Definition bulk.c:916
    \n-
    TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)
    Definition numeric.c:95
    \n-
    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
    \n-
    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:1147
    \n-
    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:1077
    \n-
    TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Start sending BCP data to server.
    Definition bulk.c:866
    \n-
    struct tds_dynamic TDSDYNAMIC
    Holds information for a dynamic (also called prepared) query.
    \n-
    void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
    Set type of column initializing all dependency.
    Definition data.c:246
    \n-
    tds_states
    values for tds->state
    Definition tds.h:789
    \n-
    @ TDS_PENDING
    cilent is waiting for data
    Definition tds.h:793
    \n-
    @ TDS_SENDING
    client would send data
    Definition tds.h:792
    \n-
    @ TDS_READING
    client is reading data
    Definition tds.h:794
    \n-
    @ TDS_WRITING
    client is writing data
    Definition tds.h:791
    \n-
    @ TDS_IDLE
    no data expected
    Definition tds.h:790
    \n-
    @ TDS_DEAD
    no connection
    Definition tds.h:795
    \n-
    tds_end
    Flags returned in TDS_DONE token.
    Definition tds.h:250
    \n-
    @ TDS_DONE_CANCELLED
    acknowledging an attention command (usually a cancel)
    Definition tds.h:257
    \n-
    @ TDS_DONE_MORE_RESULTS
    more results follow
    Definition tds.h:252
    \n-
    @ TDS_DONE_SRVERROR
    SQL server server error.
    Definition tds.h:259
    \n-
    @ TDS_DONE_FINAL
    final result set, command completed successfully.
    Definition tds.h:251
    \n-
    @ TDS_DONE_ERROR
    error occurred
    Definition tds.h:253
    \n-
    @ TDS_DONE_INXACT
    transaction in progress
    Definition tds.h:254
    \n-
    @ TDS_DONE_PROC
    results are from a stored procedure
    Definition tds.h:255
    \n-
    @ TDS_DONE_COUNT
    count field in packet is valid
    Definition tds.h:256
    \n-
    void tdsdump_col(const TDSCOLUMN *col)
    Write a column value to the debug log.
    Definition log.c:455
    \n-
    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:1185
    \n-
    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
    \n-
    enum tds_states TDS_STATE
    values for tds->state
    \n-
    TDSRET tds_writetext_end(TDSSOCKET *tds)
    Finish sending writetext data.
    Definition bulk.c:1202
    \n-
    TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Initialize BCP information.
    Definition bulk.c:84
    \n-
    tds_bcp_directions
    bcp direction
    Definition tds.h:1654
    \n-
    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:468
    \n-
    TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)
    Tell we finished sending BCP data to server.
    Definition bulk.c:836
    \n-
    struct tds_encoding TDS_ENCODING
    Information relevant to libiconv.
    \n-
    void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)
    Temporarily turn off logging for current thread.
    Definition log.c:81
    \n-
    void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)
    Turn logging back on for current thread.
    Definition log.c:101
    \n-
    struct tds_cursor TDSCURSOR
    Holds informations about a cursor.
    \n-
    TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)
    Build a NTLMSPP packet to send to server.
    Definition challenge.c:721
    \n-
    TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)
    Set TDS version from given string.
    Definition config.c:923
    \n-
    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:1344
    \n-
    struct addrinfo * tds_lookup_host(const char *servername)
    Get the IP address for a hostname.
    Definition config.c:987
    \n-
    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:503
    \n-
    bool tds_read_conf_file(TDSLOGIN *login, const char *server)
    Read configuration info for given server return 0 on error.
    Definition config.c:346
    \n-
    TDSRET tds_set_interfaces_file_loc(const char *interfloc)
    Set the full name of interface file.
    Definition config.c:961
    \n-
    char * tds_get_home_file(const char *file)
    Return filename from HOME directory.
    Definition config.c:325
    \n-
    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
    \n-
    void tds_fix_login(TDSLOGIN *login)
    Fix configuration after reading it.
    Definition config.c:285
    \n-
    TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)
    Convert from db date format to a structured date format.
    Definition convert.c:3172
    \n-
    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:1245
    \n-
    TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
    Allocate space for row store return NULL on out of memory.
    Definition mem.c:524
    \n-
    void tds_detach_results(TDSRESULTINFO *info)
    Detach result info from it current socket.
    Definition mem.c:488
    \n-
    TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)
    Adds a output parameter to TDSPARAMINFO.
    Definition mem.c:284
    \n-
    void * tds_alloc_param_data(TDSCOLUMN *curparam)
    Allocate data for a parameter.
    Definition mem.c:364
    \n-
    TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)
    Initialize login structure with locale information and other stuff for connection.
    Definition mem.c:800
    \n-
    void tds_free_param_result(TDSPARAMINFO *param_info)
    Delete latest parameter.
    Definition mem.c:320
    \n-
    TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)
    Allocate a dynamic statement.
    Definition mem.c:160
    \n-
    void * tds_realloc(void **pp, size_t new_size)
    Reallocate a pointer and update it if success.
    Definition mem.c:1876
    \n-
    void tds_free_input_params(TDSDYNAMIC *dyn)
    Frees all allocated input parameters of a dynamic statement.
    Definition mem.c:206
    \n-
    void tds_release_dynamic(TDSDYNAMIC **dyn)
    Frees dynamic statement.
    Definition mem.c:253
    \n-
    int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
    Check if dynamic request must be unprepared.
    Definition query.c:1752
    \n-
    const char * tds_skip_quoted(const char *s)
    Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd])
    Definition query.c:515
    \n-
    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:1401
    \n-
    void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)
    Start query packet of a given type.
    Definition query.c:332
    \n-
    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:2026
    \n-
    TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Sends a previously prepared dynamic statement to the server.
    Definition query.c:1630
    \n-
    size_t tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol)
    Get column size for wire.
    Definition query.c:1491
    \n-
    TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)
    Return declaration for column (like "varchar(20)").
    Definition query.c:718
    \n-
    TDSRET tds_submit_commit(TDSSOCKET *tds, int cont)
    Send a commit request.
    Definition query.c:3724
    \n-
    TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)
    Deallocate cursor on idle.
    Definition query.c:3057
    \n-
    TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)
    Sends a language string to the database server for processing.
    Definition query.c:210
    \n-
    TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)
    Calls a RPC from server.
    Definition query.c:1929
    \n-
    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:2216
    \n-
    size_t tds_quote_string(TDSSOCKET *tds, char *buffer, const char *str, int len)
    Quote a string.
    Definition query.c:2241
    \n-
    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:1124
    \n-
    TDSRET tds_submit_begin_tran(TDSSOCKET *tds)
    Send a rollback request.
    Definition query.c:3665
    \n-
    size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
    Quote an id.
    Definition query.c:2171
    \n-
    const char * tds_next_placeholder(const char *start)
    Get position of next placeholder.
    Definition query.c:535
    \n-
    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:350
    \n-
    TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont)
    Send a rollback request.
    Definition query.c:3693
    \n-
    TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
    Unprepare dynamic on idle.
    Definition query.c:1774
    \n-
    int tds_count_placeholders(const char *query)
    Count the number of placeholders ('?') in a query.
    Definition query.c:571
    \n-
    TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)
    Send a deallocation request to server.
    Definition query.c:3006
    \n-
    const char * tds_skip_comment(const char *s)
    Skip a comment in a query.
    Definition query.c:490
    \n-
    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
    \n-
    TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)
    Format and submit a query.
    Definition query.c:467
    \n-
    TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
    Submit a prepared query with parameters.
    Definition query.c:1256
    \n-
    void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Set current dynamic.
    Definition query.c:192
    \n-
    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:3389
    \n-
    TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Send a unprepare request for a prepared query.
    Definition query.c:1797
    \n-
    DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)
    Reads a string from wire and put in a DSTR.
    Definition read.c:293
    \n-
    unsigned char tds_get_byte(TDSSOCKET *tds)
    Return a single byte from the input buffer.
    Definition read.c:72
    \n-
    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
    \n-
    unsigned char tds_peek(TDSSOCKET *tds)
    Reads a byte from the TDS stream without removing it.
    Definition read.c:100
    \n-
    TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)
    Stop keeping data for this specific freeze.
    Definition packet.c:1031
    \n-
    int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
    Definition net.c:985
    \n-
    int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)
    Set socket to non-blocking.
    Definition net.c:168
    \n-
    void tds_close_socket(TDSSOCKET *tds)
    Close current socket.
    Definition net.c:548
    \n-
    int tds_read_packet(TDSSOCKET *tds)
    Read in one 'packet' from the server.
    Definition packet.c:527
    \n-
    size_t tds_freeze_written(TDSFREEZE *freeze)
    Compute how many bytes has been written from freeze.
    Definition packet.c:935
    \n-
    TDSRET tds_flush_packet(TDSSOCKET *tds)
    Flush packet to server.
    Definition write.c:224
    \n-
    TDSRET tds_freeze_close(TDSFREEZE *freeze)
    Stop keeping data for this specific freeze.
    Definition packet.c:996
    \n-
    int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)
    Loops until we have received some characters return -1 on failure.
    Definition net.c:914
    \n-
    TDSRET tds_freeze_abort(TDSFREEZE *freeze)
    Discard all data written after the freeze.
    Definition packet.c:961
    \n-
    TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)
    Get an uint64 from the server.
    Definition read.c:140
    \n-
    TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
    Fetch character data the wire.
    Definition read.c:195
    \n-
    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:166
    \n-
    int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)
    Get port of all instances.
    Definition net.c:1091
    \n-
    TDS_UINT tds_get_uint(TDSSOCKET *tds)
    Get an int32 from the server.
    Definition read.c:127
    \n-
    int tds7_get_instance_port(struct addrinfo *addr, const char *instance)
    Get port of given instance.
    Definition net.c:1227
    \n-
    TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)
    Get an int16 from the server.
    Definition read.c:113
    \n-
    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
    \n-
    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:610
    \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:230
    \n-
    const char * tds_prtype(int token)
    Returns string representation of the given type.
    Definition token.c:3056
    \n-
    TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)
    Finds a dynamic given string id.
    Definition token.c:2587
    \n-
    TDSRET tds_process_login_tokens(TDSSOCKET *tds)
    tds_process_login_tokens() is called after sending the login packet to the server.
    Definition token.c:411
    \n-
    int tds_get_token_size(int marker)
    tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determi...
    Definition token.c:2754
    \n-
    TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
    process all streams.
    Definition token.c:531
    \n-
    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:881
    \n-
    TDSRET tds_process_cancel(TDSSOCKET *tds)
    Definition token.c:2554
    \n-
    Definition iconv.h:92
    \n-
    Definition proto.h:26
    \n-
    Definition proto.h:39
    \n-
    A structure to hold all the compile-time settings.
    Definition tds.h:82
    \n-
    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.
    Definition tds.h:146
    \n-
    TDS_INT date
    date, 0 = 1900-01-01
    Definition tds.h:148
    \n-
    TDS_SMALLINT offset
    time offset
    Definition tds.h:149
    \n-
    TDS_UINT8 time
    time, 7 digit precision
    Definition tds.h:147
    \n-
    Used by tds_datecrack.
    Definition tds.h:159
    \n-
    TDS_INT dayofyear
    day of year (1-366)
    Definition tds.h:164
    \n-
    TDS_INT weekday
    day of week (0-6, 0 = sunday)
    Definition tds.h:165
    \n-
    TDS_INT year
    year
    Definition tds.h:160
    \n-
    TDS_INT timezone
    -840 - 840 minutes from UTC
    Definition tds.h:170
    \n-
    TDS_INT minute
    0-59
    Definition tds.h:167
    \n-
    TDS_INT day
    day of month (1-31)
    Definition tds.h:163
    \n-
    TDS_INT decimicrosecond
    0-9999999
    Definition tds.h:169
    \n-
    TDS_INT second
    0-59
    Definition tds.h:168
    \n-
    TDS_INT quarter
    quarter (0-3)
    Definition tds.h:161
    \n-
    TDS_INT hour
    0-23
    Definition tds.h:166
    \n-
    TDS_INT month
    month number (0-11)
    Definition tds.h:162
    \n-
    Definition tds.h:330
    \n-
    Definition tds.h:495
    \n-
    Definition tds.h:504
    \n-
    Definition tds.h:511
    \n-
    Definition tds.h:517
    \n-
    DSTR crlfile
    certificate revocation file
    Definition tds.h:531
    \n-
    DSTR server_realm_name
    server realm name (in freetds.conf)
    Definition tds.h:527
    \n-
    DSTR user_name
    account for login
    Definition tds.h:534
    \n-
    DSTR password
    password of account login
    Definition tds.h:535
    \n-
    DSTR db_filename
    database filename to attach (MSSQL)
    Definition tds.h:529
    \n-
    DSTR server_name
    server name (in freetds.conf)
    Definition tds.h:518
    \n-
    struct addrinfo * ip_addrs
    ip(s) of server
    Definition tds.h:546
    \n-
    DSTR server_charset
    charset of server e.g.
    Definition tds.h:523
    \n-
    TDS_USMALLINT tds_version
    TDS version.
    Definition tds.h:520
    \n-
    DSTR new_password
    new password to set (TDS 7.2+)
    Definition tds.h:536
    \n-
    unsigned int bulk_copy
    if bulk copy should be enabled
    Definition tds.h:556
    \n-
    DSTR cafile
    certificate authorities file
    Definition tds.h:530
    \n-
    DSTR server_spn
    server SPN (in freetds.conf)
    Definition tds.h:528
    \n-
    int port
    port of database service
    Definition tds.h:519
    \n-
    Definition tds.h:574
    \n-
    Definition tds.h:582
    \n-
    Information about blobs (e.g.
    Definition tds.h:593
    \n-
    Store variant informations.
    Definition tds.h:604
    \n-
    Information relevant to libiconv.
    Definition tds.h:618
    \n-
    const char * name
    name of the encoding (ie UTF-8)
    Definition tds.h:620
    \n-
    unsigned char canonic
    internal numeric index into array of all encodings
    Definition tds.h:624
    \n-
    Definition tds.h:628
    \n-
    Definition tds.h:643
    \n-
    tds_func_put_data * put_data
    Send column data to server.
    Definition tds.h:662
    \n-
    tds_func_put_info * put_info
    Send metadata column information to server.
    Definition tds.h:652
    \n-
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n-
    TDS_INT bcp_prefix_len
    The length, in bytes, of any length prefix this column may have.
    Definition tds.h:761
    \n-
    TDS_TINYINT column_varint_size
    size of length when reading from wire (0, 1, 2 or 4)
    Definition tds.h:701
    \n-
    TDS_INT column_size
    maximun size of data.
    Definition tds.h:694
    \n-
    TDS_TINYINT column_prec
    precision for decimal/numeric
    Definition tds.h:703
    \n-
    TDS_SERVER_TYPE column_type
    This type can be different from wire type because conversion (e.g.
    Definition tds.h:696
    \n-
    TDSICONV * char_conv
    refers to previously allocated iconv information
    Definition tds.h:712
    \n-
    TDS_TINYINT column_scale
    scale for decimal/numeric
    Definition tds.h:704
    \n-
    TDS_INT column_cur_size
    size written in variable (ie: char, text, binary).
    Definition tds.h:736
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n-
    Definition tds.h:876
    \n-
    Definition tds.h:892
    \n-
    Definition tds.h:906
    \n-
    Holds informations about a cursor.
    Definition tds.h:937
    \n-
    TDS_TINYINT options
    read only|updatable TODO use it
    Definition tds.h:942
    \n-
    bool defer_close
    true if cursor was marker to be closed when connection is idle
    Definition tds.h:946
    \n-
    TDS_INT ref_count
    reference counter so client can retain safely a pointer
    Definition tds.h:939
    \n-
    TDS_INT cursor_id
    cursor id returned by the server after cursor declare
    Definition tds.h:941
    \n-
    TDS_INT cursor_rows
    < number of updatable columns
    Definition tds.h:951
    \n-
    struct tds_cursor * next
    next in linked list, keep first
    Definition tds.h:938
    \n-
    TDS_INT type
    row fetched from this cursor
    Definition tds.h:956
    \n-
    TDS_CURSOR_STATUS status
    cursor parameter
    Definition tds.h:953
    \n-
    char * query
    SQL query.
    Definition tds.h:947
    \n-
    char * cursor_name
    name of the cursor
    Definition tds.h:940
    \n-
    Current environment as reported by the server.
    Definition tds.h:963
    \n-
    char * charset
    character set encoding
    Definition tds.h:968
    \n-
    int block_size
    packet size (512-65535)
    Definition tds.h:965
    \n-
    char * database
    database name
    Definition tds.h:970
    \n-
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n-
    char * query
    saved query, we need to know original query if prepare is impossible
    Definition tds.h:1009
    \n-
    TDS_INT ref_count
    reference counter so client can retain safely a pointer
    Definition tds.h:979
    \n-
    bool defer_close
    true if dynamic was marker to be closed when connection is idle
    Definition tds.h:997
    \n-
    TDSPARAMINFO * res_info
    query results
    Definition tds.h:999
    \n-
    TDS_TINYINT emulated
    this dynamic query cannot be prepared so libTDS have to construct a simple query.
    Definition tds.h:993
    \n-
    TDSPARAMINFO * params
    query parameters.
    Definition tds.h:1007
    \n-
    struct tds_dynamic * next
    next in linked list, keep first
    Definition tds.h:978
    \n-
    TDS_INT num_id
    numeric id for mssql7+
    Definition tds.h:981
    \n-
    Definition tds.h:1019
    \n-
    Definition tds.h:1029
    \n-
    Definition tds.h:1047
    \n-
    Definition tds.h:1057
    \n-
    unsigned data_len
    data length, this does not account SMP header, only TDS part
    Definition tds.h:1071
    \n-
    Definition tds.h:1085
    \n-
    Definition tds.h:1091
    \n-
    TDSENV env
    environment is shared between all sessions
    Definition tds.h:1101
    \n-
    TDSCURSOR * cursors
    linked list of cursors allocated for this connection contains only cursors allocated on the server
    Definition tds.h:1107
    \n-
    TDS_SYS_SOCKET s
    tcp socket, INVALID_SOCKET if not connected
    Definition tds.h:1096
    \n-
    TDS_UINT product_version
    version of product (Sybase/MS and full version)
    Definition tds.h:1093
    \n-
    TDSDYNAMIC * dyns
    list of dynamic allocated for this connection contains only dynamic allocated on the server
    Definition tds.h:1112
    \n-
    unsigned int pending_close
    true is connection has pending closing (cursors or dynamic)
    Definition tds.h:1123
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n-
    TDSLOGIN * login
    config for login stuff.
    Definition tds.h:1258
    \n-
    unsigned in_len
    input buffer length
    Definition tds.h:1194
    \n-
    TDSPACKET * frozen_packets
    list of packets frozen, points to first one.
    Definition tds.h:1203
    \n-
    TDSPACKET * send_packet
    packet we are preparing to send
    Definition tds.h:1231
    \n-
    unsigned char * in_buf
    Input buffer.
    Definition tds.h:1177
    \n-
    TDS_INT ret_status
    return status from store procedure
    Definition tds.h:1250
    \n-
    unsigned out_pos
    current position in out_buf
    Definition tds.h:1193
    \n-
    TDSRESULTINFO * current_results
    Current query information.
    Definition tds.h:1238
    \n-
    unsigned char in_flag
    input buffer type
    Definition tds.h:1195
    \n-
    TDS_INT8 rows_affected
    rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid
    Definition tds.h:1254
    \n-
    unsigned char out_flag
    output buffer type
    Definition tds.h:1196
    \n-
    unsigned in_pos
    current position in in_buf
    Definition tds.h:1192
    \n-
    TDSCURSOR * cur_cursor
    cursor in use
    Definition tds.h:1243
    \n-
    bool in_row
    true if we are getting rows
    Definition tds.h:1246
    \n-
    bool bulk_query
    true is query sent was a bulk query so we need to switch state to QUERYING
    Definition tds.h:1244
    \n-
    bool has_status
    true is ret_status is valid
    Definition tds.h:1245
    \n-
    unsigned char * out_buf
    Output buffer.
    Definition tds.h:1185
    \n-
    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
    \n-
    unsigned int out_buf_max
    Maximum size of packet pointed by out_buf.
    Definition tds.h:1191
    \n-
    TDSDYNAMIC * cur_dyn
    dynamic structure in use
    Definition tds.h:1256
    \n-
    Definition tds.h:1501
    \n-
    Definition tds.h:1571
    \n-
    TDSSOCKET * tds
    which socket we refer to
    Definition tds.h:1573
    \n-
    unsigned pkt_pos
    position in pkt
    Definition tds.h:1577
    \n-
    unsigned size_len
    length size (0, 1, 2 or 4)
    Definition tds.h:1579
    \n-
    TDSPACKET * pkt
    first packet frozen
    Definition tds.h:1575
    \n-
    Definition tds.h:1661
    \n-
    Definition thread.h:278
    \n-
    Structure to hold a string.
    Definition string.h:36
    \n+
    58#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
    \n+
    59#include <freetds/windows.h>
    \n+
    60#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
    \n+
    61#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
    \n+
    62#define CLOSESOCKET(a) closesocket((a))
    \n+
    63#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
    \n+
    64#define SOCKLEN_T int
    \n+
    65int tds_socket_init(void);
    \n+
    66#define INITSOCKET() tds_socket_init()
    \n+
    67void tds_socket_done(void);
    \n+
    68#define DONESOCKET() tds_socket_done()
    \n+
    69#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */
    \n+
    70
    \n+
    71#define TDSSOCK_EINTR WSAEINTR
    \n+
    72#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
    \n+
    73#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
    \n+
    74#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
    \n+
    75#define TDSSOCK_ECONNRESET WSAECONNRESET
    \n+
    76#define sock_errno WSAGetLastError()
    \n+
    77#define set_sock_errno(err) WSASetLastError(err)
    \n+
    78#define sock_strerror(n) tds_prwsaerror(n)
    \n+
    79#define sock_strerror_free(s) tds_prwsaerror_free(s)
    \n+
    80#ifndef __MINGW32__
    \n+
    81typedef DWORD pid_t;
    \n+
    82#endif
    \n+
    83#undef strcasecmp
    \n+
    84#define strcasecmp stricmp
    \n+
    85#undef strncasecmp
    \n+
    86#define strncasecmp strnicmp
    \n+
    87#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
    \n+
    88#define snprintf _snprintf
    \n+
    89#endif
    \n+
    90
    \n+
    91#ifndef WIN32
    \n+
    92#define WIN32 1
    \n+
    93#endif
    \n+
    94
    \n+
    95#if defined(_WIN64) && !defined(WIN64)
    \n+
    96#define WIN64 1
    \n+
    97#endif
    \n+
    98
    \n+
    99#define TDS_SDIR_SEPARATOR "\\\\"
    \n+
    100
    \n+
    101/* use macros to use new style names */
    \n+
    102#if defined(__MSVCRT__) || defined(_MSC_VER)
    \n+
    103/* Use API as always present and not causing problems */
    \n+
    104#undef getpid
    \n+
    105#define getpid() GetCurrentProcessId()
    \n+
    106#define strdup(s) _strdup(s)
    \n+
    107#define unlink(f) _unlink(f)
    \n+
    108#define putenv(s) _putenv(s)
    \n+
    109#undef fileno
    \n+
    110#define fileno(f) _fileno(f)
    \n+
    111#undef close
    \n+
    112#define close(f) _close(f)
    \n+
    113#undef open
    \n+
    114#define open(fn,...) _open(fn,__VA_ARGS__)
    \n+
    115#undef dup2
    \n+
    116#define dup2(o,n) _dup2(o,n)
    \n+
    117#define stricmp(s1,s2) _stricmp(s1,s2)
    \n+
    118#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
    \n+
    119#endif
    \n+
    120
    \n+
    121#endif /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
    \n+
    122
    \n+
    123#ifndef sock_errno
    \n+
    124#define sock_errno errno
    \n+
    125#endif
    \n+
    126
    \n+
    127#ifndef set_sock_errno
    \n+
    128#define set_sock_errno(err) do { errno = (err); } while(0)
    \n+
    129#endif
    \n+
    130
    \n+
    131#ifndef sock_strerror
    \n+
    132#define sock_strerror(n) strerror(n)
    \n+
    133#define sock_strerror_free(s) do {} while(0)
    \n+
    134#endif
    \n+
    135
    \n+
    136#ifndef TDSSOCK_EINTR
    \n+
    137#define TDSSOCK_EINTR EINTR
    \n+
    138#endif
    \n+
    139
    \n+
    140#ifndef TDSSOCK_EINPROGRESS
    \n+
    141#define TDSSOCK_EINPROGRESS EINPROGRESS
    \n+
    142#endif
    \n+
    143
    \n+
    144#ifndef TDSSOCK_ETIMEDOUT
    \n+
    145#define TDSSOCK_ETIMEDOUT ETIMEDOUT
    \n+
    146#endif
    \n+
    147
    \n+
    148#ifndef TDSSOCK_WOULDBLOCK
    \n+
    149# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
    \n+
    150# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
    \n+
    151# else
    \n+
    152# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
    \n+
    153# endif
    \n+
    154#endif
    \n+
    155
    \n+
    156#ifndef TDSSOCK_ECONNRESET
    \n+
    157#define TDSSOCK_ECONNRESET ECONNRESET
    \n+
    158#endif
    \n+
    159
    \n+
    160#ifndef INITSOCKET
    \n+
    161#define INITSOCKET() 0
    \n+
    162#endif /* !INITSOCKET */
    \n+
    163
    \n+
    164#ifndef DONESOCKET
    \n+
    165#define DONESOCKET() do { } while(0)
    \n+
    166#endif /* !DONESOCKET */
    \n+
    167
    \n+
    168#ifndef READSOCKET
    \n+
    169# ifdef MSG_NOSIGNAL
    \n+
    170# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
    \n+
    171# else
    \n+
    172# define READSOCKET(s,b,l) read((s), (b), (l))
    \n+
    173# endif
    \n+
    174#endif /* !READSOCKET */
    \n+
    175
    \n+
    176#ifndef WRITESOCKET
    \n+
    177# ifdef MSG_NOSIGNAL
    \n+
    178# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
    \n+
    179# else
    \n+
    180# define WRITESOCKET(s,b,l) write((s), (b), (l))
    \n+
    181# endif
    \n+
    182#endif /* !WRITESOCKET */
    \n+
    183
    \n+
    184#ifndef CLOSESOCKET
    \n+
    185#define CLOSESOCKET(s) close((s))
    \n+
    186#endif /* !CLOSESOCKET */
    \n+
    187
    \n+
    188#ifndef IOCTLSOCKET
    \n+
    189#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
    \n+
    190#endif /* !IOCTLSOCKET */
    \n+
    191
    \n+
    192#ifndef SOCKLEN_T
    \n+
    193# define SOCKLEN_T socklen_t
    \n+
    194#endif
    \n+
    195
    \n+
    196#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
    \n+
    197typedef int TDS_SYS_SOCKET;
    \n+
    198#define INVALID_SOCKET -1
    \n+
    199#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
    \n+
    200#else
    \n+
    201typedef SOCKET TDS_SYS_SOCKET;
    \n+
    202#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
    \n+
    203#endif
    \n+
    204
    \n+
    205#define tds_accept accept
    \n+
    206#define tds_getpeername getpeername
    \n+
    207#define tds_getsockopt getsockopt
    \n+
    208#define tds_getsockname getsockname
    \n+
    209#define tds_recvfrom recvfrom
    \n+
    210
    \n+
    211#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
    \n+
    212# if HAVE__XPG_ACCEPT
    \n+
    213# undef tds_accept
    \n+
    214# define tds_accept _xpg_accept
    \n+
    215# elif HAVE___ACCEPT
    \n+
    216# undef tds_accept
    \n+
    217# define tds_accept __accept
    \n+
    218# endif
    \n+
    219# if HAVE__XPG_GETPEERNAME
    \n+
    220# undef tds_getpeername
    \n+
    221# define tds_getpeername _xpg_getpeername
    \n+
    222# elif HAVE___GETPEERNAME
    \n+
    223# undef tds_getpeername
    \n+
    224# define tds_getpeername __getpeername
    \n+
    225# endif
    \n+
    226# if HAVE__XPG_GETSOCKOPT
    \n+
    227# undef tds_getsockopt
    \n+
    228# define tds_getsockopt _xpg_getsockopt
    \n+
    229# elif HAVE___GETSOCKOPT
    \n+
    230# undef tds_getsockopt
    \n+
    231# define tds_getsockopt __getsockopt
    \n+
    232# endif
    \n+
    233# if HAVE__XPG_GETSOCKNAME
    \n+
    234# undef tds_getsockname
    \n+
    235# define tds_getsockname _xpg_getsockname
    \n+
    236# elif HAVE___GETSOCKNAME
    \n+
    237# undef tds_getsockname
    \n+
    238# define tds_getsockname __getsockname
    \n+
    239# endif
    \n+
    240# if HAVE__XPG_RECVFROM
    \n+
    241# undef tds_recvfrom
    \n+
    242# define tds_recvfrom _xpg_recvfrom
    \n+
    243# elif HAVE___RECVFROM
    \n+
    244# undef tds_recvfrom
    \n+
    245# define tds_recvfrom __recvfrom
    \n+
    246# endif
    \n+
    247#endif
    \n+
    248
    \n+
    249#ifndef TDS_SDIR_SEPARATOR
    \n+
    250#define TDS_SDIR_SEPARATOR "/"
    \n+
    251#endif /* !TDS_SDIR_SEPARATOR */
    \n+
    252
    \n+
    253#ifdef HAVE_INTTYPES_H
    \n+
    254#include <inttypes.h>
    \n+
    255#endif
    \n+
    256
    \n+
    257#ifndef PRId64
    \n+
    258#define PRId64 TDS_I64_PREFIX "d"
    \n+
    259#endif
    \n+
    260#ifndef PRIu64
    \n+
    261#define PRIu64 TDS_I64_PREFIX "u"
    \n+
    262#endif
    \n+
    263#ifndef PRIx64
    \n+
    264#define PRIx64 TDS_I64_PREFIX "x"
    \n+
    265#endif
    \n+
    266
    \n+
    267#ifdef __cplusplus
    \n+
    268#if 0
    \n+
    269{
    \n+
    270#endif
    \n+
    271}
    \n+
    272#endif
    \n+
    273
    \n+
    274#endif /* _tds_sysdep_private_h_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,19 +7,18 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-tds.h\n-Go_to_the_documentation_of_this_file.\n+sysdep_private.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n- 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n+ 3 * Copyright (C) 2010 Frediano Ziglio\n 4 *\n 5 * This library is free software; you can redistribute it and/or\n 6 * modify it under the terms of the GNU Library General Public\n 7 * License as published by the Free Software Foundation; either\n 8 * version 2 of the License, or (at your option) any later version.\n 9 *\n 10 * This library is distributed in the hope that it will be useful,\n@@ -29,2646 +28,265 @@\n 14 *\n 15 * You should have received a copy of the GNU Library General Public\n 16 * License along with this library; if not, write to the\n 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 18 * Boston, MA 02111-1307, USA.\n 19 */\n 20\n- 21#ifndef _tds_h_\n- 22#define _tds_h_\n+ 21#ifndef _tds_sysdep_private_h_\n+ 22#define _tds_sysdep_private_h_\n 23\n- 24#ifndef _freetds_config_h_\n- 25#error should include config.h before\n- 26#endif\n- 27\n- 28#include \n- 29#include \n- 30#include \n+ 24#define TDS_ADDITIONAL_SPACE 16\n+ 25\n+ 26#ifdef MSG_NOSIGNAL\n+ 27# define TDS_NOSIGNAL MSG_NOSIGNAL\n+ 28#else\n+ 29# define TDS_NOSIGNAL 0L\n+ 30#endif\n 31\n- 32#ifdef HAVE_STDDEF_H\n- 33#include \n- 34#endif\n- 35\n- 36#if HAVE_NETDB_H\n- 37#include \n- 38#endif /* HAVE_NETDB_H */\n+ 32#ifdef __cplusplus\n+ 33extern \"C\"\n+ 34{\n+ 35#if 0\n+ 36}\n+ 37#endif\n+ 38#endif\n 39\n- 40#if HAVE_NETINET_IN_H\n- 41#include \n- 42#endif /* HAVE_NET_INET_IN_H */\n- 43#if HAVE_ARPA_INET_H\n- 44#include \n- 45#endif /* HAVE_ARPA_INET_H */\n- 46\n- 47#if HAVE_SYS_SOCKET_H\n- 48#include \n- 49#endif /* HAVE_SYS_SOCKET_H */\n- 50\n- 51/* forward declaration */\n- 52typedef struct tdsiconvinfo TDSICONV;\n- 53typedef struct tds_connection TDSCONNECTION;\n- 54typedef struct tds_socket TDSSOCKET;\n- 55typedef struct tds_column TDSCOLUMN;\n- 56typedef struct tds_bcpinfo TDSBCPINFO;\n+ 40#ifdef __INCvxWorksh\n+ 41#include /* for FIONBIO */\n+ 42#endif /* __INCvxWorksh */\n+ 43\n+ 44#if defined(DOS32X)\n+ 45#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)\n+ 46#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)\n+ 47#define CLOSESOCKET(a) closesocket((a))\n+ 48#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))\n+ 49#define SOCKLEN_T int\n+ 50#define select select_s\n+ 51typedef int pid_t;\n+ 52#define strcasecmp stricmp\n+ 53#define strncasecmp strnicmp\n+ 54/* TODO this has nothing to do with ip ... */\n+ 55#define getpid() _gethostid()\n+ 56#endif /* defined(DOS32X) */\n 57\n- 58#include \n- 59#include \n- 60#include \n- 61#include \n- 62#include \n- 63#include \n- 64#include \n- 65\n- 66#include \n- 67\n- 68#ifdef __cplusplus\n- 69extern \"C\"\n- 70{\n- 71#if 0\n- 72}\n- 73#endif\n- 74#endif\n- 75\n-81typedef struct tds_compiletime_settings\n- 82{\n- 83 const char *freetds_version; /* release version of FreeTDS */\n- 84 const char *sysconfdir; /* location of freetds.conf */\n- 85 const char *last_update; /* latest software_version date among the modules\n-*/\n- 86 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1) 5.0 */\n- 87 bool msdblib; /* for MS style dblib */\n- 88 bool sybase_compat; /* enable increased Open Client binary compatibility */\n- 89 bool threadsafe; /* compile for thread safety default=no */\n- 90 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */\n- 91 bool iodbc; /* build odbc driver against iODBC in DIR */\n- 92 bool unixodbc; /* build odbc driver against unixODBC in DIR */\n- 93 bool openssl; /* build against OpenSSL */\n- 94 bool gnutls; /* build against GnuTLS */\n- 95 bool mars; /* MARS enabled */\n- 96 bool sspi; /* SSPI enabled */\n- 97 bool kerberos; /* Kerberos enabled */\n-98} TDS_COMPILETIME_SETTINGS;\n- 99\n- 115/*\n- 116 * All references to data that touch the wire should use the following\n-typedefs.\n- 117 *\n- 118 * If you have problems on 64-bit machines and the code is\n- 119 * using a native datatype, please change it to use\n- 120 * these. (In the TDS layer only, the API layers have their\n- 121 * own typedefs which equate to these).\n- 122 */\n- 123typedef char TDS_CHAR; /* 8-bit char */\n- 124typedef uint8_t TDS_UCHAR; /* 8-bit uchar */\n- 125typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */\n- 126typedef int16_t TDS_SMALLINT; /* 16-bit int */\n- 127typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */\n- 128typedef int32_t TDS_INT; /* 32-bit int */\n- 129typedef uint32_t TDS_UINT; /* 32-bit unsigned */\n- 130typedef int64_t TDS_INT8; /* 64-bit integer */\n- 131typedef uint64_t TDS_UINT8; /* 64-bit unsigned */\n- 132typedef intptr_t TDS_INTPTR;\n- 133typedef uintptr_t TDS_UINTPTR;\n- 134typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */\n- 135typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */\n- 136\n- 137#include \n- 138\n- 139#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)\n- 140\n-145typedef struct\n- 146{\n-147 TDS_UINT8 time;\n-148 TDS_INT date;\n-149 TDS_SMALLINT offset;\n- 150 TDS_USMALLINT time_prec:3;\n- 151 TDS_USMALLINT _tds_reserved:10;\n- 152 TDS_USMALLINT has_time:1;\n- 153 TDS_USMALLINT has_date:1;\n- 154 TDS_USMALLINT has_offset:1;\n- 155} TDS_DATETIMEALL;\n- 156\n-158typedef struct tdsdaterec\n- 159{\n-160 TDS_INT year;\n-161 TDS_INT quarter;\n-162 TDS_INT month;\n-163 TDS_INT day;\n-164 TDS_INT dayofyear;\n-165 TDS_INT weekday;\n-166 TDS_INT hour;\n-167 TDS_INT minute;\n-168 TDS_INT second;\n-169 TDS_INT decimicrosecond;\n-170 TDS_INT timezone;\n-171} TDSDATEREC;\n- 172\n- 178extern const int tds_numeric_bytes_per_prec[];\n- 179\n- 180typedef int TDSRET;\n- 181#define TDS_NO_MORE_RESULTS ((TDSRET)1)\n- 182#define TDS_SUCCESS ((TDSRET)0)\n- 183#define TDS_FAIL ((TDSRET)-1)\n- 184#define TDS_CANCELLED ((TDSRET)-2)\n- 185#define TDS_FAILED(rc) ((rc)<0)\n- 186#define TDS_SUCCEED(rc) ((rc)>=0)\n- 187#define TDS_PROPAGATE(rc) \\\n- 188 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; }\n-while(0)\n- 189\n- 190#define TDS_INT_CONTINUE 1\n- 191#define TDS_INT_CANCEL 2\n- 192#define TDS_INT_TIMEOUT 3\n- 193\n- 194\n- 195#define TDS_NO_COUNT -1\n- 196\n- 197#define TDS_ROW_RESULT 4040\n- 198#define TDS_PARAM_RESULT 4042\n- 199#define TDS_STATUS_RESULT 4043\n- 200#define TDS_MSG_RESULT 4044\n- 201#define TDS_COMPUTE_RESULT 4045\n- 202#define TDS_CMD_DONE 4046\n- 203#define TDS_CMD_SUCCEED 4047\n- 204#define TDS_CMD_FAIL 4048\n- 205#define TDS_ROWFMT_RESULT 4049\n- 206#define TDS_COMPUTEFMT_RESULT 4050\n- 207#define TDS_DESCRIBE_RESULT 4051\n- 208#define TDS_DONE_RESULT 4052\n- 209#define TDS_DONEPROC_RESULT 4053\n- 210#define TDS_DONEINPROC_RESULT 4054\n- 211#define TDS_OTHERS_RESULT 4055\n- 212\n- 213enum tds_token_results\n- 214{\n- 215 TDS_TOKEN_RES_OTHERS,\n- 216 TDS_TOKEN_RES_ROWFMT,\n- 217 TDS_TOKEN_RES_COMPUTEFMT,\n- 218 TDS_TOKEN_RES_PARAMFMT,\n- 219 TDS_TOKEN_RES_DONE,\n- 220 TDS_TOKEN_RES_ROW,\n- 221 TDS_TOKEN_RES_COMPUTE,\n- 222 TDS_TOKEN_RES_PROC,\n- 223 TDS_TOKEN_RES_MSG,\n- 224 TDS_TOKEN_RES_ENV,\n- 225};\n- 226\n- 227#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 <<\n-(TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))\n- 228\n- 229enum tds_token_flags\n- 230{\n- 231 TDS_HANDLE_ALL = 0,\n- 232 TDS_TOKEN_FLAG(OTHERS),\n- 233 TDS_TOKEN_FLAG(ROWFMT),\n- 234 TDS_TOKEN_FLAG(COMPUTEFMT),\n- 235 TDS_TOKEN_FLAG(PARAMFMT),\n- 236 TDS_TOKEN_FLAG(DONE),\n- 237 TDS_TOKEN_FLAG(ROW),\n- 238 TDS_TOKEN_FLAG(COMPUTE),\n- 239 TDS_TOKEN_FLAG(PROC),\n- 240 TDS_TOKEN_FLAG(MSG),\n- 241 TDS_TOKEN_FLAG(ENV),\n- 242 TDS_TOKEN_RESULTS =\n-TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,\n- 243 TDS_TOKEN_TRAILING =\n-TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS\n- 244};\n- 245\n-249enum tds_end\n- 250{\n- 251 TDS_DONE_FINAL = 0x00\n-252 , TDS_DONE_MORE_RESULTS = 0x01\n-253 , TDS_DONE_ERROR = 0x02\n-254 , TDS_DONE_INXACT = 0x04\n-255 , TDS_DONE_PROC = 0x08\n-256 , TDS_DONE_COUNT = 0x10\n-257 , TDS_DONE_CANCELLED = 0x20\n-258 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */\n- 259 , TDS_DONE_SRVERROR = 0x100\n- 261 /* after the above flags, a TDS_DONE packet has a field describing the\n-state of the transaction */\n-262 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */\n- 263 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */\n- 264 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */\n- 265 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */\n- 266 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */\n- 267};\n- 268\n- 269\n- 270/*\n- 271 * TDSERRNO is emitted by libtds to the client library's error handler\n- 272 * (which may in turn call the client's error handler).\n- 273 * These match the db-lib msgno, because the same values have the same\n-meaning\n- 274 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).\n- 275 */\n- 276typedef enum { TDSEOK = TDS_SUCCESS,\n- 277 TDSEVERDOWN = 100,\n- 278 TDSEINPROGRESS,\n- 279 TDSEICONVIU = 2400,\n- 280 TDSEICONVAVAIL = 2401,\n- 281 TDSEICONVO = 2402,\n- 282 TDSEICONVI = 2403,\n- 283 TDSEICONV2BIG = 2404,\n- 284 TDSEPORTINSTANCE = 2500,\n- 285 TDSESYNC = 20001,\n- 286 TDSEFCON = 20002,\n- 287 TDSETIME = 20003,\n- 288 TDSEREAD = 20004,\n- 289 TDSEWRIT = 20006,\n- 290 TDSESOCK = 20008,\n- 291 TDSECONN = 20009,\n- 292 TDSEMEM = 20010,\n- 293 TDSEINTF = 20012, /* Server name not found in interface file */\n- 294 TDSEUHST = 20013, /* Unknown host machine name. */\n- 295 TDSEPWD = 20014,\n- 296 TDSESEOF = 20017,\n- 297 TDSERPND = 20019,\n- 298 TDSEBTOK = 20020,\n- 299 TDSEOOB = 20022,\n- 300 TDSECLOS = 20056,\n- 301 TDSEUSCT = 20058,\n- 302 TDSEUTDS = 20146,\n- 303 TDSEEUNR = 20185,\n- 304 TDSECAP = 20203,\n- 305 TDSENEG = 20210,\n- 306 TDSEUMSG = 20212,\n- 307 TDSECAPTYP = 20213,\n- 308 TDSECONF = 20214,\n- 309 TDSEBPROBADTYP = 20250,\n- 310 TDSECLOSEIN = 20292\n- 311} TDSERRNO;\n- 312\n- 313\n- 314enum {\n- 315 TDS_CUR_ISTAT_UNUSED = 0x00,\n- 316 TDS_CUR_ISTAT_DECLARED = 0x01,\n- 317 TDS_CUR_ISTAT_OPEN = 0x02,\n- 318 TDS_CUR_ISTAT_CLOSED = 0x04,\n- 319 TDS_CUR_ISTAT_RDONLY = 0x08,\n- 320 TDS_CUR_ISTAT_UPDATABLE = 0x10,\n- 321 TDS_CUR_ISTAT_ROWCNT = 0x20,\n- 322 TDS_CUR_ISTAT_DEALLOC = 0x40\n- 323};\n- 324\n- 325/* string types */\n- 326#define TDS_NULLTERM -9\n- 327\n- 328\n-329typedef union tds_option_arg\n- 330{\n- 331 TDS_TINYINT ti;\n- 332 TDS_INT i;\n- 333 TDS_CHAR *c;\n- 334} TDS_OPTION_ARG;\n- 335\n- 336\n- 337typedef enum tds_encryption_level {\n- 338 TDS_ENCRYPTION_DEFAULT,\n- 339 TDS_ENCRYPTION_OFF,\n- 340 TDS_ENCRYPTION_REQUEST,\n- 341 TDS_ENCRYPTION_REQUIRE\n- 342} TDS_ENCRYPTION_LEVEL;\n- 343\n- 344/*\n- 345 * TODO use system macros for optimization\n- 346 * See mcrypt for reference and linux kernel source for optimization\n- 347 * check if unaligned access and use fast write/read when implemented\n- 348 */\n- 349#define TDS_BYTE_SWAP16(value) \\\n- 350 (((((uint16_t)value)<<8) & 0xFF00u) | \\\n- 351 ((((uint16_t)value)>>8) & 0x00FFu))\n- 352\n- 353#define TDS_BYTE_SWAP32(value) \\\n- 354 (((((uint32_t)value)<<24) & 0xFF000000u)| \\\n- 355 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \\\n- 356 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \\\n- 357 ((((uint32_t)value)>>24) & 0x000000FFu))\n- 358\n- 359#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <=\n-TDS_DONEINPROC_TOKEN)\n- 360\n- 361enum {\n- 362 TDS_TYPEFLAG_INVALID = 0,\n- 363 TDS_TYPEFLAG_NULLABLE = 1,\n- 364 TDS_TYPEFLAG_FIXED = 2,\n- 365 TDS_TYPEFLAG_VARIABLE = 4,\n- 366 TDS_TYPEFLAG_COLLATE = 8,\n- 367 TDS_TYPEFLAG_ASCII = 16,\n- 368 TDS_TYPEFLAG_UNICODE = 32,\n- 369 TDS_TYPEFLAG_BINARY = 64,\n- 370 TDS_TYPEFLAG_DATETIME = 128,\n- 371 TDS_TYPEFLAG_NUMERIC = 256,\n- 372 TDS_TYPEFLAG_VARIANT = 512,\n- 373};\n- 374\n- 375extern const uint16_t tds_type_flags_ms[256];\n- 376#if 0\n- 377extern const uint16_t tds_type_flags_syb[256];\n- 378extern const char *const tds_type_names[256];\n- 379#endif\n- 380\n- 381#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)\n- 382#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE)\n-!= 0)\n- 383#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE)\n-!= 0)\n- 384#define is_variant_inner_type(x) ((tds_type_flags_ms[x] &\n-TDS_TYPEFLAG_VARIANT) != 0)\n- 385\n- 386\n- 387#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)\n- 388#define is_blob_col(x) ((x)->column_varint_size > 2)\n- 389/* large type means it has a two byte size field */\n- 390/* define is_large_type(x) (x>128) */\n- 391#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)\n-393#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME)\n-!= 0)\n- 394#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE)\n-!= 0)\n- 395#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE)\n-!= 0)\n- 396#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)\n- 397#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) !=\n-0)\n- 398#define is_char_type(x) ((tds_type_flags_ms[x] &\n-(TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)\n- 399#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))\n- 400static inline\n- 401bool is_tds_type_valid(int type)\n- 402{\n- 403 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;\n- 404}\n- 405\n- 406\n- 407#define TDS_MAX_CAPABILITY 32\n- 408#define MAXPRECISION 77\n- 409#define TDS_MAX_CONN 4096\n- 410#define TDS_MAX_DYNID_LEN 30\n- 411\n- 412/* defaults to use if no others are found */\n- 413#define TDS_DEF_SERVER \"SYBASE\"\n- 414#define TDS_DEF_BLKSZ 512\n- 415#define TDS_DEF_CHARSET \"iso_1\"\n- 416#define TDS_DEF_LANG \"us_english\"\n- 417#if TDS50\n- 418#define TDS_DEFAULT_VERSION 0x500\n- 419#define TDS_DEF_PORT 4000\n- 420#elif TDS71\n- 421#define TDS_DEFAULT_VERSION 0x701\n- 422#define TDS_DEF_PORT 1433\n- 423#elif TDS72\n- 424#define TDS_DEFAULT_VERSION 0x702\n- 425#define TDS_DEF_PORT 1433\n- 426#elif TDS73\n- 427#define TDS_DEFAULT_VERSION 0x703\n- 428#define TDS_DEF_PORT 1433\n- 429#elif TDS74\n- 430#define TDS_DEFAULT_VERSION 0x704\n- 431#define TDS_DEF_PORT 1433\n- 432#else\n- 433#define TDS_DEFAULT_VERSION 0x000\n- 434#define TDS_DEF_PORT 1433\n- 435#endif\n- 436\n- 437/* normalized strings from freetds.conf file */\n- 438#define TDS_STR_VERSION \"tds version\"\n- 439#define TDS_STR_BLKSZ \"initial block size\"\n- 440#define TDS_STR_SWAPDT \"swap broken dates\"\n- 441#define TDS_STR_DUMPFILE \"dump file\"\n- 442#define TDS_STR_DEBUGLVL \"debug level\"\n- 443#define TDS_STR_DEBUGFLAGS \"debug flags\"\n- 444#define TDS_STR_TIMEOUT \"timeout\"\n- 445#define TDS_STR_QUERY_TIMEOUT \"query timeout\"\n- 446#define TDS_STR_CONNTIMEOUT \"connect timeout\"\n- 447#define TDS_STR_HOSTNAME \"hostname\"\n- 448#define TDS_STR_HOST \"host\"\n- 449#define TDS_STR_PORT \"port\"\n- 450#define TDS_STR_TEXTSZ \"text size\"\n- 451/* for big endian hosts, obsolete, ignored */\n- 452#define TDS_STR_EMUL_LE \"emulate little endian\"\n- 453#define TDS_STR_CHARSET \"charset\"\n- 454#define TDS_STR_CLCHARSET \"client charset\"\n- 455#define TDS_STR_USE_UTF_16 \"use utf-16\"\n- 456#define TDS_STR_LANGUAGE \"language\"\n- 457#define TDS_STR_APPENDMODE \"dump file append\"\n- 458#define TDS_STR_DATEFMT \"date format\"\n- 459#define TDS_STR_INSTANCE \"instance\"\n- 460#define TDS_STR_ASA_DATABASE \"asa database\"\n- 461#define TDS_STR_DATABASE \"database\"\n- 462#define TDS_STR_ENCRYPTION \"encryption\"\n- 463#define TDS_STR_USENTLMV2 \"use ntlmv2\"\n- 464#define TDS_STR_USELANMAN \"use lanman\"\n- 465/* conf values */\n- 466#define TDS_STR_ENCRYPTION_OFF \"off\"\n- 467#define TDS_STR_ENCRYPTION_REQUEST \"request\"\n- 468#define TDS_STR_ENCRYPTION_REQUIRE \"require\"\n- 469/* Defines to enable optional GSSAPI delegation */\n- 470#define TDS_GSSAPI_DELEGATION \"enable gssapi delegation\"\n- 471/* Mutual authentication */\n- 472#define TDS_STR_MUTUAL_AUTHENTICATION \"mutual authentication\"\n- 473/* Kerberos realm name */\n- 474#define TDS_STR_REALM \"realm\"\n- 475/* Kerberos SPN */\n- 476#define TDS_STR_SPN \"spn\"\n- 477/* CA file */\n- 478#define TDS_STR_CAFILE \"ca file\"\n- 479/* CRL file */\n- 480#define TDS_STR_CRLFILE \"crl file\"\n- 481/* check SSL hostname */\n- 482#define TDS_STR_CHECKSSLHOSTNAME \"check certificate hostname\"\n- 483/* database filename to attach on login (MSSQL) */\n- 484#define TDS_STR_DBFILENAME \"database filename\"\n- 485/* Application Intent MSSQL 2012 support */\n- 486#define TDS_STR_READONLY_INTENT \"read-only intent\"\n- 487/* configurable cipher suite to send to openssl's SSL_set_cipher_list()\n-function */\n- 488#define TLS_STR_OPENSSL_CIPHERS \"openssl ciphers\"\n- 489/* enable old TLS v1, required for instance if you are using a really old\n-Windows XP */\n- 490#define TDS_STR_ENABLE_TLS_V1 \"enable tls v1\"\n- 491\n- 492\n- 493/* TODO do a better check for alignment than this */\n-494typedef union\n- 495{\n- 496 void *p;\n- 497 int i;\n- 498 int64_t ui;\n- 499} tds_align_struct;\n- 500\n- 501#define TDS_ALIGN_SIZE sizeof(tds_align_struct)\n- 502\n-503typedef struct tds_capability_type\n- 504{\n- 505 unsigned char type;\n- 506 unsigned char len; /* always sizeof(values) */\n- 507 unsigned char values[TDS_MAX_CAPABILITY/2-2];\n- 508} TDS_CAPABILITY_TYPE;\n- 509\n-510typedef struct tds_capabilities\n- 511{\n- 512 TDS_CAPABILITY_TYPE types[2];\n- 513} TDS_CAPABILITIES;\n- 514\n- 515#define TDS_MAX_LOGIN_STR_SZ 128\n-516typedef struct tds_login\n- 517{\n-518 DSTR server_name;\n-519 int port;\n-520 TDS_USMALLINT tds_version;\n- 521 int block_size;\n- 522 DSTR language; /* e.g. us-english */\n-523 DSTR server_charset;\n- 524 TDS_INT connect_timeout;\n- 525 DSTR client_host_name;\n- 526 DSTR server_host_name;\n-527 DSTR server_realm_name;\n-528 DSTR server_spn;\n-529 DSTR db_filename;\n-530 DSTR cafile;\n-531 DSTR crlfile;\n- 532 DSTR openssl_ciphers;\n- 533 DSTR app_name;\n-534 DSTR user_name;\n-535 DSTR password;\n-536 DSTR new_password;\n- 538 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */\n- 539 TDS_TINYINT encryption_level;\n- 540\n- 541 TDS_INT query_timeout;\n- 542 TDS_CAPABILITIES capabilities;\n- 543 DSTR client_charset;\n- 544 DSTR database;\n- 545\n-546 struct addrinfo *ip_addrs;\n- 547 DSTR instance_name;\n- 548 DSTR dump_file;\n- 549 int debug_flags;\n- 550 int text_size;\n- 551 DSTR routing_address;\n- 552 uint16_t routing_port;\n- 553\n- 554 unsigned char option_flag2;\n- 555\n-556 unsigned int bulk_copy:1;\n- 557 unsigned int suppress_language:1;\n- 558 unsigned int gssapi_use_delegation:1;\n- 559 unsigned int mutual_authentication:1;\n- 560 unsigned int use_ntlmv2:1;\n- 561 unsigned int use_ntlmv2_specified:1;\n- 562 unsigned int use_lanman:1;\n- 563 unsigned int mars:1;\n- 564 unsigned int use_utf16:1;\n- 565 unsigned int use_new_password:1;\n- 566 unsigned int valid_configuration:1;\n- 567 unsigned int check_ssl_hostname:1;\n- 568 unsigned int readonly_intent:1;\n- 569 unsigned int enable_tls_v1:1;\n- 570 unsigned int server_is_valid:1;\n- 571} TDSLOGIN;\n- 572\n-573typedef struct tds_headers\n- 574{\n- 575 const char *qn_options;\n- 576 const char *qn_msgtext;\n- 577 TDS_INT qn_timeout;\n- 578 /* TDS 7.4+: trace activity ID char[20] */\n- 579} TDSHEADERS;\n- 580\n-581typedef struct tds_locale\n- 582{\n- 583 char *language;\n- 584 char *server_charset;\n- 585 char *date_fmt;\n- 586} TDSLOCALE;\n- 587\n-592typedef struct tds_blob\n- 593{\n- 594 TDS_CHAR *textvalue;\n- 595 TDS_CHAR textptr[16];\n- 596 TDS_CHAR timestamp[8];\n- 597 unsigned char valid_ptr;\n-598} TDSBLOB;\n- 599\n-603typedef struct tds_variant\n- 604{\n- 605 /* this MUST have same position and place of textvalue in tds_blob */\n- 606 TDS_CHAR *data;\n- 607 TDS_INT size;\n- 608 TDS_INT data_len;\n- 609 TDS_SERVER_TYPE type;\n- 610 TDS_UCHAR collation[5];\n-611} TDSVARIANT;\n- 612\n-617typedef struct tds_encoding\n- 618{\n-620 const char *name;\n- 621 unsigned char min_bytes_per_char;\n- 622 unsigned char max_bytes_per_char;\n-624 unsigned char canonic;\n-625} TDS_ENCODING;\n- 626\n-627typedef struct tds_bcpcoldata\n- 628{\n- 629 TDS_UCHAR *data;\n- 630 TDS_INT datalen;\n- 631 bool is_null;\n- 632} BCPCOLDATA;\n- 633\n- 634\n- 635typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);\n- 636typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);\n- 637typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);\n- 638typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);\n- 639typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);\n- 640typedef int tds_func_check(const TDSCOLUMN *col);\n- 641\n-642typedef struct tds_column_funcs\n- 643{\n- 644 tds_func_get_info *get_info;\n- 645 tds_func_get_data *get_data;\n- 646 tds_func_row_len *row_len;\n-652 tds_func_put_info *put_info;\n-662 tds_func_put_data *put_data;\n- 663#if ENABLE_EXTRA_CHECKS\n- 678 tds_func_check *check;\n- 679#endif\n- 680#if 0\n- 681 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);\n- 682#endif\n- 683} TDSCOLUMNFUNCS;\n- 684\n-688struct tds_column\n- 689{\n- 690 const TDSCOLUMNFUNCS *funcs;\n- 691 TDS_INT column_usertype;\n- 692 TDS_INT column_flags;\n- 693\n-694 TDS_INT column_size;\n-696 TDS_SERVER_TYPE column_type;\n-701 TDS_TINYINT column_varint_size;\n-703 TDS_TINYINT column_prec;\n-704 TDS_TINYINT column_scale;\n- 706 struct\n- 707 {\n- 708 TDS_SERVER_TYPE column_type;\n- 709 TDS_INT column_size;\n- 710 } on_server;\n- 711\n-712 TDSICONV *char_conv;\n- 714 DSTR table_name;\n- 715 DSTR column_name;\n- 716 DSTR table_column_name;\n- 717\n- 718 unsigned char *column_data;\n- 719 void (*column_data_free)(struct tds_column *column);\n- 720 unsigned char column_nullable:1;\n- 721 unsigned char column_writeable:1;\n- 722 unsigned char column_identity:1;\n- 723 unsigned char column_key:1;\n- 724 unsigned char column_hidden:1;\n- 725 unsigned char column_output:1;\n- 726 unsigned char column_timestamp:1;\n- 727 unsigned char column_computed:1;\n- 728 TDS_UCHAR column_collation[5];\n- 729\n- 730 /* additional fields flags for compute results */\n- 731 TDS_SMALLINT column_operand;\n- 732 TDS_TINYINT column_operator;\n- 733\n- 734 /* FIXME this is data related, not column */\n-736 TDS_INT column_cur_size;\n- 737\n- 738 /* related to binding or info stored by client libraries */\n- 739 /* FIXME find a best place to store these data, some are unused */\n- 740 TDS_SMALLINT column_bindtype;\n- 741 TDS_SMALLINT column_bindfmt;\n- 742 TDS_UINT column_bindlen;\n- 743 TDS_SMALLINT *column_nullbind;\n- 744 TDS_CHAR *column_varaddr;\n- 745 TDS_INT *column_lenbind;\n- 746 TDS_INT column_textpos;\n- 747 TDS_INT column_text_sqlgetdatapos;\n- 748 TDS_CHAR column_text_sqlputdatainfo;\n- 749 unsigned char column_iconv_left;\n- 750 char column_iconv_buf[9];\n- 751\n- 752 BCPCOLDATA *bcp_column_data;\n-761 TDS_INT bcp_prefix_len;\n- 762 TDS_INT bcp_term_len;\n- 763 TDS_CHAR *bcp_terminator;\n- 764};\n- 765\n- 766\n-768typedef struct tds_result_info\n- 769{\n- 770 /* TODO those fields can became a struct */\n- 771 TDSCOLUMN **columns;\n- 772 TDS_USMALLINT num_cols;\n- 773 TDS_USMALLINT computeid;\n- 774 TDS_INT ref_count;\n- 775 TDSSOCKET *attached_to;\n- 776 unsigned char *current_row;\n- 777 void (*row_free)(struct tds_result_info* result, unsigned char *row);\n- 778 TDS_INT row_size;\n- 779\n- 780 TDS_SMALLINT *bycolumns;\n- 781 TDS_USMALLINT by_cols;\n- 782 bool rows_exist;\n- 783 /* TODO remove ?? used only in dblib */\n- 784 bool more_results;\n-785} TDSRESULTINFO;\n- 786\n-788typedef enum tds_states\n- 789{\n-790 TDS_IDLE,\n-791 TDS_WRITING,\n-792 TDS_SENDING,\n-793 TDS_PENDING,\n-794 TDS_READING,\n- 795 TDS_DEAD\n-796} TDS_STATE;\n- 797\n- 798typedef enum tds_operations\n- 799{\n- 800 TDS_OP_NONE = 0,\n- 801\n- 802 /* mssql operations */\n- 803 TDS_OP_CURSOR = TDS_SP_CURSOR,\n- 804 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,\n- 805 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,\n- 806 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,\n- 807 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,\n- 808 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,\n- 809 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,\n- 810 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,\n- 811 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,\n- 812 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,\n- 813 TDS_OP_PREPARE = TDS_SP_PREPARE,\n- 814 TDS_OP_EXECUTE = TDS_SP_EXECUTE,\n- 815 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,\n- 816 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,\n- 817 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,\n- 818\n- 819 /* sybase operations */\n- 820 TDS_OP_DYN_DEALLOC = 100,\n- 821} TDS_OPERATION;\n- 822\n- 823#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)\n- 824#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)\n- 825#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)\n- 826#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)\n- 827#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)\n- 828#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)\n- 829#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)\n- 830#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)\n- 831#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)\n- 832\n- 833#define TDS_DBGFLAG_FUNC 0x80\n- 834#define TDS_DBGFLAG_INFO2 0x40\n- 835#define TDS_DBGFLAG_INFO1 0x20\n- 836#define TDS_DBGFLAG_NETWORK 0x10\n- 837#define TDS_DBGFLAG_WARN 0x08\n- 838#define TDS_DBGFLAG_ERROR 0x04\n- 839#define TDS_DBGFLAG_SEVERE 0x02\n- 840#define TDS_DBGFLAG_ALL 0xfff\n- 841#define TDS_DBGFLAG_LOGIN 0x0800\n- 842#define TDS_DBGFLAG_HEADER 0x0400\n- 843#define TDS_DBGFLAG_PID 0x1000\n- 844#define TDS_DBGFLAG_TIME 0x2000\n- 845#define TDS_DBGFLAG_SOURCE 0x4000\n- 846#define TDS_DBGFLAG_THREAD 0x8000\n- 847\n- 848#if 0\n- 854enum TDS_DBG_LOG_STATE\n- 855{\n- 856 TDS_DBG_LOGIN = (1 << 0)\n- 858 , TDS_DBG_API = (1 << 1)\n- 859 , TDS_DBG_ASYNC = (1 << 2)\n- 860 , TDS_DBG_DIAG = (1 << 3)\n- 861 , TDS_DBG_error = (1 << 4)\n- 862 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */\n- 863 /* Log FreeTDS runtime/logic error occurs. */\n- 864 , TDS_DBG_PACKET = (1 << 5)\n- 865 , TDS_DBG_LIBTDS = (1 << 6)\n- 866 , TDS_DBG_CONFIG = (1 << 7)\n- 867 , TDS_DBG_DEFAULT = 0xFE\n- 868};\n- 869#endif\n- 870\n- 871typedef struct tds_result_info TDSCOMPUTEINFO;\n- 872\n- 873typedef TDSRESULTINFO TDSPARAMINFO;\n- 874\n-875typedef struct tds_message\n- 876{\n- 877 TDS_CHAR *server;\n- 878 TDS_CHAR *message;\n- 879 TDS_CHAR *proc_name;\n- 880 TDS_CHAR *sql_state;\n- 881 TDS_INT msgno;\n- 882 TDS_INT line_number;\n- 883 /* -1 .. 255 */\n- 884 TDS_SMALLINT state;\n- 885 TDS_TINYINT priv_msg_type;\n- 886 TDS_TINYINT severity;\n- 887 /* for library-generated errors */\n- 888 int oserr;\n- 889} TDSMESSAGE;\n- 890\n-891typedef struct tds_upd_col\n- 892{\n- 893 struct tds_upd_col *next;\n- 894 TDS_INT colnamelength;\n- 895 char * columnname;\n- 896} TDSUPDCOL;\n- 897\n- 898typedef enum {\n- 899 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */\n- 900 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */\n- 901 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */\n- 902 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */\n- 903} TDS_CURSOR_STATE;\n- 904\n-905typedef struct tds_cursor_status\n- 906{\n- 907 TDS_CURSOR_STATE declare;\n- 908 TDS_CURSOR_STATE cursor_row;\n- 909 TDS_CURSOR_STATE open;\n- 910 TDS_CURSOR_STATE fetch;\n- 911 TDS_CURSOR_STATE close;\n- 912 TDS_CURSOR_STATE dealloc;\n- 913} TDS_CURSOR_STATUS;\n- 914\n- 915typedef enum tds_cursor_operation\n- 916{\n- 917 TDS_CURSOR_POSITION = 0,\n- 918 TDS_CURSOR_UPDATE = 1,\n- 919 TDS_CURSOR_DELETE = 2,\n- 920 TDS_CURSOR_INSERT = 4\n- 921} TDS_CURSOR_OPERATION;\n- 922\n- 923typedef enum tds_cursor_fetch\n- 924{\n- 925 TDS_CURSOR_FETCH_NEXT = 1,\n- 926 TDS_CURSOR_FETCH_PREV,\n- 927 TDS_CURSOR_FETCH_FIRST,\n- 928 TDS_CURSOR_FETCH_LAST,\n- 929 TDS_CURSOR_FETCH_ABSOLUTE,\n- 930 TDS_CURSOR_FETCH_RELATIVE\n- 931} TDS_CURSOR_FETCH;\n- 932\n-936typedef struct tds_cursor\n- 937{\n-938 struct tds_cursor *next;\n-939 TDS_INT ref_count;\n-940 char *cursor_name;\n-941 TDS_INT cursor_id;\n-942 TDS_TINYINT options;\n-946 bool defer_close;\n-947 char *query;\n- 948 /* TODO for updatable columns */\n- 949 /* TDS_TINYINT number_upd_cols; */\n- 950 /* TDSUPDCOL *cur_col_list; */\n-951 TDS_INT cursor_rows;\n- 952 /* TDSPARAMINFO *params; */\n-953 TDS_CURSOR_STATUS status;\n- 954 TDS_USMALLINT srv_status;\n- 955 TDSRESULTINFO *res_info;\n-956 TDS_INT type, concurrency;\n-957} TDSCURSOR;\n- 958\n-962typedef struct tds_env\n- 963{\n-965 int block_size;\n- 966 char *language;\n-968 char *charset;\n-970 char *database;\n-971} TDSENV;\n- 972\n-976typedef struct tds_dynamic\n- 977{\n-978 struct tds_dynamic *next;\n-979 TDS_INT ref_count;\n-981 TDS_INT num_id;\n-987 char id[30];\n-993 TDS_TINYINT emulated;\n-997 bool defer_close;\n- 998 /* int dyn_state; */ /* TODO use it */\n-999 TDSPARAMINFO *res_info;\n-1007 TDSPARAMINFO *params;\n-1009 char *query;\n-1010} TDSDYNAMIC;\n- 1011\n- 1012typedef enum {\n- 1013 TDS_MULTIPLE_QUERY,\n- 1014 TDS_MULTIPLE_EXECUTE,\n- 1015 TDS_MULTIPLE_RPC\n- 1016} TDS_MULTIPLE_TYPE;\n- 1017\n-1018typedef struct tds_multiple\n- 1019{\n- 1020 TDS_MULTIPLE_TYPE type;\n- 1021 unsigned int flags;\n- 1022} TDSMULTIPLE;\n- 1023\n- 1024/* forward declaration */\n- 1025typedef struct tds_context TDSCONTEXT;\n- 1026typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE\n-*);\n- 1027\n-1028struct tds_context\n- 1029{\n- 1030 TDSLOCALE *locale;\n- 1031 void *parent;\n- 1032 /* handlers */\n- 1033 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);\n- 1034 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);\n- 1035 int (*int_handler) (void *);\n- 1036 bool money_use_2_digits;\n- 1037};\n- 1038\n- 1039enum TDS_ICONV_ENTRY\n- 1040{\n- 1041 client2ucs2\n- 1042 , client2server_chardata\n- 1043 , initial_char_conv_count /* keep last */\n- 1044};\n- 1045\n-1046typedef struct tds_authentication\n- 1047{\n- 1048 uint8_t *packet;\n- 1049 int packet_len;\n- 1050 /* TDS_MSG_TOKEN type, for TDS5 */\n- 1051 uint16_t msg_type;\n- 1052 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);\n- 1053 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth,\n-size_t len);\n- 1054} TDSAUTHENTICATION;\n- 1055\n-1056typedef struct tds_packet\n- 1057{\n- 1058 struct tds_packet *next;\n- 1059 uint16_t sid;\n- 1060\n- 1061#if ENABLE_ODBC_MARS\n- 1065 uint8_t data_start;\n- 1066#endif\n- 1067\n-1071 unsigned data_len;\n- 1072 unsigned capacity;\n- 1073 unsigned char buf[1];\n- 1074} TDSPACKET;\n- 1075\n- 1076#if ENABLE_ODBC_MARS\n- 1077#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; }\n-while(0)\n- 1078#define tds_packet_get_data_start(pkt) ((pkt)->data_start)\n- 1079#else\n- 1080#define tds_packet_zero_data_start(pkt) do { } while(0)\n- 1081#define tds_packet_get_data_start(pkt) 0\n- 1082#endif\n- 1083\n-1084typedef struct tds_poll_wakeup\n- 1085{\n- 1086 TDS_SYS_SOCKET s_signal, s_signaled;\n- 1087} TDSPOLLWAKEUP;\n- 1088\n- 1089/* field related to connection */\n-1090struct tds_connection\n- 1091{\n- 1092 TDS_USMALLINT tds_version;\n-1093 TDS_UINT product_version;\n- 1094 char *product_name;\n- 1095\n-1096 TDS_SYS_SOCKET s;\n- 1097 TDSPOLLWAKEUP wakeup;\n- 1098 const TDSCONTEXT *tds_ctx;\n- 1099\n-1101 TDSENV env;\n- 1102\n-1107 TDSCURSOR *cursors;\n-1112 TDSDYNAMIC *dyns;\n- 1113\n- 1114 int char_conv_count;\n- 1115 TDSICONV **char_convs;\n- 1116\n- 1117 TDS_UCHAR collation[5];\n- 1118 TDS_UCHAR tds72_transaction[8];\n- 1119\n- 1120 TDS_CAPABILITIES capabilities;\n- 1121 unsigned int use_iconv:1;\n- 1122 unsigned int tds71rev1:1;\n-1123 unsigned int pending_close:1;\n- 1124 unsigned int encrypt_single_packet:1;\n- 1125#if ENABLE_ODBC_MARS\n- 1126 unsigned int mars:1;\n- 1127\n- 1128 TDSSOCKET *in_net_tds;\n- 1129 TDSPACKET *packets;\n- 1130 TDSPACKET *recv_packet;\n- 1131 TDSPACKET *send_packets;\n- 1132 unsigned send_pos, recv_pos;\n- 1133\n- 1134#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)\n- 1135#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)\n- 1136 struct tds_socket **sessions;\n- 1137 unsigned num_sessions;\n- 1138#endif\n- 1139 tds_mutex list_mtx;\n- 1140\n- 1141 unsigned num_cached_packets;\n- 1142 TDSPACKET *packet_cache;\n- 1143\n- 1144 int spid;\n- 1145 int client_spid;\n- 1146\n- 1147 void *tls_session;\n- 1148#if defined(HAVE_GNUTLS)\n- 1149 void *tls_credentials;\n- 1150#elif defined(HAVE_OPENSSL)\n- 1151 void *tls_ctx;\n- 1152#else\n- 1153 void *tls_dummy;\n- 1154#endif\n- 1155 TDSAUTHENTICATION *authentication;\n- 1156 char *server;\n- 1157};\n- 1158\n-1162struct tds_socket\n- 1163{\n- 1164#if ENABLE_ODBC_MARS\n- 1165 TDSCONNECTION *conn;\n- 1166#else\n- 1167 TDSCONNECTION conn[1];\n- 1168#endif\n- 1169\n- 1170 void *parent;\n- 1171\n-1177 unsigned char *in_buf;\n- 1178\n-1185 unsigned char *out_buf;\n- 1186\n-1191 unsigned int out_buf_max;\n-1192 unsigned in_pos;\n-1193 unsigned out_pos;\n-1194 unsigned in_len;\n-1195 unsigned char in_flag;\n-1196 unsigned char out_flag;\n- 1198 unsigned frozen;\n-1203 TDSPACKET *frozen_packets;\n- 1204\n- 1205#if ENABLE_ODBC_MARS\n- 1210 uint16_t sid;\n- 1211\n- 1216 tds_condition packet_cond;\n- 1217\n- 1222 TDSPACKET *sending_packet;\n- 1223 TDS_UINT recv_seq;\n- 1224 TDS_UINT send_seq;\n- 1225 TDS_UINT recv_wnd;\n- 1226 TDS_UINT send_wnd;\n- 1227#endif\n- 1228 /* packet we received */\n- 1229 TDSPACKET *recv_packet;\n-1231 TDSPACKET *send_packet;\n- 1232\n-1238 TDSRESULTINFO *current_results;\n- 1239 TDSRESULTINFO *res_info;\n- 1240 TDS_UINT num_comp_info;\n- 1241 TDSCOMPUTEINFO **comp_info;\n- 1242 TDSPARAMINFO *param_info;\n-1243 TDSCURSOR *cur_cursor;\n-1244 bool bulk_query;\n-1245 bool has_status;\n-1246 bool in_row;\n- 1247 volatile\n-1248 unsigned char in_cancel;\n-1250 TDS_INT ret_status;\n- 1251 TDS_STATE state;\n- 1252\n- 1253 TDS_INT query_timeout;\n-1254 TDS_INT8 rows_affected;\n-1256 TDSDYNAMIC *cur_dyn;\n-1258 TDSLOGIN *login;\n- 1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char\n-*newval);\n- 1261 TDS_OPERATION current_op;\n- 1262\n- 1263 int option_value;\n- 1264 tds_mutex wire_mtx;\n- 1265};\n- 1266\n- 1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)\n- 1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while\n-(0)\n- 1269#define tds_get_parent(tds) ((tds)->parent)\n- 1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)\n- 1271#define tds_get_s(tds) ((tds)->conn->s)\n- 1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)\n- 1273\n- 1274\n- 1275/* config.c */\n- 1276const TDS_COMPILETIME_SETTINGS *tds_get_compiletime_settings(void);\n- 1277typedef void (*TDSCONFPARSE) (const char *option, const char *value, void\n-*param);\n- 1278bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE\n-tds_conf_parse, void *parse_param);\n- 1279bool tds_read_conf_file(TDSLOGIN * login, const char *server);\n- 1280void tds_parse_conf_section(const char *option, const char *value, void\n-*param);\n- 1281TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login,\n-TDSLOCALE * locale);\n- 1282void tds_fix_login(TDSLOGIN* login);\n- 1283TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);\n- 1284struct addrinfo *tds_lookup_host(const char *servername);\n- 1285TDSRET tds_lookup_host_set(const char *servername, struct addrinfo\n-**addr);\n- 1286const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int\n-namemax);\n- 1287char *tds_get_home_file(const char *file);\n- 1288\n- 1289TDSRET tds_set_interfaces_file_loc(const char *interfloc);\n- 1290extern const char STD_DATETIME_FMT[];\n- 1291int tds_parse_boolean(const char *value, int default_value);\n- 1292int tds_config_boolean(const char *option, const char *value, TDSLOGIN *\n-login);\n- 1293\n- 1294TDSLOCALE *tds_get_locale(void);\n- 1295TDSRET tds_alloc_row(TDSRESULTINFO * res_info);\n- 1296TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);\n- 1297BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);\n- 1298TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);\n- 1299/*@observer@*/ const char *tds_prtype(int token);\n- 1300int tds_get_varint_size(TDSCONNECTION * conn, int datatype);\n- 1301TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int\n-usertype);\n- 1302\n- 1303\n- 1304/* iconv.c */\n- 1305TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int\n-use_utf16);\n- 1306void tds_iconv_close(TDSCONNECTION * conn);\n- 1307void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);\n- 1308void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);\n- 1309int tds_iconv_alloc(TDSCONNECTION * conn);\n- 1310void tds_iconv_free(TDSCONNECTION * conn);\n- 1311TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate\n-[5]);\n- 1312\n- 1313\n- 1314/* mem.c */\n- 1315void tds_free_socket(TDSSOCKET * tds);\n- 1316void tds_free_all_results(TDSSOCKET * tds);\n- 1317void tds_free_results(TDSRESULTINFO * res_info);\n- 1318void tds_free_param_results(TDSPARAMINFO * param_info);\n- 1319void tds_free_param_result(TDSPARAMINFO * param_info);\n- 1320void tds_free_msg(TDSMESSAGE * message);\n- 1321void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);\n- 1322void tds_release_cursor(TDSCURSOR **pcursor);\n- 1323void tds_free_bcp_column_data(BCPCOLDATA * coldata);\n- 1324TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);\n- 1325TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT\n-num_cols, TDS_USMALLINT by_cols);\n- 1326TDSCONTEXT *tds_alloc_context(void * parent);\n- 1327void tds_free_context(TDSCONTEXT * locale);\n- 1328TDSPARAMINFO *tds_alloc_param_result(TDSPARAMINFO * old_param);\n- 1329void tds_free_input_params(TDSDYNAMIC * dyn);\n- 1330void tds_release_dynamic(TDSDYNAMIC ** dyn);\n- 1331static inline\n- 1332void tds_release_cur_dyn(TDSSOCKET * tds)\n- 1333{\n- 1334 tds_release_dynamic(&tds->cur_dyn);\n- 1335}\n- 1336void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);\n- 1337void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);\n- 1338TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);\n- 1339char *tds_alloc_client_sqlstate(int msgno);\n- 1340char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);\n- 1341TDSLOGIN *tds_alloc_login(int use_environment);\n- 1342TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);\n- 1343void tds_free_login(TDSLOGIN * login);\n- 1344TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);\n- 1345TDSLOCALE *tds_alloc_locale(void);\n- 1346void *tds_alloc_param_data(TDSCOLUMN * curparam);\n- 1347void tds_free_locale(TDSLOCALE * locale);\n- 1348TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT\n-namelen, const char *query, TDS_INT querylen);\n- 1349void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);\n- 1350TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);\n- 1351TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);\n- 1352void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);\n- 1353void tds_detach_results(TDSRESULTINFO *info);\n- 1354void * tds_realloc(void **pp, size_t new_size);\n- 1355#define TDS_RESIZE(p, n_elem) \\\n- 1356 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))\n- 1357#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))\n- 1358#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))\n- 1359\n- 1360TDSPACKET *tds_alloc_packet(void *buf, unsigned len);\n- 1361TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);\n- 1362void tds_free_packets(TDSPACKET *packet);\n- 1363TDSBCPINFO *tds_alloc_bcpinfo(void);\n- 1364void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);\n- 1365void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);\n- 1366\n- 1367\n- 1368/* login.c */\n- 1369void tds_set_packet(TDSLOGIN * tds_login, int packet_size);\n- 1370void tds_set_port(TDSLOGIN * tds_login, int port);\n- 1371bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;\n- 1372void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);\n- 1373bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;\n- 1374bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;\n- 1375bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;\n- 1376bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;\n- 1377bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;\n- 1378bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset)\n-TDS_WUR;\n- 1379bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;\n- 1380void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver,\n-TDS_TINYINT minor_ver);\n- 1381int tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);\n- 1382\n- 1383\n- 1384/* query.c */\n- 1385void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);\n- 1386\n- 1387TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);\n- 1388TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query,\n-TDSPARAMINFO * params, TDSHEADERS * head);\n- 1389TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);\n- 1390TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char\n-*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);\n- 1391TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query,\n-TDSPARAMINFO * params, TDSHEADERS * head);\n- 1392TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const\n-char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);\n- 1393TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);\n- 1394TDSRET tds_send_cancel(TDSSOCKET * tds);\n- 1395const char *tds_next_placeholder(const char *start);\n- 1396int tds_count_placeholders(const char *query);\n- 1397int tds_needs_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);\n- 1398TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);\n- 1399TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);\n- 1400TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO\n-* params, TDSHEADERS * head);\n- 1401TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command,\n-TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);\n- 1402TDSRET tds_submit_begin_tran(TDSSOCKET *tds);\n- 1403TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont);\n- 1404TDSRET tds_submit_commit(TDSSOCKET *tds, int cont);\n- 1405TDSRET tds_disconnect(TDSSOCKET * tds);\n- 1406size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int\n-idlen);\n- 1407size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int\n-idlen);\n- 1408size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str,\n-int len);\n- 1409const char *tds_skip_comment(const char *s);\n- 1410const char *tds_skip_quoted(const char *s);\n- 1411size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);\n- 1412const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv,\n-const char *s, int len, size_t *out_len);\n- 1413void tds_convert_string_free(const char *original, const char *converted);\n- 1414#if !ENABLE_EXTRA_CHECKS\n- 1415#define tds_convert_string_free(original, converted) \\\n- 1416 do { if (original != converted) free((char*) converted); } while(0)\n- 1417#endif\n- 1418TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol,\n-char *out);\n- 1419\n- 1420TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor,\n-TDSPARAMINFO *params, int *send);\n- 1421TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, int *send);\n- 1422TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO\n-*params, int *send);\n- 1423TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor,\n-TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);\n- 1424TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor,\n-TDS_UINT * row_number, TDS_UINT * row_count);\n- 1425TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);\n- 1426TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);\n- 1427TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *\n-cursor);\n- 1428TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor,\n-TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);\n- 1429TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);\n- 1430\n- 1431TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple,\n-TDS_MULTIPLE_TYPE type, TDSHEADERS * head);\n- 1432TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);\n- 1433TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const\n-char *query, TDSPARAMINFO * params);\n- 1434TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple,\n-TDSDYNAMIC * dyn);\n- 1435\n- 1436\n- 1437/* token.c */\n- 1438TDSRET tds_process_cancel(TDSSOCKET * tds);\n- 1439int tds_get_token_size(int marker);\n- 1440TDSRET tds_process_login_tokens(TDSSOCKET * tds);\n- 1441TDSRET tds_process_simple_query(TDSSOCKET * tds);\n- 1442int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command,\n-TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,\n- 1443 TDS_INT * tds_argsize);\n- 1444TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT *\n-result_type, /*@out@*/ int *done_flags, unsigned flag);\n- 1445\n- 1446\n- 1447/* data.c */\n- 1448void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol,\n-TDS_SERVER_TYPE type);\n- 1449void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol,\n-TDS_SERVER_TYPE type);\n- 1450#ifdef WORDS_BIGENDIAN\n- 1451void tds_swap_datatype(int coltype, void *b);\n- 1452#endif\n- 1453\n- 1454\n- 1455/* tds_convert.c */\n- 1456TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);\n- 1457TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int\n-colsize);\n- 1458extern const char tds_hex_digits[];\n- 1459\n- 1460\n- 1461/* write.c */\n- 1462int tds_init_write_buf(TDSSOCKET * tds);\n- 1463int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);\n- 1464int tds_put_string(TDSSOCKET * tds, const char *buf, int len);\n- 1465int tds_put_int(TDSSOCKET * tds, TDS_INT i);\n- 1466int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);\n- 1467int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);\n-1469#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)\n- 1470int tds_put_byte(TDSSOCKET * tds, unsigned char c);\n- 1471TDSRET tds_flush_packet(TDSSOCKET * tds);\n- 1472int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int\n-ssize);\n- 1473\n- 1474\n- 1475/* read.c */\n- 1476unsigned char tds_get_byte(TDSSOCKET * tds);\n- 1477void tds_unget_byte(TDSSOCKET * tds);\n- 1478unsigned char tds_peek(TDSSOCKET * tds);\n- 1479TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);\n- 1480#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))\n- 1481TDS_UINT tds_get_uint(TDSSOCKET * tds);\n- 1482#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))\n- 1483TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);\n- 1484#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))\n- 1485size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest,\n-size_t dest_size);\n- 1486TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size,\n-TDSCOLUMN * curcol);\n- 1487bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t\n-n);\n- 1488int tds_get_size_by_type(TDS_SERVER_TYPE servertype);\n- 1489DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);\n- 1490\n- 1491\n- 1492/* util.c */\n- 1493int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int\n-errnum);\n- 1494TDS_STATE tds_set_state(TDSSOCKET * tds, TDS_STATE state);\n- 1495void tds_swap_bytes(void *buf, int bytes);\n- 1496unsigned int tds_gettime_ms(void);\n- 1497char *tds_strndup(const void *s, TDS_INTPTR len);\n- 1498\n- 1499\n- 1500/* log.c */\n-1501typedef struct tdsdump_off_item {\n- 1502 struct tdsdump_off_item *next;\n- 1503 tds_thread_id thread_id;\n- 1504} TDSDUMP_OFF_ITEM;\n- 1505void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);\n- 1506void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);\n- 1507int tdsdump_isopen(void);\n- 1508#include \n- 1509int tdsdump_open(const char *filename);\n- 1510#include \n- 1511void tdsdump_close(void);\n- 1512void tdsdump_dump_buf(const char* file, unsigned int level_line, const\n-char *msg, const void *buf, size_t length);\n- 1513void tdsdump_col(const TDSCOLUMN *col);\n- 1514#undef tdsdump_log\n- 1515void tdsdump_log(const char* file, unsigned int level_line, const char\n-*fmt, ...)\n- 1516#if defined(__GNUC__) && __GNUC__ >= 2\n- 1517#if defined(__MINGW32__)\n- 1518 __attribute__ ((__format__ (ms_printf, 3, 4)))\n- 1519#else\n- 1520 __attribute__ ((__format__ (__printf__, 3, 4)))\n- 1521#endif\n- 1522#endif\n- 1523;\n- 1524#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log\n- 1525#define tdsdump_log TDSDUMP_LOG_FAST\n- 1526#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump))\n-tdsdump_dump_buf\n- 1527#define tdsdump_dump_buf TDSDUMP_BUF_FAST\n- 1528\n- 1529extern int tds_write_dump;\n- 1530extern int tds_debug_flags;\n- 1531extern int tds_g_append_mode;\n- 1532\n- 1533\n- 1534/* net.c */\n- 1535TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr,\n-unsigned int port, int timeout, int *p_oserr);\n- 1536void tds_close_socket(TDSSOCKET * tds);\n- 1537int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);\n- 1538int tds7_get_instance_port(struct addrinfo *addr, const char *instance);\n- 1539char *tds_prwsaerror(int erc);\n- 1540void tds_prwsaerror_free(char *s);\n- 1541int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);\n- 1542int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int\n-buflen, int final);\n- 1543#define TDSSELREAD POLLIN\n- 1544#define TDSSELWRITE POLLOUT\n- 1545int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);\n- 1546void tds_connection_close(TDSCONNECTION *conn);\n- 1547int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);\n- 1548int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t\n-buflen);\n- 1549void tds_socket_flush(TDS_SYS_SOCKET sock);\n- 1550int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);\n- 1551int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);\n- 1552void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);\n- 1553void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);\n- 1554static inline TDS_SYS_SOCKET tds_wakeup_get_fd(const TDSPOLLWAKEUP\n-*wakeup)\n- 1555{\n- 1556 return wakeup->s_signaled;\n- 1557}\n- 1558\n- 1559\n- 1560/* packet.c */\n- 1561int tds_read_packet(TDSSOCKET * tds);\n- 1562TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);\n- 1563#if ENABLE_ODBC_MARS\n- 1564int tds_append_cancel(TDSSOCKET *tds);\n- 1565TDSRET tds_append_syn(TDSSOCKET *tds);\n- 1566TDSRET tds_append_fin(TDSSOCKET *tds);\n- 1567#else\n- 1568int tds_put_cancel(TDSSOCKET * tds);\n- 1569#endif\n- 1570\n-1571typedef struct tds_freeze {\n-1573 TDSSOCKET *tds;\n-1575 TDSPACKET *pkt;\n-1577 unsigned pkt_pos;\n-1579 unsigned size_len;\n- 1580} TDSFREEZE;\n- 1581\n- 1582void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);\n- 1583size_t tds_freeze_written(TDSFREEZE *freeze);\n- 1584TDSRET tds_freeze_abort(TDSFREEZE *freeze);\n- 1585TDSRET tds_freeze_close(TDSFREEZE *freeze);\n- 1586TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);\n- 1587\n- 1588static void inline\n- 1589tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)\n- 1590{\n- 1591 tds->send_packet = pkt;\n- 1592 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);\n- 1593}\n- 1594\n- 1595/* Macros to allow some indentation of the packets.\n- 1596 *\n- 1597 * The 3 nested fake loops require some explanation:\n- 1598 * - first is to allows to declare variables;\n- 1599 * - second is to force using brackets;\n- 1600 * - third is to avoids that a break inside will skip the close.\n- 1601 */\n- 1602#define TDS_START_LEN_GENERIC(tds_socket, len) do { \\\n- 1603 TDSFREEZE current_freeze[1]; \\\n- 1604 tds_freeze((tds_socket), current_freeze, (len)); do { do\n- 1605#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze),\n-0); } while(0);\n- 1606\n- 1607#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC\n-(tds_socket, 1)\n- 1608#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC\n-(tds_socket, 2)\n- 1609#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket,\n-4)\n- 1610\n- 1611/* vstrbuild.c */\n- 1612TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char\n-*text, int textlen, const char *formats, int formatlen,\n- 1613 va_list ap);\n- 1614\n- 1615\n- 1616/* numeric.c */\n- 1617char *tds_money_to_string(const TDS_MONEY * money, char *s, bool\n-use_2_digits);\n- 1618TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);\n- 1619TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char\n-new_prec, unsigned char new_scale);\n- 1620\n- 1621\n- 1622/* getmac.c */\n- 1623void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);\n- 1624\n- 1625\n- 1626/* challenge.c */\n- 1627#ifndef HAVE_SSPI\n- 1628TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET * tds);\n- 1629TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);\n- 1630#else\n- 1631TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);\n- 1632#endif\n- 1633TDSRET tds5_gss_send(TDSSOCKET *tds);\n- 1634\n- 1635\n- 1636/* random.c */\n- 1637void tds_random_buffer(unsigned char *out, int len);\n- 1638\n- 1639\n- 1640/* sec_negotiate.c */\n- 1641TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);\n- 1642static inline\n- 1643void tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned\n-msg_type)\n- 1644{\n- 1645 if (tds_auth)\n- 1646 tds_auth->msg_type = msg_type;\n- 1647}\n- 1648\n- 1649\n- 1650/* bulk.c */\n- 1651\n-1653enum tds_bcp_directions\n- 1654{\n- 1655 TDS_BCP_IN = 1,\n- 1656 TDS_BCP_OUT = 2,\n- 1657 TDS_BCP_QUERYOUT = 3\n- 1658};\n- 1659\n-1660struct tds_bcpinfo\n- 1661{\n- 1662 const char *hint;\n- 1663 void *parent;\n- 1664 DSTR tablename;\n- 1665 TDS_CHAR *insert_stmt;\n- 1666 TDS_INT direction;\n- 1667 TDS_INT identity_insert_on;\n- 1668 TDS_INT xfer_init;\n- 1669 TDS_INT bind_count;\n- 1670 TDSRESULTINFO *bindinfo;\n- 1671};\n- 1672\n- 1673TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n- 1674typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN\n-*bcpcol, int offset);\n- 1675typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int\n-offset);\n- 1676TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo,\n-tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);\n- 1677TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);\n- 1678TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n- 1679TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n- 1680\n- 1681TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,\n- 1682 const char *terminator, size_t term_len, char **outbuf, size_t *\n-outbytes);\n- 1683\n- 1684TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char\n-*textptr, const char *timestamp, int with_log, TDS_UINT size);\n- 1685TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text,\n-TDS_UINT size);\n- 1686TDSRET tds_writetext_end(TDSSOCKET *tds);\n- 1687\n- 1688\n- 1689static inline\n- 1690bool tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned\n-cap_num)\n- 1691{\n- 1692 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) &\n-1;\n- 1693}\n- 1694#define tds_capability_has_req(conn, cap) \\\n- 1695 tds_capability_enabled(&conn->capabilities.types[0], cap)\n- 1696#define tds_capability_has_res(conn, cap) \\\n- 1697 tds_capability_enabled(&conn->capabilities.types[1], cap)\n- 1698\n- 1699#define IS_TDS42(x) (x->tds_version==0x402)\n- 1700#define IS_TDS46(x) (x->tds_version==0x406)\n- 1701#define IS_TDS50(x) (x->tds_version==0x500)\n- 1702#define IS_TDS70(x) (x->tds_version==0x700)\n- 1703#define IS_TDS71(x) (x->tds_version==0x701)\n- 1704#define IS_TDS72(x) (x->tds_version==0x702)\n- 1705#define IS_TDS73(x) (x->tds_version==0x703)\n- 1706\n- 1707#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)\n- 1708#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)\n- 1709#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)\n- 1710#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)\n- 1711#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)\n- 1712#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)\n- 1713\n- 1714#define TDS_MAJOR(x) ((x)->tds_version >> 8)\n- 1715#define TDS_MINOR(x) ((x)->tds_version & 0xff)\n- 1716\n- 1717#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)\n- 1718\n-1720#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))\n-1722#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)\n- 1723\n-1727#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))\n- 1728\n- 1729/* TODO test if not similar to ms one*/\n-1731#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)\n- 1732\n- 1733#ifdef __cplusplus\n- 1734#if 0\n- 1735{\n- 1736#endif\n- 1737}\n- 1738#endif\n- 1739\n- 1740#include \n- 1741\n- 1742#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))\n- 1743#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)\n-(v)))\n- 1744#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))\n- 1745\n- 1746#endif /* _tds_h_ */\n-tds_iconv_alloc\n-int tds_iconv_alloc(TDSCONNECTION *conn)\n-Allocate iconv stuff.\n-Definition iconv.c:307\n-tds_get_conversion_type\n-TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)\n-Return type suitable for conversions (convert all nullable types to fixed type)\n-Definition tds_types.h:125\n-tds_strndup\n-char * tds_strndup(const void *s, TDS_INTPTR len)\n-Copy a string of length len to a new allocated buffer This function does not\n-read more than len bytes...\n-Definition util.c:406\n-tds_set_state\n-TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)\n-Set state of TDS connection, with logging and checking.\n-Definition util.c:58\n-TDS_COMPILETIME_SETTINGS\n-struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS\n-A structure to hold all the compile-time settings.\n-TDSRESULTINFO\n-struct tds_result_info TDSRESULTINFO\n-Hold information for any results.\n-tdsdump_open\n-int tdsdump_open(const char *filename)\n-Create and truncate a human readable dump file for the TDS traffic.\n-Definition log.c:131\n-TDSVARIANT\n-struct tds_variant TDSVARIANT\n-Store variant informations.\n-tdsdump_close\n-void tdsdump_close(void)\n-Close the TDS dump log file.\n-Definition log.c:212\n-tds_set_column_type\n-void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol,\n-TDS_SERVER_TYPE type)\n-Set type of column initializing all dependency.\n-Definition data.c:224\n-tds_set_server\n-bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR\n-Set the servername in a TDSLOGIN structure.\n-Definition login.c:129\n-TDSDATEREC\n-struct tdsdaterec TDSDATEREC\n-Used by tds_datecrack.\n-tds_get_locale\n-TDSLOCALE * tds_get_locale(void)\n-Get locale information.\n-Definition locale.c:50\n-TDSENV\n-struct tds_env TDSENV\n-Current environment as reported by the server.\n-tds_write_dump\n-int tds_write_dump\n-Tell if TDS debug logging is turned on or off.\n-Definition log.c:58\n-TDSBLOB\n-struct tds_blob TDSBLOB\n-Information about blobs (e.g.\n-tds_get_size_by_type\n-int tds_get_size_by_type(TDS_SERVER_TYPE servertype)\n-Return the number of bytes needed by specified type.\n-Definition tds_types.h:9\n-tds_numeric_bytes_per_prec\n-const int tds_numeric_bytes_per_prec[]\n-The following little table is indexed by precision and will tell us the number\n-of bytes required to s...\n-Definition numeric.c:41\n-tds_bcp_start_copy_in\n-TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n-Start bulk copy to server.\n-Definition bulk.c:916\n-tds_numeric_to_string\n-TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)\n-Definition numeric.c:95\n-tds_get_varint_size\n-int tds_get_varint_size(TDSCONNECTION *conn, int datatype)\n-tds_get_varint_size() returns the size of a variable length integer returned in\n-a result string\n-Definition tds_types.h:57\n-tds_writetext_start\n-TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char\n-*textptr, const char *timestamp, int with_log, TDS_UINT size)\n-Start writing writetext request.\n-Definition bulk.c:1147\n-tds_bcp_fread\n-TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char\n-*terminator, size_t term_len, char **outbuf, size_t *outbytes)\n-Read a data file, passing the data through iconv().\n-Definition bulk.c:1077\n-tds_bcp_start\n-TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n-Start sending BCP data to server.\n-Definition bulk.c:866\n-TDSDYNAMIC\n-struct tds_dynamic TDSDYNAMIC\n-Holds information for a dynamic (also called prepared) query.\n-tds_set_param_type\n-void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE\n-type)\n-Set type of column initializing all dependency.\n-Definition data.c:246\n-tds_states\n-tds_states\n-values for tds->state\n-Definition tds.h:789\n-TDS_PENDING\n-@ TDS_PENDING\n-cilent is waiting for data\n-Definition tds.h:793\n-TDS_SENDING\n-@ TDS_SENDING\n-client would send data\n-Definition tds.h:792\n-TDS_READING\n-@ TDS_READING\n-client is reading data\n-Definition tds.h:794\n-TDS_WRITING\n-@ TDS_WRITING\n-client is writing data\n-Definition tds.h:791\n-TDS_IDLE\n-@ TDS_IDLE\n-no data expected\n-Definition tds.h:790\n-TDS_DEAD\n-@ TDS_DEAD\n-no connection\n-Definition tds.h:795\n-tds_end\n-tds_end\n-Flags returned in TDS_DONE token.\n-Definition tds.h:250\n-TDS_DONE_CANCELLED\n-@ TDS_DONE_CANCELLED\n-acknowledging an attention command (usually a cancel)\n-Definition tds.h:257\n-TDS_DONE_MORE_RESULTS\n-@ TDS_DONE_MORE_RESULTS\n-more results follow\n-Definition tds.h:252\n-TDS_DONE_SRVERROR\n-@ TDS_DONE_SRVERROR\n-SQL server server error.\n-Definition tds.h:259\n-TDS_DONE_FINAL\n-@ TDS_DONE_FINAL\n-final result set, command completed successfully.\n-Definition tds.h:251\n-TDS_DONE_ERROR\n-@ TDS_DONE_ERROR\n-error occurred\n-Definition tds.h:253\n-TDS_DONE_INXACT\n-@ TDS_DONE_INXACT\n-transaction in progress\n-Definition tds.h:254\n-TDS_DONE_PROC\n-@ TDS_DONE_PROC\n-results are from a stored procedure\n-Definition tds.h:255\n-TDS_DONE_COUNT\n-@ TDS_DONE_COUNT\n-count field in packet is valid\n-Definition tds.h:256\n-tdsdump_col\n-void tdsdump_col(const TDSCOLUMN *col)\n-Write a column value to the debug log.\n-Definition log.c:455\n-tds_writetext_continue\n-TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT\n-size)\n-Send some data in the writetext request started by tds_writetext_start.\n-Definition bulk.c:1185\n-tdserror\n-int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)\n-Call the client library's error handler (for library-generated errors only)\n-Definition util.c:321\n-TDS_STATE\n-enum tds_states TDS_STATE\n-values for tds->state\n-tds_writetext_end\n-TDSRET tds_writetext_end(TDSSOCKET *tds)\n-Finish sending writetext data.\n-Definition bulk.c:1202\n-tds_bcp_init\n-TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n-Initialize BCP information.\n-Definition bulk.c:84\n-tds_bcp_directions\n-tds_bcp_directions\n-bcp direction\n-Definition tds.h:1654\n-tds_bcp_send_record\n-TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo,\n-tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)\n-Send one row of data to server.\n-Definition bulk.c:468\n-tds_bcp_done\n-TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)\n-Tell we finished sending BCP data to server.\n-Definition bulk.c:836\n-TDS_ENCODING\n-struct tds_encoding TDS_ENCODING\n-Information relevant to libiconv.\n-tdsdump_off\n-void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)\n-Temporarily turn off logging for current thread.\n-Definition log.c:81\n-tdsdump_on\n-void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)\n-Turn logging back on for current thread.\n-Definition log.c:101\n-TDSCURSOR\n-struct tds_cursor TDSCURSOR\n-Holds informations about a cursor.\n-tds_ntlm_get_auth\n-TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)\n-Build a NTLMSPP packet to send to server.\n-Definition challenge.c:721\n-tds_config_verstr\n-TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)\n-Set TDS version from given string.\n-Definition config.c:923\n-tds_get_compiletime_settings\n-const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void)\n-Return a structure capturing the compile-time settings provided to the\n-configure script.\n-Definition config.c:1344\n-tds_lookup_host\n-struct addrinfo * tds_lookup_host(const char *servername)\n-Get the IP address for a hostname.\n-Definition config.c:987\n-tds_read_conf_section\n-bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE\n-tds_conf_parse, void *parse_param)\n-Read a section of configuration file (INI style file)\n-Definition config.c:503\n-tds_read_conf_file\n-bool tds_read_conf_file(TDSLOGIN *login, const char *server)\n-Read configuration info for given server return 0 on error.\n-Definition config.c:346\n-tds_set_interfaces_file_loc\n-TDSRET tds_set_interfaces_file_loc(const char *interfloc)\n-Set the full name of interface file.\n-Definition config.c:961\n-tds_get_home_file\n-char * tds_get_home_file(const char *file)\n-Return filename from HOME directory.\n-Definition config.c:325\n-tds_read_config_info\n-TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE\n-*locale)\n-tds_read_config_info() will fill the tds connection structure based on\n-configuration information gath...\n-Definition config.c:138\n-tds_fix_login\n-void tds_fix_login(TDSLOGIN *login)\n-Fix configuration after reading it.\n-Definition config.c:285\n-tds_datecrack\n-TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)\n-Convert from db date format to a structured date format.\n-Definition convert.c:3172\n-tds_iconv_from_collate\n-TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5])\n-Get iconv information from a LCID (to support different column encoding under\n-MSSQL2K)\n-Definition iconv.c:1245\n-tds_alloc_row\n-TDSRET tds_alloc_row(TDSRESULTINFO *res_info)\n-Allocate space for row store return NULL on out of memory.\n-Definition mem.c:524\n-tds_detach_results\n-void tds_detach_results(TDSRESULTINFO *info)\n-Detach result info from it current socket.\n-Definition mem.c:488\n-tds_alloc_param_result\n-TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)\n-Adds a output parameter to TDSPARAMINFO.\n-Definition mem.c:284\n-tds_alloc_param_data\n-void * tds_alloc_param_data(TDSCOLUMN *curparam)\n-Allocate data for a parameter.\n-Definition mem.c:364\n-tds_init_login\n-TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)\n-Initialize login structure with locale information and other stuff for\n-connection.\n-Definition mem.c:800\n-tds_free_param_result\n-void tds_free_param_result(TDSPARAMINFO *param_info)\n-Delete latest parameter.\n-Definition mem.c:320\n-tds_alloc_dynamic\n-TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)\n-Allocate a dynamic statement.\n-Definition mem.c:160\n-tds_realloc\n-void * tds_realloc(void **pp, size_t new_size)\n-Reallocate a pointer and update it if success.\n-Definition mem.c:1876\n-tds_free_input_params\n-void tds_free_input_params(TDSDYNAMIC *dyn)\n-Frees all allocated input parameters of a dynamic statement.\n-Definition mem.c:206\n-tds_release_dynamic\n-void tds_release_dynamic(TDSDYNAMIC **dyn)\n-Frees dynamic statement.\n-Definition mem.c:253\n-tds_needs_unprepare\n-int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n-Check if dynamic request must be unprepared.\n-Definition query.c:1752\n-tds_skip_quoted\n-const char * tds_skip_quoted(const char *s)\n-Skip quoting string (like 'sfsf', \"dflkdj\" or [dfkjd])\n-Definition query.c:515\n-tds71_submit_prepexec\n-TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id,\n-TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n-Creates a temporary stored procedure in the server and execute it.\n-Definition query.c:1401\n-tds_start_query\n-void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)\n-Start query packet of a given type.\n-Definition query.c:332\n-tds_send_cancel\n-TDSRET tds_send_cancel(TDSSOCKET *tds)\n-tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel\n-should be called dire...\n-Definition query.c:2026\n-tds_submit_execute\n-TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n-Sends a previously prepared dynamic statement to the server.\n-Definition query.c:1630\n-tds_fix_column_size\n-size_t tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol)\n-Get column size for wire.\n-Definition query.c:1491\n-tds_get_column_declaration\n-TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)\n-Return declaration for column (like \"varchar(20)\").\n-Definition query.c:718\n-tds_submit_commit\n-TDSRET tds_submit_commit(TDSSOCKET *tds, int cont)\n-Send a commit request.\n-Definition query.c:3724\n-tds_deferred_cursor_dealloc\n-TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)\n-Deallocate cursor on idle.\n-Definition query.c:3057\n-tds_submit_query\n-TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)\n-Sends a language string to the database server for processing.\n-Definition query.c:210\n-tds_submit_rpc\n-TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO\n-*params, TDSHEADERS *head)\n-Calls a RPC from server.\n-Definition query.c:1929\n-tds_quote_id_rpc\n-size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int\n-idlen)\n-Quote an id for a RPC call.\n-Definition query.c:2216\n-tds_quote_string\n-size_t tds_quote_string(TDSSOCKET *tds, char *buffer, const char *str, int len)\n-Quote a string.\n-Definition query.c:2241\n-tds_submit_prepare\n-TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id,\n-TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n-Creates a temporary stored procedure in the server.\n-Definition query.c:1124\n-tds_submit_begin_tran\n-TDSRET tds_submit_begin_tran(TDSSOCKET *tds)\n-Send a rollback request.\n-Definition query.c:3665\n-tds_quote_id\n-size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)\n-Quote an id.\n-Definition query.c:2171\n-tds_next_placeholder\n-const char * tds_next_placeholder(const char *start)\n-Get position of next placeholder.\n-Definition query.c:535\n-tds_submit_query_params\n-TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO\n-*params, TDSHEADERS *head)\n-Sends a language string to the database server for processing.\n-Definition query.c:350\n-tds_submit_rollback\n-TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont)\n-Send a rollback request.\n-Definition query.c:3693\n-tds_deferred_unprepare\n-TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n-Unprepare dynamic on idle.\n-Definition query.c:1774\n-tds_count_placeholders\n-int tds_count_placeholders(const char *query)\n-Count the number of placeholders ('?') in a query.\n-Definition query.c:571\n-tds_cursor_dealloc\n-TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)\n-Send a deallocation request to server.\n-Definition query.c:3006\n-tds_skip_comment\n-const char * tds_skip_comment(const char *s)\n-Skip a comment in a query.\n-Definition query.c:490\n-tds_convert_string\n-const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char\n-*s, int len, size_t *out_len)\n-Convert a string in an allocated buffer.\n-Definition query.c:126\n-tds_submit_queryf\n-TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)\n-Format and submit a query.\n-Definition query.c:467\n-tds_submit_execdirect\n-TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO\n-*params, TDSHEADERS *head)\n-Submit a prepared query with parameters.\n-Definition query.c:1256\n-tds_set_cur_dyn\n-void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n-Set current dynamic.\n-Definition query.c:192\n-tds_submit_optioncmd\n-TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION\n-option, TDS_OPTION_ARG *param, TDS_INT param_size)\n-Send option commands to server.\n-Definition query.c:3389\n-tds_submit_unprepare\n-TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n-Send a unprepare request for a prepared query.\n-Definition query.c:1797\n-tds_dstr_get\n-DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)\n-Reads a string from wire and put in a DSTR.\n-Definition read.c:293\n-tds_get_byte\n-unsigned char tds_get_byte(TDSSOCKET *tds)\n-Return a single byte from the input buffer.\n-Definition read.c:72\n-tds_put_string\n-int tds_put_string(TDSSOCKET *tds, const char *buf, int len)\n-Output a string to wire automatic translate string to unicode if needed.\n-Definition write.c:97\n-tds_peek\n-unsigned char tds_peek(TDSSOCKET *tds)\n-Reads a byte from the TDS stream without removing it.\n-Definition read.c:100\n-tds_freeze_close_len\n-TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)\n-Stop keeping data for this specific freeze.\n-Definition packet.c:1031\n-tds_goodwrite\n-int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)\n-Definition net.c:985\n-tds_socket_set_nonblocking\n-int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)\n-Set socket to non-blocking.\n-Definition net.c:168\n-tds_close_socket\n-void tds_close_socket(TDSSOCKET *tds)\n-Close current socket.\n-Definition net.c:548\n-tds_read_packet\n-int tds_read_packet(TDSSOCKET *tds)\n-Read in one 'packet' from the server.\n-Definition packet.c:527\n-tds_freeze_written\n-size_t tds_freeze_written(TDSFREEZE *freeze)\n-Compute how many bytes has been written from freeze.\n-Definition packet.c:935\n-tds_flush_packet\n-TDSRET tds_flush_packet(TDSSOCKET *tds)\n-Flush packet to server.\n-Definition write.c:224\n-tds_freeze_close\n-TDSRET tds_freeze_close(TDSFREEZE *freeze)\n-Stop keeping data for this specific freeze.\n-Definition packet.c:996\n-tds_goodread\n-int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)\n-Loops until we have received some characters return -1 on failure.\n-Definition net.c:914\n-tds_freeze_abort\n-TDSRET tds_freeze_abort(TDSFREEZE *freeze)\n-Discard all data written after the freeze.\n-Definition packet.c:961\n-tds_get_uint8\n-TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)\n-Get an uint64 from the server.\n-Definition read.c:140\n-tds_get_char_data\n-TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size,\n-TDSCOLUMN *curcol)\n-Fetch character data the wire.\n-Definition read.c:195\n-tds_get_string\n-size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t\n-dest_size)\n-Fetch a string from the wire.\n-Definition read.c:166\n-tds7_get_instance_ports\n-int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)\n-Get port of all instances.\n-Definition net.c:1091\n-tds_get_uint\n-TDS_UINT tds_get_uint(TDSSOCKET *tds)\n-Get an int32 from the server.\n-Definition read.c:127\n-tds7_get_instance_port\n-int tds7_get_instance_port(struct addrinfo *addr, const char *instance)\n-Get port of given instance.\n-Definition net.c:1227\n-tds_get_usmallint\n-TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)\n-Get an int16 from the server.\n-Definition read.c:113\n-tds_unget_byte\n-void tds_unget_byte(TDSSOCKET *tds)\n-Unget will always work as long as you don't call it twice in a row.\n-Definition read.c:89\n-tds_select\n-int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)\n-Select on a socket until it's available or the timeout expires.\n-Definition net.c:610\n-tds_get_n\n-bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n)\n-Get N bytes from the buffer and return them in the already allocated space\n-given to us.\n-Definition read.c:230\n-tds_prtype\n-const char * tds_prtype(int token)\n-Returns string representation of the given type.\n-Definition token.c:3056\n-tds_lookup_dynamic\n-TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)\n-Finds a dynamic given string id.\n-Definition token.c:2587\n-tds_process_login_tokens\n-TDSRET tds_process_login_tokens(TDSSOCKET *tds)\n-tds_process_login_tokens() is called after sending the login packet to the\n-server.\n-Definition token.c:411\n-tds_get_token_size\n-int tds_get_token_size(int marker)\n-tds_get_token_size() returns the size of a fixed length token used by\n-tds_process_cancel() to determi...\n-Definition token.c:2754\n-tds_process_tokens\n-TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int\n-*done_flags, unsigned flag)\n-process all streams.\n-Definition token.c:531\n-tds_process_simple_query\n-TDSRET tds_process_simple_query(TDSSOCKET *tds)\n-Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the\n-statement returns results,...\n-Definition token.c:881\n-tds_process_cancel\n-TDSRET tds_process_cancel(TDSSOCKET *tds)\n-Definition token.c:2554\n-tdsiconvinfo\n-Definition iconv.h:92\n-tdsnumeric\n-Definition proto.h:26\n-tdsmoney\n-Definition proto.h:39\n-tds_compiletime_settings\n-A structure to hold all the compile-time settings.\n-Definition tds.h:82\n-TDS_DATETIMEALL\n-this structure is not directed connected to a TDS protocol but keeps any DATE/\n-TIME information.\n-Definition tds.h:146\n-TDS_DATETIMEALL::date\n-TDS_INT date\n-date, 0 = 1900-01-01\n-Definition tds.h:148\n-TDS_DATETIMEALL::offset\n-TDS_SMALLINT offset\n-time offset\n-Definition tds.h:149\n-TDS_DATETIMEALL::time\n-TDS_UINT8 time\n-time, 7 digit precision\n-Definition tds.h:147\n-tdsdaterec\n-Used by tds_datecrack.\n-Definition tds.h:159\n-tdsdaterec::dayofyear\n-TDS_INT dayofyear\n-day of year (1-366)\n-Definition tds.h:164\n-tdsdaterec::weekday\n-TDS_INT weekday\n-day of week (0-6, 0 = sunday)\n-Definition tds.h:165\n-tdsdaterec::year\n-TDS_INT year\n-year\n-Definition tds.h:160\n-tdsdaterec::timezone\n-TDS_INT timezone\n--840 - 840 minutes from UTC\n-Definition tds.h:170\n-tdsdaterec::minute\n-TDS_INT minute\n-0-59\n-Definition tds.h:167\n-tdsdaterec::day\n-TDS_INT day\n-day of month (1-31)\n-Definition tds.h:163\n-tdsdaterec::decimicrosecond\n-TDS_INT decimicrosecond\n-0-9999999\n-Definition tds.h:169\n-tdsdaterec::second\n-TDS_INT second\n-0-59\n-Definition tds.h:168\n-tdsdaterec::quarter\n-TDS_INT quarter\n-quarter (0-3)\n-Definition tds.h:161\n-tdsdaterec::hour\n-TDS_INT hour\n-0-23\n-Definition tds.h:166\n-tdsdaterec::month\n-TDS_INT month\n-month number (0-11)\n-Definition tds.h:162\n-tds_option_arg\n-Definition tds.h:330\n-tds_align_struct\n-Definition tds.h:495\n-tds_capability_type\n-Definition tds.h:504\n-tds_capabilities\n-Definition tds.h:511\n-tds_login\n-Definition tds.h:517\n-tds_login::crlfile\n-DSTR crlfile\n-certificate revocation file\n-Definition tds.h:531\n-tds_login::server_realm_name\n-DSTR server_realm_name\n-server realm name (in freetds.conf)\n-Definition tds.h:527\n-tds_login::user_name\n-DSTR user_name\n-account for login\n-Definition tds.h:534\n-tds_login::password\n-DSTR password\n-password of account login\n-Definition tds.h:535\n-tds_login::db_filename\n-DSTR db_filename\n-database filename to attach (MSSQL)\n-Definition tds.h:529\n-tds_login::server_name\n-DSTR server_name\n-server name (in freetds.conf)\n-Definition tds.h:518\n-tds_login::ip_addrs\n-struct addrinfo * ip_addrs\n-ip(s) of server\n-Definition tds.h:546\n-tds_login::server_charset\n-DSTR server_charset\n-charset of server e.g.\n-Definition tds.h:523\n-tds_login::tds_version\n-TDS_USMALLINT tds_version\n-TDS version.\n-Definition tds.h:520\n-tds_login::new_password\n-DSTR new_password\n-new password to set (TDS 7.2+)\n-Definition tds.h:536\n-tds_login::bulk_copy\n-unsigned int bulk_copy\n-if bulk copy should be enabled\n-Definition tds.h:556\n-tds_login::cafile\n-DSTR cafile\n-certificate authorities file\n-Definition tds.h:530\n-tds_login::server_spn\n-DSTR server_spn\n-server SPN (in freetds.conf)\n-Definition tds.h:528\n-tds_login::port\n-int port\n-port of database service\n-Definition tds.h:519\n-tds_headers\n-Definition tds.h:574\n-tds_locale\n-Definition tds.h:582\n-tds_blob\n-Information about blobs (e.g.\n-Definition tds.h:593\n-tds_variant\n-Store variant informations.\n-Definition tds.h:604\n-tds_encoding\n-Information relevant to libiconv.\n-Definition tds.h:618\n-tds_encoding::name\n-const char * name\n-name of the encoding (ie UTF-8)\n-Definition tds.h:620\n-tds_encoding::canonic\n-unsigned char canonic\n-internal numeric index into array of all encodings\n-Definition tds.h:624\n-tds_bcpcoldata\n-Definition tds.h:628\n-tds_column_funcs\n-Definition tds.h:643\n-tds_column_funcs::put_data\n-tds_func_put_data * put_data\n-Send column data to server.\n-Definition tds.h:662\n-tds_column_funcs::put_info\n-tds_func_put_info * put_info\n-Send metadata column information to server.\n-Definition tds.h:652\n-tds_column\n-Metadata about columns in regular and compute rows.\n-Definition tds.h:689\n-tds_column::bcp_prefix_len\n-TDS_INT bcp_prefix_len\n-The length, in bytes, of any length prefix this column may have.\n-Definition tds.h:761\n-tds_column::column_varint_size\n-TDS_TINYINT column_varint_size\n-size of length when reading from wire (0, 1, 2 or 4)\n-Definition tds.h:701\n-tds_column::column_size\n-TDS_INT column_size\n-maximun size of data.\n-Definition tds.h:694\n-tds_column::column_prec\n-TDS_TINYINT column_prec\n-precision for decimal/numeric\n-Definition tds.h:703\n-tds_column::column_type\n-TDS_SERVER_TYPE column_type\n-This type can be different from wire type because conversion (e.g.\n-Definition tds.h:696\n-tds_column::char_conv\n-TDSICONV * char_conv\n-refers to previously allocated iconv information\n-Definition tds.h:712\n-tds_column::column_scale\n-TDS_TINYINT column_scale\n-scale for decimal/numeric\n-Definition tds.h:704\n-tds_column::column_cur_size\n-TDS_INT column_cur_size\n-size written in variable (ie: char, text, binary).\n-Definition tds.h:736\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n-tds_message\n-Definition tds.h:876\n-tds_upd_col\n-Definition tds.h:892\n-tds_cursor_status\n-Definition tds.h:906\n-tds_cursor\n-Holds informations about a cursor.\n-Definition tds.h:937\n-tds_cursor::options\n-TDS_TINYINT options\n-read only|updatable TODO use it\n-Definition tds.h:942\n-tds_cursor::defer_close\n-bool defer_close\n-true if cursor was marker to be closed when connection is idle\n-Definition tds.h:946\n-tds_cursor::ref_count\n-TDS_INT ref_count\n-reference counter so client can retain safely a pointer\n-Definition tds.h:939\n-tds_cursor::cursor_id\n-TDS_INT cursor_id\n-cursor id returned by the server after cursor declare\n-Definition tds.h:941\n-tds_cursor::cursor_rows\n-TDS_INT cursor_rows\n-< number of updatable columns\n-Definition tds.h:951\n-tds_cursor::next\n-struct tds_cursor * next\n-next in linked list, keep first\n-Definition tds.h:938\n-tds_cursor::type\n-TDS_INT type\n-row fetched from this cursor\n-Definition tds.h:956\n-tds_cursor::status\n-TDS_CURSOR_STATUS status\n-cursor parameter\n-Definition tds.h:953\n-tds_cursor::query\n-char * query\n-SQL query.\n-Definition tds.h:947\n-tds_cursor::cursor_name\n-char * cursor_name\n-name of the cursor\n-Definition tds.h:940\n-tds_env\n-Current environment as reported by the server.\n-Definition tds.h:963\n-tds_env::charset\n-char * charset\n-character set encoding\n-Definition tds.h:968\n-tds_env::block_size\n-int block_size\n-packet size (512-65535)\n-Definition tds.h:965\n-tds_env::database\n-char * database\n-database name\n-Definition tds.h:970\n-tds_dynamic\n-Holds information for a dynamic (also called prepared) query.\n-Definition tds.h:977\n-tds_dynamic::query\n-char * query\n-saved query, we need to know original query if prepare is impossible\n-Definition tds.h:1009\n-tds_dynamic::ref_count\n-TDS_INT ref_count\n-reference counter so client can retain safely a pointer\n-Definition tds.h:979\n-tds_dynamic::defer_close\n-bool defer_close\n-true if dynamic was marker to be closed when connection is idle\n-Definition tds.h:997\n-tds_dynamic::res_info\n-TDSPARAMINFO * res_info\n-query results\n-Definition tds.h:999\n-tds_dynamic::emulated\n-TDS_TINYINT emulated\n-this dynamic query cannot be prepared so libTDS have to construct a simple\n-query.\n-Definition tds.h:993\n-tds_dynamic::params\n-TDSPARAMINFO * params\n-query parameters.\n-Definition tds.h:1007\n-tds_dynamic::next\n-struct tds_dynamic * next\n-next in linked list, keep first\n-Definition tds.h:978\n-tds_dynamic::num_id\n-TDS_INT num_id\n-numeric id for mssql7+\n-Definition tds.h:981\n-tds_multiple\n-Definition tds.h:1019\n-tds_context\n-Definition tds.h:1029\n-tds_authentication\n-Definition tds.h:1047\n-tds_packet\n-Definition tds.h:1057\n-tds_packet::data_len\n-unsigned data_len\n-data length, this does not account SMP header, only TDS part\n-Definition tds.h:1071\n-tds_poll_wakeup\n-Definition tds.h:1085\n-tds_connection\n-Definition tds.h:1091\n-tds_connection::env\n-TDSENV env\n-environment is shared between all sessions\n-Definition tds.h:1101\n-tds_connection::cursors\n-TDSCURSOR * cursors\n-linked list of cursors allocated for this connection contains only cursors\n-allocated on the server\n-Definition tds.h:1107\n-tds_connection::s\n-TDS_SYS_SOCKET s\n-tcp socket, INVALID_SOCKET if not connected\n-Definition tds.h:1096\n-tds_connection::product_version\n-TDS_UINT product_version\n-version of product (Sybase/MS and full version)\n-Definition tds.h:1093\n-tds_connection::dyns\n-TDSDYNAMIC * dyns\n-list of dynamic allocated for this connection contains only dynamic allocated\n-on the server\n-Definition tds.h:1112\n-tds_connection::pending_close\n-unsigned int pending_close\n-true is connection has pending closing (cursors or dynamic)\n-Definition tds.h:1123\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n-tds_socket::login\n-TDSLOGIN * login\n-config for login stuff.\n-Definition tds.h:1258\n-tds_socket::in_len\n-unsigned in_len\n-input buffer length\n-Definition tds.h:1194\n-tds_socket::frozen_packets\n-TDSPACKET * frozen_packets\n-list of packets frozen, points to first one.\n-Definition tds.h:1203\n-tds_socket::send_packet\n-TDSPACKET * send_packet\n-packet we are preparing to send\n-Definition tds.h:1231\n-tds_socket::in_buf\n-unsigned char * in_buf\n-Input buffer.\n-Definition tds.h:1177\n-tds_socket::ret_status\n-TDS_INT ret_status\n-return status from store procedure\n-Definition tds.h:1250\n-tds_socket::out_pos\n-unsigned out_pos\n-current position in out_buf\n-Definition tds.h:1193\n-tds_socket::current_results\n-TDSRESULTINFO * current_results\n-Current query information.\n-Definition tds.h:1238\n-tds_socket::in_flag\n-unsigned char in_flag\n-input buffer type\n-Definition tds.h:1195\n-tds_socket::rows_affected\n-TDS_INT8 rows_affected\n-rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid\n-Definition tds.h:1254\n-tds_socket::out_flag\n-unsigned char out_flag\n-output buffer type\n-Definition tds.h:1196\n-tds_socket::in_pos\n-unsigned in_pos\n-current position in in_buf\n-Definition tds.h:1192\n-tds_socket::cur_cursor\n-TDSCURSOR * cur_cursor\n-cursor in use\n-Definition tds.h:1243\n-tds_socket::in_row\n-bool in_row\n-true if we are getting rows\n-Definition tds.h:1246\n-tds_socket::bulk_query\n-bool bulk_query\n-true is query sent was a bulk query so we need to switch state to QUERYING\n-Definition tds.h:1244\n-tds_socket::has_status\n-bool has_status\n-true is ret_status is valid\n-Definition tds.h:1245\n-tds_socket::out_buf\n-unsigned char * out_buf\n-Output buffer.\n-Definition tds.h:1185\n-tds_socket::in_cancel\n-volatile unsigned char in_cancel\n-indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean\n-we have to send cance...\n-Definition tds.h:1248\n-tds_socket::out_buf_max\n-unsigned int out_buf_max\n-Maximum size of packet pointed by out_buf.\n-Definition tds.h:1191\n-tds_socket::cur_dyn\n-TDSDYNAMIC * cur_dyn\n-dynamic structure in use\n-Definition tds.h:1256\n-tdsdump_off_item\n-Definition tds.h:1501\n-tds_freeze\n-Definition tds.h:1571\n-tds_freeze::tds\n-TDSSOCKET * tds\n-which socket we refer to\n-Definition tds.h:1573\n-tds_freeze::pkt_pos\n-unsigned pkt_pos\n-position in pkt\n-Definition tds.h:1577\n-tds_freeze::size_len\n-unsigned size_len\n-length size (0, 1, 2 or 4)\n-Definition tds.h:1579\n-tds_freeze::pkt\n-TDSPACKET * pkt\n-first packet frozen\n-Definition tds.h:1575\n-tds_bcpinfo\n-Definition tds.h:1661\n-tds_condition\n-Definition thread.h:278\n-tds_dstr\n-Structure to hold a string.\n-Definition string.h:36\n+ 58#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined\n+(_WIN64)\n+ 59#include \n+ 60#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)\n+ 61#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)\n+ 62#define CLOSESOCKET(a) closesocket((a))\n+ 63#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))\n+ 64#define SOCKLEN_T int\n+ 65int tds_socket_init(void);\n+ 66#define INITSOCKET() tds_socket_init()\n+ 67void tds_socket_done(void);\n+ 68#define DONESOCKET() tds_socket_done()\n+ 69#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */\n+ 70\n+ 71#define TDSSOCK_EINTR WSAEINTR\n+ 72#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK\n+ 73#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT\n+ 74#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)\n+ 75#define TDSSOCK_ECONNRESET WSAECONNRESET\n+ 76#define sock_errno WSAGetLastError()\n+ 77#define set_sock_errno(err) WSASetLastError(err)\n+ 78#define sock_strerror(n) tds_prwsaerror(n)\n+ 79#define sock_strerror_free(s) tds_prwsaerror_free(s)\n+ 80#ifndef __MINGW32__\n+ 81typedef DWORD pid_t;\n+ 82#endif\n+ 83#undef strcasecmp\n+ 84#define strcasecmp stricmp\n+ 85#undef strncasecmp\n+ 86#define strncasecmp strnicmp\n+ 87#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)\n+ 88#define snprintf _snprintf\n+ 89#endif\n+ 90\n+ 91#ifndef WIN32\n+ 92#define WIN32 1\n+ 93#endif\n+ 94\n+ 95#if defined(_WIN64) && !defined(WIN64)\n+ 96#define WIN64 1\n+ 97#endif\n+ 98\n+ 99#define TDS_SDIR_SEPARATOR \"\\\\\"\n+ 100\n+ 101/* use macros to use new style names */\n+ 102#if defined(__MSVCRT__) || defined(_MSC_VER)\n+ 103/* Use API as always present and not causing problems */\n+ 104#undef getpid\n+ 105#define getpid() GetCurrentProcessId()\n+ 106#define strdup(s) _strdup(s)\n+ 107#define unlink(f) _unlink(f)\n+ 108#define putenv(s) _putenv(s)\n+ 109#undef fileno\n+ 110#define fileno(f) _fileno(f)\n+ 111#undef close\n+ 112#define close(f) _close(f)\n+ 113#undef open\n+ 114#define open(fn,...) _open(fn,__VA_ARGS__)\n+ 115#undef dup2\n+ 116#define dup2(o,n) _dup2(o,n)\n+ 117#define stricmp(s1,s2) _stricmp(s1,s2)\n+ 118#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)\n+ 119#endif\n+ 120\n+ 121#endif /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */\n+ 122\n+ 123#ifndef sock_errno\n+ 124#define sock_errno errno\n+ 125#endif\n+ 126\n+ 127#ifndef set_sock_errno\n+ 128#define set_sock_errno(err) do { errno = (err); } while(0)\n+ 129#endif\n+ 130\n+ 131#ifndef sock_strerror\n+ 132#define sock_strerror(n) strerror(n)\n+ 133#define sock_strerror_free(s) do {} while(0)\n+ 134#endif\n+ 135\n+ 136#ifndef TDSSOCK_EINTR\n+ 137#define TDSSOCK_EINTR EINTR\n+ 138#endif\n+ 139\n+ 140#ifndef TDSSOCK_EINPROGRESS\n+ 141#define TDSSOCK_EINPROGRESS EINPROGRESS\n+ 142#endif\n+ 143\n+ 144#ifndef TDSSOCK_ETIMEDOUT\n+ 145#define TDSSOCK_ETIMEDOUT ETIMEDOUT\n+ 146#endif\n+ 147\n+ 148#ifndef TDSSOCK_WOULDBLOCK\n+ 149# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK\n+ 150# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)\n+ 151# else\n+ 152# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)\n+ 153# endif\n+ 154#endif\n+ 155\n+ 156#ifndef TDSSOCK_ECONNRESET\n+ 157#define TDSSOCK_ECONNRESET ECONNRESET\n+ 158#endif\n+ 159\n+ 160#ifndef INITSOCKET\n+ 161#define INITSOCKET() 0\n+ 162#endif /* !INITSOCKET */\n+ 163\n+ 164#ifndef DONESOCKET\n+ 165#define DONESOCKET() do { } while(0)\n+ 166#endif /* !DONESOCKET */\n+ 167\n+ 168#ifndef READSOCKET\n+ 169# ifdef MSG_NOSIGNAL\n+ 170# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)\n+ 171# else\n+ 172# define READSOCKET(s,b,l) read((s), (b), (l))\n+ 173# endif\n+ 174#endif /* !READSOCKET */\n+ 175\n+ 176#ifndef WRITESOCKET\n+ 177# ifdef MSG_NOSIGNAL\n+ 178# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)\n+ 179# else\n+ 180# define WRITESOCKET(s,b,l) write((s), (b), (l))\n+ 181# endif\n+ 182#endif /* !WRITESOCKET */\n+ 183\n+ 184#ifndef CLOSESOCKET\n+ 185#define CLOSESOCKET(s) close((s))\n+ 186#endif /* !CLOSESOCKET */\n+ 187\n+ 188#ifndef IOCTLSOCKET\n+ 189#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))\n+ 190#endif /* !IOCTLSOCKET */\n+ 191\n+ 192#ifndef SOCKLEN_T\n+ 193# define SOCKLEN_T socklen_t\n+ 194#endif\n+ 195\n+ 196#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)\n+ 197typedef int TDS_SYS_SOCKET;\n+ 198#define INVALID_SOCKET -1\n+ 199#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)\n+ 200#else\n+ 201typedef SOCKET TDS_SYS_SOCKET;\n+ 202#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)\n+ 203#endif\n+ 204\n+ 205#define tds_accept accept\n+ 206#define tds_getpeername getpeername\n+ 207#define tds_getsockopt getsockopt\n+ 208#define tds_getsockname getsockname\n+ 209#define tds_recvfrom recvfrom\n+ 210\n+ 211#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4\n+ 212# if HAVE__XPG_ACCEPT\n+ 213# undef tds_accept\n+ 214# define tds_accept _xpg_accept\n+ 215# elif HAVE___ACCEPT\n+ 216# undef tds_accept\n+ 217# define tds_accept __accept\n+ 218# endif\n+ 219# if HAVE__XPG_GETPEERNAME\n+ 220# undef tds_getpeername\n+ 221# define tds_getpeername _xpg_getpeername\n+ 222# elif HAVE___GETPEERNAME\n+ 223# undef tds_getpeername\n+ 224# define tds_getpeername __getpeername\n+ 225# endif\n+ 226# if HAVE__XPG_GETSOCKOPT\n+ 227# undef tds_getsockopt\n+ 228# define tds_getsockopt _xpg_getsockopt\n+ 229# elif HAVE___GETSOCKOPT\n+ 230# undef tds_getsockopt\n+ 231# define tds_getsockopt __getsockopt\n+ 232# endif\n+ 233# if HAVE__XPG_GETSOCKNAME\n+ 234# undef tds_getsockname\n+ 235# define tds_getsockname _xpg_getsockname\n+ 236# elif HAVE___GETSOCKNAME\n+ 237# undef tds_getsockname\n+ 238# define tds_getsockname __getsockname\n+ 239# endif\n+ 240# if HAVE__XPG_RECVFROM\n+ 241# undef tds_recvfrom\n+ 242# define tds_recvfrom _xpg_recvfrom\n+ 243# elif HAVE___RECVFROM\n+ 244# undef tds_recvfrom\n+ 245# define tds_recvfrom __recvfrom\n+ 246# endif\n+ 247#endif\n+ 248\n+ 249#ifndef TDS_SDIR_SEPARATOR\n+ 250#define TDS_SDIR_SEPARATOR \"/\"\n+ 251#endif /* !TDS_SDIR_SEPARATOR */\n+ 252\n+ 253#ifdef HAVE_INTTYPES_H\n+ 254#include \n+ 255#endif\n+ 256\n+ 257#ifndef PRId64\n+ 258#define PRId64 TDS_I64_PREFIX \"d\"\n+ 259#endif\n+ 260#ifndef PRIu64\n+ 261#define PRIu64 TDS_I64_PREFIX \"u\"\n+ 262#endif\n+ 263#ifndef PRIx64\n+ 264#define PRIx64 TDS_I64_PREFIX \"x\"\n+ 265#endif\n+ 266\n+ 267#ifdef __cplusplus\n+ 268#if 0\n+ 269{\n+ 270#endif\n+ 271}\n+ 272#endif\n+ 273\n+ 274#endif /* _tds_sysdep_private_h_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00371_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00371_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/server.h Source File\n+FreeTDS API: include/freetds/bool.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n
    \n
    \n-
    server.h
    \n+
    bool.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 2015 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,67 +96,38 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _tdsserver_h_
    \n-
    21#define _tdsserver_h_
    \n-
    22#endif
    \n-
    23
    \n-
    24#ifdef __cplusplus
    \n-
    25extern "C"
    \n-
    26{
    \n-
    27#endif
    \n-
    28#if 0
    \n-
    29}
    \n-
    30#endif
    \n-
    31
    \n-
    32/* login.c */
    \n-
    33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, unsigned char *clear_pass);
    \n-
    34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);
    \n-
    35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n-
    36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n-
    37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);
    \n+
    20#ifndef freetds_bool_h_
    \n+
    21#define freetds_bool_h_
    \n+
    22
    \n+
    23#ifndef __cplusplus
    \n+
    24
    \n+
    25#ifdef HAVE_STDBOOL_H
    \n+
    26
    \n+
    27#include <stdbool.h>
    \n+
    28
    \n+
    29#else
    \n+
    30
    \n+
    31#undef true
    \n+
    32#undef false
    \n+
    33#undef bool
    \n+
    34typedef unsigned char freetds_boolean_t;
    \n+
    35#define bool freetds_boolean_t
    \n+
    36#define true 1
    \n+
    37#define false 0
    \n
    38
    \n-
    39/* query.c */
    \n-
    40char *tds_get_query(TDSSOCKET * tds);
    \n-
    41char *tds_get_generic_query(TDSSOCKET * tds);
    \n+
    39#endif
    \n+
    40
    \n+
    41#endif
    \n
    42
    \n-
    43/* server.c */
    \n-
    44void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const char *newvalue);
    \n-
    45void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
    \n-
    46 const char *procname, int line);
    \n-
    47void tds_send_login_ack(TDSSOCKET * tds, const char *progname);
    \n-
    48void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, char *msgtext, char *srvname, char *procname, int line);
    \n-
    49void tds_send_err(TDSSOCKET * tds, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    \n-
    50void tds_send_capabilities_token(TDSSOCKET * tds);
    \n-
    51/* TODO remove, use tds_send_done */
    \n-
    52void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT numrows);
    \n-
    53void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT numrows);
    \n-
    54void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);
    \n-
    55void tds_send_col_name(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    56void tds_send_col_info(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    57void tds_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    58void tds7_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    59void tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    60void tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n-
    61void tds71_send_prelogin(TDSSOCKET * tds);
    \n-
    62
    \n-
    63#if 0
    \n-
    64{
    \n-
    65#endif
    \n-
    66#ifdef __cplusplus
    \n-
    67}
    \n-
    68#endif
    \n-
    Definition tds.h:517
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n-
    Definition tds.h:1029
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n+
    43#endif /* freetds_bool_h_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,17 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-server.h\n+bool.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 2015 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,76 +27,34 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _tdsserver_h_\n- 21#define _tdsserver_h_\n- 22#endif\n- 23\n- 24#ifdef __cplusplus\n- 25extern \"C\"\n- 26{\n- 27#endif\n- 28#if 0\n- 29}\n- 30#endif\n- 31\n- 32/* login.c */\n- 33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len,\n-unsigned char *clear_pass);\n- 34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);\n- 35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);\n- 36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);\n- 37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);\n+ 20#ifndef freetds_bool_h_\n+ 21#define freetds_bool_h_\n+ 22\n+ 23#ifndef __cplusplus\n+ 24\n+ 25#ifdef HAVE_STDBOOL_H\n+ 26\n+ 27#include \n+ 28\n+ 29#else\n+ 30\n+ 31#undef true\n+ 32#undef false\n+ 33#undef bool\n+ 34typedef unsigned char freetds_boolean_t;\n+ 35#define bool freetds_boolean_t\n+ 36#define true 1\n+ 37#define false 0\n 38\n- 39/* query.c */\n- 40char *tds_get_query(TDSSOCKET * tds);\n- 41char *tds_get_generic_query(TDSSOCKET * tds);\n+ 39#endif\n+ 40\n+ 41#endif\n 42\n- 43/* server.c */\n- 44void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const\n-char *newvalue);\n- 45void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity,\n-const char *msgtext, const char *srvname,\n- 46 const char *procname, int line);\n- 47void tds_send_login_ack(TDSSOCKET * tds, const char *progname);\n- 48void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity,\n-char *msgtext, char *srvname, char *procname, int line);\n- 49void tds_send_err(TDSSOCKET * tds, int severity, int dberr, int oserr, char\n-*dberrstr, char *oserrstr);\n- 50void tds_send_capabilities_token(TDSSOCKET * tds);\n- 51/* TODO remove, use tds_send_done */\n- 52void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT\n-numrows);\n- 53void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT\n-numrows);\n- 54void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);\n- 55void tds_send_col_name(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 56void tds_send_col_info(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 57void tds_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 58void tds7_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 59void tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 60void tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n- 61void tds71_send_prelogin(TDSSOCKET * tds);\n- 62\n- 63#if 0\n- 64{\n- 65#endif\n- 66#ifdef __cplusplus\n- 67}\n- 68#endif\n-tds_login\n-Definition tds.h:517\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n-tds_context\n-Definition tds.h:1029\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n+ 43#endif /* freetds_bool_h_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00374_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00374_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/replacements/poll.h Source File\n+FreeTDS API: include/freetds/iconv.h Source File\n \n \n \n \n \n \n \n@@ -70,106 +70,169 @@\n \n \n \n \n \n \n \n
    \n-
    poll.h
    \n+
    iconv.h
    \n
    \n
    \n-Go to the documentation of this file.
    1
    \n-
    5#if !defined(_REPLACEMENTS_POLL_H) && !defined(HAVE_POLL)
    \n-
    6#define _REPLACEMENTS_POLL_H
    \n-
    7
    \n-
    8#include <config.h>
    \n-
    9
    \n-
    10#if HAVE_LIMITS_H
    \n-
    11#include <limits.h>
    \n-
    12#endif
    \n-
    13
    \n-
    14#if HAVE_SYS_SELECT_H
    \n-
    15#include <sys/select.h>
    \n-
    16#endif
    \n-
    17
    \n-
    18#if defined(_WIN32)
    \n-
    19#include <winsock2.h>
    \n-
    20#endif
    \n-
    21
    \n-
    22#if defined(__VMS)
    \n-
    23#include <time.h> /* FD_SETSIZE is in here */
    \n-
    24#endif
    \n-
    25
    \n-
    26#if !defined(FD_SETSIZE)
    \n-
    27# if !defined(OPEN_MAX)
    \n-
    28# error cannot establish FD_SETSIZE
    \n-
    29# endif
    \n-
    30#define FD_SETSIZE OPEN_MAX
    \n-
    31#endif
    \n-
    32
    \n-
    33#include <freetds/pushvis.h>
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 2002, 2003, 2004 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _tds_iconv_h_
    \n+
    21#define _tds_iconv_h_
    \n+
    22
    \n+
    23#if HAVE_ICONV
    \n+
    24#include <iconv.h>
    \n+
    25#else
    \n+
    26/* Define iconv_t for src/replacements/iconv.c. */
    \n+
    27#undef iconv_t
    \n+
    28typedef void *iconv_t;
    \n+
    29#endif /* HAVE_ICONV */
    \n+
    30
    \n+
    31#if HAVE_ERRNO_H
    \n+
    32#include <errno.h>
    \n+
    33#endif
    \n
    34
    \n-
    35#ifndef _WIN32
    \n-
    36/* poll flags */
    \n-
    37# define POLLIN 0x0001
    \n-
    38# define POLLOUT 0x0004
    \n-
    39# define POLLERR 0x0008
    \n-
    40
    \n-
    41/* synonyms */
    \n-
    42# define POLLNORM POLLIN
    \n-
    43# define POLLPRI POLLIN
    \n-
    44# define POLLRDNORM POLLIN
    \n-
    45# define POLLRDBAND POLLIN
    \n-
    46# define POLLWRNORM POLLOUT
    \n-
    47# define POLLWRBAND POLLOUT
    \n-
    48
    \n-
    49/* ignored */
    \n-
    50# define POLLHUP 0x0010
    \n-
    51# define POLLNVAL 0x0020
    \n-
    \n-
    52typedef struct pollfd {
    \n-
    53 int fd; /* file descriptor to poll */
    \n-
    54 short events; /* events of interest on fd */
    \n-
    55 short revents; /* events that occurred on fd */
    \n-
    56} pollfd_t;
    \n-
    \n+
    35#if HAVE_WCHAR_H
    \n+
    36#include <wchar.h>
    \n+
    37#endif
    \n+
    38
    \n+
    39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */
    \n+
    40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,
    \n+
    41 have EILSEQ in a different header. On these systems, define EILSEQ
    \n+
    42 ourselves. */
    \n+
    43#ifndef EILSEQ
    \n+
    44# define EILSEQ ENOENT
    \n+
    45#endif
    \n+
    46
    \n+
    47#if HAVE_STDLIB_H
    \n+
    48#include <stdlib.h>
    \n+
    49#endif /* HAVE_STDLIB_H */
    \n+
    50
    \n+
    51#include <freetds/pushvis.h>
    \n+
    52
    \n+
    53#ifdef __cplusplus
    \n+
    54extern "C"
    \n+
    55{
    \n+
    56#endif
    \n
    57
    \n-
    58#else /* Windows */
    \n-
    59/*
    \n-
    60 * Windows use different constants then Unix
    \n-
    61 * Newer version have a WSAPoll which is equal to Unix poll
    \n-
    62 */
    \n-
    63# if !defined(POLLRDNORM) && !defined(POLLWRNORM)
    \n-
    64# define POLLIN 0x0300
    \n-
    65# define POLLOUT 0x0010
    \n-
    66# define POLLERR 0x0001
    \n-
    67# define POLLRDNORM 0x0100
    \n-
    68# define POLLWRNORM 0x0010
    \n-
    69typedef struct pollfd {
    \n-
    70 SOCKET fd; /* file descriptor to poll */
    \n-
    71 short events; /* events of interest on fd */
    \n-
    72 short revents; /* events that occurred on fd */
    \n-
    73} pollfd_t;
    \n-
    74# else
    \n-
    75typedef struct pollfd pollfd_t;
    \n-
    76# endif
    \n-
    77#endif
    \n-
    78
    \n-
    79#undef poll
    \n-
    80int tds_poll(struct pollfd fds[], int nfds, int timeout);
    \n-
    81#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)
    \n-
    82
    \n-
    83#include <freetds/popvis.h>
    \n-
    84
    \n-
    85#endif
    \n-
    Definition poll.h:52
    \n+
    58#if ! HAVE_ICONV
    \n+
    59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);
    \n+
    60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
    \n+
    61int tds_sys_iconv_close(iconv_t cd);
    \n+
    62#else
    \n+
    63#define tds_sys_iconv_open iconv_open
    \n+
    64#define tds_sys_iconv iconv
    \n+
    65#define tds_sys_iconv_close iconv_close
    \n+
    66#endif /* !HAVE_ICONV */
    \n+
    67
    \n+
    68
    \n+
    69typedef enum
    \n+
    70{ to_server, to_client } TDS_ICONV_DIRECTION;
    \n+
    71
    \n+
    \n+\n+
    73{
    \n+
    74 const char *alias;
    \n+
    75 int canonic;
    \n+\n+
    \n+
    77
    \n+
    \n+\n+
    79 unsigned int e2big:1;
    \n+
    80 unsigned int eilseq:1;
    \n+
    81 unsigned int einval:1;
    \n+\n+
    \n+
    83
    \n+
    \n+
    84typedef struct tdsiconvdir
    \n+
    85{
    \n+
    86 TDS_ENCODING charset;
    \n+
    87
    \n+
    88 iconv_t cd;
    \n+\n+
    \n+
    90
    \n+
    \n+\n+
    92{
    \n+
    93 struct tdsiconvdir to, from;
    \n+
    94
    \n+
    95#define TDS_ENCODING_MEMCPY 1
    \n+
    96 unsigned int flags;
    \n+
    97
    \n+
    98 /*
    \n+
    99 * Suppress error messages that would otherwise be emitted by tds_iconv().
    \n+
    100 * Functions that process large buffers ask tds_iconv to convert it in "chunks".
    \n+
    101 * We don't want to emit spurious EILSEQ errors or multiple errors for one
    \n+
    102 * buffer. tds_iconv() checks this structure before emiting a message, and
    \n+
    103 * adds to it whenever it emits one. Callers that handle a particular situation themselves
    \n+
    104 * can prepopulate it.
    \n+
    105 */
    \n+\n+
    107
    \n+
    108};
    \n+
    \n+
    109
    \n+
    110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */
    \n+
    111#ifndef ICONV_CONST
    \n+
    112# define ICONV_CONST const
    \n+
    113#endif
    \n+
    114
    \n+
    115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION io,
    \n+
    116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
    \n+
    117int tds_canonical_charset(const char *charset_name);
    \n+
    118const char *tds_canonical_charset_name(const char *charset_name);
    \n+
    119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, const char *server_charset);
    \n+
    120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int canonic_server);
    \n+
    121
    \n+
    122#ifdef __cplusplus
    \n+
    123}
    \n+
    124#endif
    \n+
    125
    \n+
    126#include <freetds/popvis.h>
    \n+
    127
    \n+
    128#endif /* _tds_iconv_h_ */
    \n+
    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:758
    \n+
    const char * tds_canonical_charset_name(const char *charset_name)
    Determine canonical iconv character set name.
    Definition iconv.c:982
    \n+
    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:592
    \n+
    iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)
    Inputs are FreeTDS canonical names, no other.
    Definition iconv.c:344
    \n+
    int tds_canonical_charset(const char *charset_name)
    Determine canonical iconv character set.
    Definition iconv.c:970
    \n+
    Definition iconv.h:73
    \n+
    Definition iconv.h:78
    \n+
    Definition iconv.h:85
    \n+
    Definition iconv.h:92
    \n+
    Information relevant to libiconv.
    Definition tds.h:618
    \n+
    Definition tds.h:1091
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,97 +7,184 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * replacements\n-poll.h\n-Go_to_the_documentation_of_this_file.\n- 1\n- 5#if !defined(_REPLACEMENTS_POLL_H) && !defined(HAVE_POLL)\n- 6#define _REPLACEMENTS_POLL_H\n- 7\n- 8#include \n- 9\n- 10#if HAVE_LIMITS_H\n- 11#include \n- 12#endif\n- 13\n- 14#if HAVE_SYS_SELECT_H\n- 15#include \n- 16#endif\n- 17\n- 18#if defined(_WIN32)\n- 19#include \n- 20#endif\n- 21\n- 22#if defined(__VMS)\n- 23#include /* FD_SETSIZE is in here */\n- 24#endif\n- 25\n- 26#if !defined(FD_SETSIZE)\n- 27# if !defined(OPEN_MAX)\n- 28# error cannot establish FD_SETSIZE\n- 29# endif\n- 30#define FD_SETSIZE OPEN_MAX\n- 31#endif\n- 32\n- 33#include \n+iconv.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 2002, 2003, 2004 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _tds_iconv_h_\n+ 21#define _tds_iconv_h_\n+ 22\n+ 23#if HAVE_ICONV\n+ 24#include \n+ 25#else\n+ 26/* Define iconv_t for src/replacements/iconv.c. */\n+ 27#undef iconv_t\n+ 28typedef void *iconv_t;\n+ 29#endif /* HAVE_ICONV */\n+ 30\n+ 31#if HAVE_ERRNO_H\n+ 32#include \n+ 33#endif\n 34\n- 35#ifndef _WIN32\n- 36/* poll flags */\n- 37# define POLLIN 0x0001\n- 38# define POLLOUT 0x0004\n- 39# define POLLERR 0x0008\n- 40\n- 41/* synonyms */\n- 42# define POLLNORM POLLIN\n- 43# define POLLPRI POLLIN\n- 44# define POLLRDNORM POLLIN\n- 45# define POLLRDBAND POLLIN\n- 46# define POLLWRNORM POLLOUT\n- 47# define POLLWRBAND POLLOUT\n- 48\n- 49/* ignored */\n- 50# define POLLHUP 0x0010\n- 51# define POLLNVAL 0x0020\n-52typedef struct pollfd {\n- 53 int fd; /* file descriptor to poll */\n- 54 short events; /* events of interest on fd */\n- 55 short revents; /* events that occurred on fd */\n- 56} pollfd_t;\n+ 35#if HAVE_WCHAR_H\n+ 36#include \n+ 37#endif\n+ 38\n+ 39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */\n+ 40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,\n+ 41 have EILSEQ in a different header. On these systems, define EILSEQ\n+ 42 ourselves. */\n+ 43#ifndef EILSEQ\n+ 44# define EILSEQ ENOENT\n+ 45#endif\n+ 46\n+ 47#if HAVE_STDLIB_H\n+ 48#include \n+ 49#endif /* HAVE_STDLIB_H */\n+ 50\n+ 51#include \n+ 52\n+ 53#ifdef __cplusplus\n+ 54extern \"C\"\n+ 55{\n+ 56#endif\n 57\n- 58#else /* Windows */\n- 59/*\n- 60 * Windows use different constants then Unix\n- 61 * Newer version have a WSAPoll which is equal to Unix poll\n- 62 */\n- 63# if !defined(POLLRDNORM) && !defined(POLLWRNORM)\n- 64# define POLLIN 0x0300\n- 65# define POLLOUT 0x0010\n- 66# define POLLERR 0x0001\n- 67# define POLLRDNORM 0x0100\n- 68# define POLLWRNORM 0x0010\n- 69typedef struct pollfd {\n- 70 SOCKET fd; /* file descriptor to poll */\n- 71 short events; /* events of interest on fd */\n- 72 short revents; /* events that occurred on fd */\n- 73} pollfd_t;\n- 74# else\n- 75typedef struct pollfd pollfd_t;\n- 76# endif\n- 77#endif\n- 78\n- 79#undef poll\n- 80int tds_poll(struct pollfd fds[], int nfds, int timeout);\n- 81#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)\n- 82\n- 83#include \n- 84\n- 85#endif\n-pollfd\n-Definition poll.h:52\n+ 58#if ! HAVE_ICONV\n+ 59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);\n+ 60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft,\n+char **outbuf, size_t * outbytesleft);\n+ 61int tds_sys_iconv_close(iconv_t cd);\n+ 62#else\n+ 63#define tds_sys_iconv_open iconv_open\n+ 64#define tds_sys_iconv iconv\n+ 65#define tds_sys_iconv_close iconv_close\n+ 66#endif /* !HAVE_ICONV */\n+ 67\n+ 68\n+ 69typedef enum\n+ 70{ to_server, to_client } TDS_ICONV_DIRECTION;\n+ 71\n+72typedef struct _character_set_alias\n+ 73{\n+ 74 const char *alias;\n+ 75 int canonic;\n+ 76} CHARACTER_SET_ALIAS;\n+ 77\n+78typedef struct tds_errno_message_flags {\n+ 79 unsigned int e2big:1;\n+ 80 unsigned int eilseq:1;\n+ 81 unsigned int einval:1;\n+ 82} TDS_ERRNO_MESSAGE_FLAGS;\n+ 83\n+84typedef struct tdsiconvdir\n+ 85{\n+ 86 TDS_ENCODING charset;\n+ 87\n+ 88 iconv_t cd;\n+ 89} TDSICONVDIR;\n+ 90\n+91struct tdsiconvinfo\n+ 92{\n+ 93 struct tdsiconvdir to, from;\n+ 94\n+ 95#define TDS_ENCODING_MEMCPY 1\n+ 96 unsigned int flags;\n+ 97\n+ 98 /*\n+ 99 * Suppress error messages that would otherwise be emitted by tds_iconv().\n+ 100 * Functions that process large buffers ask tds_iconv to convert it in\n+\"chunks\".\n+ 101 * We don't want to emit spurious EILSEQ errors or multiple errors for one\n+ 102 * buffer. tds_iconv() checks this structure before emiting a message, and\n+ 103 * adds to it whenever it emits one. Callers that handle a particular\n+situation themselves\n+ 104 * can prepopulate it.\n+ 105 */\n+ 106 TDS_ERRNO_MESSAGE_FLAGS suppress;\n+ 107\n+ 108};\n+ 109\n+ 110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */\n+ 111#ifndef ICONV_CONST\n+ 112# define ICONV_CONST const\n+ 113#endif\n+ 114\n+ 115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION\n+io,\n+ 116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t *\n+outbytesleft);\n+ 117int tds_canonical_charset(const char *charset_name);\n+ 118const char *tds_canonical_charset_name(const char *charset_name);\n+ 119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset,\n+const char *server_charset);\n+ 120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int\n+canonic_server);\n+ 121\n+ 122#ifdef __cplusplus\n+ 123}\n+ 124#endif\n+ 125\n+ 126#include \n+ 127\n+ 128#endif /* _tds_iconv_h_ */\n+tds_iconv_get_info\n+TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int\n+canonic_server)\n+Get a iconv info structure, allocate and initialize if needed.\n+Definition iconv.c:758\n+tds_canonical_charset_name\n+const char * tds_canonical_charset_name(const char *charset_name)\n+Determine canonical iconv character set name.\n+Definition iconv.c:982\n+tds_iconv\n+size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io,\n+const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)\n+Wrapper around iconv(3).\n+Definition iconv.c:592\n+tds_sys_iconv_open\n+iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)\n+Inputs are FreeTDS canonical names, no other.\n+Definition iconv.c:344\n+tds_canonical_charset\n+int tds_canonical_charset(const char *charset_name)\n+Determine canonical iconv character set.\n+Definition iconv.c:970\n+_character_set_alias\n+Definition iconv.h:73\n+tds_errno_message_flags\n+Definition iconv.h:78\n+tdsiconvdir\n+Definition iconv.h:85\n+tdsiconvinfo\n+Definition iconv.h:92\n+tds_encoding\n+Information relevant to libiconv.\n+Definition tds.h:618\n+tds_connection\n+Definition tds.h:1091\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00377_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00377_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/replacements/readpassphrase.h Source File\n+FreeTDS API: include/freetds/enum_cap.h Source File\n \n \n \n \n \n \n \n@@ -70,84 +70,179 @@\n
    \n \n \n \n \n \n \n
    \n-
    readpassphrase.h
    \n+
    enum_cap.h
    \n
    \n
    \n-
    1/* OPENBSD ORIGINAL: include/readpassphrase.h */
    \n-
    2
    \n-
    3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */
    \n-
    4
    \n-
    5/*
    \n-
    6 * Copyright (c) 2000 Todd C. Miller <Todd.Miller@courtesan.com>
    \n-
    7 * All rights reserved.
    \n-
    8 *
    \n-
    9 * Redistribution and use in source and binary forms, with or without
    \n-
    10 * modification, are permitted provided that the following conditions
    \n-
    11 * are met:
    \n-
    12 * 1. Redistributions of source code must retain the above copyright
    \n-
    13 * notice, this list of conditions and the following disclaimer.
    \n-
    14 * 2. Redistributions in binary form must reproduce the above copyright
    \n-
    15 * notice, this list of conditions and the following disclaimer in the
    \n-
    16 * documentation and/or other materials provided with the distribution.
    \n-
    17 * 3. The name of the author may not be used to endorse or promote products
    \n-
    18 * derived from this software without specific prior written permission.
    \n-
    19 *
    \n-
    20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
    \n-
    21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
    \n-
    22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    \n-
    23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    \n-
    24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    \n-
    25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    \n-
    26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    \n-
    27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    \n-
    28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    \n-
    29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    \n-
    30 */
    \n-
    31
    \n-
    32#ifndef FREETDS_READPASSPHRASE_H_
    \n-
    33#define FREETDS_READPASSPHRASE_H_
    \n-
    34
    \n-
    35#ifndef _freetds_config_h_
    \n-
    36#error should include config.h before
    \n-
    37#endif
    \n-
    38
    \n-
    39#ifdef HAVE_READPASSPHRASE
    \n-
    40
    \n-
    41# include <readpassphrase.h>
    \n-
    42
    \n-
    43#else /* !HAVE_READPASSPHRASE */
    \n-
    44
    \n-
    45#include <freetds/pushvis.h>
    \n-
    46
    \n-
    47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
    \n-
    48#define RPP_ECHO_ON 0x01 /* Leave echo on. */
    \n-
    49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
    \n-
    50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
    \n-
    51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
    \n-
    52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
    \n-
    53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
    \n-
    54
    \n-
    55#undef readpassphrase
    \n-
    56char * tds_readpassphrase(const char *, char *, size_t, int);
    \n-
    57#define readpassphrase tds_readpassphrase
    \n-
    58
    \n-
    59#include <freetds/popvis.h>
    \n-
    60
    \n-
    61#endif /* !HAVE_READPASSPHRASE */
    \n-
    62
    \n-
    63#endif /* !FREETDS_READPASSPHRASE_H_ */
    \n+
    1typedef enum tds_request_capability
    \n+
    2 { TDS_REQ_LANG = 1
    \n+
    3 , TDS_REQ_RPC = 2
    \n+
    4 , TDS_REQ_EVT = 3
    \n+
    5 , TDS_REQ_MSTMT = 4
    \n+
    6 , TDS_REQ_BCP = 5
    \n+
    7 , TDS_REQ_CURSOR = 6
    \n+
    8 , TDS_REQ_DYNF = 7
    \n+
    9 , TDS_REQ_MSG = 8
    \n+
    10 , TDS_REQ_PARAM = 9
    \n+
    11 , TDS_REQ_DATA_INT1 = 10
    \n+
    12 , TDS_REQ_DATA_INT2 = 11
    \n+
    13 , TDS_REQ_DATA_INT4 = 12
    \n+
    14 , TDS_REQ_DATA_BIT = 13
    \n+
    15 , TDS_REQ_DATA_CHAR = 14
    \n+
    16 , TDS_REQ_DATA_VCHAR = 15
    \n+
    17 , TDS_REQ_DATA_BIN = 16
    \n+
    18 , TDS_REQ_DATA_VBIN = 17
    \n+
    19 , TDS_REQ_DATA_MNY8 = 18
    \n+
    20 , TDS_REQ_DATA_MNY4 = 19
    \n+
    21 , TDS_REQ_DATA_DATE8 = 20
    \n+
    22 , TDS_REQ_DATA_DATE4 = 21
    \n+
    23 , TDS_REQ_DATA_FLT4 = 22
    \n+
    24 , TDS_REQ_DATA_FLT8 = 23
    \n+
    25 , TDS_REQ_DATA_NUM = 24
    \n+
    26 , TDS_REQ_DATA_TEXT = 25
    \n+
    27 , TDS_REQ_DATA_IMAGE = 26
    \n+
    28 , TDS_REQ_DATA_DEC = 27
    \n+
    29 , TDS_REQ_DATA_LCHAR = 28
    \n+
    30 , TDS_REQ_DATA_LBIN = 29
    \n+
    31 , TDS_REQ_DATA_INTN = 30
    \n+
    32 , TDS_REQ_DATA_DATETIMEN = 31
    \n+
    33 , TDS_REQ_DATA_MONEYN = 32
    \n+
    34 , TDS_REQ_CSR_PREV = 33
    \n+
    35 , TDS_REQ_CSR_FIRST = 34
    \n+
    36 , TDS_REQ_CSR_LAST = 35
    \n+
    37 , TDS_REQ_CSR_ABS = 36
    \n+
    38 , TDS_REQ_CSR_REL = 37
    \n+
    39 , TDS_REQ_CSR_MULTI = 38
    \n+
    40 , TDS_REQ_CON_OOB = 39
    \n+
    41 , TDS_REQ_CON_INBAND = 40
    \n+
    42 , TDS_REQ_CON_LOGICAL = 41
    \n+
    43 , TDS_REQ_PROTO_TEXT = 42
    \n+
    44 , TDS_REQ_PROTO_BULK = 43
    \n+
    45 , TDS_REQ_URGEVT = 44
    \n+
    46 , TDS_REQ_DATA_SENSITIVITY = 45
    \n+
    47 , TDS_REQ_DATA_BOUNDARY = 46
    \n+
    48 , TDS_REQ_PROTO_DYNAMIC = 47
    \n+
    49 , TDS_REQ_PROTO_DYNPROC = 48
    \n+
    50 , TDS_REQ_DATA_FLTN = 49
    \n+
    51 , TDS_REQ_DATA_BITN = 50
    \n+
    52 , TDS_REQ_DATA_INT8 = 51
    \n+
    53 , TDS_REQ_DATA_VOID = 52
    \n+
    54 , TDS_REQ_DOL_BULK = 53
    \n+
    55 , TDS_REQ_OBJECT_JAVA1 = 54
    \n+
    56 , TDS_REQ_OBJECT_CHAR = 55
    \n+
    57 , TDS_REQ_OBJECT_BINARY = 57
    \n+
    58 , TDS_REQ_DATA_COLUMNSTATUS = 58
    \n+
    59 , TDS_REQ_WIDETABLE = 59
    \n+
    60 , TDS_REQ_DATA_UINT2 = 61
    \n+
    61 , TDS_REQ_DATA_UINT4 = 62
    \n+
    62 , TDS_REQ_DATA_UINT8 = 63
    \n+
    63 , TDS_REQ_DATA_UINTN = 64
    \n+
    64 , TDS_REQ_CUR_IMPLICIT = 65
    \n+
    65 , TDS_REQ_DATA_NLBIN = 66
    \n+
    66 , TDS_REQ_IMAGE_NCHAR = 67
    \n+
    67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */
    \n+
    68 , TDS_REQ_BLOB_NCHAR_8 = 69
    \n+
    69 , TDS_REQ_BLOB_NCHAR_SCSU = 70
    \n+
    70 , TDS_REQ_DATA_DATE = 71
    \n+
    71 , TDS_REQ_DATA_TIME = 72
    \n+
    72 , TDS_REQ_DATA_INTERVAL = 73
    \n+
    73 , TDS_REQ_CSR_SCROLL = 74
    \n+
    74 , TDS_REQ_CSR_SENSITIVE = 75
    \n+
    75 , TDS_REQ_CSR_INSENSITIVE = 76
    \n+
    76 , TDS_REQ_CSR_SEMISENSITIVE = 77
    \n+
    77 , TDS_REQ_CSR_KEYSETDRIVEN = 78
    \n+
    78 , TDS_REQ_SRVPKTSIZE = 79
    \n+
    79 , TDS_REQ_DATA_UNITEXT = 80
    \n+
    80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81
    \n+
    81 , TDS_REQ_DATA_SINT1 = 82
    \n+
    82 , TDS_REQ_LARGEIDENT = 83
    \n+
    83 , TDS_REQ_BLOB_NCHAR_16 = 84
    \n+
    84 , TDS_REQ_DATA_XML = 85
    \n+
    85 , TDS_REQ_CURINFO3 = 86
    \n+
    86 , TDS_REQ_DBRPC2 = 87
    \n+
    87 , TDS_REQ_MIGRATE = 89
    \n+
    88 , TDS_REQ_DATA_BIGDATETIME = 93
    \n+
    89 , TDS_REQ_DATA_BIGTIME = 94
    \n+
    90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */
    \n+
    91 } TDS_REQUEST_CAPABILITY;
    \n+
    92
    \n+
    93typedef enum tds_response_capability
    \n+
    94 { TDS_RES_NOMSG = 1
    \n+
    95 , TDS_RES_NOEED = 2
    \n+
    96 , TDS_RES_NOPARAM = 3
    \n+
    97 , TDS_RES_DATA_NOINT1 = 4
    \n+
    98 , TDS_RES_DATA_NOINT2 = 5
    \n+
    99 , TDS_RES_DATA_NOINT4 = 6
    \n+
    100 , TDS_RES_DATA_NOBIT = 7
    \n+
    101 , TDS_RES_DATA_NOCHAR = 8
    \n+
    102 , TDS_RES_DATA_NOVCHAR = 9
    \n+
    103 , TDS_RES_DATA_NOBIN = 10
    \n+
    104 , TDS_RES_DATA_NOVBIN = 11
    \n+
    105 , TDS_RES_DATA_NOMNY8 = 12
    \n+
    106 , TDS_RES_DATA_NOMNY4 = 13
    \n+
    107 , TDS_RES_DATA_NODATE8 = 14
    \n+
    108 , TDS_RES_DATA_NODATE4 = 15
    \n+
    109 , TDS_RES_DATA_NOFLT4 = 16
    \n+
    110 , TDS_RES_DATA_NOFLT8 = 17
    \n+
    111 , TDS_RES_DATA_NONUM = 18
    \n+
    112 , TDS_RES_DATA_NOTEXT = 19
    \n+
    113 , TDS_RES_DATA_NOIMAGE = 20
    \n+
    114 , TDS_RES_DATA_NODEC = 21
    \n+
    115 , TDS_RES_DATA_NOLCHAR = 22
    \n+
    116 , TDS_RES_DATA_NOLBIN = 23
    \n+
    117 , TDS_RES_DATA_INTN = 24
    \n+
    118 , TDS_RES_DATA_NODATETIMEN = 25
    \n+
    119 , TDS_RES_DATA_NOMONEYN = 26
    \n+
    120 , TDS_RES_CON_NOOOB = 27
    \n+
    121 , TDS_RES_CON_NOINBAND = 28
    \n+
    122 , TDS_RES_PROTO_NOTEXT = 29
    \n+
    123 , TDS_RES_PROTO_NOBULK = 30
    \n+
    124 , TDS_RES_DATA_NOSENSITIVITY = 31
    \n+
    125 , TDS_RES_DATA_NOBOUNDARY = 32
    \n+
    126 , TDS_RES_NOTDSDEBUG = 33
    \n+
    127 , TDS_RES_NOSTRIPBLANKS = 34
    \n+
    128 , TDS_RES_DATA_NOINT8 = 35
    \n+
    129 , TDS_RES_OBJECT_NOJAVA1 = 36
    \n+
    130 , TDS_RES_OBJECT_NOCHAR = 37
    \n+
    131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38
    \n+
    132 , TDS_RES_OBJECT_NOBINARY = 39
    \n+
    133 , TDS_RES_DATA_NOUINT2 = 41
    \n+
    134 , TDS_RES_DATA_NOUINT4 = 42
    \n+
    135 , TDS_RES_DATA_NOUINT8 = 43
    \n+
    136 , TDS_RES_DATA_NOUINTN = 44
    \n+
    137 , TDS_RES_NO_WIDETABLES = 45
    \n+
    138 , TDS_RES_DATA_NONLBIN = 46
    \n+
    139 , TDS_RES_IMAGE_NONCHAR = 47
    \n+
    140 , TDS_RES_BLOB_NONCHAR_16 = 48
    \n+
    141 , TDS_RES_BLOB_NONCHAR_8 = 49
    \n+
    142 , TDS_RES_BLOB_NONCHAR_SCSU = 50
    \n+
    143 , TDS_RES_DATA_NODATE = 51
    \n+
    144 , TDS_RES_DATA_NOTIME = 52
    \n+
    145 , TDS_RES_DATA_NOINTERVAL = 53
    \n+
    146 , TDS_RES_DATA_NOUNITEXT = 54
    \n+
    147 , TDS_RES_DATA_NOSINT1 = 55
    \n+
    148 , TDS_RES_NO_LARGEIDENT = 56
    \n+
    149 , TDS_RES_NO_BLOB_NCHAR_16 = 57
    \n+
    150 , TDS_RES_NO_SRVPKTSIZE = 58
    \n+
    151 , TDS_RES_DATA_NOXML = 59
    \n+
    152 , TDS_RES_NONINT_RETURN_VALUE = 60
    \n+
    153 , TDS_RES_NOXNLDATA = 61
    \n+
    154 , TDS_RES_SUPPRESS_FMT = 62
    \n+
    155 , TDS_RES_SUPPRESS_DONEINPROC = 63
    \n+
    156 , TDS_RES_FORCE_ROWFMT2 = 64
    \n+
    157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */
    \n+
    158 } TDS_RESPONSE_CAPABILITY;
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,77 +7,169 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * replacements\n-readpassphrase.h\n- 1/* OPENBSD ORIGINAL: include/readpassphrase.h */\n- 2\n- 3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */\n- 4\n- 5/*\n- 6 * Copyright (c) 2000 Todd C. Miller \n- 7 * All rights reserved.\n- 8 *\n- 9 * Redistribution and use in source and binary forms, with or without\n- 10 * modification, are permitted provided that the following conditions\n- 11 * are met:\n- 12 * 1. Redistributions of source code must retain the above copyright\n- 13 * notice, this list of conditions and the following disclaimer.\n- 14 * 2. Redistributions in binary form must reproduce the above copyright\n- 15 * notice, this list of conditions and the following disclaimer in the\n- 16 * documentation and/or other materials provided with the distribution.\n- 17 * 3. The name of the author may not be used to endorse or promote products\n- 18 * derived from this software without specific prior written permission.\n- 19 *\n- 20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED\n-WARRANTIES,\n- 21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n- 22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL\n- 23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n- 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n- 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n-PROFITS;\n- 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n- 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n- 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n- 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n- 30 */\n- 31\n- 32#ifndef FREETDS_READPASSPHRASE_H_\n- 33#define FREETDS_READPASSPHRASE_H_\n- 34\n- 35#ifndef _freetds_config_h_\n- 36#error should include config.h before\n- 37#endif\n- 38\n- 39#ifdef HAVE_READPASSPHRASE\n- 40\n- 41# include \n- 42\n- 43#else /* !HAVE_READPASSPHRASE */\n- 44\n- 45#include \n- 46\n- 47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */\n- 48#define RPP_ECHO_ON 0x01 /* Leave echo on. */\n- 49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */\n- 50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */\n- 51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */\n- 52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */\n- 53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */\n- 54\n- 55#undef readpassphrase\n- 56char * tds_readpassphrase(const char *, char *, size_t, int);\n- 57#define readpassphrase tds_readpassphrase\n- 58\n- 59#include \n- 60\n- 61#endif /* !HAVE_READPASSPHRASE */\n- 62\n- 63#endif /* !FREETDS_READPASSPHRASE_H_ */\n+enum_cap.h\n+ 1typedef enum tds_request_capability\n+ 2 { TDS_REQ_LANG = 1\n+ 3 , TDS_REQ_RPC = 2\n+ 4 , TDS_REQ_EVT = 3\n+ 5 , TDS_REQ_MSTMT = 4\n+ 6 , TDS_REQ_BCP = 5\n+ 7 , TDS_REQ_CURSOR = 6\n+ 8 , TDS_REQ_DYNF = 7\n+ 9 , TDS_REQ_MSG = 8\n+ 10 , TDS_REQ_PARAM = 9\n+ 11 , TDS_REQ_DATA_INT1 = 10\n+ 12 , TDS_REQ_DATA_INT2 = 11\n+ 13 , TDS_REQ_DATA_INT4 = 12\n+ 14 , TDS_REQ_DATA_BIT = 13\n+ 15 , TDS_REQ_DATA_CHAR = 14\n+ 16 , TDS_REQ_DATA_VCHAR = 15\n+ 17 , TDS_REQ_DATA_BIN = 16\n+ 18 , TDS_REQ_DATA_VBIN = 17\n+ 19 , TDS_REQ_DATA_MNY8 = 18\n+ 20 , TDS_REQ_DATA_MNY4 = 19\n+ 21 , TDS_REQ_DATA_DATE8 = 20\n+ 22 , TDS_REQ_DATA_DATE4 = 21\n+ 23 , TDS_REQ_DATA_FLT4 = 22\n+ 24 , TDS_REQ_DATA_FLT8 = 23\n+ 25 , TDS_REQ_DATA_NUM = 24\n+ 26 , TDS_REQ_DATA_TEXT = 25\n+ 27 , TDS_REQ_DATA_IMAGE = 26\n+ 28 , TDS_REQ_DATA_DEC = 27\n+ 29 , TDS_REQ_DATA_LCHAR = 28\n+ 30 , TDS_REQ_DATA_LBIN = 29\n+ 31 , TDS_REQ_DATA_INTN = 30\n+ 32 , TDS_REQ_DATA_DATETIMEN = 31\n+ 33 , TDS_REQ_DATA_MONEYN = 32\n+ 34 , TDS_REQ_CSR_PREV = 33\n+ 35 , TDS_REQ_CSR_FIRST = 34\n+ 36 , TDS_REQ_CSR_LAST = 35\n+ 37 , TDS_REQ_CSR_ABS = 36\n+ 38 , TDS_REQ_CSR_REL = 37\n+ 39 , TDS_REQ_CSR_MULTI = 38\n+ 40 , TDS_REQ_CON_OOB = 39\n+ 41 , TDS_REQ_CON_INBAND = 40\n+ 42 , TDS_REQ_CON_LOGICAL = 41\n+ 43 , TDS_REQ_PROTO_TEXT = 42\n+ 44 , TDS_REQ_PROTO_BULK = 43\n+ 45 , TDS_REQ_URGEVT = 44\n+ 46 , TDS_REQ_DATA_SENSITIVITY = 45\n+ 47 , TDS_REQ_DATA_BOUNDARY = 46\n+ 48 , TDS_REQ_PROTO_DYNAMIC = 47\n+ 49 , TDS_REQ_PROTO_DYNPROC = 48\n+ 50 , TDS_REQ_DATA_FLTN = 49\n+ 51 , TDS_REQ_DATA_BITN = 50\n+ 52 , TDS_REQ_DATA_INT8 = 51\n+ 53 , TDS_REQ_DATA_VOID = 52\n+ 54 , TDS_REQ_DOL_BULK = 53\n+ 55 , TDS_REQ_OBJECT_JAVA1 = 54\n+ 56 , TDS_REQ_OBJECT_CHAR = 55\n+ 57 , TDS_REQ_OBJECT_BINARY = 57\n+ 58 , TDS_REQ_DATA_COLUMNSTATUS = 58\n+ 59 , TDS_REQ_WIDETABLE = 59\n+ 60 , TDS_REQ_DATA_UINT2 = 61\n+ 61 , TDS_REQ_DATA_UINT4 = 62\n+ 62 , TDS_REQ_DATA_UINT8 = 63\n+ 63 , TDS_REQ_DATA_UINTN = 64\n+ 64 , TDS_REQ_CUR_IMPLICIT = 65\n+ 65 , TDS_REQ_DATA_NLBIN = 66\n+ 66 , TDS_REQ_IMAGE_NCHAR = 67\n+ 67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */\n+ 68 , TDS_REQ_BLOB_NCHAR_8 = 69\n+ 69 , TDS_REQ_BLOB_NCHAR_SCSU = 70\n+ 70 , TDS_REQ_DATA_DATE = 71\n+ 71 , TDS_REQ_DATA_TIME = 72\n+ 72 , TDS_REQ_DATA_INTERVAL = 73\n+ 73 , TDS_REQ_CSR_SCROLL = 74\n+ 74 , TDS_REQ_CSR_SENSITIVE = 75\n+ 75 , TDS_REQ_CSR_INSENSITIVE = 76\n+ 76 , TDS_REQ_CSR_SEMISENSITIVE = 77\n+ 77 , TDS_REQ_CSR_KEYSETDRIVEN = 78\n+ 78 , TDS_REQ_SRVPKTSIZE = 79\n+ 79 , TDS_REQ_DATA_UNITEXT = 80\n+ 80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81\n+ 81 , TDS_REQ_DATA_SINT1 = 82\n+ 82 , TDS_REQ_LARGEIDENT = 83\n+ 83 , TDS_REQ_BLOB_NCHAR_16 = 84\n+ 84 , TDS_REQ_DATA_XML = 85\n+ 85 , TDS_REQ_CURINFO3 = 86\n+ 86 , TDS_REQ_DBRPC2 = 87\n+ 87 , TDS_REQ_MIGRATE = 89\n+ 88 , TDS_REQ_DATA_BIGDATETIME = 93\n+ 89 , TDS_REQ_DATA_BIGTIME = 94\n+ 90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */\n+ 91 } TDS_REQUEST_CAPABILITY;\n+ 92\n+ 93typedef enum tds_response_capability\n+ 94 { TDS_RES_NOMSG = 1\n+ 95 , TDS_RES_NOEED = 2\n+ 96 , TDS_RES_NOPARAM = 3\n+ 97 , TDS_RES_DATA_NOINT1 = 4\n+ 98 , TDS_RES_DATA_NOINT2 = 5\n+ 99 , TDS_RES_DATA_NOINT4 = 6\n+ 100 , TDS_RES_DATA_NOBIT = 7\n+ 101 , TDS_RES_DATA_NOCHAR = 8\n+ 102 , TDS_RES_DATA_NOVCHAR = 9\n+ 103 , TDS_RES_DATA_NOBIN = 10\n+ 104 , TDS_RES_DATA_NOVBIN = 11\n+ 105 , TDS_RES_DATA_NOMNY8 = 12\n+ 106 , TDS_RES_DATA_NOMNY4 = 13\n+ 107 , TDS_RES_DATA_NODATE8 = 14\n+ 108 , TDS_RES_DATA_NODATE4 = 15\n+ 109 , TDS_RES_DATA_NOFLT4 = 16\n+ 110 , TDS_RES_DATA_NOFLT8 = 17\n+ 111 , TDS_RES_DATA_NONUM = 18\n+ 112 , TDS_RES_DATA_NOTEXT = 19\n+ 113 , TDS_RES_DATA_NOIMAGE = 20\n+ 114 , TDS_RES_DATA_NODEC = 21\n+ 115 , TDS_RES_DATA_NOLCHAR = 22\n+ 116 , TDS_RES_DATA_NOLBIN = 23\n+ 117 , TDS_RES_DATA_INTN = 24\n+ 118 , TDS_RES_DATA_NODATETIMEN = 25\n+ 119 , TDS_RES_DATA_NOMONEYN = 26\n+ 120 , TDS_RES_CON_NOOOB = 27\n+ 121 , TDS_RES_CON_NOINBAND = 28\n+ 122 , TDS_RES_PROTO_NOTEXT = 29\n+ 123 , TDS_RES_PROTO_NOBULK = 30\n+ 124 , TDS_RES_DATA_NOSENSITIVITY = 31\n+ 125 , TDS_RES_DATA_NOBOUNDARY = 32\n+ 126 , TDS_RES_NOTDSDEBUG = 33\n+ 127 , TDS_RES_NOSTRIPBLANKS = 34\n+ 128 , TDS_RES_DATA_NOINT8 = 35\n+ 129 , TDS_RES_OBJECT_NOJAVA1 = 36\n+ 130 , TDS_RES_OBJECT_NOCHAR = 37\n+ 131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38\n+ 132 , TDS_RES_OBJECT_NOBINARY = 39\n+ 133 , TDS_RES_DATA_NOUINT2 = 41\n+ 134 , TDS_RES_DATA_NOUINT4 = 42\n+ 135 , TDS_RES_DATA_NOUINT8 = 43\n+ 136 , TDS_RES_DATA_NOUINTN = 44\n+ 137 , TDS_RES_NO_WIDETABLES = 45\n+ 138 , TDS_RES_DATA_NONLBIN = 46\n+ 139 , TDS_RES_IMAGE_NONCHAR = 47\n+ 140 , TDS_RES_BLOB_NONCHAR_16 = 48\n+ 141 , TDS_RES_BLOB_NONCHAR_8 = 49\n+ 142 , TDS_RES_BLOB_NONCHAR_SCSU = 50\n+ 143 , TDS_RES_DATA_NODATE = 51\n+ 144 , TDS_RES_DATA_NOTIME = 52\n+ 145 , TDS_RES_DATA_NOINTERVAL = 53\n+ 146 , TDS_RES_DATA_NOUNITEXT = 54\n+ 147 , TDS_RES_DATA_NOSINT1 = 55\n+ 148 , TDS_RES_NO_LARGEIDENT = 56\n+ 149 , TDS_RES_NO_BLOB_NCHAR_16 = 57\n+ 150 , TDS_RES_NO_SRVPKTSIZE = 58\n+ 151 , TDS_RES_DATA_NOXML = 59\n+ 152 , TDS_RES_NONINT_RETURN_VALUE = 60\n+ 153 , TDS_RES_NOXNLDATA = 61\n+ 154 , TDS_RES_SUPPRESS_FMT = 62\n+ 155 , TDS_RES_SUPPRESS_DONEINPROC = 63\n+ 156 , TDS_RES_FORCE_ROWFMT2 = 64\n+ 157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */\n+ 158 } TDS_RESPONSE_CAPABILITY;\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00380_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00380_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/bytes.h Source File\n+FreeTDS API: include/freetds/pushvis.h Source File\n \n \n \n \n \n \n \n@@ -74,283 +74,20 @@\n \n
    \n \n
    \n
    \n
    \n-
    bytes.h
    \n+
    pushvis.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2005-2008 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _tdsbytes_h_
    \n-
    21#define _tdsbytes_h_
    \n-
    22
    \n-
    23/*
    \n-
    24 * read a word of n bytes aligned, architecture dependent endian
    \n-
    25 * TDS_GET_An
    \n-
    26 * read a word of n bytes aligned, little endian
    \n-
    27 * TDS_GET_AnLE
    \n-
    28 * read a word of n bytes aligned, big endian
    \n-
    29 * TDS_GET_AnBE
    \n-
    30 * read a word of n bytes unaligned, architecture dependent endian
    \n-
    31 * TDS_GET_UAn
    \n-
    32 * read a word of n bytes unaligned, little endian
    \n-
    33 * TDS_GET_UAnLE
    \n-
    34 * read a word of n bytes unaligned, big endian
    \n-
    35 * TDS_GET_UAnBE
    \n-
    36 */
    \n-
    37
    \n-
    38/* one byte, easy... */
    \n-
    39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])
    \n-
    40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)
    \n-
    41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)
    \n-
    42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)
    \n-
    43
    \n-
    44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)
    \n-
    45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n-
    46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n-
    47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n-
    48
    \n-
    49/* two bytes */
    \n-
    50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
    \n-
    51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)(ptr))[1])
    \n-
    52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)
    \n-
    53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)
    \n-
    54
    \n-
    55#define TDS_PUT_UA2LE(ptr,val) do {\\
    \n-
    56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
    \n-
    57#define TDS_PUT_UA2BE(ptr,val) do {\\
    \n-
    58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_t)(val); } while(0)
    \n-
    59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)
    \n-
    60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)
    \n-
    61
    \n-
    62/* four bytes */
    \n-
    63#define TDS_GET_UA4LE(ptr) \\
    \n-
    64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\\
    \n-
    65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])
    \n-
    66#define TDS_GET_UA4BE(ptr) \\
    \n-
    67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\\
    \n-
    68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])
    \n-
    69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)
    \n-
    70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)
    \n-
    71
    \n-
    72#define TDS_PUT_UA4LE(ptr,val) do {\\
    \n-
    73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>16);\\
    \n-
    74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0)
    \n-
    75#define TDS_PUT_UA4BE(ptr,val) do {\\
    \n-
    76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>16);\\
    \n-
    77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_t)(val); } while(0)
    \n-
    78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)
    \n-
    79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)
    \n-
    80
    \n-
    81#if defined(__GNUC__)
    \n-
    82# define TDS_MAY_ALIAS __attribute__((__may_alias__))
    \n-
    83#else
    \n-
    84# define TDS_MAY_ALIAS
    \n-
    85#endif
    \n-
    86
    \n-
    \n-
    87typedef union {
    \n-
    88 uint16_t usi;
    \n-
    89 uint8_t uc[2];
    \n-
    90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;
    \n-
    \n-
    91
    \n-
    92typedef union {
    \n-
    93 uint32_t ui;
    \n-
    94 uint8_t uc[4];
    \n-
    95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;
    \n-
    96
    \n-
    97/* architecture dependent */
    \n-
    98/* map to generic macros or redefine for aligned and same endianess */
    \n-
    99#ifdef WORDS_BIGENDIAN
    \n-
    100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)
    \n-
    101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)
    \n-
    102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)
    \n-
    103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)
    \n-
    104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)
    \n-
    105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)
    \n-
    106# undef TDS_GET_A2BE
    \n-
    107# undef TDS_GET_A4BE
    \n-
    108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
    \n-
    109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
    \n-
    110
    \n-
    111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)
    \n-
    112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)
    \n-
    113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)
    \n-
    114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)
    \n-
    115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)
    \n-
    116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)
    \n-
    117# undef TDS_PUT_A2BE
    \n-
    118# undef TDS_PUT_A4BE
    \n-
    119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
    \n-
    120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
    \n-
    121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)
    \n-
    122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)
    \n-
    123# define TDS_HOST2BE(val) (val)
    \n-
    124# define TDS_HOST4BE(val) (val)
    \n-
    125#else
    \n-
    126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)
    \n-
    127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)
    \n-
    128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)
    \n-
    129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)
    \n-
    130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)
    \n-
    131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)
    \n-
    132# undef TDS_GET_A2LE
    \n-
    133# undef TDS_GET_A4LE
    \n-
    134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)
    \n-
    135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)
    \n-
    136
    \n-
    137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)
    \n-
    138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)
    \n-
    139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)
    \n-
    140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)
    \n-
    141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)
    \n-
    142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)
    \n-
    143# undef TDS_PUT_A2LE
    \n-
    144# undef TDS_PUT_A4LE
    \n-
    145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))
    \n-
    146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))
    \n-
    147# define TDS_HOST2LE(val) (val)
    \n-
    148# define TDS_HOST4LE(val) (val)
    \n-
    149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)
    \n-
    150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)
    \n-
    151#endif
    \n-
    152
    \n-
    153/* these platform support unaligned fetch/store */
    \n-
    154/* map unaligned macro to aligned ones */
    \n-
    155#if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\\
    \n-
    156 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\\
    \n-
    157 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\\
    \n-
    158 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_X64))) ||\\
    \n-
    159 defined(__ARM_FEATURE_UNALIGNED) ||\\
    \n-
    160 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\\
    \n-
    161 (defined(_M_ARM) && (_M_ARM >= 7))
    \n-
    162# ifdef WORDS_BIGENDIAN
    \n-
    163# undef TDS_GET_UA2BE
    \n-
    164# undef TDS_GET_UA4BE
    \n-
    165# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)
    \n-
    166# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)
    \n-
    167
    \n-
    168# undef TDS_PUT_UA2BE
    \n-
    169# undef TDS_PUT_UA4BE
    \n-
    170# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)
    \n-
    171# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)
    \n-
    172# else
    \n-
    173# undef TDS_GET_UA2LE
    \n-
    174# undef TDS_GET_UA4LE
    \n-
    175# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)
    \n-
    176# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)
    \n-
    177
    \n-
    178# undef TDS_PUT_UA2LE
    \n-
    179# undef TDS_PUT_UA4LE
    \n-
    180# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)
    \n-
    181# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)
    \n-
    182# endif
    \n-
    183#endif
    \n-
    184
    \n-
    185#undef TDS_BSWAP16
    \n-
    186#undef TDS_BSWAP32
    \n-
    187/* __builtin_bswap16 was introduced in GCC 4.8 */
    \n-
    188#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && defined(__OPTIMIZE__)
    \n-
    189# define TDS_BSWAP16(val) __builtin_bswap16(val)
    \n-
    190# define TDS_BSWAP32(val) __builtin_bswap32(val)
    \n-
    191/* __builtin_bswap32 was introduced in GCC 4.3 */
    \n-
    192#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)
    \n-
    193# define TDS_BSWAP32(val) __builtin_bswap32(val)
    \n-
    194#elif defined(_MSC_VER)
    \n-
    195# define TDS_BSWAP16(val) _byteswap_ushort(val)
    \n-
    196# define TDS_BSWAP32(val) _byteswap_ulong(val)
    \n-
    197#endif
    \n-
    198
    \n-
    199#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)
    \n-
    200# undef TDS_GET_UA2BE
    \n-
    201# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))
    \n-
    202
    \n-
    203# undef TDS_PUT_UA2BE
    \n-
    204# define TDS_PUT_UA2BE(ptr,val) do {\\
    \n-
    205 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0)
    \n-
    206#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)
    \n-
    207# undef TDS_GET_UA2LE
    \n-
    208# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))
    \n-
    209
    \n-
    210# undef TDS_PUT_UA2LE
    \n-
    211# define TDS_PUT_UA2LE(ptr,val) do {\\
    \n-
    212 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0)
    \n-
    213#endif
    \n-
    214
    \n-
    215#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)
    \n-
    216# undef TDS_GET_UA4BE
    \n-
    217# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))
    \n-
    218
    \n-
    219# undef TDS_PUT_UA4BE
    \n-
    220# define TDS_PUT_UA4BE(ptr,val) do {\\
    \n-
    221 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)
    \n-
    222#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)
    \n-
    223# undef TDS_GET_UA4LE
    \n-
    224# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))
    \n-
    225
    \n-
    226# undef TDS_PUT_UA4LE
    \n-
    227# define TDS_PUT_UA4LE(ptr,val) do {\\
    \n-
    228 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)
    \n-
    229#endif
    \n-
    230
    \n-
    231#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)
    \n-
    232# undef TDS_GET_UA2LE
    \n-
    233# undef TDS_GET_UA4LE
    \n-
    234static inline uint16_t
    \n-
    235TDS_GET_UA2LE(void *ptr)
    \n-
    236{
    \n-
    237 unsigned long res;
    \n-
    238 __asm__ ("lhbrx %0,0,%1\\n" : "=r" (res) : "r" (ptr), "m"(*(uint16_t *)ptr));
    \n-
    239 return (uint16_t) res;
    \n-
    240}
    \n-
    241static inline uint32_t
    \n-
    242TDS_GET_UA4LE(void *ptr)
    \n-
    243{
    \n-
    244 unsigned long res;
    \n-
    245 __asm__ ("lwbrx %0,0,%1\\n" : "=r" (res) : "r" (ptr), "m"(*(uint32_t *)ptr));
    \n-
    246 return (uint32_t) res;
    \n-
    247}
    \n-
    248
    \n-
    249# undef TDS_PUT_UA2LE
    \n-
    250# undef TDS_PUT_UA4LE
    \n-
    251static inline void
    \n-
    252TDS_PUT_UA2LE(void *ptr, unsigned data)
    \n-
    253{
    \n-
    254 __asm__ ("sthbrx %1,0,%2\\n" : "=m" (*(uint16_t *)ptr) : "r" (data), "r" (ptr));
    \n-
    255}
    \n-
    256static inline void
    \n-
    257TDS_PUT_UA4LE(void *ptr, unsigned data)
    \n-
    258{
    \n-
    259 __asm__ ("stwbrx %1,0,%2\\n" : "=m" (*(uint32_t *)ptr) : "r" (data), "r" (ptr));
    \n-
    260}
    \n-
    261#endif
    \n-
    262
    \n-
    263#endif
    \n-
    Definition bytes.h:87
    \n+
    1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n+
    2#pragma GCC visibility push(hidden)
    \n+
    3#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,294 +7,14 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-bytes.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2005-2008 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _tdsbytes_h_\n- 21#define _tdsbytes_h_\n- 22\n- 23/*\n- 24 * read a word of n bytes aligned, architecture dependent endian\n- 25 * TDS_GET_An\n- 26 * read a word of n bytes aligned, little endian\n- 27 * TDS_GET_AnLE\n- 28 * read a word of n bytes aligned, big endian\n- 29 * TDS_GET_AnBE\n- 30 * read a word of n bytes unaligned, architecture dependent endian\n- 31 * TDS_GET_UAn\n- 32 * read a word of n bytes unaligned, little endian\n- 33 * TDS_GET_UAnLE\n- 34 * read a word of n bytes unaligned, big endian\n- 35 * TDS_GET_UAnBE\n- 36 */\n- 37\n- 38/* one byte, easy... */\n- 39#define TDS_GET_A1LE(ptr) (((uint8_t *)(ptr))[0])\n- 40#define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)\n- 41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)\n- 42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)\n- 43\n- 44#define TDS_PUT_A1LE(ptr,val) do { ((uint8_t *)(ptr))[0] = (val); } while(0)\n- 45#define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)\n- 46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)\n- 47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)\n- 48\n- 49/* two bytes */\n- 50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)\n-(ptr))[0])\n- 51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)\n-(ptr))[1])\n- 52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)\n- 53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)\n- 54\n- 55#define TDS_PUT_UA2LE(ptr,val) do {\\\n- 56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] =\n-(uint8_t)(val); } while(0)\n- 57#define TDS_PUT_UA2BE(ptr,val) do {\\\n- 58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] =\n-(uint8_t)(val); } while(0)\n- 59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)\n- 60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)\n- 61\n- 62/* four bytes */\n- 63#define TDS_GET_UA4LE(ptr) \\\n- 64 (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\\\n- 65 ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0])\n- 66#define TDS_GET_UA4BE(ptr) \\\n- 67 (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\\\n- 68 ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3])\n- 69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)\n- 70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)\n- 71\n- 72#define TDS_PUT_UA4LE(ptr,val) do {\\\n- 73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] =\n-(uint8_t)((val)>>16);\\\n- 74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] =\n-(uint8_t)(val); } while(0)\n- 75#define TDS_PUT_UA4BE(ptr,val) do {\\\n- 76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] =\n-(uint8_t)((val)>>16);\\\n- 77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] =\n-(uint8_t)(val); } while(0)\n- 78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)\n- 79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)\n- 80\n- 81#if defined(__GNUC__)\n- 82# define TDS_MAY_ALIAS __attribute__((__may_alias__))\n- 83#else\n- 84# define TDS_MAY_ALIAS\n- 85#endif\n- 86\n-87typedef union {\n- 88 uint16_t usi;\n- 89 uint8_t uc[2];\n- 90} TDS_MAY_ALIAS TDS_BYTE_CONVERT2;\n- 91\n- 92typedef union {\n- 93 uint32_t ui;\n- 94 uint8_t uc[4];\n- 95} TDS_MAY_ALIAS TDS_BYTE_CONVERT4;\n- 96\n- 97/* architecture dependent */\n- 98/* map to generic macros or redefine for aligned and same endianess */\n- 99#ifdef WORDS_BIGENDIAN\n- 100# define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)\n- 101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)\n- 102# define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)\n- 103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)\n- 104# define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)\n- 105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)\n- 106# undef TDS_GET_A2BE\n- 107# undef TDS_GET_A4BE\n- 108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)\n- 109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)\n- 110\n- 111# define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)\n- 112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)\n- 113# define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)\n- 114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)\n- 115# define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)\n- 116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)\n- 117# undef TDS_PUT_A2BE\n- 118# undef TDS_PUT_A4BE\n- 119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))\n- 120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))\n- 121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val)\n- 122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val)\n- 123# define TDS_HOST2BE(val) (val)\n- 124# define TDS_HOST4BE(val) (val)\n- 125#else\n- 126# define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)\n- 127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)\n- 128# define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)\n- 129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)\n- 130# define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)\n- 131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)\n- 132# undef TDS_GET_A2LE\n- 133# undef TDS_GET_A4LE\n- 134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi)\n- 135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui)\n- 136\n- 137# define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)\n- 138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)\n- 139# define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)\n- 140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)\n- 141# define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)\n- 142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)\n- 143# undef TDS_PUT_A2LE\n- 144# undef TDS_PUT_A4LE\n- 145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val))\n- 146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val))\n- 147# define TDS_HOST2LE(val) (val)\n- 148# define TDS_HOST4LE(val) (val)\n- 149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val)\n- 150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val)\n- 151#endif\n- 152\n- 153/* these platform support unaligned fetch/store */\n- 154/* map unaligned macro to aligned ones */\n- 155#if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\\\n- 156 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) ||\n-defined(__ppc64__) ||\\\n- 157 defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\\\n- 158 (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined\n-(_M_X64))) ||\\\n- 159 defined(__ARM_FEATURE_UNALIGNED) ||\\\n- 160 defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\\\n- 161 (defined(_M_ARM) && (_M_ARM >= 7))\n- 162# ifdef WORDS_BIGENDIAN\n- 163# undef TDS_GET_UA2BE\n- 164# undef TDS_GET_UA4BE\n- 165# define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)\n- 166# define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)\n- 167\n- 168# undef TDS_PUT_UA2BE\n- 169# undef TDS_PUT_UA4BE\n- 170# define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)\n- 171# define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)\n- 172# else\n- 173# undef TDS_GET_UA2LE\n- 174# undef TDS_GET_UA4LE\n- 175# define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)\n- 176# define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)\n- 177\n- 178# undef TDS_PUT_UA2LE\n- 179# undef TDS_PUT_UA4LE\n- 180# define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)\n- 181# define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)\n- 182# endif\n- 183#endif\n- 184\n- 185#undef TDS_BSWAP16\n- 186#undef TDS_BSWAP32\n- 187/* __builtin_bswap16 was introduced in GCC 4.8 */\n- 188#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__\n->= 8)) && defined(__OPTIMIZE__)\n- 189# define TDS_BSWAP16(val) __builtin_bswap16(val)\n- 190# define TDS_BSWAP32(val) __builtin_bswap32(val)\n- 191/* __builtin_bswap32 was introduced in GCC 4.3 */\n- 192#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 &&\n-__GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__)\n- 193# define TDS_BSWAP32(val) __builtin_bswap32(val)\n- 194#elif defined(_MSC_VER)\n- 195# define TDS_BSWAP16(val) _byteswap_ushort(val)\n- 196# define TDS_BSWAP32(val) _byteswap_ulong(val)\n- 197#endif\n- 198\n- 199#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN)\n- 200# undef TDS_GET_UA2BE\n- 201# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr))\n- 202\n- 203# undef TDS_PUT_UA2BE\n- 204# define TDS_PUT_UA2BE(ptr,val) do {\\\n- 205 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while\n-(0)\n- 206#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN)\n- 207# undef TDS_GET_UA2LE\n- 208# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr))\n- 209\n- 210# undef TDS_PUT_UA2LE\n- 211# define TDS_PUT_UA2LE(ptr,val) do {\\\n- 212 uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while\n-(0)\n- 213#endif\n- 214\n- 215#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN)\n- 216# undef TDS_GET_UA4BE\n- 217# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr))\n- 218\n- 219# undef TDS_PUT_UA4BE\n- 220# define TDS_PUT_UA4BE(ptr,val) do {\\\n- 221 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)\n- 222#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN)\n- 223# undef TDS_GET_UA4LE\n- 224# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr))\n- 225\n- 226# undef TDS_PUT_UA4LE\n- 227# define TDS_PUT_UA4LE(ptr,val) do {\\\n- 228 uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0)\n- 229#endif\n- 230\n- 231#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN)\n- 232# undef TDS_GET_UA2LE\n- 233# undef TDS_GET_UA4LE\n- 234static inline uint16_t\n- 235TDS_GET_UA2LE(void *ptr)\n- 236{\n- 237 unsigned long res;\n- 238 __asm__ (\"lhbrx %0,0,%1\\n\" : \"=r\" (res) : \"r\" (ptr), \"m\"(*(uint16_t\n-*)ptr));\n- 239 return (uint16_t) res;\n- 240}\n- 241static inline uint32_t\n- 242TDS_GET_UA4LE(void *ptr)\n- 243{\n- 244 unsigned long res;\n- 245 __asm__ (\"lwbrx %0,0,%1\\n\" : \"=r\" (res) : \"r\" (ptr), \"m\"(*(uint32_t\n-*)ptr));\n- 246 return (uint32_t) res;\n- 247}\n- 248\n- 249# undef TDS_PUT_UA2LE\n- 250# undef TDS_PUT_UA4LE\n- 251static inline void\n- 252TDS_PUT_UA2LE(void *ptr, unsigned data)\n- 253{\n- 254 __asm__ (\"sthbrx %1,0,%2\\n\" : \"=m\" (*(uint16_t *)ptr) : \"r\" (data), \"r\"\n-(ptr));\n- 255}\n- 256static inline void\n- 257TDS_PUT_UA4LE(void *ptr, unsigned data)\n- 258{\n- 259 __asm__ (\"stwbrx %1,0,%2\\n\" : \"=m\" (*(uint32_t *)ptr) : \"r\" (data), \"r\"\n-(ptr));\n- 260}\n- 261#endif\n- 262\n- 263#endif\n-TDS_MAY_ALIAS\n-Definition bytes.h:87\n+pushvis.h\n+ 1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n+ 2#pragma GCC visibility push(hidden)\n+ 3#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00383_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00383_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/stream.h Source File\n+FreeTDS API: include/freetds/server.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n
    \n
    \n-
    stream.h
    \n+
    server.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2013 Frediano Ziglio
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,118 +96,66 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _freetds_stream_h_
    \n-
    21#define _freetds_stream_h_
    \n-
    22
    \n-
    23#ifndef _tds_h_
    \n-
    24#error Include tds.h first
    \n-
    25#endif
    \n-
    26
    \n-
    27#include <freetds/pushvis.h>
    \n-
    28
    \n-
    \n-
    30typedef struct tds_input_stream {
    \n-
    35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);
    \n-\n-
    \n-
    37
    \n-
    \n-
    39typedef struct tds_output_stream {
    \n-
    41 int (*write)(struct tds_output_stream *stream, size_t len);
    \n-
    50 char *buffer;
    \n-
    51 size_t buf_len;
    \n-\n-
    \n-
    53
    \n-
    55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION direction,
    \n-
    56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);
    \n-
    58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);
    \n-
    59
    \n-
    60/* Additional streams */
    \n-
    61
    \n-
    \n-
    63typedef struct tds_datain_stream {
    \n-
    64 TDSINSTREAM stream;
    \n-
    65 size_t wire_size;
    \n-
    66 TDSSOCKET *tds;
    \n-\n-
    \n-
    68
    \n-
    69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_t wire_size);
    \n-
    70
    \n-
    \n-
    72typedef struct tds_dataout_stream {
    \n-
    73 TDSOUTSTREAM stream;
    \n-
    74 TDSSOCKET *tds;
    \n-
    75 size_t written;
    \n-\n-
    \n-
    77
    \n-\n-
    79
    \n-
    \n-
    81typedef struct tds_staticin_stream {
    \n-
    82 TDSINSTREAM stream;
    \n-
    83 const char *buffer;
    \n-
    84 size_t buf_left;
    \n-\n-
    \n-
    86
    \n-
    87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, size_t len);
    \n-
    88
    \n-
    \n-
    92typedef struct tds_staticout_stream {
    \n-
    93 TDSOUTSTREAM stream;
    \n-\n-
    \n-
    95
    \n-
    96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_t len);
    \n-
    97
    \n-
    \n-
    99typedef struct tds_dynamic_stream {
    \n-
    100 TDSOUTSTREAM stream;
    \n-
    102 void **buf;
    \n-
    104 size_t allocated;
    \n-
    106 size_t size;
    \n-\n-
    \n-
    108
    \n-
    109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_t allocated);
    \n-
    110
    \n-
    111#include <freetds/popvis.h>
    \n-
    112
    \n-
    113#endif
    \n-
    114
    \n-
    TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
    Initialize a dynamic output stream.
    Definition stream.c:354
    \n-
    TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
    Reads and writes from a stream to another.
    Definition stream.c:163
    \n-
    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
    \n-
    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
    \n-
    void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
    Initialize a data output stream.
    Definition stream.c:244
    \n-
    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
    \n-
    void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
    Initialize a data input stream.
    Definition stream.c:204
    \n-
    Definition iconv.h:92
    \n-
    define a stream of data used for input
    Definition stream.h:30
    \n-
    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
    \n-
    define a stream of data used for output
    Definition stream.h:39
    \n-
    char * buffer
    write buffer.
    Definition stream.h:50
    \n-
    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
    \n-
    input stream to read data from tds protocol
    Definition stream.h:63
    \n-
    size_t wire_size
    bytes still to read
    Definition stream.h:65
    \n-
    output stream to write data to tds protocol
    Definition stream.h:72
    \n-
    input stream to read data from a static buffer
    Definition stream.h:81
    \n-
    output stream to write data to a static buffer.
    Definition stream.h:92
    \n-
    output stream to write data to a dynamic buffer
    Definition stream.h:99
    \n-
    void ** buf
    where is stored the pointer
    Definition stream.h:102
    \n-
    size_t size
    size of data inside buffer
    Definition stream.h:106
    \n-
    size_t allocated
    currently allocated buffer
    Definition stream.h:104
    \n+
    20#ifndef _tdsserver_h_
    \n+
    21#define _tdsserver_h_
    \n+
    22#endif
    \n+
    23
    \n+
    24#ifdef __cplusplus
    \n+
    25extern "C"
    \n+
    26{
    \n+
    27#endif
    \n+
    28#if 0
    \n+
    29}
    \n+
    30#endif
    \n+
    31
    \n+
    32/* login.c */
    \n+
    33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len, unsigned char *clear_pass);
    \n+
    34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);
    \n+
    35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n+
    36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n+
    37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);
    \n+
    38
    \n+
    39/* query.c */
    \n+
    40char *tds_get_query(TDSSOCKET * tds);
    \n+
    41char *tds_get_generic_query(TDSSOCKET * tds);
    \n+
    42
    \n+
    43/* server.c */
    \n+
    44void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const char *newvalue);
    \n+
    45void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity, const char *msgtext, const char *srvname,
    \n+
    46 const char *procname, int line);
    \n+
    47void tds_send_login_ack(TDSSOCKET * tds, const char *progname);
    \n+
    48void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity, char *msgtext, char *srvname, char *procname, int line);
    \n+
    49void tds_send_err(TDSSOCKET * tds, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    \n+
    50void tds_send_capabilities_token(TDSSOCKET * tds);
    \n+
    51/* TODO remove, use tds_send_done */
    \n+
    52void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT numrows);
    \n+
    53void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT numrows);
    \n+
    54void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);
    \n+
    55void tds_send_col_name(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    56void tds_send_col_info(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    57void tds_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    58void tds7_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    59void tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    60void tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);
    \n+
    61void tds71_send_prelogin(TDSSOCKET * tds);
    \n+
    62
    \n+
    63#if 0
    \n+
    64{
    \n+
    65#endif
    \n+
    66#ifdef __cplusplus
    \n+
    67}
    \n+
    68#endif
    \n+
    Definition tds.h:517
    \n+
    Hold information for any results.
    Definition tds.h:769
    \n+
    Definition tds.h:1029
    \n
    Information for a server connection.
    Definition tds.h:1163
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,17 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-stream.h\n+server.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2013 Frediano Ziglio\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,171 +27,76 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _freetds_stream_h_\n- 21#define _freetds_stream_h_\n- 22\n- 23#ifndef _tds_h_\n- 24#error Include tds.h first\n- 25#endif\n- 26\n- 27#include \n- 28\n-30typedef struct tds_input_stream {\n-35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);\n- 36} TDSINSTREAM;\n- 37\n-39typedef struct tds_output_stream {\n-41 int (*write)(struct tds_output_stream *stream, size_t len);\n-50 char *buffer;\n- 51 size_t buf_len;\n- 52} TDSOUTSTREAM;\n- 53\n- 55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv,\n-TDS_ICONV_DIRECTION direction,\n- 56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);\n- 58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);\n- 59\n- 60/* Additional streams */\n- 61\n-63typedef struct tds_datain_stream {\n- 64 TDSINSTREAM stream;\n-65 size_t wire_size;\n- 66 TDSSOCKET *tds;\n- 67} TDSDATAINSTREAM;\n- 68\n- 69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds,\n-size_t wire_size);\n- 70\n-72typedef struct tds_dataout_stream {\n- 73 TDSOUTSTREAM stream;\n- 74 TDSSOCKET *tds;\n- 75 size_t written;\n- 76} TDSDATAOUTSTREAM;\n- 77\n- 78void tds_dataout_stream_init(TDSDATAOUTSTREAM * stream, TDSSOCKET * tds);\n- 79\n-81typedef struct tds_staticin_stream {\n- 82 TDSINSTREAM stream;\n- 83 const char *buffer;\n- 84 size_t buf_left;\n- 85} TDSSTATICINSTREAM;\n- 86\n- 87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr,\n-size_t len);\n- 88\n-92typedef struct tds_staticout_stream {\n- 93 TDSOUTSTREAM stream;\n- 94} TDSSTATICOUTSTREAM;\n- 95\n- 96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr,\n-size_t len);\n- 97\n-99typedef struct tds_dynamic_stream {\n- 100 TDSOUTSTREAM stream;\n-102 void **buf;\n-104 size_t allocated;\n-106 size_t size;\n- 107} TDSDYNAMICSTREAM;\n- 108\n- 109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr,\n-size_t allocated);\n- 110\n- 111#include \n- 112\n- 113#endif\n- 114\n-tds_dynamic_stream_init\n-TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t\n-allocated)\n-Initialize a dynamic output stream.\n-Definition stream.c:354\n-tds_copy_stream\n-TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)\n-Reads and writes from a stream to another.\n-Definition stream.c:163\n-tds_convert_stream\n-TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv,\n-TDS_ICONV_DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream)\n-Reads and writes from a stream converting characters.\n-Definition stream.c:71\n-tds_staticout_stream_init\n-void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_t\n-len)\n-Initialize an output stream for write into a static allocated buffer.\n-Definition stream.c:313\n-tds_dataout_stream_init\n-void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)\n-Initialize a data output stream.\n-Definition stream.c:244\n-tds_staticin_stream_init\n-void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr,\n-size_t len)\n-Initialize an input stream for read from a static allocated buffer.\n-Definition stream.c:286\n-tds_datain_stream_init\n-void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t\n-wire_size)\n-Initialize a data input stream.\n-Definition stream.c:204\n-tdsiconvinfo\n-Definition iconv.h:92\n-tds_input_stream\n-define a stream of data used for input\n-Definition stream.h:30\n-tds_input_stream::read\n-int(* read)(struct tds_input_stream *stream, void *ptr, size_t len)\n-read some data Return 0 if end of stream Return <0 if error (actually not\n-defined)\n-Definition stream.h:35\n-tds_output_stream\n-define a stream of data used for output\n-Definition stream.h:39\n-tds_output_stream::buffer\n-char * buffer\n-write buffer.\n-Definition stream.h:50\n-tds_output_stream::write\n-int(* write)(struct tds_output_stream *stream, size_t len)\n-write len bytes from buffer, return <0 if error or len\n-Definition stream.h:41\n-tds_datain_stream\n-input stream to read data from tds protocol\n-Definition stream.h:63\n-tds_datain_stream::wire_size\n-size_t wire_size\n-bytes still to read\n-Definition stream.h:65\n-tds_dataout_stream\n-output stream to write data to tds protocol\n-Definition stream.h:72\n-tds_staticin_stream\n-input stream to read data from a static buffer\n-Definition stream.h:81\n-tds_staticout_stream\n-output stream to write data to a static buffer.\n-Definition stream.h:92\n-tds_dynamic_stream\n-output stream to write data to a dynamic buffer\n-Definition stream.h:99\n-tds_dynamic_stream::buf\n-void ** buf\n-where is stored the pointer\n-Definition stream.h:102\n-tds_dynamic_stream::size\n-size_t size\n-size of data inside buffer\n-Definition stream.h:106\n-tds_dynamic_stream::allocated\n-size_t allocated\n-currently allocated buffer\n-Definition stream.h:104\n+ 20#ifndef _tdsserver_h_\n+ 21#define _tdsserver_h_\n+ 22#endif\n+ 23\n+ 24#ifdef __cplusplus\n+ 25extern \"C\"\n+ 26{\n+ 27#endif\n+ 28#if 0\n+ 29}\n+ 30#endif\n+ 31\n+ 32/* login.c */\n+ 33unsigned char *tds7_decrypt_pass(const unsigned char *crypt_pass, int len,\n+unsigned char *clear_pass);\n+ 34TDSSOCKET *tds_listen(TDSCONTEXT * ctx, int ip_port);\n+ 35int tds_read_login(TDSSOCKET * tds, TDSLOGIN * login);\n+ 36int tds7_read_login(TDSSOCKET * tds, TDSLOGIN * login);\n+ 37TDSLOGIN *tds_alloc_read_login(TDSSOCKET * tds);\n+ 38\n+ 39/* query.c */\n+ 40char *tds_get_query(TDSSOCKET * tds);\n+ 41char *tds_get_generic_query(TDSSOCKET * tds);\n+ 42\n+ 43/* server.c */\n+ 44void tds_env_change(TDSSOCKET * tds, int type, const char *oldvalue, const\n+char *newvalue);\n+ 45void tds_send_msg(TDSSOCKET * tds, int msgno, int msgstate, int severity,\n+const char *msgtext, const char *srvname,\n+ 46 const char *procname, int line);\n+ 47void tds_send_login_ack(TDSSOCKET * tds, const char *progname);\n+ 48void tds_send_eed(TDSSOCKET * tds, int msgno, int msgstate, int severity,\n+char *msgtext, char *srvname, char *procname, int line);\n+ 49void tds_send_err(TDSSOCKET * tds, int severity, int dberr, int oserr, char\n+*dberrstr, char *oserrstr);\n+ 50void tds_send_capabilities_token(TDSSOCKET * tds);\n+ 51/* TODO remove, use tds_send_done */\n+ 52void tds_send_done_token(TDSSOCKET * tds, TDS_SMALLINT flags, TDS_INT\n+numrows);\n+ 53void tds_send_done(TDSSOCKET * tds, int token, TDS_SMALLINT flags, TDS_INT\n+numrows);\n+ 54void tds_send_control_token(TDSSOCKET * tds, TDS_SMALLINT numcols);\n+ 55void tds_send_col_name(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 56void tds_send_col_info(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 57void tds_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 58void tds7_send_result(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 59void tds_send_table_header(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 60void tds_send_row(TDSSOCKET * tds, TDSRESULTINFO * resinfo);\n+ 61void tds71_send_prelogin(TDSSOCKET * tds);\n+ 62\n+ 63#if 0\n+ 64{\n+ 65#endif\n+ 66#ifdef __cplusplus\n+ 67}\n+ 68#endif\n+tds_login\n+Definition tds.h:517\n+tds_result_info\n+Hold information for any results.\n+Definition tds.h:769\n+tds_context\n+Definition tds.h:1029\n tds_socket\n Information for a server connection.\n Definition tds.h:1163\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00386_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00386_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/odbc.h Source File\n+FreeTDS API: include/freetds/tls.h Source File\n \n \n \n \n \n \n \n@@ -74,791 +74,144 @@\n \n
    \n \n
    \n \n
    \n-
    odbc.h
    \n+
    tls.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n-
    3 * Copyright (C) 2004-2010 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n-
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    21#ifndef _sql_h_
    \n-
    22#define _sql_h_
    \n-
    23
    \n-
    24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
    \n-
    25#include <freetds/tds.h>
    \n-
    26#include <freetds/thread.h>
    \n-
    27#include <freetds/data.h>
    \n-
    28
    \n-
    29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)
    \n-
    30#include <sql.h>
    \n-
    31#include <sqlext.h>
    \n-
    32#if defined(UNIXODBC) || defined(_WIN32)
    \n-
    33#include <odbcinst.h>
    \n-
    34#endif
    \n-
    35#else /* IODBC */
    \n-
    36#include <isql.h>
    \n-
    37#include <isqlext.h>
    \n-
    38#ifdef HAVE_IODBCINST_H
    \n-
    39#include <iodbcinst.h>
    \n-
    40#endif /* HAVE_IODBCINST_H */
    \n-
    41#endif
    \n-
    42
    \n-
    43#ifdef HAVE_WCHAR_H
    \n-
    44#include <wchar.h>
    \n-
    45#endif
    \n-
    46
    \n-
    47#ifndef HAVE_SQLLEN
    \n-
    48#ifndef SQLULEN
    \n-
    49#define SQLULEN SQLUINTEGER
    \n-
    50#endif
    \n-
    51#ifndef SQLLEN
    \n-
    52#define SQLLEN SQLINTEGER
    \n-
    53#endif
    \n-
    54#endif
    \n+
    2 * Copyright (C) 2015 Frediano Ziglio
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _freetds_tls_h_
    \n+
    21#define _freetds_tls_h_
    \n+
    22
    \n+
    23#ifndef _tds_h_
    \n+
    24#error tds.h must be included before tls.h
    \n+
    25#endif
    \n+
    26
    \n+
    27#ifdef HAVE_GNUTLS
    \n+
    28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
    \n+
    29# include <freetds/thread.h>
    \n+
    30# ifndef GNUTLS_USE_NETTLE
    \n+
    31# include <gcrypt.h>
    \n+
    32# endif
    \n+
    33# endif
    \n+
    34# include <gnutls/gnutls.h>
    \n+
    35# include <gnutls/x509.h>
    \n+
    36#elif defined(HAVE_OPENSSL)
    \n+
    37# include <openssl/ssl.h>
    \n+
    38# include <openssl/x509v3.h>
    \n+
    39# include <openssl/err.h>
    \n+
    40#endif
    \n+
    41
    \n+
    42#include <freetds/pushvis.h>
    \n+
    43
    \n+
    44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
    \n+
    45TDSRET tds_ssl_init(TDSSOCKET *tds);
    \n+
    46void tds_ssl_deinit(TDSCONNECTION *conn);
    \n+
    47
    \n+
    48# ifdef HAVE_GNUTLS
    \n+
    49
    \n+
    50static inline int
    \n+
    51tds_ssl_pending(TDSCONNECTION *conn)
    \n+
    52{
    \n+
    53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);
    \n+
    54}
    \n
    55
    \n-
    56#ifndef HAVE_SQLSETPOSIROW
    \n-
    57#define SQLSETPOSIROW SQLUSMALLINT
    \n-
    58#endif
    \n-
    59
    \n-
    60#ifndef HAVE_SQLROWOFFSET
    \n-
    61#define SQLROWOFFSET SQLLEN
    \n-
    62#endif
    \n-
    63
    \n-
    64#ifndef HAVE_SQLROWSETSIZE
    \n-
    65#define SQLROWSETSIZE SQLULEN
    \n-
    66#endif
    \n-
    67
    \n-
    68#ifdef __cplusplus
    \n-
    69extern "C"
    \n-
    70{
    \n-
    71#if 0
    \n-
    72}
    \n-
    73#endif
    \n-
    74#endif
    \n-
    75
    \n-
    76#include <freetds/pushvis.h>
    \n-
    77#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n-
    78#define ODBC_API SQL_API __attribute__((externally_visible))
    \n-
    79#else
    \n-
    80#define ODBC_API SQL_API
    \n-
    81#endif
    \n-
    82
    \n-
    83#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)
    \n-
    84# define ODBC_PUBLIC __attribute__((dllexport))
    \n-
    85#else
    \n-
    86# define ODBC_PUBLIC
    \n-
    87#endif
    \n-
    88
    \n-
    89#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )
    \n-
    90#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )
    \n-
    91#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )
    \n-
    92
    \n-
    \n-\n-
    94{
    \n-
    95 const char *msg;
    \n-
    96 char state2[6];
    \n-
    97 char state3[6];
    \n-
    98 TDS_UINT native;
    \n-
    99 char *server;
    \n-
    100 int linenum;
    \n-
    101 int msgstate;
    \n-
    102 int row;
    \n-
    103};
    \n-
    \n-
    104
    \n-
    \n-\n+
    56static inline int
    \n+
    57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n+
    58{
    \n+
    59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, buflen);
    \n+
    60}
    \n+
    61
    \n+
    62static inline int
    \n+
    63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n+
    64{
    \n+
    65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, buflen);
    \n+
    66}
    \n+
    67# else
    \n+
    68
    \n+
    69/* compatibility for LibreSSL 2.7 */
    \n+
    70#ifdef LIBRESSL_VERSION_NUMBER
    \n+
    71#define TLS_ST_OK SSL_ST_OK
    \n+
    72#endif
    \n+
    73
    \n+
    74static inline int
    \n+
    75tds_ssl_pending(TDSCONNECTION *conn)
    \n+
    76{
    \n+
    77 return SSL_pending((SSL *) conn->tls_session);
    \n+
    78}
    \n+
    79
    \n+
    80static inline int
    \n+
    81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n+
    82{
    \n+
    83 return SSL_read((SSL *) conn->tls_session, buf, buflen);
    \n+
    84}
    \n+
    85
    \n+
    86static inline int
    \n+
    87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n+
    88{
    \n+
    89 return SSL_write((SSL *) conn->tls_session, buf, buflen);
    \n+
    90}
    \n+
    91# endif
    \n+
    92#else
    \n+
    93static inline TDSRET
    \n+
    94tds_ssl_init(TDSSOCKET *tds)
    \n+
    95{
    \n+
    96 return TDS_FAIL;
    \n+
    97}
    \n+
    98
    \n+
    99static inline void
    \n+
    100tds_ssl_deinit(TDSCONNECTION *conn)
    \n+
    101{
    \n+
    102}
    \n+
    103
    \n+
    104static inline int
    \n+
    105tds_ssl_pending(TDSCONNECTION *conn)
    \n
    106{
    \n-
    107 struct _sql_error *errs;
    \n-
    108 int num_errors;
    \n-
    109 SQLRETURN lastrc;
    \n-
    110 char ranked;
    \n-
    111};
    \n-
    \n-
    112
    \n-
    113typedef struct _sql_errors TDS_ERRS;
    \n-
    114
    \n-
    115#if ENABLE_EXTRA_CHECKS
    \n-
    116void odbc_check_struct_extra(void *p);
    \n-
    117#else
    \n-
    118static inline void odbc_check_struct_extra(void *p) {}
    \n-
    119#endif
    \n-
    120
    \n-
    121#define ODBC_RETURN(handle, rc) \\
    \n-
    122 do { odbc_check_struct_extra(handle); \\
    \n-
    123 return handle->errs.lastrc = (rc); } while(0)
    \n-
    124#define ODBC_RETURN_(handle) \\
    \n-
    125 do { odbc_check_struct_extra(handle); \\
    \n-
    126 return handle->errs.lastrc; } while(0)
    \n-
    127
    \n-
    128#define ODBC_EXIT(handle, rc) \\
    \n-
    129 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \\
    \n-
    130 odbc_check_struct_extra(handle); \\
    \n-
    131 tds_mutex_unlock(&handle->mtx); \\
    \n-
    132 return _odbc_rc; } while(0)
    \n-
    133#define ODBC_EXIT_(handle) \\
    \n-
    134 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \\
    \n-
    135 odbc_check_struct_extra(handle); \\
    \n-
    136 tds_mutex_unlock(&handle->mtx); \\
    \n-
    137 return _odbc_rc; } while(0)
    \n-
    138
    \n-
    139
    \n-
    141void odbc_errs_reset(struct _sql_errors *errs);
    \n-
    142
    \n-
    144void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const char *msg);
    \n-
    145
    \n-
    147void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const char *sqlstate, const char *msg, int linenum,
    \n-
    148 int msgstate, const char *server, int row);
    \n-
    149
    \n-
    \n-\n-
    151{
    \n-
    152 SQLSMALLINT sql_desc_alloc_type;
    \n-
    153 SQLINTEGER sql_desc_bind_type;
    \n-
    154 SQLULEN sql_desc_array_size;
    \n-
    155 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en-us;298678 */
    \n-
    156 SQLSMALLINT sql_desc_count;
    \n-
    157 SQLUSMALLINT *sql_desc_array_status_ptr;
    \n-
    158 SQLULEN *sql_desc_rows_processed_ptr;
    \n-
    159 SQLLEN *sql_desc_bind_offset_ptr;
    \n-
    160};
    \n-
    \n-
    161
    \n-
    \n-\n-
    163{
    \n-
    164 SQLUINTEGER sql_desc_auto_unique_value;
    \n-
    165 DSTR sql_desc_base_column_name;
    \n-
    166 DSTR sql_desc_base_table_name;
    \n-
    167 SQLINTEGER sql_desc_case_sensitive;
    \n-
    168 DSTR sql_desc_catalog_name;
    \n-
    169 SQLSMALLINT sql_desc_concise_type;
    \n-
    170 SQLPOINTER sql_desc_data_ptr;
    \n-
    171 SQLSMALLINT sql_desc_datetime_interval_code;
    \n-
    172 SQLINTEGER sql_desc_datetime_interval_precision;
    \n-
    173 SQLLEN sql_desc_display_size;
    \n-
    174 SQLSMALLINT sql_desc_fixed_prec_scale;
    \n-
    175 SQLLEN *sql_desc_indicator_ptr;
    \n-
    176 DSTR sql_desc_label;
    \n-
    177 SQLULEN sql_desc_length;
    \n-
    178 /* this point to a constant buffer, do not free or modify */
    \n-
    179 const char *sql_desc_literal_prefix;
    \n-
    180 /* this point to a constant buffer, do not free or modify */
    \n-
    181 const char *sql_desc_literal_suffix;
    \n-
    182 DSTR sql_desc_local_type_name;
    \n-
    183 DSTR sql_desc_name;
    \n-
    184 SQLSMALLINT sql_desc_nullable;
    \n-
    185 SQLINTEGER sql_desc_num_prec_radix;
    \n-
    186 SQLLEN sql_desc_octet_length;
    \n-
    187 SQLLEN *sql_desc_octet_length_ptr;
    \n-
    188 SQLSMALLINT sql_desc_parameter_type;
    \n-
    189 SQLSMALLINT sql_desc_precision;
    \n-
    190 SQLSMALLINT sql_desc_rowver;
    \n-
    191 SQLSMALLINT sql_desc_scale;
    \n-
    192 DSTR sql_desc_schema_name;
    \n-
    193 SQLSMALLINT sql_desc_searchable;
    \n-
    194 DSTR sql_desc_table_name;
    \n-
    195 SQLSMALLINT sql_desc_type;
    \n-
    196 /* this point to a constant buffer, do not free or modify */
    \n-
    197 const char *sql_desc_type_name;
    \n-
    198 SQLSMALLINT sql_desc_unnamed;
    \n-
    199 SQLSMALLINT sql_desc_unsigned;
    \n-
    200 SQLSMALLINT sql_desc_updatable;
    \n-
    201};
    \n-
    \n-
    202
    \n-
    \n-
    203struct _hdesc
    \n-
    204{
    \n-
    205 SQLSMALLINT htype; /* do not reorder this field */
    \n-
    206 struct _sql_errors errs; /* do not reorder this field */
    \n-
    207 tds_mutex mtx;
    \n-
    208 int type;
    \n-
    209 SQLHANDLE parent;
    \n-
    210 struct _dheader header;
    \n-
    211 struct _drecord *records;
    \n-
    212};
    \n-
    \n-
    213
    \n-
    214typedef struct _hdesc TDS_DESC;
    \n-
    215
    \n-
    216#define DESC_IRD 1
    \n-
    217#define DESC_IPD 2
    \n-
    218#define DESC_ARD 3
    \n-
    219#define DESC_APD 4
    \n-
    220
    \n-
    \n-\n-
    222{
    \n-
    223 SQLUINTEGER connection_pooling;
    \n-
    224 SQLUINTEGER cp_match;
    \n-
    225 SQLINTEGER odbc_version;
    \n-
    226 SQLINTEGER output_nts;
    \n-
    227};
    \n-
    \n-
    228
    \n-
    \n-
    229struct _hchk
    \n-
    230{
    \n-
    231 SQLSMALLINT htype; /* do not reorder this field */
    \n-
    232 struct _sql_errors errs; /* do not reorder this field */
    \n-
    233 tds_mutex mtx;
    \n-
    234};
    \n-
    \n-
    235
    \n-
    \n-
    236struct _henv
    \n-
    237{
    \n-
    238 SQLSMALLINT htype; /* do not reorder this field */
    \n-
    239 struct _sql_errors errs; /* do not reorder this field */
    \n-
    240 tds_mutex mtx;
    \n-
    241 TDSCONTEXT *tds_ctx;
    \n-
    242 struct _heattr attr;
    \n-
    243};
    \n-
    \n-
    244
    \n-
    \n-\n-
    246{
    \n-
    247 SQLUINTEGER access_mode;
    \n-
    248 SQLUINTEGER async_enable;
    \n-
    249 SQLUINTEGER auto_ipd;
    \n-
    250 SQLUINTEGER autocommit;
    \n-
    251 SQLUINTEGER connection_dead;
    \n-
    252 SQLUINTEGER connection_timeout;
    \n-
    253 DSTR current_catalog;
    \n-
    254 SQLUINTEGER login_timeout;
    \n-
    255 SQLUINTEGER metadata_id;
    \n-
    256 SQLUINTEGER odbc_cursors;
    \n-
    257 SQLUINTEGER packet_size;
    \n-
    258 SQLHWND quite_mode;
    \n-
    259 DSTR translate_lib;
    \n-
    260 SQLUINTEGER translate_option;
    \n-
    261 SQLUINTEGER txn_isolation;
    \n-
    262 SQLUINTEGER mars_enabled;
    \n-
    263 SQLUINTEGER cursor_type;
    \n-
    264 SQLUINTEGER bulk_enabled;
    \n-
    265#ifdef TDS_NO_DM
    \n-
    266 SQLUINTEGER trace;
    \n-
    267 DSTR tracefile;
    \n-
    268#endif
    \n-
    269};
    \n-
    \n-
    270
    \n-
    271#define TDS_MAX_APP_DESC 100
    \n-
    272
    \n-
    273struct _hstmt;
    \n-
    \n-
    274struct _hdbc
    \n-
    275{
    \n-
    276 SQLSMALLINT htype; /* do not reorder this field */
    \n-
    277 struct _sql_errors errs; /* do not reorder this field */
    \n-
    278 tds_mutex mtx;
    \n-
    279 struct _henv *env;
    \n-\n-
    281 DSTR dsn;
    \n-
    282 DSTR oldpwd;
    \n-
    283#ifdef ENABLE_ODBC_WIDE
    \n-
    284 int original_charset_num;
    \n-
    285 TDSICONV *mb_conv;
    \n-
    286#endif
    \n-
    287
    \n-\n-\n-
    296 struct _hcattr attr;
    \n-
    298 TDS_DESC *uad[TDS_MAX_APP_DESC];
    \n-
    300 unsigned int cursor_support:1;
    \n-
    301 unsigned int use_oldpwd:1;
    \n-
    302 TDS_INT default_query_timeout;
    \n-
    303
    \n-
    304 TDSBCPINFO *bcpinfo;
    \n-
    305 char *bcphint;
    \n-
    306};
    \n-
    \n-
    307
    \n-
    \n-\n-
    309{
    \n-
    310 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */
    \n-
    311/* TDS_DESC *app_row_desc; */
    \n-
    312/* TDS_DESC *app_param_desc; */
    \n-
    313 SQLUINTEGER async_enable;
    \n-
    314 SQLUINTEGER concurrency;
    \n-
    315 SQLUINTEGER cursor_scrollable;
    \n-
    316 SQLUINTEGER cursor_sensitivity;
    \n-
    317 SQLUINTEGER cursor_type;
    \n-
    318 SQLUINTEGER enable_auto_ipd;
    \n-
    319 SQLPOINTER fetch_bookmark_ptr;
    \n-
    320 SQLULEN keyset_size;
    \n-
    321 SQLULEN max_length;
    \n-
    322 SQLULEN max_rows;
    \n-
    323 SQLUINTEGER metadata_id;
    \n-
    324 SQLUINTEGER noscan;
    \n-
    325 /* apd->sql_desc_bind_offset_ptr */
    \n-
    326 /* SQLUINTEGER *param_bind_offset_ptr; */
    \n-
    327 /* apd->sql_desc_bind_type */
    \n-
    328 /* SQLUINTEGER param_bind_type; */
    \n-
    329 /* apd->sql_desc_array_status_ptr */
    \n-
    330 /* SQLUSMALLINT *param_operation_ptr; */
    \n-
    331 /* ipd->sql_desc_array_status_ptr */
    \n-
    332 /* SQLUSMALLINT *param_status_ptr; */
    \n-
    333 /* ipd->sql_desc_rows_processed_ptr */
    \n-
    334 /* SQLUSMALLINT *params_processed_ptr; */
    \n-
    335 /* apd->sql_desc_array_size */
    \n-
    336 /* SQLUINTEGER paramset_size; */
    \n-
    337 SQLUINTEGER query_timeout;
    \n-
    338 SQLUINTEGER retrieve_data;
    \n-
    339 /* ard->sql_desc_bind_offset_ptr */
    \n-
    340 /* SQLUINTEGER *row_bind_offset_ptr; */
    \n-
    341 /* ard->sql_desc_array_size */
    \n-
    342 /* SQLUINTEGER row_array_size; */
    \n-
    343 /* ard->sql_desc_bind_type */
    \n-
    344 /* SQLUINTEGER row_bind_type; */
    \n-
    345 SQLULEN row_number;
    \n-
    346 /* ard->sql_desc_array_status_ptr */
    \n-
    347 /* SQLUINTEGER *row_operation_ptr; */
    \n-
    348 /* ird->sql_desc_array_status_ptr */
    \n-
    349 /* SQLUINTEGER *row_status_ptr; */
    \n-
    350 /* ird->sql_desc_rows_processed_ptr */
    \n-
    351 /* SQLUINTEGER *rows_fetched_ptr; */
    \n-
    352 SQLUINTEGER simulate_cursor;
    \n-
    353 SQLUINTEGER use_bookmarks;
    \n-
    354 /* SQLGetStmtAttr only */
    \n-
    355/* TDS_DESC *imp_row_desc; */
    \n-
    356/* TDS_DESC *imp_param_desc; */
    \n-
    357 DSTR qn_msgtext;
    \n-
    358 DSTR qn_options;
    \n-
    359 SQLUINTEGER qn_timeout;
    \n-
    360};
    \n-
    \n-
    361
    \n-
    362typedef enum
    \n-
    363{
    \n-
    364 NOT_IN_ROW,
    \n-
    365 IN_NORMAL_ROW,
    \n-
    366 IN_COMPUTE_ROW,
    \n-
    367 AFTER_COMPUTE_ROW,
    \n-
    368 PRE_NORMAL_ROW
    \n-
    369} TDS_ODBC_ROW_STATUS;
    \n-
    370
    \n-
    371typedef enum
    \n-
    372{
    \n-
    373 ODBC_SPECIAL_NONE = 0,
    \n-
    374 ODBC_SPECIAL_GETTYPEINFO = 1,
    \n-
    375 ODBC_SPECIAL_COLUMNS = 2,
    \n-
    376 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,
    \n-
    377 ODBC_SPECIAL_SPECIALCOLUMNS = 4
    \n-
    378} TDS_ODBC_SPECIAL_ROWS;
    \n-
    379
    \n-
    \n-
    380struct _hstmt
    \n-
    381{
    \n-
    382 SQLSMALLINT htype; /* do not reorder this field */
    \n-
    383 struct _sql_errors errs; /* do not reorder this field */
    \n-
    384 tds_mutex mtx;
    \n-
    385 struct _hdbc *dbc;
    \n-\n-\n-
    390
    \n-
    392 struct _hstmt *next;
    \n-
    394 struct _hstmt *prev;
    \n-
    395
    \n-
    396 /* begin prepared query stuff */
    \n-
    397 unsigned is_prepared_query:1;
    \n-
    398 unsigned prepared_query_is_func:1;
    \n-
    399 unsigned prepared_query_is_rpc:1;
    \n-
    404 unsigned need_reprepare:1;
    \n-
    405 unsigned param_data_called:1;
    \n-
    406 /* end prepared query stuff */
    \n-
    407
    \n-\n-\n-\n-
    414
    \n-
    415 unsigned int curr_param_row, num_param_rows;
    \n-
    416
    \n-
    418 unsigned int param_count;
    \n-
    419 int row;
    \n-
    421 TDS_INT8 row_count;
    \n-
    423 TDS_ODBC_ROW_STATUS row_status;
    \n-
    424 /* do NOT free dynamic, free from socket or attach to connection */
    \n-
    425 TDSDYNAMIC *dyn;
    \n-
    426 TDS_DESC *ard, *ird, *apd, *ipd;
    \n-
    427 TDS_DESC *orig_ard, *orig_apd;
    \n-
    428 SQLULEN sql_rowset_size;
    \n-
    429 struct _hsattr attr;
    \n-
    430 DSTR cursor_name; /* auto generated cursor name */
    \n-
    431 TDS_ODBC_SPECIAL_ROWS special_row;
    \n-
    432 /* do NOT free cursor, free from socket or attach to connection */
    \n-
    433 TDSCURSOR *cursor;
    \n-
    434};
    \n-
    \n-
    435
    \n-
    436typedef struct _henv TDS_ENV;
    \n-
    437typedef struct _hdbc TDS_DBC;
    \n-
    438typedef struct _hstmt TDS_STMT;
    \n-
    439typedef struct _hchk TDS_CHK;
    \n-
    440
    \n-
    \n-
    441typedef struct {
    \n-
    442 /* this must be the first member */
    \n-
    443 TDSCOLUMNFUNCS common;
    \n-
    444 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver);
    \n-
    445} TDS_FUNCS;
    \n-
    \n-
    446
    \n-
    447#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)
    \n-
    448#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)
    \n-
    449#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)
    \n-
    450#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)
    \n-
    451
    \n-
    452/* fix a bug in MingW headers */
    \n-
    453#ifdef __MINGW32__
    \n-
    454#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)
    \n-
    455
    \n-
    456#undef SQL_INTERVAL_YEAR
    \n-
    457#undef SQL_INTERVAL_MONTH
    \n-
    458#undef SQL_INTERVAL_DAY
    \n-
    459#undef SQL_INTERVAL_HOUR
    \n-
    460#undef SQL_INTERVAL_MINUTE
    \n-
    461#undef SQL_INTERVAL_SECOND
    \n-
    462#undef SQL_INTERVAL_YEAR_TO_MONTH
    \n-
    463#undef SQL_INTERVAL_DAY_TO_HOUR
    \n-
    464#undef SQL_INTERVAL_DAY_TO_MINUTE
    \n-
    465#undef SQL_INTERVAL_DAY_TO_SECOND
    \n-
    466#undef SQL_INTERVAL_HOUR_TO_MINUTE
    \n-
    467#undef SQL_INTERVAL_HOUR_TO_SECOND
    \n-
    468#undef SQL_INTERVAL_MINUTE_TO_SECOND
    \n-
    469
    \n-
    470#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)
    \n-
    471#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)
    \n-
    472#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)
    \n-
    473#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)
    \n-
    474#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)
    \n-
    475#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)
    \n-
    476#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)
    \n-
    477#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)
    \n-
    478#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)
    \n-
    479#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)
    \n-
    480#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)
    \n-
    481#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)
    \n-
    482#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)
    \n-
    483
    \n-
    484#endif
    \n-
    485#endif
    \n-
    486
    \n-
    487#ifdef _WIN32
    \n-
    488bool get_login_info(HWND hwndParent, TDSLOGIN * login);
    \n-
    489#endif
    \n-
    490
    \n-
    491#define ODBC_PARAM_LIST \\
    \n-
    492 ODBC_PARAM(Servername) \\
    \n-
    493 ODBC_PARAM(Server) \\
    \n-
    494 ODBC_PARAM(DSN) \\
    \n-
    495 ODBC_PARAM(UID) \\
    \n-
    496 ODBC_PARAM(PWD) \\
    \n-
    497 ODBC_PARAM(Address) \\
    \n-
    498 ODBC_PARAM(Port) \\
    \n-
    499 ODBC_PARAM(TDS_Version) \\
    \n-
    500 ODBC_PARAM(Language) \\
    \n-
    501 ODBC_PARAM(Database) \\
    \n-
    502 ODBC_PARAM(TextSize) \\
    \n-
    503 ODBC_PARAM(PacketSize) \\
    \n-
    504 ODBC_PARAM(ClientCharset) \\
    \n-
    505 ODBC_PARAM(DumpFile) \\
    \n-
    506 ODBC_PARAM(DumpFileAppend) \\
    \n-
    507 ODBC_PARAM(DebugFlags) \\
    \n-
    508 ODBC_PARAM(Encryption) \\
    \n-
    509 ODBC_PARAM(Trusted_Connection) \\
    \n-
    510 ODBC_PARAM(APP) \\
    \n-
    511 ODBC_PARAM(WSID) \\
    \n-
    512 ODBC_PARAM(UseNTLMv2) \\
    \n-
    513 ODBC_PARAM(MARS_Connection) \\
    \n-
    514 ODBC_PARAM(REALM) \\
    \n-
    515 ODBC_PARAM(ServerSPN) \\
    \n-
    516 ODBC_PARAM(AttachDbFilename) \\
    \n-
    517 ODBC_PARAM(ApplicationIntent) \\
    \n-
    518 ODBC_PARAM(Timeout)
    \n-
    519
    \n-
    520#define ODBC_PARAM(p) ODBC_PARAM_##p,
    \n-
    521enum {
    \n-
    522 ODBC_PARAM_LIST
    \n-
    523 ODBC_PARAM_SIZE
    \n-
    524};
    \n-
    525#undef ODBC_PARAM
    \n-
    526
    \n-
    527
    \n-
    528/*
    \n-
    529 * connectparams.h
    \n-
    530 */
    \n-
    531
    \n-
    \n-
    532typedef struct {
    \n-
    533 const char *p;
    \n-
    534 size_t len;
    \n-\n-
    \n-
    536
    \n-
    544int odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, const char *connect_string_end, TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params);
    \n-
    545int odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);
    \n-
    546#ifdef _WIN32
    \n-
    547int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char **out);
    \n-
    548#endif
    \n-
    549
    \n-
    550/*
    \n-
    551 * convert_tds2sql.c
    \n-
    552 */
    \n-
    553SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype, TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);
    \n-
    554SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_CHAR * dest, SQLULEN destlen);
    \n-
    555
    \n-
    556
    \n-
    557
    \n-
    558/*
    \n-
    559 * descriptor.c
    \n-
    560 */
    \n-
    561TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, int alloc_type);
    \n-
    562SQLRETURN desc_free(TDS_DESC * desc);
    \n-
    563SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);
    \n-
    564SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);
    \n-
    565SQLRETURN desc_free_records(TDS_DESC * desc);
    \n-
    566TDS_DBC *desc_get_dbc(TDS_DESC *desc);
    \n-
    567
    \n-
    568/*
    \n-
    569 * odbc.c
    \n-
    570 */
    \n-
    571SQLRETURN _SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);
    \n-
    572
    \n-
    573/*
    \n-
    574 * odbc_checks.h
    \n-
    575 */
    \n-
    576#if ENABLE_EXTRA_CHECKS
    \n-
    577/* macro */
    \n-
    578#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)
    \n-
    579#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)
    \n-
    580#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)
    \n-
    581#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)
    \n-
    582/* declarations*/
    \n-
    583void odbc_check_env_extra(TDS_ENV * env);
    \n-
    584void odbc_check_dbc_extra(TDS_DBC * dbc);
    \n-
    585void odbc_check_stmt_extra(TDS_STMT * stmt);
    \n-
    586void odbc_check_desc_extra(TDS_DESC * desc);
    \n-
    587#else
    \n-
    588/* macro */
    \n-
    589#define CHECK_ENV_EXTRA(env)
    \n-
    590#define CHECK_DBC_EXTRA(dbc)
    \n-
    591#define CHECK_STMT_EXTRA(stmt)
    \n-
    592#define CHECK_DESC_EXTRA(desc)
    \n-
    593#endif
    \n-
    594
    \n-
    595/*
    \n-
    596 * odbc_util.h
    \n-
    597 */
    \n-
    598
    \n-
    599/* helpers for ODBC wide string support */
    \n-
    600#undef _wide
    \n-
    601#undef _WIDE
    \n-
    602#ifdef ENABLE_ODBC_WIDE
    \n-
    603typedef union {
    \n-
    604 char mb[1];
    \n-
    605 SQLWCHAR wide[1];
    \n-
    606} ODBC_CHAR;
    \n-
    607# define _wide ,wide
    \n-
    608# define _wide0 ,0
    \n-
    609# define _WIDE ,int wide
    \n-
    610#else
    \n-
    611# define _wide
    \n-
    612# define _wide0
    \n-
    613# define _WIDE
    \n-
    614# define ODBC_CHAR SQLCHAR
    \n-
    615#endif
    \n-
    616int odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int sql_len _WIDE);
    \n-
    617void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);
    \n-
    618void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);
    \n-
    619
    \n-
    620void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, SQLINTEGER odbc_ver);
    \n-
    621
    \n-
    622int odbc_sql_to_c_type_default(int sql_type);
    \n-
    623TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, int sql_unsigned);
    \n-
    624TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);
    \n-
    625
    \n-
    626unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);
    \n-
    627void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);
    \n-
    628SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd, const TDS_DESC* axd, unsigned int n_row);
    \n-
    629
    \n-
    630#ifdef ENABLE_ODBC_WIDE
    \n-
    631DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str, int flag);
    \n-
    632#define odbc_dstr_copy(dbc, s, len, out) \\
    \n-
    633 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)
    \n-
    634#define odbc_dstr_copy_oct(dbc, s, len, out) \\
    \n-
    635 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)
    \n-
    636#else
    \n-
    637DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str);
    \n-
    638#define odbc_dstr_copy_oct odbc_dstr_copy
    \n-
    639#endif
    \n-
    640
    \n-
    641
    \n-
    642SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR * pcbBuffer, const char *s, int len, int flag);
    \n-
    643#ifdef ENABLE_ODBC_WIDE
    \n-
    644#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\
    \n-
    645 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
    \n-
    646#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\
    \n-
    647 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
    \n-
    648#else
    \n-
    649#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\
    \n-
    650 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
    \n-
    651#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\
    \n-
    652 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
    \n-
    653#endif
    \n-
    654
    \n-
    655#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
    \n-
    656#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))
    \n-
    657
    \n-
    658SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT interval);
    \n-
    659SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
    \n-
    660SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval);
    \n-
    661SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
    \n-
    662
    \n-
    663SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);
    \n-
    664void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);
    \n-
    665
    \n-
    666/*
    \n-
    667 * prepare_query.c
    \n-
    668 */
    \n-
    669SQLRETURN prepare_call(struct _hstmt *stmt);
    \n-
    670SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);
    \n-
    671int parse_prepared_query(struct _hstmt *stmt, bool compute_row);
    \n-
    672int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);
    \n-
    673int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, SQLLEN StrLen_or_Ind);
    \n-
    674const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);
    \n-
    675const char *odbc_skip_rpc_name(const char *s);
    \n-
    676
    \n-
    677/*
    \n-
    678 * sql2tds.c
    \n-
    679 */
    \n-
    680SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, const struct _drecord *drec_axd, TDSCOLUMN *curcol, bool compute_row, const TDS_DESC* axd, unsigned int n_row);
    \n-
    681TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_DATETIMEALL * dta);
    \n-
    682
    \n-
    683/*
    \n-
    684 * bcp.c
    \n-
    685 */
    \n-
    686void odbc_bcp_free_storage(TDS_DBC *dbc);
    \n-
    687void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR *hfile, const ODBC_CHAR *errfile, int direction _WIDE);
    \n-
    688void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);
    \n-
    689void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);
    \n-
    690void odbc_bcp_sendrow(TDS_DBC *dbc);
    \n-
    691int odbc_bcp_batch(TDS_DBC *dbc);
    \n-
    692int odbc_bcp_done(TDS_DBC *dbc);
    \n-
    693void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int varlen, const void * terminator, int termlen, int vartype, int table_column);
    \n-
    694
    \n-
    695/*
    \n-
    696 * sqlwchar.c
    \n-
    697 */
    \n-
    698#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T
    \n-
    699size_t sqlwcslen(const SQLWCHAR * s);
    \n-
    700
    \n-
    701typedef struct sqlwstr_buf {
    \n-
    702 struct sqlwstr_buf *next;
    \n-
    703 wchar_t buf[256];
    \n-
    704} SQLWSTRBUF;
    \n-
    705const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);
    \n-
    706void sqlwstr_free(SQLWSTRBUF *bufs);
    \n-
    707#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL
    \n-
    708#define SQLWSTR(s) sqlwstr(s, &bufs)
    \n-
    709#define SQLWSTR_FREE() sqlwstr_free(bufs)
    \n-
    710#else
    \n-
    711#define sqlwcslen(s) wcslen(s)
    \n-
    712
    \n-
    713#define SQLWSTR_BUFS(n) do {} while(0)
    \n-
    714#define SQLWSTR(s) ((const wchar_t*)(s))
    \n-
    715#define SQLWSTR_FREE() do {} while(0)
    \n-
    716#endif
    \n-
    717
    \n-
    718int odbc_get_wide_canonic(TDSCONNECTION *conn);
    \n-
    719
    \n-
    720#include <freetds/popvis.h>
    \n-
    721
    \n-
    722#ifdef __cplusplus
    \n-
    723#if 0
    \n-
    724{
    \n-
    725#endif
    \n-
    726}
    \n-
    727#endif
    \n-
    728
    \n-
    729#endif
    \n-
    Main include file for libtds.
    \n-
    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:976
    \n-
    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:1098
    \n-
    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:861
    \n-
    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:601
    \n-
    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:301
    \n-
    void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)
    Returns the version of the RDBMS in the ODBC format.
    Definition odbc_util.c:852
    \n-
    Definition iconv.h:92
    \n-
    Definition odbc.h:94
    \n-
    Definition odbc.h:106
    \n-
    Definition odbc.h:151
    \n-
    Definition odbc.h:163
    \n-
    Definition odbc.h:204
    \n-
    Definition odbc.h:222
    \n-
    Definition odbc.h:230
    \n-
    Definition odbc.h:237
    \n-
    Definition odbc.h:246
    \n-
    Definition odbc.h:275
    \n-
    struct _hstmt * stmt_list
    list of all statements allocated from this connection
    Definition odbc.h:295
    \n-
    TDS_DESC * uad[TDS_MAX_APP_DESC]
    descriptors associated to connection
    Definition odbc.h:298
    \n-
    struct _hstmt * current_statement
    Statement executing.
    Definition odbc.h:293
    \n-
    unsigned int cursor_support
    <>0 if server handle cursors
    Definition odbc.h:300
    \n-
    Definition odbc.h:309
    \n-
    Definition odbc.h:381
    \n-
    unsigned int param_count
    number of parameter in current query
    Definition odbc.h:418
    \n-
    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:423
    \n-
    size_t prepared_pos
    position in prepared query to check parameters, used only in RPC
    Definition odbc.h:413
    \n-
    TDS_INT8 row_count
    row count to return
    Definition odbc.h:421
    \n-
    int param_num
    last valid parameter in params, it's a ODBC index (from 1 relative to descriptor)
    Definition odbc.h:411
    \n-
    DSTR query
    query to execute
    Definition odbc.h:387
    \n-
    unsigned need_reprepare
    Prepared statement needs to be prepared again.
    Definition odbc.h:404
    \n-
    struct _hstmt * next
    next in list
    Definition odbc.h:392
    \n-
    TDSSOCKET * tds
    socket (only if active)
    Definition odbc.h:389
    \n-
    struct _hstmt * prev
    previous in list
    Definition odbc.h:394
    \n-
    TDSPARAMINFO * params
    parameters saved
    Definition odbc.h:409
    \n-
    Definition odbc.h:441
    \n-
    Definition odbc.h:532
    \n-
    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.
    Definition tds.h:146
    \n-
    Definition tds.h:517
    \n-
    Definition tds.h:643
    \n-
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n-
    Holds informations about a cursor.
    Definition tds.h:937
    \n-
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n-
    Definition tds.h:1029
    \n+
    107 return 0;
    \n+
    108}
    \n+
    109
    \n+
    110static inline int
    \n+
    111tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n+
    112{
    \n+
    113 return -1;
    \n+
    114}
    \n+
    115
    \n+
    116static inline int
    \n+
    117tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n+
    118{
    \n+
    119 return -1;
    \n+
    120}
    \n+
    121#endif
    \n+
    122
    \n+
    123#include <freetds/popvis.h>
    \n+
    124
    \n+
    125#endif /* _freetds_tls_h_ */
    \n
    Definition tds.h:1091
    \n
    Information for a server connection.
    Definition tds.h:1163
    \n-
    Definition tds.h:1661
    \n-
    Structure to hold a string.
    Definition string.h:36
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,896 +7,143 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-odbc.h\n+tls.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n- 3 * Copyright (C) 2004-2010 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n- 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 21#ifndef _sql_h_\n- 22#define _sql_h_\n- 23\n- 24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS\n- 25#include \n- 26#include \n- 27#include \n- 28\n- 29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)\n- 30#include \n- 31#include \n- 32#if defined(UNIXODBC) || defined(_WIN32)\n- 33#include \n- 34#endif\n- 35#else /* IODBC */\n- 36#include \n- 37#include \n- 38#ifdef HAVE_IODBCINST_H\n- 39#include \n- 40#endif /* HAVE_IODBCINST_H */\n- 41#endif\n- 42\n- 43#ifdef HAVE_WCHAR_H\n- 44#include \n- 45#endif\n- 46\n- 47#ifndef HAVE_SQLLEN\n- 48#ifndef SQLULEN\n- 49#define SQLULEN SQLUINTEGER\n- 50#endif\n- 51#ifndef SQLLEN\n- 52#define SQLLEN SQLINTEGER\n- 53#endif\n- 54#endif\n+ 2 * Copyright (C) 2015 Frediano Ziglio\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _freetds_tls_h_\n+ 21#define _freetds_tls_h_\n+ 22\n+ 23#ifndef _tds_h_\n+ 24#error tds.h must be included before tls.h\n+ 25#endif\n+ 26\n+ 27#ifdef HAVE_GNUTLS\n+ 28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)\n+ 29# include \n+ 30# ifndef GNUTLS_USE_NETTLE\n+ 31# include \n+ 32# endif\n+ 33# endif\n+ 34# include \n+ 35# include \n+ 36#elif defined(HAVE_OPENSSL)\n+ 37# include \n+ 38# include \n+ 39# include \n+ 40#endif\n+ 41\n+ 42#include \n+ 43\n+ 44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)\n+ 45TDSRET tds_ssl_init(TDSSOCKET *tds);\n+ 46void tds_ssl_deinit(TDSCONNECTION *conn);\n+ 47\n+ 48# ifdef HAVE_GNUTLS\n+ 49\n+ 50static inline int\n+ 51tds_ssl_pending(TDSCONNECTION *conn)\n+ 52{\n+ 53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);\n+ 54}\n 55\n- 56#ifndef HAVE_SQLSETPOSIROW\n- 57#define SQLSETPOSIROW SQLUSMALLINT\n- 58#endif\n- 59\n- 60#ifndef HAVE_SQLROWOFFSET\n- 61#define SQLROWOFFSET SQLLEN\n- 62#endif\n- 63\n- 64#ifndef HAVE_SQLROWSETSIZE\n- 65#define SQLROWSETSIZE SQLULEN\n- 66#endif\n- 67\n- 68#ifdef __cplusplus\n- 69extern \"C\"\n- 70{\n- 71#if 0\n- 72}\n- 73#endif\n- 74#endif\n- 75\n- 76#include \n- 77#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n- 78#define ODBC_API SQL_API __attribute__((externally_visible))\n- 79#else\n- 80#define ODBC_API SQL_API\n- 81#endif\n- 82\n- 83#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)\n- 84# define ODBC_PUBLIC __attribute__((dllexport))\n- 85#else\n- 86# define ODBC_PUBLIC\n- 87#endif\n- 88\n- 89#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )\n- 90#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )\n- 91#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )\n- 92\n-93struct _sql_error\n- 94{\n- 95 const char *msg;\n- 96 char state2[6];\n- 97 char state3[6];\n- 98 TDS_UINT native;\n- 99 char *server;\n- 100 int linenum;\n- 101 int msgstate;\n- 102 int row;\n- 103};\n- 104\n-105struct _sql_errors\n+ 56static inline int\n+ 57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n+ 58{\n+ 59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf,\n+buflen);\n+ 60}\n+ 61\n+ 62static inline int\n+ 63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n+ 64{\n+ 65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf,\n+buflen);\n+ 66}\n+ 67# else\n+ 68\n+ 69/* compatibility for LibreSSL 2.7 */\n+ 70#ifdef LIBRESSL_VERSION_NUMBER\n+ 71#define TLS_ST_OK SSL_ST_OK\n+ 72#endif\n+ 73\n+ 74static inline int\n+ 75tds_ssl_pending(TDSCONNECTION *conn)\n+ 76{\n+ 77 return SSL_pending((SSL *) conn->tls_session);\n+ 78}\n+ 79\n+ 80static inline int\n+ 81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n+ 82{\n+ 83 return SSL_read((SSL *) conn->tls_session, buf, buflen);\n+ 84}\n+ 85\n+ 86static inline int\n+ 87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n+ 88{\n+ 89 return SSL_write((SSL *) conn->tls_session, buf, buflen);\n+ 90}\n+ 91# endif\n+ 92#else\n+ 93static inline TDSRET\n+ 94tds_ssl_init(TDSSOCKET *tds)\n+ 95{\n+ 96 return TDS_FAIL;\n+ 97}\n+ 98\n+ 99static inline void\n+ 100tds_ssl_deinit(TDSCONNECTION *conn)\n+ 101{\n+ 102}\n+ 103\n+ 104static inline int\n+ 105tds_ssl_pending(TDSCONNECTION *conn)\n 106{\n- 107 struct _sql_error *errs;\n- 108 int num_errors;\n- 109 SQLRETURN lastrc;\n- 110 char ranked;\n- 111};\n- 112\n- 113typedef struct _sql_errors TDS_ERRS;\n- 114\n- 115#if ENABLE_EXTRA_CHECKS\n- 116void odbc_check_struct_extra(void *p);\n- 117#else\n- 118static inline void odbc_check_struct_extra(void *p) {}\n- 119#endif\n- 120\n- 121#define ODBC_RETURN(handle, rc) \\\n- 122 do { odbc_check_struct_extra(handle); \\\n- 123 return handle->errs.lastrc = (rc); } while(0)\n- 124#define ODBC_RETURN_(handle) \\\n- 125 do { odbc_check_struct_extra(handle); \\\n- 126 return handle->errs.lastrc; } while(0)\n- 127\n- 128#define ODBC_EXIT(handle, rc) \\\n- 129 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \\\n- 130 odbc_check_struct_extra(handle); \\\n- 131 tds_mutex_unlock(&handle->mtx); \\\n- 132 return _odbc_rc; } while(0)\n- 133#define ODBC_EXIT_(handle) \\\n- 134 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \\\n- 135 odbc_check_struct_extra(handle); \\\n- 136 tds_mutex_unlock(&handle->mtx); \\\n- 137 return _odbc_rc; } while(0)\n- 138\n- 139\n- 141void odbc_errs_reset(struct _sql_errors *errs);\n- 142\n- 144void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const\n-char *msg);\n- 145\n- 147void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const\n-char *sqlstate, const char *msg, int linenum,\n- 148 int msgstate, const char *server, int row);\n- 149\n-150struct _dheader\n- 151{\n- 152 SQLSMALLINT sql_desc_alloc_type;\n- 153 SQLINTEGER sql_desc_bind_type;\n- 154 SQLULEN sql_desc_array_size;\n- 155 /* TODO SQLLEN ?? see http://support.microsoft.com/\n-default.aspx?scid=kb;en-us;298678 */\n- 156 SQLSMALLINT sql_desc_count;\n- 157 SQLUSMALLINT *sql_desc_array_status_ptr;\n- 158 SQLULEN *sql_desc_rows_processed_ptr;\n- 159 SQLLEN *sql_desc_bind_offset_ptr;\n- 160};\n- 161\n-162struct _drecord\n- 163{\n- 164 SQLUINTEGER sql_desc_auto_unique_value;\n- 165 DSTR sql_desc_base_column_name;\n- 166 DSTR sql_desc_base_table_name;\n- 167 SQLINTEGER sql_desc_case_sensitive;\n- 168 DSTR sql_desc_catalog_name;\n- 169 SQLSMALLINT sql_desc_concise_type;\n- 170 SQLPOINTER sql_desc_data_ptr;\n- 171 SQLSMALLINT sql_desc_datetime_interval_code;\n- 172 SQLINTEGER sql_desc_datetime_interval_precision;\n- 173 SQLLEN sql_desc_display_size;\n- 174 SQLSMALLINT sql_desc_fixed_prec_scale;\n- 175 SQLLEN *sql_desc_indicator_ptr;\n- 176 DSTR sql_desc_label;\n- 177 SQLULEN sql_desc_length;\n- 178 /* this point to a constant buffer, do not free or modify */\n- 179 const char *sql_desc_literal_prefix;\n- 180 /* this point to a constant buffer, do not free or modify */\n- 181 const char *sql_desc_literal_suffix;\n- 182 DSTR sql_desc_local_type_name;\n- 183 DSTR sql_desc_name;\n- 184 SQLSMALLINT sql_desc_nullable;\n- 185 SQLINTEGER sql_desc_num_prec_radix;\n- 186 SQLLEN sql_desc_octet_length;\n- 187 SQLLEN *sql_desc_octet_length_ptr;\n- 188 SQLSMALLINT sql_desc_parameter_type;\n- 189 SQLSMALLINT sql_desc_precision;\n- 190 SQLSMALLINT sql_desc_rowver;\n- 191 SQLSMALLINT sql_desc_scale;\n- 192 DSTR sql_desc_schema_name;\n- 193 SQLSMALLINT sql_desc_searchable;\n- 194 DSTR sql_desc_table_name;\n- 195 SQLSMALLINT sql_desc_type;\n- 196 /* this point to a constant buffer, do not free or modify */\n- 197 const char *sql_desc_type_name;\n- 198 SQLSMALLINT sql_desc_unnamed;\n- 199 SQLSMALLINT sql_desc_unsigned;\n- 200 SQLSMALLINT sql_desc_updatable;\n- 201};\n- 202\n-203struct _hdesc\n- 204{\n- 205 SQLSMALLINT htype; /* do not reorder this field */\n- 206 struct _sql_errors errs; /* do not reorder this field */\n- 207 tds_mutex mtx;\n- 208 int type;\n- 209 SQLHANDLE parent;\n- 210 struct _dheader header;\n- 211 struct _drecord *records;\n- 212};\n- 213\n- 214typedef struct _hdesc TDS_DESC;\n- 215\n- 216#define DESC_IRD 1\n- 217#define DESC_IPD 2\n- 218#define DESC_ARD 3\n- 219#define DESC_APD 4\n- 220\n-221struct _heattr\n- 222{\n- 223 SQLUINTEGER connection_pooling;\n- 224 SQLUINTEGER cp_match;\n- 225 SQLINTEGER odbc_version;\n- 226 SQLINTEGER output_nts;\n- 227};\n- 228\n-229struct _hchk\n- 230{\n- 231 SQLSMALLINT htype; /* do not reorder this field */\n- 232 struct _sql_errors errs; /* do not reorder this field */\n- 233 tds_mutex mtx;\n- 234};\n- 235\n-236struct _henv\n- 237{\n- 238 SQLSMALLINT htype; /* do not reorder this field */\n- 239 struct _sql_errors errs; /* do not reorder this field */\n- 240 tds_mutex mtx;\n- 241 TDSCONTEXT *tds_ctx;\n- 242 struct _heattr attr;\n- 243};\n- 244\n-245struct _hcattr\n- 246{\n- 247 SQLUINTEGER access_mode;\n- 248 SQLUINTEGER async_enable;\n- 249 SQLUINTEGER auto_ipd;\n- 250 SQLUINTEGER autocommit;\n- 251 SQLUINTEGER connection_dead;\n- 252 SQLUINTEGER connection_timeout;\n- 253 DSTR current_catalog;\n- 254 SQLUINTEGER login_timeout;\n- 255 SQLUINTEGER metadata_id;\n- 256 SQLUINTEGER odbc_cursors;\n- 257 SQLUINTEGER packet_size;\n- 258 SQLHWND quite_mode;\n- 259 DSTR translate_lib;\n- 260 SQLUINTEGER translate_option;\n- 261 SQLUINTEGER txn_isolation;\n- 262 SQLUINTEGER mars_enabled;\n- 263 SQLUINTEGER cursor_type;\n- 264 SQLUINTEGER bulk_enabled;\n- 265#ifdef TDS_NO_DM\n- 266 SQLUINTEGER trace;\n- 267 DSTR tracefile;\n- 268#endif\n- 269};\n- 270\n- 271#define TDS_MAX_APP_DESC 100\n- 272\n- 273struct _hstmt;\n-274struct _hdbc\n- 275{\n- 276 SQLSMALLINT htype; /* do not reorder this field */\n- 277 struct _sql_errors errs; /* do not reorder this field */\n- 278 tds_mutex mtx;\n- 279 struct _henv *env;\n- 280 TDSSOCKET *tds_socket;\n- 281 DSTR dsn;\n- 282 DSTR oldpwd;\n- 283#ifdef ENABLE_ODBC_WIDE\n- 284 int original_charset_num;\n- 285 TDSICONV *mb_conv;\n- 286#endif\n- 287\n-293 struct _hstmt *current_statement;\n-295 struct _hstmt *stmt_list;\n- 296 struct _hcattr attr;\n-298 TDS_DESC *uad[TDS_MAX_APP_DESC];\n-300 unsigned int cursor_support:1;\n- 301 unsigned int use_oldpwd:1;\n- 302 TDS_INT default_query_timeout;\n- 303\n- 304 TDSBCPINFO *bcpinfo;\n- 305 char *bcphint;\n- 306};\n- 307\n-308struct _hsattr\n- 309{\n- 310 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */\n- 311/* TDS_DESC *app_row_desc; */\n- 312/* TDS_DESC *app_param_desc; */\n- 313 SQLUINTEGER async_enable;\n- 314 SQLUINTEGER concurrency;\n- 315 SQLUINTEGER cursor_scrollable;\n- 316 SQLUINTEGER cursor_sensitivity;\n- 317 SQLUINTEGER cursor_type;\n- 318 SQLUINTEGER enable_auto_ipd;\n- 319 SQLPOINTER fetch_bookmark_ptr;\n- 320 SQLULEN keyset_size;\n- 321 SQLULEN max_length;\n- 322 SQLULEN max_rows;\n- 323 SQLUINTEGER metadata_id;\n- 324 SQLUINTEGER noscan;\n- 325 /* apd->sql_desc_bind_offset_ptr */\n- 326 /* SQLUINTEGER *param_bind_offset_ptr; */\n- 327 /* apd->sql_desc_bind_type */\n- 328 /* SQLUINTEGER param_bind_type; */\n- 329 /* apd->sql_desc_array_status_ptr */\n- 330 /* SQLUSMALLINT *param_operation_ptr; */\n- 331 /* ipd->sql_desc_array_status_ptr */\n- 332 /* SQLUSMALLINT *param_status_ptr; */\n- 333 /* ipd->sql_desc_rows_processed_ptr */\n- 334 /* SQLUSMALLINT *params_processed_ptr; */\n- 335 /* apd->sql_desc_array_size */\n- 336 /* SQLUINTEGER paramset_size; */\n- 337 SQLUINTEGER query_timeout;\n- 338 SQLUINTEGER retrieve_data;\n- 339 /* ard->sql_desc_bind_offset_ptr */\n- 340 /* SQLUINTEGER *row_bind_offset_ptr; */\n- 341 /* ard->sql_desc_array_size */\n- 342 /* SQLUINTEGER row_array_size; */\n- 343 /* ard->sql_desc_bind_type */\n- 344 /* SQLUINTEGER row_bind_type; */\n- 345 SQLULEN row_number;\n- 346 /* ard->sql_desc_array_status_ptr */\n- 347 /* SQLUINTEGER *row_operation_ptr; */\n- 348 /* ird->sql_desc_array_status_ptr */\n- 349 /* SQLUINTEGER *row_status_ptr; */\n- 350 /* ird->sql_desc_rows_processed_ptr */\n- 351 /* SQLUINTEGER *rows_fetched_ptr; */\n- 352 SQLUINTEGER simulate_cursor;\n- 353 SQLUINTEGER use_bookmarks;\n- 354 /* SQLGetStmtAttr only */\n- 355/* TDS_DESC *imp_row_desc; */\n- 356/* TDS_DESC *imp_param_desc; */\n- 357 DSTR qn_msgtext;\n- 358 DSTR qn_options;\n- 359 SQLUINTEGER qn_timeout;\n- 360};\n- 361\n- 362typedef enum\n- 363{\n- 364 NOT_IN_ROW,\n- 365 IN_NORMAL_ROW,\n- 366 IN_COMPUTE_ROW,\n- 367 AFTER_COMPUTE_ROW,\n- 368 PRE_NORMAL_ROW\n- 369} TDS_ODBC_ROW_STATUS;\n- 370\n- 371typedef enum\n- 372{\n- 373 ODBC_SPECIAL_NONE = 0,\n- 374 ODBC_SPECIAL_GETTYPEINFO = 1,\n- 375 ODBC_SPECIAL_COLUMNS = 2,\n- 376 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,\n- 377 ODBC_SPECIAL_SPECIALCOLUMNS = 4\n- 378} TDS_ODBC_SPECIAL_ROWS;\n- 379\n-380struct _hstmt\n- 381{\n- 382 SQLSMALLINT htype; /* do not reorder this field */\n- 383 struct _sql_errors errs; /* do not reorder this field */\n- 384 tds_mutex mtx;\n- 385 struct _hdbc *dbc;\n-387 DSTR query;\n-389 TDSSOCKET *tds;\n- 390\n-392 struct _hstmt *next;\n-394 struct _hstmt *prev;\n- 395\n- 396 /* begin prepared query stuff */\n- 397 unsigned is_prepared_query:1;\n- 398 unsigned prepared_query_is_func:1;\n- 399 unsigned prepared_query_is_rpc:1;\n-404 unsigned need_reprepare:1;\n- 405 unsigned param_data_called:1;\n- 406 /* end prepared query stuff */\n- 407\n-409 TDSPARAMINFO *params;\n-411 int param_num;\n-413 size_t prepared_pos;\n- 414\n- 415 unsigned int curr_param_row, num_param_rows;\n- 416\n-418 unsigned int param_count;\n- 419 int row;\n-421 TDS_INT8 row_count;\n-423 TDS_ODBC_ROW_STATUS row_status;\n- 424 /* do NOT free dynamic, free from socket or attach to connection */\n- 425 TDSDYNAMIC *dyn;\n- 426 TDS_DESC *ard, *ird, *apd, *ipd;\n- 427 TDS_DESC *orig_ard, *orig_apd;\n- 428 SQLULEN sql_rowset_size;\n- 429 struct _hsattr attr;\n- 430 DSTR cursor_name; /* auto generated cursor name */\n- 431 TDS_ODBC_SPECIAL_ROWS special_row;\n- 432 /* do NOT free cursor, free from socket or attach to connection */\n- 433 TDSCURSOR *cursor;\n- 434};\n- 435\n- 436typedef struct _henv TDS_ENV;\n- 437typedef struct _hdbc TDS_DBC;\n- 438typedef struct _hstmt TDS_STMT;\n- 439typedef struct _hchk TDS_CHK;\n- 440\n-441typedef struct {\n- 442 /* this must be the first member */\n- 443 TDSCOLUMNFUNCS common;\n- 444 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER\n-odbc_ver);\n- 445} TDS_FUNCS;\n- 446\n- 447#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)\n- 448#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)\n- 449#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)\n- 450#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)\n- 451\n- 452/* fix a bug in MingW headers */\n- 453#ifdef __MINGW32__\n- 454#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)\n- 455\n- 456#undef SQL_INTERVAL_YEAR\n- 457#undef SQL_INTERVAL_MONTH\n- 458#undef SQL_INTERVAL_DAY\n- 459#undef SQL_INTERVAL_HOUR\n- 460#undef SQL_INTERVAL_MINUTE\n- 461#undef SQL_INTERVAL_SECOND\n- 462#undef SQL_INTERVAL_YEAR_TO_MONTH\n- 463#undef SQL_INTERVAL_DAY_TO_HOUR\n- 464#undef SQL_INTERVAL_DAY_TO_MINUTE\n- 465#undef SQL_INTERVAL_DAY_TO_SECOND\n- 466#undef SQL_INTERVAL_HOUR_TO_MINUTE\n- 467#undef SQL_INTERVAL_HOUR_TO_SECOND\n- 468#undef SQL_INTERVAL_MINUTE_TO_SECOND\n- 469\n- 470#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)\n- 471#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)\n- 472#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)\n- 473#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)\n- 474#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)\n- 475#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)\n- 476#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)\n- 477#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)\n- 478#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)\n- 479#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)\n- 480#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)\n- 481#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)\n- 482#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)\n- 483\n- 484#endif\n- 485#endif\n- 486\n- 487#ifdef _WIN32\n- 488bool get_login_info(HWND hwndParent, TDSLOGIN * login);\n- 489#endif\n- 490\n- 491#define ODBC_PARAM_LIST \\\n- 492 ODBC_PARAM(Servername) \\\n- 493 ODBC_PARAM(Server) \\\n- 494 ODBC_PARAM(DSN) \\\n- 495 ODBC_PARAM(UID) \\\n- 496 ODBC_PARAM(PWD) \\\n- 497 ODBC_PARAM(Address) \\\n- 498 ODBC_PARAM(Port) \\\n- 499 ODBC_PARAM(TDS_Version) \\\n- 500 ODBC_PARAM(Language) \\\n- 501 ODBC_PARAM(Database) \\\n- 502 ODBC_PARAM(TextSize) \\\n- 503 ODBC_PARAM(PacketSize) \\\n- 504 ODBC_PARAM(ClientCharset) \\\n- 505 ODBC_PARAM(DumpFile) \\\n- 506 ODBC_PARAM(DumpFileAppend) \\\n- 507 ODBC_PARAM(DebugFlags) \\\n- 508 ODBC_PARAM(Encryption) \\\n- 509 ODBC_PARAM(Trusted_Connection) \\\n- 510 ODBC_PARAM(APP) \\\n- 511 ODBC_PARAM(WSID) \\\n- 512 ODBC_PARAM(UseNTLMv2) \\\n- 513 ODBC_PARAM(MARS_Connection) \\\n- 514 ODBC_PARAM(REALM) \\\n- 515 ODBC_PARAM(ServerSPN) \\\n- 516 ODBC_PARAM(AttachDbFilename) \\\n- 517 ODBC_PARAM(ApplicationIntent) \\\n- 518 ODBC_PARAM(Timeout)\n- 519\n- 520#define ODBC_PARAM(p) ODBC_PARAM_##p,\n- 521enum {\n- 522 ODBC_PARAM_LIST\n- 523 ODBC_PARAM_SIZE\n- 524};\n- 525#undef ODBC_PARAM\n- 526\n- 527\n- 528/*\n- 529 * connectparams.h\n- 530 */\n- 531\n-532typedef struct {\n- 533 const char *p;\n- 534 size_t len;\n- 535} TDS_PARSED_PARAM;\n- 536\n- 544int odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string,\n-const char *connect_string_end, TDSLOGIN * login, TDS_PARSED_PARAM\n-*parsed_params);\n- 545int odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);\n- 546#ifdef _WIN32\n- 547int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params,\n-char **out);\n- 548#endif\n- 549\n- 550/*\n- 551 * convert_tds2sql.c\n- 552 */\n- 553SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype,\n-TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);\n- 554SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype,\n-TDS_CHAR * dest, SQLULEN destlen);\n- 555\n- 556\n- 557\n- 558/*\n- 559 * descriptor.c\n- 560 */\n- 561TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, int alloc_type);\n- 562SQLRETURN desc_free(TDS_DESC * desc);\n- 563SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);\n- 564SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);\n- 565SQLRETURN desc_free_records(TDS_DESC * desc);\n- 566TDS_DBC *desc_get_dbc(TDS_DESC *desc);\n- 567\n- 568/*\n- 569 * odbc.c\n- 570 */\n- 571SQLRETURN _SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);\n- 572\n- 573/*\n- 574 * odbc_checks.h\n- 575 */\n- 576#if ENABLE_EXTRA_CHECKS\n- 577/* macro */\n- 578#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)\n- 579#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)\n- 580#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)\n- 581#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)\n- 582/* declarations*/\n- 583void odbc_check_env_extra(TDS_ENV * env);\n- 584void odbc_check_dbc_extra(TDS_DBC * dbc);\n- 585void odbc_check_stmt_extra(TDS_STMT * stmt);\n- 586void odbc_check_desc_extra(TDS_DESC * desc);\n- 587#else\n- 588/* macro */\n- 589#define CHECK_ENV_EXTRA(env)\n- 590#define CHECK_DBC_EXTRA(dbc)\n- 591#define CHECK_STMT_EXTRA(stmt)\n- 592#define CHECK_DESC_EXTRA(desc)\n- 593#endif\n- 594\n- 595/*\n- 596 * odbc_util.h\n- 597 */\n- 598\n- 599/* helpers for ODBC wide string support */\n- 600#undef _wide\n- 601#undef _WIDE\n- 602#ifdef ENABLE_ODBC_WIDE\n- 603typedef union {\n- 604 char mb[1];\n- 605 SQLWCHAR wide[1];\n- 606} ODBC_CHAR;\n- 607# define _wide ,wide\n- 608# define _wide0 ,0\n- 609# define _WIDE ,int wide\n- 610#else\n- 611# define _wide\n- 612# define _wide0\n- 613# define _WIDE\n- 614# define ODBC_CHAR SQLCHAR\n- 615#endif\n- 616int odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int\n-sql_len _WIDE);\n- 617void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);\n- 618void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);\n- 619\n- 620void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec,\n-SQLINTEGER odbc_ver);\n- 621\n- 622int odbc_sql_to_c_type_default(int sql_type);\n- 623TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type,\n-int sql_unsigned);\n- 624TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);\n- 625\n- 626unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);\n- 627void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);\n- 628SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct\n-_drecord *drec_ixd, const TDS_DESC* axd, unsigned int n_row);\n- 629\n- 630#ifdef ENABLE_ODBC_WIDE\n- 631DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR\n-* str, int flag);\n- 632#define odbc_dstr_copy(dbc, s, len, out) \\\n- 633 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)\n- 634#define odbc_dstr_copy_oct(dbc, s, len, out) \\\n- 635 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)\n- 636#else\n- 637DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR *\n-str);\n- 638#define odbc_dstr_copy_oct odbc_dstr_copy\n- 639#endif\n- 640\n- 641\n- 642SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER\n-cbBuffer, void FAR * pcbBuffer, const char *s, int len, int flag);\n- 643#ifdef ENABLE_ODBC_WIDE\n- 644#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\\n- 645 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len,\n-out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))\n- 646#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\\n- 647 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) |\n-(sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))\n- 648#else\n- 649#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\\n- 650 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*\n-(out_len)) == sizeof(SQLSMALLINT)?0:0x10))\n- 651#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\\n- 652 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*\n-(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))\n- 653#endif\n- 654\n- 655#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s)\n-odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len\n-(s))\n- 656#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc,\n-buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))\n- 657\n- 658SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT\n-interval);\n- 659SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct\n-_drecord *drec, int check_only);\n- 660SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT\n-interval);\n- 661SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord\n-*drec, int check_only);\n- 662\n- 663SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);\n- 664void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);\n- 665\n- 666/*\n- 667 * prepare_query.c\n- 668 */\n- 669SQLRETURN prepare_call(struct _hstmt *stmt);\n- 670SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);\n- 671int parse_prepared_query(struct _hstmt *stmt, bool compute_row);\n- 672int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);\n- 673int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr,\n-SQLLEN StrLen_or_Ind);\n- 674const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);\n- 675const char *odbc_skip_rpc_name(const char *s);\n- 676\n- 677/*\n- 678 * sql2tds.c\n- 679 */\n- 680SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd,\n-const struct _drecord *drec_axd, TDSCOLUMN *curcol, bool compute_row, const\n-TDS_DESC* axd, unsigned int n_row);\n- 681TDS_INT convert_datetime2server(int bindtype, const void *src,\n-TDS_DATETIMEALL * dta);\n- 682\n- 683/*\n- 684 * bcp.c\n- 685 */\n- 686void odbc_bcp_free_storage(TDS_DBC *dbc);\n- 687void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR\n-*hfile, const ODBC_CHAR *errfile, int direction _WIDE);\n- 688void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);\n- 689void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);\n- 690void odbc_bcp_sendrow(TDS_DBC *dbc);\n- 691int odbc_bcp_batch(TDS_DBC *dbc);\n- 692int odbc_bcp_done(TDS_DBC *dbc);\n- 693void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int\n-varlen, const void * terminator, int termlen, int vartype, int table_column);\n- 694\n- 695/*\n- 696 * sqlwchar.c\n- 697 */\n- 698#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T\n- 699size_t sqlwcslen(const SQLWCHAR * s);\n- 700\n- 701typedef struct sqlwstr_buf {\n- 702 struct sqlwstr_buf *next;\n- 703 wchar_t buf[256];\n- 704} SQLWSTRBUF;\n- 705const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);\n- 706void sqlwstr_free(SQLWSTRBUF *bufs);\n- 707#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL\n- 708#define SQLWSTR(s) sqlwstr(s, &bufs)\n- 709#define SQLWSTR_FREE() sqlwstr_free(bufs)\n- 710#else\n- 711#define sqlwcslen(s) wcslen(s)\n- 712\n- 713#define SQLWSTR_BUFS(n) do {} while(0)\n- 714#define SQLWSTR(s) ((const wchar_t*)(s))\n- 715#define SQLWSTR_FREE() do {} while(0)\n- 716#endif\n- 717\n- 718int odbc_get_wide_canonic(TDSCONNECTION *conn);\n- 719\n- 720#include \n- 721\n- 722#ifdef __cplusplus\n- 723#if 0\n- 724{\n- 725#endif\n- 726}\n- 727#endif\n- 728\n- 729#endif\n-tds.h\n-Main include file for libtds.\n-odbc_set_concise_sql_type\n-SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord\n-*drec, int check_only)\n-Set concise type and all cascading field.\n-Definition odbc_util.c:976\n-odbc_set_concise_c_type\n-SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord\n-*drec, int check_only)\n-Set concise type and all cascading field.\n-Definition odbc_util.c:1098\n-odbc_get_param_len\n-SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct\n-_drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row)\n-Return length of parameter from parameter information.\n-Definition odbc_util.c:861\n-odbc_c_to_server_type\n-TDS_SERVER_TYPE odbc_c_to_server_type(int c_type)\n-Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to\n-the SQL_C_* type.\n-Definition odbc_util.c:601\n-odbc_set_string_flag\n-SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER\n-cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag)\n-Copy a string to client setting size according to ODBC convenction.\n-Definition odbc_util.c:301\n-odbc_rdbms_version\n-void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)\n-Returns the version of the RDBMS in the ODBC format.\n-Definition odbc_util.c:852\n-tdsiconvinfo\n-Definition iconv.h:92\n-_sql_error\n-Definition odbc.h:94\n-_sql_errors\n-Definition odbc.h:106\n-_dheader\n-Definition odbc.h:151\n-_drecord\n-Definition odbc.h:163\n-_hdesc\n-Definition odbc.h:204\n-_heattr\n-Definition odbc.h:222\n-_hchk\n-Definition odbc.h:230\n-_henv\n-Definition odbc.h:237\n-_hcattr\n-Definition odbc.h:246\n-_hdbc\n-Definition odbc.h:275\n-_hdbc::stmt_list\n-struct _hstmt * stmt_list\n-list of all statements allocated from this connection\n-Definition odbc.h:295\n-_hdbc::uad\n-TDS_DESC * uad[TDS_MAX_APP_DESC]\n-descriptors associated to connection\n-Definition odbc.h:298\n-_hdbc::current_statement\n-struct _hstmt * current_statement\n-Statement executing.\n-Definition odbc.h:293\n-_hdbc::cursor_support\n-unsigned int cursor_support\n-<>0 if server handle cursors\n-Definition odbc.h:300\n-_hsattr\n-Definition odbc.h:309\n-_hstmt\n-Definition odbc.h:381\n-_hstmt::param_count\n-unsigned int param_count\n-number of parameter in current query\n-Definition odbc.h:418\n-_hstmt::row_status\n-TDS_ODBC_ROW_STATUS row_status\n-status of row, it can happen that this flag mark that we are still parsing row,\n-this it's normal\n-Definition odbc.h:423\n-_hstmt::prepared_pos\n-size_t prepared_pos\n-position in prepared query to check parameters, used only in RPC\n-Definition odbc.h:413\n-_hstmt::row_count\n-TDS_INT8 row_count\n-row count to return\n-Definition odbc.h:421\n-_hstmt::param_num\n-int param_num\n-last valid parameter in params, it's a ODBC index (from 1 relative to\n-descriptor)\n-Definition odbc.h:411\n-_hstmt::query\n-DSTR query\n-query to execute\n-Definition odbc.h:387\n-_hstmt::need_reprepare\n-unsigned need_reprepare\n-Prepared statement needs to be prepared again.\n-Definition odbc.h:404\n-_hstmt::next\n-struct _hstmt * next\n-next in list\n-Definition odbc.h:392\n-_hstmt::tds\n-TDSSOCKET * tds\n-socket (only if active)\n-Definition odbc.h:389\n-_hstmt::prev\n-struct _hstmt * prev\n-previous in list\n-Definition odbc.h:394\n-_hstmt::params\n-TDSPARAMINFO * params\n-parameters saved\n-Definition odbc.h:409\n-TDS_FUNCS\n-Definition odbc.h:441\n-TDS_PARSED_PARAM\n-Definition odbc.h:532\n-TDS_DATETIMEALL\n-this structure is not directed connected to a TDS protocol but keeps any DATE/\n-TIME information.\n-Definition tds.h:146\n-tds_login\n-Definition tds.h:517\n-tds_column_funcs\n-Definition tds.h:643\n-tds_column\n-Metadata about columns in regular and compute rows.\n-Definition tds.h:689\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n-tds_cursor\n-Holds informations about a cursor.\n-Definition tds.h:937\n-tds_dynamic\n-Holds information for a dynamic (also called prepared) query.\n-Definition tds.h:977\n-tds_context\n-Definition tds.h:1029\n+ 107 return 0;\n+ 108}\n+ 109\n+ 110static inline int\n+ 111tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n+ 112{\n+ 113 return -1;\n+ 114}\n+ 115\n+ 116static inline int\n+ 117tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n+ 118{\n+ 119 return -1;\n+ 120}\n+ 121#endif\n+ 122\n+ 123#include \n+ 124\n+ 125#endif /* _freetds_tls_h_ */\n tds_connection\n Definition tds.h:1091\n tds_socket\n Information for a server connection.\n Definition tds.h:1163\n-tds_bcpinfo\n-Definition tds.h:1661\n-tds_dstr\n-Structure to hold a string.\n-Definition string.h:36\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00389_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00389_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/data.h Source File\n+FreeTDS API: include/freetds/time.h Source File\n \n \n \n \n \n \n \n@@ -74,120 +74,28 @@\n \n
    \n \n
    \n \n
    \n-
    data.h
    \n+
    time.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2014 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _freetds_data_h_
    \n-
    21#define _freetds_data_h_
    \n-
    22
    \n-
    23#ifndef _tds_h_
    \n-
    24# error Include tds.h before data.h
    \n-
    25#endif
    \n-
    26
    \n-
    27#include <freetds/pushvis.h>
    \n-
    28
    \n-
    29#define TDS_COMMON_FUNCS(name) \\
    \n-
    30{ \\
    \n-
    31 tds_ ## name ## _get_info, \\
    \n-
    32 tds_ ## name ## _get, \\
    \n-
    33 tds_ ## name ## _row_len, \\
    \n-
    34 tds_ ## name ## _put_info, \\
    \n-
    35 tds_ ## name ## _put, \\
    \n-
    36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \\
    \n-
    37}
    \n-
    38
    \n-
    39tds_func_get_info tds_invalid_get_info;
    \n-
    40tds_func_row_len tds_invalid_row_len;
    \n-
    41tds_func_get_data tds_invalid_get;
    \n-
    42tds_func_put_info tds_invalid_put_info;
    \n-
    43tds_func_put_data tds_invalid_put;
    \n-
    44tds_func_check tds_invalid_check;
    \n-
    45
    \n-
    46tds_func_get_info tds_generic_get_info;
    \n-
    47tds_func_row_len tds_generic_row_len;
    \n-
    48tds_func_get_data tds_generic_get;
    \n-
    49tds_func_put_info tds_generic_put_info;
    \n-
    50tds_func_put_data tds_generic_put;
    \n-
    51tds_func_check tds_generic_check;
    \n-
    52
    \n-
    53tds_func_get_info tds_numeric_get_info;
    \n-
    54tds_func_row_len tds_numeric_row_len;
    \n-
    55tds_func_get_data tds_numeric_get;
    \n-
    56tds_func_put_info tds_numeric_put_info;
    \n-
    57tds_func_put_data tds_numeric_put;
    \n-
    58tds_func_check tds_numeric_check;
    \n-
    59
    \n-
    60#define tds_variant_get_info tds_generic_get_info
    \n-
    61#define tds_variant_row_len tds_generic_row_len
    \n-
    62tds_func_get_data tds_variant_get;
    \n-
    63tds_func_put_info tds_variant_put_info;
    \n-
    64tds_func_put_data tds_variant_put;
    \n-
    65tds_func_check tds_variant_check;
    \n-
    66
    \n-
    67tds_func_get_info tds_msdatetime_get_info;
    \n-
    68tds_func_row_len tds_msdatetime_row_len;
    \n-
    69tds_func_get_data tds_msdatetime_get;
    \n-
    70tds_func_put_info tds_msdatetime_put_info;
    \n-
    71tds_func_put_data tds_msdatetime_put;
    \n-
    72tds_func_check tds_msdatetime_check;
    \n-
    73
    \n-
    74tds_func_get_info tds_clrudt_get_info;
    \n-
    75tds_func_row_len tds_clrudt_row_len;
    \n-
    76#define tds_clrudt_get tds_generic_get
    \n-
    77tds_func_put_info tds_clrudt_put_info;
    \n-
    78#define tds_clrudt_put tds_generic_put
    \n-
    79tds_func_check tds_clrudt_check;
    \n-
    80
    \n-
    81tds_func_get_info tds_sybbigtime_get_info;
    \n-
    82tds_func_row_len tds_sybbigtime_row_len;
    \n-
    83tds_func_get_data tds_sybbigtime_get;
    \n-
    84tds_func_put_info tds_sybbigtime_put_info;
    \n-
    85tds_func_put_data tds_sybbigtime_put;
    \n-
    86tds_func_check tds_sybbigtime_check;
    \n-
    87
    \n-
    92#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
    \n-
    93# define TDS_DEFINE_DEFAULT_FUNCS(name) \\
    \n-
    94 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)
    \n-
    95
    \n-
    96TDS_DEFINE_DEFAULT_FUNCS(invalid);
    \n-
    97TDS_DEFINE_DEFAULT_FUNCS(generic);
    \n-
    98TDS_DEFINE_DEFAULT_FUNCS(numeric);
    \n-
    99TDS_DEFINE_DEFAULT_FUNCS(variant);
    \n-
    100TDS_DEFINE_DEFAULT_FUNCS(msdatetime);
    \n-
    101TDS_DEFINE_DEFAULT_FUNCS(clrudt);
    \n-
    102TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);
    \n-
    103#endif
    \n-
    104
    \n-
    105#include <freetds/popvis.h>
    \n-
    106
    \n-
    107#endif
    \n+
    1#if TIME_WITH_SYS_TIME
    \n+
    2# include <sys/time.h>
    \n+
    3# include <time.h>
    \n+
    4#else
    \n+
    5# if HAVE_SYS_TIME_H
    \n+
    6# include <sys/time.h>
    \n+
    7# else
    \n+
    8# include <time.h>
    \n+
    9# endif
    \n+
    10#endif
    \n+
    11
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,114 +7,22 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-data.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2014 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _freetds_data_h_\n- 21#define _freetds_data_h_\n- 22\n- 23#ifndef _tds_h_\n- 24# error Include tds.h before data.h\n- 25#endif\n- 26\n- 27#include \n- 28\n- 29#define TDS_COMMON_FUNCS(name) \\\n- 30{ \\\n- 31 tds_ ## name ## _get_info, \\\n- 32 tds_ ## name ## _get, \\\n- 33 tds_ ## name ## _row_len, \\\n- 34 tds_ ## name ## _put_info, \\\n- 35 tds_ ## name ## _put, \\\n- 36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \\\n- 37}\n- 38\n- 39tds_func_get_info tds_invalid_get_info;\n- 40tds_func_row_len tds_invalid_row_len;\n- 41tds_func_get_data tds_invalid_get;\n- 42tds_func_put_info tds_invalid_put_info;\n- 43tds_func_put_data tds_invalid_put;\n- 44tds_func_check tds_invalid_check;\n- 45\n- 46tds_func_get_info tds_generic_get_info;\n- 47tds_func_row_len tds_generic_row_len;\n- 48tds_func_get_data tds_generic_get;\n- 49tds_func_put_info tds_generic_put_info;\n- 50tds_func_put_data tds_generic_put;\n- 51tds_func_check tds_generic_check;\n- 52\n- 53tds_func_get_info tds_numeric_get_info;\n- 54tds_func_row_len tds_numeric_row_len;\n- 55tds_func_get_data tds_numeric_get;\n- 56tds_func_put_info tds_numeric_put_info;\n- 57tds_func_put_data tds_numeric_put;\n- 58tds_func_check tds_numeric_check;\n- 59\n- 60#define tds_variant_get_info tds_generic_get_info\n- 61#define tds_variant_row_len tds_generic_row_len\n- 62tds_func_get_data tds_variant_get;\n- 63tds_func_put_info tds_variant_put_info;\n- 64tds_func_put_data tds_variant_put;\n- 65tds_func_check tds_variant_check;\n- 66\n- 67tds_func_get_info tds_msdatetime_get_info;\n- 68tds_func_row_len tds_msdatetime_row_len;\n- 69tds_func_get_data tds_msdatetime_get;\n- 70tds_func_put_info tds_msdatetime_put_info;\n- 71tds_func_put_data tds_msdatetime_put;\n- 72tds_func_check tds_msdatetime_check;\n- 73\n- 74tds_func_get_info tds_clrudt_get_info;\n- 75tds_func_row_len tds_clrudt_row_len;\n- 76#define tds_clrudt_get tds_generic_get\n- 77tds_func_put_info tds_clrudt_put_info;\n- 78#define tds_clrudt_put tds_generic_put\n- 79tds_func_check tds_clrudt_check;\n- 80\n- 81tds_func_get_info tds_sybbigtime_get_info;\n- 82tds_func_row_len tds_sybbigtime_row_len;\n- 83tds_func_get_data tds_sybbigtime_get;\n- 84tds_func_put_info tds_sybbigtime_put_info;\n- 85tds_func_put_data tds_sybbigtime_put;\n- 86tds_func_check tds_sybbigtime_check;\n- 87\n- 92#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS\n- 93# define TDS_DEFINE_DEFAULT_FUNCS(name) \\\n- 94 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)\n- 95\n- 96TDS_DEFINE_DEFAULT_FUNCS(invalid);\n- 97TDS_DEFINE_DEFAULT_FUNCS(generic);\n- 98TDS_DEFINE_DEFAULT_FUNCS(numeric);\n- 99TDS_DEFINE_DEFAULT_FUNCS(variant);\n- 100TDS_DEFINE_DEFAULT_FUNCS(msdatetime);\n- 101TDS_DEFINE_DEFAULT_FUNCS(clrudt);\n- 102TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);\n- 103#endif\n- 104\n- 105#include \n- 106\n- 107#endif\n+time.h\n+ 1#if TIME_WITH_SYS_TIME\n+ 2# include \n+ 3# include \n+ 4#else\n+ 5# if HAVE_SYS_TIME_H\n+ 6# include \n+ 7# else\n+ 8# include \n+ 9# endif\n+ 10#endif\n+ 11\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00392_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00392_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/charset_lookup.h Source File\n+FreeTDS API: include/freetds/replacements/readpassphrase.h Source File\n \n \n \n \n \n \n \n@@ -70,1891 +70,84 @@\n
    \n \n \n \n \n \n \n
    \n-
    charset_lookup.h
    \n+
    readpassphrase.h
    \n
    \n
    \n-
    1/* ANSI-C code produced by gperf version 3.1 */
    \n-
    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 charset_lookup.gperf */
    \n-
    3/* Computed positions: -k'1,3-11,$' */
    \n+
    1/* OPENBSD ORIGINAL: include/readpassphrase.h */
    \n+
    2
    \n+
    3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */
    \n
    4
    \n-
    5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \\
    \n-
    6 && ('%' == 37) && ('&' == 38) && ('\\'' == 39) && ('(' == 40) \\
    \n-
    7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \\
    \n-
    8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \\
    \n-
    9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \\
    \n-
    10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \\
    \n-
    11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \\
    \n-
    12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \\
    \n-
    13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \\
    \n-
    14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \\
    \n-
    15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \\
    \n-
    16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \\
    \n-
    17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \\
    \n-
    18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \\
    \n-
    19 && ('Z' == 90) && ('[' == 91) && ('\\\\' == 92) && (']' == 93) \\
    \n-
    20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \\
    \n-
    21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \\
    \n-
    22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \\
    \n-
    23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \\
    \n-
    24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \\
    \n-
    25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \\
    \n-
    26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \\
    \n-
    27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
    \n-
    28/* The character set is not based on ISO-646. */
    \n-
    29#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
    \n-
    30#endif
    \n-
    31
    \n-
    32#line 3 "charset_lookup.gperf"
    \n-
    33
    \n-
    34static const struct charset_alias *charset_lookup(register const char *str, register size_t len);
    \n-
    35#line 2 "charset_lookup.gperf"
    \n-
    36struct charset_alias { short int alias_pos; short int canonic; };
    \n-
    37
    \n-
    38#define TOTAL_KEYWORDS 374
    \n-
    39#define MIN_WORD_LENGTH 2
    \n-
    40#define MAX_WORD_LENGTH 45
    \n-
    41#define MIN_HASH_VALUE 15
    \n-
    42#define MAX_HASH_VALUE 1079
    \n-
    43/* maximum key range = 1065, duplicates = 0 */
    \n-
    44
    \n-
    45#ifdef __GNUC__
    \n-
    46__inline
    \n-
    47#else
    \n-
    48#ifdef __cplusplus
    \n-
    49inline
    \n-
    50#endif
    \n-
    51#endif
    \n-
    52static unsigned int
    \n-
    53hash_charset (register const char *str, register size_t len)
    \n-
    54{
    \n-
    55 static const unsigned short asso_values[] =
    \n-
    56 {
    \n-
    57 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    58 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    59 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    60 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    61 1080, 1080, 1080, 1080, 1080, 7, 132, 1080, 56, 6,
    \n-
    62 47, 83, 35, 8, 18, 63, 7, 9, 363, 1080,
    \n-
    63 1080, 1080, 1080, 1080, 1080, 7, 99, 128, 6, 22,
    \n-
    64 141, 116, 95, 6, 34, 68, 7, 159, 6, 6,
    \n-
    65 80, 1080, 26, 6, 115, 191, 39, 162, 231, 14,
    \n-
    66 8, 1080, 1080, 1080, 1080, 37, 1080, 10, 16, 147,
    \n-
    67 1080, 16, 8, 12, 13, 6, 1080, 6, 1080, 8,
    \n-
    68 6, 6, 1080, 1080, 6, 7, 6, 19, 1080, 1080,
    \n-
    69 1080, 6, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    70 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    71 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    72 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    73 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    74 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    75 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    76 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    77 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    78 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    79 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    80 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    81 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n-
    82 1080, 1080, 1080, 1080, 1080, 1080
    \n-
    83 };
    \n-
    84 register unsigned int hval = len;
    \n-
    85
    \n-
    86 switch (hval)
    \n-
    87 {
    \n-
    88 default:
    \n-
    89 hval += asso_values[(unsigned char)str[10]];
    \n-
    90 /*FALLTHROUGH*/
    \n-
    91 case 10:
    \n-
    92 hval += asso_values[(unsigned char)str[9]];
    \n-
    93 /*FALLTHROUGH*/
    \n-
    94 case 9:
    \n-
    95 hval += asso_values[(unsigned char)str[8]];
    \n-
    96 /*FALLTHROUGH*/
    \n-
    97 case 8:
    \n-
    98 hval += asso_values[(unsigned char)str[7]];
    \n-
    99 /*FALLTHROUGH*/
    \n-
    100 case 7:
    \n-
    101 hval += asso_values[(unsigned char)str[6]];
    \n-
    102 /*FALLTHROUGH*/
    \n-
    103 case 6:
    \n-
    104 hval += asso_values[(unsigned char)str[5]];
    \n-
    105 /*FALLTHROUGH*/
    \n-
    106 case 5:
    \n-
    107 hval += asso_values[(unsigned char)str[4]];
    \n-
    108 /*FALLTHROUGH*/
    \n-
    109 case 4:
    \n-
    110 hval += asso_values[(unsigned char)str[3]];
    \n-
    111 /*FALLTHROUGH*/
    \n-
    112 case 3:
    \n-
    113 hval += asso_values[(unsigned char)str[2]];
    \n-
    114 /*FALLTHROUGH*/
    \n-
    115 case 2:
    \n-
    116 case 1:
    \n-
    117 hval += asso_values[(unsigned char)str[0]];
    \n-
    118 break;
    \n-
    119 }
    \n-
    120 return hval + asso_values[(unsigned char)str[len - 1]];
    \n-
    121}
    \n-
    122
    \n-
    \n-
    123struct stringpool_t
    \n-
    124 {
    \n-
    125 char stringpool_str15[sizeof("L1")];
    \n-
    126 char stringpool_str16[sizeof("L8")];
    \n-
    127 char stringpool_str17[sizeof("L5")];
    \n-
    128 char stringpool_str27[sizeof("L6")];
    \n-
    129 char stringpool_str28[sizeof("SJIS")];
    \n-
    130 char stringpool_str30[sizeof("koi8")];
    \n-
    131 char stringpool_str31[sizeof("sjis")];
    \n-
    132 char stringpool_str35[sizeof("R8")];
    \n-
    133 char stringpool_str36[sizeof("iso81")];
    \n-
    134 char stringpool_str38[sizeof("iso88")];
    \n-
    135 char stringpool_str39[sizeof("iso15")];
    \n-
    136 char stringpool_str40[sizeof("iso85")];
    \n-
    137 char stringpool_str41[sizeof("thai8")];
    \n-
    138 char stringpool_str42[sizeof("iso89")];
    \n-
    139 char stringpool_str43[sizeof("roma8")];
    \n-
    140 char stringpool_str44[sizeof("L4")];
    \n-
    141 char stringpool_str45[sizeof("utf8")];
    \n-
    142 char stringpool_str46[sizeof("866")];
    \n-
    143 char stringpool_str47[sizeof("iso815")];
    \n-
    144 char stringpool_str48[sizeof("big5")];
    \n-
    145 char stringpool_str50[sizeof("roman8")];
    \n-
    146 char stringpool_str56[sizeof("L2")];
    \n-
    147 char stringpool_str57[sizeof("646")];
    \n-
    148 char stringpool_str60[sizeof("iso86")];
    \n-
    149 char stringpool_str63[sizeof("iso88591")];
    \n-
    150 char stringpool_str65[sizeof("iso88598")];
    \n-
    151 char stringpool_str66[sizeof("iso_1")];
    \n-
    152 char stringpool_str67[sizeof("iso88595")];
    \n-
    153 char stringpool_str69[sizeof("iso88599")];
    \n-
    154 char stringpool_str70[sizeof("greek8")];
    \n-
    155 char stringpool_str71[sizeof("ISO8859-1")];
    \n-
    156 char stringpool_str72[sizeof("L7")];
    \n-
    157 char stringpool_str73[sizeof("ISO8859-8")];
    \n-
    158 char stringpool_str74[sizeof("iso885915")];
    \n-
    159 char stringpool_str75[sizeof("ISO8859-5")];
    \n-
    160 char stringpool_str77[sizeof("ISO8859-9")];
    \n-
    161 char stringpool_str79[sizeof("ISO-8859-1")];
    \n-
    162 char stringpool_str81[sizeof("ISO-8859-8")];
    \n-
    163 char stringpool_str82[sizeof("ISO8859-15")];
    \n-
    164 char stringpool_str83[sizeof("ISO-8859-5")];
    \n-
    165 char stringpool_str85[sizeof("ISO-8859-9")];
    \n-
    166 char stringpool_str87[sizeof("iso88596")];
    \n-
    167 char stringpool_str89[sizeof("ISO-IR-58")];
    \n-
    168 char stringpool_str90[sizeof("ISO-8859-15")];
    \n-
    169 char stringpool_str91[sizeof("JAVA")];
    \n-
    170 char stringpool_str92[sizeof("L3")];
    \n-
    171 char stringpool_str93[sizeof("iso14")];
    \n-
    172 char stringpool_str94[sizeof("iso84")];
    \n-
    173 char stringpool_str95[sizeof("ISO8859-6")];
    \n-
    174 char stringpool_str100[sizeof("ISO-IR-159")];
    \n-
    175 char stringpool_str101[sizeof("ISO-IR-199")];
    \n-
    176 char stringpool_str102[sizeof("ISO-IR-6")];
    \n-
    177 char stringpool_str103[sizeof("ISO-8859-6")];
    \n-
    178 char stringpool_str104[sizeof("862")];
    \n-
    179 char stringpool_str105[sizeof("HZ")];
    \n-
    180 char stringpool_str107[sizeof("iso646")];
    \n-
    181 char stringpool_str108[sizeof("ISO-IR-165")];
    \n-
    182 char stringpool_str109[sizeof("ISO_8859-1")];
    \n-
    183 char stringpool_str110[sizeof("ISO-8859-16")];
    \n-
    184 char stringpool_str111[sizeof("ISO_8859-8")];
    \n-
    185 char stringpool_str113[sizeof("ISO_8859-5")];
    \n-
    186 char stringpool_str115[sizeof("ISO_8859-9")];
    \n-
    187 char stringpool_str116[sizeof("JP")];
    \n-
    188 char stringpool_str118[sizeof("iso82")];
    \n-
    189 char stringpool_str120[sizeof("ISO_8859-15")];
    \n-
    190 char stringpool_str121[sizeof("iso88594")];
    \n-
    191 char stringpool_str122[sizeof("850")];
    \n-
    192 char stringpool_str123[sizeof("ISO-IR-148")];
    \n-
    193 char stringpool_str124[sizeof("ISO_8859-15:1998")];
    \n-
    194 char stringpool_str127[sizeof("ISO-IR-149")];
    \n-
    195 char stringpool_str128[sizeof("ISO-IR-166")];
    \n-
    196 char stringpool_str129[sizeof("ISO8859-4")];
    \n-
    197 char stringpool_str133[sizeof("ISO_8859-6")];
    \n-
    198 char stringpool_str135[sizeof("iso10")];
    \n-
    199 char stringpool_str136[sizeof("CN")];
    \n-
    200 char stringpool_str137[sizeof("ISO-8859-4")];
    \n-
    201 char stringpool_str140[sizeof("ISO_8859-16")];
    \n-
    202 char stringpool_str141[sizeof("KOREAN")];
    \n-
    203 char stringpool_str142[sizeof("ISO-IR-101")];
    \n-
    204 char stringpool_str143[sizeof("ISO-IR-14")];
    \n-
    205 char stringpool_str144[sizeof("ISO-8859-14")];
    \n-
    206 char stringpool_str145[sizeof("iso88592")];
    \n-
    207 char stringpool_str146[sizeof("KOI8-R")];
    \n-
    208 char stringpool_str148[sizeof("ISO-IR-109")];
    \n-
    209 char stringpool_str149[sizeof("C99")];
    \n-
    210 char stringpool_str150[sizeof("iso87")];
    \n-
    211 char stringpool_str151[sizeof("ISO_8859-14:1998")];
    \n-
    212 char stringpool_str152[sizeof("LATIN1")];
    \n-
    213 char stringpool_str153[sizeof("ISO8859-2")];
    \n-
    214 char stringpool_str154[sizeof("LATIN8")];
    \n-
    215 char stringpool_str155[sizeof("ISO-IR-179")];
    \n-
    216 char stringpool_str156[sizeof("LATIN5")];
    \n-
    217 char stringpool_str157[sizeof("ISO-IR-126")];
    \n-
    218 char stringpool_str158[sizeof("ASCII")];
    \n-
    219 char stringpool_str161[sizeof("ISO-8859-2")];
    \n-
    220 char stringpool_str164[sizeof("CP819")];
    \n-
    221 char stringpool_str167[sizeof("ISO_8859-4")];
    \n-
    222 char stringpool_str170[sizeof("TCVN")];
    \n-
    223 char stringpool_str171[sizeof("ISO-IR-138")];
    \n-
    224 char stringpool_str173[sizeof("hp15CN")];
    \n-
    225 char stringpool_str174[sizeof("ISO_8859-14")];
    \n-
    226 char stringpool_str176[sizeof("LATIN6")];
    \n-
    227 char stringpool_str177[sizeof("iso88597")];
    \n-
    228 char stringpool_str178[sizeof("ISO8859-10")];
    \n-
    229 char stringpool_str179[sizeof("ISO-IR-144")];
    \n-
    230 char stringpool_str183[sizeof("ISO_8859-16:2000")];
    \n-
    231 char stringpool_str185[sizeof("ISO8859-7")];
    \n-
    232 char stringpool_str186[sizeof("ISO-8859-10")];
    \n-
    233 char stringpool_str189[sizeof("iso13")];
    \n-
    234 char stringpool_str190[sizeof("iso83")];
    \n-
    235 char stringpool_str191[sizeof("ISO_8859-2")];
    \n-
    236 char stringpool_str192[sizeof("ISO-IR-110")];
    \n-
    237 char stringpool_str193[sizeof("ISO-8859-7")];
    \n-
    238 char stringpool_str194[sizeof("CP866")];
    \n-
    239 char stringpool_str195[sizeof("CP949")];
    \n-
    240 char stringpool_str196[sizeof("tis620")];
    \n-
    241 char stringpool_str197[sizeof("VISCII")];
    \n-
    242 char stringpool_str198[sizeof("ISO-IR-226")];
    \n-
    243 char stringpool_str199[sizeof("US")];
    \n-
    244 char stringpool_str200[sizeof("ISO-IR-87")];
    \n-
    245 char stringpool_str201[sizeof("ISO-IR-57")];
    \n-
    246 char stringpool_str202[sizeof("IBM819")];
    \n-
    247 char stringpool_str203[sizeof("macthai")];
    \n-
    248 char stringpool_str204[sizeof("MS-ANSI")];
    \n-
    249 char stringpool_str205[sizeof("macturk")];
    \n-
    250 char stringpool_str207[sizeof("CP1251")];
    \n-
    251 char stringpool_str208[sizeof("ISO-IR-157")];
    \n-
    252 char stringpool_str209[sizeof("CP1258")];
    \n-
    253 char stringpool_str210[sizeof("LATIN4")];
    \n-
    254 char stringpool_str211[sizeof("CP1255")];
    \n-
    255 char stringpool_str212[sizeof("ISO_8859-10:1992")];
    \n-
    256 char stringpool_str213[sizeof("cp866")];
    \n-
    257 char stringpool_str214[sizeof("cp949")];
    \n-
    258 char stringpool_str216[sizeof("ISO_8859-10")];
    \n-
    259 char stringpool_str217[sizeof("iso88593")];
    \n-
    260 char stringpool_str218[sizeof("ROMAN8")];
    \n-
    261 char stringpool_str219[sizeof("CHINESE")];
    \n-
    262 char stringpool_str220[sizeof("JIS0208")];
    \n-
    263 char stringpool_str223[sizeof("ISO_8859-7")];
    \n-
    264 char stringpool_str225[sizeof("macgreek")];
    \n-
    265 char stringpool_str226[sizeof("cp1251")];
    \n-
    266 char stringpool_str227[sizeof("ascii_8")];
    \n-
    267 char stringpool_str228[sizeof("cp1258")];
    \n-
    268 char stringpool_str229[sizeof("ECMA-118")];
    \n-
    269 char stringpool_str230[sizeof("cp1255")];
    \n-
    270 char stringpool_str231[sizeof("CP1256")];
    \n-
    271 char stringpool_str232[sizeof("IBM866")];
    \n-
    272 char stringpool_str233[sizeof("ISO-8859-3")];
    \n-
    273 char stringpool_str234[sizeof("LATIN2")];
    \n-
    274 char stringpool_str235[sizeof("BIG5")];
    \n-
    275 char stringpool_str236[sizeof("MULELAO-1")];
    \n-
    276 char stringpool_str237[sizeof("MS-EE")];
    \n-
    277 char stringpool_str239[sizeof("ISO646-CN")];
    \n-
    278 char stringpool_str240[sizeof("ISO-8859-13")];
    \n-
    279 char stringpool_str242[sizeof("ISO-IR-100")];
    \n-
    280 char stringpool_str243[sizeof("BIG-5")];
    \n-
    281 char stringpool_str247[sizeof("ISO-IR-127")];
    \n-
    282 char stringpool_str248[sizeof("GREEK8")];
    \n-
    283 char stringpool_str250[sizeof("cp1256")];
    \n-
    284 char stringpool_str252[sizeof("CP862")];
    \n-
    285 char stringpool_str253[sizeof("CP1361")];
    \n-
    286 char stringpool_str255[sizeof("GBK")];
    \n-
    287 char stringpool_str258[sizeof("ELOT_928")];
    \n-
    288 char stringpool_str260[sizeof("CP850")];
    \n-
    289 char stringpool_str261[sizeof("CP936")];
    \n-
    290 char stringpool_str262[sizeof("CP950")];
    \n-
    291 char stringpool_str263[sizeof("ISO_8859-3")];
    \n-
    292 char stringpool_str265[sizeof("CP1254")];
    \n-
    293 char stringpool_str266[sizeof("LATIN7")];
    \n-
    294 char stringpool_str270[sizeof("ISO_8859-13")];
    \n-
    295 char stringpool_str271[sizeof("cp862")];
    \n-
    296 char stringpool_str273[sizeof("CP874")];
    \n-
    297 char stringpool_str274[sizeof("CSKOI8R")];
    \n-
    298 char stringpool_str275[sizeof("EUCKR")];
    \n-
    299 char stringpool_str279[sizeof("cp850")];
    \n-
    300 char stringpool_str280[sizeof("cp936")];
    \n-
    301 char stringpool_str281[sizeof("cp950")];
    \n-
    302 char stringpool_str283[sizeof("EUC-KR")];
    \n-
    303 char stringpool_str284[sizeof("cp1254")];
    \n-
    304 char stringpool_str285[sizeof("ECMA-114")];
    \n-
    305 char stringpool_str288[sizeof("eucKR")];
    \n-
    306 char stringpool_str289[sizeof("CP1252")];
    \n-
    307 char stringpool_str290[sizeof("IBM862")];
    \n-
    308 char stringpool_str291[sizeof("CSISO159JISX02121990")];
    \n-
    309 char stringpool_str292[sizeof("cp874")];
    \n-
    310 char stringpool_str293[sizeof("ISO646-JP")];
    \n-
    311 char stringpool_str294[sizeof("CSASCII")];
    \n-
    312 char stringpool_str295[sizeof("EUCCN")];
    \n-
    313 char stringpool_str297[sizeof("UCS-4LE")];
    \n-
    314 char stringpool_str298[sizeof("IBM850")];
    \n-
    315 char stringpool_str301[sizeof("GREEK")];
    \n-
    316 char stringpool_str302[sizeof("ISO646-US")];
    \n-
    317 char stringpool_str303[sizeof("EUC-CN")];
    \n-
    318 char stringpool_str304[sizeof("TIS620")];
    \n-
    319 char stringpool_str305[sizeof("mac")];
    \n-
    320 char stringpool_str306[sizeof("LATIN3")];
    \n-
    321 char stringpool_str307[sizeof("CP1250")];
    \n-
    322 char stringpool_str308[sizeof("cp1252")];
    \n-
    323 char stringpool_str309[sizeof("UCS-2LE")];
    \n-
    324 char stringpool_str310[sizeof("CSISOLATIN1")];
    \n-
    325 char stringpool_str312[sizeof("TIS-620")];
    \n-
    326 char stringpool_str313[sizeof("TCVN5712-1")];
    \n-
    327 char stringpool_str314[sizeof("CSISOLATIN5")];
    \n-
    328 char stringpool_str318[sizeof("GB_1988-80")];
    \n-
    329 char stringpool_str319[sizeof("CP932")];
    \n-
    330 char stringpool_str320[sizeof("ASMO-708")];
    \n-
    331 char stringpool_str321[sizeof("CP1257")];
    \n-
    332 char stringpool_str324[sizeof("KOI8-T")];
    \n-
    333 char stringpool_str326[sizeof("cp1250")];
    \n-
    334 char stringpool_str329[sizeof("HP-ROMAN8")];
    \n-
    335 char stringpool_str331[sizeof("MS_KANJI")];
    \n-
    336 char stringpool_str333[sizeof("CSVISCII")];
    \n-
    337 char stringpool_str334[sizeof("CSISOLATIN6")];
    \n-
    338 char stringpool_str335[sizeof("KSC_5601")];
    \n-
    339 char stringpool_str336[sizeof("SHIFT-JIS")];
    \n-
    340 char stringpool_str337[sizeof("ISO-IR-203")];
    \n-
    341 char stringpool_str338[sizeof("cp932")];
    \n-
    342 char stringpool_str339[sizeof("JOHAB")];
    \n-
    343 char stringpool_str340[sizeof("cp1257")];
    \n-
    344 char stringpool_str342[sizeof("ARMSCII-8")];
    \n-
    345 char stringpool_str345[sizeof("ISO_646.IRV:1991")];
    \n-
    346 char stringpool_str347[sizeof("TCVN-5712")];
    \n-
    347 char stringpool_str349[sizeof("EUCJP")];
    \n-
    348 char stringpool_str350[sizeof("UTF8")];
    \n-
    349 char stringpool_str351[sizeof("X0201")];
    \n-
    350 char stringpool_str352[sizeof("GB2312")];
    \n-
    351 char stringpool_str353[sizeof("X0208")];
    \n-
    352 char stringpool_str354[sizeof("ISO-2022-KR")];
    \n-
    353 char stringpool_str355[sizeof("MS-CYRL")];
    \n-
    354 char stringpool_str356[sizeof("ISO-2022-JP-1")];
    \n-
    355 char stringpool_str357[sizeof("EUC-JP")];
    \n-
    356 char stringpool_str358[sizeof("UTF-8")];
    \n-
    357 char stringpool_str359[sizeof("VISCII1.1-1")];
    \n-
    358 char stringpool_str360[sizeof("CP367")];
    \n-
    359 char stringpool_str361[sizeof("CP1253")];
    \n-
    360 char stringpool_str362[sizeof("eucJP")];
    \n-
    361 char stringpool_str364[sizeof("mac_cyr")];
    \n-
    362 char stringpool_str365[sizeof("US-ASCII")];
    \n-
    363 char stringpool_str366[sizeof("SHIFT_JIS")];
    \n-
    364 char stringpool_str368[sizeof("CSISOLATIN4")];
    \n-
    365 char stringpool_str369[sizeof("TIS620-0")];
    \n-
    366 char stringpool_str371[sizeof("CSBIG5")];
    \n-
    367 char stringpool_str374[sizeof("ISO-2022-CN")];
    \n-
    368 char stringpool_str377[sizeof("CP437")];
    \n-
    369 char stringpool_str379[sizeof("CN-BIG5")];
    \n-
    370 char stringpool_str380[sizeof("cp1253")];
    \n-
    371 char stringpool_str381[sizeof("ARABIC")];
    \n-
    372 char stringpool_str383[sizeof("X0212")];
    \n-
    373 char stringpool_str384[sizeof("CSISO14JISC6220RO")];
    \n-
    374 char stringpool_str387[sizeof("GB18030")];
    \n-
    375 char stringpool_str389[sizeof("UCS-4BE")];
    \n-
    376 char stringpool_str392[sizeof("CSISOLATIN2")];
    \n-
    377 char stringpool_str393[sizeof("GEORGIAN-PS")];
    \n-
    378 char stringpool_str394[sizeof("KS_C_5601-1989")];
    \n-
    379 char stringpool_str395[sizeof("CP1133")];
    \n-
    380 char stringpool_str396[sizeof("cp437")];
    \n-
    381 char stringpool_str397[sizeof("ISO-2022-JP-2")];
    \n-
    382 char stringpool_str398[sizeof("IBM367")];
    \n-
    383 char stringpool_str401[sizeof("UCS-2BE")];
    \n-
    384 char stringpool_str402[sizeof("UNICODE-1-1")];
    \n-
    385 char stringpool_str409[sizeof("JIS_C6220-1969-RO")];
    \n-
    386 char stringpool_str411[sizeof("MS-ARAB")];
    \n-
    387 char stringpool_str415[sizeof("IBM437")];
    \n-
    388 char stringpool_str418[sizeof("MAC")];
    \n-
    389 char stringpool_str422[sizeof("UTF-16LE")];
    \n-
    390 char stringpool_str428[sizeof("ISO-2022-JP")];
    \n-
    391 char stringpool_str429[sizeof("CN-GB-ISOIR165")];
    \n-
    392 char stringpool_str434[sizeof("WINDOWS-1251")];
    \n-
    393 char stringpool_str435[sizeof("WINDOWS-1258")];
    \n-
    394 char stringpool_str436[sizeof("WINDOWS-1255")];
    \n-
    395 char stringpool_str438[sizeof("CSISOLATINARABIC")];
    \n-
    396 char stringpool_str441[sizeof("MS-HEBR")];
    \n-
    397 char stringpool_str444[sizeof("CYRILLIC")];
    \n-
    398 char stringpool_str445[sizeof("JIS_C6226-1983")];
    \n-
    399 char stringpool_str446[sizeof("WINDOWS-1256")];
    \n-
    400 char stringpool_str448[sizeof("KS_C_5601-1987")];
    \n-
    401 char stringpool_str450[sizeof("UHC")];
    \n-
    402 char stringpool_str452[sizeof("BIGFIVE")];
    \n-
    403 char stringpool_str454[sizeof("CN-GB")];
    \n-
    404 char stringpool_str455[sizeof("GEORGIAN-ACADEMY")];
    \n-
    405 char stringpool_str460[sizeof("BIG-FIVE")];
    \n-
    406 char stringpool_str461[sizeof("CSIBM866")];
    \n-
    407 char stringpool_str462[sizeof("UTF7")];
    \n-
    408 char stringpool_str463[sizeof("WINDOWS-1254")];
    \n-
    409 char stringpool_str464[sizeof("CSISOLATIN3")];
    \n-
    410 char stringpool_str465[sizeof("UNICODE-1-1-UTF-7")];
    \n-
    411 char stringpool_str467[sizeof("CSISO57GB1988")];
    \n-
    412 char stringpool_str470[sizeof("UTF-7")];
    \n-
    413 char stringpool_str472[sizeof("GB_2312-80")];
    \n-
    414 char stringpool_str474[sizeof("CSISO2022KR")];
    \n-
    415 char stringpool_str475[sizeof("WINDOWS-1252")];
    \n-
    416 char stringpool_str476[sizeof("KOI8-U")];
    \n-
    417 char stringpool_str479[sizeof("ISO_8859-8:1988")];
    \n-
    418 char stringpool_str480[sizeof("ISO_8859-5:1988")];
    \n-
    419 char stringpool_str483[sizeof("ISO_8859-9:1989")];
    \n-
    420 char stringpool_str484[sizeof("WINDOWS-1250")];
    \n-
    421 char stringpool_str485[sizeof("MACICELAND")];
    \n-
    422 char stringpool_str486[sizeof("CSISOLATINGREEK")];
    \n-
    423 char stringpool_str487[sizeof("ISO-2022-CN-EXT")];
    \n-
    424 char stringpool_str488[sizeof("JIS_X0201")];
    \n-
    425 char stringpool_str489[sizeof("JISX0201-1976")];
    \n-
    426 char stringpool_str490[sizeof("JIS_X0208")];
    \n-
    427 char stringpool_str491[sizeof("WINDOWS-1257")];
    \n-
    428 char stringpool_str494[sizeof("CSISO2022CN")];
    \n-
    429 char stringpool_str496[sizeof("MS-GREEK")];
    \n-
    430 char stringpool_str500[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")];
    \n-
    431 char stringpool_str503[sizeof("KOI8-RU")];
    \n-
    432 char stringpool_str504[sizeof("TIS620.2529-1")];
    \n-
    433 char stringpool_str505[sizeof("MACROMAN")];
    \n-
    434 char stringpool_str506[sizeof("WINDOWS-874")];
    \n-
    435 char stringpool_str507[sizeof("ISO_8859-4:1988")];
    \n-
    436 char stringpool_str509[sizeof("CSKSC56011987")];
    \n-
    437 char stringpool_str511[sizeof("WINDOWS-1253")];
    \n-
    438 char stringpool_str514[sizeof("UTF-16BE")];
    \n-
    439 char stringpool_str515[sizeof("CSISO87JISX0208")];
    \n-
    440 char stringpool_str516[sizeof("CSISO2022JP2")];
    \n-
    441 char stringpool_str520[sizeof("JIS_X0212")];
    \n-
    442 char stringpool_str521[sizeof("MACROMANIA")];
    \n-
    443 char stringpool_str522[sizeof("CSUNICODE11")];
    \n-
    444 char stringpool_str523[sizeof("MACTHAI")];
    \n-
    445 char stringpool_str528[sizeof("UTF-32LE")];
    \n-
    446 char stringpool_str531[sizeof("CSHPROMAN8")];
    \n-
    447 char stringpool_str534[sizeof("ISO_8859-1:1987")];
    \n-
    448 char stringpool_str541[sizeof("BIG5HKSCS")];
    \n-
    449 char stringpool_str546[sizeof("ISO_8859-6:1987")];
    \n-
    450 char stringpool_str547[sizeof("JIS_X0212-1990")];
    \n-
    451 char stringpool_str548[sizeof("CSISO2022JP")];
    \n-
    452 char stringpool_str549[sizeof("BIG5-HKSCS")];
    \n-
    453 char stringpool_str553[sizeof("CSSHIFTJIS")];
    \n-
    454 char stringpool_str555[sizeof("ISO_8859-3:1988")];
    \n-
    455 char stringpool_str557[sizeof("JIS_X0208-1990")];
    \n-
    456 char stringpool_str560[sizeof("CSISOLATINHEBREW")];
    \n-
    457 char stringpool_str561[sizeof("CSISOLATINCYRILLIC")];
    \n-
    458 char stringpool_str563[sizeof("ISO-CELTIC")];
    \n-
    459 char stringpool_str564[sizeof("HZ-GB-2312")];
    \n-
    460 char stringpool_str571[sizeof("ANSI_X3.4-1968")];
    \n-
    461 char stringpool_str572[sizeof("HEBREW")];
    \n-
    462 char stringpool_str575[sizeof("ISO_8859-2:1987")];
    \n-
    463 char stringpool_str577[sizeof("CSISO58GB231280")];
    \n-
    464 char stringpool_str581[sizeof("CSGB2312")];
    \n-
    465 char stringpool_str582[sizeof("ANSI_X3.4-1986")];
    \n-
    466 char stringpool_str583[sizeof("CSUNICODE11UTF7")];
    \n-
    467 char stringpool_str584[sizeof("JIS_X0208-1983")];
    \n-
    468 char stringpool_str591[sizeof("ISO_8859-7:1987")];
    \n-
    469 char stringpool_str594[sizeof("EUCTW")];
    \n-
    470 char stringpool_str596[sizeof("CSEUCKR")];
    \n-
    471 char stringpool_str602[sizeof("EUC-TW")];
    \n-
    472 char stringpool_str605[sizeof("MACCROATIAN")];
    \n-
    473 char stringpool_str607[sizeof("eucTW")];
    \n-
    474 char stringpool_str614[sizeof("TIS620.2533-1")];
    \n-
    475 char stringpool_str617[sizeof("MACGREEK")];
    \n-
    476 char stringpool_str620[sizeof("UTF-32BE")];
    \n-
    477 char stringpool_str625[sizeof("MACINTOSH")];
    \n-
    478 char stringpool_str637[sizeof("UNICODELITTLE")];
    \n-
    479 char stringpool_str641[sizeof("MS-TURK")];
    \n-
    480 char stringpool_str645[sizeof("MACUKRAINE")];
    \n-
    481 char stringpool_str651[sizeof("IBM-CP1133")];
    \n-
    482 char stringpool_str658[sizeof("MACCENTRALEUROPE")];
    \n-
    483 char stringpool_str663[sizeof("NEXTSTEP")];
    \n-
    484 char stringpool_str664[sizeof("TIS620.2533-0")];
    \n-
    485 char stringpool_str674[sizeof("JIS_X0212.1990-0")];
    \n-
    486 char stringpool_str697[sizeof("MACARABIC")];
    \n-
    487 char stringpool_str706[sizeof("UNICODEBIG")];
    \n-
    488 char stringpool_str723[sizeof("CSPC862LATINHEBREW")];
    \n-
    489 char stringpool_str748[sizeof("MACCYRILLIC")];
    \n-
    490 char stringpool_str756[sizeof("WINBALTRIM")];
    \n-
    491 char stringpool_str758[sizeof("TCVN5712-1:1993")];
    \n-
    492 char stringpool_str762[sizeof("CSMACINTOSH")];
    \n-
    493 char stringpool_str788[sizeof("CSHALFWIDTHKATAKANA")];
    \n-
    494 char stringpool_str884[sizeof("MACHEBREW")];
    \n-
    495 char stringpool_str899[sizeof("MACTURKISH")];
    \n-
    496 char stringpool_str905[sizeof("CSPC850MULTILINGUAL")];
    \n-
    497 char stringpool_str915[sizeof("CSEUCTW")];
    \n-
    498 char stringpool_str1079[sizeof("CSEUCPKDFMTJAPANESE")];
    \n-
    499 };
    \n-
    \n-
    500static const struct stringpool_t stringpool_contents =
    \n-
    501 {
    \n-
    502 "L1",
    \n-
    503 "L8",
    \n-
    504 "L5",
    \n-
    505 "L6",
    \n-
    506 "SJIS",
    \n-
    507 "koi8",
    \n-
    508 "sjis",
    \n-
    509 "R8",
    \n-
    510 "iso81",
    \n-
    511 "iso88",
    \n-
    512 "iso15",
    \n-
    513 "iso85",
    \n-
    514 "thai8",
    \n-
    515 "iso89",
    \n-
    516 "roma8",
    \n-
    517 "L4",
    \n-
    518 "utf8",
    \n-
    519 "866",
    \n-
    520 "iso815",
    \n-
    521 "big5",
    \n-
    522 "roman8",
    \n-
    523 "L2",
    \n-
    524 "646",
    \n-
    525 "iso86",
    \n-
    526 "iso88591",
    \n-
    527 "iso88598",
    \n-
    528 "iso_1",
    \n-
    529 "iso88595",
    \n-
    530 "iso88599",
    \n-
    531 "greek8",
    \n-
    532 "ISO8859-1",
    \n-
    533 "L7",
    \n-
    534 "ISO8859-8",
    \n-
    535 "iso885915",
    \n-
    536 "ISO8859-5",
    \n-
    537 "ISO8859-9",
    \n-
    538 "ISO-8859-1",
    \n-
    539 "ISO-8859-8",
    \n-
    540 "ISO8859-15",
    \n-
    541 "ISO-8859-5",
    \n-
    542 "ISO-8859-9",
    \n-
    543 "iso88596",
    \n-
    544 "ISO-IR-58",
    \n-
    545 "ISO-8859-15",
    \n-
    546 "JAVA",
    \n-
    547 "L3",
    \n-
    548 "iso14",
    \n-
    549 "iso84",
    \n-
    550 "ISO8859-6",
    \n-
    551 "ISO-IR-159",
    \n-
    552 "ISO-IR-199",
    \n-
    553 "ISO-IR-6",
    \n-
    554 "ISO-8859-6",
    \n-
    555 "862",
    \n-
    556 "HZ",
    \n-
    557 "iso646",
    \n-
    558 "ISO-IR-165",
    \n-
    559 "ISO_8859-1",
    \n-
    560 "ISO-8859-16",
    \n-
    561 "ISO_8859-8",
    \n-
    562 "ISO_8859-5",
    \n-
    563 "ISO_8859-9",
    \n-
    564 "JP",
    \n-
    565 "iso82",
    \n-
    566 "ISO_8859-15",
    \n-
    567 "iso88594",
    \n-
    568 "850",
    \n-
    569 "ISO-IR-148",
    \n-
    570 "ISO_8859-15:1998",
    \n-
    571 "ISO-IR-149",
    \n-
    572 "ISO-IR-166",
    \n-
    573 "ISO8859-4",
    \n-
    574 "ISO_8859-6",
    \n-
    575 "iso10",
    \n-
    576 "CN",
    \n-
    577 "ISO-8859-4",
    \n-
    578 "ISO_8859-16",
    \n-
    579 "KOREAN",
    \n-
    580 "ISO-IR-101",
    \n-
    581 "ISO-IR-14",
    \n-
    582 "ISO-8859-14",
    \n-
    583 "iso88592",
    \n-
    584 "KOI8-R",
    \n-
    585 "ISO-IR-109",
    \n-
    586 "C99",
    \n-
    587 "iso87",
    \n-
    588 "ISO_8859-14:1998",
    \n-
    589 "LATIN1",
    \n-
    590 "ISO8859-2",
    \n-
    591 "LATIN8",
    \n-
    592 "ISO-IR-179",
    \n-
    593 "LATIN5",
    \n-
    594 "ISO-IR-126",
    \n-
    595 "ASCII",
    \n-
    596 "ISO-8859-2",
    \n-
    597 "CP819",
    \n-
    598 "ISO_8859-4",
    \n-
    599 "TCVN",
    \n-
    600 "ISO-IR-138",
    \n-
    601 "hp15CN",
    \n-
    602 "ISO_8859-14",
    \n-
    603 "LATIN6",
    \n-
    604 "iso88597",
    \n-
    605 "ISO8859-10",
    \n-
    606 "ISO-IR-144",
    \n-
    607 "ISO_8859-16:2000",
    \n-
    608 "ISO8859-7",
    \n-
    609 "ISO-8859-10",
    \n-
    610 "iso13",
    \n-
    611 "iso83",
    \n-
    612 "ISO_8859-2",
    \n-
    613 "ISO-IR-110",
    \n-
    614 "ISO-8859-7",
    \n-
    615 "CP866",
    \n-
    616 "CP949",
    \n-
    617 "tis620",
    \n-
    618 "VISCII",
    \n-
    619 "ISO-IR-226",
    \n-
    620 "US",
    \n-
    621 "ISO-IR-87",
    \n-
    622 "ISO-IR-57",
    \n-
    623 "IBM819",
    \n-
    624 "macthai",
    \n-
    625 "MS-ANSI",
    \n-
    626 "macturk",
    \n-
    627 "CP1251",
    \n-
    628 "ISO-IR-157",
    \n-
    629 "CP1258",
    \n-
    630 "LATIN4",
    \n-
    631 "CP1255",
    \n-
    632 "ISO_8859-10:1992",
    \n-
    633 "cp866",
    \n-
    634 "cp949",
    \n-
    635 "ISO_8859-10",
    \n-
    636 "iso88593",
    \n-
    637 "ROMAN8",
    \n-
    638 "CHINESE",
    \n-
    639 "JIS0208",
    \n-
    640 "ISO_8859-7",
    \n-
    641 "macgreek",
    \n-
    642 "cp1251",
    \n-
    643 "ascii_8",
    \n-
    644 "cp1258",
    \n-
    645 "ECMA-118",
    \n-
    646 "cp1255",
    \n-
    647 "CP1256",
    \n-
    648 "IBM866",
    \n-
    649 "ISO-8859-3",
    \n-
    650 "LATIN2",
    \n-
    651 "BIG5",
    \n-
    652 "MULELAO-1",
    \n-
    653 "MS-EE",
    \n-
    654 "ISO646-CN",
    \n-
    655 "ISO-8859-13",
    \n-
    656 "ISO-IR-100",
    \n-
    657 "BIG-5",
    \n-
    658 "ISO-IR-127",
    \n-
    659 "GREEK8",
    \n-
    660 "cp1256",
    \n-
    661 "CP862",
    \n-
    662 "CP1361",
    \n-
    663 "GBK",
    \n-
    664 "ELOT_928",
    \n-
    665 "CP850",
    \n-
    666 "CP936",
    \n-
    667 "CP950",
    \n-
    668 "ISO_8859-3",
    \n-
    669 "CP1254",
    \n-
    670 "LATIN7",
    \n-
    671 "ISO_8859-13",
    \n-
    672 "cp862",
    \n-
    673 "CP874",
    \n-
    674 "CSKOI8R",
    \n-
    675 "EUCKR",
    \n-
    676 "cp850",
    \n-
    677 "cp936",
    \n-
    678 "cp950",
    \n-
    679 "EUC-KR",
    \n-
    680 "cp1254",
    \n-
    681 "ECMA-114",
    \n-
    682 "eucKR",
    \n-
    683 "CP1252",
    \n-
    684 "IBM862",
    \n-
    685 "CSISO159JISX02121990",
    \n-
    686 "cp874",
    \n-
    687 "ISO646-JP",
    \n-
    688 "CSASCII",
    \n-
    689 "EUCCN",
    \n-
    690 "UCS-4LE",
    \n-
    691 "IBM850",
    \n-
    692 "GREEK",
    \n-
    693 "ISO646-US",
    \n-
    694 "EUC-CN",
    \n-
    695 "TIS620",
    \n-
    696 "mac",
    \n-
    697 "LATIN3",
    \n-
    698 "CP1250",
    \n-
    699 "cp1252",
    \n-
    700 "UCS-2LE",
    \n-
    701 "CSISOLATIN1",
    \n-
    702 "TIS-620",
    \n-
    703 "TCVN5712-1",
    \n-
    704 "CSISOLATIN5",
    \n-
    705 "GB_1988-80",
    \n-
    706 "CP932",
    \n-
    707 "ASMO-708",
    \n-
    708 "CP1257",
    \n-
    709 "KOI8-T",
    \n-
    710 "cp1250",
    \n-
    711 "HP-ROMAN8",
    \n-
    712 "MS_KANJI",
    \n-
    713 "CSVISCII",
    \n-
    714 "CSISOLATIN6",
    \n-
    715 "KSC_5601",
    \n-
    716 "SHIFT-JIS",
    \n-
    717 "ISO-IR-203",
    \n-
    718 "cp932",
    \n-
    719 "JOHAB",
    \n-
    720 "cp1257",
    \n-
    721 "ARMSCII-8",
    \n-
    722 "ISO_646.IRV:1991",
    \n-
    723 "TCVN-5712",
    \n-
    724 "EUCJP",
    \n-
    725 "UTF8",
    \n-
    726 "X0201",
    \n-
    727 "GB2312",
    \n-
    728 "X0208",
    \n-
    729 "ISO-2022-KR",
    \n-
    730 "MS-CYRL",
    \n-
    731 "ISO-2022-JP-1",
    \n-
    732 "EUC-JP",
    \n-
    733 "UTF-8",
    \n-
    734 "VISCII1.1-1",
    \n-
    735 "CP367",
    \n-
    736 "CP1253",
    \n-
    737 "eucJP",
    \n-
    738 "mac_cyr",
    \n-
    739 "US-ASCII",
    \n-
    740 "SHIFT_JIS",
    \n-
    741 "CSISOLATIN4",
    \n-
    742 "TIS620-0",
    \n-
    743 "CSBIG5",
    \n-
    744 "ISO-2022-CN",
    \n-
    745 "CP437",
    \n-
    746 "CN-BIG5",
    \n-
    747 "cp1253",
    \n-
    748 "ARABIC",
    \n-
    749 "X0212",
    \n-
    750 "CSISO14JISC6220RO",
    \n-
    751 "GB18030",
    \n-
    752 "UCS-4BE",
    \n-
    753 "CSISOLATIN2",
    \n-
    754 "GEORGIAN-PS",
    \n-
    755 "KS_C_5601-1989",
    \n-
    756 "CP1133",
    \n-
    757 "cp437",
    \n-
    758 "ISO-2022-JP-2",
    \n-
    759 "IBM367",
    \n-
    760 "UCS-2BE",
    \n-
    761 "UNICODE-1-1",
    \n-
    762 "JIS_C6220-1969-RO",
    \n-
    763 "MS-ARAB",
    \n-
    764 "IBM437",
    \n-
    765 "MAC",
    \n-
    766 "UTF-16LE",
    \n-
    767 "ISO-2022-JP",
    \n-
    768 "CN-GB-ISOIR165",
    \n-
    769 "WINDOWS-1251",
    \n-
    770 "WINDOWS-1258",
    \n-
    771 "WINDOWS-1255",
    \n-
    772 "CSISOLATINARABIC",
    \n-
    773 "MS-HEBR",
    \n-
    774 "CYRILLIC",
    \n-
    775 "JIS_C6226-1983",
    \n-
    776 "WINDOWS-1256",
    \n-
    777 "KS_C_5601-1987",
    \n-
    778 "UHC",
    \n-
    779 "BIGFIVE",
    \n-
    780 "CN-GB",
    \n-
    781 "GEORGIAN-ACADEMY",
    \n-
    782 "BIG-FIVE",
    \n-
    783 "CSIBM866",
    \n-
    784 "UTF7",
    \n-
    785 "WINDOWS-1254",
    \n-
    786 "CSISOLATIN3",
    \n-
    787 "UNICODE-1-1-UTF-7",
    \n-
    788 "CSISO57GB1988",
    \n-
    789 "UTF-7",
    \n-
    790 "GB_2312-80",
    \n-
    791 "CSISO2022KR",
    \n-
    792 "WINDOWS-1252",
    \n-
    793 "KOI8-U",
    \n-
    794 "ISO_8859-8:1988",
    \n-
    795 "ISO_8859-5:1988",
    \n-
    796 "ISO_8859-9:1989",
    \n-
    797 "WINDOWS-1250",
    \n-
    798 "MACICELAND",
    \n-
    799 "CSISOLATINGREEK",
    \n-
    800 "ISO-2022-CN-EXT",
    \n-
    801 "JIS_X0201",
    \n-
    802 "JISX0201-1976",
    \n-
    803 "JIS_X0208",
    \n-
    804 "WINDOWS-1257",
    \n-
    805 "CSISO2022CN",
    \n-
    806 "MS-GREEK",
    \n-
    807 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
    \n-
    808 "KOI8-RU",
    \n-
    809 "TIS620.2529-1",
    \n-
    810 "MACROMAN",
    \n-
    811 "WINDOWS-874",
    \n-
    812 "ISO_8859-4:1988",
    \n-
    813 "CSKSC56011987",
    \n-
    814 "WINDOWS-1253",
    \n-
    815 "UTF-16BE",
    \n-
    816 "CSISO87JISX0208",
    \n-
    817 "CSISO2022JP2",
    \n-
    818 "JIS_X0212",
    \n-
    819 "MACROMANIA",
    \n-
    820 "CSUNICODE11",
    \n-
    821 "MACTHAI",
    \n-
    822 "UTF-32LE",
    \n-
    823 "CSHPROMAN8",
    \n-
    824 "ISO_8859-1:1987",
    \n-
    825 "BIG5HKSCS",
    \n-
    826 "ISO_8859-6:1987",
    \n-
    827 "JIS_X0212-1990",
    \n-
    828 "CSISO2022JP",
    \n-
    829 "BIG5-HKSCS",
    \n-
    830 "CSSHIFTJIS",
    \n-
    831 "ISO_8859-3:1988",
    \n-
    832 "JIS_X0208-1990",
    \n-
    833 "CSISOLATINHEBREW",
    \n-
    834 "CSISOLATINCYRILLIC",
    \n-
    835 "ISO-CELTIC",
    \n-
    836 "HZ-GB-2312",
    \n-
    837 "ANSI_X3.4-1968",
    \n-
    838 "HEBREW",
    \n-
    839 "ISO_8859-2:1987",
    \n-
    840 "CSISO58GB231280",
    \n-
    841 "CSGB2312",
    \n-
    842 "ANSI_X3.4-1986",
    \n-
    843 "CSUNICODE11UTF7",
    \n-
    844 "JIS_X0208-1983",
    \n-
    845 "ISO_8859-7:1987",
    \n-
    846 "EUCTW",
    \n-
    847 "CSEUCKR",
    \n-
    848 "EUC-TW",
    \n-
    849 "MACCROATIAN",
    \n-
    850 "eucTW",
    \n-
    851 "TIS620.2533-1",
    \n-
    852 "MACGREEK",
    \n-
    853 "UTF-32BE",
    \n-
    854 "MACINTOSH",
    \n-
    855 "UNICODELITTLE",
    \n-
    856 "MS-TURK",
    \n-
    857 "MACUKRAINE",
    \n-
    858 "IBM-CP1133",
    \n-
    859 "MACCENTRALEUROPE",
    \n-
    860 "NEXTSTEP",
    \n-
    861 "TIS620.2533-0",
    \n-
    862 "JIS_X0212.1990-0",
    \n-
    863 "MACARABIC",
    \n-
    864 "UNICODEBIG",
    \n-
    865 "CSPC862LATINHEBREW",
    \n-
    866 "MACCYRILLIC",
    \n-
    867 "WINBALTRIM",
    \n-
    868 "TCVN5712-1:1993",
    \n-
    869 "CSMACINTOSH",
    \n-
    870 "CSHALFWIDTHKATAKANA",
    \n-
    871 "MACHEBREW",
    \n-
    872 "MACTURKISH",
    \n-
    873 "CSPC850MULTILINGUAL",
    \n-
    874 "CSEUCTW",
    \n-
    875 "CSEUCPKDFMTJAPANESE"
    \n-
    876 };
    \n-
    877#define stringpool ((const char *) &stringpool_contents)
    \n-
    878const struct charset_alias *
    \n-
    879charset_lookup (register const char *str, register size_t len)
    \n-
    880{
    \n-
    881 static const struct charset_alias wordlist[] =
    \n-
    882 {
    \n-
    883 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    884 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    885 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    886#line 228 "charset_lookup.gperf"
    \n-
    887 {(int)offsetof(struct stringpool_t, stringpool_str15), 0},
    \n-
    888#line 235 "charset_lookup.gperf"
    \n-
    889 {(int)offsetof(struct stringpool_t, stringpool_str16), 47},
    \n-
    890#line 232 "charset_lookup.gperf"
    \n-
    891 {(int)offsetof(struct stringpool_t, stringpool_str17), 57},
    \n-
    892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    893 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    894#line 233 "charset_lookup.gperf"
    \n-
    895 {(int)offsetof(struct stringpool_t, stringpool_str27), 45},
    \n-
    896#line 272 "charset_lookup.gperf"
    \n-
    897 {(int)offsetof(struct stringpool_t, stringpool_str28), 84},
    \n-
    898 {-1,-1},
    \n-
    899#line 375 "charset_lookup.gperf"
    \n-
    900 {(int)offsetof(struct stringpool_t, stringpool_str30), 65},
    \n-
    901#line 359 "charset_lookup.gperf"
    \n-
    902 {(int)offsetof(struct stringpool_t, stringpool_str31), 84},
    \n-
    903 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    904#line 268 "charset_lookup.gperf"
    \n-
    905 {(int)offsetof(struct stringpool_t, stringpool_str35), 83},
    \n-
    906#line 337 "charset_lookup.gperf"
    \n-
    907 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},
    \n-
    908 {-1,-1},
    \n-
    909#line 345 "charset_lookup.gperf"
    \n-
    910 {(int)offsetof(struct stringpool_t, stringpool_str38), 56},
    \n-
    911#line 372 "charset_lookup.gperf"
    \n-
    912 {(int)offsetof(struct stringpool_t, stringpool_str39), 48},
    \n-
    913#line 342 "charset_lookup.gperf"
    \n-
    914 {(int)offsetof(struct stringpool_t, stringpool_str40), 53},
    \n-
    915#line 360 "charset_lookup.gperf"
    \n-
    916 {(int)offsetof(struct stringpool_t, stringpool_str41), 61},
    \n-
    917#line 356 "charset_lookup.gperf"
    \n-
    918 {(int)offsetof(struct stringpool_t, stringpool_str42), 57},
    \n-
    919#line 357 "charset_lookup.gperf"
    \n-
    920 {(int)offsetof(struct stringpool_t, stringpool_str43), 83},
    \n-
    921#line 231 "charset_lookup.gperf"
    \n-
    922 {(int)offsetof(struct stringpool_t, stringpool_str44), 52},
    \n-
    923#line 362 "charset_lookup.gperf"
    \n-
    924 {(int)offsetof(struct stringpool_t, stringpool_str45), 1},
    \n-
    925#line 10 "charset_lookup.gperf"
    \n-
    926 {(int)offsetof(struct stringpool_t, stringpool_str46), 26},
    \n-
    927#line 338 "charset_lookup.gperf"
    \n-
    928 {(int)offsetof(struct stringpool_t, stringpool_str47), 48},
    \n-
    929#line 318 "charset_lookup.gperf"
    \n-
    930 {(int)offsetof(struct stringpool_t, stringpool_str48), 5},
    \n-
    931 {-1,-1},
    \n-
    932#line 358 "charset_lookup.gperf"
    \n-
    933 {(int)offsetof(struct stringpool_t, stringpool_str50), 83},
    \n-
    934 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    935#line 229 "charset_lookup.gperf"
    \n-
    936 {(int)offsetof(struct stringpool_t, stringpool_str56), 50},
    \n-
    937#line 7 "charset_lookup.gperf"
    \n-
    938 {(int)offsetof(struct stringpool_t, stringpool_str57), 88},
    \n-
    939 {-1,-1}, {-1,-1},
    \n-
    940#line 343 "charset_lookup.gperf"
    \n-
    941 {(int)offsetof(struct stringpool_t, stringpool_str60), 54},
    \n-
    942 {-1,-1}, {-1,-1},
    \n-
    943#line 346 "charset_lookup.gperf"
    \n-
    944 {(int)offsetof(struct stringpool_t, stringpool_str63), 0},
    \n-
    945 {-1,-1},
    \n-
    946#line 354 "charset_lookup.gperf"
    \n-
    947 {(int)offsetof(struct stringpool_t, stringpool_str65), 56},
    \n-
    948#line 374 "charset_lookup.gperf"
    \n-
    949 {(int)offsetof(struct stringpool_t, stringpool_str66), 0},
    \n-
    950#line 351 "charset_lookup.gperf"
    \n-
    951 {(int)offsetof(struct stringpool_t, stringpool_str67), 53},
    \n-
    952 {-1,-1},
    \n-
    953#line 355 "charset_lookup.gperf"
    \n-
    954 {(int)offsetof(struct stringpool_t, stringpool_str69), 57},
    \n-
    955#line 368 "charset_lookup.gperf"
    \n-
    956 {(int)offsetof(struct stringpool_t, stringpool_str70), 55},
    \n-
    957#line 168 "charset_lookup.gperf"
    \n-
    958 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},
    \n-
    959#line 234 "charset_lookup.gperf"
    \n-
    960 {(int)offsetof(struct stringpool_t, stringpool_str72), 46},
    \n-
    961#line 176 "charset_lookup.gperf"
    \n-
    962 {(int)offsetof(struct stringpool_t, stringpool_str73), 56},
    \n-
    963#line 347 "charset_lookup.gperf"
    \n-
    964 {(int)offsetof(struct stringpool_t, stringpool_str74), 48},
    \n-
    965#line 173 "charset_lookup.gperf"
    \n-
    966 {(int)offsetof(struct stringpool_t, stringpool_str75), 53},
    \n-
    967 {-1,-1},
    \n-
    968#line 177 "charset_lookup.gperf"
    \n-
    969 {(int)offsetof(struct stringpool_t, stringpool_str77), 57},
    \n-
    970 {-1,-1},
    \n-
    971#line 127 "charset_lookup.gperf"
    \n-
    972 {(int)offsetof(struct stringpool_t, stringpool_str79), 0},
    \n-
    973 {-1,-1},
    \n-
    974#line 139 "charset_lookup.gperf"
    \n-
    975 {(int)offsetof(struct stringpool_t, stringpool_str81), 56},
    \n-
    976#line 170 "charset_lookup.gperf"
    \n-
    977 {(int)offsetof(struct stringpool_t, stringpool_str82), 48},
    \n-
    978#line 136 "charset_lookup.gperf"
    \n-
    979 {(int)offsetof(struct stringpool_t, stringpool_str83), 53},
    \n-
    980 {-1,-1},
    \n-
    981#line 140 "charset_lookup.gperf"
    \n-
    982 {(int)offsetof(struct stringpool_t, stringpool_str85), 57},
    \n-
    983 {-1,-1},
    \n-
    984#line 352 "charset_lookup.gperf"
    \n-
    985 {(int)offsetof(struct stringpool_t, stringpool_str87), 54},
    \n-
    986 {-1,-1},
    \n-
    987#line 162 "charset_lookup.gperf"
    \n-
    988 {(int)offsetof(struct stringpool_t, stringpool_str89), 8},
    \n-
    989#line 131 "charset_lookup.gperf"
    \n-
    990 {(int)offsetof(struct stringpool_t, stringpool_str90), 48},
    \n-
    991#line 206 "charset_lookup.gperf"
    \n-
    992 {(int)offsetof(struct stringpool_t, stringpool_str91), 63},
    \n-
    993#line 230 "charset_lookup.gperf"
    \n-
    994 {(int)offsetof(struct stringpool_t, stringpool_str92), 51},
    \n-
    995#line 371 "charset_lookup.gperf"
    \n-
    996 {(int)offsetof(struct stringpool_t, stringpool_str93), 47},
    \n-
    997#line 341 "charset_lookup.gperf"
    \n-
    998 {(int)offsetof(struct stringpool_t, stringpool_str94), 52},
    \n-
    999#line 174 "charset_lookup.gperf"
    \n-
    1000 {(int)offsetof(struct stringpool_t, stringpool_str95), 54},
    \n-
    1001 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1002#line 154 "charset_lookup.gperf"
    \n-
    1003 {(int)offsetof(struct stringpool_t, stringpool_str100), 60},
    \n-
    1004#line 158 "charset_lookup.gperf"
    \n-
    1005 {(int)offsetof(struct stringpool_t, stringpool_str101), 47},
    \n-
    1006#line 163 "charset_lookup.gperf"
    \n-
    1007 {(int)offsetof(struct stringpool_t, stringpool_str102), 88},
    \n-
    1008#line 137 "charset_lookup.gperf"
    \n-
    1009 {(int)offsetof(struct stringpool_t, stringpool_str103), 54},
    \n-
    1010#line 9 "charset_lookup.gperf"
    \n-
    1011 {(int)offsetof(struct stringpool_t, stringpool_str104), 25},
    \n-
    1012#line 112 "charset_lookup.gperf"
    \n-
    1013 {(int)offsetof(struct stringpool_t, stringpool_str105), 38},
    \n-
    1014 {-1,-1},
    \n-
    1015#line 373 "charset_lookup.gperf"
    \n-
    1016 {(int)offsetof(struct stringpool_t, stringpool_str107), 88},
    \n-
    1017#line 155 "charset_lookup.gperf"
    \n-
    1018 {(int)offsetof(struct stringpool_t, stringpool_str108), 11},
    \n-
    1019#line 179 "charset_lookup.gperf"
    \n-
    1020 {(int)offsetof(struct stringpool_t, stringpool_str109), 0},
    \n-
    1021#line 132 "charset_lookup.gperf"
    \n-
    1022 {(int)offsetof(struct stringpool_t, stringpool_str110), 49},
    \n-
    1023#line 202 "charset_lookup.gperf"
    \n-
    1024 {(int)offsetof(struct stringpool_t, stringpool_str111), 56},
    \n-
    1025 {-1,-1},
    \n-
    1026#line 196 "charset_lookup.gperf"
    \n-
    1027 {(int)offsetof(struct stringpool_t, stringpool_str113), 53},
    \n-
    1028 {-1,-1},
    \n-
    1029#line 204 "charset_lookup.gperf"
    \n-
    1030 {(int)offsetof(struct stringpool_t, stringpool_str115), 57},
    \n-
    1031#line 219 "charset_lookup.gperf"
    \n-
    1032 {(int)offsetof(struct stringpool_t, stringpool_str116), 58},
    \n-
    1033 {-1,-1},
    \n-
    1034#line 339 "charset_lookup.gperf"
    \n-
    1035 {(int)offsetof(struct stringpool_t, stringpool_str118), 50},
    \n-
    1036 {-1,-1},
    \n-
    1037#line 185 "charset_lookup.gperf"
    \n-
    1038 {(int)offsetof(struct stringpool_t, stringpool_str120), 48},
    \n-
    1039#line 350 "charset_lookup.gperf"
    \n-
    1040 {(int)offsetof(struct stringpool_t, stringpool_str121), 52},
    \n-
    1041#line 8 "charset_lookup.gperf"
    \n-
    1042 {(int)offsetof(struct stringpool_t, stringpool_str122), 24},
    \n-
    1043#line 151 "charset_lookup.gperf"
    \n-
    1044 {(int)offsetof(struct stringpool_t, stringpool_str123), 57},
    \n-
    1045#line 186 "charset_lookup.gperf"
    \n-
    1046 {(int)offsetof(struct stringpool_t, stringpool_str124), 48},
    \n-
    1047 {-1,-1}, {-1,-1},
    \n-
    1048#line 152 "charset_lookup.gperf"
    \n-
    1049 {(int)offsetof(struct stringpool_t, stringpool_str127), 59},
    \n-
    1050#line 156 "charset_lookup.gperf"
    \n-
    1051 {(int)offsetof(struct stringpool_t, stringpool_str128), 61},
    \n-
    1052#line 172 "charset_lookup.gperf"
    \n-
    1053 {(int)offsetof(struct stringpool_t, stringpool_str129), 52},
    \n-
    1054 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1055#line 198 "charset_lookup.gperf"
    \n-
    1056 {(int)offsetof(struct stringpool_t, stringpool_str133), 54},
    \n-
    1057 {-1,-1},
    \n-
    1058#line 369 "charset_lookup.gperf"
    \n-
    1059 {(int)offsetof(struct stringpool_t, stringpool_str135), 45},
    \n-
    1060#line 25 "charset_lookup.gperf"
    \n-
    1061 {(int)offsetof(struct stringpool_t, stringpool_str136), 9},
    \n-
    1062#line 135 "charset_lookup.gperf"
    \n-
    1063 {(int)offsetof(struct stringpool_t, stringpool_str137), 52},
    \n-
    1064 {-1,-1}, {-1,-1},
    \n-
    1065#line 187 "charset_lookup.gperf"
    \n-
    1066 {(int)offsetof(struct stringpool_t, stringpool_str140), 49},
    \n-
    1067#line 224 "charset_lookup.gperf"
    \n-
    1068 {(int)offsetof(struct stringpool_t, stringpool_str141), 59},
    \n-
    1069#line 143 "charset_lookup.gperf"
    \n-
    1070 {(int)offsetof(struct stringpool_t, stringpool_str142), 50},
    \n-
    1071#line 149 "charset_lookup.gperf"
    \n-
    1072 {(int)offsetof(struct stringpool_t, stringpool_str143), 58},
    \n-
    1073#line 130 "charset_lookup.gperf"
    \n-
    1074 {(int)offsetof(struct stringpool_t, stringpool_str144), 47},
    \n-
    1075#line 348 "charset_lookup.gperf"
    \n-
    1076 {(int)offsetof(struct stringpool_t, stringpool_str145), 50},
    \n-
    1077#line 220 "charset_lookup.gperf"
    \n-
    1078 {(int)offsetof(struct stringpool_t, stringpool_str146), 65},
    \n-
    1079 {-1,-1},
    \n-
    1080#line 144 "charset_lookup.gperf"
    \n-
    1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 51},
    \n-
    1082#line 23 "charset_lookup.gperf"
    \n-
    1083 {(int)offsetof(struct stringpool_t, stringpool_str149), 7},
    \n-
    1084#line 344 "charset_lookup.gperf"
    \n-
    1085 {(int)offsetof(struct stringpool_t, stringpool_str150), 55},
    \n-
    1086#line 184 "charset_lookup.gperf"
    \n-
    1087 {(int)offsetof(struct stringpool_t, stringpool_str151), 47},
    \n-
    1088#line 236 "charset_lookup.gperf"
    \n-
    1089 {(int)offsetof(struct stringpool_t, stringpool_str152), 0},
    \n-
    1090#line 171 "charset_lookup.gperf"
    \n-
    1091 {(int)offsetof(struct stringpool_t, stringpool_str153), 50},
    \n-
    1092#line 243 "charset_lookup.gperf"
    \n-
    1093 {(int)offsetof(struct stringpool_t, stringpool_str154), 47},
    \n-
    1094#line 157 "charset_lookup.gperf"
    \n-
    1095 {(int)offsetof(struct stringpool_t, stringpool_str155), 46},
    \n-
    1096#line 240 "charset_lookup.gperf"
    \n-
    1097 {(int)offsetof(struct stringpool_t, stringpool_str156), 57},
    \n-
    1098#line 146 "charset_lookup.gperf"
    \n-
    1099 {(int)offsetof(struct stringpool_t, stringpool_str157), 55},
    \n-
    1100#line 15 "charset_lookup.gperf"
    \n-
    1101 {(int)offsetof(struct stringpool_t, stringpool_str158), 88},
    \n-
    1102 {-1,-1}, {-1,-1},
    \n-
    1103#line 133 "charset_lookup.gperf"
    \n-
    1104 {(int)offsetof(struct stringpool_t, stringpool_str161), 50},
    \n-
    1105 {-1,-1}, {-1,-1},
    \n-
    1106#line 42 "charset_lookup.gperf"
    \n-
    1107 {(int)offsetof(struct stringpool_t, stringpool_str164), 0},
    \n-
    1108 {-1,-1}, {-1,-1},
    \n-
    1109#line 194 "charset_lookup.gperf"
    \n-
    1110 {(int)offsetof(struct stringpool_t, stringpool_str167), 52},
    \n-
    1111 {-1,-1}, {-1,-1},
    \n-
    1112#line 273 "charset_lookup.gperf"
    \n-
    1113 {(int)offsetof(struct stringpool_t, stringpool_str170), 85},
    \n-
    1114#line 148 "charset_lookup.gperf"
    \n-
    1115 {(int)offsetof(struct stringpool_t, stringpool_str171), 56},
    \n-
    1116 {-1,-1},
    \n-
    1117#line 336 "charset_lookup.gperf"
    \n-
    1118 {(int)offsetof(struct stringpool_t, stringpool_str173), 8},
    \n-
    1119#line 183 "charset_lookup.gperf"
    \n-
    1120 {(int)offsetof(struct stringpool_t, stringpool_str174), 47},
    \n-
    1121 {-1,-1},
    \n-
    1122#line 241 "charset_lookup.gperf"
    \n-
    1123 {(int)offsetof(struct stringpool_t, stringpool_str176), 45},
    \n-
    1124#line 353 "charset_lookup.gperf"
    \n-
    1125 {(int)offsetof(struct stringpool_t, stringpool_str177), 55},
    \n-
    1126#line 169 "charset_lookup.gperf"
    \n-
    1127 {(int)offsetof(struct stringpool_t, stringpool_str178), 45},
    \n-
    1128#line 150 "charset_lookup.gperf"
    \n-
    1129 {(int)offsetof(struct stringpool_t, stringpool_str179), 53},
    \n-
    1130 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1131#line 188 "charset_lookup.gperf"
    \n-
    1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 49},
    \n-
    1133 {-1,-1},
    \n-
    1134#line 175 "charset_lookup.gperf"
    \n-
    1135 {(int)offsetof(struct stringpool_t, stringpool_str185), 55},
    \n-
    1136#line 128 "charset_lookup.gperf"
    \n-
    1137 {(int)offsetof(struct stringpool_t, stringpool_str186), 45},
    \n-
    1138 {-1,-1}, {-1,-1},
    \n-
    1139#line 370 "charset_lookup.gperf"
    \n-
    1140 {(int)offsetof(struct stringpool_t, stringpool_str189), 46},
    \n-
    1141#line 340 "charset_lookup.gperf"
    \n-
    1142 {(int)offsetof(struct stringpool_t, stringpool_str190), 51},
    \n-
    1143#line 190 "charset_lookup.gperf"
    \n-
    1144 {(int)offsetof(struct stringpool_t, stringpool_str191), 50},
    \n-
    1145#line 145 "charset_lookup.gperf"
    \n-
    1146 {(int)offsetof(struct stringpool_t, stringpool_str192), 52},
    \n-
    1147#line 138 "charset_lookup.gperf"
    \n-
    1148 {(int)offsetof(struct stringpool_t, stringpool_str193), 55},
    \n-
    1149#line 45 "charset_lookup.gperf"
    \n-
    1150 {(int)offsetof(struct stringpool_t, stringpool_str194), 26},
    \n-
    1151#line 49 "charset_lookup.gperf"
    \n-
    1152 {(int)offsetof(struct stringpool_t, stringpool_str195), 30},
    \n-
    1153#line 361 "charset_lookup.gperf"
    \n-
    1154 {(int)offsetof(struct stringpool_t, stringpool_str196), 61},
    \n-
    1155#line 302 "charset_lookup.gperf"
    \n-
    1156 {(int)offsetof(struct stringpool_t, stringpool_str197), 94},
    \n-
    1157#line 160 "charset_lookup.gperf"
    \n-
    1158 {(int)offsetof(struct stringpool_t, stringpool_str198), 49},
    \n-
    1159#line 292 "charset_lookup.gperf"
    \n-
    1160 {(int)offsetof(struct stringpool_t, stringpool_str199), 88},
    \n-
    1161#line 164 "charset_lookup.gperf"
    \n-
    1162 {(int)offsetof(struct stringpool_t, stringpool_str200), 62},
    \n-
    1163#line 161 "charset_lookup.gperf"
    \n-
    1164 {(int)offsetof(struct stringpool_t, stringpool_str201), 9},
    \n-
    1165#line 117 "charset_lookup.gperf"
    \n-
    1166 {(int)offsetof(struct stringpool_t, stringpool_str202), 0},
    \n-
    1167#line 379 "charset_lookup.gperf"
    \n-
    1168 {(int)offsetof(struct stringpool_t, stringpool_str203), 78},
    \n-
    1169#line 258 "charset_lookup.gperf"
    \n-
    1170 {(int)offsetof(struct stringpool_t, stringpool_str204), 15},
    \n-
    1171#line 380 "charset_lookup.gperf"
    \n-
    1172 {(int)offsetof(struct stringpool_t, stringpool_str205), 79},
    \n-
    1173 {-1,-1},
    \n-
    1174#line 31 "charset_lookup.gperf"
    \n-
    1175 {(int)offsetof(struct stringpool_t, stringpool_str207), 14},
    \n-
    1176#line 153 "charset_lookup.gperf"
    \n-
    1177 {(int)offsetof(struct stringpool_t, stringpool_str208), 45},
    \n-
    1178#line 38 "charset_lookup.gperf"
    \n-
    1179 {(int)offsetof(struct stringpool_t, stringpool_str209), 21},
    \n-
    1180#line 239 "charset_lookup.gperf"
    \n-
    1181 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},
    \n-
    1182#line 35 "charset_lookup.gperf"
    \n-
    1183 {(int)offsetof(struct stringpool_t, stringpool_str211), 18},
    \n-
    1184#line 181 "charset_lookup.gperf"
    \n-
    1185 {(int)offsetof(struct stringpool_t, stringpool_str212), 45},
    \n-
    1186#line 331 "charset_lookup.gperf"
    \n-
    1187 {(int)offsetof(struct stringpool_t, stringpool_str213), 26},
    \n-
    1188#line 366 "charset_lookup.gperf"
    \n-
    1189 {(int)offsetof(struct stringpool_t, stringpool_str214), 30},
    \n-
    1190 {-1,-1},
    \n-
    1191#line 180 "charset_lookup.gperf"
    \n-
    1192 {(int)offsetof(struct stringpool_t, stringpool_str216), 45},
    \n-
    1193#line 349 "charset_lookup.gperf"
    \n-
    1194 {(int)offsetof(struct stringpool_t, stringpool_str217), 51},
    \n-
    1195#line 269 "charset_lookup.gperf"
    \n-
    1196 {(int)offsetof(struct stringpool_t, stringpool_str218), 83},
    \n-
    1197#line 24 "charset_lookup.gperf"
    \n-
    1198 {(int)offsetof(struct stringpool_t, stringpool_str219), 8},
    \n-
    1199#line 207 "charset_lookup.gperf"
    \n-
    1200 {(int)offsetof(struct stringpool_t, stringpool_str220), 62},
    \n-
    1201 {-1,-1}, {-1,-1},
    \n-
    1202#line 200 "charset_lookup.gperf"
    \n-
    1203 {(int)offsetof(struct stringpool_t, stringpool_str223), 55},
    \n-
    1204 {-1,-1},
    \n-
    1205#line 378 "charset_lookup.gperf"
    \n-
    1206 {(int)offsetof(struct stringpool_t, stringpool_str225), 74},
    \n-
    1207#line 320 "charset_lookup.gperf"
    \n-
    1208 {(int)offsetof(struct stringpool_t, stringpool_str226), 14},
    \n-
    1209#line 363 "charset_lookup.gperf"
    \n-
    1210 {(int)offsetof(struct stringpool_t, stringpool_str227), 0},
    \n-
    1211#line 327 "charset_lookup.gperf"
    \n-
    1212 {(int)offsetof(struct stringpool_t, stringpool_str228), 21},
    \n-
    1213#line 90 "charset_lookup.gperf"
    \n-
    1214 {(int)offsetof(struct stringpool_t, stringpool_str229), 55},
    \n-
    1215#line 324 "charset_lookup.gperf"
    \n-
    1216 {(int)offsetof(struct stringpool_t, stringpool_str230), 18},
    \n-
    1217#line 36 "charset_lookup.gperf"
    \n-
    1218 {(int)offsetof(struct stringpool_t, stringpool_str231), 19},
    \n-
    1219#line 120 "charset_lookup.gperf"
    \n-
    1220 {(int)offsetof(struct stringpool_t, stringpool_str232), 26},
    \n-
    1221#line 134 "charset_lookup.gperf"
    \n-
    1222 {(int)offsetof(struct stringpool_t, stringpool_str233), 51},
    \n-
    1223#line 237 "charset_lookup.gperf"
    \n-
    1224 {(int)offsetof(struct stringpool_t, stringpool_str234), 50},
    \n-
    1225#line 19 "charset_lookup.gperf"
    \n-
    1226 {(int)offsetof(struct stringpool_t, stringpool_str235), 5},
    \n-
    1227#line 266 "charset_lookup.gperf"
    \n-
    1228 {(int)offsetof(struct stringpool_t, stringpool_str236), 81},
    \n-
    1229#line 261 "charset_lookup.gperf"
    \n-
    1230 {(int)offsetof(struct stringpool_t, stringpool_str237), 13},
    \n-
    1231 {-1,-1},
    \n-
    1232#line 165 "charset_lookup.gperf"
    \n-
    1233 {(int)offsetof(struct stringpool_t, stringpool_str239), 9},
    \n-
    1234#line 129 "charset_lookup.gperf"
    \n-
    1235 {(int)offsetof(struct stringpool_t, stringpool_str240), 46},
    \n-
    1236 {-1,-1},
    \n-
    1237#line 142 "charset_lookup.gperf"
    \n-
    1238 {(int)offsetof(struct stringpool_t, stringpool_str242), 0},
    \n-
    1239#line 17 "charset_lookup.gperf"
    \n-
    1240 {(int)offsetof(struct stringpool_t, stringpool_str243), 5},
    \n-
    1241 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1242#line 147 "charset_lookup.gperf"
    \n-
    1243 {(int)offsetof(struct stringpool_t, stringpool_str247), 54},
    \n-
    1244#line 109 "charset_lookup.gperf"
    \n-
    1245 {(int)offsetof(struct stringpool_t, stringpool_str248), 55},
    \n-
    1246 {-1,-1},
    \n-
    1247#line 325 "charset_lookup.gperf"
    \n-
    1248 {(int)offsetof(struct stringpool_t, stringpool_str250), 19},
    \n-
    1249 {-1,-1},
    \n-
    1250#line 44 "charset_lookup.gperf"
    \n-
    1251 {(int)offsetof(struct stringpool_t, stringpool_str252), 25},
    \n-
    1252#line 39 "charset_lookup.gperf"
    \n-
    1253 {(int)offsetof(struct stringpool_t, stringpool_str253), 22},
    \n-
    1254 {-1,-1},
    \n-
    1255#line 103 "charset_lookup.gperf"
    \n-
    1256 {(int)offsetof(struct stringpool_t, stringpool_str255), 29},
    \n-
    1257 {-1,-1}, {-1,-1},
    \n-
    1258#line 91 "charset_lookup.gperf"
    \n-
    1259 {(int)offsetof(struct stringpool_t, stringpool_str258), 55},
    \n-
    1260 {-1,-1},
    \n-
    1261#line 43 "charset_lookup.gperf"
    \n-
    1262 {(int)offsetof(struct stringpool_t, stringpool_str260), 24},
    \n-
    1263#line 48 "charset_lookup.gperf"
    \n-
    1264 {(int)offsetof(struct stringpool_t, stringpool_str261), 29},
    \n-
    1265#line 50 "charset_lookup.gperf"
    \n-
    1266 {(int)offsetof(struct stringpool_t, stringpool_str262), 31},
    \n-
    1267#line 192 "charset_lookup.gperf"
    \n-
    1268 {(int)offsetof(struct stringpool_t, stringpool_str263), 51},
    \n-
    1269 {-1,-1},
    \n-
    1270#line 34 "charset_lookup.gperf"
    \n-
    1271 {(int)offsetof(struct stringpool_t, stringpool_str265), 17},
    \n-
    1272#line 242 "charset_lookup.gperf"
    \n-
    1273 {(int)offsetof(struct stringpool_t, stringpool_str266), 46},
    \n-
    1274 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1275#line 182 "charset_lookup.gperf"
    \n-
    1276 {(int)offsetof(struct stringpool_t, stringpool_str270), 46},
    \n-
    1277#line 330 "charset_lookup.gperf"
    \n-
    1278 {(int)offsetof(struct stringpool_t, stringpool_str271), 25},
    \n-
    1279 {-1,-1},
    \n-
    1280#line 46 "charset_lookup.gperf"
    \n-
    1281 {(int)offsetof(struct stringpool_t, stringpool_str273), 27},
    \n-
    1282#line 79 "charset_lookup.gperf"
    \n-
    1283 {(int)offsetof(struct stringpool_t, stringpool_str274), 65},
    \n-
    1284#line 98 "charset_lookup.gperf"
    \n-
    1285 {(int)offsetof(struct stringpool_t, stringpool_str275), 33},
    \n-
    1286 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1287#line 329 "charset_lookup.gperf"
    \n-
    1288 {(int)offsetof(struct stringpool_t, stringpool_str279), 24},
    \n-
    1289#line 365 "charset_lookup.gperf"
    \n-
    1290 {(int)offsetof(struct stringpool_t, stringpool_str280), 29},
    \n-
    1291#line 367 "charset_lookup.gperf"
    \n-
    1292 {(int)offsetof(struct stringpool_t, stringpool_str281), 31},
    \n-
    1293 {-1,-1},
    \n-
    1294#line 94 "charset_lookup.gperf"
    \n-
    1295 {(int)offsetof(struct stringpool_t, stringpool_str283), 33},
    \n-
    1296#line 323 "charset_lookup.gperf"
    \n-
    1297 {(int)offsetof(struct stringpool_t, stringpool_str284), 17},
    \n-
    1298#line 89 "charset_lookup.gperf"
    \n-
    1299 {(int)offsetof(struct stringpool_t, stringpool_str285), 54},
    \n-
    1300 {-1,-1}, {-1,-1},
    \n-
    1301#line 334 "charset_lookup.gperf"
    \n-
    1302 {(int)offsetof(struct stringpool_t, stringpool_str288), 33},
    \n-
    1303#line 32 "charset_lookup.gperf"
    \n-
    1304 {(int)offsetof(struct stringpool_t, stringpool_str289), 15},
    \n-
    1305#line 119 "charset_lookup.gperf"
    \n-
    1306 {(int)offsetof(struct stringpool_t, stringpool_str290), 25},
    \n-
    1307#line 61 "charset_lookup.gperf"
    \n-
    1308 {(int)offsetof(struct stringpool_t, stringpool_str291), 60},
    \n-
    1309#line 332 "charset_lookup.gperf"
    \n-
    1310 {(int)offsetof(struct stringpool_t, stringpool_str292), 27},
    \n-
    1311#line 166 "charset_lookup.gperf"
    \n-
    1312 {(int)offsetof(struct stringpool_t, stringpool_str293), 58},
    \n-
    1313#line 51 "charset_lookup.gperf"
    \n-
    1314 {(int)offsetof(struct stringpool_t, stringpool_str294), 88},
    \n-
    1315#line 96 "charset_lookup.gperf"
    \n-
    1316 {(int)offsetof(struct stringpool_t, stringpool_str295), 10},
    \n-
    1317 {-1,-1},
    \n-
    1318#line 286 "charset_lookup.gperf"
    \n-
    1319 {(int)offsetof(struct stringpool_t, stringpool_str297), 87},
    \n-
    1320#line 118 "charset_lookup.gperf"
    \n-
    1321 {(int)offsetof(struct stringpool_t, stringpool_str298), 24},
    \n-
    1322 {-1,-1}, {-1,-1},
    \n-
    1323#line 108 "charset_lookup.gperf"
    \n-
    1324 {(int)offsetof(struct stringpool_t, stringpool_str301), 55},
    \n-
    1325#line 167 "charset_lookup.gperf"
    \n-
    1326 {(int)offsetof(struct stringpool_t, stringpool_str302), 88},
    \n-
    1327#line 92 "charset_lookup.gperf"
    \n-
    1328 {(int)offsetof(struct stringpool_t, stringpool_str303), 10},
    \n-
    1329#line 278 "charset_lookup.gperf"
    \n-
    1330 {(int)offsetof(struct stringpool_t, stringpool_str304), 61},
    \n-
    1331#line 376 "charset_lookup.gperf"
    \n-
    1332 {(int)offsetof(struct stringpool_t, stringpool_str305), 69},
    \n-
    1333#line 238 "charset_lookup.gperf"
    \n-
    1334 {(int)offsetof(struct stringpool_t, stringpool_str306), 51},
    \n-
    1335#line 30 "charset_lookup.gperf"
    \n-
    1336 {(int)offsetof(struct stringpool_t, stringpool_str307), 13},
    \n-
    1337#line 321 "charset_lookup.gperf"
    \n-
    1338 {(int)offsetof(struct stringpool_t, stringpool_str308), 15},
    \n-
    1339#line 284 "charset_lookup.gperf"
    \n-
    1340 {(int)offsetof(struct stringpool_t, stringpool_str309), 2},
    \n-
    1341#line 69 "charset_lookup.gperf"
    \n-
    1342 {(int)offsetof(struct stringpool_t, stringpool_str310), 0},
    \n-
    1343 {-1,-1},
    \n-
    1344#line 277 "charset_lookup.gperf"
    \n-
    1345 {(int)offsetof(struct stringpool_t, stringpool_str312), 61},
    \n-
    1346#line 275 "charset_lookup.gperf"
    \n-
    1347 {(int)offsetof(struct stringpool_t, stringpool_str313), 85},
    \n-
    1348#line 73 "charset_lookup.gperf"
    \n-
    1349 {(int)offsetof(struct stringpool_t, stringpool_str314), 57},
    \n-
    1350 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1351#line 104 "charset_lookup.gperf"
    \n-
    1352 {(int)offsetof(struct stringpool_t, stringpool_str318), 9},
    \n-
    1353#line 47 "charset_lookup.gperf"
    \n-
    1354 {(int)offsetof(struct stringpool_t, stringpool_str319), 28},
    \n-
    1355#line 16 "charset_lookup.gperf"
    \n-
    1356 {(int)offsetof(struct stringpool_t, stringpool_str320), 54},
    \n-
    1357#line 37 "charset_lookup.gperf"
    \n-
    1358 {(int)offsetof(struct stringpool_t, stringpool_str321), 20},
    \n-
    1359 {-1,-1}, {-1,-1},
    \n-
    1360#line 222 "charset_lookup.gperf"
    \n-
    1361 {(int)offsetof(struct stringpool_t, stringpool_str324), 67},
    \n-
    1362 {-1,-1},
    \n-
    1363#line 319 "charset_lookup.gperf"
    \n-
    1364 {(int)offsetof(struct stringpool_t, stringpool_str326), 13},
    \n-
    1365 {-1,-1}, {-1,-1},
    \n-
    1366#line 111 "charset_lookup.gperf"
    \n-
    1367 {(int)offsetof(struct stringpool_t, stringpool_str329), 83},
    \n-
    1368 {-1,-1},
    \n-
    1369#line 265 "charset_lookup.gperf"
    \n-
    1370 {(int)offsetof(struct stringpool_t, stringpool_str331), 84},
    \n-
    1371 {-1,-1},
    \n-
    1372#line 87 "charset_lookup.gperf"
    \n-
    1373 {(int)offsetof(struct stringpool_t, stringpool_str333), 94},
    \n-
    1374#line 74 "charset_lookup.gperf"
    \n-
    1375 {(int)offsetof(struct stringpool_t, stringpool_str334), 45},
    \n-
    1376#line 225 "charset_lookup.gperf"
    \n-
    1377 {(int)offsetof(struct stringpool_t, stringpool_str335), 59},
    \n-
    1378#line 270 "charset_lookup.gperf"
    \n-
    1379 {(int)offsetof(struct stringpool_t, stringpool_str336), 84},
    \n-
    1380#line 159 "charset_lookup.gperf"
    \n-
    1381 {(int)offsetof(struct stringpool_t, stringpool_str337), 48},
    \n-
    1382#line 364 "charset_lookup.gperf"
    \n-
    1383 {(int)offsetof(struct stringpool_t, stringpool_str338), 28},
    \n-
    1384#line 218 "charset_lookup.gperf"
    \n-
    1385 {(int)offsetof(struct stringpool_t, stringpool_str339), 22},
    \n-
    1386#line 326 "charset_lookup.gperf"
    \n-
    1387 {(int)offsetof(struct stringpool_t, stringpool_str340), 20},
    \n-
    1388 {-1,-1},
    \n-
    1389#line 14 "charset_lookup.gperf"
    \n-
    1390 {(int)offsetof(struct stringpool_t, stringpool_str342), 4},
    \n-
    1391 {-1,-1}, {-1,-1},
    \n-
    1392#line 178 "charset_lookup.gperf"
    \n-
    1393 {(int)offsetof(struct stringpool_t, stringpool_str345), 88},
    \n-
    1394 {-1,-1},
    \n-
    1395#line 274 "charset_lookup.gperf"
    \n-
    1396 {(int)offsetof(struct stringpool_t, stringpool_str347), 85},
    \n-
    1397 {-1,-1},
    \n-
    1398#line 97 "charset_lookup.gperf"
    \n-
    1399 {(int)offsetof(struct stringpool_t, stringpool_str349), 32},
    \n-
    1400#line 301 "charset_lookup.gperf"
    \n-
    1401 {(int)offsetof(struct stringpool_t, stringpool_str350), 1},
    \n-
    1402#line 315 "charset_lookup.gperf"
    \n-
    1403 {(int)offsetof(struct stringpool_t, stringpool_str351), 64},
    \n-
    1404#line 102 "charset_lookup.gperf"
    \n-
    1405 {(int)offsetof(struct stringpool_t, stringpool_str352), 10},
    \n-
    1406#line 316 "charset_lookup.gperf"
    \n-
    1407 {(int)offsetof(struct stringpool_t, stringpool_str353), 62},
    \n-
    1408#line 126 "charset_lookup.gperf"
    \n-
    1409 {(int)offsetof(struct stringpool_t, stringpool_str354), 44},
    \n-
    1410#line 260 "charset_lookup.gperf"
    \n-
    1411 {(int)offsetof(struct stringpool_t, stringpool_str355), 14},
    \n-
    1412#line 124 "charset_lookup.gperf"
    \n-
    1413 {(int)offsetof(struct stringpool_t, stringpool_str356), 42},
    \n-
    1414#line 93 "charset_lookup.gperf"
    \n-
    1415 {(int)offsetof(struct stringpool_t, stringpool_str357), 32},
    \n-
    1416#line 299 "charset_lookup.gperf"
    \n-
    1417 {(int)offsetof(struct stringpool_t, stringpool_str358), 1},
    \n-
    1418#line 303 "charset_lookup.gperf"
    \n-
    1419 {(int)offsetof(struct stringpool_t, stringpool_str359), 94},
    \n-
    1420#line 40 "charset_lookup.gperf"
    \n-
    1421 {(int)offsetof(struct stringpool_t, stringpool_str360), 88},
    \n-
    1422#line 33 "charset_lookup.gperf"
    \n-
    1423 {(int)offsetof(struct stringpool_t, stringpool_str361), 16},
    \n-
    1424#line 333 "charset_lookup.gperf"
    \n-
    1425 {(int)offsetof(struct stringpool_t, stringpool_str362), 32},
    \n-
    1426 {-1,-1},
    \n-
    1427#line 377 "charset_lookup.gperf"
    \n-
    1428 {(int)offsetof(struct stringpool_t, stringpool_str364), 73},
    \n-
    1429#line 293 "charset_lookup.gperf"
    \n-
    1430 {(int)offsetof(struct stringpool_t, stringpool_str365), 88},
    \n-
    1431#line 271 "charset_lookup.gperf"
    \n-
    1432 {(int)offsetof(struct stringpool_t, stringpool_str366), 84},
    \n-
    1433 {-1,-1},
    \n-
    1434#line 72 "charset_lookup.gperf"
    \n-
    1435 {(int)offsetof(struct stringpool_t, stringpool_str368), 52},
    \n-
    1436#line 279 "charset_lookup.gperf"
    \n-
    1437 {(int)offsetof(struct stringpool_t, stringpool_str369), 61},
    \n-
    1438 {-1,-1},
    \n-
    1439#line 52 "charset_lookup.gperf"
    \n-
    1440 {(int)offsetof(struct stringpool_t, stringpool_str371), 5},
    \n-
    1441 {-1,-1}, {-1,-1},
    \n-
    1442#line 121 "charset_lookup.gperf"
    \n-
    1443 {(int)offsetof(struct stringpool_t, stringpool_str374), 39},
    \n-
    1444 {-1,-1}, {-1,-1},
    \n-
    1445#line 41 "charset_lookup.gperf"
    \n-
    1446 {(int)offsetof(struct stringpool_t, stringpool_str377), 23},
    \n-
    1447 {-1,-1},
    \n-
    1448#line 26 "charset_lookup.gperf"
    \n-
    1449 {(int)offsetof(struct stringpool_t, stringpool_str379), 5},
    \n-
    1450#line 322 "charset_lookup.gperf"
    \n-
    1451 {(int)offsetof(struct stringpool_t, stringpool_str380), 16},
    \n-
    1452#line 13 "charset_lookup.gperf"
    \n-
    1453 {(int)offsetof(struct stringpool_t, stringpool_str381), 54},
    \n-
    1454 {-1,-1},
    \n-
    1455#line 317 "charset_lookup.gperf"
    \n-
    1456 {(int)offsetof(struct stringpool_t, stringpool_str383), 60},
    \n-
    1457#line 60 "charset_lookup.gperf"
    \n-
    1458 {(int)offsetof(struct stringpool_t, stringpool_str384), 58},
    \n-
    1459 {-1,-1}, {-1,-1},
    \n-
    1460#line 101 "charset_lookup.gperf"
    \n-
    1461 {(int)offsetof(struct stringpool_t, stringpool_str387), 35},
    \n-
    1462 {-1,-1},
    \n-
    1463#line 285 "charset_lookup.gperf"
    \n-
    1464 {(int)offsetof(struct stringpool_t, stringpool_str389), 86},
    \n-
    1465 {-1,-1}, {-1,-1},
    \n-
    1466#line 70 "charset_lookup.gperf"
    \n-
    1467 {(int)offsetof(struct stringpool_t, stringpool_str392), 50},
    \n-
    1468#line 107 "charset_lookup.gperf"
    \n-
    1469 {(int)offsetof(struct stringpool_t, stringpool_str393), 37},
    \n-
    1470#line 227 "charset_lookup.gperf"
    \n-
    1471 {(int)offsetof(struct stringpool_t, stringpool_str394), 59},
    \n-
    1472#line 29 "charset_lookup.gperf"
    \n-
    1473 {(int)offsetof(struct stringpool_t, stringpool_str395), 12},
    \n-
    1474#line 328 "charset_lookup.gperf"
    \n-
    1475 {(int)offsetof(struct stringpool_t, stringpool_str396), 23},
    \n-
    1476#line 125 "charset_lookup.gperf"
    \n-
    1477 {(int)offsetof(struct stringpool_t, stringpool_str397), 43},
    \n-
    1478#line 115 "charset_lookup.gperf"
    \n-
    1479 {(int)offsetof(struct stringpool_t, stringpool_str398), 88},
    \n-
    1480 {-1,-1}, {-1,-1},
    \n-
    1481#line 283 "charset_lookup.gperf"
    \n-
    1482 {(int)offsetof(struct stringpool_t, stringpool_str401), 3},
    \n-
    1483#line 288 "charset_lookup.gperf"
    \n-
    1484 {(int)offsetof(struct stringpool_t, stringpool_str402), 3},
    \n-
    1485 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1486#line 209 "charset_lookup.gperf"
    \n-
    1487 {(int)offsetof(struct stringpool_t, stringpool_str409), 58},
    \n-
    1488 {-1,-1},
    \n-
    1489#line 259 "charset_lookup.gperf"
    \n-
    1490 {(int)offsetof(struct stringpool_t, stringpool_str411), 19},
    \n-
    1491 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1492#line 116 "charset_lookup.gperf"
    \n-
    1493 {(int)offsetof(struct stringpool_t, stringpool_str415), 23},
    \n-
    1494 {-1,-1}, {-1,-1},
    \n-
    1495#line 244 "charset_lookup.gperf"
    \n-
    1496 {(int)offsetof(struct stringpool_t, stringpool_str418), 69},
    \n-
    1497 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1498#line 295 "charset_lookup.gperf"
    \n-
    1499 {(int)offsetof(struct stringpool_t, stringpool_str422), 90},
    \n-
    1500 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1501#line 123 "charset_lookup.gperf"
    \n-
    1502 {(int)offsetof(struct stringpool_t, stringpool_str428), 41},
    \n-
    1503#line 28 "charset_lookup.gperf"
    \n-
    1504 {(int)offsetof(struct stringpool_t, stringpool_str429), 11},
    \n-
    1505 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1506#line 306 "charset_lookup.gperf"
    \n-
    1507 {(int)offsetof(struct stringpool_t, stringpool_str434), 14},
    \n-
    1508#line 313 "charset_lookup.gperf"
    \n-
    1509 {(int)offsetof(struct stringpool_t, stringpool_str435), 21},
    \n-
    1510#line 310 "charset_lookup.gperf"
    \n-
    1511 {(int)offsetof(struct stringpool_t, stringpool_str436), 18},
    \n-
    1512 {-1,-1},
    \n-
    1513#line 75 "charset_lookup.gperf"
    \n-
    1514 {(int)offsetof(struct stringpool_t, stringpool_str438), 54},
    \n-
    1515 {-1,-1}, {-1,-1},
    \n-
    1516#line 263 "charset_lookup.gperf"
    \n-
    1517 {(int)offsetof(struct stringpool_t, stringpool_str441), 18},
    \n-
    1518 {-1,-1}, {-1,-1},
    \n-
    1519#line 88 "charset_lookup.gperf"
    \n-
    1520 {(int)offsetof(struct stringpool_t, stringpool_str444), 53},
    \n-
    1521#line 210 "charset_lookup.gperf"
    \n-
    1522 {(int)offsetof(struct stringpool_t, stringpool_str445), 62},
    \n-
    1523#line 311 "charset_lookup.gperf"
    \n-
    1524 {(int)offsetof(struct stringpool_t, stringpool_str446), 19},
    \n-
    1525 {-1,-1},
    \n-
    1526#line 226 "charset_lookup.gperf"
    \n-
    1527 {(int)offsetof(struct stringpool_t, stringpool_str448), 59},
    \n-
    1528 {-1,-1},
    \n-
    1529#line 287 "charset_lookup.gperf"
    \n-
    1530 {(int)offsetof(struct stringpool_t, stringpool_str450), 30},
    \n-
    1531 {-1,-1},
    \n-
    1532#line 22 "charset_lookup.gperf"
    \n-
    1533 {(int)offsetof(struct stringpool_t, stringpool_str452), 5},
    \n-
    1534 {-1,-1},
    \n-
    1535#line 27 "charset_lookup.gperf"
    \n-
    1536 {(int)offsetof(struct stringpool_t, stringpool_str454), 10},
    \n-
    1537#line 106 "charset_lookup.gperf"
    \n-
    1538 {(int)offsetof(struct stringpool_t, stringpool_str455), 36},
    \n-
    1539 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1540#line 18 "charset_lookup.gperf"
    \n-
    1541 {(int)offsetof(struct stringpool_t, stringpool_str460), 5},
    \n-
    1542#line 59 "charset_lookup.gperf"
    \n-
    1543 {(int)offsetof(struct stringpool_t, stringpool_str461), 26},
    \n-
    1544#line 300 "charset_lookup.gperf"
    \n-
    1545 {(int)offsetof(struct stringpool_t, stringpool_str462), 93},
    \n-
    1546#line 309 "charset_lookup.gperf"
    \n-
    1547 {(int)offsetof(struct stringpool_t, stringpool_str463), 17},
    \n-
    1548#line 71 "charset_lookup.gperf"
    \n-
    1549 {(int)offsetof(struct stringpool_t, stringpool_str464), 51},
    \n-
    1550#line 289 "charset_lookup.gperf"
    \n-
    1551 {(int)offsetof(struct stringpool_t, stringpool_str465), 93},
    \n-
    1552 {-1,-1},
    \n-
    1553#line 66 "charset_lookup.gperf"
    \n-
    1554 {(int)offsetof(struct stringpool_t, stringpool_str467), 9},
    \n-
    1555 {-1,-1}, {-1,-1},
    \n-
    1556#line 298 "charset_lookup.gperf"
    \n-
    1557 {(int)offsetof(struct stringpool_t, stringpool_str470), 93},
    \n-
    1558 {-1,-1},
    \n-
    1559#line 105 "charset_lookup.gperf"
    \n-
    1560 {(int)offsetof(struct stringpool_t, stringpool_str472), 8},
    \n-
    1561 {-1,-1},
    \n-
    1562#line 65 "charset_lookup.gperf"
    \n-
    1563 {(int)offsetof(struct stringpool_t, stringpool_str474), 44},
    \n-
    1564#line 307 "charset_lookup.gperf"
    \n-
    1565 {(int)offsetof(struct stringpool_t, stringpool_str475), 15},
    \n-
    1566#line 223 "charset_lookup.gperf"
    \n-
    1567 {(int)offsetof(struct stringpool_t, stringpool_str476), 68},
    \n-
    1568 {-1,-1}, {-1,-1},
    \n-
    1569#line 203 "charset_lookup.gperf"
    \n-
    1570 {(int)offsetof(struct stringpool_t, stringpool_str479), 56},
    \n-
    1571#line 197 "charset_lookup.gperf"
    \n-
    1572 {(int)offsetof(struct stringpool_t, stringpool_str480), 53},
    \n-
    1573 {-1,-1}, {-1,-1},
    \n-
    1574#line 205 "charset_lookup.gperf"
    \n-
    1575 {(int)offsetof(struct stringpool_t, stringpool_str483), 57},
    \n-
    1576#line 305 "charset_lookup.gperf"
    \n-
    1577 {(int)offsetof(struct stringpool_t, stringpool_str484), 13},
    \n-
    1578#line 251 "charset_lookup.gperf"
    \n-
    1579 {(int)offsetof(struct stringpool_t, stringpool_str485), 76},
    \n-
    1580#line 77 "charset_lookup.gperf"
    \n-
    1581 {(int)offsetof(struct stringpool_t, stringpool_str486), 55},
    \n-
    1582#line 122 "charset_lookup.gperf"
    \n-
    1583 {(int)offsetof(struct stringpool_t, stringpool_str487), 40},
    \n-
    1584#line 211 "charset_lookup.gperf"
    \n-
    1585 {(int)offsetof(struct stringpool_t, stringpool_str488), 64},
    \n-
    1586#line 208 "charset_lookup.gperf"
    \n-
    1587 {(int)offsetof(struct stringpool_t, stringpool_str489), 64},
    \n-
    1588#line 212 "charset_lookup.gperf"
    \n-
    1589 {(int)offsetof(struct stringpool_t, stringpool_str490), 62},
    \n-
    1590#line 312 "charset_lookup.gperf"
    \n-
    1591 {(int)offsetof(struct stringpool_t, stringpool_str491), 20},
    \n-
    1592 {-1,-1}, {-1,-1},
    \n-
    1593#line 62 "charset_lookup.gperf"
    \n-
    1594 {(int)offsetof(struct stringpool_t, stringpool_str494), 39},
    \n-
    1595 {-1,-1},
    \n-
    1596#line 262 "charset_lookup.gperf"
    \n-
    1597 {(int)offsetof(struct stringpool_t, stringpool_str496), 16},
    \n-
    1598 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1599#line 100 "charset_lookup.gperf"
    \n-
    1600 {(int)offsetof(struct stringpool_t, stringpool_str500), 32},
    \n-
    1601 {-1,-1}, {-1,-1},
    \n-
    1602#line 221 "charset_lookup.gperf"
    \n-
    1603 {(int)offsetof(struct stringpool_t, stringpool_str503), 66},
    \n-
    1604#line 280 "charset_lookup.gperf"
    \n-
    1605 {(int)offsetof(struct stringpool_t, stringpool_str504), 61},
    \n-
    1606#line 253 "charset_lookup.gperf"
    \n-
    1607 {(int)offsetof(struct stringpool_t, stringpool_str505), 69},
    \n-
    1608#line 314 "charset_lookup.gperf"
    \n-
    1609 {(int)offsetof(struct stringpool_t, stringpool_str506), 27},
    \n-
    1610#line 195 "charset_lookup.gperf"
    \n-
    1611 {(int)offsetof(struct stringpool_t, stringpool_str507), 52},
    \n-
    1612 {-1,-1},
    \n-
    1613#line 80 "charset_lookup.gperf"
    \n-
    1614 {(int)offsetof(struct stringpool_t, stringpool_str509), 59},
    \n-
    1615 {-1,-1},
    \n-
    1616#line 308 "charset_lookup.gperf"
    \n-
    1617 {(int)offsetof(struct stringpool_t, stringpool_str511), 16},
    \n-
    1618 {-1,-1}, {-1,-1},
    \n-
    1619#line 294 "charset_lookup.gperf"
    \n-
    1620 {(int)offsetof(struct stringpool_t, stringpool_str514), 89},
    \n-
    1621#line 68 "charset_lookup.gperf"
    \n-
    1622 {(int)offsetof(struct stringpool_t, stringpool_str515), 62},
    \n-
    1623#line 64 "charset_lookup.gperf"
    \n-
    1624 {(int)offsetof(struct stringpool_t, stringpool_str516), 43},
    \n-
    1625 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1626#line 215 "charset_lookup.gperf"
    \n-
    1627 {(int)offsetof(struct stringpool_t, stringpool_str520), 60},
    \n-
    1628#line 254 "charset_lookup.gperf"
    \n-
    1629 {(int)offsetof(struct stringpool_t, stringpool_str521), 77},
    \n-
    1630#line 85 "charset_lookup.gperf"
    \n-
    1631 {(int)offsetof(struct stringpool_t, stringpool_str522), 3},
    \n-
    1632#line 255 "charset_lookup.gperf"
    \n-
    1633 {(int)offsetof(struct stringpool_t, stringpool_str523), 78},
    \n-
    1634 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1635#line 297 "charset_lookup.gperf"
    \n-
    1636 {(int)offsetof(struct stringpool_t, stringpool_str528), 92},
    \n-
    1637 {-1,-1}, {-1,-1},
    \n-
    1638#line 58 "charset_lookup.gperf"
    \n-
    1639 {(int)offsetof(struct stringpool_t, stringpool_str531), 83},
    \n-
    1640 {-1,-1}, {-1,-1},
    \n-
    1641#line 189 "charset_lookup.gperf"
    \n-
    1642 {(int)offsetof(struct stringpool_t, stringpool_str534), 0},
    \n-
    1643 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1644#line 21 "charset_lookup.gperf"
    \n-
    1645 {(int)offsetof(struct stringpool_t, stringpool_str541), 6},
    \n-
    1646 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1647#line 199 "charset_lookup.gperf"
    \n-
    1648 {(int)offsetof(struct stringpool_t, stringpool_str546), 54},
    \n-
    1649#line 216 "charset_lookup.gperf"
    \n-
    1650 {(int)offsetof(struct stringpool_t, stringpool_str547), 60},
    \n-
    1651#line 63 "charset_lookup.gperf"
    \n-
    1652 {(int)offsetof(struct stringpool_t, stringpool_str548), 41},
    \n-
    1653#line 20 "charset_lookup.gperf"
    \n-
    1654 {(int)offsetof(struct stringpool_t, stringpool_str549), 6},
    \n-
    1655 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1656#line 84 "charset_lookup.gperf"
    \n-
    1657 {(int)offsetof(struct stringpool_t, stringpool_str553), 84},
    \n-
    1658 {-1,-1},
    \n-
    1659#line 193 "charset_lookup.gperf"
    \n-
    1660 {(int)offsetof(struct stringpool_t, stringpool_str555), 51},
    \n-
    1661 {-1,-1},
    \n-
    1662#line 214 "charset_lookup.gperf"
    \n-
    1663 {(int)offsetof(struct stringpool_t, stringpool_str557), 62},
    \n-
    1664 {-1,-1}, {-1,-1},
    \n-
    1665#line 78 "charset_lookup.gperf"
    \n-
    1666 {(int)offsetof(struct stringpool_t, stringpool_str560), 56},
    \n-
    1667#line 76 "charset_lookup.gperf"
    \n-
    1668 {(int)offsetof(struct stringpool_t, stringpool_str561), 53},
    \n-
    1669 {-1,-1},
    \n-
    1670#line 141 "charset_lookup.gperf"
    \n-
    1671 {(int)offsetof(struct stringpool_t, stringpool_str563), 47},
    \n-
    1672#line 113 "charset_lookup.gperf"
    \n-
    1673 {(int)offsetof(struct stringpool_t, stringpool_str564), 38},
    \n-
    1674 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1675#line 11 "charset_lookup.gperf"
    \n-
    1676 {(int)offsetof(struct stringpool_t, stringpool_str571), 88},
    \n-
    1677#line 110 "charset_lookup.gperf"
    \n-
    1678 {(int)offsetof(struct stringpool_t, stringpool_str572), 56},
    \n-
    1679 {-1,-1}, {-1,-1},
    \n-
    1680#line 191 "charset_lookup.gperf"
    \n-
    1681 {(int)offsetof(struct stringpool_t, stringpool_str575), 50},
    \n-
    1682 {-1,-1},
    \n-
    1683#line 67 "charset_lookup.gperf"
    \n-
    1684 {(int)offsetof(struct stringpool_t, stringpool_str577), 8},
    \n-
    1685 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1686#line 56 "charset_lookup.gperf"
    \n-
    1687 {(int)offsetof(struct stringpool_t, stringpool_str581), 10},
    \n-
    1688#line 12 "charset_lookup.gperf"
    \n-
    1689 {(int)offsetof(struct stringpool_t, stringpool_str582), 88},
    \n-
    1690#line 86 "charset_lookup.gperf"
    \n-
    1691 {(int)offsetof(struct stringpool_t, stringpool_str583), 93},
    \n-
    1692#line 213 "charset_lookup.gperf"
    \n-
    1693 {(int)offsetof(struct stringpool_t, stringpool_str584), 62},
    \n-
    1694 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1695#line 201 "charset_lookup.gperf"
    \n-
    1696 {(int)offsetof(struct stringpool_t, stringpool_str591), 55},
    \n-
    1697 {-1,-1}, {-1,-1},
    \n-
    1698#line 99 "charset_lookup.gperf"
    \n-
    1699 {(int)offsetof(struct stringpool_t, stringpool_str594), 34},
    \n-
    1700 {-1,-1},
    \n-
    1701#line 53 "charset_lookup.gperf"
    \n-
    1702 {(int)offsetof(struct stringpool_t, stringpool_str596), 33},
    \n-
    1703 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1704#line 95 "charset_lookup.gperf"
    \n-
    1705 {(int)offsetof(struct stringpool_t, stringpool_str602), 34},
    \n-
    1706 {-1,-1}, {-1,-1},
    \n-
    1707#line 247 "charset_lookup.gperf"
    \n-
    1708 {(int)offsetof(struct stringpool_t, stringpool_str605), 72},
    \n-
    1709 {-1,-1},
    \n-
    1710#line 335 "charset_lookup.gperf"
    \n-
    1711 {(int)offsetof(struct stringpool_t, stringpool_str607), 34},
    \n-
    1712 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1713#line 282 "charset_lookup.gperf"
    \n-
    1714 {(int)offsetof(struct stringpool_t, stringpool_str614), 61},
    \n-
    1715 {-1,-1}, {-1,-1},
    \n-
    1716#line 249 "charset_lookup.gperf"
    \n-
    1717 {(int)offsetof(struct stringpool_t, stringpool_str617), 74},
    \n-
    1718 {-1,-1}, {-1,-1},
    \n-
    1719#line 296 "charset_lookup.gperf"
    \n-
    1720 {(int)offsetof(struct stringpool_t, stringpool_str620), 91},
    \n-
    1721 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1722#line 252 "charset_lookup.gperf"
    \n-
    1723 {(int)offsetof(struct stringpool_t, stringpool_str625), 69},
    \n-
    1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1725 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1726#line 291 "charset_lookup.gperf"
    \n-
    1727 {(int)offsetof(struct stringpool_t, stringpool_str637), 2},
    \n-
    1728 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1729#line 264 "charset_lookup.gperf"
    \n-
    1730 {(int)offsetof(struct stringpool_t, stringpool_str641), 17},
    \n-
    1731 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1732#line 257 "charset_lookup.gperf"
    \n-
    1733 {(int)offsetof(struct stringpool_t, stringpool_str645), 80},
    \n-
    1734 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1735#line 114 "charset_lookup.gperf"
    \n-
    1736 {(int)offsetof(struct stringpool_t, stringpool_str651), 12},
    \n-
    1737 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1738#line 246 "charset_lookup.gperf"
    \n-
    1739 {(int)offsetof(struct stringpool_t, stringpool_str658), 71},
    \n-
    1740 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1741#line 267 "charset_lookup.gperf"
    \n-
    1742 {(int)offsetof(struct stringpool_t, stringpool_str663), 82},
    \n-
    1743#line 281 "charset_lookup.gperf"
    \n-
    1744 {(int)offsetof(struct stringpool_t, stringpool_str664), 61},
    \n-
    1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1746 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1747#line 217 "charset_lookup.gperf"
    \n-
    1748 {(int)offsetof(struct stringpool_t, stringpool_str674), 60},
    \n-
    1749 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1750 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1751 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1752 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1753#line 245 "charset_lookup.gperf"
    \n-
    1754 {(int)offsetof(struct stringpool_t, stringpool_str697), 70},
    \n-
    1755 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1756 {-1,-1}, {-1,-1},
    \n-
    1757#line 290 "charset_lookup.gperf"
    \n-
    1758 {(int)offsetof(struct stringpool_t, stringpool_str706), 3},
    \n-
    1759 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1762#line 83 "charset_lookup.gperf"
    \n-
    1763 {(int)offsetof(struct stringpool_t, stringpool_str723), 25},
    \n-
    1764 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1765 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1766 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1767 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1768#line 248 "charset_lookup.gperf"
    \n-
    1769 {(int)offsetof(struct stringpool_t, stringpool_str748), 73},
    \n-
    1770 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1771 {-1,-1},
    \n-
    1772#line 304 "charset_lookup.gperf"
    \n-
    1773 {(int)offsetof(struct stringpool_t, stringpool_str756), 20},
    \n-
    1774 {-1,-1},
    \n-
    1775#line 276 "charset_lookup.gperf"
    \n-
    1776 {(int)offsetof(struct stringpool_t, stringpool_str758), 85},
    \n-
    1777 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1778#line 81 "charset_lookup.gperf"
    \n-
    1779 {(int)offsetof(struct stringpool_t, stringpool_str762), 69},
    \n-
    1780 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1781 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1782 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1783 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1784 {-1,-1},
    \n-
    1785#line 57 "charset_lookup.gperf"
    \n-
    1786 {(int)offsetof(struct stringpool_t, stringpool_str788), 64},
    \n-
    1787 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1788 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1791 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1792 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1793 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1799 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1800 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1803#line 250 "charset_lookup.gperf"
    \n-
    1804 {(int)offsetof(struct stringpool_t, stringpool_str884), 75},
    \n-
    1805 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1806 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1807 {-1,-1}, {-1,-1},
    \n-
    1808#line 256 "charset_lookup.gperf"
    \n-
    1809 {(int)offsetof(struct stringpool_t, stringpool_str899), 79},
    \n-
    1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1811#line 82 "charset_lookup.gperf"
    \n-
    1812 {(int)offsetof(struct stringpool_t, stringpool_str905), 24},
    \n-
    1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1814 {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1815#line 55 "charset_lookup.gperf"
    \n-
    1816 {(int)offsetof(struct stringpool_t, stringpool_str915), 34},
    \n-
    1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1820 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1821 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1823 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1824 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1825 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1829 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1830 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1833 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1834 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1835 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n-
    1844 {-1,-1},
    \n-
    1845#line 54 "charset_lookup.gperf"
    \n-
    1846 {(int)offsetof(struct stringpool_t, stringpool_str1079), 32}
    \n-
    1847 };
    \n-
    1848
    \n-
    1849 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    \n-
    1850 {
    \n-
    1851 register unsigned int key = hash_charset (str, len);
    \n-
    1852
    \n-
    1853 if (key <= MAX_HASH_VALUE)
    \n-
    1854 {
    \n-
    1855 register int o = wordlist[key].alias_pos;
    \n-
    1856 if (o >= 0)
    \n-
    1857 {
    \n-
    1858 register const char *s = o + stringpool;
    \n-
    1859
    \n-
    1860 if (*str == *s && !strcmp (str + 1, s + 1))
    \n-
    1861 return &wordlist[key];
    \n-
    1862 }
    \n-
    1863 }
    \n-
    1864 }
    \n-
    1865 return 0;
    \n-
    1866}
    \n-
    1867#line 381 "charset_lookup.gperf"
    \n-
    1868
    \n+
    5/*
    \n+
    6 * Copyright (c) 2000 Todd C. Miller <Todd.Miller@courtesan.com>
    \n+
    7 * All rights reserved.
    \n+
    8 *
    \n+
    9 * Redistribution and use in source and binary forms, with or without
    \n+
    10 * modification, are permitted provided that the following conditions
    \n+
    11 * are met:
    \n+
    12 * 1. Redistributions of source code must retain the above copyright
    \n+
    13 * notice, this list of conditions and the following disclaimer.
    \n+
    14 * 2. Redistributions in binary form must reproduce the above copyright
    \n+
    15 * notice, this list of conditions and the following disclaimer in the
    \n+
    16 * documentation and/or other materials provided with the distribution.
    \n+
    17 * 3. The name of the author may not be used to endorse or promote products
    \n+
    18 * derived from this software without specific prior written permission.
    \n+
    19 *
    \n+
    20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
    \n+
    21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
    \n+
    22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    \n+
    23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    \n+
    24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    \n+
    25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    \n+
    26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    \n+
    27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    \n+
    28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    \n+
    29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    \n+
    30 */
    \n+
    31
    \n+
    32#ifndef FREETDS_READPASSPHRASE_H_
    \n+
    33#define FREETDS_READPASSPHRASE_H_
    \n+
    34
    \n+
    35#ifndef _freetds_config_h_
    \n+
    36#error should include config.h before
    \n+
    37#endif
    \n+
    38
    \n+
    39#ifdef HAVE_READPASSPHRASE
    \n+
    40
    \n+
    41# include <readpassphrase.h>
    \n+
    42
    \n+
    43#else /* !HAVE_READPASSPHRASE */
    \n+
    44
    \n+
    45#include <freetds/pushvis.h>
    \n+
    46
    \n+
    47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
    \n+
    48#define RPP_ECHO_ON 0x01 /* Leave echo on. */
    \n+
    49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
    \n+
    50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
    \n+
    51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
    \n+
    52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
    \n+
    53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
    \n+
    54
    \n+
    55#undef readpassphrase
    \n+
    56char * tds_readpassphrase(const char *, char *, size_t, int);
    \n+
    57#define readpassphrase tds_readpassphrase
    \n+
    58
    \n+
    59#include <freetds/popvis.h>
    \n+
    60
    \n+
    61#endif /* !HAVE_READPASSPHRASE */
    \n+
    62
    \n+
    63#endif /* !FREETDS_READPASSPHRASE_H_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,1883 +7,77 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-charset_lookup.h\n- 1/* ANSI-C code produced by gperf version 3.1 */\n- 2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P -\n-H hash_charset -N charset_lookup -L ANSI-C charset_lookup.gperf */\n- 3/* Computed positions: -k'1,3-11,$' */\n+ * replacements\n+readpassphrase.h\n+ 1/* OPENBSD ORIGINAL: include/readpassphrase.h */\n+ 2\n+ 3/* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */\n 4\n- 5#if !((' ' == 32) && ('!' == 33) && ('\"' == 34) && ('#' == 35) \\\n- 6 && ('%' == 37) && ('&' == 38) && ('\\'' == 39) && ('(' == 40) \\\n- 7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \\\n- 8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \\\n- 9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \\\n- 10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \\\n- 11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \\\n- 12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \\\n- 13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \\\n- 14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \\\n- 15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \\\n- 16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \\\n- 17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \\\n- 18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \\\n- 19 && ('Z' == 90) && ('[' == 91) && ('\\\\' == 92) && (']' == 93) \\\n- 20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \\\n- 21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \\\n- 22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \\\n- 23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \\\n- 24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \\\n- 25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \\\n- 26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \\\n- 27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))\n- 28/* The character set is not based on ISO-646. */\n- 29#error \"gperf generated tables don't work with this execution character set.\n-Please report a bug to .\"\n- 30#endif\n+ 5/*\n+ 6 * Copyright (c) 2000 Todd C. Miller \n+ 7 * All rights reserved.\n+ 8 *\n+ 9 * Redistribution and use in source and binary forms, with or without\n+ 10 * modification, are permitted provided that the following conditions\n+ 11 * are met:\n+ 12 * 1. Redistributions of source code must retain the above copyright\n+ 13 * notice, this list of conditions and the following disclaimer.\n+ 14 * 2. Redistributions in binary form must reproduce the above copyright\n+ 15 * notice, this list of conditions and the following disclaimer in the\n+ 16 * documentation and/or other materials provided with the distribution.\n+ 17 * 3. The name of the author may not be used to endorse or promote products\n+ 18 * derived from this software without specific prior written permission.\n+ 19 *\n+ 20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED\n+WARRANTIES,\n+ 21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n+ 22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL\n+ 23 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n+ 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n+ 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n+PROFITS;\n+ 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n+ 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n+ 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n+ 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ 30 */\n 31\n- 32#line 3 \"charset_lookup.gperf\"\n- 33\n- 34static const struct charset_alias *charset_lookup(register const char *str,\n-register size_t len);\n- 35#line 2 \"charset_lookup.gperf\"\n-36struct charset_alias { short int alias_pos; short int canonic; };\n- 37\n- 38#define TOTAL_KEYWORDS 374\n- 39#define MIN_WORD_LENGTH 2\n- 40#define MAX_WORD_LENGTH 45\n- 41#define MIN_HASH_VALUE 15\n- 42#define MAX_HASH_VALUE 1079\n- 43/* maximum key range = 1065, duplicates = 0 */\n+ 32#ifndef FREETDS_READPASSPHRASE_H_\n+ 33#define FREETDS_READPASSPHRASE_H_\n+ 34\n+ 35#ifndef _freetds_config_h_\n+ 36#error should include config.h before\n+ 37#endif\n+ 38\n+ 39#ifdef HAVE_READPASSPHRASE\n+ 40\n+ 41# include \n+ 42\n+ 43#else /* !HAVE_READPASSPHRASE */\n 44\n- 45#ifdef __GNUC__\n- 46__inline\n- 47#else\n- 48#ifdef __cplusplus\n- 49inline\n- 50#endif\n- 51#endif\n- 52static unsigned int\n- 53hash_charset (register const char *str, register size_t len)\n- 54{\n- 55 static const unsigned short asso_values[] =\n- 56 {\n- 57 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 58 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 59 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 60 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 61 1080, 1080, 1080, 1080, 1080, 7, 132, 1080, 56, 6,\n- 62 47, 83, 35, 8, 18, 63, 7, 9, 363, 1080,\n- 63 1080, 1080, 1080, 1080, 1080, 7, 99, 128, 6, 22,\n- 64 141, 116, 95, 6, 34, 68, 7, 159, 6, 6,\n- 65 80, 1080, 26, 6, 115, 191, 39, 162, 231, 14,\n- 66 8, 1080, 1080, 1080, 1080, 37, 1080, 10, 16, 147,\n- 67 1080, 16, 8, 12, 13, 6, 1080, 6, 1080, 8,\n- 68 6, 6, 1080, 1080, 6, 7, 6, 19, 1080, 1080,\n- 69 1080, 6, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 70 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 71 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 72 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 73 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 74 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 75 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 76 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 77 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 78 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 79 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 80 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 81 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n- 82 1080, 1080, 1080, 1080, 1080, 1080\n- 83 };\n- 84 register unsigned int hval = len;\n- 85\n- 86 switch (hval)\n- 87 {\n- 88 default:\n- 89 hval += asso_values[(unsigned char)str[10]];\n- 90 /*FALLTHROUGH*/\n- 91 case 10:\n- 92 hval += asso_values[(unsigned char)str[9]];\n- 93 /*FALLTHROUGH*/\n- 94 case 9:\n- 95 hval += asso_values[(unsigned char)str[8]];\n- 96 /*FALLTHROUGH*/\n- 97 case 8:\n- 98 hval += asso_values[(unsigned char)str[7]];\n- 99 /*FALLTHROUGH*/\n- 100 case 7:\n- 101 hval += asso_values[(unsigned char)str[6]];\n- 102 /*FALLTHROUGH*/\n- 103 case 6:\n- 104 hval += asso_values[(unsigned char)str[5]];\n- 105 /*FALLTHROUGH*/\n- 106 case 5:\n- 107 hval += asso_values[(unsigned char)str[4]];\n- 108 /*FALLTHROUGH*/\n- 109 case 4:\n- 110 hval += asso_values[(unsigned char)str[3]];\n- 111 /*FALLTHROUGH*/\n- 112 case 3:\n- 113 hval += asso_values[(unsigned char)str[2]];\n- 114 /*FALLTHROUGH*/\n- 115 case 2:\n- 116 case 1:\n- 117 hval += asso_values[(unsigned char)str[0]];\n- 118 break;\n- 119 }\n- 120 return hval + asso_values[(unsigned char)str[len - 1]];\n- 121}\n- 122\n-123struct stringpool_t\n- 124 {\n- 125 char stringpool_str15[sizeof(\"L1\")];\n- 126 char stringpool_str16[sizeof(\"L8\")];\n- 127 char stringpool_str17[sizeof(\"L5\")];\n- 128 char stringpool_str27[sizeof(\"L6\")];\n- 129 char stringpool_str28[sizeof(\"SJIS\")];\n- 130 char stringpool_str30[sizeof(\"koi8\")];\n- 131 char stringpool_str31[sizeof(\"sjis\")];\n- 132 char stringpool_str35[sizeof(\"R8\")];\n- 133 char stringpool_str36[sizeof(\"iso81\")];\n- 134 char stringpool_str38[sizeof(\"iso88\")];\n- 135 char stringpool_str39[sizeof(\"iso15\")];\n- 136 char stringpool_str40[sizeof(\"iso85\")];\n- 137 char stringpool_str41[sizeof(\"thai8\")];\n- 138 char stringpool_str42[sizeof(\"iso89\")];\n- 139 char stringpool_str43[sizeof(\"roma8\")];\n- 140 char stringpool_str44[sizeof(\"L4\")];\n- 141 char stringpool_str45[sizeof(\"utf8\")];\n- 142 char stringpool_str46[sizeof(\"866\")];\n- 143 char stringpool_str47[sizeof(\"iso815\")];\n- 144 char stringpool_str48[sizeof(\"big5\")];\n- 145 char stringpool_str50[sizeof(\"roman8\")];\n- 146 char stringpool_str56[sizeof(\"L2\")];\n- 147 char stringpool_str57[sizeof(\"646\")];\n- 148 char stringpool_str60[sizeof(\"iso86\")];\n- 149 char stringpool_str63[sizeof(\"iso88591\")];\n- 150 char stringpool_str65[sizeof(\"iso88598\")];\n- 151 char stringpool_str66[sizeof(\"iso_1\")];\n- 152 char stringpool_str67[sizeof(\"iso88595\")];\n- 153 char stringpool_str69[sizeof(\"iso88599\")];\n- 154 char stringpool_str70[sizeof(\"greek8\")];\n- 155 char stringpool_str71[sizeof(\"ISO8859-1\")];\n- 156 char stringpool_str72[sizeof(\"L7\")];\n- 157 char stringpool_str73[sizeof(\"ISO8859-8\")];\n- 158 char stringpool_str74[sizeof(\"iso885915\")];\n- 159 char stringpool_str75[sizeof(\"ISO8859-5\")];\n- 160 char stringpool_str77[sizeof(\"ISO8859-9\")];\n- 161 char stringpool_str79[sizeof(\"ISO-8859-1\")];\n- 162 char stringpool_str81[sizeof(\"ISO-8859-8\")];\n- 163 char stringpool_str82[sizeof(\"ISO8859-15\")];\n- 164 char stringpool_str83[sizeof(\"ISO-8859-5\")];\n- 165 char stringpool_str85[sizeof(\"ISO-8859-9\")];\n- 166 char stringpool_str87[sizeof(\"iso88596\")];\n- 167 char stringpool_str89[sizeof(\"ISO-IR-58\")];\n- 168 char stringpool_str90[sizeof(\"ISO-8859-15\")];\n- 169 char stringpool_str91[sizeof(\"JAVA\")];\n- 170 char stringpool_str92[sizeof(\"L3\")];\n- 171 char stringpool_str93[sizeof(\"iso14\")];\n- 172 char stringpool_str94[sizeof(\"iso84\")];\n- 173 char stringpool_str95[sizeof(\"ISO8859-6\")];\n- 174 char stringpool_str100[sizeof(\"ISO-IR-159\")];\n- 175 char stringpool_str101[sizeof(\"ISO-IR-199\")];\n- 176 char stringpool_str102[sizeof(\"ISO-IR-6\")];\n- 177 char stringpool_str103[sizeof(\"ISO-8859-6\")];\n- 178 char stringpool_str104[sizeof(\"862\")];\n- 179 char stringpool_str105[sizeof(\"HZ\")];\n- 180 char stringpool_str107[sizeof(\"iso646\")];\n- 181 char stringpool_str108[sizeof(\"ISO-IR-165\")];\n- 182 char stringpool_str109[sizeof(\"ISO_8859-1\")];\n- 183 char stringpool_str110[sizeof(\"ISO-8859-16\")];\n- 184 char stringpool_str111[sizeof(\"ISO_8859-8\")];\n- 185 char stringpool_str113[sizeof(\"ISO_8859-5\")];\n- 186 char stringpool_str115[sizeof(\"ISO_8859-9\")];\n- 187 char stringpool_str116[sizeof(\"JP\")];\n- 188 char stringpool_str118[sizeof(\"iso82\")];\n- 189 char stringpool_str120[sizeof(\"ISO_8859-15\")];\n- 190 char stringpool_str121[sizeof(\"iso88594\")];\n- 191 char stringpool_str122[sizeof(\"850\")];\n- 192 char stringpool_str123[sizeof(\"ISO-IR-148\")];\n- 193 char stringpool_str124[sizeof(\"ISO_8859-15:1998\")];\n- 194 char stringpool_str127[sizeof(\"ISO-IR-149\")];\n- 195 char stringpool_str128[sizeof(\"ISO-IR-166\")];\n- 196 char stringpool_str129[sizeof(\"ISO8859-4\")];\n- 197 char stringpool_str133[sizeof(\"ISO_8859-6\")];\n- 198 char stringpool_str135[sizeof(\"iso10\")];\n- 199 char stringpool_str136[sizeof(\"CN\")];\n- 200 char stringpool_str137[sizeof(\"ISO-8859-4\")];\n- 201 char stringpool_str140[sizeof(\"ISO_8859-16\")];\n- 202 char stringpool_str141[sizeof(\"KOREAN\")];\n- 203 char stringpool_str142[sizeof(\"ISO-IR-101\")];\n- 204 char stringpool_str143[sizeof(\"ISO-IR-14\")];\n- 205 char stringpool_str144[sizeof(\"ISO-8859-14\")];\n- 206 char stringpool_str145[sizeof(\"iso88592\")];\n- 207 char stringpool_str146[sizeof(\"KOI8-R\")];\n- 208 char stringpool_str148[sizeof(\"ISO-IR-109\")];\n- 209 char stringpool_str149[sizeof(\"C99\")];\n- 210 char stringpool_str150[sizeof(\"iso87\")];\n- 211 char stringpool_str151[sizeof(\"ISO_8859-14:1998\")];\n- 212 char stringpool_str152[sizeof(\"LATIN1\")];\n- 213 char stringpool_str153[sizeof(\"ISO8859-2\")];\n- 214 char stringpool_str154[sizeof(\"LATIN8\")];\n- 215 char stringpool_str155[sizeof(\"ISO-IR-179\")];\n- 216 char stringpool_str156[sizeof(\"LATIN5\")];\n- 217 char stringpool_str157[sizeof(\"ISO-IR-126\")];\n- 218 char stringpool_str158[sizeof(\"ASCII\")];\n- 219 char stringpool_str161[sizeof(\"ISO-8859-2\")];\n- 220 char stringpool_str164[sizeof(\"CP819\")];\n- 221 char stringpool_str167[sizeof(\"ISO_8859-4\")];\n- 222 char stringpool_str170[sizeof(\"TCVN\")];\n- 223 char stringpool_str171[sizeof(\"ISO-IR-138\")];\n- 224 char stringpool_str173[sizeof(\"hp15CN\")];\n- 225 char stringpool_str174[sizeof(\"ISO_8859-14\")];\n- 226 char stringpool_str176[sizeof(\"LATIN6\")];\n- 227 char stringpool_str177[sizeof(\"iso88597\")];\n- 228 char stringpool_str178[sizeof(\"ISO8859-10\")];\n- 229 char stringpool_str179[sizeof(\"ISO-IR-144\")];\n- 230 char stringpool_str183[sizeof(\"ISO_8859-16:2000\")];\n- 231 char stringpool_str185[sizeof(\"ISO8859-7\")];\n- 232 char stringpool_str186[sizeof(\"ISO-8859-10\")];\n- 233 char stringpool_str189[sizeof(\"iso13\")];\n- 234 char stringpool_str190[sizeof(\"iso83\")];\n- 235 char stringpool_str191[sizeof(\"ISO_8859-2\")];\n- 236 char stringpool_str192[sizeof(\"ISO-IR-110\")];\n- 237 char stringpool_str193[sizeof(\"ISO-8859-7\")];\n- 238 char stringpool_str194[sizeof(\"CP866\")];\n- 239 char stringpool_str195[sizeof(\"CP949\")];\n- 240 char stringpool_str196[sizeof(\"tis620\")];\n- 241 char stringpool_str197[sizeof(\"VISCII\")];\n- 242 char stringpool_str198[sizeof(\"ISO-IR-226\")];\n- 243 char stringpool_str199[sizeof(\"US\")];\n- 244 char stringpool_str200[sizeof(\"ISO-IR-87\")];\n- 245 char stringpool_str201[sizeof(\"ISO-IR-57\")];\n- 246 char stringpool_str202[sizeof(\"IBM819\")];\n- 247 char stringpool_str203[sizeof(\"macthai\")];\n- 248 char stringpool_str204[sizeof(\"MS-ANSI\")];\n- 249 char stringpool_str205[sizeof(\"macturk\")];\n- 250 char stringpool_str207[sizeof(\"CP1251\")];\n- 251 char stringpool_str208[sizeof(\"ISO-IR-157\")];\n- 252 char stringpool_str209[sizeof(\"CP1258\")];\n- 253 char stringpool_str210[sizeof(\"LATIN4\")];\n- 254 char stringpool_str211[sizeof(\"CP1255\")];\n- 255 char stringpool_str212[sizeof(\"ISO_8859-10:1992\")];\n- 256 char stringpool_str213[sizeof(\"cp866\")];\n- 257 char stringpool_str214[sizeof(\"cp949\")];\n- 258 char stringpool_str216[sizeof(\"ISO_8859-10\")];\n- 259 char stringpool_str217[sizeof(\"iso88593\")];\n- 260 char stringpool_str218[sizeof(\"ROMAN8\")];\n- 261 char stringpool_str219[sizeof(\"CHINESE\")];\n- 262 char stringpool_str220[sizeof(\"JIS0208\")];\n- 263 char stringpool_str223[sizeof(\"ISO_8859-7\")];\n- 264 char stringpool_str225[sizeof(\"macgreek\")];\n- 265 char stringpool_str226[sizeof(\"cp1251\")];\n- 266 char stringpool_str227[sizeof(\"ascii_8\")];\n- 267 char stringpool_str228[sizeof(\"cp1258\")];\n- 268 char stringpool_str229[sizeof(\"ECMA-118\")];\n- 269 char stringpool_str230[sizeof(\"cp1255\")];\n- 270 char stringpool_str231[sizeof(\"CP1256\")];\n- 271 char stringpool_str232[sizeof(\"IBM866\")];\n- 272 char stringpool_str233[sizeof(\"ISO-8859-3\")];\n- 273 char stringpool_str234[sizeof(\"LATIN2\")];\n- 274 char stringpool_str235[sizeof(\"BIG5\")];\n- 275 char stringpool_str236[sizeof(\"MULELAO-1\")];\n- 276 char stringpool_str237[sizeof(\"MS-EE\")];\n- 277 char stringpool_str239[sizeof(\"ISO646-CN\")];\n- 278 char stringpool_str240[sizeof(\"ISO-8859-13\")];\n- 279 char stringpool_str242[sizeof(\"ISO-IR-100\")];\n- 280 char stringpool_str243[sizeof(\"BIG-5\")];\n- 281 char stringpool_str247[sizeof(\"ISO-IR-127\")];\n- 282 char stringpool_str248[sizeof(\"GREEK8\")];\n- 283 char stringpool_str250[sizeof(\"cp1256\")];\n- 284 char stringpool_str252[sizeof(\"CP862\")];\n- 285 char stringpool_str253[sizeof(\"CP1361\")];\n- 286 char stringpool_str255[sizeof(\"GBK\")];\n- 287 char stringpool_str258[sizeof(\"ELOT_928\")];\n- 288 char stringpool_str260[sizeof(\"CP850\")];\n- 289 char stringpool_str261[sizeof(\"CP936\")];\n- 290 char stringpool_str262[sizeof(\"CP950\")];\n- 291 char stringpool_str263[sizeof(\"ISO_8859-3\")];\n- 292 char stringpool_str265[sizeof(\"CP1254\")];\n- 293 char stringpool_str266[sizeof(\"LATIN7\")];\n- 294 char stringpool_str270[sizeof(\"ISO_8859-13\")];\n- 295 char stringpool_str271[sizeof(\"cp862\")];\n- 296 char stringpool_str273[sizeof(\"CP874\")];\n- 297 char stringpool_str274[sizeof(\"CSKOI8R\")];\n- 298 char stringpool_str275[sizeof(\"EUCKR\")];\n- 299 char stringpool_str279[sizeof(\"cp850\")];\n- 300 char stringpool_str280[sizeof(\"cp936\")];\n- 301 char stringpool_str281[sizeof(\"cp950\")];\n- 302 char stringpool_str283[sizeof(\"EUC-KR\")];\n- 303 char stringpool_str284[sizeof(\"cp1254\")];\n- 304 char stringpool_str285[sizeof(\"ECMA-114\")];\n- 305 char stringpool_str288[sizeof(\"eucKR\")];\n- 306 char stringpool_str289[sizeof(\"CP1252\")];\n- 307 char stringpool_str290[sizeof(\"IBM862\")];\n- 308 char stringpool_str291[sizeof(\"CSISO159JISX02121990\")];\n- 309 char stringpool_str292[sizeof(\"cp874\")];\n- 310 char stringpool_str293[sizeof(\"ISO646-JP\")];\n- 311 char stringpool_str294[sizeof(\"CSASCII\")];\n- 312 char stringpool_str295[sizeof(\"EUCCN\")];\n- 313 char stringpool_str297[sizeof(\"UCS-4LE\")];\n- 314 char stringpool_str298[sizeof(\"IBM850\")];\n- 315 char stringpool_str301[sizeof(\"GREEK\")];\n- 316 char stringpool_str302[sizeof(\"ISO646-US\")];\n- 317 char stringpool_str303[sizeof(\"EUC-CN\")];\n- 318 char stringpool_str304[sizeof(\"TIS620\")];\n- 319 char stringpool_str305[sizeof(\"mac\")];\n- 320 char stringpool_str306[sizeof(\"LATIN3\")];\n- 321 char stringpool_str307[sizeof(\"CP1250\")];\n- 322 char stringpool_str308[sizeof(\"cp1252\")];\n- 323 char stringpool_str309[sizeof(\"UCS-2LE\")];\n- 324 char stringpool_str310[sizeof(\"CSISOLATIN1\")];\n- 325 char stringpool_str312[sizeof(\"TIS-620\")];\n- 326 char stringpool_str313[sizeof(\"TCVN5712-1\")];\n- 327 char stringpool_str314[sizeof(\"CSISOLATIN5\")];\n- 328 char stringpool_str318[sizeof(\"GB_1988-80\")];\n- 329 char stringpool_str319[sizeof(\"CP932\")];\n- 330 char stringpool_str320[sizeof(\"ASMO-708\")];\n- 331 char stringpool_str321[sizeof(\"CP1257\")];\n- 332 char stringpool_str324[sizeof(\"KOI8-T\")];\n- 333 char stringpool_str326[sizeof(\"cp1250\")];\n- 334 char stringpool_str329[sizeof(\"HP-ROMAN8\")];\n- 335 char stringpool_str331[sizeof(\"MS_KANJI\")];\n- 336 char stringpool_str333[sizeof(\"CSVISCII\")];\n- 337 char stringpool_str334[sizeof(\"CSISOLATIN6\")];\n- 338 char stringpool_str335[sizeof(\"KSC_5601\")];\n- 339 char stringpool_str336[sizeof(\"SHIFT-JIS\")];\n- 340 char stringpool_str337[sizeof(\"ISO-IR-203\")];\n- 341 char stringpool_str338[sizeof(\"cp932\")];\n- 342 char stringpool_str339[sizeof(\"JOHAB\")];\n- 343 char stringpool_str340[sizeof(\"cp1257\")];\n- 344 char stringpool_str342[sizeof(\"ARMSCII-8\")];\n- 345 char stringpool_str345[sizeof(\"ISO_646.IRV:1991\")];\n- 346 char stringpool_str347[sizeof(\"TCVN-5712\")];\n- 347 char stringpool_str349[sizeof(\"EUCJP\")];\n- 348 char stringpool_str350[sizeof(\"UTF8\")];\n- 349 char stringpool_str351[sizeof(\"X0201\")];\n- 350 char stringpool_str352[sizeof(\"GB2312\")];\n- 351 char stringpool_str353[sizeof(\"X0208\")];\n- 352 char stringpool_str354[sizeof(\"ISO-2022-KR\")];\n- 353 char stringpool_str355[sizeof(\"MS-CYRL\")];\n- 354 char stringpool_str356[sizeof(\"ISO-2022-JP-1\")];\n- 355 char stringpool_str357[sizeof(\"EUC-JP\")];\n- 356 char stringpool_str358[sizeof(\"UTF-8\")];\n- 357 char stringpool_str359[sizeof(\"VISCII1.1-1\")];\n- 358 char stringpool_str360[sizeof(\"CP367\")];\n- 359 char stringpool_str361[sizeof(\"CP1253\")];\n- 360 char stringpool_str362[sizeof(\"eucJP\")];\n- 361 char stringpool_str364[sizeof(\"mac_cyr\")];\n- 362 char stringpool_str365[sizeof(\"US-ASCII\")];\n- 363 char stringpool_str366[sizeof(\"SHIFT_JIS\")];\n- 364 char stringpool_str368[sizeof(\"CSISOLATIN4\")];\n- 365 char stringpool_str369[sizeof(\"TIS620-0\")];\n- 366 char stringpool_str371[sizeof(\"CSBIG5\")];\n- 367 char stringpool_str374[sizeof(\"ISO-2022-CN\")];\n- 368 char stringpool_str377[sizeof(\"CP437\")];\n- 369 char stringpool_str379[sizeof(\"CN-BIG5\")];\n- 370 char stringpool_str380[sizeof(\"cp1253\")];\n- 371 char stringpool_str381[sizeof(\"ARABIC\")];\n- 372 char stringpool_str383[sizeof(\"X0212\")];\n- 373 char stringpool_str384[sizeof(\"CSISO14JISC6220RO\")];\n- 374 char stringpool_str387[sizeof(\"GB18030\")];\n- 375 char stringpool_str389[sizeof(\"UCS-4BE\")];\n- 376 char stringpool_str392[sizeof(\"CSISOLATIN2\")];\n- 377 char stringpool_str393[sizeof(\"GEORGIAN-PS\")];\n- 378 char stringpool_str394[sizeof(\"KS_C_5601-1989\")];\n- 379 char stringpool_str395[sizeof(\"CP1133\")];\n- 380 char stringpool_str396[sizeof(\"cp437\")];\n- 381 char stringpool_str397[sizeof(\"ISO-2022-JP-2\")];\n- 382 char stringpool_str398[sizeof(\"IBM367\")];\n- 383 char stringpool_str401[sizeof(\"UCS-2BE\")];\n- 384 char stringpool_str402[sizeof(\"UNICODE-1-1\")];\n- 385 char stringpool_str409[sizeof(\"JIS_C6220-1969-RO\")];\n- 386 char stringpool_str411[sizeof(\"MS-ARAB\")];\n- 387 char stringpool_str415[sizeof(\"IBM437\")];\n- 388 char stringpool_str418[sizeof(\"MAC\")];\n- 389 char stringpool_str422[sizeof(\"UTF-16LE\")];\n- 390 char stringpool_str428[sizeof(\"ISO-2022-JP\")];\n- 391 char stringpool_str429[sizeof(\"CN-GB-ISOIR165\")];\n- 392 char stringpool_str434[sizeof(\"WINDOWS-1251\")];\n- 393 char stringpool_str435[sizeof(\"WINDOWS-1258\")];\n- 394 char stringpool_str436[sizeof(\"WINDOWS-1255\")];\n- 395 char stringpool_str438[sizeof(\"CSISOLATINARABIC\")];\n- 396 char stringpool_str441[sizeof(\"MS-HEBR\")];\n- 397 char stringpool_str444[sizeof(\"CYRILLIC\")];\n- 398 char stringpool_str445[sizeof(\"JIS_C6226-1983\")];\n- 399 char stringpool_str446[sizeof(\"WINDOWS-1256\")];\n- 400 char stringpool_str448[sizeof(\"KS_C_5601-1987\")];\n- 401 char stringpool_str450[sizeof(\"UHC\")];\n- 402 char stringpool_str452[sizeof(\"BIGFIVE\")];\n- 403 char stringpool_str454[sizeof(\"CN-GB\")];\n- 404 char stringpool_str455[sizeof(\"GEORGIAN-ACADEMY\")];\n- 405 char stringpool_str460[sizeof(\"BIG-FIVE\")];\n- 406 char stringpool_str461[sizeof(\"CSIBM866\")];\n- 407 char stringpool_str462[sizeof(\"UTF7\")];\n- 408 char stringpool_str463[sizeof(\"WINDOWS-1254\")];\n- 409 char stringpool_str464[sizeof(\"CSISOLATIN3\")];\n- 410 char stringpool_str465[sizeof(\"UNICODE-1-1-UTF-7\")];\n- 411 char stringpool_str467[sizeof(\"CSISO57GB1988\")];\n- 412 char stringpool_str470[sizeof(\"UTF-7\")];\n- 413 char stringpool_str472[sizeof(\"GB_2312-80\")];\n- 414 char stringpool_str474[sizeof(\"CSISO2022KR\")];\n- 415 char stringpool_str475[sizeof(\"WINDOWS-1252\")];\n- 416 char stringpool_str476[sizeof(\"KOI8-U\")];\n- 417 char stringpool_str479[sizeof(\"ISO_8859-8:1988\")];\n- 418 char stringpool_str480[sizeof(\"ISO_8859-5:1988\")];\n- 419 char stringpool_str483[sizeof(\"ISO_8859-9:1989\")];\n- 420 char stringpool_str484[sizeof(\"WINDOWS-1250\")];\n- 421 char stringpool_str485[sizeof(\"MACICELAND\")];\n- 422 char stringpool_str486[sizeof(\"CSISOLATINGREEK\")];\n- 423 char stringpool_str487[sizeof(\"ISO-2022-CN-EXT\")];\n- 424 char stringpool_str488[sizeof(\"JIS_X0201\")];\n- 425 char stringpool_str489[sizeof(\"JISX0201-1976\")];\n- 426 char stringpool_str490[sizeof(\"JIS_X0208\")];\n- 427 char stringpool_str491[sizeof(\"WINDOWS-1257\")];\n- 428 char stringpool_str494[sizeof(\"CSISO2022CN\")];\n- 429 char stringpool_str496[sizeof(\"MS-GREEK\")];\n- 430 char stringpool_str500[sizeof\n-(\"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\")];\n- 431 char stringpool_str503[sizeof(\"KOI8-RU\")];\n- 432 char stringpool_str504[sizeof(\"TIS620.2529-1\")];\n- 433 char stringpool_str505[sizeof(\"MACROMAN\")];\n- 434 char stringpool_str506[sizeof(\"WINDOWS-874\")];\n- 435 char stringpool_str507[sizeof(\"ISO_8859-4:1988\")];\n- 436 char stringpool_str509[sizeof(\"CSKSC56011987\")];\n- 437 char stringpool_str511[sizeof(\"WINDOWS-1253\")];\n- 438 char stringpool_str514[sizeof(\"UTF-16BE\")];\n- 439 char stringpool_str515[sizeof(\"CSISO87JISX0208\")];\n- 440 char stringpool_str516[sizeof(\"CSISO2022JP2\")];\n- 441 char stringpool_str520[sizeof(\"JIS_X0212\")];\n- 442 char stringpool_str521[sizeof(\"MACROMANIA\")];\n- 443 char stringpool_str522[sizeof(\"CSUNICODE11\")];\n- 444 char stringpool_str523[sizeof(\"MACTHAI\")];\n- 445 char stringpool_str528[sizeof(\"UTF-32LE\")];\n- 446 char stringpool_str531[sizeof(\"CSHPROMAN8\")];\n- 447 char stringpool_str534[sizeof(\"ISO_8859-1:1987\")];\n- 448 char stringpool_str541[sizeof(\"BIG5HKSCS\")];\n- 449 char stringpool_str546[sizeof(\"ISO_8859-6:1987\")];\n- 450 char stringpool_str547[sizeof(\"JIS_X0212-1990\")];\n- 451 char stringpool_str548[sizeof(\"CSISO2022JP\")];\n- 452 char stringpool_str549[sizeof(\"BIG5-HKSCS\")];\n- 453 char stringpool_str553[sizeof(\"CSSHIFTJIS\")];\n- 454 char stringpool_str555[sizeof(\"ISO_8859-3:1988\")];\n- 455 char stringpool_str557[sizeof(\"JIS_X0208-1990\")];\n- 456 char stringpool_str560[sizeof(\"CSISOLATINHEBREW\")];\n- 457 char stringpool_str561[sizeof(\"CSISOLATINCYRILLIC\")];\n- 458 char stringpool_str563[sizeof(\"ISO-CELTIC\")];\n- 459 char stringpool_str564[sizeof(\"HZ-GB-2312\")];\n- 460 char stringpool_str571[sizeof(\"ANSI_X3.4-1968\")];\n- 461 char stringpool_str572[sizeof(\"HEBREW\")];\n- 462 char stringpool_str575[sizeof(\"ISO_8859-2:1987\")];\n- 463 char stringpool_str577[sizeof(\"CSISO58GB231280\")];\n- 464 char stringpool_str581[sizeof(\"CSGB2312\")];\n- 465 char stringpool_str582[sizeof(\"ANSI_X3.4-1986\")];\n- 466 char stringpool_str583[sizeof(\"CSUNICODE11UTF7\")];\n- 467 char stringpool_str584[sizeof(\"JIS_X0208-1983\")];\n- 468 char stringpool_str591[sizeof(\"ISO_8859-7:1987\")];\n- 469 char stringpool_str594[sizeof(\"EUCTW\")];\n- 470 char stringpool_str596[sizeof(\"CSEUCKR\")];\n- 471 char stringpool_str602[sizeof(\"EUC-TW\")];\n- 472 char stringpool_str605[sizeof(\"MACCROATIAN\")];\n- 473 char stringpool_str607[sizeof(\"eucTW\")];\n- 474 char stringpool_str614[sizeof(\"TIS620.2533-1\")];\n- 475 char stringpool_str617[sizeof(\"MACGREEK\")];\n- 476 char stringpool_str620[sizeof(\"UTF-32BE\")];\n- 477 char stringpool_str625[sizeof(\"MACINTOSH\")];\n- 478 char stringpool_str637[sizeof(\"UNICODELITTLE\")];\n- 479 char stringpool_str641[sizeof(\"MS-TURK\")];\n- 480 char stringpool_str645[sizeof(\"MACUKRAINE\")];\n- 481 char stringpool_str651[sizeof(\"IBM-CP1133\")];\n- 482 char stringpool_str658[sizeof(\"MACCENTRALEUROPE\")];\n- 483 char stringpool_str663[sizeof(\"NEXTSTEP\")];\n- 484 char stringpool_str664[sizeof(\"TIS620.2533-0\")];\n- 485 char stringpool_str674[sizeof(\"JIS_X0212.1990-0\")];\n- 486 char stringpool_str697[sizeof(\"MACARABIC\")];\n- 487 char stringpool_str706[sizeof(\"UNICODEBIG\")];\n- 488 char stringpool_str723[sizeof(\"CSPC862LATINHEBREW\")];\n- 489 char stringpool_str748[sizeof(\"MACCYRILLIC\")];\n- 490 char stringpool_str756[sizeof(\"WINBALTRIM\")];\n- 491 char stringpool_str758[sizeof(\"TCVN5712-1:1993\")];\n- 492 char stringpool_str762[sizeof(\"CSMACINTOSH\")];\n- 493 char stringpool_str788[sizeof(\"CSHALFWIDTHKATAKANA\")];\n- 494 char stringpool_str884[sizeof(\"MACHEBREW\")];\n- 495 char stringpool_str899[sizeof(\"MACTURKISH\")];\n- 496 char stringpool_str905[sizeof(\"CSPC850MULTILINGUAL\")];\n- 497 char stringpool_str915[sizeof(\"CSEUCTW\")];\n- 498 char stringpool_str1079[sizeof(\"CSEUCPKDFMTJAPANESE\")];\n- 499 };\n- 500static const struct stringpool_t stringpool_contents =\n- 501 {\n- 502 \"L1\",\n- 503 \"L8\",\n- 504 \"L5\",\n- 505 \"L6\",\n- 506 \"SJIS\",\n- 507 \"koi8\",\n- 508 \"sjis\",\n- 509 \"R8\",\n- 510 \"iso81\",\n- 511 \"iso88\",\n- 512 \"iso15\",\n- 513 \"iso85\",\n- 514 \"thai8\",\n- 515 \"iso89\",\n- 516 \"roma8\",\n- 517 \"L4\",\n- 518 \"utf8\",\n- 519 \"866\",\n- 520 \"iso815\",\n- 521 \"big5\",\n- 522 \"roman8\",\n- 523 \"L2\",\n- 524 \"646\",\n- 525 \"iso86\",\n- 526 \"iso88591\",\n- 527 \"iso88598\",\n- 528 \"iso_1\",\n- 529 \"iso88595\",\n- 530 \"iso88599\",\n- 531 \"greek8\",\n- 532 \"ISO8859-1\",\n- 533 \"L7\",\n- 534 \"ISO8859-8\",\n- 535 \"iso885915\",\n- 536 \"ISO8859-5\",\n- 537 \"ISO8859-9\",\n- 538 \"ISO-8859-1\",\n- 539 \"ISO-8859-8\",\n- 540 \"ISO8859-15\",\n- 541 \"ISO-8859-5\",\n- 542 \"ISO-8859-9\",\n- 543 \"iso88596\",\n- 544 \"ISO-IR-58\",\n- 545 \"ISO-8859-15\",\n- 546 \"JAVA\",\n- 547 \"L3\",\n- 548 \"iso14\",\n- 549 \"iso84\",\n- 550 \"ISO8859-6\",\n- 551 \"ISO-IR-159\",\n- 552 \"ISO-IR-199\",\n- 553 \"ISO-IR-6\",\n- 554 \"ISO-8859-6\",\n- 555 \"862\",\n- 556 \"HZ\",\n- 557 \"iso646\",\n- 558 \"ISO-IR-165\",\n- 559 \"ISO_8859-1\",\n- 560 \"ISO-8859-16\",\n- 561 \"ISO_8859-8\",\n- 562 \"ISO_8859-5\",\n- 563 \"ISO_8859-9\",\n- 564 \"JP\",\n- 565 \"iso82\",\n- 566 \"ISO_8859-15\",\n- 567 \"iso88594\",\n- 568 \"850\",\n- 569 \"ISO-IR-148\",\n- 570 \"ISO_8859-15:1998\",\n- 571 \"ISO-IR-149\",\n- 572 \"ISO-IR-166\",\n- 573 \"ISO8859-4\",\n- 574 \"ISO_8859-6\",\n- 575 \"iso10\",\n- 576 \"CN\",\n- 577 \"ISO-8859-4\",\n- 578 \"ISO_8859-16\",\n- 579 \"KOREAN\",\n- 580 \"ISO-IR-101\",\n- 581 \"ISO-IR-14\",\n- 582 \"ISO-8859-14\",\n- 583 \"iso88592\",\n- 584 \"KOI8-R\",\n- 585 \"ISO-IR-109\",\n- 586 \"C99\",\n- 587 \"iso87\",\n- 588 \"ISO_8859-14:1998\",\n- 589 \"LATIN1\",\n- 590 \"ISO8859-2\",\n- 591 \"LATIN8\",\n- 592 \"ISO-IR-179\",\n- 593 \"LATIN5\",\n- 594 \"ISO-IR-126\",\n- 595 \"ASCII\",\n- 596 \"ISO-8859-2\",\n- 597 \"CP819\",\n- 598 \"ISO_8859-4\",\n- 599 \"TCVN\",\n- 600 \"ISO-IR-138\",\n- 601 \"hp15CN\",\n- 602 \"ISO_8859-14\",\n- 603 \"LATIN6\",\n- 604 \"iso88597\",\n- 605 \"ISO8859-10\",\n- 606 \"ISO-IR-144\",\n- 607 \"ISO_8859-16:2000\",\n- 608 \"ISO8859-7\",\n- 609 \"ISO-8859-10\",\n- 610 \"iso13\",\n- 611 \"iso83\",\n- 612 \"ISO_8859-2\",\n- 613 \"ISO-IR-110\",\n- 614 \"ISO-8859-7\",\n- 615 \"CP866\",\n- 616 \"CP949\",\n- 617 \"tis620\",\n- 618 \"VISCII\",\n- 619 \"ISO-IR-226\",\n- 620 \"US\",\n- 621 \"ISO-IR-87\",\n- 622 \"ISO-IR-57\",\n- 623 \"IBM819\",\n- 624 \"macthai\",\n- 625 \"MS-ANSI\",\n- 626 \"macturk\",\n- 627 \"CP1251\",\n- 628 \"ISO-IR-157\",\n- 629 \"CP1258\",\n- 630 \"LATIN4\",\n- 631 \"CP1255\",\n- 632 \"ISO_8859-10:1992\",\n- 633 \"cp866\",\n- 634 \"cp949\",\n- 635 \"ISO_8859-10\",\n- 636 \"iso88593\",\n- 637 \"ROMAN8\",\n- 638 \"CHINESE\",\n- 639 \"JIS0208\",\n- 640 \"ISO_8859-7\",\n- 641 \"macgreek\",\n- 642 \"cp1251\",\n- 643 \"ascii_8\",\n- 644 \"cp1258\",\n- 645 \"ECMA-118\",\n- 646 \"cp1255\",\n- 647 \"CP1256\",\n- 648 \"IBM866\",\n- 649 \"ISO-8859-3\",\n- 650 \"LATIN2\",\n- 651 \"BIG5\",\n- 652 \"MULELAO-1\",\n- 653 \"MS-EE\",\n- 654 \"ISO646-CN\",\n- 655 \"ISO-8859-13\",\n- 656 \"ISO-IR-100\",\n- 657 \"BIG-5\",\n- 658 \"ISO-IR-127\",\n- 659 \"GREEK8\",\n- 660 \"cp1256\",\n- 661 \"CP862\",\n- 662 \"CP1361\",\n- 663 \"GBK\",\n- 664 \"ELOT_928\",\n- 665 \"CP850\",\n- 666 \"CP936\",\n- 667 \"CP950\",\n- 668 \"ISO_8859-3\",\n- 669 \"CP1254\",\n- 670 \"LATIN7\",\n- 671 \"ISO_8859-13\",\n- 672 \"cp862\",\n- 673 \"CP874\",\n- 674 \"CSKOI8R\",\n- 675 \"EUCKR\",\n- 676 \"cp850\",\n- 677 \"cp936\",\n- 678 \"cp950\",\n- 679 \"EUC-KR\",\n- 680 \"cp1254\",\n- 681 \"ECMA-114\",\n- 682 \"eucKR\",\n- 683 \"CP1252\",\n- 684 \"IBM862\",\n- 685 \"CSISO159JISX02121990\",\n- 686 \"cp874\",\n- 687 \"ISO646-JP\",\n- 688 \"CSASCII\",\n- 689 \"EUCCN\",\n- 690 \"UCS-4LE\",\n- 691 \"IBM850\",\n- 692 \"GREEK\",\n- 693 \"ISO646-US\",\n- 694 \"EUC-CN\",\n- 695 \"TIS620\",\n- 696 \"mac\",\n- 697 \"LATIN3\",\n- 698 \"CP1250\",\n- 699 \"cp1252\",\n- 700 \"UCS-2LE\",\n- 701 \"CSISOLATIN1\",\n- 702 \"TIS-620\",\n- 703 \"TCVN5712-1\",\n- 704 \"CSISOLATIN5\",\n- 705 \"GB_1988-80\",\n- 706 \"CP932\",\n- 707 \"ASMO-708\",\n- 708 \"CP1257\",\n- 709 \"KOI8-T\",\n- 710 \"cp1250\",\n- 711 \"HP-ROMAN8\",\n- 712 \"MS_KANJI\",\n- 713 \"CSVISCII\",\n- 714 \"CSISOLATIN6\",\n- 715 \"KSC_5601\",\n- 716 \"SHIFT-JIS\",\n- 717 \"ISO-IR-203\",\n- 718 \"cp932\",\n- 719 \"JOHAB\",\n- 720 \"cp1257\",\n- 721 \"ARMSCII-8\",\n- 722 \"ISO_646.IRV:1991\",\n- 723 \"TCVN-5712\",\n- 724 \"EUCJP\",\n- 725 \"UTF8\",\n- 726 \"X0201\",\n- 727 \"GB2312\",\n- 728 \"X0208\",\n- 729 \"ISO-2022-KR\",\n- 730 \"MS-CYRL\",\n- 731 \"ISO-2022-JP-1\",\n- 732 \"EUC-JP\",\n- 733 \"UTF-8\",\n- 734 \"VISCII1.1-1\",\n- 735 \"CP367\",\n- 736 \"CP1253\",\n- 737 \"eucJP\",\n- 738 \"mac_cyr\",\n- 739 \"US-ASCII\",\n- 740 \"SHIFT_JIS\",\n- 741 \"CSISOLATIN4\",\n- 742 \"TIS620-0\",\n- 743 \"CSBIG5\",\n- 744 \"ISO-2022-CN\",\n- 745 \"CP437\",\n- 746 \"CN-BIG5\",\n- 747 \"cp1253\",\n- 748 \"ARABIC\",\n- 749 \"X0212\",\n- 750 \"CSISO14JISC6220RO\",\n- 751 \"GB18030\",\n- 752 \"UCS-4BE\",\n- 753 \"CSISOLATIN2\",\n- 754 \"GEORGIAN-PS\",\n- 755 \"KS_C_5601-1989\",\n- 756 \"CP1133\",\n- 757 \"cp437\",\n- 758 \"ISO-2022-JP-2\",\n- 759 \"IBM367\",\n- 760 \"UCS-2BE\",\n- 761 \"UNICODE-1-1\",\n- 762 \"JIS_C6220-1969-RO\",\n- 763 \"MS-ARAB\",\n- 764 \"IBM437\",\n- 765 \"MAC\",\n- 766 \"UTF-16LE\",\n- 767 \"ISO-2022-JP\",\n- 768 \"CN-GB-ISOIR165\",\n- 769 \"WINDOWS-1251\",\n- 770 \"WINDOWS-1258\",\n- 771 \"WINDOWS-1255\",\n- 772 \"CSISOLATINARABIC\",\n- 773 \"MS-HEBR\",\n- 774 \"CYRILLIC\",\n- 775 \"JIS_C6226-1983\",\n- 776 \"WINDOWS-1256\",\n- 777 \"KS_C_5601-1987\",\n- 778 \"UHC\",\n- 779 \"BIGFIVE\",\n- 780 \"CN-GB\",\n- 781 \"GEORGIAN-ACADEMY\",\n- 782 \"BIG-FIVE\",\n- 783 \"CSIBM866\",\n- 784 \"UTF7\",\n- 785 \"WINDOWS-1254\",\n- 786 \"CSISOLATIN3\",\n- 787 \"UNICODE-1-1-UTF-7\",\n- 788 \"CSISO57GB1988\",\n- 789 \"UTF-7\",\n- 790 \"GB_2312-80\",\n- 791 \"CSISO2022KR\",\n- 792 \"WINDOWS-1252\",\n- 793 \"KOI8-U\",\n- 794 \"ISO_8859-8:1988\",\n- 795 \"ISO_8859-5:1988\",\n- 796 \"ISO_8859-9:1989\",\n- 797 \"WINDOWS-1250\",\n- 798 \"MACICELAND\",\n- 799 \"CSISOLATINGREEK\",\n- 800 \"ISO-2022-CN-EXT\",\n- 801 \"JIS_X0201\",\n- 802 \"JISX0201-1976\",\n- 803 \"JIS_X0208\",\n- 804 \"WINDOWS-1257\",\n- 805 \"CSISO2022CN\",\n- 806 \"MS-GREEK\",\n- 807 \"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\",\n- 808 \"KOI8-RU\",\n- 809 \"TIS620.2529-1\",\n- 810 \"MACROMAN\",\n- 811 \"WINDOWS-874\",\n- 812 \"ISO_8859-4:1988\",\n- 813 \"CSKSC56011987\",\n- 814 \"WINDOWS-1253\",\n- 815 \"UTF-16BE\",\n- 816 \"CSISO87JISX0208\",\n- 817 \"CSISO2022JP2\",\n- 818 \"JIS_X0212\",\n- 819 \"MACROMANIA\",\n- 820 \"CSUNICODE11\",\n- 821 \"MACTHAI\",\n- 822 \"UTF-32LE\",\n- 823 \"CSHPROMAN8\",\n- 824 \"ISO_8859-1:1987\",\n- 825 \"BIG5HKSCS\",\n- 826 \"ISO_8859-6:1987\",\n- 827 \"JIS_X0212-1990\",\n- 828 \"CSISO2022JP\",\n- 829 \"BIG5-HKSCS\",\n- 830 \"CSSHIFTJIS\",\n- 831 \"ISO_8859-3:1988\",\n- 832 \"JIS_X0208-1990\",\n- 833 \"CSISOLATINHEBREW\",\n- 834 \"CSISOLATINCYRILLIC\",\n- 835 \"ISO-CELTIC\",\n- 836 \"HZ-GB-2312\",\n- 837 \"ANSI_X3.4-1968\",\n- 838 \"HEBREW\",\n- 839 \"ISO_8859-2:1987\",\n- 840 \"CSISO58GB231280\",\n- 841 \"CSGB2312\",\n- 842 \"ANSI_X3.4-1986\",\n- 843 \"CSUNICODE11UTF7\",\n- 844 \"JIS_X0208-1983\",\n- 845 \"ISO_8859-7:1987\",\n- 846 \"EUCTW\",\n- 847 \"CSEUCKR\",\n- 848 \"EUC-TW\",\n- 849 \"MACCROATIAN\",\n- 850 \"eucTW\",\n- 851 \"TIS620.2533-1\",\n- 852 \"MACGREEK\",\n- 853 \"UTF-32BE\",\n- 854 \"MACINTOSH\",\n- 855 \"UNICODELITTLE\",\n- 856 \"MS-TURK\",\n- 857 \"MACUKRAINE\",\n- 858 \"IBM-CP1133\",\n- 859 \"MACCENTRALEUROPE\",\n- 860 \"NEXTSTEP\",\n- 861 \"TIS620.2533-0\",\n- 862 \"JIS_X0212.1990-0\",\n- 863 \"MACARABIC\",\n- 864 \"UNICODEBIG\",\n- 865 \"CSPC862LATINHEBREW\",\n- 866 \"MACCYRILLIC\",\n- 867 \"WINBALTRIM\",\n- 868 \"TCVN5712-1:1993\",\n- 869 \"CSMACINTOSH\",\n- 870 \"CSHALFWIDTHKATAKANA\",\n- 871 \"MACHEBREW\",\n- 872 \"MACTURKISH\",\n- 873 \"CSPC850MULTILINGUAL\",\n- 874 \"CSEUCTW\",\n- 875 \"CSEUCPKDFMTJAPANESE\"\n- 876 };\n- 877#define stringpool ((const char *) &stringpool_contents)\n- 878const struct charset_alias *\n- 879charset_lookup (register const char *str, register size_t len)\n- 880{\n- 881 static const struct charset_alias wordlist[] =\n- 882 {\n- 883 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 884 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 885 {-1,-1}, {-1,-1}, {-1,-1},\n- 886#line 228 \"charset_lookup.gperf\"\n- 887 {(int)offsetof(struct stringpool_t, stringpool_str15), 0},\n- 888#line 235 \"charset_lookup.gperf\"\n- 889 {(int)offsetof(struct stringpool_t, stringpool_str16), 47},\n- 890#line 232 \"charset_lookup.gperf\"\n- 891 {(int)offsetof(struct stringpool_t, stringpool_str17), 57},\n- 892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 893 {-1,-1}, {-1,-1}, {-1,-1},\n- 894#line 233 \"charset_lookup.gperf\"\n- 895 {(int)offsetof(struct stringpool_t, stringpool_str27), 45},\n- 896#line 272 \"charset_lookup.gperf\"\n- 897 {(int)offsetof(struct stringpool_t, stringpool_str28), 84},\n- 898 {-1,-1},\n- 899#line 375 \"charset_lookup.gperf\"\n- 900 {(int)offsetof(struct stringpool_t, stringpool_str30), 65},\n- 901#line 359 \"charset_lookup.gperf\"\n- 902 {(int)offsetof(struct stringpool_t, stringpool_str31), 84},\n- 903 {-1,-1}, {-1,-1}, {-1,-1},\n- 904#line 268 \"charset_lookup.gperf\"\n- 905 {(int)offsetof(struct stringpool_t, stringpool_str35), 83},\n- 906#line 337 \"charset_lookup.gperf\"\n- 907 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},\n- 908 {-1,-1},\n- 909#line 345 \"charset_lookup.gperf\"\n- 910 {(int)offsetof(struct stringpool_t, stringpool_str38), 56},\n- 911#line 372 \"charset_lookup.gperf\"\n- 912 {(int)offsetof(struct stringpool_t, stringpool_str39), 48},\n- 913#line 342 \"charset_lookup.gperf\"\n- 914 {(int)offsetof(struct stringpool_t, stringpool_str40), 53},\n- 915#line 360 \"charset_lookup.gperf\"\n- 916 {(int)offsetof(struct stringpool_t, stringpool_str41), 61},\n- 917#line 356 \"charset_lookup.gperf\"\n- 918 {(int)offsetof(struct stringpool_t, stringpool_str42), 57},\n- 919#line 357 \"charset_lookup.gperf\"\n- 920 {(int)offsetof(struct stringpool_t, stringpool_str43), 83},\n- 921#line 231 \"charset_lookup.gperf\"\n- 922 {(int)offsetof(struct stringpool_t, stringpool_str44), 52},\n- 923#line 362 \"charset_lookup.gperf\"\n- 924 {(int)offsetof(struct stringpool_t, stringpool_str45), 1},\n- 925#line 10 \"charset_lookup.gperf\"\n- 926 {(int)offsetof(struct stringpool_t, stringpool_str46), 26},\n- 927#line 338 \"charset_lookup.gperf\"\n- 928 {(int)offsetof(struct stringpool_t, stringpool_str47), 48},\n- 929#line 318 \"charset_lookup.gperf\"\n- 930 {(int)offsetof(struct stringpool_t, stringpool_str48), 5},\n- 931 {-1,-1},\n- 932#line 358 \"charset_lookup.gperf\"\n- 933 {(int)offsetof(struct stringpool_t, stringpool_str50), 83},\n- 934 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 935#line 229 \"charset_lookup.gperf\"\n- 936 {(int)offsetof(struct stringpool_t, stringpool_str56), 50},\n- 937#line 7 \"charset_lookup.gperf\"\n- 938 {(int)offsetof(struct stringpool_t, stringpool_str57), 88},\n- 939 {-1,-1}, {-1,-1},\n- 940#line 343 \"charset_lookup.gperf\"\n- 941 {(int)offsetof(struct stringpool_t, stringpool_str60), 54},\n- 942 {-1,-1}, {-1,-1},\n- 943#line 346 \"charset_lookup.gperf\"\n- 944 {(int)offsetof(struct stringpool_t, stringpool_str63), 0},\n- 945 {-1,-1},\n- 946#line 354 \"charset_lookup.gperf\"\n- 947 {(int)offsetof(struct stringpool_t, stringpool_str65), 56},\n- 948#line 374 \"charset_lookup.gperf\"\n- 949 {(int)offsetof(struct stringpool_t, stringpool_str66), 0},\n- 950#line 351 \"charset_lookup.gperf\"\n- 951 {(int)offsetof(struct stringpool_t, stringpool_str67), 53},\n- 952 {-1,-1},\n- 953#line 355 \"charset_lookup.gperf\"\n- 954 {(int)offsetof(struct stringpool_t, stringpool_str69), 57},\n- 955#line 368 \"charset_lookup.gperf\"\n- 956 {(int)offsetof(struct stringpool_t, stringpool_str70), 55},\n- 957#line 168 \"charset_lookup.gperf\"\n- 958 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},\n- 959#line 234 \"charset_lookup.gperf\"\n- 960 {(int)offsetof(struct stringpool_t, stringpool_str72), 46},\n- 961#line 176 \"charset_lookup.gperf\"\n- 962 {(int)offsetof(struct stringpool_t, stringpool_str73), 56},\n- 963#line 347 \"charset_lookup.gperf\"\n- 964 {(int)offsetof(struct stringpool_t, stringpool_str74), 48},\n- 965#line 173 \"charset_lookup.gperf\"\n- 966 {(int)offsetof(struct stringpool_t, stringpool_str75), 53},\n- 967 {-1,-1},\n- 968#line 177 \"charset_lookup.gperf\"\n- 969 {(int)offsetof(struct stringpool_t, stringpool_str77), 57},\n- 970 {-1,-1},\n- 971#line 127 \"charset_lookup.gperf\"\n- 972 {(int)offsetof(struct stringpool_t, stringpool_str79), 0},\n- 973 {-1,-1},\n- 974#line 139 \"charset_lookup.gperf\"\n- 975 {(int)offsetof(struct stringpool_t, stringpool_str81), 56},\n- 976#line 170 \"charset_lookup.gperf\"\n- 977 {(int)offsetof(struct stringpool_t, stringpool_str82), 48},\n- 978#line 136 \"charset_lookup.gperf\"\n- 979 {(int)offsetof(struct stringpool_t, stringpool_str83), 53},\n- 980 {-1,-1},\n- 981#line 140 \"charset_lookup.gperf\"\n- 982 {(int)offsetof(struct stringpool_t, stringpool_str85), 57},\n- 983 {-1,-1},\n- 984#line 352 \"charset_lookup.gperf\"\n- 985 {(int)offsetof(struct stringpool_t, stringpool_str87), 54},\n- 986 {-1,-1},\n- 987#line 162 \"charset_lookup.gperf\"\n- 988 {(int)offsetof(struct stringpool_t, stringpool_str89), 8},\n- 989#line 131 \"charset_lookup.gperf\"\n- 990 {(int)offsetof(struct stringpool_t, stringpool_str90), 48},\n- 991#line 206 \"charset_lookup.gperf\"\n- 992 {(int)offsetof(struct stringpool_t, stringpool_str91), 63},\n- 993#line 230 \"charset_lookup.gperf\"\n- 994 {(int)offsetof(struct stringpool_t, stringpool_str92), 51},\n- 995#line 371 \"charset_lookup.gperf\"\n- 996 {(int)offsetof(struct stringpool_t, stringpool_str93), 47},\n- 997#line 341 \"charset_lookup.gperf\"\n- 998 {(int)offsetof(struct stringpool_t, stringpool_str94), 52},\n- 999#line 174 \"charset_lookup.gperf\"\n- 1000 {(int)offsetof(struct stringpool_t, stringpool_str95), 54},\n- 1001 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1002#line 154 \"charset_lookup.gperf\"\n- 1003 {(int)offsetof(struct stringpool_t, stringpool_str100), 60},\n- 1004#line 158 \"charset_lookup.gperf\"\n- 1005 {(int)offsetof(struct stringpool_t, stringpool_str101), 47},\n- 1006#line 163 \"charset_lookup.gperf\"\n- 1007 {(int)offsetof(struct stringpool_t, stringpool_str102), 88},\n- 1008#line 137 \"charset_lookup.gperf\"\n- 1009 {(int)offsetof(struct stringpool_t, stringpool_str103), 54},\n- 1010#line 9 \"charset_lookup.gperf\"\n- 1011 {(int)offsetof(struct stringpool_t, stringpool_str104), 25},\n- 1012#line 112 \"charset_lookup.gperf\"\n- 1013 {(int)offsetof(struct stringpool_t, stringpool_str105), 38},\n- 1014 {-1,-1},\n- 1015#line 373 \"charset_lookup.gperf\"\n- 1016 {(int)offsetof(struct stringpool_t, stringpool_str107), 88},\n- 1017#line 155 \"charset_lookup.gperf\"\n- 1018 {(int)offsetof(struct stringpool_t, stringpool_str108), 11},\n- 1019#line 179 \"charset_lookup.gperf\"\n- 1020 {(int)offsetof(struct stringpool_t, stringpool_str109), 0},\n- 1021#line 132 \"charset_lookup.gperf\"\n- 1022 {(int)offsetof(struct stringpool_t, stringpool_str110), 49},\n- 1023#line 202 \"charset_lookup.gperf\"\n- 1024 {(int)offsetof(struct stringpool_t, stringpool_str111), 56},\n- 1025 {-1,-1},\n- 1026#line 196 \"charset_lookup.gperf\"\n- 1027 {(int)offsetof(struct stringpool_t, stringpool_str113), 53},\n- 1028 {-1,-1},\n- 1029#line 204 \"charset_lookup.gperf\"\n- 1030 {(int)offsetof(struct stringpool_t, stringpool_str115), 57},\n- 1031#line 219 \"charset_lookup.gperf\"\n- 1032 {(int)offsetof(struct stringpool_t, stringpool_str116), 58},\n- 1033 {-1,-1},\n- 1034#line 339 \"charset_lookup.gperf\"\n- 1035 {(int)offsetof(struct stringpool_t, stringpool_str118), 50},\n- 1036 {-1,-1},\n- 1037#line 185 \"charset_lookup.gperf\"\n- 1038 {(int)offsetof(struct stringpool_t, stringpool_str120), 48},\n- 1039#line 350 \"charset_lookup.gperf\"\n- 1040 {(int)offsetof(struct stringpool_t, stringpool_str121), 52},\n- 1041#line 8 \"charset_lookup.gperf\"\n- 1042 {(int)offsetof(struct stringpool_t, stringpool_str122), 24},\n- 1043#line 151 \"charset_lookup.gperf\"\n- 1044 {(int)offsetof(struct stringpool_t, stringpool_str123), 57},\n- 1045#line 186 \"charset_lookup.gperf\"\n- 1046 {(int)offsetof(struct stringpool_t, stringpool_str124), 48},\n- 1047 {-1,-1}, {-1,-1},\n- 1048#line 152 \"charset_lookup.gperf\"\n- 1049 {(int)offsetof(struct stringpool_t, stringpool_str127), 59},\n- 1050#line 156 \"charset_lookup.gperf\"\n- 1051 {(int)offsetof(struct stringpool_t, stringpool_str128), 61},\n- 1052#line 172 \"charset_lookup.gperf\"\n- 1053 {(int)offsetof(struct stringpool_t, stringpool_str129), 52},\n- 1054 {-1,-1}, {-1,-1}, {-1,-1},\n- 1055#line 198 \"charset_lookup.gperf\"\n- 1056 {(int)offsetof(struct stringpool_t, stringpool_str133), 54},\n- 1057 {-1,-1},\n- 1058#line 369 \"charset_lookup.gperf\"\n- 1059 {(int)offsetof(struct stringpool_t, stringpool_str135), 45},\n- 1060#line 25 \"charset_lookup.gperf\"\n- 1061 {(int)offsetof(struct stringpool_t, stringpool_str136), 9},\n- 1062#line 135 \"charset_lookup.gperf\"\n- 1063 {(int)offsetof(struct stringpool_t, stringpool_str137), 52},\n- 1064 {-1,-1}, {-1,-1},\n- 1065#line 187 \"charset_lookup.gperf\"\n- 1066 {(int)offsetof(struct stringpool_t, stringpool_str140), 49},\n- 1067#line 224 \"charset_lookup.gperf\"\n- 1068 {(int)offsetof(struct stringpool_t, stringpool_str141), 59},\n- 1069#line 143 \"charset_lookup.gperf\"\n- 1070 {(int)offsetof(struct stringpool_t, stringpool_str142), 50},\n- 1071#line 149 \"charset_lookup.gperf\"\n- 1072 {(int)offsetof(struct stringpool_t, stringpool_str143), 58},\n- 1073#line 130 \"charset_lookup.gperf\"\n- 1074 {(int)offsetof(struct stringpool_t, stringpool_str144), 47},\n- 1075#line 348 \"charset_lookup.gperf\"\n- 1076 {(int)offsetof(struct stringpool_t, stringpool_str145), 50},\n- 1077#line 220 \"charset_lookup.gperf\"\n- 1078 {(int)offsetof(struct stringpool_t, stringpool_str146), 65},\n- 1079 {-1,-1},\n- 1080#line 144 \"charset_lookup.gperf\"\n- 1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 51},\n- 1082#line 23 \"charset_lookup.gperf\"\n- 1083 {(int)offsetof(struct stringpool_t, stringpool_str149), 7},\n- 1084#line 344 \"charset_lookup.gperf\"\n- 1085 {(int)offsetof(struct stringpool_t, stringpool_str150), 55},\n- 1086#line 184 \"charset_lookup.gperf\"\n- 1087 {(int)offsetof(struct stringpool_t, stringpool_str151), 47},\n- 1088#line 236 \"charset_lookup.gperf\"\n- 1089 {(int)offsetof(struct stringpool_t, stringpool_str152), 0},\n- 1090#line 171 \"charset_lookup.gperf\"\n- 1091 {(int)offsetof(struct stringpool_t, stringpool_str153), 50},\n- 1092#line 243 \"charset_lookup.gperf\"\n- 1093 {(int)offsetof(struct stringpool_t, stringpool_str154), 47},\n- 1094#line 157 \"charset_lookup.gperf\"\n- 1095 {(int)offsetof(struct stringpool_t, stringpool_str155), 46},\n- 1096#line 240 \"charset_lookup.gperf\"\n- 1097 {(int)offsetof(struct stringpool_t, stringpool_str156), 57},\n- 1098#line 146 \"charset_lookup.gperf\"\n- 1099 {(int)offsetof(struct stringpool_t, stringpool_str157), 55},\n- 1100#line 15 \"charset_lookup.gperf\"\n- 1101 {(int)offsetof(struct stringpool_t, stringpool_str158), 88},\n- 1102 {-1,-1}, {-1,-1},\n- 1103#line 133 \"charset_lookup.gperf\"\n- 1104 {(int)offsetof(struct stringpool_t, stringpool_str161), 50},\n- 1105 {-1,-1}, {-1,-1},\n- 1106#line 42 \"charset_lookup.gperf\"\n- 1107 {(int)offsetof(struct stringpool_t, stringpool_str164), 0},\n- 1108 {-1,-1}, {-1,-1},\n- 1109#line 194 \"charset_lookup.gperf\"\n- 1110 {(int)offsetof(struct stringpool_t, stringpool_str167), 52},\n- 1111 {-1,-1}, {-1,-1},\n- 1112#line 273 \"charset_lookup.gperf\"\n- 1113 {(int)offsetof(struct stringpool_t, stringpool_str170), 85},\n- 1114#line 148 \"charset_lookup.gperf\"\n- 1115 {(int)offsetof(struct stringpool_t, stringpool_str171), 56},\n- 1116 {-1,-1},\n- 1117#line 336 \"charset_lookup.gperf\"\n- 1118 {(int)offsetof(struct stringpool_t, stringpool_str173), 8},\n- 1119#line 183 \"charset_lookup.gperf\"\n- 1120 {(int)offsetof(struct stringpool_t, stringpool_str174), 47},\n- 1121 {-1,-1},\n- 1122#line 241 \"charset_lookup.gperf\"\n- 1123 {(int)offsetof(struct stringpool_t, stringpool_str176), 45},\n- 1124#line 353 \"charset_lookup.gperf\"\n- 1125 {(int)offsetof(struct stringpool_t, stringpool_str177), 55},\n- 1126#line 169 \"charset_lookup.gperf\"\n- 1127 {(int)offsetof(struct stringpool_t, stringpool_str178), 45},\n- 1128#line 150 \"charset_lookup.gperf\"\n- 1129 {(int)offsetof(struct stringpool_t, stringpool_str179), 53},\n- 1130 {-1,-1}, {-1,-1}, {-1,-1},\n- 1131#line 188 \"charset_lookup.gperf\"\n- 1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 49},\n- 1133 {-1,-1},\n- 1134#line 175 \"charset_lookup.gperf\"\n- 1135 {(int)offsetof(struct stringpool_t, stringpool_str185), 55},\n- 1136#line 128 \"charset_lookup.gperf\"\n- 1137 {(int)offsetof(struct stringpool_t, stringpool_str186), 45},\n- 1138 {-1,-1}, {-1,-1},\n- 1139#line 370 \"charset_lookup.gperf\"\n- 1140 {(int)offsetof(struct stringpool_t, stringpool_str189), 46},\n- 1141#line 340 \"charset_lookup.gperf\"\n- 1142 {(int)offsetof(struct stringpool_t, stringpool_str190), 51},\n- 1143#line 190 \"charset_lookup.gperf\"\n- 1144 {(int)offsetof(struct stringpool_t, stringpool_str191), 50},\n- 1145#line 145 \"charset_lookup.gperf\"\n- 1146 {(int)offsetof(struct stringpool_t, stringpool_str192), 52},\n- 1147#line 138 \"charset_lookup.gperf\"\n- 1148 {(int)offsetof(struct stringpool_t, stringpool_str193), 55},\n- 1149#line 45 \"charset_lookup.gperf\"\n- 1150 {(int)offsetof(struct stringpool_t, stringpool_str194), 26},\n- 1151#line 49 \"charset_lookup.gperf\"\n- 1152 {(int)offsetof(struct stringpool_t, stringpool_str195), 30},\n- 1153#line 361 \"charset_lookup.gperf\"\n- 1154 {(int)offsetof(struct stringpool_t, stringpool_str196), 61},\n- 1155#line 302 \"charset_lookup.gperf\"\n- 1156 {(int)offsetof(struct stringpool_t, stringpool_str197), 94},\n- 1157#line 160 \"charset_lookup.gperf\"\n- 1158 {(int)offsetof(struct stringpool_t, stringpool_str198), 49},\n- 1159#line 292 \"charset_lookup.gperf\"\n- 1160 {(int)offsetof(struct stringpool_t, stringpool_str199), 88},\n- 1161#line 164 \"charset_lookup.gperf\"\n- 1162 {(int)offsetof(struct stringpool_t, stringpool_str200), 62},\n- 1163#line 161 \"charset_lookup.gperf\"\n- 1164 {(int)offsetof(struct stringpool_t, stringpool_str201), 9},\n- 1165#line 117 \"charset_lookup.gperf\"\n- 1166 {(int)offsetof(struct stringpool_t, stringpool_str202), 0},\n- 1167#line 379 \"charset_lookup.gperf\"\n- 1168 {(int)offsetof(struct stringpool_t, stringpool_str203), 78},\n- 1169#line 258 \"charset_lookup.gperf\"\n- 1170 {(int)offsetof(struct stringpool_t, stringpool_str204), 15},\n- 1171#line 380 \"charset_lookup.gperf\"\n- 1172 {(int)offsetof(struct stringpool_t, stringpool_str205), 79},\n- 1173 {-1,-1},\n- 1174#line 31 \"charset_lookup.gperf\"\n- 1175 {(int)offsetof(struct stringpool_t, stringpool_str207), 14},\n- 1176#line 153 \"charset_lookup.gperf\"\n- 1177 {(int)offsetof(struct stringpool_t, stringpool_str208), 45},\n- 1178#line 38 \"charset_lookup.gperf\"\n- 1179 {(int)offsetof(struct stringpool_t, stringpool_str209), 21},\n- 1180#line 239 \"charset_lookup.gperf\"\n- 1181 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},\n- 1182#line 35 \"charset_lookup.gperf\"\n- 1183 {(int)offsetof(struct stringpool_t, stringpool_str211), 18},\n- 1184#line 181 \"charset_lookup.gperf\"\n- 1185 {(int)offsetof(struct stringpool_t, stringpool_str212), 45},\n- 1186#line 331 \"charset_lookup.gperf\"\n- 1187 {(int)offsetof(struct stringpool_t, stringpool_str213), 26},\n- 1188#line 366 \"charset_lookup.gperf\"\n- 1189 {(int)offsetof(struct stringpool_t, stringpool_str214), 30},\n- 1190 {-1,-1},\n- 1191#line 180 \"charset_lookup.gperf\"\n- 1192 {(int)offsetof(struct stringpool_t, stringpool_str216), 45},\n- 1193#line 349 \"charset_lookup.gperf\"\n- 1194 {(int)offsetof(struct stringpool_t, stringpool_str217), 51},\n- 1195#line 269 \"charset_lookup.gperf\"\n- 1196 {(int)offsetof(struct stringpool_t, stringpool_str218), 83},\n- 1197#line 24 \"charset_lookup.gperf\"\n- 1198 {(int)offsetof(struct stringpool_t, stringpool_str219), 8},\n- 1199#line 207 \"charset_lookup.gperf\"\n- 1200 {(int)offsetof(struct stringpool_t, stringpool_str220), 62},\n- 1201 {-1,-1}, {-1,-1},\n- 1202#line 200 \"charset_lookup.gperf\"\n- 1203 {(int)offsetof(struct stringpool_t, stringpool_str223), 55},\n- 1204 {-1,-1},\n- 1205#line 378 \"charset_lookup.gperf\"\n- 1206 {(int)offsetof(struct stringpool_t, stringpool_str225), 74},\n- 1207#line 320 \"charset_lookup.gperf\"\n- 1208 {(int)offsetof(struct stringpool_t, stringpool_str226), 14},\n- 1209#line 363 \"charset_lookup.gperf\"\n- 1210 {(int)offsetof(struct stringpool_t, stringpool_str227), 0},\n- 1211#line 327 \"charset_lookup.gperf\"\n- 1212 {(int)offsetof(struct stringpool_t, stringpool_str228), 21},\n- 1213#line 90 \"charset_lookup.gperf\"\n- 1214 {(int)offsetof(struct stringpool_t, stringpool_str229), 55},\n- 1215#line 324 \"charset_lookup.gperf\"\n- 1216 {(int)offsetof(struct stringpool_t, stringpool_str230), 18},\n- 1217#line 36 \"charset_lookup.gperf\"\n- 1218 {(int)offsetof(struct stringpool_t, stringpool_str231), 19},\n- 1219#line 120 \"charset_lookup.gperf\"\n- 1220 {(int)offsetof(struct stringpool_t, stringpool_str232), 26},\n- 1221#line 134 \"charset_lookup.gperf\"\n- 1222 {(int)offsetof(struct stringpool_t, stringpool_str233), 51},\n- 1223#line 237 \"charset_lookup.gperf\"\n- 1224 {(int)offsetof(struct stringpool_t, stringpool_str234), 50},\n- 1225#line 19 \"charset_lookup.gperf\"\n- 1226 {(int)offsetof(struct stringpool_t, stringpool_str235), 5},\n- 1227#line 266 \"charset_lookup.gperf\"\n- 1228 {(int)offsetof(struct stringpool_t, stringpool_str236), 81},\n- 1229#line 261 \"charset_lookup.gperf\"\n- 1230 {(int)offsetof(struct stringpool_t, stringpool_str237), 13},\n- 1231 {-1,-1},\n- 1232#line 165 \"charset_lookup.gperf\"\n- 1233 {(int)offsetof(struct stringpool_t, stringpool_str239), 9},\n- 1234#line 129 \"charset_lookup.gperf\"\n- 1235 {(int)offsetof(struct stringpool_t, stringpool_str240), 46},\n- 1236 {-1,-1},\n- 1237#line 142 \"charset_lookup.gperf\"\n- 1238 {(int)offsetof(struct stringpool_t, stringpool_str242), 0},\n- 1239#line 17 \"charset_lookup.gperf\"\n- 1240 {(int)offsetof(struct stringpool_t, stringpool_str243), 5},\n- 1241 {-1,-1}, {-1,-1}, {-1,-1},\n- 1242#line 147 \"charset_lookup.gperf\"\n- 1243 {(int)offsetof(struct stringpool_t, stringpool_str247), 54},\n- 1244#line 109 \"charset_lookup.gperf\"\n- 1245 {(int)offsetof(struct stringpool_t, stringpool_str248), 55},\n- 1246 {-1,-1},\n- 1247#line 325 \"charset_lookup.gperf\"\n- 1248 {(int)offsetof(struct stringpool_t, stringpool_str250), 19},\n- 1249 {-1,-1},\n- 1250#line 44 \"charset_lookup.gperf\"\n- 1251 {(int)offsetof(struct stringpool_t, stringpool_str252), 25},\n- 1252#line 39 \"charset_lookup.gperf\"\n- 1253 {(int)offsetof(struct stringpool_t, stringpool_str253), 22},\n- 1254 {-1,-1},\n- 1255#line 103 \"charset_lookup.gperf\"\n- 1256 {(int)offsetof(struct stringpool_t, stringpool_str255), 29},\n- 1257 {-1,-1}, {-1,-1},\n- 1258#line 91 \"charset_lookup.gperf\"\n- 1259 {(int)offsetof(struct stringpool_t, stringpool_str258), 55},\n- 1260 {-1,-1},\n- 1261#line 43 \"charset_lookup.gperf\"\n- 1262 {(int)offsetof(struct stringpool_t, stringpool_str260), 24},\n- 1263#line 48 \"charset_lookup.gperf\"\n- 1264 {(int)offsetof(struct stringpool_t, stringpool_str261), 29},\n- 1265#line 50 \"charset_lookup.gperf\"\n- 1266 {(int)offsetof(struct stringpool_t, stringpool_str262), 31},\n- 1267#line 192 \"charset_lookup.gperf\"\n- 1268 {(int)offsetof(struct stringpool_t, stringpool_str263), 51},\n- 1269 {-1,-1},\n- 1270#line 34 \"charset_lookup.gperf\"\n- 1271 {(int)offsetof(struct stringpool_t, stringpool_str265), 17},\n- 1272#line 242 \"charset_lookup.gperf\"\n- 1273 {(int)offsetof(struct stringpool_t, stringpool_str266), 46},\n- 1274 {-1,-1}, {-1,-1}, {-1,-1},\n- 1275#line 182 \"charset_lookup.gperf\"\n- 1276 {(int)offsetof(struct stringpool_t, stringpool_str270), 46},\n- 1277#line 330 \"charset_lookup.gperf\"\n- 1278 {(int)offsetof(struct stringpool_t, stringpool_str271), 25},\n- 1279 {-1,-1},\n- 1280#line 46 \"charset_lookup.gperf\"\n- 1281 {(int)offsetof(struct stringpool_t, stringpool_str273), 27},\n- 1282#line 79 \"charset_lookup.gperf\"\n- 1283 {(int)offsetof(struct stringpool_t, stringpool_str274), 65},\n- 1284#line 98 \"charset_lookup.gperf\"\n- 1285 {(int)offsetof(struct stringpool_t, stringpool_str275), 33},\n- 1286 {-1,-1}, {-1,-1}, {-1,-1},\n- 1287#line 329 \"charset_lookup.gperf\"\n- 1288 {(int)offsetof(struct stringpool_t, stringpool_str279), 24},\n- 1289#line 365 \"charset_lookup.gperf\"\n- 1290 {(int)offsetof(struct stringpool_t, stringpool_str280), 29},\n- 1291#line 367 \"charset_lookup.gperf\"\n- 1292 {(int)offsetof(struct stringpool_t, stringpool_str281), 31},\n- 1293 {-1,-1},\n- 1294#line 94 \"charset_lookup.gperf\"\n- 1295 {(int)offsetof(struct stringpool_t, stringpool_str283), 33},\n- 1296#line 323 \"charset_lookup.gperf\"\n- 1297 {(int)offsetof(struct stringpool_t, stringpool_str284), 17},\n- 1298#line 89 \"charset_lookup.gperf\"\n- 1299 {(int)offsetof(struct stringpool_t, stringpool_str285), 54},\n- 1300 {-1,-1}, {-1,-1},\n- 1301#line 334 \"charset_lookup.gperf\"\n- 1302 {(int)offsetof(struct stringpool_t, stringpool_str288), 33},\n- 1303#line 32 \"charset_lookup.gperf\"\n- 1304 {(int)offsetof(struct stringpool_t, stringpool_str289), 15},\n- 1305#line 119 \"charset_lookup.gperf\"\n- 1306 {(int)offsetof(struct stringpool_t, stringpool_str290), 25},\n- 1307#line 61 \"charset_lookup.gperf\"\n- 1308 {(int)offsetof(struct stringpool_t, stringpool_str291), 60},\n- 1309#line 332 \"charset_lookup.gperf\"\n- 1310 {(int)offsetof(struct stringpool_t, stringpool_str292), 27},\n- 1311#line 166 \"charset_lookup.gperf\"\n- 1312 {(int)offsetof(struct stringpool_t, stringpool_str293), 58},\n- 1313#line 51 \"charset_lookup.gperf\"\n- 1314 {(int)offsetof(struct stringpool_t, stringpool_str294), 88},\n- 1315#line 96 \"charset_lookup.gperf\"\n- 1316 {(int)offsetof(struct stringpool_t, stringpool_str295), 10},\n- 1317 {-1,-1},\n- 1318#line 286 \"charset_lookup.gperf\"\n- 1319 {(int)offsetof(struct stringpool_t, stringpool_str297), 87},\n- 1320#line 118 \"charset_lookup.gperf\"\n- 1321 {(int)offsetof(struct stringpool_t, stringpool_str298), 24},\n- 1322 {-1,-1}, {-1,-1},\n- 1323#line 108 \"charset_lookup.gperf\"\n- 1324 {(int)offsetof(struct stringpool_t, stringpool_str301), 55},\n- 1325#line 167 \"charset_lookup.gperf\"\n- 1326 {(int)offsetof(struct stringpool_t, stringpool_str302), 88},\n- 1327#line 92 \"charset_lookup.gperf\"\n- 1328 {(int)offsetof(struct stringpool_t, stringpool_str303), 10},\n- 1329#line 278 \"charset_lookup.gperf\"\n- 1330 {(int)offsetof(struct stringpool_t, stringpool_str304), 61},\n- 1331#line 376 \"charset_lookup.gperf\"\n- 1332 {(int)offsetof(struct stringpool_t, stringpool_str305), 69},\n- 1333#line 238 \"charset_lookup.gperf\"\n- 1334 {(int)offsetof(struct stringpool_t, stringpool_str306), 51},\n- 1335#line 30 \"charset_lookup.gperf\"\n- 1336 {(int)offsetof(struct stringpool_t, stringpool_str307), 13},\n- 1337#line 321 \"charset_lookup.gperf\"\n- 1338 {(int)offsetof(struct stringpool_t, stringpool_str308), 15},\n- 1339#line 284 \"charset_lookup.gperf\"\n- 1340 {(int)offsetof(struct stringpool_t, stringpool_str309), 2},\n- 1341#line 69 \"charset_lookup.gperf\"\n- 1342 {(int)offsetof(struct stringpool_t, stringpool_str310), 0},\n- 1343 {-1,-1},\n- 1344#line 277 \"charset_lookup.gperf\"\n- 1345 {(int)offsetof(struct stringpool_t, stringpool_str312), 61},\n- 1346#line 275 \"charset_lookup.gperf\"\n- 1347 {(int)offsetof(struct stringpool_t, stringpool_str313), 85},\n- 1348#line 73 \"charset_lookup.gperf\"\n- 1349 {(int)offsetof(struct stringpool_t, stringpool_str314), 57},\n- 1350 {-1,-1}, {-1,-1}, {-1,-1},\n- 1351#line 104 \"charset_lookup.gperf\"\n- 1352 {(int)offsetof(struct stringpool_t, stringpool_str318), 9},\n- 1353#line 47 \"charset_lookup.gperf\"\n- 1354 {(int)offsetof(struct stringpool_t, stringpool_str319), 28},\n- 1355#line 16 \"charset_lookup.gperf\"\n- 1356 {(int)offsetof(struct stringpool_t, stringpool_str320), 54},\n- 1357#line 37 \"charset_lookup.gperf\"\n- 1358 {(int)offsetof(struct stringpool_t, stringpool_str321), 20},\n- 1359 {-1,-1}, {-1,-1},\n- 1360#line 222 \"charset_lookup.gperf\"\n- 1361 {(int)offsetof(struct stringpool_t, stringpool_str324), 67},\n- 1362 {-1,-1},\n- 1363#line 319 \"charset_lookup.gperf\"\n- 1364 {(int)offsetof(struct stringpool_t, stringpool_str326), 13},\n- 1365 {-1,-1}, {-1,-1},\n- 1366#line 111 \"charset_lookup.gperf\"\n- 1367 {(int)offsetof(struct stringpool_t, stringpool_str329), 83},\n- 1368 {-1,-1},\n- 1369#line 265 \"charset_lookup.gperf\"\n- 1370 {(int)offsetof(struct stringpool_t, stringpool_str331), 84},\n- 1371 {-1,-1},\n- 1372#line 87 \"charset_lookup.gperf\"\n- 1373 {(int)offsetof(struct stringpool_t, stringpool_str333), 94},\n- 1374#line 74 \"charset_lookup.gperf\"\n- 1375 {(int)offsetof(struct stringpool_t, stringpool_str334), 45},\n- 1376#line 225 \"charset_lookup.gperf\"\n- 1377 {(int)offsetof(struct stringpool_t, stringpool_str335), 59},\n- 1378#line 270 \"charset_lookup.gperf\"\n- 1379 {(int)offsetof(struct stringpool_t, stringpool_str336), 84},\n- 1380#line 159 \"charset_lookup.gperf\"\n- 1381 {(int)offsetof(struct stringpool_t, stringpool_str337), 48},\n- 1382#line 364 \"charset_lookup.gperf\"\n- 1383 {(int)offsetof(struct stringpool_t, stringpool_str338), 28},\n- 1384#line 218 \"charset_lookup.gperf\"\n- 1385 {(int)offsetof(struct stringpool_t, stringpool_str339), 22},\n- 1386#line 326 \"charset_lookup.gperf\"\n- 1387 {(int)offsetof(struct stringpool_t, stringpool_str340), 20},\n- 1388 {-1,-1},\n- 1389#line 14 \"charset_lookup.gperf\"\n- 1390 {(int)offsetof(struct stringpool_t, stringpool_str342), 4},\n- 1391 {-1,-1}, {-1,-1},\n- 1392#line 178 \"charset_lookup.gperf\"\n- 1393 {(int)offsetof(struct stringpool_t, stringpool_str345), 88},\n- 1394 {-1,-1},\n- 1395#line 274 \"charset_lookup.gperf\"\n- 1396 {(int)offsetof(struct stringpool_t, stringpool_str347), 85},\n- 1397 {-1,-1},\n- 1398#line 97 \"charset_lookup.gperf\"\n- 1399 {(int)offsetof(struct stringpool_t, stringpool_str349), 32},\n- 1400#line 301 \"charset_lookup.gperf\"\n- 1401 {(int)offsetof(struct stringpool_t, stringpool_str350), 1},\n- 1402#line 315 \"charset_lookup.gperf\"\n- 1403 {(int)offsetof(struct stringpool_t, stringpool_str351), 64},\n- 1404#line 102 \"charset_lookup.gperf\"\n- 1405 {(int)offsetof(struct stringpool_t, stringpool_str352), 10},\n- 1406#line 316 \"charset_lookup.gperf\"\n- 1407 {(int)offsetof(struct stringpool_t, stringpool_str353), 62},\n- 1408#line 126 \"charset_lookup.gperf\"\n- 1409 {(int)offsetof(struct stringpool_t, stringpool_str354), 44},\n- 1410#line 260 \"charset_lookup.gperf\"\n- 1411 {(int)offsetof(struct stringpool_t, stringpool_str355), 14},\n- 1412#line 124 \"charset_lookup.gperf\"\n- 1413 {(int)offsetof(struct stringpool_t, stringpool_str356), 42},\n- 1414#line 93 \"charset_lookup.gperf\"\n- 1415 {(int)offsetof(struct stringpool_t, stringpool_str357), 32},\n- 1416#line 299 \"charset_lookup.gperf\"\n- 1417 {(int)offsetof(struct stringpool_t, stringpool_str358), 1},\n- 1418#line 303 \"charset_lookup.gperf\"\n- 1419 {(int)offsetof(struct stringpool_t, stringpool_str359), 94},\n- 1420#line 40 \"charset_lookup.gperf\"\n- 1421 {(int)offsetof(struct stringpool_t, stringpool_str360), 88},\n- 1422#line 33 \"charset_lookup.gperf\"\n- 1423 {(int)offsetof(struct stringpool_t, stringpool_str361), 16},\n- 1424#line 333 \"charset_lookup.gperf\"\n- 1425 {(int)offsetof(struct stringpool_t, stringpool_str362), 32},\n- 1426 {-1,-1},\n- 1427#line 377 \"charset_lookup.gperf\"\n- 1428 {(int)offsetof(struct stringpool_t, stringpool_str364), 73},\n- 1429#line 293 \"charset_lookup.gperf\"\n- 1430 {(int)offsetof(struct stringpool_t, stringpool_str365), 88},\n- 1431#line 271 \"charset_lookup.gperf\"\n- 1432 {(int)offsetof(struct stringpool_t, stringpool_str366), 84},\n- 1433 {-1,-1},\n- 1434#line 72 \"charset_lookup.gperf\"\n- 1435 {(int)offsetof(struct stringpool_t, stringpool_str368), 52},\n- 1436#line 279 \"charset_lookup.gperf\"\n- 1437 {(int)offsetof(struct stringpool_t, stringpool_str369), 61},\n- 1438 {-1,-1},\n- 1439#line 52 \"charset_lookup.gperf\"\n- 1440 {(int)offsetof(struct stringpool_t, stringpool_str371), 5},\n- 1441 {-1,-1}, {-1,-1},\n- 1442#line 121 \"charset_lookup.gperf\"\n- 1443 {(int)offsetof(struct stringpool_t, stringpool_str374), 39},\n- 1444 {-1,-1}, {-1,-1},\n- 1445#line 41 \"charset_lookup.gperf\"\n- 1446 {(int)offsetof(struct stringpool_t, stringpool_str377), 23},\n- 1447 {-1,-1},\n- 1448#line 26 \"charset_lookup.gperf\"\n- 1449 {(int)offsetof(struct stringpool_t, stringpool_str379), 5},\n- 1450#line 322 \"charset_lookup.gperf\"\n- 1451 {(int)offsetof(struct stringpool_t, stringpool_str380), 16},\n- 1452#line 13 \"charset_lookup.gperf\"\n- 1453 {(int)offsetof(struct stringpool_t, stringpool_str381), 54},\n- 1454 {-1,-1},\n- 1455#line 317 \"charset_lookup.gperf\"\n- 1456 {(int)offsetof(struct stringpool_t, stringpool_str383), 60},\n- 1457#line 60 \"charset_lookup.gperf\"\n- 1458 {(int)offsetof(struct stringpool_t, stringpool_str384), 58},\n- 1459 {-1,-1}, {-1,-1},\n- 1460#line 101 \"charset_lookup.gperf\"\n- 1461 {(int)offsetof(struct stringpool_t, stringpool_str387), 35},\n- 1462 {-1,-1},\n- 1463#line 285 \"charset_lookup.gperf\"\n- 1464 {(int)offsetof(struct stringpool_t, stringpool_str389), 86},\n- 1465 {-1,-1}, {-1,-1},\n- 1466#line 70 \"charset_lookup.gperf\"\n- 1467 {(int)offsetof(struct stringpool_t, stringpool_str392), 50},\n- 1468#line 107 \"charset_lookup.gperf\"\n- 1469 {(int)offsetof(struct stringpool_t, stringpool_str393), 37},\n- 1470#line 227 \"charset_lookup.gperf\"\n- 1471 {(int)offsetof(struct stringpool_t, stringpool_str394), 59},\n- 1472#line 29 \"charset_lookup.gperf\"\n- 1473 {(int)offsetof(struct stringpool_t, stringpool_str395), 12},\n- 1474#line 328 \"charset_lookup.gperf\"\n- 1475 {(int)offsetof(struct stringpool_t, stringpool_str396), 23},\n- 1476#line 125 \"charset_lookup.gperf\"\n- 1477 {(int)offsetof(struct stringpool_t, stringpool_str397), 43},\n- 1478#line 115 \"charset_lookup.gperf\"\n- 1479 {(int)offsetof(struct stringpool_t, stringpool_str398), 88},\n- 1480 {-1,-1}, {-1,-1},\n- 1481#line 283 \"charset_lookup.gperf\"\n- 1482 {(int)offsetof(struct stringpool_t, stringpool_str401), 3},\n- 1483#line 288 \"charset_lookup.gperf\"\n- 1484 {(int)offsetof(struct stringpool_t, stringpool_str402), 3},\n- 1485 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1486#line 209 \"charset_lookup.gperf\"\n- 1487 {(int)offsetof(struct stringpool_t, stringpool_str409), 58},\n- 1488 {-1,-1},\n- 1489#line 259 \"charset_lookup.gperf\"\n- 1490 {(int)offsetof(struct stringpool_t, stringpool_str411), 19},\n- 1491 {-1,-1}, {-1,-1}, {-1,-1},\n- 1492#line 116 \"charset_lookup.gperf\"\n- 1493 {(int)offsetof(struct stringpool_t, stringpool_str415), 23},\n- 1494 {-1,-1}, {-1,-1},\n- 1495#line 244 \"charset_lookup.gperf\"\n- 1496 {(int)offsetof(struct stringpool_t, stringpool_str418), 69},\n- 1497 {-1,-1}, {-1,-1}, {-1,-1},\n- 1498#line 295 \"charset_lookup.gperf\"\n- 1499 {(int)offsetof(struct stringpool_t, stringpool_str422), 90},\n- 1500 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1501#line 123 \"charset_lookup.gperf\"\n- 1502 {(int)offsetof(struct stringpool_t, stringpool_str428), 41},\n- 1503#line 28 \"charset_lookup.gperf\"\n- 1504 {(int)offsetof(struct stringpool_t, stringpool_str429), 11},\n- 1505 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1506#line 306 \"charset_lookup.gperf\"\n- 1507 {(int)offsetof(struct stringpool_t, stringpool_str434), 14},\n- 1508#line 313 \"charset_lookup.gperf\"\n- 1509 {(int)offsetof(struct stringpool_t, stringpool_str435), 21},\n- 1510#line 310 \"charset_lookup.gperf\"\n- 1511 {(int)offsetof(struct stringpool_t, stringpool_str436), 18},\n- 1512 {-1,-1},\n- 1513#line 75 \"charset_lookup.gperf\"\n- 1514 {(int)offsetof(struct stringpool_t, stringpool_str438), 54},\n- 1515 {-1,-1}, {-1,-1},\n- 1516#line 263 \"charset_lookup.gperf\"\n- 1517 {(int)offsetof(struct stringpool_t, stringpool_str441), 18},\n- 1518 {-1,-1}, {-1,-1},\n- 1519#line 88 \"charset_lookup.gperf\"\n- 1520 {(int)offsetof(struct stringpool_t, stringpool_str444), 53},\n- 1521#line 210 \"charset_lookup.gperf\"\n- 1522 {(int)offsetof(struct stringpool_t, stringpool_str445), 62},\n- 1523#line 311 \"charset_lookup.gperf\"\n- 1524 {(int)offsetof(struct stringpool_t, stringpool_str446), 19},\n- 1525 {-1,-1},\n- 1526#line 226 \"charset_lookup.gperf\"\n- 1527 {(int)offsetof(struct stringpool_t, stringpool_str448), 59},\n- 1528 {-1,-1},\n- 1529#line 287 \"charset_lookup.gperf\"\n- 1530 {(int)offsetof(struct stringpool_t, stringpool_str450), 30},\n- 1531 {-1,-1},\n- 1532#line 22 \"charset_lookup.gperf\"\n- 1533 {(int)offsetof(struct stringpool_t, stringpool_str452), 5},\n- 1534 {-1,-1},\n- 1535#line 27 \"charset_lookup.gperf\"\n- 1536 {(int)offsetof(struct stringpool_t, stringpool_str454), 10},\n- 1537#line 106 \"charset_lookup.gperf\"\n- 1538 {(int)offsetof(struct stringpool_t, stringpool_str455), 36},\n- 1539 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1540#line 18 \"charset_lookup.gperf\"\n- 1541 {(int)offsetof(struct stringpool_t, stringpool_str460), 5},\n- 1542#line 59 \"charset_lookup.gperf\"\n- 1543 {(int)offsetof(struct stringpool_t, stringpool_str461), 26},\n- 1544#line 300 \"charset_lookup.gperf\"\n- 1545 {(int)offsetof(struct stringpool_t, stringpool_str462), 93},\n- 1546#line 309 \"charset_lookup.gperf\"\n- 1547 {(int)offsetof(struct stringpool_t, stringpool_str463), 17},\n- 1548#line 71 \"charset_lookup.gperf\"\n- 1549 {(int)offsetof(struct stringpool_t, stringpool_str464), 51},\n- 1550#line 289 \"charset_lookup.gperf\"\n- 1551 {(int)offsetof(struct stringpool_t, stringpool_str465), 93},\n- 1552 {-1,-1},\n- 1553#line 66 \"charset_lookup.gperf\"\n- 1554 {(int)offsetof(struct stringpool_t, stringpool_str467), 9},\n- 1555 {-1,-1}, {-1,-1},\n- 1556#line 298 \"charset_lookup.gperf\"\n- 1557 {(int)offsetof(struct stringpool_t, stringpool_str470), 93},\n- 1558 {-1,-1},\n- 1559#line 105 \"charset_lookup.gperf\"\n- 1560 {(int)offsetof(struct stringpool_t, stringpool_str472), 8},\n- 1561 {-1,-1},\n- 1562#line 65 \"charset_lookup.gperf\"\n- 1563 {(int)offsetof(struct stringpool_t, stringpool_str474), 44},\n- 1564#line 307 \"charset_lookup.gperf\"\n- 1565 {(int)offsetof(struct stringpool_t, stringpool_str475), 15},\n- 1566#line 223 \"charset_lookup.gperf\"\n- 1567 {(int)offsetof(struct stringpool_t, stringpool_str476), 68},\n- 1568 {-1,-1}, {-1,-1},\n- 1569#line 203 \"charset_lookup.gperf\"\n- 1570 {(int)offsetof(struct stringpool_t, stringpool_str479), 56},\n- 1571#line 197 \"charset_lookup.gperf\"\n- 1572 {(int)offsetof(struct stringpool_t, stringpool_str480), 53},\n- 1573 {-1,-1}, {-1,-1},\n- 1574#line 205 \"charset_lookup.gperf\"\n- 1575 {(int)offsetof(struct stringpool_t, stringpool_str483), 57},\n- 1576#line 305 \"charset_lookup.gperf\"\n- 1577 {(int)offsetof(struct stringpool_t, stringpool_str484), 13},\n- 1578#line 251 \"charset_lookup.gperf\"\n- 1579 {(int)offsetof(struct stringpool_t, stringpool_str485), 76},\n- 1580#line 77 \"charset_lookup.gperf\"\n- 1581 {(int)offsetof(struct stringpool_t, stringpool_str486), 55},\n- 1582#line 122 \"charset_lookup.gperf\"\n- 1583 {(int)offsetof(struct stringpool_t, stringpool_str487), 40},\n- 1584#line 211 \"charset_lookup.gperf\"\n- 1585 {(int)offsetof(struct stringpool_t, stringpool_str488), 64},\n- 1586#line 208 \"charset_lookup.gperf\"\n- 1587 {(int)offsetof(struct stringpool_t, stringpool_str489), 64},\n- 1588#line 212 \"charset_lookup.gperf\"\n- 1589 {(int)offsetof(struct stringpool_t, stringpool_str490), 62},\n- 1590#line 312 \"charset_lookup.gperf\"\n- 1591 {(int)offsetof(struct stringpool_t, stringpool_str491), 20},\n- 1592 {-1,-1}, {-1,-1},\n- 1593#line 62 \"charset_lookup.gperf\"\n- 1594 {(int)offsetof(struct stringpool_t, stringpool_str494), 39},\n- 1595 {-1,-1},\n- 1596#line 262 \"charset_lookup.gperf\"\n- 1597 {(int)offsetof(struct stringpool_t, stringpool_str496), 16},\n- 1598 {-1,-1}, {-1,-1}, {-1,-1},\n- 1599#line 100 \"charset_lookup.gperf\"\n- 1600 {(int)offsetof(struct stringpool_t, stringpool_str500), 32},\n- 1601 {-1,-1}, {-1,-1},\n- 1602#line 221 \"charset_lookup.gperf\"\n- 1603 {(int)offsetof(struct stringpool_t, stringpool_str503), 66},\n- 1604#line 280 \"charset_lookup.gperf\"\n- 1605 {(int)offsetof(struct stringpool_t, stringpool_str504), 61},\n- 1606#line 253 \"charset_lookup.gperf\"\n- 1607 {(int)offsetof(struct stringpool_t, stringpool_str505), 69},\n- 1608#line 314 \"charset_lookup.gperf\"\n- 1609 {(int)offsetof(struct stringpool_t, stringpool_str506), 27},\n- 1610#line 195 \"charset_lookup.gperf\"\n- 1611 {(int)offsetof(struct stringpool_t, stringpool_str507), 52},\n- 1612 {-1,-1},\n- 1613#line 80 \"charset_lookup.gperf\"\n- 1614 {(int)offsetof(struct stringpool_t, stringpool_str509), 59},\n- 1615 {-1,-1},\n- 1616#line 308 \"charset_lookup.gperf\"\n- 1617 {(int)offsetof(struct stringpool_t, stringpool_str511), 16},\n- 1618 {-1,-1}, {-1,-1},\n- 1619#line 294 \"charset_lookup.gperf\"\n- 1620 {(int)offsetof(struct stringpool_t, stringpool_str514), 89},\n- 1621#line 68 \"charset_lookup.gperf\"\n- 1622 {(int)offsetof(struct stringpool_t, stringpool_str515), 62},\n- 1623#line 64 \"charset_lookup.gperf\"\n- 1624 {(int)offsetof(struct stringpool_t, stringpool_str516), 43},\n- 1625 {-1,-1}, {-1,-1}, {-1,-1},\n- 1626#line 215 \"charset_lookup.gperf\"\n- 1627 {(int)offsetof(struct stringpool_t, stringpool_str520), 60},\n- 1628#line 254 \"charset_lookup.gperf\"\n- 1629 {(int)offsetof(struct stringpool_t, stringpool_str521), 77},\n- 1630#line 85 \"charset_lookup.gperf\"\n- 1631 {(int)offsetof(struct stringpool_t, stringpool_str522), 3},\n- 1632#line 255 \"charset_lookup.gperf\"\n- 1633 {(int)offsetof(struct stringpool_t, stringpool_str523), 78},\n- 1634 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1635#line 297 \"charset_lookup.gperf\"\n- 1636 {(int)offsetof(struct stringpool_t, stringpool_str528), 92},\n- 1637 {-1,-1}, {-1,-1},\n- 1638#line 58 \"charset_lookup.gperf\"\n- 1639 {(int)offsetof(struct stringpool_t, stringpool_str531), 83},\n- 1640 {-1,-1}, {-1,-1},\n- 1641#line 189 \"charset_lookup.gperf\"\n- 1642 {(int)offsetof(struct stringpool_t, stringpool_str534), 0},\n- 1643 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1644#line 21 \"charset_lookup.gperf\"\n- 1645 {(int)offsetof(struct stringpool_t, stringpool_str541), 6},\n- 1646 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1647#line 199 \"charset_lookup.gperf\"\n- 1648 {(int)offsetof(struct stringpool_t, stringpool_str546), 54},\n- 1649#line 216 \"charset_lookup.gperf\"\n- 1650 {(int)offsetof(struct stringpool_t, stringpool_str547), 60},\n- 1651#line 63 \"charset_lookup.gperf\"\n- 1652 {(int)offsetof(struct stringpool_t, stringpool_str548), 41},\n- 1653#line 20 \"charset_lookup.gperf\"\n- 1654 {(int)offsetof(struct stringpool_t, stringpool_str549), 6},\n- 1655 {-1,-1}, {-1,-1}, {-1,-1},\n- 1656#line 84 \"charset_lookup.gperf\"\n- 1657 {(int)offsetof(struct stringpool_t, stringpool_str553), 84},\n- 1658 {-1,-1},\n- 1659#line 193 \"charset_lookup.gperf\"\n- 1660 {(int)offsetof(struct stringpool_t, stringpool_str555), 51},\n- 1661 {-1,-1},\n- 1662#line 214 \"charset_lookup.gperf\"\n- 1663 {(int)offsetof(struct stringpool_t, stringpool_str557), 62},\n- 1664 {-1,-1}, {-1,-1},\n- 1665#line 78 \"charset_lookup.gperf\"\n- 1666 {(int)offsetof(struct stringpool_t, stringpool_str560), 56},\n- 1667#line 76 \"charset_lookup.gperf\"\n- 1668 {(int)offsetof(struct stringpool_t, stringpool_str561), 53},\n- 1669 {-1,-1},\n- 1670#line 141 \"charset_lookup.gperf\"\n- 1671 {(int)offsetof(struct stringpool_t, stringpool_str563), 47},\n- 1672#line 113 \"charset_lookup.gperf\"\n- 1673 {(int)offsetof(struct stringpool_t, stringpool_str564), 38},\n- 1674 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1675#line 11 \"charset_lookup.gperf\"\n- 1676 {(int)offsetof(struct stringpool_t, stringpool_str571), 88},\n- 1677#line 110 \"charset_lookup.gperf\"\n- 1678 {(int)offsetof(struct stringpool_t, stringpool_str572), 56},\n- 1679 {-1,-1}, {-1,-1},\n- 1680#line 191 \"charset_lookup.gperf\"\n- 1681 {(int)offsetof(struct stringpool_t, stringpool_str575), 50},\n- 1682 {-1,-1},\n- 1683#line 67 \"charset_lookup.gperf\"\n- 1684 {(int)offsetof(struct stringpool_t, stringpool_str577), 8},\n- 1685 {-1,-1}, {-1,-1}, {-1,-1},\n- 1686#line 56 \"charset_lookup.gperf\"\n- 1687 {(int)offsetof(struct stringpool_t, stringpool_str581), 10},\n- 1688#line 12 \"charset_lookup.gperf\"\n- 1689 {(int)offsetof(struct stringpool_t, stringpool_str582), 88},\n- 1690#line 86 \"charset_lookup.gperf\"\n- 1691 {(int)offsetof(struct stringpool_t, stringpool_str583), 93},\n- 1692#line 213 \"charset_lookup.gperf\"\n- 1693 {(int)offsetof(struct stringpool_t, stringpool_str584), 62},\n- 1694 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1695#line 201 \"charset_lookup.gperf\"\n- 1696 {(int)offsetof(struct stringpool_t, stringpool_str591), 55},\n- 1697 {-1,-1}, {-1,-1},\n- 1698#line 99 \"charset_lookup.gperf\"\n- 1699 {(int)offsetof(struct stringpool_t, stringpool_str594), 34},\n- 1700 {-1,-1},\n- 1701#line 53 \"charset_lookup.gperf\"\n- 1702 {(int)offsetof(struct stringpool_t, stringpool_str596), 33},\n- 1703 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1704#line 95 \"charset_lookup.gperf\"\n- 1705 {(int)offsetof(struct stringpool_t, stringpool_str602), 34},\n- 1706 {-1,-1}, {-1,-1},\n- 1707#line 247 \"charset_lookup.gperf\"\n- 1708 {(int)offsetof(struct stringpool_t, stringpool_str605), 72},\n- 1709 {-1,-1},\n- 1710#line 335 \"charset_lookup.gperf\"\n- 1711 {(int)offsetof(struct stringpool_t, stringpool_str607), 34},\n- 1712 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1713#line 282 \"charset_lookup.gperf\"\n- 1714 {(int)offsetof(struct stringpool_t, stringpool_str614), 61},\n- 1715 {-1,-1}, {-1,-1},\n- 1716#line 249 \"charset_lookup.gperf\"\n- 1717 {(int)offsetof(struct stringpool_t, stringpool_str617), 74},\n- 1718 {-1,-1}, {-1,-1},\n- 1719#line 296 \"charset_lookup.gperf\"\n- 1720 {(int)offsetof(struct stringpool_t, stringpool_str620), 91},\n- 1721 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1722#line 252 \"charset_lookup.gperf\"\n- 1723 {(int)offsetof(struct stringpool_t, stringpool_str625), 69},\n- 1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1725 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1726#line 291 \"charset_lookup.gperf\"\n- 1727 {(int)offsetof(struct stringpool_t, stringpool_str637), 2},\n- 1728 {-1,-1}, {-1,-1}, {-1,-1},\n- 1729#line 264 \"charset_lookup.gperf\"\n- 1730 {(int)offsetof(struct stringpool_t, stringpool_str641), 17},\n- 1731 {-1,-1}, {-1,-1}, {-1,-1},\n- 1732#line 257 \"charset_lookup.gperf\"\n- 1733 {(int)offsetof(struct stringpool_t, stringpool_str645), 80},\n- 1734 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1735#line 114 \"charset_lookup.gperf\"\n- 1736 {(int)offsetof(struct stringpool_t, stringpool_str651), 12},\n- 1737 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1738#line 246 \"charset_lookup.gperf\"\n- 1739 {(int)offsetof(struct stringpool_t, stringpool_str658), 71},\n- 1740 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1741#line 267 \"charset_lookup.gperf\"\n- 1742 {(int)offsetof(struct stringpool_t, stringpool_str663), 82},\n- 1743#line 281 \"charset_lookup.gperf\"\n- 1744 {(int)offsetof(struct stringpool_t, stringpool_str664), 61},\n- 1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1746 {-1,-1}, {-1,-1}, {-1,-1},\n- 1747#line 217 \"charset_lookup.gperf\"\n- 1748 {(int)offsetof(struct stringpool_t, stringpool_str674), 60},\n- 1749 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1750 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1751 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1752 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1753#line 245 \"charset_lookup.gperf\"\n- 1754 {(int)offsetof(struct stringpool_t, stringpool_str697), 70},\n- 1755 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1756 {-1,-1}, {-1,-1},\n- 1757#line 290 \"charset_lookup.gperf\"\n- 1758 {(int)offsetof(struct stringpool_t, stringpool_str706), 3},\n- 1759 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1762#line 83 \"charset_lookup.gperf\"\n- 1763 {(int)offsetof(struct stringpool_t, stringpool_str723), 25},\n- 1764 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1765 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1766 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1767 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1768#line 248 \"charset_lookup.gperf\"\n- 1769 {(int)offsetof(struct stringpool_t, stringpool_str748), 73},\n- 1770 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1771 {-1,-1},\n- 1772#line 304 \"charset_lookup.gperf\"\n- 1773 {(int)offsetof(struct stringpool_t, stringpool_str756), 20},\n- 1774 {-1,-1},\n- 1775#line 276 \"charset_lookup.gperf\"\n- 1776 {(int)offsetof(struct stringpool_t, stringpool_str758), 85},\n- 1777 {-1,-1}, {-1,-1}, {-1,-1},\n- 1778#line 81 \"charset_lookup.gperf\"\n- 1779 {(int)offsetof(struct stringpool_t, stringpool_str762), 69},\n- 1780 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1781 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1782 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1783 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1784 {-1,-1},\n- 1785#line 57 \"charset_lookup.gperf\"\n- 1786 {(int)offsetof(struct stringpool_t, stringpool_str788), 64},\n- 1787 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1788 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1791 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1792 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1793 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1799 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1800 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1803#line 250 \"charset_lookup.gperf\"\n- 1804 {(int)offsetof(struct stringpool_t, stringpool_str884), 75},\n- 1805 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1806 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1807 {-1,-1}, {-1,-1},\n- 1808#line 256 \"charset_lookup.gperf\"\n- 1809 {(int)offsetof(struct stringpool_t, stringpool_str899), 79},\n- 1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1811#line 82 \"charset_lookup.gperf\"\n- 1812 {(int)offsetof(struct stringpool_t, stringpool_str905), 24},\n- 1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1814 {-1,-1}, {-1,-1}, {-1,-1},\n- 1815#line 55 \"charset_lookup.gperf\"\n- 1816 {(int)offsetof(struct stringpool_t, stringpool_str915), 34},\n- 1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1820 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1821 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1823 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1824 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1825 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1829 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1830 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1833 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1834 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1835 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n- 1844 {-1,-1},\n- 1845#line 54 \"charset_lookup.gperf\"\n- 1846 {(int)offsetof(struct stringpool_t, stringpool_str1079), 32}\n- 1847 };\n- 1848\n- 1849 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n- 1850 {\n- 1851 register unsigned int key = hash_charset (str, len);\n- 1852\n- 1853 if (key <= MAX_HASH_VALUE)\n- 1854 {\n- 1855 register int o = wordlist[key].alias_pos;\n- 1856 if (o >= 0)\n- 1857 {\n- 1858 register const char *s = o + stringpool;\n- 1859\n- 1860 if (*str == *s && !strcmp (str + 1, s + 1))\n- 1861 return &wordlist[key];\n- 1862 }\n- 1863 }\n- 1864 }\n- 1865 return 0;\n- 1866}\n- 1867#line 381 \"charset_lookup.gperf\"\n- 1868\n+ 45#include \n+ 46\n+ 47#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */\n+ 48#define RPP_ECHO_ON 0x01 /* Leave echo on. */\n+ 49#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */\n+ 50#define RPP_FORCELOWER 0x04 /* Force input to lower case. */\n+ 51#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */\n+ 52#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */\n+ 53#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */\n+ 54\n+ 55#undef readpassphrase\n+ 56char * tds_readpassphrase(const char *, char *, size_t, int);\n+ 57#define readpassphrase tds_readpassphrase\n+ 58\n+ 59#include \n+ 60\n+ 61#endif /* !HAVE_READPASSPHRASE */\n+ 62\n+ 63#endif /* !FREETDS_READPASSPHRASE_H_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00395_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00395_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/bool.h Source File\n+FreeTDS API: include/freetds/replacements/poll.h Source File\n \n \n \n \n \n \n \n@@ -70,64 +70,106 @@\n
    \n \n \n \n \n \n \n
    \n-
    bool.h
    \n+
    poll.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2015 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef freetds_bool_h_
    \n-
    21#define freetds_bool_h_
    \n-
    22
    \n-
    23#ifndef __cplusplus
    \n-
    24
    \n-
    25#ifdef HAVE_STDBOOL_H
    \n-
    26
    \n-
    27#include <stdbool.h>
    \n-
    28
    \n-
    29#else
    \n-
    30
    \n-
    31#undef true
    \n-
    32#undef false
    \n-
    33#undef bool
    \n-
    34typedef unsigned char freetds_boolean_t;
    \n-
    35#define bool freetds_boolean_t
    \n-
    36#define true 1
    \n-
    37#define false 0
    \n-
    38
    \n-
    39#endif
    \n+Go to the documentation of this file.
    1
    \n+
    5#if !defined(_REPLACEMENTS_POLL_H) && !defined(HAVE_POLL)
    \n+
    6#define _REPLACEMENTS_POLL_H
    \n+
    7
    \n+
    8#include <config.h>
    \n+
    9
    \n+
    10#if HAVE_LIMITS_H
    \n+
    11#include <limits.h>
    \n+
    12#endif
    \n+
    13
    \n+
    14#if HAVE_SYS_SELECT_H
    \n+
    15#include <sys/select.h>
    \n+
    16#endif
    \n+
    17
    \n+
    18#if defined(_WIN32)
    \n+
    19#include <winsock2.h>
    \n+
    20#endif
    \n+
    21
    \n+
    22#if defined(__VMS)
    \n+
    23#include <time.h> /* FD_SETSIZE is in here */
    \n+
    24#endif
    \n+
    25
    \n+
    26#if !defined(FD_SETSIZE)
    \n+
    27# if !defined(OPEN_MAX)
    \n+
    28# error cannot establish FD_SETSIZE
    \n+
    29# endif
    \n+
    30#define FD_SETSIZE OPEN_MAX
    \n+
    31#endif
    \n+
    32
    \n+
    33#include <freetds/pushvis.h>
    \n+
    34
    \n+
    35#ifndef _WIN32
    \n+
    36/* poll flags */
    \n+
    37# define POLLIN 0x0001
    \n+
    38# define POLLOUT 0x0004
    \n+
    39# define POLLERR 0x0008
    \n
    40
    \n-
    41#endif
    \n-
    42
    \n-
    43#endif /* freetds_bool_h_ */
    \n+
    41/* synonyms */
    \n+
    42# define POLLNORM POLLIN
    \n+
    43# define POLLPRI POLLIN
    \n+
    44# define POLLRDNORM POLLIN
    \n+
    45# define POLLRDBAND POLLIN
    \n+
    46# define POLLWRNORM POLLOUT
    \n+
    47# define POLLWRBAND POLLOUT
    \n+
    48
    \n+
    49/* ignored */
    \n+
    50# define POLLHUP 0x0010
    \n+
    51# define POLLNVAL 0x0020
    \n+
    \n+
    52typedef struct pollfd {
    \n+
    53 int fd; /* file descriptor to poll */
    \n+
    54 short events; /* events of interest on fd */
    \n+
    55 short revents; /* events that occurred on fd */
    \n+
    56} pollfd_t;
    \n+
    \n+
    57
    \n+
    58#else /* Windows */
    \n+
    59/*
    \n+
    60 * Windows use different constants then Unix
    \n+
    61 * Newer version have a WSAPoll which is equal to Unix poll
    \n+
    62 */
    \n+
    63# if !defined(POLLRDNORM) && !defined(POLLWRNORM)
    \n+
    64# define POLLIN 0x0300
    \n+
    65# define POLLOUT 0x0010
    \n+
    66# define POLLERR 0x0001
    \n+
    67# define POLLRDNORM 0x0100
    \n+
    68# define POLLWRNORM 0x0010
    \n+
    69typedef struct pollfd {
    \n+
    70 SOCKET fd; /* file descriptor to poll */
    \n+
    71 short events; /* events of interest on fd */
    \n+
    72 short revents; /* events that occurred on fd */
    \n+
    73} pollfd_t;
    \n+
    74# else
    \n+
    75typedef struct pollfd pollfd_t;
    \n+
    76# endif
    \n+
    77#endif
    \n+
    78
    \n+
    79#undef poll
    \n+
    80int tds_poll(struct pollfd fds[], int nfds, int timeout);
    \n+
    81#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)
    \n+
    82
    \n+
    83#include <freetds/popvis.h>
    \n+
    84
    \n+
    85#endif
    \n+
    Definition poll.h:52
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,54 +7,97 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-bool.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2015 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef freetds_bool_h_\n- 21#define freetds_bool_h_\n- 22\n- 23#ifndef __cplusplus\n- 24\n- 25#ifdef HAVE_STDBOOL_H\n- 26\n- 27#include \n- 28\n- 29#else\n- 30\n- 31#undef true\n- 32#undef false\n- 33#undef bool\n- 34typedef unsigned char freetds_boolean_t;\n- 35#define bool freetds_boolean_t\n- 36#define true 1\n- 37#define false 0\n- 38\n- 39#endif\n+ * replacements\n+poll.h\n+Go_to_the_documentation_of_this_file.\n+ 1\n+ 5#if !defined(_REPLACEMENTS_POLL_H) && !defined(HAVE_POLL)\n+ 6#define _REPLACEMENTS_POLL_H\n+ 7\n+ 8#include \n+ 9\n+ 10#if HAVE_LIMITS_H\n+ 11#include \n+ 12#endif\n+ 13\n+ 14#if HAVE_SYS_SELECT_H\n+ 15#include \n+ 16#endif\n+ 17\n+ 18#if defined(_WIN32)\n+ 19#include \n+ 20#endif\n+ 21\n+ 22#if defined(__VMS)\n+ 23#include /* FD_SETSIZE is in here */\n+ 24#endif\n+ 25\n+ 26#if !defined(FD_SETSIZE)\n+ 27# if !defined(OPEN_MAX)\n+ 28# error cannot establish FD_SETSIZE\n+ 29# endif\n+ 30#define FD_SETSIZE OPEN_MAX\n+ 31#endif\n+ 32\n+ 33#include \n+ 34\n+ 35#ifndef _WIN32\n+ 36/* poll flags */\n+ 37# define POLLIN 0x0001\n+ 38# define POLLOUT 0x0004\n+ 39# define POLLERR 0x0008\n 40\n- 41#endif\n- 42\n- 43#endif /* freetds_bool_h_ */\n+ 41/* synonyms */\n+ 42# define POLLNORM POLLIN\n+ 43# define POLLPRI POLLIN\n+ 44# define POLLRDNORM POLLIN\n+ 45# define POLLRDBAND POLLIN\n+ 46# define POLLWRNORM POLLOUT\n+ 47# define POLLWRBAND POLLOUT\n+ 48\n+ 49/* ignored */\n+ 50# define POLLHUP 0x0010\n+ 51# define POLLNVAL 0x0020\n+52typedef struct pollfd {\n+ 53 int fd; /* file descriptor to poll */\n+ 54 short events; /* events of interest on fd */\n+ 55 short revents; /* events that occurred on fd */\n+ 56} pollfd_t;\n+ 57\n+ 58#else /* Windows */\n+ 59/*\n+ 60 * Windows use different constants then Unix\n+ 61 * Newer version have a WSAPoll which is equal to Unix poll\n+ 62 */\n+ 63# if !defined(POLLRDNORM) && !defined(POLLWRNORM)\n+ 64# define POLLIN 0x0300\n+ 65# define POLLOUT 0x0010\n+ 66# define POLLERR 0x0001\n+ 67# define POLLRDNORM 0x0100\n+ 68# define POLLWRNORM 0x0010\n+ 69typedef struct pollfd {\n+ 70 SOCKET fd; /* file descriptor to poll */\n+ 71 short events; /* events of interest on fd */\n+ 72 short revents; /* events that occurred on fd */\n+ 73} pollfd_t;\n+ 74# else\n+ 75typedef struct pollfd pollfd_t;\n+ 76# endif\n+ 77#endif\n+ 78\n+ 79#undef poll\n+ 80int tds_poll(struct pollfd fds[], int nfds, int timeout);\n+ 81#define poll(fds, nfds, timeout) tds_poll(fds, nfds, timeout)\n+ 82\n+ 83#include \n+ 84\n+ 85#endif\n+pollfd\n+Definition poll.h:52\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00401_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00401_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/bjoern-utf8.h Source File\n+FreeTDS API: include/freetds/convert.h Source File\n \n \n \n \n \n \n \n@@ -70,52 +70,146 @@\n
    \n \n \n \n \n \n \n
    \n-
    bjoern-utf8.h
    \n+
    convert.h
    \n
    \n
    \n-
    1/*
    \n-
    2 * Copyright (c) 2008-2010 Bjoern Hoehrmann <bjoern@hoehrmann.de>
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n
    3 *
    \n-
    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:
    \n-
    5 *
    \n-
    6 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    \n-
    7 *
    \n-
    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.
    \n-
    9 *
    \n-
    10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.
    \n-
    11 */
    \n-
    12
    \n-
    13#include <tds_sysdep_public.h>
    \n-
    14
    \n-
    15#define UTF8_ACCEPT 0
    \n-
    16#define UTF8_REJECT 12
    \n-
    17
    \n-
    18extern const uint8_t utf8_table[];
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n
    19
    \n-
    20static inline uint32_t
    \n-
    21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)
    \n-
    22{
    \n-
    23 uint32_t type = utf8_table[byte];
    \n+
    20#ifndef _tdsconvert_h_
    \n+
    21#define _tdsconvert_h_
    \n+
    22
    \n+
    23#include <freetds/pushvis.h>
    \n
    24
    \n-
    25 *codep = (*state != UTF8_ACCEPT) ?
    \n-
    26 (byte & 0x3fu) | (*codep << 6) :
    \n-
    27 (0xff >> type) & (byte);
    \n-
    28
    \n-
    29 *state = utf8_table[256 + *state + type];
    \n-
    30 return *state;
    \n-
    31}
    \n+
    25#ifdef __cplusplus
    \n+
    26extern "C"
    \n+
    27{
    \n+
    28#if 0
    \n+
    29}
    \n+
    30#endif
    \n+
    31#endif
    \n+
    32
    \n+
    \n+
    33typedef union conv_result
    \n+
    34{
    \n+
    35 /* fixed */
    \n+
    36 TDS_TINYINT ti;
    \n+
    37 TDS_SMALLINT si;
    \n+
    38 TDS_USMALLINT usi;
    \n+
    39 TDS_INT i;
    \n+
    40 TDS_UINT ui;
    \n+
    41 TDS_INT8 bi;
    \n+
    42 TDS_UINT8 ubi;
    \n+
    43 TDS_FLOAT f;
    \n+
    44 TDS_REAL r;
    \n+
    45 TDS_MONEY m;
    \n+
    46 TDS_MONEY4 m4;
    \n+
    47 TDS_DATETIME dt;
    \n+
    48 TDS_DATETIME4 dt4;
    \n+\n+
    50 TDS_TIME time;
    \n+
    51 TDS_DATE date;
    \n+
    52 TDS_BIGTIME bigtime;
    \n+
    53 TDS_BIGDATETIME bigdatetime;
    \n+\n+
    55 TDS_UNIQUE u;
    \n+
    56
    \n+
    57 /* variable */
    \n+
    58 TDS_CHAR *c;
    \n+
    59 TDS_CHAR *ib;
    \n+
    60
    \n+
    61 /* sized buffer types */
    \n+
    \n+
    62 struct cc_t {
    \n+
    63 TDS_CHAR *c;
    \n+
    64 TDS_UINT len;
    \n+
    65 } cc;
    \n+
    \n+
    \n+
    66 struct cb_t {
    \n+
    67 TDS_CHAR *ib;
    \n+
    68 TDS_UINT len;
    \n+
    69 } cb;
    \n+
    \n+
    70}
    \n+
    \n+\n+
    72
    \n+
    73/*
    \n+
    74 * Failure return codes for tds_convert()
    \n+
    75 */
    \n+
    76#define TDS_CONVERT_FAIL -1 /* unspecified failure */
    \n+
    77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */
    \n+
    78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */
    \n+
    79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */
    \n+
    80#define TDS_CONVERT_OVERFLOW -5 /* result too large */
    \n+
    81
    \n+
    82/* sized types */
    \n+
    83#define TDS_CONVERT_CHAR 256
    \n+
    84#define TDS_CONVERT_BINARY 257
    \n+
    85
    \n+
    86unsigned char tds_willconvert(int srctype, int desttype);
    \n+
    87
    \n+
    88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);
    \n+
    89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, TDS_UINT srclen);
    \n+
    90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr);
    \n+
    91
    \n+
    92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC * timeptr, int prec);
    \n+
    93
    \n+
    94#ifdef __cplusplus
    \n+
    95#if 0
    \n+
    96{
    \n+
    97#endif
    \n+
    98}
    \n+
    99#endif
    \n+
    100
    \n+
    101#include <freetds/popvis.h>
    \n+
    102
    \n+
    103#endif /* _tdsconvert_h_ */
    \n+
    TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)
    Get same type but nullable.
    Definition convert.c:2926
    \n+
    unsigned char tds_willconvert(int srctype, int desttype)
    Test if a conversion is possible.
    Definition convert.c:3106
    \n+
    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:2992
    \n+
    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:1891
    \n+
    Definition convert.h:34
    \n+
    Definition convert.h:62
    \n+
    Definition convert.h:66
    \n+
    Definition proto.h:26
    \n+
    Definition proto.h:39
    \n+
    Definition proto.h:45
    \n+
    Definition proto.h:50
    \n+
    Definition proto.h:56
    \n+
    Definition proto.h:62
    \n+
    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.
    Definition tds.h:146
    \n+
    Used by tds_datecrack.
    Definition tds.h:159
    \n+
    Definition tds.h:1029
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,55 +7,163 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-bjoern-utf8.h\n- 1/*\n- 2 * Copyright (c) 2008-2010 Bjoern Hoehrmann \n+convert.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n 3 *\n- 4 * Permission is hereby granted, free of charge, to any person obtaining a\n-copy of this software and associated documentation files (the \"Software\"), to\n-deal in the Software without restriction, including without limitation the\n-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n-sell copies of the Software, and to permit persons to whom the Software is\n-furnished to do so, subject to the following conditions:\n- 5 *\n- 6 * The above copyright notice and this permission notice shall be included in\n-all copies or substantial portions of the Software.\n- 7 *\n- 8 * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n-SOFTWARE.\n- 9 *\n- 10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.\n- 11 */\n- 12\n- 13#include \n- 14\n- 15#define UTF8_ACCEPT 0\n- 16#define UTF8_REJECT 12\n- 17\n- 18extern const uint8_t utf8_table[];\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n 19\n- 20static inline uint32_t\n- 21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)\n- 22{\n- 23 uint32_t type = utf8_table[byte];\n+ 20#ifndef _tdsconvert_h_\n+ 21#define _tdsconvert_h_\n+ 22\n+ 23#include \n 24\n- 25 *codep = (*state != UTF8_ACCEPT) ?\n- 26 (byte & 0x3fu) | (*codep << 6) :\n- 27 (0xff >> type) & (byte);\n- 28\n- 29 *state = utf8_table[256 + *state + type];\n- 30 return *state;\n- 31}\n+ 25#ifdef __cplusplus\n+ 26extern \"C\"\n+ 27{\n+ 28#if 0\n+ 29}\n+ 30#endif\n+ 31#endif\n+ 32\n+33typedef union conv_result\n+ 34{\n+ 35 /* fixed */\n+ 36 TDS_TINYINT ti;\n+ 37 TDS_SMALLINT si;\n+ 38 TDS_USMALLINT usi;\n+ 39 TDS_INT i;\n+ 40 TDS_UINT ui;\n+ 41 TDS_INT8 bi;\n+ 42 TDS_UINT8 ubi;\n+ 43 TDS_FLOAT f;\n+ 44 TDS_REAL r;\n+ 45 TDS_MONEY m;\n+ 46 TDS_MONEY4 m4;\n+ 47 TDS_DATETIME dt;\n+ 48 TDS_DATETIME4 dt4;\n+ 49 TDS_DATETIMEALL dta;\n+ 50 TDS_TIME time;\n+ 51 TDS_DATE date;\n+ 52 TDS_BIGTIME bigtime;\n+ 53 TDS_BIGDATETIME bigdatetime;\n+ 54 TDS_NUMERIC n;\n+ 55 TDS_UNIQUE u;\n+ 56\n+ 57 /* variable */\n+ 58 TDS_CHAR *c;\n+ 59 TDS_CHAR *ib;\n+ 60\n+ 61 /* sized buffer types */\n+62 struct cc_t {\n+ 63 TDS_CHAR *c;\n+ 64 TDS_UINT len;\n+ 65 } cc;\n+66 struct cb_t {\n+ 67 TDS_CHAR *ib;\n+ 68 TDS_UINT len;\n+ 69 } cb;\n+ 70}\n+ 71CONV_RESULT;\n+ 72\n+ 73/*\n+ 74 * Failure return codes for tds_convert()\n+ 75 */\n+ 76#define TDS_CONVERT_FAIL -1 /* unspecified failure */\n+ 77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */\n+ 78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */\n+ 79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */\n+ 80#define TDS_CONVERT_OVERFLOW -5 /* result too large */\n+ 81\n+ 82/* sized types */\n+ 83#define TDS_CONVERT_CHAR 256\n+ 84#define TDS_CONVERT_BINARY 257\n+ 85\n+ 86unsigned char tds_willconvert(int srctype, int desttype);\n+ 87\n+ 88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);\n+ 89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src,\n+TDS_UINT srclen);\n+ 90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src,\n+TDS_UINT srclen, int desttype, CONV_RESULT *cr);\n+ 91\n+ 92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const\n+TDSDATEREC * timeptr, int prec);\n+ 93\n+ 94#ifdef __cplusplus\n+ 95#if 0\n+ 96{\n+ 97#endif\n+ 98}\n+ 99#endif\n+ 100\n+ 101#include \n+ 102\n+ 103#endif /* _tdsconvert_h_ */\n+tds_get_null_type\n+TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)\n+Get same type but nullable.\n+Definition convert.c:2926\n+tds_willconvert\n+unsigned char tds_willconvert(int srctype, int desttype)\n+Test if a conversion is possible.\n+Definition convert.c:3106\n+tds_strftime\n+size_t tds_strftime(char *buf, size_t maxsize, const char *format, const\n+TDSDATEREC *timeptr, int prec)\n+format a date string according to an \"extended\" strftime(3) formatting\n+definition.\n+Definition convert.c:2992\n+tds_convert\n+TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src,\n+TDS_UINT srclen, int desttype, CONV_RESULT *cr)\n+tds_convert convert a type to another.\n+Definition convert.c:1891\n+conv_result\n+Definition convert.h:34\n+conv_result::cc_t\n+Definition convert.h:62\n+conv_result::cb_t\n+Definition convert.h:66\n+tdsnumeric\n+Definition proto.h:26\n+tdsmoney\n+Definition proto.h:39\n+tdsmoney4\n+Definition proto.h:45\n+tdsdatetime\n+Definition proto.h:50\n+tdsdatetime4\n+Definition proto.h:56\n+tdsunique\n+Definition proto.h:62\n+TDS_DATETIMEALL\n+this structure is not directed connected to a TDS protocol but keeps any DATE/\n+TIME information.\n+Definition tds.h:146\n+tdsdaterec\n+Used by tds_datecrack.\n+Definition tds.h:159\n+tds_context\n+Definition tds.h:1029\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00404_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00404_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/md5.h Source File\n+FreeTDS API: include/freetds/encodings.h Source File\n \n \n \n \n \n \n \n@@ -70,72 +70,587 @@\n
    \n \n \n \n \n \n \n
    \n-
    md5.h
    \n+
    encodings.h
    \n
    \n
    \n-
    1#ifndef MD5_H
    \n-
    2#define MD5_H
    \n-
    3
    \n-
    4#ifndef HAVE_NETTLE
    \n+
    1/*
    \n+
    2 * This file produced from ./encodings.pl on Sat Jan 21 09:01:33 2023
    \n+
    3 */
    \n+
    4#ifdef TDS_ICONV_ENCODING_TABLES
    \n
    5
    \n-
    6#include <freetds/pushvis.h>
    \n-
    7
    \n-
    \n-
    8struct MD5Context {
    \n-
    9 uint32_t buf[4];
    \n-
    10 uint64_t bytes;
    \n-
    11 uint32_t in[16];
    \n-
    12};
    \n-
    \n-
    13
    \n-
    14void MD5Init(struct MD5Context *context);
    \n-
    15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);
    \n-
    16void MD5Final(struct MD5Context *context, uint8_t *digest);
    \n-
    17
    \n-
    18/*
    \n-
    19 * This is needed to make RSAREF happy on some MS-DOS compilers.
    \n-
    20 */
    \n-
    21typedef struct MD5Context MD5_CTX;
    \n-
    22
    \n-
    23#include <freetds/popvis.h>
    \n-
    24
    \n-
    25#else
    \n-
    26
    \n-
    27#include <nettle/md5.h>
    \n-
    28
    \n-
    29typedef struct md5_ctx MD5_CTX;
    \n-
    30
    \n-
    31static inline void MD5Init(MD5_CTX *ctx)
    \n-
    32{
    \n-
    33 nettle_md5_init(ctx);
    \n-
    34}
    \n-
    35
    \n-
    36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)
    \n-
    37{
    \n-
    38 nettle_md5_update(ctx, len, buf);
    \n-
    39}
    \n-
    40
    \n-
    41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)
    \n-
    42{
    \n-
    43 nettle_md5_digest(ctx, 16, digest);
    \n-
    44}
    \n-
    45
    \n-
    46#endif
    \n-
    47
    \n-
    48#endif /* !MD5_H */
    \n-
    Definition md5.h:8
    \n+
    6static const TDS_ENCODING canonic_charsets[] = {
    \n+
    7 { "ISO-8859-1", 1, 1, 0}, /* 0 */
    \n+
    8 { "UTF-8", 1, 4, 1}, /* 1 */
    \n+
    9 { "UCS-2LE", 2, 2, 2}, /* 2 */
    \n+
    10 { "UCS-2BE", 2, 2, 3}, /* 3 */
    \n+
    11 { "ARMSCII-8", 1, 1, 4}, /* 4 */
    \n+
    12 { "BIG-5", 1, 2, 5}, /* 5 */
    \n+
    13 { "BIG5-HKSCS", 1, 2, 6}, /* 6 */
    \n+
    14 { "C99", 1, 1, 7}, /* 7 */
    \n+
    15 { "CHINESE", 1, 1, 8}, /* 8 */
    \n+
    16 { "CN", 1, 1, 9}, /* 9 */
    \n+
    17 { "CN-GB", 1, 2, 10}, /* 10 */
    \n+
    18 { "CN-GB-ISOIR165", 1, 1, 11}, /* 11 */
    \n+
    19 { "CP1133", 1, 1, 12}, /* 12 */
    \n+
    20 { "CP1250", 1, 1, 13}, /* 13 */
    \n+
    21 { "CP1251", 1, 1, 14}, /* 14 */
    \n+
    22 { "CP1252", 1, 1, 15}, /* 15 */
    \n+
    23 { "CP1253", 1, 1, 16}, /* 16 */
    \n+
    24 { "CP1254", 1, 1, 17}, /* 17 */
    \n+
    25 { "CP1255", 1, 1, 18}, /* 18 */
    \n+
    26 { "CP1256", 1, 1, 19}, /* 19 */
    \n+
    27 { "CP1257", 1, 1, 20}, /* 20 */
    \n+
    28 { "CP1258", 1, 1, 21}, /* 21 */
    \n+
    29 { "CP1361", 1, 2, 22}, /* 22 */
    \n+
    30 { "CP437", 1, 1, 23}, /* 23 */
    \n+
    31 { "CP850", 1, 1, 24}, /* 24 */
    \n+
    32 { "CP862", 1, 1, 25}, /* 25 */
    \n+
    33 { "CP866", 1, 1, 26}, /* 26 */
    \n+
    34 { "CP874", 1, 1, 27}, /* 27 */
    \n+
    35 { "CP932", 1, 2, 28}, /* 28 */
    \n+
    36 { "CP936", 1, 2, 29}, /* 29 */
    \n+
    37 { "CP949", 1, 2, 30}, /* 30 */
    \n+
    38 { "CP950", 1, 2, 31}, /* 31 */
    \n+
    39 { "EUC-JP", 1, 3, 32}, /* 32 */
    \n+
    40 { "EUC-KR", 1, 2, 33}, /* 33 */
    \n+
    41 { "EUC-TW", 1, 4, 34}, /* 34 */
    \n+
    42 { "GB18030", 1, 4, 35}, /* 35 */
    \n+
    43 { "GEORGIAN-ACADEMY", 1, 1, 36}, /* 36 */
    \n+
    44 { "GEORGIAN-PS", 1, 1, 37}, /* 37 */
    \n+
    45 { "HZ", 1, 1, 38}, /* 38 */
    \n+
    46 { "ISO-2022-CN", 1, 4, 39}, /* 39 */
    \n+
    47 { "ISO-2022-CN-EXT", 1, 4, 40}, /* 40 */
    \n+
    48 { "ISO-2022-JP", 1, 1, 41}, /* 41 */
    \n+
    49 { "ISO-2022-JP-1", 1, 1, 42}, /* 42 */
    \n+
    50 { "ISO-2022-JP-2", 1, 1, 43}, /* 43 */
    \n+
    51 { "ISO-2022-KR", 1, 2, 44}, /* 44 */
    \n+
    52 { "ISO-8859-10", 1, 1, 45}, /* 45 */
    \n+
    53 { "ISO-8859-13", 1, 1, 46}, /* 46 */
    \n+
    54 { "ISO-8859-14", 1, 1, 47}, /* 47 */
    \n+
    55 { "ISO-8859-15", 1, 1, 48}, /* 48 */
    \n+
    56 { "ISO-8859-16", 1, 1, 49}, /* 49 */
    \n+
    57 { "ISO-8859-2", 1, 1, 50}, /* 50 */
    \n+
    58 { "ISO-8859-3", 1, 1, 51}, /* 51 */
    \n+
    59 { "ISO-8859-4", 1, 1, 52}, /* 52 */
    \n+
    60 { "ISO-8859-5", 1, 1, 53}, /* 53 */
    \n+
    61 { "ISO-8859-6", 1, 1, 54}, /* 54 */
    \n+
    62 { "ISO-8859-7", 1, 1, 55}, /* 55 */
    \n+
    63 { "ISO-8859-8", 1, 1, 56}, /* 56 */
    \n+
    64 { "ISO-8859-9", 1, 1, 57}, /* 57 */
    \n+
    65 { "ISO-IR-14", 1, 1, 58}, /* 58 */
    \n+
    66 { "ISO-IR-149", 1, 1, 59}, /* 59 */
    \n+
    67 { "ISO-IR-159", 1, 1, 60}, /* 60 */
    \n+
    68 { "ISO-IR-166", 1, 1, 61}, /* 61 */
    \n+
    69 { "ISO-IR-87", 1, 1, 62}, /* 62 */
    \n+
    70 { "JAVA", 1, 1, 63}, /* 63 */
    \n+
    71 { "JISX0201-1976", 1, 1, 64}, /* 64 */
    \n+
    72 { "KOI8-R", 1, 1, 65}, /* 65 */
    \n+
    73 { "KOI8-RU", 1, 1, 66}, /* 66 */
    \n+
    74 { "KOI8-T", 1, 1, 67}, /* 67 */
    \n+
    75 { "KOI8-U", 1, 1, 68}, /* 68 */
    \n+
    76 { "MAC", 1, 1, 69}, /* 69 */
    \n+
    77 { "MACARABIC", 1, 1, 70}, /* 70 */
    \n+
    78 { "MACCENTRALEUROPE", 1, 1, 71}, /* 71 */
    \n+
    79 { "MACCROATIAN", 1, 1, 72}, /* 72 */
    \n+
    80 { "MACCYRILLIC", 1, 1, 73}, /* 73 */
    \n+
    81 { "MACGREEK", 1, 1, 74}, /* 74 */
    \n+
    82 { "MACHEBREW", 1, 1, 75}, /* 75 */
    \n+
    83 { "MACICELAND", 1, 1, 76}, /* 76 */
    \n+
    84 { "MACROMANIA", 1, 1, 77}, /* 77 */
    \n+
    85 { "MACTHAI", 1, 1, 78}, /* 78 */
    \n+
    86 { "MACTURKISH", 1, 1, 79}, /* 79 */
    \n+
    87 { "MACUKRAINE", 1, 1, 80}, /* 80 */
    \n+
    88 { "MULELAO-1", 1, 1, 81}, /* 81 */
    \n+
    89 { "NEXTSTEP", 1, 1, 82}, /* 82 */
    \n+
    90 { "ROMAN8", 1, 1, 83}, /* 83 */
    \n+
    91 { "SJIS", 1, 2, 84}, /* 84 */
    \n+
    92 { "TCVN", 1, 1, 85}, /* 85 */
    \n+
    93 { "UCS-4BE", 4, 4, 86}, /* 86 */
    \n+
    94 { "UCS-4LE", 4, 4, 87}, /* 87 */
    \n+
    95 { "US-ASCII", 1, 1, 88}, /* 88 */
    \n+
    96 { "UTF-16BE", 2, 4, 89}, /* 89 */
    \n+
    97 { "UTF-16LE", 2, 4, 90}, /* 90 */
    \n+
    98 { "UTF-32BE", 4, 4, 91}, /* 91 */
    \n+
    99 { "UTF-32LE", 4, 4, 92}, /* 92 */
    \n+
    100 { "UTF-7", 1, 4, 93}, /* 93 */
    \n+
    101 { "VISCII", 1, 1, 94}, /* 94 */
    \n+
    102};
    \n+
    103
    \n+
    104static const CHARACTER_SET_ALIAS iconv_aliases[] = {
    \n+
    105 { "646", 88 },
    \n+
    106 { "850", 24 },
    \n+
    107 { "862", 25 },
    \n+
    108 { "866", 26 },
    \n+
    109 { "ANSI_X3.4-1968", 88 },
    \n+
    110 { "ANSI_X3.4-1986", 88 },
    \n+
    111 { "ARABIC", 54 },
    \n+
    112 { "ARMSCII-8", 4 },
    \n+
    113 { "ASCII", 88 },
    \n+
    114 { "ASMO-708", 54 },
    \n+
    115 { "BIG-5", 5 },
    \n+
    116 { "BIG-FIVE", 5 },
    \n+
    117 { "BIG5", 5 },
    \n+
    118 { "BIG5-HKSCS", 6 },
    \n+
    119 { "BIG5HKSCS", 6 },
    \n+
    120 { "BIGFIVE", 5 },
    \n+
    121 { "C99", 7 },
    \n+
    122 { "CHINESE", 8 },
    \n+
    123 { "CN", 9 },
    \n+
    124 { "CN-BIG5", 5 },
    \n+
    125 { "CN-GB", 10 },
    \n+
    126 { "CN-GB-ISOIR165", 11 },
    \n+
    127 { "CP1133", 12 },
    \n+
    128 { "CP1250", 13 },
    \n+
    129 { "CP1251", 14 },
    \n+
    130 { "CP1252", 15 },
    \n+
    131 { "CP1253", 16 },
    \n+
    132 { "CP1254", 17 },
    \n+
    133 { "CP1255", 18 },
    \n+
    134 { "CP1256", 19 },
    \n+
    135 { "CP1257", 20 },
    \n+
    136 { "CP1258", 21 },
    \n+
    137 { "CP1361", 22 },
    \n+
    138 { "CP367", 88 },
    \n+
    139 { "CP437", 23 },
    \n+
    140 { "CP819", 0 },
    \n+
    141 { "CP850", 24 },
    \n+
    142 { "CP862", 25 },
    \n+
    143 { "CP866", 26 },
    \n+
    144 { "CP874", 27 },
    \n+
    145 { "CP932", 28 },
    \n+
    146 { "CP936", 29 },
    \n+
    147 { "CP949", 30 },
    \n+
    148 { "CP950", 31 },
    \n+
    149 { "CSASCII", 88 },
    \n+
    150 { "CSBIG5", 5 },
    \n+
    151 { "CSEUCKR", 33 },
    \n+
    152 { "CSEUCPKDFMTJAPANESE", 32 },
    \n+
    153 { "CSEUCTW", 34 },
    \n+
    154 { "CSGB2312", 10 },
    \n+
    155 { "CSHALFWIDTHKATAKANA", 64 },
    \n+
    156 { "CSHPROMAN8", 83 },
    \n+
    157 { "CSIBM866", 26 },
    \n+
    158 { "CSISO14JISC6220RO", 58 },
    \n+
    159 { "CSISO159JISX02121990", 60 },
    \n+
    160 { "CSISO2022CN", 39 },
    \n+
    161 { "CSISO2022JP", 41 },
    \n+
    162 { "CSISO2022JP2", 43 },
    \n+
    163 { "CSISO2022KR", 44 },
    \n+
    164 { "CSISO57GB1988", 9 },
    \n+
    165 { "CSISO58GB231280", 8 },
    \n+
    166 { "CSISO87JISX0208", 62 },
    \n+
    167 { "CSISOLATIN1", 0 },
    \n+
    168 { "CSISOLATIN2", 50 },
    \n+
    169 { "CSISOLATIN3", 51 },
    \n+
    170 { "CSISOLATIN4", 52 },
    \n+
    171 { "CSISOLATIN5", 57 },
    \n+
    172 { "CSISOLATIN6", 45 },
    \n+
    173 { "CSISOLATINARABIC", 54 },
    \n+
    174 { "CSISOLATINCYRILLIC", 53 },
    \n+
    175 { "CSISOLATINGREEK", 55 },
    \n+
    176 { "CSISOLATINHEBREW", 56 },
    \n+
    177 { "CSKOI8R", 65 },
    \n+
    178 { "CSKSC56011987", 59 },
    \n+
    179 { "CSMACINTOSH", 69 },
    \n+
    180 { "CSPC850MULTILINGUAL", 24 },
    \n+
    181 { "CSPC862LATINHEBREW", 25 },
    \n+
    182 { "CSSHIFTJIS", 84 },
    \n+
    183 { "CSUNICODE11", 3 },
    \n+
    184 { "CSUNICODE11UTF7", 93 },
    \n+
    185 { "CSVISCII", 94 },
    \n+
    186 { "CYRILLIC", 53 },
    \n+
    187 { "ECMA-114", 54 },
    \n+
    188 { "ECMA-118", 55 },
    \n+
    189 { "ELOT_928", 55 },
    \n+
    190 { "EUC-CN", 10 },
    \n+
    191 { "EUC-JP", 32 },
    \n+
    192 { "EUC-KR", 33 },
    \n+
    193 { "EUC-TW", 34 },
    \n+
    194 { "EUCCN", 10 },
    \n+
    195 { "EUCJP", 32 },
    \n+
    196 { "EUCKR", 33 },
    \n+
    197 { "EUCTW", 34 },
    \n+
    198 {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", 32 },
    \n+
    199 { "GB18030", 35 },
    \n+
    200 { "GB2312", 10 },
    \n+
    201 { "GBK", 29 },
    \n+
    202 { "GB_1988-80", 9 },
    \n+
    203 { "GB_2312-80", 8 },
    \n+
    204 { "GEORGIAN-ACADEMY", 36 },
    \n+
    205 { "GEORGIAN-PS", 37 },
    \n+
    206 { "GREEK", 55 },
    \n+
    207 { "GREEK8", 55 },
    \n+
    208 { "HEBREW", 56 },
    \n+
    209 { "HP-ROMAN8", 83 },
    \n+
    210 { "HZ", 38 },
    \n+
    211 { "HZ-GB-2312", 38 },
    \n+
    212 { "IBM-CP1133", 12 },
    \n+
    213 { "IBM367", 88 },
    \n+
    214 { "IBM437", 23 },
    \n+
    215 { "IBM819", 0 },
    \n+
    216 { "IBM850", 24 },
    \n+
    217 { "IBM862", 25 },
    \n+
    218 { "IBM866", 26 },
    \n+
    219 { "ISO-2022-CN", 39 },
    \n+
    220 { "ISO-2022-CN-EXT", 40 },
    \n+
    221 { "ISO-2022-JP", 41 },
    \n+
    222 { "ISO-2022-JP-1", 42 },
    \n+
    223 { "ISO-2022-JP-2", 43 },
    \n+
    224 { "ISO-2022-KR", 44 },
    \n+
    225 { "ISO-8859-1", 0 },
    \n+
    226 { "ISO-8859-10", 45 },
    \n+
    227 { "ISO-8859-13", 46 },
    \n+
    228 { "ISO-8859-14", 47 },
    \n+
    229 { "ISO-8859-15", 48 },
    \n+
    230 { "ISO-8859-16", 49 },
    \n+
    231 { "ISO-8859-2", 50 },
    \n+
    232 { "ISO-8859-3", 51 },
    \n+
    233 { "ISO-8859-4", 52 },
    \n+
    234 { "ISO-8859-5", 53 },
    \n+
    235 { "ISO-8859-6", 54 },
    \n+
    236 { "ISO-8859-7", 55 },
    \n+
    237 { "ISO-8859-8", 56 },
    \n+
    238 { "ISO-8859-9", 57 },
    \n+
    239 { "ISO-CELTIC", 47 },
    \n+
    240 { "ISO-IR-100", 0 },
    \n+
    241 { "ISO-IR-101", 50 },
    \n+
    242 { "ISO-IR-109", 51 },
    \n+
    243 { "ISO-IR-110", 52 },
    \n+
    244 { "ISO-IR-126", 55 },
    \n+
    245 { "ISO-IR-127", 54 },
    \n+
    246 { "ISO-IR-138", 56 },
    \n+
    247 { "ISO-IR-14", 58 },
    \n+
    248 { "ISO-IR-144", 53 },
    \n+
    249 { "ISO-IR-148", 57 },
    \n+
    250 { "ISO-IR-149", 59 },
    \n+
    251 { "ISO-IR-157", 45 },
    \n+
    252 { "ISO-IR-159", 60 },
    \n+
    253 { "ISO-IR-165", 11 },
    \n+
    254 { "ISO-IR-166", 61 },
    \n+
    255 { "ISO-IR-179", 46 },
    \n+
    256 { "ISO-IR-199", 47 },
    \n+
    257 { "ISO-IR-203", 48 },
    \n+
    258 { "ISO-IR-226", 49 },
    \n+
    259 { "ISO-IR-57", 9 },
    \n+
    260 { "ISO-IR-58", 8 },
    \n+
    261 { "ISO-IR-6", 88 },
    \n+
    262 { "ISO-IR-87", 62 },
    \n+
    263 { "ISO646-CN", 9 },
    \n+
    264 { "ISO646-JP", 58 },
    \n+
    265 { "ISO646-US", 88 },
    \n+
    266 { "ISO8859-1", 0 },
    \n+
    267 { "ISO8859-10", 45 },
    \n+
    268 { "ISO8859-15", 48 },
    \n+
    269 { "ISO8859-2", 50 },
    \n+
    270 { "ISO8859-4", 52 },
    \n+
    271 { "ISO8859-5", 53 },
    \n+
    272 { "ISO8859-6", 54 },
    \n+
    273 { "ISO8859-7", 55 },
    \n+
    274 { "ISO8859-8", 56 },
    \n+
    275 { "ISO8859-9", 57 },
    \n+
    276 { "ISO_646.IRV:1991", 88 },
    \n+
    277 { "ISO_8859-1", 0 },
    \n+
    278 { "ISO_8859-10", 45 },
    \n+
    279 { "ISO_8859-10:1992", 45 },
    \n+
    280 { "ISO_8859-13", 46 },
    \n+
    281 { "ISO_8859-14", 47 },
    \n+
    282 { "ISO_8859-14:1998", 47 },
    \n+
    283 { "ISO_8859-15", 48 },
    \n+
    284 { "ISO_8859-15:1998", 48 },
    \n+
    285 { "ISO_8859-16", 49 },
    \n+
    286 { "ISO_8859-16:2000", 49 },
    \n+
    287 { "ISO_8859-1:1987", 0 },
    \n+
    288 { "ISO_8859-2", 50 },
    \n+
    289 { "ISO_8859-2:1987", 50 },
    \n+
    290 { "ISO_8859-3", 51 },
    \n+
    291 { "ISO_8859-3:1988", 51 },
    \n+
    292 { "ISO_8859-4", 52 },
    \n+
    293 { "ISO_8859-4:1988", 52 },
    \n+
    294 { "ISO_8859-5", 53 },
    \n+
    295 { "ISO_8859-5:1988", 53 },
    \n+
    296 { "ISO_8859-6", 54 },
    \n+
    297 { "ISO_8859-6:1987", 54 },
    \n+
    298 { "ISO_8859-7", 55 },
    \n+
    299 { "ISO_8859-7:1987", 55 },
    \n+
    300 { "ISO_8859-8", 56 },
    \n+
    301 { "ISO_8859-8:1988", 56 },
    \n+
    302 { "ISO_8859-9", 57 },
    \n+
    303 { "ISO_8859-9:1989", 57 },
    \n+
    304 { "JAVA", 63 },
    \n+
    305 { "JIS0208", 62 },
    \n+
    306 { "JISX0201-1976", 64 },
    \n+
    307 { "JIS_C6220-1969-RO", 58 },
    \n+
    308 { "JIS_C6226-1983", 62 },
    \n+
    309 { "JIS_X0201", 64 },
    \n+
    310 { "JIS_X0208", 62 },
    \n+
    311 { "JIS_X0208-1983", 62 },
    \n+
    312 { "JIS_X0208-1990", 62 },
    \n+
    313 { "JIS_X0212", 60 },
    \n+
    314 { "JIS_X0212-1990", 60 },
    \n+
    315 { "JIS_X0212.1990-0", 60 },
    \n+
    316 { "JOHAB", 22 },
    \n+
    317 { "JP", 58 },
    \n+
    318 { "KOI8-R", 65 },
    \n+
    319 { "KOI8-RU", 66 },
    \n+
    320 { "KOI8-T", 67 },
    \n+
    321 { "KOI8-U", 68 },
    \n+
    322 { "KOREAN", 59 },
    \n+
    323 { "KSC_5601", 59 },
    \n+
    324 { "KS_C_5601-1987", 59 },
    \n+
    325 { "KS_C_5601-1989", 59 },
    \n+
    326 { "L1", 0 },
    \n+
    327 { "L2", 50 },
    \n+
    328 { "L3", 51 },
    \n+
    329 { "L4", 52 },
    \n+
    330 { "L5", 57 },
    \n+
    331 { "L6", 45 },
    \n+
    332 { "L7", 46 },
    \n+
    333 { "L8", 47 },
    \n+
    334 { "LATIN1", 0 },
    \n+
    335 { "LATIN2", 50 },
    \n+
    336 { "LATIN3", 51 },
    \n+
    337 { "LATIN4", 52 },
    \n+
    338 { "LATIN5", 57 },
    \n+
    339 { "LATIN6", 45 },
    \n+
    340 { "LATIN7", 46 },
    \n+
    341 { "LATIN8", 47 },
    \n+
    342 { "MAC", 69 },
    \n+
    343 { "MACARABIC", 70 },
    \n+
    344 { "MACCENTRALEUROPE", 71 },
    \n+
    345 { "MACCROATIAN", 72 },
    \n+
    346 { "MACCYRILLIC", 73 },
    \n+
    347 { "MACGREEK", 74 },
    \n+
    348 { "MACHEBREW", 75 },
    \n+
    349 { "MACICELAND", 76 },
    \n+
    350 { "MACINTOSH", 69 },
    \n+
    351 { "MACROMAN", 69 },
    \n+
    352 { "MACROMANIA", 77 },
    \n+
    353 { "MACTHAI", 78 },
    \n+
    354 { "MACTURKISH", 79 },
    \n+
    355 { "MACUKRAINE", 80 },
    \n+
    356 { "MS-ANSI", 15 },
    \n+
    357 { "MS-ARAB", 19 },
    \n+
    358 { "MS-CYRL", 14 },
    \n+
    359 { "MS-EE", 13 },
    \n+
    360 { "MS-GREEK", 16 },
    \n+
    361 { "MS-HEBR", 18 },
    \n+
    362 { "MS-TURK", 17 },
    \n+
    363 { "MS_KANJI", 84 },
    \n+
    364 { "MULELAO-1", 81 },
    \n+
    365 { "NEXTSTEP", 82 },
    \n+
    366 { "R8", 83 },
    \n+
    367 { "ROMAN8", 83 },
    \n+
    368 { "SHIFT-JIS", 84 },
    \n+
    369 { "SHIFT_JIS", 84 },
    \n+
    370 { "SJIS", 84 },
    \n+
    371 { "TCVN", 85 },
    \n+
    372 { "TCVN-5712", 85 },
    \n+
    373 { "TCVN5712-1", 85 },
    \n+
    374 { "TCVN5712-1:1993", 85 },
    \n+
    375 { "TIS-620", 61 },
    \n+
    376 { "TIS620", 61 },
    \n+
    377 { "TIS620-0", 61 },
    \n+
    378 { "TIS620.2529-1", 61 },
    \n+
    379 { "TIS620.2533-0", 61 },
    \n+
    380 { "TIS620.2533-1", 61 },
    \n+
    381 { "UCS-2BE", 3 },
    \n+
    382 { "UCS-2LE", 2 },
    \n+
    383 { "UCS-4BE", 86 },
    \n+
    384 { "UCS-4LE", 87 },
    \n+
    385 { "UHC", 30 },
    \n+
    386 { "UNICODE-1-1", 3 },
    \n+
    387 { "UNICODE-1-1-UTF-7", 93 },
    \n+
    388 { "UNICODEBIG", 3 },
    \n+
    389 { "UNICODELITTLE", 2 },
    \n+
    390 { "US", 88 },
    \n+
    391 { "US-ASCII", 88 },
    \n+
    392 { "UTF-16BE", 89 },
    \n+
    393 { "UTF-16LE", 90 },
    \n+
    394 { "UTF-32BE", 91 },
    \n+
    395 { "UTF-32LE", 92 },
    \n+
    396 { "UTF-7", 93 },
    \n+
    397 { "UTF-8", 1 },
    \n+
    398 { "UTF7", 93 },
    \n+
    399 { "UTF8", 1 },
    \n+
    400 { "VISCII", 94 },
    \n+
    401 { "VISCII1.1-1", 94 },
    \n+
    402 { "WINBALTRIM", 20 },
    \n+
    403 { "WINDOWS-1250", 13 },
    \n+
    404 { "WINDOWS-1251", 14 },
    \n+
    405 { "WINDOWS-1252", 15 },
    \n+
    406 { "WINDOWS-1253", 16 },
    \n+
    407 { "WINDOWS-1254", 17 },
    \n+
    408 { "WINDOWS-1255", 18 },
    \n+
    409 { "WINDOWS-1256", 19 },
    \n+
    410 { "WINDOWS-1257", 20 },
    \n+
    411 { "WINDOWS-1258", 21 },
    \n+
    412 { "WINDOWS-874", 27 },
    \n+
    413 { "X0201", 64 },
    \n+
    414 { "X0208", 62 },
    \n+
    415 { "X0212", 60 },
    \n+
    416 { "big5", 5 },
    \n+
    417 { "cp1250", 13 },
    \n+
    418 { "cp1251", 14 },
    \n+
    419 { "cp1252", 15 },
    \n+
    420 { "cp1253", 16 },
    \n+
    421 { "cp1254", 17 },
    \n+
    422 { "cp1255", 18 },
    \n+
    423 { "cp1256", 19 },
    \n+
    424 { "cp1257", 20 },
    \n+
    425 { "cp1258", 21 },
    \n+
    426 { "cp437", 23 },
    \n+
    427 { "cp850", 24 },
    \n+
    428 { "cp862", 25 },
    \n+
    429 { "cp866", 26 },
    \n+
    430 { "cp874", 27 },
    \n+
    431 { "eucJP", 32 },
    \n+
    432 { "eucKR", 33 },
    \n+
    433 { "eucTW", 34 },
    \n+
    434 { "hp15CN", 8 },
    \n+
    435 { "iso81", 0 },
    \n+
    436 { "iso815", 48 },
    \n+
    437 { "iso82", 50 },
    \n+
    438 { "iso83", 51 },
    \n+
    439 { "iso84", 52 },
    \n+
    440 { "iso85", 53 },
    \n+
    441 { "iso86", 54 },
    \n+
    442 { "iso87", 55 },
    \n+
    443 { "iso88", 56 },
    \n+
    444 { "iso88591", 0 },
    \n+
    445 { "iso885915", 48 },
    \n+
    446 { "iso88592", 50 },
    \n+
    447 { "iso88593", 51 },
    \n+
    448 { "iso88594", 52 },
    \n+
    449 { "iso88595", 53 },
    \n+
    450 { "iso88596", 54 },
    \n+
    451 { "iso88597", 55 },
    \n+
    452 { "iso88598", 56 },
    \n+
    453 { "iso88599", 57 },
    \n+
    454 { "iso89", 57 },
    \n+
    455 { "roma8", 83 },
    \n+
    456 { "roman8", 83 },
    \n+
    457 { "sjis", 84 },
    \n+
    458 { "thai8", 61 },
    \n+
    459 { "tis620", 61 },
    \n+
    460 { "utf8", 1 },
    \n+
    461 {NULL, 0}
    \n+
    462};
    \n+
    463
    \n+
    464#endif
    \n+
    465
    \n+
    466enum {
    \n+
    467 TDS_CHARSET_ISO_8859_1 = 0,
    \n+
    468 TDS_CHARSET_UTF_8 = 1,
    \n+
    469 TDS_CHARSET_UCS_2LE = 2,
    \n+
    470 TDS_CHARSET_UCS_2BE = 3,
    \n+
    471 TDS_CHARSET_ARMSCII_8 = 4,
    \n+
    472 TDS_CHARSET_BIG_5 = 5,
    \n+
    473 TDS_CHARSET_BIG5_HKSCS = 6,
    \n+
    474 TDS_CHARSET_C99 = 7,
    \n+
    475 TDS_CHARSET_CHINESE = 8,
    \n+
    476 TDS_CHARSET_CN = 9,
    \n+
    477 TDS_CHARSET_CN_GB = 10,
    \n+
    478 TDS_CHARSET_CN_GB_ISOIR165 = 11,
    \n+
    479 TDS_CHARSET_CP1133 = 12,
    \n+
    480 TDS_CHARSET_CP1250 = 13,
    \n+
    481 TDS_CHARSET_CP1251 = 14,
    \n+
    482 TDS_CHARSET_CP1252 = 15,
    \n+
    483 TDS_CHARSET_CP1253 = 16,
    \n+
    484 TDS_CHARSET_CP1254 = 17,
    \n+
    485 TDS_CHARSET_CP1255 = 18,
    \n+
    486 TDS_CHARSET_CP1256 = 19,
    \n+
    487 TDS_CHARSET_CP1257 = 20,
    \n+
    488 TDS_CHARSET_CP1258 = 21,
    \n+
    489 TDS_CHARSET_CP1361 = 22,
    \n+
    490 TDS_CHARSET_CP437 = 23,
    \n+
    491 TDS_CHARSET_CP850 = 24,
    \n+
    492 TDS_CHARSET_CP862 = 25,
    \n+
    493 TDS_CHARSET_CP866 = 26,
    \n+
    494 TDS_CHARSET_CP874 = 27,
    \n+
    495 TDS_CHARSET_CP932 = 28,
    \n+
    496 TDS_CHARSET_CP936 = 29,
    \n+
    497 TDS_CHARSET_CP949 = 30,
    \n+
    498 TDS_CHARSET_CP950 = 31,
    \n+
    499 TDS_CHARSET_EUC_JP = 32,
    \n+
    500 TDS_CHARSET_EUC_KR = 33,
    \n+
    501 TDS_CHARSET_EUC_TW = 34,
    \n+
    502 TDS_CHARSET_GB18030 = 35,
    \n+
    503 TDS_CHARSET_GEORGIAN_ACADEMY = 36,
    \n+
    504 TDS_CHARSET_GEORGIAN_PS = 37,
    \n+
    505 TDS_CHARSET_HZ = 38,
    \n+
    506 TDS_CHARSET_ISO_2022_CN = 39,
    \n+
    507 TDS_CHARSET_ISO_2022_CN_EXT = 40,
    \n+
    508 TDS_CHARSET_ISO_2022_JP = 41,
    \n+
    509 TDS_CHARSET_ISO_2022_JP_1 = 42,
    \n+
    510 TDS_CHARSET_ISO_2022_JP_2 = 43,
    \n+
    511 TDS_CHARSET_ISO_2022_KR = 44,
    \n+
    512 TDS_CHARSET_ISO_8859_10 = 45,
    \n+
    513 TDS_CHARSET_ISO_8859_13 = 46,
    \n+
    514 TDS_CHARSET_ISO_8859_14 = 47,
    \n+
    515 TDS_CHARSET_ISO_8859_15 = 48,
    \n+
    516 TDS_CHARSET_ISO_8859_16 = 49,
    \n+
    517 TDS_CHARSET_ISO_8859_2 = 50,
    \n+
    518 TDS_CHARSET_ISO_8859_3 = 51,
    \n+
    519 TDS_CHARSET_ISO_8859_4 = 52,
    \n+
    520 TDS_CHARSET_ISO_8859_5 = 53,
    \n+
    521 TDS_CHARSET_ISO_8859_6 = 54,
    \n+
    522 TDS_CHARSET_ISO_8859_7 = 55,
    \n+
    523 TDS_CHARSET_ISO_8859_8 = 56,
    \n+
    524 TDS_CHARSET_ISO_8859_9 = 57,
    \n+
    525 TDS_CHARSET_ISO_IR_14 = 58,
    \n+
    526 TDS_CHARSET_ISO_IR_149 = 59,
    \n+
    527 TDS_CHARSET_ISO_IR_159 = 60,
    \n+
    528 TDS_CHARSET_ISO_IR_166 = 61,
    \n+
    529 TDS_CHARSET_ISO_IR_87 = 62,
    \n+
    530 TDS_CHARSET_JAVA = 63,
    \n+
    531 TDS_CHARSET_JISX0201_1976 = 64,
    \n+
    532 TDS_CHARSET_KOI8_R = 65,
    \n+
    533 TDS_CHARSET_KOI8_RU = 66,
    \n+
    534 TDS_CHARSET_KOI8_T = 67,
    \n+
    535 TDS_CHARSET_KOI8_U = 68,
    \n+
    536 TDS_CHARSET_MAC = 69,
    \n+
    537 TDS_CHARSET_MACARABIC = 70,
    \n+
    538 TDS_CHARSET_MACCENTRALEUROPE = 71,
    \n+
    539 TDS_CHARSET_MACCROATIAN = 72,
    \n+
    540 TDS_CHARSET_MACCYRILLIC = 73,
    \n+
    541 TDS_CHARSET_MACGREEK = 74,
    \n+
    542 TDS_CHARSET_MACHEBREW = 75,
    \n+
    543 TDS_CHARSET_MACICELAND = 76,
    \n+
    544 TDS_CHARSET_MACROMANIA = 77,
    \n+
    545 TDS_CHARSET_MACTHAI = 78,
    \n+
    546 TDS_CHARSET_MACTURKISH = 79,
    \n+
    547 TDS_CHARSET_MACUKRAINE = 80,
    \n+
    548 TDS_CHARSET_MULELAO_1 = 81,
    \n+
    549 TDS_CHARSET_NEXTSTEP = 82,
    \n+
    550 TDS_CHARSET_ROMAN8 = 83,
    \n+
    551 TDS_CHARSET_SJIS = 84,
    \n+
    552 TDS_CHARSET_TCVN = 85,
    \n+
    553 TDS_CHARSET_UCS_4BE = 86,
    \n+
    554 TDS_CHARSET_UCS_4LE = 87,
    \n+
    555 TDS_CHARSET_US_ASCII = 88,
    \n+
    556 TDS_CHARSET_UTF_16BE = 89,
    \n+
    557 TDS_CHARSET_UTF_16LE = 90,
    \n+
    558 TDS_CHARSET_UTF_32BE = 91,
    \n+
    559 TDS_CHARSET_UTF_32LE = 92,
    \n+
    560 TDS_CHARSET_UTF_7 = 93,
    \n+
    561 TDS_CHARSET_VISCII = 94,
    \n+
    562 TDS_NUM_CHARSETS = 95
    \n+
    563};
    \n+
    564
    \n+
    Definition iconv.h:73
    \n+
    Information relevant to libiconv.
    Definition tds.h:618
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,62 +7,580 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-md5.h\n- 1#ifndef MD5_H\n- 2#define MD5_H\n- 3\n- 4#ifndef HAVE_NETTLE\n+encodings.h\n+ 1/*\n+ 2 * This file produced from ./encodings.pl on Sat Jan 21 09:01:33 2023\n+ 3 */\n+ 4#ifdef TDS_ICONV_ENCODING_TABLES\n 5\n- 6#include \n- 7\n-8struct MD5Context {\n- 9 uint32_t buf[4];\n- 10 uint64_t bytes;\n- 11 uint32_t in[16];\n- 12};\n- 13\n- 14void MD5Init(struct MD5Context *context);\n- 15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);\n- 16void MD5Final(struct MD5Context *context, uint8_t *digest);\n- 17\n- 18/*\n- 19 * This is needed to make RSAREF happy on some MS-DOS compilers.\n- 20 */\n- 21typedef struct MD5Context MD5_CTX;\n- 22\n- 23#include \n- 24\n- 25#else\n- 26\n- 27#include \n- 28\n- 29typedef struct md5_ctx MD5_CTX;\n- 30\n- 31static inline void MD5Init(MD5_CTX *ctx)\n- 32{\n- 33 nettle_md5_init(ctx);\n- 34}\n- 35\n- 36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)\n- 37{\n- 38 nettle_md5_update(ctx, len, buf);\n- 39}\n- 40\n- 41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)\n- 42{\n- 43 nettle_md5_digest(ctx, 16, digest);\n- 44}\n- 45\n- 46#endif\n- 47\n- 48#endif /* !MD5_H */\n-MD5Context\n-Definition md5.h:8\n+ 6static const TDS_ENCODING canonic_charsets[] = {\n+ 7 { \"ISO-8859-1\", 1, 1, 0}, /* 0 */\n+ 8 { \"UTF-8\", 1, 4, 1}, /* 1 */\n+ 9 { \"UCS-2LE\", 2, 2, 2}, /* 2 */\n+ 10 { \"UCS-2BE\", 2, 2, 3}, /* 3 */\n+ 11 { \"ARMSCII-8\", 1, 1, 4}, /* 4 */\n+ 12 { \"BIG-5\", 1, 2, 5}, /* 5 */\n+ 13 { \"BIG5-HKSCS\", 1, 2, 6}, /* 6 */\n+ 14 { \"C99\", 1, 1, 7}, /* 7 */\n+ 15 { \"CHINESE\", 1, 1, 8}, /* 8 */\n+ 16 { \"CN\", 1, 1, 9}, /* 9 */\n+ 17 { \"CN-GB\", 1, 2, 10}, /* 10 */\n+ 18 { \"CN-GB-ISOIR165\", 1, 1, 11}, /* 11 */\n+ 19 { \"CP1133\", 1, 1, 12}, /* 12 */\n+ 20 { \"CP1250\", 1, 1, 13}, /* 13 */\n+ 21 { \"CP1251\", 1, 1, 14}, /* 14 */\n+ 22 { \"CP1252\", 1, 1, 15}, /* 15 */\n+ 23 { \"CP1253\", 1, 1, 16}, /* 16 */\n+ 24 { \"CP1254\", 1, 1, 17}, /* 17 */\n+ 25 { \"CP1255\", 1, 1, 18}, /* 18 */\n+ 26 { \"CP1256\", 1, 1, 19}, /* 19 */\n+ 27 { \"CP1257\", 1, 1, 20}, /* 20 */\n+ 28 { \"CP1258\", 1, 1, 21}, /* 21 */\n+ 29 { \"CP1361\", 1, 2, 22}, /* 22 */\n+ 30 { \"CP437\", 1, 1, 23}, /* 23 */\n+ 31 { \"CP850\", 1, 1, 24}, /* 24 */\n+ 32 { \"CP862\", 1, 1, 25}, /* 25 */\n+ 33 { \"CP866\", 1, 1, 26}, /* 26 */\n+ 34 { \"CP874\", 1, 1, 27}, /* 27 */\n+ 35 { \"CP932\", 1, 2, 28}, /* 28 */\n+ 36 { \"CP936\", 1, 2, 29}, /* 29 */\n+ 37 { \"CP949\", 1, 2, 30}, /* 30 */\n+ 38 { \"CP950\", 1, 2, 31}, /* 31 */\n+ 39 { \"EUC-JP\", 1, 3, 32}, /* 32 */\n+ 40 { \"EUC-KR\", 1, 2, 33}, /* 33 */\n+ 41 { \"EUC-TW\", 1, 4, 34}, /* 34 */\n+ 42 { \"GB18030\", 1, 4, 35}, /* 35 */\n+ 43 { \"GEORGIAN-ACADEMY\", 1, 1, 36}, /* 36 */\n+ 44 { \"GEORGIAN-PS\", 1, 1, 37}, /* 37 */\n+ 45 { \"HZ\", 1, 1, 38}, /* 38 */\n+ 46 { \"ISO-2022-CN\", 1, 4, 39}, /* 39 */\n+ 47 { \"ISO-2022-CN-EXT\", 1, 4, 40}, /* 40 */\n+ 48 { \"ISO-2022-JP\", 1, 1, 41}, /* 41 */\n+ 49 { \"ISO-2022-JP-1\", 1, 1, 42}, /* 42 */\n+ 50 { \"ISO-2022-JP-2\", 1, 1, 43}, /* 43 */\n+ 51 { \"ISO-2022-KR\", 1, 2, 44}, /* 44 */\n+ 52 { \"ISO-8859-10\", 1, 1, 45}, /* 45 */\n+ 53 { \"ISO-8859-13\", 1, 1, 46}, /* 46 */\n+ 54 { \"ISO-8859-14\", 1, 1, 47}, /* 47 */\n+ 55 { \"ISO-8859-15\", 1, 1, 48}, /* 48 */\n+ 56 { \"ISO-8859-16\", 1, 1, 49}, /* 49 */\n+ 57 { \"ISO-8859-2\", 1, 1, 50}, /* 50 */\n+ 58 { \"ISO-8859-3\", 1, 1, 51}, /* 51 */\n+ 59 { \"ISO-8859-4\", 1, 1, 52}, /* 52 */\n+ 60 { \"ISO-8859-5\", 1, 1, 53}, /* 53 */\n+ 61 { \"ISO-8859-6\", 1, 1, 54}, /* 54 */\n+ 62 { \"ISO-8859-7\", 1, 1, 55}, /* 55 */\n+ 63 { \"ISO-8859-8\", 1, 1, 56}, /* 56 */\n+ 64 { \"ISO-8859-9\", 1, 1, 57}, /* 57 */\n+ 65 { \"ISO-IR-14\", 1, 1, 58}, /* 58 */\n+ 66 { \"ISO-IR-149\", 1, 1, 59}, /* 59 */\n+ 67 { \"ISO-IR-159\", 1, 1, 60}, /* 60 */\n+ 68 { \"ISO-IR-166\", 1, 1, 61}, /* 61 */\n+ 69 { \"ISO-IR-87\", 1, 1, 62}, /* 62 */\n+ 70 { \"JAVA\", 1, 1, 63}, /* 63 */\n+ 71 { \"JISX0201-1976\", 1, 1, 64}, /* 64 */\n+ 72 { \"KOI8-R\", 1, 1, 65}, /* 65 */\n+ 73 { \"KOI8-RU\", 1, 1, 66}, /* 66 */\n+ 74 { \"KOI8-T\", 1, 1, 67}, /* 67 */\n+ 75 { \"KOI8-U\", 1, 1, 68}, /* 68 */\n+ 76 { \"MAC\", 1, 1, 69}, /* 69 */\n+ 77 { \"MACARABIC\", 1, 1, 70}, /* 70 */\n+ 78 { \"MACCENTRALEUROPE\", 1, 1, 71}, /* 71 */\n+ 79 { \"MACCROATIAN\", 1, 1, 72}, /* 72 */\n+ 80 { \"MACCYRILLIC\", 1, 1, 73}, /* 73 */\n+ 81 { \"MACGREEK\", 1, 1, 74}, /* 74 */\n+ 82 { \"MACHEBREW\", 1, 1, 75}, /* 75 */\n+ 83 { \"MACICELAND\", 1, 1, 76}, /* 76 */\n+ 84 { \"MACROMANIA\", 1, 1, 77}, /* 77 */\n+ 85 { \"MACTHAI\", 1, 1, 78}, /* 78 */\n+ 86 { \"MACTURKISH\", 1, 1, 79}, /* 79 */\n+ 87 { \"MACUKRAINE\", 1, 1, 80}, /* 80 */\n+ 88 { \"MULELAO-1\", 1, 1, 81}, /* 81 */\n+ 89 { \"NEXTSTEP\", 1, 1, 82}, /* 82 */\n+ 90 { \"ROMAN8\", 1, 1, 83}, /* 83 */\n+ 91 { \"SJIS\", 1, 2, 84}, /* 84 */\n+ 92 { \"TCVN\", 1, 1, 85}, /* 85 */\n+ 93 { \"UCS-4BE\", 4, 4, 86}, /* 86 */\n+ 94 { \"UCS-4LE\", 4, 4, 87}, /* 87 */\n+ 95 { \"US-ASCII\", 1, 1, 88}, /* 88 */\n+ 96 { \"UTF-16BE\", 2, 4, 89}, /* 89 */\n+ 97 { \"UTF-16LE\", 2, 4, 90}, /* 90 */\n+ 98 { \"UTF-32BE\", 4, 4, 91}, /* 91 */\n+ 99 { \"UTF-32LE\", 4, 4, 92}, /* 92 */\n+ 100 { \"UTF-7\", 1, 4, 93}, /* 93 */\n+ 101 { \"VISCII\", 1, 1, 94}, /* 94 */\n+ 102};\n+ 103\n+ 104static const CHARACTER_SET_ALIAS iconv_aliases[] = {\n+ 105 { \"646\", 88 },\n+ 106 { \"850\", 24 },\n+ 107 { \"862\", 25 },\n+ 108 { \"866\", 26 },\n+ 109 { \"ANSI_X3.4-1968\", 88 },\n+ 110 { \"ANSI_X3.4-1986\", 88 },\n+ 111 { \"ARABIC\", 54 },\n+ 112 { \"ARMSCII-8\", 4 },\n+ 113 { \"ASCII\", 88 },\n+ 114 { \"ASMO-708\", 54 },\n+ 115 { \"BIG-5\", 5 },\n+ 116 { \"BIG-FIVE\", 5 },\n+ 117 { \"BIG5\", 5 },\n+ 118 { \"BIG5-HKSCS\", 6 },\n+ 119 { \"BIG5HKSCS\", 6 },\n+ 120 { \"BIGFIVE\", 5 },\n+ 121 { \"C99\", 7 },\n+ 122 { \"CHINESE\", 8 },\n+ 123 { \"CN\", 9 },\n+ 124 { \"CN-BIG5\", 5 },\n+ 125 { \"CN-GB\", 10 },\n+ 126 { \"CN-GB-ISOIR165\", 11 },\n+ 127 { \"CP1133\", 12 },\n+ 128 { \"CP1250\", 13 },\n+ 129 { \"CP1251\", 14 },\n+ 130 { \"CP1252\", 15 },\n+ 131 { \"CP1253\", 16 },\n+ 132 { \"CP1254\", 17 },\n+ 133 { \"CP1255\", 18 },\n+ 134 { \"CP1256\", 19 },\n+ 135 { \"CP1257\", 20 },\n+ 136 { \"CP1258\", 21 },\n+ 137 { \"CP1361\", 22 },\n+ 138 { \"CP367\", 88 },\n+ 139 { \"CP437\", 23 },\n+ 140 { \"CP819\", 0 },\n+ 141 { \"CP850\", 24 },\n+ 142 { \"CP862\", 25 },\n+ 143 { \"CP866\", 26 },\n+ 144 { \"CP874\", 27 },\n+ 145 { \"CP932\", 28 },\n+ 146 { \"CP936\", 29 },\n+ 147 { \"CP949\", 30 },\n+ 148 { \"CP950\", 31 },\n+ 149 { \"CSASCII\", 88 },\n+ 150 { \"CSBIG5\", 5 },\n+ 151 { \"CSEUCKR\", 33 },\n+ 152 { \"CSEUCPKDFMTJAPANESE\", 32 },\n+ 153 { \"CSEUCTW\", 34 },\n+ 154 { \"CSGB2312\", 10 },\n+ 155 { \"CSHALFWIDTHKATAKANA\", 64 },\n+ 156 { \"CSHPROMAN8\", 83 },\n+ 157 { \"CSIBM866\", 26 },\n+ 158 { \"CSISO14JISC6220RO\", 58 },\n+ 159 { \"CSISO159JISX02121990\", 60 },\n+ 160 { \"CSISO2022CN\", 39 },\n+ 161 { \"CSISO2022JP\", 41 },\n+ 162 { \"CSISO2022JP2\", 43 },\n+ 163 { \"CSISO2022KR\", 44 },\n+ 164 { \"CSISO57GB1988\", 9 },\n+ 165 { \"CSISO58GB231280\", 8 },\n+ 166 { \"CSISO87JISX0208\", 62 },\n+ 167 { \"CSISOLATIN1\", 0 },\n+ 168 { \"CSISOLATIN2\", 50 },\n+ 169 { \"CSISOLATIN3\", 51 },\n+ 170 { \"CSISOLATIN4\", 52 },\n+ 171 { \"CSISOLATIN5\", 57 },\n+ 172 { \"CSISOLATIN6\", 45 },\n+ 173 { \"CSISOLATINARABIC\", 54 },\n+ 174 { \"CSISOLATINCYRILLIC\", 53 },\n+ 175 { \"CSISOLATINGREEK\", 55 },\n+ 176 { \"CSISOLATINHEBREW\", 56 },\n+ 177 { \"CSKOI8R\", 65 },\n+ 178 { \"CSKSC56011987\", 59 },\n+ 179 { \"CSMACINTOSH\", 69 },\n+ 180 { \"CSPC850MULTILINGUAL\", 24 },\n+ 181 { \"CSPC862LATINHEBREW\", 25 },\n+ 182 { \"CSSHIFTJIS\", 84 },\n+ 183 { \"CSUNICODE11\", 3 },\n+ 184 { \"CSUNICODE11UTF7\", 93 },\n+ 185 { \"CSVISCII\", 94 },\n+ 186 { \"CYRILLIC\", 53 },\n+ 187 { \"ECMA-114\", 54 },\n+ 188 { \"ECMA-118\", 55 },\n+ 189 { \"ELOT_928\", 55 },\n+ 190 { \"EUC-CN\", 10 },\n+ 191 { \"EUC-JP\", 32 },\n+ 192 { \"EUC-KR\", 33 },\n+ 193 { \"EUC-TW\", 34 },\n+ 194 { \"EUCCN\", 10 },\n+ 195 { \"EUCJP\", 32 },\n+ 196 { \"EUCKR\", 33 },\n+ 197 { \"EUCTW\", 34 },\n+ 198 {\"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\", 32 },\n+ 199 { \"GB18030\", 35 },\n+ 200 { \"GB2312\", 10 },\n+ 201 { \"GBK\", 29 },\n+ 202 { \"GB_1988-80\", 9 },\n+ 203 { \"GB_2312-80\", 8 },\n+ 204 { \"GEORGIAN-ACADEMY\", 36 },\n+ 205 { \"GEORGIAN-PS\", 37 },\n+ 206 { \"GREEK\", 55 },\n+ 207 { \"GREEK8\", 55 },\n+ 208 { \"HEBREW\", 56 },\n+ 209 { \"HP-ROMAN8\", 83 },\n+ 210 { \"HZ\", 38 },\n+ 211 { \"HZ-GB-2312\", 38 },\n+ 212 { \"IBM-CP1133\", 12 },\n+ 213 { \"IBM367\", 88 },\n+ 214 { \"IBM437\", 23 },\n+ 215 { \"IBM819\", 0 },\n+ 216 { \"IBM850\", 24 },\n+ 217 { \"IBM862\", 25 },\n+ 218 { \"IBM866\", 26 },\n+ 219 { \"ISO-2022-CN\", 39 },\n+ 220 { \"ISO-2022-CN-EXT\", 40 },\n+ 221 { \"ISO-2022-JP\", 41 },\n+ 222 { \"ISO-2022-JP-1\", 42 },\n+ 223 { \"ISO-2022-JP-2\", 43 },\n+ 224 { \"ISO-2022-KR\", 44 },\n+ 225 { \"ISO-8859-1\", 0 },\n+ 226 { \"ISO-8859-10\", 45 },\n+ 227 { \"ISO-8859-13\", 46 },\n+ 228 { \"ISO-8859-14\", 47 },\n+ 229 { \"ISO-8859-15\", 48 },\n+ 230 { \"ISO-8859-16\", 49 },\n+ 231 { \"ISO-8859-2\", 50 },\n+ 232 { \"ISO-8859-3\", 51 },\n+ 233 { \"ISO-8859-4\", 52 },\n+ 234 { \"ISO-8859-5\", 53 },\n+ 235 { \"ISO-8859-6\", 54 },\n+ 236 { \"ISO-8859-7\", 55 },\n+ 237 { \"ISO-8859-8\", 56 },\n+ 238 { \"ISO-8859-9\", 57 },\n+ 239 { \"ISO-CELTIC\", 47 },\n+ 240 { \"ISO-IR-100\", 0 },\n+ 241 { \"ISO-IR-101\", 50 },\n+ 242 { \"ISO-IR-109\", 51 },\n+ 243 { \"ISO-IR-110\", 52 },\n+ 244 { \"ISO-IR-126\", 55 },\n+ 245 { \"ISO-IR-127\", 54 },\n+ 246 { \"ISO-IR-138\", 56 },\n+ 247 { \"ISO-IR-14\", 58 },\n+ 248 { \"ISO-IR-144\", 53 },\n+ 249 { \"ISO-IR-148\", 57 },\n+ 250 { \"ISO-IR-149\", 59 },\n+ 251 { \"ISO-IR-157\", 45 },\n+ 252 { \"ISO-IR-159\", 60 },\n+ 253 { \"ISO-IR-165\", 11 },\n+ 254 { \"ISO-IR-166\", 61 },\n+ 255 { \"ISO-IR-179\", 46 },\n+ 256 { \"ISO-IR-199\", 47 },\n+ 257 { \"ISO-IR-203\", 48 },\n+ 258 { \"ISO-IR-226\", 49 },\n+ 259 { \"ISO-IR-57\", 9 },\n+ 260 { \"ISO-IR-58\", 8 },\n+ 261 { \"ISO-IR-6\", 88 },\n+ 262 { \"ISO-IR-87\", 62 },\n+ 263 { \"ISO646-CN\", 9 },\n+ 264 { \"ISO646-JP\", 58 },\n+ 265 { \"ISO646-US\", 88 },\n+ 266 { \"ISO8859-1\", 0 },\n+ 267 { \"ISO8859-10\", 45 },\n+ 268 { \"ISO8859-15\", 48 },\n+ 269 { \"ISO8859-2\", 50 },\n+ 270 { \"ISO8859-4\", 52 },\n+ 271 { \"ISO8859-5\", 53 },\n+ 272 { \"ISO8859-6\", 54 },\n+ 273 { \"ISO8859-7\", 55 },\n+ 274 { \"ISO8859-8\", 56 },\n+ 275 { \"ISO8859-9\", 57 },\n+ 276 { \"ISO_646.IRV:1991\", 88 },\n+ 277 { \"ISO_8859-1\", 0 },\n+ 278 { \"ISO_8859-10\", 45 },\n+ 279 { \"ISO_8859-10:1992\", 45 },\n+ 280 { \"ISO_8859-13\", 46 },\n+ 281 { \"ISO_8859-14\", 47 },\n+ 282 { \"ISO_8859-14:1998\", 47 },\n+ 283 { \"ISO_8859-15\", 48 },\n+ 284 { \"ISO_8859-15:1998\", 48 },\n+ 285 { \"ISO_8859-16\", 49 },\n+ 286 { \"ISO_8859-16:2000\", 49 },\n+ 287 { \"ISO_8859-1:1987\", 0 },\n+ 288 { \"ISO_8859-2\", 50 },\n+ 289 { \"ISO_8859-2:1987\", 50 },\n+ 290 { \"ISO_8859-3\", 51 },\n+ 291 { \"ISO_8859-3:1988\", 51 },\n+ 292 { \"ISO_8859-4\", 52 },\n+ 293 { \"ISO_8859-4:1988\", 52 },\n+ 294 { \"ISO_8859-5\", 53 },\n+ 295 { \"ISO_8859-5:1988\", 53 },\n+ 296 { \"ISO_8859-6\", 54 },\n+ 297 { \"ISO_8859-6:1987\", 54 },\n+ 298 { \"ISO_8859-7\", 55 },\n+ 299 { \"ISO_8859-7:1987\", 55 },\n+ 300 { \"ISO_8859-8\", 56 },\n+ 301 { \"ISO_8859-8:1988\", 56 },\n+ 302 { \"ISO_8859-9\", 57 },\n+ 303 { \"ISO_8859-9:1989\", 57 },\n+ 304 { \"JAVA\", 63 },\n+ 305 { \"JIS0208\", 62 },\n+ 306 { \"JISX0201-1976\", 64 },\n+ 307 { \"JIS_C6220-1969-RO\", 58 },\n+ 308 { \"JIS_C6226-1983\", 62 },\n+ 309 { \"JIS_X0201\", 64 },\n+ 310 { \"JIS_X0208\", 62 },\n+ 311 { \"JIS_X0208-1983\", 62 },\n+ 312 { \"JIS_X0208-1990\", 62 },\n+ 313 { \"JIS_X0212\", 60 },\n+ 314 { \"JIS_X0212-1990\", 60 },\n+ 315 { \"JIS_X0212.1990-0\", 60 },\n+ 316 { \"JOHAB\", 22 },\n+ 317 { \"JP\", 58 },\n+ 318 { \"KOI8-R\", 65 },\n+ 319 { \"KOI8-RU\", 66 },\n+ 320 { \"KOI8-T\", 67 },\n+ 321 { \"KOI8-U\", 68 },\n+ 322 { \"KOREAN\", 59 },\n+ 323 { \"KSC_5601\", 59 },\n+ 324 { \"KS_C_5601-1987\", 59 },\n+ 325 { \"KS_C_5601-1989\", 59 },\n+ 326 { \"L1\", 0 },\n+ 327 { \"L2\", 50 },\n+ 328 { \"L3\", 51 },\n+ 329 { \"L4\", 52 },\n+ 330 { \"L5\", 57 },\n+ 331 { \"L6\", 45 },\n+ 332 { \"L7\", 46 },\n+ 333 { \"L8\", 47 },\n+ 334 { \"LATIN1\", 0 },\n+ 335 { \"LATIN2\", 50 },\n+ 336 { \"LATIN3\", 51 },\n+ 337 { \"LATIN4\", 52 },\n+ 338 { \"LATIN5\", 57 },\n+ 339 { \"LATIN6\", 45 },\n+ 340 { \"LATIN7\", 46 },\n+ 341 { \"LATIN8\", 47 },\n+ 342 { \"MAC\", 69 },\n+ 343 { \"MACARABIC\", 70 },\n+ 344 { \"MACCENTRALEUROPE\", 71 },\n+ 345 { \"MACCROATIAN\", 72 },\n+ 346 { \"MACCYRILLIC\", 73 },\n+ 347 { \"MACGREEK\", 74 },\n+ 348 { \"MACHEBREW\", 75 },\n+ 349 { \"MACICELAND\", 76 },\n+ 350 { \"MACINTOSH\", 69 },\n+ 351 { \"MACROMAN\", 69 },\n+ 352 { \"MACROMANIA\", 77 },\n+ 353 { \"MACTHAI\", 78 },\n+ 354 { \"MACTURKISH\", 79 },\n+ 355 { \"MACUKRAINE\", 80 },\n+ 356 { \"MS-ANSI\", 15 },\n+ 357 { \"MS-ARAB\", 19 },\n+ 358 { \"MS-CYRL\", 14 },\n+ 359 { \"MS-EE\", 13 },\n+ 360 { \"MS-GREEK\", 16 },\n+ 361 { \"MS-HEBR\", 18 },\n+ 362 { \"MS-TURK\", 17 },\n+ 363 { \"MS_KANJI\", 84 },\n+ 364 { \"MULELAO-1\", 81 },\n+ 365 { \"NEXTSTEP\", 82 },\n+ 366 { \"R8\", 83 },\n+ 367 { \"ROMAN8\", 83 },\n+ 368 { \"SHIFT-JIS\", 84 },\n+ 369 { \"SHIFT_JIS\", 84 },\n+ 370 { \"SJIS\", 84 },\n+ 371 { \"TCVN\", 85 },\n+ 372 { \"TCVN-5712\", 85 },\n+ 373 { \"TCVN5712-1\", 85 },\n+ 374 { \"TCVN5712-1:1993\", 85 },\n+ 375 { \"TIS-620\", 61 },\n+ 376 { \"TIS620\", 61 },\n+ 377 { \"TIS620-0\", 61 },\n+ 378 { \"TIS620.2529-1\", 61 },\n+ 379 { \"TIS620.2533-0\", 61 },\n+ 380 { \"TIS620.2533-1\", 61 },\n+ 381 { \"UCS-2BE\", 3 },\n+ 382 { \"UCS-2LE\", 2 },\n+ 383 { \"UCS-4BE\", 86 },\n+ 384 { \"UCS-4LE\", 87 },\n+ 385 { \"UHC\", 30 },\n+ 386 { \"UNICODE-1-1\", 3 },\n+ 387 { \"UNICODE-1-1-UTF-7\", 93 },\n+ 388 { \"UNICODEBIG\", 3 },\n+ 389 { \"UNICODELITTLE\", 2 },\n+ 390 { \"US\", 88 },\n+ 391 { \"US-ASCII\", 88 },\n+ 392 { \"UTF-16BE\", 89 },\n+ 393 { \"UTF-16LE\", 90 },\n+ 394 { \"UTF-32BE\", 91 },\n+ 395 { \"UTF-32LE\", 92 },\n+ 396 { \"UTF-7\", 93 },\n+ 397 { \"UTF-8\", 1 },\n+ 398 { \"UTF7\", 93 },\n+ 399 { \"UTF8\", 1 },\n+ 400 { \"VISCII\", 94 },\n+ 401 { \"VISCII1.1-1\", 94 },\n+ 402 { \"WINBALTRIM\", 20 },\n+ 403 { \"WINDOWS-1250\", 13 },\n+ 404 { \"WINDOWS-1251\", 14 },\n+ 405 { \"WINDOWS-1252\", 15 },\n+ 406 { \"WINDOWS-1253\", 16 },\n+ 407 { \"WINDOWS-1254\", 17 },\n+ 408 { \"WINDOWS-1255\", 18 },\n+ 409 { \"WINDOWS-1256\", 19 },\n+ 410 { \"WINDOWS-1257\", 20 },\n+ 411 { \"WINDOWS-1258\", 21 },\n+ 412 { \"WINDOWS-874\", 27 },\n+ 413 { \"X0201\", 64 },\n+ 414 { \"X0208\", 62 },\n+ 415 { \"X0212\", 60 },\n+ 416 { \"big5\", 5 },\n+ 417 { \"cp1250\", 13 },\n+ 418 { \"cp1251\", 14 },\n+ 419 { \"cp1252\", 15 },\n+ 420 { \"cp1253\", 16 },\n+ 421 { \"cp1254\", 17 },\n+ 422 { \"cp1255\", 18 },\n+ 423 { \"cp1256\", 19 },\n+ 424 { \"cp1257\", 20 },\n+ 425 { \"cp1258\", 21 },\n+ 426 { \"cp437\", 23 },\n+ 427 { \"cp850\", 24 },\n+ 428 { \"cp862\", 25 },\n+ 429 { \"cp866\", 26 },\n+ 430 { \"cp874\", 27 },\n+ 431 { \"eucJP\", 32 },\n+ 432 { \"eucKR\", 33 },\n+ 433 { \"eucTW\", 34 },\n+ 434 { \"hp15CN\", 8 },\n+ 435 { \"iso81\", 0 },\n+ 436 { \"iso815\", 48 },\n+ 437 { \"iso82\", 50 },\n+ 438 { \"iso83\", 51 },\n+ 439 { \"iso84\", 52 },\n+ 440 { \"iso85\", 53 },\n+ 441 { \"iso86\", 54 },\n+ 442 { \"iso87\", 55 },\n+ 443 { \"iso88\", 56 },\n+ 444 { \"iso88591\", 0 },\n+ 445 { \"iso885915\", 48 },\n+ 446 { \"iso88592\", 50 },\n+ 447 { \"iso88593\", 51 },\n+ 448 { \"iso88594\", 52 },\n+ 449 { \"iso88595\", 53 },\n+ 450 { \"iso88596\", 54 },\n+ 451 { \"iso88597\", 55 },\n+ 452 { \"iso88598\", 56 },\n+ 453 { \"iso88599\", 57 },\n+ 454 { \"iso89\", 57 },\n+ 455 { \"roma8\", 83 },\n+ 456 { \"roman8\", 83 },\n+ 457 { \"sjis\", 84 },\n+ 458 { \"thai8\", 61 },\n+ 459 { \"tis620\", 61 },\n+ 460 { \"utf8\", 1 },\n+ 461 {NULL, 0}\n+ 462};\n+ 463\n+ 464#endif\n+ 465\n+ 466enum {\n+ 467 TDS_CHARSET_ISO_8859_1 = 0,\n+ 468 TDS_CHARSET_UTF_8 = 1,\n+ 469 TDS_CHARSET_UCS_2LE = 2,\n+ 470 TDS_CHARSET_UCS_2BE = 3,\n+ 471 TDS_CHARSET_ARMSCII_8 = 4,\n+ 472 TDS_CHARSET_BIG_5 = 5,\n+ 473 TDS_CHARSET_BIG5_HKSCS = 6,\n+ 474 TDS_CHARSET_C99 = 7,\n+ 475 TDS_CHARSET_CHINESE = 8,\n+ 476 TDS_CHARSET_CN = 9,\n+ 477 TDS_CHARSET_CN_GB = 10,\n+ 478 TDS_CHARSET_CN_GB_ISOIR165 = 11,\n+ 479 TDS_CHARSET_CP1133 = 12,\n+ 480 TDS_CHARSET_CP1250 = 13,\n+ 481 TDS_CHARSET_CP1251 = 14,\n+ 482 TDS_CHARSET_CP1252 = 15,\n+ 483 TDS_CHARSET_CP1253 = 16,\n+ 484 TDS_CHARSET_CP1254 = 17,\n+ 485 TDS_CHARSET_CP1255 = 18,\n+ 486 TDS_CHARSET_CP1256 = 19,\n+ 487 TDS_CHARSET_CP1257 = 20,\n+ 488 TDS_CHARSET_CP1258 = 21,\n+ 489 TDS_CHARSET_CP1361 = 22,\n+ 490 TDS_CHARSET_CP437 = 23,\n+ 491 TDS_CHARSET_CP850 = 24,\n+ 492 TDS_CHARSET_CP862 = 25,\n+ 493 TDS_CHARSET_CP866 = 26,\n+ 494 TDS_CHARSET_CP874 = 27,\n+ 495 TDS_CHARSET_CP932 = 28,\n+ 496 TDS_CHARSET_CP936 = 29,\n+ 497 TDS_CHARSET_CP949 = 30,\n+ 498 TDS_CHARSET_CP950 = 31,\n+ 499 TDS_CHARSET_EUC_JP = 32,\n+ 500 TDS_CHARSET_EUC_KR = 33,\n+ 501 TDS_CHARSET_EUC_TW = 34,\n+ 502 TDS_CHARSET_GB18030 = 35,\n+ 503 TDS_CHARSET_GEORGIAN_ACADEMY = 36,\n+ 504 TDS_CHARSET_GEORGIAN_PS = 37,\n+ 505 TDS_CHARSET_HZ = 38,\n+ 506 TDS_CHARSET_ISO_2022_CN = 39,\n+ 507 TDS_CHARSET_ISO_2022_CN_EXT = 40,\n+ 508 TDS_CHARSET_ISO_2022_JP = 41,\n+ 509 TDS_CHARSET_ISO_2022_JP_1 = 42,\n+ 510 TDS_CHARSET_ISO_2022_JP_2 = 43,\n+ 511 TDS_CHARSET_ISO_2022_KR = 44,\n+ 512 TDS_CHARSET_ISO_8859_10 = 45,\n+ 513 TDS_CHARSET_ISO_8859_13 = 46,\n+ 514 TDS_CHARSET_ISO_8859_14 = 47,\n+ 515 TDS_CHARSET_ISO_8859_15 = 48,\n+ 516 TDS_CHARSET_ISO_8859_16 = 49,\n+ 517 TDS_CHARSET_ISO_8859_2 = 50,\n+ 518 TDS_CHARSET_ISO_8859_3 = 51,\n+ 519 TDS_CHARSET_ISO_8859_4 = 52,\n+ 520 TDS_CHARSET_ISO_8859_5 = 53,\n+ 521 TDS_CHARSET_ISO_8859_6 = 54,\n+ 522 TDS_CHARSET_ISO_8859_7 = 55,\n+ 523 TDS_CHARSET_ISO_8859_8 = 56,\n+ 524 TDS_CHARSET_ISO_8859_9 = 57,\n+ 525 TDS_CHARSET_ISO_IR_14 = 58,\n+ 526 TDS_CHARSET_ISO_IR_149 = 59,\n+ 527 TDS_CHARSET_ISO_IR_159 = 60,\n+ 528 TDS_CHARSET_ISO_IR_166 = 61,\n+ 529 TDS_CHARSET_ISO_IR_87 = 62,\n+ 530 TDS_CHARSET_JAVA = 63,\n+ 531 TDS_CHARSET_JISX0201_1976 = 64,\n+ 532 TDS_CHARSET_KOI8_R = 65,\n+ 533 TDS_CHARSET_KOI8_RU = 66,\n+ 534 TDS_CHARSET_KOI8_T = 67,\n+ 535 TDS_CHARSET_KOI8_U = 68,\n+ 536 TDS_CHARSET_MAC = 69,\n+ 537 TDS_CHARSET_MACARABIC = 70,\n+ 538 TDS_CHARSET_MACCENTRALEUROPE = 71,\n+ 539 TDS_CHARSET_MACCROATIAN = 72,\n+ 540 TDS_CHARSET_MACCYRILLIC = 73,\n+ 541 TDS_CHARSET_MACGREEK = 74,\n+ 542 TDS_CHARSET_MACHEBREW = 75,\n+ 543 TDS_CHARSET_MACICELAND = 76,\n+ 544 TDS_CHARSET_MACROMANIA = 77,\n+ 545 TDS_CHARSET_MACTHAI = 78,\n+ 546 TDS_CHARSET_MACTURKISH = 79,\n+ 547 TDS_CHARSET_MACUKRAINE = 80,\n+ 548 TDS_CHARSET_MULELAO_1 = 81,\n+ 549 TDS_CHARSET_NEXTSTEP = 82,\n+ 550 TDS_CHARSET_ROMAN8 = 83,\n+ 551 TDS_CHARSET_SJIS = 84,\n+ 552 TDS_CHARSET_TCVN = 85,\n+ 553 TDS_CHARSET_UCS_4BE = 86,\n+ 554 TDS_CHARSET_UCS_4LE = 87,\n+ 555 TDS_CHARSET_US_ASCII = 88,\n+ 556 TDS_CHARSET_UTF_16BE = 89,\n+ 557 TDS_CHARSET_UTF_16LE = 90,\n+ 558 TDS_CHARSET_UTF_32BE = 91,\n+ 559 TDS_CHARSET_UTF_32LE = 92,\n+ 560 TDS_CHARSET_UTF_7 = 93,\n+ 561 TDS_CHARSET_VISCII = 94,\n+ 562 TDS_NUM_CHARSETS = 95\n+ 563};\n+ 564\n+_character_set_alias\n+Definition iconv.h:73\n+tds_encoding\n+Information relevant to libiconv.\n+Definition tds.h:618\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00407_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00407_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/dlist.h Source File\n+FreeTDS API: include/freetds/charset_lookup.h Source File\n \n \n \n \n \n \n \n@@ -70,72 +70,1891 @@\n
    \n \n \n \n \n \n \n
    \n-
    dlist.h
    \n+
    charset_lookup.h
    \n
    \n
    \n-
    1/* Dlist - dynamic list
    \n-
    2 * Copyright (C) 2016 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This program is free software; you can redistribute it and/or modify
    \n-
    5 * it under the terms of the GNU General Public License as published by
    \n-
    6 * the Free Software Foundation; either version 2 of the License, or
    \n-
    7 * (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This program is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    \n-
    12 * GNU General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU General Public License
    \n-
    15 * along with this program; if not, write to the Free Software
    \n-
    16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    \n-
    17 *
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef TDS_DLIST_H
    \n-
    21#define TDS_DLIST_H
    \n-
    22
    \n-
    \n-
    23typedef struct dlist_ring {
    \n-
    24 struct dlist_ring *next;
    \n-
    25 struct dlist_ring *prev;
    \n-\n-
    \n-
    27
    \n-
    28#if ENABLE_EXTRA_CHECKS
    \n-
    29void dlist_ring_check(dlist_ring *ring);
    \n+
    1/* ANSI-C code produced by gperf version 3.1 */
    \n+
    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 charset_lookup.gperf */
    \n+
    3/* Computed positions: -k'1,3-11,$' */
    \n+
    4
    \n+
    5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \\
    \n+
    6 && ('%' == 37) && ('&' == 38) && ('\\'' == 39) && ('(' == 40) \\
    \n+
    7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \\
    \n+
    8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \\
    \n+
    9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \\
    \n+
    10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \\
    \n+
    11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \\
    \n+
    12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \\
    \n+
    13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \\
    \n+
    14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \\
    \n+
    15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \\
    \n+
    16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \\
    \n+
    17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \\
    \n+
    18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \\
    \n+
    19 && ('Z' == 90) && ('[' == 91) && ('\\\\' == 92) && (']' == 93) \\
    \n+
    20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \\
    \n+
    21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \\
    \n+
    22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \\
    \n+
    23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \\
    \n+
    24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \\
    \n+
    25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \\
    \n+
    26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \\
    \n+
    27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
    \n+
    28/* The character set is not based on ISO-646. */
    \n+
    29#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
    \n
    30#endif
    \n-
    31
    \n-
    32#define DLIST_FIELDS(name) \\
    \n-
    33 dlist_ring name
    \n-
    34
    \n-
    35#define DLIST_FOREACH(prefix, list, p) \\
    \n-
    36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next(list, p))
    \n-
    37
    \n-
    38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_item)
    \n-
    39{
    \n-
    40 assert(!ring_item->next && !ring_item->prev);
    \n-
    41 ring_pos->next->prev = ring_item;
    \n-
    42 ring_item->prev = ring_pos;
    \n-
    43 ring_item->next = ring_pos->next;
    \n-
    44 ring_pos->next = ring_item;
    \n-
    45 assert(ring_item->next && ring_item->prev);
    \n-
    46}
    \n-
    47
    \n-
    48#endif /* TDS_DLIST_H */
    \n-
    Definition dlist.h:23
    \n+
    31
    \n+
    32#line 3 "charset_lookup.gperf"
    \n+
    33
    \n+
    34static const struct charset_alias *charset_lookup(register const char *str, register size_t len);
    \n+
    35#line 2 "charset_lookup.gperf"
    \n+
    36struct charset_alias { short int alias_pos; short int canonic; };
    \n+
    37
    \n+
    38#define TOTAL_KEYWORDS 374
    \n+
    39#define MIN_WORD_LENGTH 2
    \n+
    40#define MAX_WORD_LENGTH 45
    \n+
    41#define MIN_HASH_VALUE 15
    \n+
    42#define MAX_HASH_VALUE 1079
    \n+
    43/* maximum key range = 1065, duplicates = 0 */
    \n+
    44
    \n+
    45#ifdef __GNUC__
    \n+
    46__inline
    \n+
    47#else
    \n+
    48#ifdef __cplusplus
    \n+
    49inline
    \n+
    50#endif
    \n+
    51#endif
    \n+
    52static unsigned int
    \n+
    53hash_charset (register const char *str, register size_t len)
    \n+
    54{
    \n+
    55 static const unsigned short asso_values[] =
    \n+
    56 {
    \n+
    57 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    58 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    59 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    60 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    61 1080, 1080, 1080, 1080, 1080, 7, 132, 1080, 56, 6,
    \n+
    62 47, 83, 35, 8, 18, 63, 7, 9, 363, 1080,
    \n+
    63 1080, 1080, 1080, 1080, 1080, 7, 99, 128, 6, 22,
    \n+
    64 141, 116, 95, 6, 34, 68, 7, 159, 6, 6,
    \n+
    65 80, 1080, 26, 6, 115, 191, 39, 162, 231, 14,
    \n+
    66 8, 1080, 1080, 1080, 1080, 37, 1080, 10, 16, 147,
    \n+
    67 1080, 16, 8, 12, 13, 6, 1080, 6, 1080, 8,
    \n+
    68 6, 6, 1080, 1080, 6, 7, 6, 19, 1080, 1080,
    \n+
    69 1080, 6, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    70 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    71 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    72 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    73 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    74 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    75 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    76 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    77 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    78 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    79 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    80 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    81 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
    \n+
    82 1080, 1080, 1080, 1080, 1080, 1080
    \n+
    83 };
    \n+
    84 register unsigned int hval = len;
    \n+
    85
    \n+
    86 switch (hval)
    \n+
    87 {
    \n+
    88 default:
    \n+
    89 hval += asso_values[(unsigned char)str[10]];
    \n+
    90 /*FALLTHROUGH*/
    \n+
    91 case 10:
    \n+
    92 hval += asso_values[(unsigned char)str[9]];
    \n+
    93 /*FALLTHROUGH*/
    \n+
    94 case 9:
    \n+
    95 hval += asso_values[(unsigned char)str[8]];
    \n+
    96 /*FALLTHROUGH*/
    \n+
    97 case 8:
    \n+
    98 hval += asso_values[(unsigned char)str[7]];
    \n+
    99 /*FALLTHROUGH*/
    \n+
    100 case 7:
    \n+
    101 hval += asso_values[(unsigned char)str[6]];
    \n+
    102 /*FALLTHROUGH*/
    \n+
    103 case 6:
    \n+
    104 hval += asso_values[(unsigned char)str[5]];
    \n+
    105 /*FALLTHROUGH*/
    \n+
    106 case 5:
    \n+
    107 hval += asso_values[(unsigned char)str[4]];
    \n+
    108 /*FALLTHROUGH*/
    \n+
    109 case 4:
    \n+
    110 hval += asso_values[(unsigned char)str[3]];
    \n+
    111 /*FALLTHROUGH*/
    \n+
    112 case 3:
    \n+
    113 hval += asso_values[(unsigned char)str[2]];
    \n+
    114 /*FALLTHROUGH*/
    \n+
    115 case 2:
    \n+
    116 case 1:
    \n+
    117 hval += asso_values[(unsigned char)str[0]];
    \n+
    118 break;
    \n+
    119 }
    \n+
    120 return hval + asso_values[(unsigned char)str[len - 1]];
    \n+
    121}
    \n+
    122
    \n+
    \n+
    123struct stringpool_t
    \n+
    124 {
    \n+
    125 char stringpool_str15[sizeof("L1")];
    \n+
    126 char stringpool_str16[sizeof("L8")];
    \n+
    127 char stringpool_str17[sizeof("L5")];
    \n+
    128 char stringpool_str27[sizeof("L6")];
    \n+
    129 char stringpool_str28[sizeof("SJIS")];
    \n+
    130 char stringpool_str30[sizeof("koi8")];
    \n+
    131 char stringpool_str31[sizeof("sjis")];
    \n+
    132 char stringpool_str35[sizeof("R8")];
    \n+
    133 char stringpool_str36[sizeof("iso81")];
    \n+
    134 char stringpool_str38[sizeof("iso88")];
    \n+
    135 char stringpool_str39[sizeof("iso15")];
    \n+
    136 char stringpool_str40[sizeof("iso85")];
    \n+
    137 char stringpool_str41[sizeof("thai8")];
    \n+
    138 char stringpool_str42[sizeof("iso89")];
    \n+
    139 char stringpool_str43[sizeof("roma8")];
    \n+
    140 char stringpool_str44[sizeof("L4")];
    \n+
    141 char stringpool_str45[sizeof("utf8")];
    \n+
    142 char stringpool_str46[sizeof("866")];
    \n+
    143 char stringpool_str47[sizeof("iso815")];
    \n+
    144 char stringpool_str48[sizeof("big5")];
    \n+
    145 char stringpool_str50[sizeof("roman8")];
    \n+
    146 char stringpool_str56[sizeof("L2")];
    \n+
    147 char stringpool_str57[sizeof("646")];
    \n+
    148 char stringpool_str60[sizeof("iso86")];
    \n+
    149 char stringpool_str63[sizeof("iso88591")];
    \n+
    150 char stringpool_str65[sizeof("iso88598")];
    \n+
    151 char stringpool_str66[sizeof("iso_1")];
    \n+
    152 char stringpool_str67[sizeof("iso88595")];
    \n+
    153 char stringpool_str69[sizeof("iso88599")];
    \n+
    154 char stringpool_str70[sizeof("greek8")];
    \n+
    155 char stringpool_str71[sizeof("ISO8859-1")];
    \n+
    156 char stringpool_str72[sizeof("L7")];
    \n+
    157 char stringpool_str73[sizeof("ISO8859-8")];
    \n+
    158 char stringpool_str74[sizeof("iso885915")];
    \n+
    159 char stringpool_str75[sizeof("ISO8859-5")];
    \n+
    160 char stringpool_str77[sizeof("ISO8859-9")];
    \n+
    161 char stringpool_str79[sizeof("ISO-8859-1")];
    \n+
    162 char stringpool_str81[sizeof("ISO-8859-8")];
    \n+
    163 char stringpool_str82[sizeof("ISO8859-15")];
    \n+
    164 char stringpool_str83[sizeof("ISO-8859-5")];
    \n+
    165 char stringpool_str85[sizeof("ISO-8859-9")];
    \n+
    166 char stringpool_str87[sizeof("iso88596")];
    \n+
    167 char stringpool_str89[sizeof("ISO-IR-58")];
    \n+
    168 char stringpool_str90[sizeof("ISO-8859-15")];
    \n+
    169 char stringpool_str91[sizeof("JAVA")];
    \n+
    170 char stringpool_str92[sizeof("L3")];
    \n+
    171 char stringpool_str93[sizeof("iso14")];
    \n+
    172 char stringpool_str94[sizeof("iso84")];
    \n+
    173 char stringpool_str95[sizeof("ISO8859-6")];
    \n+
    174 char stringpool_str100[sizeof("ISO-IR-159")];
    \n+
    175 char stringpool_str101[sizeof("ISO-IR-199")];
    \n+
    176 char stringpool_str102[sizeof("ISO-IR-6")];
    \n+
    177 char stringpool_str103[sizeof("ISO-8859-6")];
    \n+
    178 char stringpool_str104[sizeof("862")];
    \n+
    179 char stringpool_str105[sizeof("HZ")];
    \n+
    180 char stringpool_str107[sizeof("iso646")];
    \n+
    181 char stringpool_str108[sizeof("ISO-IR-165")];
    \n+
    182 char stringpool_str109[sizeof("ISO_8859-1")];
    \n+
    183 char stringpool_str110[sizeof("ISO-8859-16")];
    \n+
    184 char stringpool_str111[sizeof("ISO_8859-8")];
    \n+
    185 char stringpool_str113[sizeof("ISO_8859-5")];
    \n+
    186 char stringpool_str115[sizeof("ISO_8859-9")];
    \n+
    187 char stringpool_str116[sizeof("JP")];
    \n+
    188 char stringpool_str118[sizeof("iso82")];
    \n+
    189 char stringpool_str120[sizeof("ISO_8859-15")];
    \n+
    190 char stringpool_str121[sizeof("iso88594")];
    \n+
    191 char stringpool_str122[sizeof("850")];
    \n+
    192 char stringpool_str123[sizeof("ISO-IR-148")];
    \n+
    193 char stringpool_str124[sizeof("ISO_8859-15:1998")];
    \n+
    194 char stringpool_str127[sizeof("ISO-IR-149")];
    \n+
    195 char stringpool_str128[sizeof("ISO-IR-166")];
    \n+
    196 char stringpool_str129[sizeof("ISO8859-4")];
    \n+
    197 char stringpool_str133[sizeof("ISO_8859-6")];
    \n+
    198 char stringpool_str135[sizeof("iso10")];
    \n+
    199 char stringpool_str136[sizeof("CN")];
    \n+
    200 char stringpool_str137[sizeof("ISO-8859-4")];
    \n+
    201 char stringpool_str140[sizeof("ISO_8859-16")];
    \n+
    202 char stringpool_str141[sizeof("KOREAN")];
    \n+
    203 char stringpool_str142[sizeof("ISO-IR-101")];
    \n+
    204 char stringpool_str143[sizeof("ISO-IR-14")];
    \n+
    205 char stringpool_str144[sizeof("ISO-8859-14")];
    \n+
    206 char stringpool_str145[sizeof("iso88592")];
    \n+
    207 char stringpool_str146[sizeof("KOI8-R")];
    \n+
    208 char stringpool_str148[sizeof("ISO-IR-109")];
    \n+
    209 char stringpool_str149[sizeof("C99")];
    \n+
    210 char stringpool_str150[sizeof("iso87")];
    \n+
    211 char stringpool_str151[sizeof("ISO_8859-14:1998")];
    \n+
    212 char stringpool_str152[sizeof("LATIN1")];
    \n+
    213 char stringpool_str153[sizeof("ISO8859-2")];
    \n+
    214 char stringpool_str154[sizeof("LATIN8")];
    \n+
    215 char stringpool_str155[sizeof("ISO-IR-179")];
    \n+
    216 char stringpool_str156[sizeof("LATIN5")];
    \n+
    217 char stringpool_str157[sizeof("ISO-IR-126")];
    \n+
    218 char stringpool_str158[sizeof("ASCII")];
    \n+
    219 char stringpool_str161[sizeof("ISO-8859-2")];
    \n+
    220 char stringpool_str164[sizeof("CP819")];
    \n+
    221 char stringpool_str167[sizeof("ISO_8859-4")];
    \n+
    222 char stringpool_str170[sizeof("TCVN")];
    \n+
    223 char stringpool_str171[sizeof("ISO-IR-138")];
    \n+
    224 char stringpool_str173[sizeof("hp15CN")];
    \n+
    225 char stringpool_str174[sizeof("ISO_8859-14")];
    \n+
    226 char stringpool_str176[sizeof("LATIN6")];
    \n+
    227 char stringpool_str177[sizeof("iso88597")];
    \n+
    228 char stringpool_str178[sizeof("ISO8859-10")];
    \n+
    229 char stringpool_str179[sizeof("ISO-IR-144")];
    \n+
    230 char stringpool_str183[sizeof("ISO_8859-16:2000")];
    \n+
    231 char stringpool_str185[sizeof("ISO8859-7")];
    \n+
    232 char stringpool_str186[sizeof("ISO-8859-10")];
    \n+
    233 char stringpool_str189[sizeof("iso13")];
    \n+
    234 char stringpool_str190[sizeof("iso83")];
    \n+
    235 char stringpool_str191[sizeof("ISO_8859-2")];
    \n+
    236 char stringpool_str192[sizeof("ISO-IR-110")];
    \n+
    237 char stringpool_str193[sizeof("ISO-8859-7")];
    \n+
    238 char stringpool_str194[sizeof("CP866")];
    \n+
    239 char stringpool_str195[sizeof("CP949")];
    \n+
    240 char stringpool_str196[sizeof("tis620")];
    \n+
    241 char stringpool_str197[sizeof("VISCII")];
    \n+
    242 char stringpool_str198[sizeof("ISO-IR-226")];
    \n+
    243 char stringpool_str199[sizeof("US")];
    \n+
    244 char stringpool_str200[sizeof("ISO-IR-87")];
    \n+
    245 char stringpool_str201[sizeof("ISO-IR-57")];
    \n+
    246 char stringpool_str202[sizeof("IBM819")];
    \n+
    247 char stringpool_str203[sizeof("macthai")];
    \n+
    248 char stringpool_str204[sizeof("MS-ANSI")];
    \n+
    249 char stringpool_str205[sizeof("macturk")];
    \n+
    250 char stringpool_str207[sizeof("CP1251")];
    \n+
    251 char stringpool_str208[sizeof("ISO-IR-157")];
    \n+
    252 char stringpool_str209[sizeof("CP1258")];
    \n+
    253 char stringpool_str210[sizeof("LATIN4")];
    \n+
    254 char stringpool_str211[sizeof("CP1255")];
    \n+
    255 char stringpool_str212[sizeof("ISO_8859-10:1992")];
    \n+
    256 char stringpool_str213[sizeof("cp866")];
    \n+
    257 char stringpool_str214[sizeof("cp949")];
    \n+
    258 char stringpool_str216[sizeof("ISO_8859-10")];
    \n+
    259 char stringpool_str217[sizeof("iso88593")];
    \n+
    260 char stringpool_str218[sizeof("ROMAN8")];
    \n+
    261 char stringpool_str219[sizeof("CHINESE")];
    \n+
    262 char stringpool_str220[sizeof("JIS0208")];
    \n+
    263 char stringpool_str223[sizeof("ISO_8859-7")];
    \n+
    264 char stringpool_str225[sizeof("macgreek")];
    \n+
    265 char stringpool_str226[sizeof("cp1251")];
    \n+
    266 char stringpool_str227[sizeof("ascii_8")];
    \n+
    267 char stringpool_str228[sizeof("cp1258")];
    \n+
    268 char stringpool_str229[sizeof("ECMA-118")];
    \n+
    269 char stringpool_str230[sizeof("cp1255")];
    \n+
    270 char stringpool_str231[sizeof("CP1256")];
    \n+
    271 char stringpool_str232[sizeof("IBM866")];
    \n+
    272 char stringpool_str233[sizeof("ISO-8859-3")];
    \n+
    273 char stringpool_str234[sizeof("LATIN2")];
    \n+
    274 char stringpool_str235[sizeof("BIG5")];
    \n+
    275 char stringpool_str236[sizeof("MULELAO-1")];
    \n+
    276 char stringpool_str237[sizeof("MS-EE")];
    \n+
    277 char stringpool_str239[sizeof("ISO646-CN")];
    \n+
    278 char stringpool_str240[sizeof("ISO-8859-13")];
    \n+
    279 char stringpool_str242[sizeof("ISO-IR-100")];
    \n+
    280 char stringpool_str243[sizeof("BIG-5")];
    \n+
    281 char stringpool_str247[sizeof("ISO-IR-127")];
    \n+
    282 char stringpool_str248[sizeof("GREEK8")];
    \n+
    283 char stringpool_str250[sizeof("cp1256")];
    \n+
    284 char stringpool_str252[sizeof("CP862")];
    \n+
    285 char stringpool_str253[sizeof("CP1361")];
    \n+
    286 char stringpool_str255[sizeof("GBK")];
    \n+
    287 char stringpool_str258[sizeof("ELOT_928")];
    \n+
    288 char stringpool_str260[sizeof("CP850")];
    \n+
    289 char stringpool_str261[sizeof("CP936")];
    \n+
    290 char stringpool_str262[sizeof("CP950")];
    \n+
    291 char stringpool_str263[sizeof("ISO_8859-3")];
    \n+
    292 char stringpool_str265[sizeof("CP1254")];
    \n+
    293 char stringpool_str266[sizeof("LATIN7")];
    \n+
    294 char stringpool_str270[sizeof("ISO_8859-13")];
    \n+
    295 char stringpool_str271[sizeof("cp862")];
    \n+
    296 char stringpool_str273[sizeof("CP874")];
    \n+
    297 char stringpool_str274[sizeof("CSKOI8R")];
    \n+
    298 char stringpool_str275[sizeof("EUCKR")];
    \n+
    299 char stringpool_str279[sizeof("cp850")];
    \n+
    300 char stringpool_str280[sizeof("cp936")];
    \n+
    301 char stringpool_str281[sizeof("cp950")];
    \n+
    302 char stringpool_str283[sizeof("EUC-KR")];
    \n+
    303 char stringpool_str284[sizeof("cp1254")];
    \n+
    304 char stringpool_str285[sizeof("ECMA-114")];
    \n+
    305 char stringpool_str288[sizeof("eucKR")];
    \n+
    306 char stringpool_str289[sizeof("CP1252")];
    \n+
    307 char stringpool_str290[sizeof("IBM862")];
    \n+
    308 char stringpool_str291[sizeof("CSISO159JISX02121990")];
    \n+
    309 char stringpool_str292[sizeof("cp874")];
    \n+
    310 char stringpool_str293[sizeof("ISO646-JP")];
    \n+
    311 char stringpool_str294[sizeof("CSASCII")];
    \n+
    312 char stringpool_str295[sizeof("EUCCN")];
    \n+
    313 char stringpool_str297[sizeof("UCS-4LE")];
    \n+
    314 char stringpool_str298[sizeof("IBM850")];
    \n+
    315 char stringpool_str301[sizeof("GREEK")];
    \n+
    316 char stringpool_str302[sizeof("ISO646-US")];
    \n+
    317 char stringpool_str303[sizeof("EUC-CN")];
    \n+
    318 char stringpool_str304[sizeof("TIS620")];
    \n+
    319 char stringpool_str305[sizeof("mac")];
    \n+
    320 char stringpool_str306[sizeof("LATIN3")];
    \n+
    321 char stringpool_str307[sizeof("CP1250")];
    \n+
    322 char stringpool_str308[sizeof("cp1252")];
    \n+
    323 char stringpool_str309[sizeof("UCS-2LE")];
    \n+
    324 char stringpool_str310[sizeof("CSISOLATIN1")];
    \n+
    325 char stringpool_str312[sizeof("TIS-620")];
    \n+
    326 char stringpool_str313[sizeof("TCVN5712-1")];
    \n+
    327 char stringpool_str314[sizeof("CSISOLATIN5")];
    \n+
    328 char stringpool_str318[sizeof("GB_1988-80")];
    \n+
    329 char stringpool_str319[sizeof("CP932")];
    \n+
    330 char stringpool_str320[sizeof("ASMO-708")];
    \n+
    331 char stringpool_str321[sizeof("CP1257")];
    \n+
    332 char stringpool_str324[sizeof("KOI8-T")];
    \n+
    333 char stringpool_str326[sizeof("cp1250")];
    \n+
    334 char stringpool_str329[sizeof("HP-ROMAN8")];
    \n+
    335 char stringpool_str331[sizeof("MS_KANJI")];
    \n+
    336 char stringpool_str333[sizeof("CSVISCII")];
    \n+
    337 char stringpool_str334[sizeof("CSISOLATIN6")];
    \n+
    338 char stringpool_str335[sizeof("KSC_5601")];
    \n+
    339 char stringpool_str336[sizeof("SHIFT-JIS")];
    \n+
    340 char stringpool_str337[sizeof("ISO-IR-203")];
    \n+
    341 char stringpool_str338[sizeof("cp932")];
    \n+
    342 char stringpool_str339[sizeof("JOHAB")];
    \n+
    343 char stringpool_str340[sizeof("cp1257")];
    \n+
    344 char stringpool_str342[sizeof("ARMSCII-8")];
    \n+
    345 char stringpool_str345[sizeof("ISO_646.IRV:1991")];
    \n+
    346 char stringpool_str347[sizeof("TCVN-5712")];
    \n+
    347 char stringpool_str349[sizeof("EUCJP")];
    \n+
    348 char stringpool_str350[sizeof("UTF8")];
    \n+
    349 char stringpool_str351[sizeof("X0201")];
    \n+
    350 char stringpool_str352[sizeof("GB2312")];
    \n+
    351 char stringpool_str353[sizeof("X0208")];
    \n+
    352 char stringpool_str354[sizeof("ISO-2022-KR")];
    \n+
    353 char stringpool_str355[sizeof("MS-CYRL")];
    \n+
    354 char stringpool_str356[sizeof("ISO-2022-JP-1")];
    \n+
    355 char stringpool_str357[sizeof("EUC-JP")];
    \n+
    356 char stringpool_str358[sizeof("UTF-8")];
    \n+
    357 char stringpool_str359[sizeof("VISCII1.1-1")];
    \n+
    358 char stringpool_str360[sizeof("CP367")];
    \n+
    359 char stringpool_str361[sizeof("CP1253")];
    \n+
    360 char stringpool_str362[sizeof("eucJP")];
    \n+
    361 char stringpool_str364[sizeof("mac_cyr")];
    \n+
    362 char stringpool_str365[sizeof("US-ASCII")];
    \n+
    363 char stringpool_str366[sizeof("SHIFT_JIS")];
    \n+
    364 char stringpool_str368[sizeof("CSISOLATIN4")];
    \n+
    365 char stringpool_str369[sizeof("TIS620-0")];
    \n+
    366 char stringpool_str371[sizeof("CSBIG5")];
    \n+
    367 char stringpool_str374[sizeof("ISO-2022-CN")];
    \n+
    368 char stringpool_str377[sizeof("CP437")];
    \n+
    369 char stringpool_str379[sizeof("CN-BIG5")];
    \n+
    370 char stringpool_str380[sizeof("cp1253")];
    \n+
    371 char stringpool_str381[sizeof("ARABIC")];
    \n+
    372 char stringpool_str383[sizeof("X0212")];
    \n+
    373 char stringpool_str384[sizeof("CSISO14JISC6220RO")];
    \n+
    374 char stringpool_str387[sizeof("GB18030")];
    \n+
    375 char stringpool_str389[sizeof("UCS-4BE")];
    \n+
    376 char stringpool_str392[sizeof("CSISOLATIN2")];
    \n+
    377 char stringpool_str393[sizeof("GEORGIAN-PS")];
    \n+
    378 char stringpool_str394[sizeof("KS_C_5601-1989")];
    \n+
    379 char stringpool_str395[sizeof("CP1133")];
    \n+
    380 char stringpool_str396[sizeof("cp437")];
    \n+
    381 char stringpool_str397[sizeof("ISO-2022-JP-2")];
    \n+
    382 char stringpool_str398[sizeof("IBM367")];
    \n+
    383 char stringpool_str401[sizeof("UCS-2BE")];
    \n+
    384 char stringpool_str402[sizeof("UNICODE-1-1")];
    \n+
    385 char stringpool_str409[sizeof("JIS_C6220-1969-RO")];
    \n+
    386 char stringpool_str411[sizeof("MS-ARAB")];
    \n+
    387 char stringpool_str415[sizeof("IBM437")];
    \n+
    388 char stringpool_str418[sizeof("MAC")];
    \n+
    389 char stringpool_str422[sizeof("UTF-16LE")];
    \n+
    390 char stringpool_str428[sizeof("ISO-2022-JP")];
    \n+
    391 char stringpool_str429[sizeof("CN-GB-ISOIR165")];
    \n+
    392 char stringpool_str434[sizeof("WINDOWS-1251")];
    \n+
    393 char stringpool_str435[sizeof("WINDOWS-1258")];
    \n+
    394 char stringpool_str436[sizeof("WINDOWS-1255")];
    \n+
    395 char stringpool_str438[sizeof("CSISOLATINARABIC")];
    \n+
    396 char stringpool_str441[sizeof("MS-HEBR")];
    \n+
    397 char stringpool_str444[sizeof("CYRILLIC")];
    \n+
    398 char stringpool_str445[sizeof("JIS_C6226-1983")];
    \n+
    399 char stringpool_str446[sizeof("WINDOWS-1256")];
    \n+
    400 char stringpool_str448[sizeof("KS_C_5601-1987")];
    \n+
    401 char stringpool_str450[sizeof("UHC")];
    \n+
    402 char stringpool_str452[sizeof("BIGFIVE")];
    \n+
    403 char stringpool_str454[sizeof("CN-GB")];
    \n+
    404 char stringpool_str455[sizeof("GEORGIAN-ACADEMY")];
    \n+
    405 char stringpool_str460[sizeof("BIG-FIVE")];
    \n+
    406 char stringpool_str461[sizeof("CSIBM866")];
    \n+
    407 char stringpool_str462[sizeof("UTF7")];
    \n+
    408 char stringpool_str463[sizeof("WINDOWS-1254")];
    \n+
    409 char stringpool_str464[sizeof("CSISOLATIN3")];
    \n+
    410 char stringpool_str465[sizeof("UNICODE-1-1-UTF-7")];
    \n+
    411 char stringpool_str467[sizeof("CSISO57GB1988")];
    \n+
    412 char stringpool_str470[sizeof("UTF-7")];
    \n+
    413 char stringpool_str472[sizeof("GB_2312-80")];
    \n+
    414 char stringpool_str474[sizeof("CSISO2022KR")];
    \n+
    415 char stringpool_str475[sizeof("WINDOWS-1252")];
    \n+
    416 char stringpool_str476[sizeof("KOI8-U")];
    \n+
    417 char stringpool_str479[sizeof("ISO_8859-8:1988")];
    \n+
    418 char stringpool_str480[sizeof("ISO_8859-5:1988")];
    \n+
    419 char stringpool_str483[sizeof("ISO_8859-9:1989")];
    \n+
    420 char stringpool_str484[sizeof("WINDOWS-1250")];
    \n+
    421 char stringpool_str485[sizeof("MACICELAND")];
    \n+
    422 char stringpool_str486[sizeof("CSISOLATINGREEK")];
    \n+
    423 char stringpool_str487[sizeof("ISO-2022-CN-EXT")];
    \n+
    424 char stringpool_str488[sizeof("JIS_X0201")];
    \n+
    425 char stringpool_str489[sizeof("JISX0201-1976")];
    \n+
    426 char stringpool_str490[sizeof("JIS_X0208")];
    \n+
    427 char stringpool_str491[sizeof("WINDOWS-1257")];
    \n+
    428 char stringpool_str494[sizeof("CSISO2022CN")];
    \n+
    429 char stringpool_str496[sizeof("MS-GREEK")];
    \n+
    430 char stringpool_str500[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")];
    \n+
    431 char stringpool_str503[sizeof("KOI8-RU")];
    \n+
    432 char stringpool_str504[sizeof("TIS620.2529-1")];
    \n+
    433 char stringpool_str505[sizeof("MACROMAN")];
    \n+
    434 char stringpool_str506[sizeof("WINDOWS-874")];
    \n+
    435 char stringpool_str507[sizeof("ISO_8859-4:1988")];
    \n+
    436 char stringpool_str509[sizeof("CSKSC56011987")];
    \n+
    437 char stringpool_str511[sizeof("WINDOWS-1253")];
    \n+
    438 char stringpool_str514[sizeof("UTF-16BE")];
    \n+
    439 char stringpool_str515[sizeof("CSISO87JISX0208")];
    \n+
    440 char stringpool_str516[sizeof("CSISO2022JP2")];
    \n+
    441 char stringpool_str520[sizeof("JIS_X0212")];
    \n+
    442 char stringpool_str521[sizeof("MACROMANIA")];
    \n+
    443 char stringpool_str522[sizeof("CSUNICODE11")];
    \n+
    444 char stringpool_str523[sizeof("MACTHAI")];
    \n+
    445 char stringpool_str528[sizeof("UTF-32LE")];
    \n+
    446 char stringpool_str531[sizeof("CSHPROMAN8")];
    \n+
    447 char stringpool_str534[sizeof("ISO_8859-1:1987")];
    \n+
    448 char stringpool_str541[sizeof("BIG5HKSCS")];
    \n+
    449 char stringpool_str546[sizeof("ISO_8859-6:1987")];
    \n+
    450 char stringpool_str547[sizeof("JIS_X0212-1990")];
    \n+
    451 char stringpool_str548[sizeof("CSISO2022JP")];
    \n+
    452 char stringpool_str549[sizeof("BIG5-HKSCS")];
    \n+
    453 char stringpool_str553[sizeof("CSSHIFTJIS")];
    \n+
    454 char stringpool_str555[sizeof("ISO_8859-3:1988")];
    \n+
    455 char stringpool_str557[sizeof("JIS_X0208-1990")];
    \n+
    456 char stringpool_str560[sizeof("CSISOLATINHEBREW")];
    \n+
    457 char stringpool_str561[sizeof("CSISOLATINCYRILLIC")];
    \n+
    458 char stringpool_str563[sizeof("ISO-CELTIC")];
    \n+
    459 char stringpool_str564[sizeof("HZ-GB-2312")];
    \n+
    460 char stringpool_str571[sizeof("ANSI_X3.4-1968")];
    \n+
    461 char stringpool_str572[sizeof("HEBREW")];
    \n+
    462 char stringpool_str575[sizeof("ISO_8859-2:1987")];
    \n+
    463 char stringpool_str577[sizeof("CSISO58GB231280")];
    \n+
    464 char stringpool_str581[sizeof("CSGB2312")];
    \n+
    465 char stringpool_str582[sizeof("ANSI_X3.4-1986")];
    \n+
    466 char stringpool_str583[sizeof("CSUNICODE11UTF7")];
    \n+
    467 char stringpool_str584[sizeof("JIS_X0208-1983")];
    \n+
    468 char stringpool_str591[sizeof("ISO_8859-7:1987")];
    \n+
    469 char stringpool_str594[sizeof("EUCTW")];
    \n+
    470 char stringpool_str596[sizeof("CSEUCKR")];
    \n+
    471 char stringpool_str602[sizeof("EUC-TW")];
    \n+
    472 char stringpool_str605[sizeof("MACCROATIAN")];
    \n+
    473 char stringpool_str607[sizeof("eucTW")];
    \n+
    474 char stringpool_str614[sizeof("TIS620.2533-1")];
    \n+
    475 char stringpool_str617[sizeof("MACGREEK")];
    \n+
    476 char stringpool_str620[sizeof("UTF-32BE")];
    \n+
    477 char stringpool_str625[sizeof("MACINTOSH")];
    \n+
    478 char stringpool_str637[sizeof("UNICODELITTLE")];
    \n+
    479 char stringpool_str641[sizeof("MS-TURK")];
    \n+
    480 char stringpool_str645[sizeof("MACUKRAINE")];
    \n+
    481 char stringpool_str651[sizeof("IBM-CP1133")];
    \n+
    482 char stringpool_str658[sizeof("MACCENTRALEUROPE")];
    \n+
    483 char stringpool_str663[sizeof("NEXTSTEP")];
    \n+
    484 char stringpool_str664[sizeof("TIS620.2533-0")];
    \n+
    485 char stringpool_str674[sizeof("JIS_X0212.1990-0")];
    \n+
    486 char stringpool_str697[sizeof("MACARABIC")];
    \n+
    487 char stringpool_str706[sizeof("UNICODEBIG")];
    \n+
    488 char stringpool_str723[sizeof("CSPC862LATINHEBREW")];
    \n+
    489 char stringpool_str748[sizeof("MACCYRILLIC")];
    \n+
    490 char stringpool_str756[sizeof("WINBALTRIM")];
    \n+
    491 char stringpool_str758[sizeof("TCVN5712-1:1993")];
    \n+
    492 char stringpool_str762[sizeof("CSMACINTOSH")];
    \n+
    493 char stringpool_str788[sizeof("CSHALFWIDTHKATAKANA")];
    \n+
    494 char stringpool_str884[sizeof("MACHEBREW")];
    \n+
    495 char stringpool_str899[sizeof("MACTURKISH")];
    \n+
    496 char stringpool_str905[sizeof("CSPC850MULTILINGUAL")];
    \n+
    497 char stringpool_str915[sizeof("CSEUCTW")];
    \n+
    498 char stringpool_str1079[sizeof("CSEUCPKDFMTJAPANESE")];
    \n+
    499 };
    \n+
    \n+
    500static const struct stringpool_t stringpool_contents =
    \n+
    501 {
    \n+
    502 "L1",
    \n+
    503 "L8",
    \n+
    504 "L5",
    \n+
    505 "L6",
    \n+
    506 "SJIS",
    \n+
    507 "koi8",
    \n+
    508 "sjis",
    \n+
    509 "R8",
    \n+
    510 "iso81",
    \n+
    511 "iso88",
    \n+
    512 "iso15",
    \n+
    513 "iso85",
    \n+
    514 "thai8",
    \n+
    515 "iso89",
    \n+
    516 "roma8",
    \n+
    517 "L4",
    \n+
    518 "utf8",
    \n+
    519 "866",
    \n+
    520 "iso815",
    \n+
    521 "big5",
    \n+
    522 "roman8",
    \n+
    523 "L2",
    \n+
    524 "646",
    \n+
    525 "iso86",
    \n+
    526 "iso88591",
    \n+
    527 "iso88598",
    \n+
    528 "iso_1",
    \n+
    529 "iso88595",
    \n+
    530 "iso88599",
    \n+
    531 "greek8",
    \n+
    532 "ISO8859-1",
    \n+
    533 "L7",
    \n+
    534 "ISO8859-8",
    \n+
    535 "iso885915",
    \n+
    536 "ISO8859-5",
    \n+
    537 "ISO8859-9",
    \n+
    538 "ISO-8859-1",
    \n+
    539 "ISO-8859-8",
    \n+
    540 "ISO8859-15",
    \n+
    541 "ISO-8859-5",
    \n+
    542 "ISO-8859-9",
    \n+
    543 "iso88596",
    \n+
    544 "ISO-IR-58",
    \n+
    545 "ISO-8859-15",
    \n+
    546 "JAVA",
    \n+
    547 "L3",
    \n+
    548 "iso14",
    \n+
    549 "iso84",
    \n+
    550 "ISO8859-6",
    \n+
    551 "ISO-IR-159",
    \n+
    552 "ISO-IR-199",
    \n+
    553 "ISO-IR-6",
    \n+
    554 "ISO-8859-6",
    \n+
    555 "862",
    \n+
    556 "HZ",
    \n+
    557 "iso646",
    \n+
    558 "ISO-IR-165",
    \n+
    559 "ISO_8859-1",
    \n+
    560 "ISO-8859-16",
    \n+
    561 "ISO_8859-8",
    \n+
    562 "ISO_8859-5",
    \n+
    563 "ISO_8859-9",
    \n+
    564 "JP",
    \n+
    565 "iso82",
    \n+
    566 "ISO_8859-15",
    \n+
    567 "iso88594",
    \n+
    568 "850",
    \n+
    569 "ISO-IR-148",
    \n+
    570 "ISO_8859-15:1998",
    \n+
    571 "ISO-IR-149",
    \n+
    572 "ISO-IR-166",
    \n+
    573 "ISO8859-4",
    \n+
    574 "ISO_8859-6",
    \n+
    575 "iso10",
    \n+
    576 "CN",
    \n+
    577 "ISO-8859-4",
    \n+
    578 "ISO_8859-16",
    \n+
    579 "KOREAN",
    \n+
    580 "ISO-IR-101",
    \n+
    581 "ISO-IR-14",
    \n+
    582 "ISO-8859-14",
    \n+
    583 "iso88592",
    \n+
    584 "KOI8-R",
    \n+
    585 "ISO-IR-109",
    \n+
    586 "C99",
    \n+
    587 "iso87",
    \n+
    588 "ISO_8859-14:1998",
    \n+
    589 "LATIN1",
    \n+
    590 "ISO8859-2",
    \n+
    591 "LATIN8",
    \n+
    592 "ISO-IR-179",
    \n+
    593 "LATIN5",
    \n+
    594 "ISO-IR-126",
    \n+
    595 "ASCII",
    \n+
    596 "ISO-8859-2",
    \n+
    597 "CP819",
    \n+
    598 "ISO_8859-4",
    \n+
    599 "TCVN",
    \n+
    600 "ISO-IR-138",
    \n+
    601 "hp15CN",
    \n+
    602 "ISO_8859-14",
    \n+
    603 "LATIN6",
    \n+
    604 "iso88597",
    \n+
    605 "ISO8859-10",
    \n+
    606 "ISO-IR-144",
    \n+
    607 "ISO_8859-16:2000",
    \n+
    608 "ISO8859-7",
    \n+
    609 "ISO-8859-10",
    \n+
    610 "iso13",
    \n+
    611 "iso83",
    \n+
    612 "ISO_8859-2",
    \n+
    613 "ISO-IR-110",
    \n+
    614 "ISO-8859-7",
    \n+
    615 "CP866",
    \n+
    616 "CP949",
    \n+
    617 "tis620",
    \n+
    618 "VISCII",
    \n+
    619 "ISO-IR-226",
    \n+
    620 "US",
    \n+
    621 "ISO-IR-87",
    \n+
    622 "ISO-IR-57",
    \n+
    623 "IBM819",
    \n+
    624 "macthai",
    \n+
    625 "MS-ANSI",
    \n+
    626 "macturk",
    \n+
    627 "CP1251",
    \n+
    628 "ISO-IR-157",
    \n+
    629 "CP1258",
    \n+
    630 "LATIN4",
    \n+
    631 "CP1255",
    \n+
    632 "ISO_8859-10:1992",
    \n+
    633 "cp866",
    \n+
    634 "cp949",
    \n+
    635 "ISO_8859-10",
    \n+
    636 "iso88593",
    \n+
    637 "ROMAN8",
    \n+
    638 "CHINESE",
    \n+
    639 "JIS0208",
    \n+
    640 "ISO_8859-7",
    \n+
    641 "macgreek",
    \n+
    642 "cp1251",
    \n+
    643 "ascii_8",
    \n+
    644 "cp1258",
    \n+
    645 "ECMA-118",
    \n+
    646 "cp1255",
    \n+
    647 "CP1256",
    \n+
    648 "IBM866",
    \n+
    649 "ISO-8859-3",
    \n+
    650 "LATIN2",
    \n+
    651 "BIG5",
    \n+
    652 "MULELAO-1",
    \n+
    653 "MS-EE",
    \n+
    654 "ISO646-CN",
    \n+
    655 "ISO-8859-13",
    \n+
    656 "ISO-IR-100",
    \n+
    657 "BIG-5",
    \n+
    658 "ISO-IR-127",
    \n+
    659 "GREEK8",
    \n+
    660 "cp1256",
    \n+
    661 "CP862",
    \n+
    662 "CP1361",
    \n+
    663 "GBK",
    \n+
    664 "ELOT_928",
    \n+
    665 "CP850",
    \n+
    666 "CP936",
    \n+
    667 "CP950",
    \n+
    668 "ISO_8859-3",
    \n+
    669 "CP1254",
    \n+
    670 "LATIN7",
    \n+
    671 "ISO_8859-13",
    \n+
    672 "cp862",
    \n+
    673 "CP874",
    \n+
    674 "CSKOI8R",
    \n+
    675 "EUCKR",
    \n+
    676 "cp850",
    \n+
    677 "cp936",
    \n+
    678 "cp950",
    \n+
    679 "EUC-KR",
    \n+
    680 "cp1254",
    \n+
    681 "ECMA-114",
    \n+
    682 "eucKR",
    \n+
    683 "CP1252",
    \n+
    684 "IBM862",
    \n+
    685 "CSISO159JISX02121990",
    \n+
    686 "cp874",
    \n+
    687 "ISO646-JP",
    \n+
    688 "CSASCII",
    \n+
    689 "EUCCN",
    \n+
    690 "UCS-4LE",
    \n+
    691 "IBM850",
    \n+
    692 "GREEK",
    \n+
    693 "ISO646-US",
    \n+
    694 "EUC-CN",
    \n+
    695 "TIS620",
    \n+
    696 "mac",
    \n+
    697 "LATIN3",
    \n+
    698 "CP1250",
    \n+
    699 "cp1252",
    \n+
    700 "UCS-2LE",
    \n+
    701 "CSISOLATIN1",
    \n+
    702 "TIS-620",
    \n+
    703 "TCVN5712-1",
    \n+
    704 "CSISOLATIN5",
    \n+
    705 "GB_1988-80",
    \n+
    706 "CP932",
    \n+
    707 "ASMO-708",
    \n+
    708 "CP1257",
    \n+
    709 "KOI8-T",
    \n+
    710 "cp1250",
    \n+
    711 "HP-ROMAN8",
    \n+
    712 "MS_KANJI",
    \n+
    713 "CSVISCII",
    \n+
    714 "CSISOLATIN6",
    \n+
    715 "KSC_5601",
    \n+
    716 "SHIFT-JIS",
    \n+
    717 "ISO-IR-203",
    \n+
    718 "cp932",
    \n+
    719 "JOHAB",
    \n+
    720 "cp1257",
    \n+
    721 "ARMSCII-8",
    \n+
    722 "ISO_646.IRV:1991",
    \n+
    723 "TCVN-5712",
    \n+
    724 "EUCJP",
    \n+
    725 "UTF8",
    \n+
    726 "X0201",
    \n+
    727 "GB2312",
    \n+
    728 "X0208",
    \n+
    729 "ISO-2022-KR",
    \n+
    730 "MS-CYRL",
    \n+
    731 "ISO-2022-JP-1",
    \n+
    732 "EUC-JP",
    \n+
    733 "UTF-8",
    \n+
    734 "VISCII1.1-1",
    \n+
    735 "CP367",
    \n+
    736 "CP1253",
    \n+
    737 "eucJP",
    \n+
    738 "mac_cyr",
    \n+
    739 "US-ASCII",
    \n+
    740 "SHIFT_JIS",
    \n+
    741 "CSISOLATIN4",
    \n+
    742 "TIS620-0",
    \n+
    743 "CSBIG5",
    \n+
    744 "ISO-2022-CN",
    \n+
    745 "CP437",
    \n+
    746 "CN-BIG5",
    \n+
    747 "cp1253",
    \n+
    748 "ARABIC",
    \n+
    749 "X0212",
    \n+
    750 "CSISO14JISC6220RO",
    \n+
    751 "GB18030",
    \n+
    752 "UCS-4BE",
    \n+
    753 "CSISOLATIN2",
    \n+
    754 "GEORGIAN-PS",
    \n+
    755 "KS_C_5601-1989",
    \n+
    756 "CP1133",
    \n+
    757 "cp437",
    \n+
    758 "ISO-2022-JP-2",
    \n+
    759 "IBM367",
    \n+
    760 "UCS-2BE",
    \n+
    761 "UNICODE-1-1",
    \n+
    762 "JIS_C6220-1969-RO",
    \n+
    763 "MS-ARAB",
    \n+
    764 "IBM437",
    \n+
    765 "MAC",
    \n+
    766 "UTF-16LE",
    \n+
    767 "ISO-2022-JP",
    \n+
    768 "CN-GB-ISOIR165",
    \n+
    769 "WINDOWS-1251",
    \n+
    770 "WINDOWS-1258",
    \n+
    771 "WINDOWS-1255",
    \n+
    772 "CSISOLATINARABIC",
    \n+
    773 "MS-HEBR",
    \n+
    774 "CYRILLIC",
    \n+
    775 "JIS_C6226-1983",
    \n+
    776 "WINDOWS-1256",
    \n+
    777 "KS_C_5601-1987",
    \n+
    778 "UHC",
    \n+
    779 "BIGFIVE",
    \n+
    780 "CN-GB",
    \n+
    781 "GEORGIAN-ACADEMY",
    \n+
    782 "BIG-FIVE",
    \n+
    783 "CSIBM866",
    \n+
    784 "UTF7",
    \n+
    785 "WINDOWS-1254",
    \n+
    786 "CSISOLATIN3",
    \n+
    787 "UNICODE-1-1-UTF-7",
    \n+
    788 "CSISO57GB1988",
    \n+
    789 "UTF-7",
    \n+
    790 "GB_2312-80",
    \n+
    791 "CSISO2022KR",
    \n+
    792 "WINDOWS-1252",
    \n+
    793 "KOI8-U",
    \n+
    794 "ISO_8859-8:1988",
    \n+
    795 "ISO_8859-5:1988",
    \n+
    796 "ISO_8859-9:1989",
    \n+
    797 "WINDOWS-1250",
    \n+
    798 "MACICELAND",
    \n+
    799 "CSISOLATINGREEK",
    \n+
    800 "ISO-2022-CN-EXT",
    \n+
    801 "JIS_X0201",
    \n+
    802 "JISX0201-1976",
    \n+
    803 "JIS_X0208",
    \n+
    804 "WINDOWS-1257",
    \n+
    805 "CSISO2022CN",
    \n+
    806 "MS-GREEK",
    \n+
    807 "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
    \n+
    808 "KOI8-RU",
    \n+
    809 "TIS620.2529-1",
    \n+
    810 "MACROMAN",
    \n+
    811 "WINDOWS-874",
    \n+
    812 "ISO_8859-4:1988",
    \n+
    813 "CSKSC56011987",
    \n+
    814 "WINDOWS-1253",
    \n+
    815 "UTF-16BE",
    \n+
    816 "CSISO87JISX0208",
    \n+
    817 "CSISO2022JP2",
    \n+
    818 "JIS_X0212",
    \n+
    819 "MACROMANIA",
    \n+
    820 "CSUNICODE11",
    \n+
    821 "MACTHAI",
    \n+
    822 "UTF-32LE",
    \n+
    823 "CSHPROMAN8",
    \n+
    824 "ISO_8859-1:1987",
    \n+
    825 "BIG5HKSCS",
    \n+
    826 "ISO_8859-6:1987",
    \n+
    827 "JIS_X0212-1990",
    \n+
    828 "CSISO2022JP",
    \n+
    829 "BIG5-HKSCS",
    \n+
    830 "CSSHIFTJIS",
    \n+
    831 "ISO_8859-3:1988",
    \n+
    832 "JIS_X0208-1990",
    \n+
    833 "CSISOLATINHEBREW",
    \n+
    834 "CSISOLATINCYRILLIC",
    \n+
    835 "ISO-CELTIC",
    \n+
    836 "HZ-GB-2312",
    \n+
    837 "ANSI_X3.4-1968",
    \n+
    838 "HEBREW",
    \n+
    839 "ISO_8859-2:1987",
    \n+
    840 "CSISO58GB231280",
    \n+
    841 "CSGB2312",
    \n+
    842 "ANSI_X3.4-1986",
    \n+
    843 "CSUNICODE11UTF7",
    \n+
    844 "JIS_X0208-1983",
    \n+
    845 "ISO_8859-7:1987",
    \n+
    846 "EUCTW",
    \n+
    847 "CSEUCKR",
    \n+
    848 "EUC-TW",
    \n+
    849 "MACCROATIAN",
    \n+
    850 "eucTW",
    \n+
    851 "TIS620.2533-1",
    \n+
    852 "MACGREEK",
    \n+
    853 "UTF-32BE",
    \n+
    854 "MACINTOSH",
    \n+
    855 "UNICODELITTLE",
    \n+
    856 "MS-TURK",
    \n+
    857 "MACUKRAINE",
    \n+
    858 "IBM-CP1133",
    \n+
    859 "MACCENTRALEUROPE",
    \n+
    860 "NEXTSTEP",
    \n+
    861 "TIS620.2533-0",
    \n+
    862 "JIS_X0212.1990-0",
    \n+
    863 "MACARABIC",
    \n+
    864 "UNICODEBIG",
    \n+
    865 "CSPC862LATINHEBREW",
    \n+
    866 "MACCYRILLIC",
    \n+
    867 "WINBALTRIM",
    \n+
    868 "TCVN5712-1:1993",
    \n+
    869 "CSMACINTOSH",
    \n+
    870 "CSHALFWIDTHKATAKANA",
    \n+
    871 "MACHEBREW",
    \n+
    872 "MACTURKISH",
    \n+
    873 "CSPC850MULTILINGUAL",
    \n+
    874 "CSEUCTW",
    \n+
    875 "CSEUCPKDFMTJAPANESE"
    \n+
    876 };
    \n+
    877#define stringpool ((const char *) &stringpool_contents)
    \n+
    878const struct charset_alias *
    \n+
    879charset_lookup (register const char *str, register size_t len)
    \n+
    880{
    \n+
    881 static const struct charset_alias wordlist[] =
    \n+
    882 {
    \n+
    883 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    884 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    885 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    886#line 228 "charset_lookup.gperf"
    \n+
    887 {(int)offsetof(struct stringpool_t, stringpool_str15), 0},
    \n+
    888#line 235 "charset_lookup.gperf"
    \n+
    889 {(int)offsetof(struct stringpool_t, stringpool_str16), 47},
    \n+
    890#line 232 "charset_lookup.gperf"
    \n+
    891 {(int)offsetof(struct stringpool_t, stringpool_str17), 57},
    \n+
    892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    893 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    894#line 233 "charset_lookup.gperf"
    \n+
    895 {(int)offsetof(struct stringpool_t, stringpool_str27), 45},
    \n+
    896#line 272 "charset_lookup.gperf"
    \n+
    897 {(int)offsetof(struct stringpool_t, stringpool_str28), 84},
    \n+
    898 {-1,-1},
    \n+
    899#line 375 "charset_lookup.gperf"
    \n+
    900 {(int)offsetof(struct stringpool_t, stringpool_str30), 65},
    \n+
    901#line 359 "charset_lookup.gperf"
    \n+
    902 {(int)offsetof(struct stringpool_t, stringpool_str31), 84},
    \n+
    903 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    904#line 268 "charset_lookup.gperf"
    \n+
    905 {(int)offsetof(struct stringpool_t, stringpool_str35), 83},
    \n+
    906#line 337 "charset_lookup.gperf"
    \n+
    907 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},
    \n+
    908 {-1,-1},
    \n+
    909#line 345 "charset_lookup.gperf"
    \n+
    910 {(int)offsetof(struct stringpool_t, stringpool_str38), 56},
    \n+
    911#line 372 "charset_lookup.gperf"
    \n+
    912 {(int)offsetof(struct stringpool_t, stringpool_str39), 48},
    \n+
    913#line 342 "charset_lookup.gperf"
    \n+
    914 {(int)offsetof(struct stringpool_t, stringpool_str40), 53},
    \n+
    915#line 360 "charset_lookup.gperf"
    \n+
    916 {(int)offsetof(struct stringpool_t, stringpool_str41), 61},
    \n+
    917#line 356 "charset_lookup.gperf"
    \n+
    918 {(int)offsetof(struct stringpool_t, stringpool_str42), 57},
    \n+
    919#line 357 "charset_lookup.gperf"
    \n+
    920 {(int)offsetof(struct stringpool_t, stringpool_str43), 83},
    \n+
    921#line 231 "charset_lookup.gperf"
    \n+
    922 {(int)offsetof(struct stringpool_t, stringpool_str44), 52},
    \n+
    923#line 362 "charset_lookup.gperf"
    \n+
    924 {(int)offsetof(struct stringpool_t, stringpool_str45), 1},
    \n+
    925#line 10 "charset_lookup.gperf"
    \n+
    926 {(int)offsetof(struct stringpool_t, stringpool_str46), 26},
    \n+
    927#line 338 "charset_lookup.gperf"
    \n+
    928 {(int)offsetof(struct stringpool_t, stringpool_str47), 48},
    \n+
    929#line 318 "charset_lookup.gperf"
    \n+
    930 {(int)offsetof(struct stringpool_t, stringpool_str48), 5},
    \n+
    931 {-1,-1},
    \n+
    932#line 358 "charset_lookup.gperf"
    \n+
    933 {(int)offsetof(struct stringpool_t, stringpool_str50), 83},
    \n+
    934 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    935#line 229 "charset_lookup.gperf"
    \n+
    936 {(int)offsetof(struct stringpool_t, stringpool_str56), 50},
    \n+
    937#line 7 "charset_lookup.gperf"
    \n+
    938 {(int)offsetof(struct stringpool_t, stringpool_str57), 88},
    \n+
    939 {-1,-1}, {-1,-1},
    \n+
    940#line 343 "charset_lookup.gperf"
    \n+
    941 {(int)offsetof(struct stringpool_t, stringpool_str60), 54},
    \n+
    942 {-1,-1}, {-1,-1},
    \n+
    943#line 346 "charset_lookup.gperf"
    \n+
    944 {(int)offsetof(struct stringpool_t, stringpool_str63), 0},
    \n+
    945 {-1,-1},
    \n+
    946#line 354 "charset_lookup.gperf"
    \n+
    947 {(int)offsetof(struct stringpool_t, stringpool_str65), 56},
    \n+
    948#line 374 "charset_lookup.gperf"
    \n+
    949 {(int)offsetof(struct stringpool_t, stringpool_str66), 0},
    \n+
    950#line 351 "charset_lookup.gperf"
    \n+
    951 {(int)offsetof(struct stringpool_t, stringpool_str67), 53},
    \n+
    952 {-1,-1},
    \n+
    953#line 355 "charset_lookup.gperf"
    \n+
    954 {(int)offsetof(struct stringpool_t, stringpool_str69), 57},
    \n+
    955#line 368 "charset_lookup.gperf"
    \n+
    956 {(int)offsetof(struct stringpool_t, stringpool_str70), 55},
    \n+
    957#line 168 "charset_lookup.gperf"
    \n+
    958 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},
    \n+
    959#line 234 "charset_lookup.gperf"
    \n+
    960 {(int)offsetof(struct stringpool_t, stringpool_str72), 46},
    \n+
    961#line 176 "charset_lookup.gperf"
    \n+
    962 {(int)offsetof(struct stringpool_t, stringpool_str73), 56},
    \n+
    963#line 347 "charset_lookup.gperf"
    \n+
    964 {(int)offsetof(struct stringpool_t, stringpool_str74), 48},
    \n+
    965#line 173 "charset_lookup.gperf"
    \n+
    966 {(int)offsetof(struct stringpool_t, stringpool_str75), 53},
    \n+
    967 {-1,-1},
    \n+
    968#line 177 "charset_lookup.gperf"
    \n+
    969 {(int)offsetof(struct stringpool_t, stringpool_str77), 57},
    \n+
    970 {-1,-1},
    \n+
    971#line 127 "charset_lookup.gperf"
    \n+
    972 {(int)offsetof(struct stringpool_t, stringpool_str79), 0},
    \n+
    973 {-1,-1},
    \n+
    974#line 139 "charset_lookup.gperf"
    \n+
    975 {(int)offsetof(struct stringpool_t, stringpool_str81), 56},
    \n+
    976#line 170 "charset_lookup.gperf"
    \n+
    977 {(int)offsetof(struct stringpool_t, stringpool_str82), 48},
    \n+
    978#line 136 "charset_lookup.gperf"
    \n+
    979 {(int)offsetof(struct stringpool_t, stringpool_str83), 53},
    \n+
    980 {-1,-1},
    \n+
    981#line 140 "charset_lookup.gperf"
    \n+
    982 {(int)offsetof(struct stringpool_t, stringpool_str85), 57},
    \n+
    983 {-1,-1},
    \n+
    984#line 352 "charset_lookup.gperf"
    \n+
    985 {(int)offsetof(struct stringpool_t, stringpool_str87), 54},
    \n+
    986 {-1,-1},
    \n+
    987#line 162 "charset_lookup.gperf"
    \n+
    988 {(int)offsetof(struct stringpool_t, stringpool_str89), 8},
    \n+
    989#line 131 "charset_lookup.gperf"
    \n+
    990 {(int)offsetof(struct stringpool_t, stringpool_str90), 48},
    \n+
    991#line 206 "charset_lookup.gperf"
    \n+
    992 {(int)offsetof(struct stringpool_t, stringpool_str91), 63},
    \n+
    993#line 230 "charset_lookup.gperf"
    \n+
    994 {(int)offsetof(struct stringpool_t, stringpool_str92), 51},
    \n+
    995#line 371 "charset_lookup.gperf"
    \n+
    996 {(int)offsetof(struct stringpool_t, stringpool_str93), 47},
    \n+
    997#line 341 "charset_lookup.gperf"
    \n+
    998 {(int)offsetof(struct stringpool_t, stringpool_str94), 52},
    \n+
    999#line 174 "charset_lookup.gperf"
    \n+
    1000 {(int)offsetof(struct stringpool_t, stringpool_str95), 54},
    \n+
    1001 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1002#line 154 "charset_lookup.gperf"
    \n+
    1003 {(int)offsetof(struct stringpool_t, stringpool_str100), 60},
    \n+
    1004#line 158 "charset_lookup.gperf"
    \n+
    1005 {(int)offsetof(struct stringpool_t, stringpool_str101), 47},
    \n+
    1006#line 163 "charset_lookup.gperf"
    \n+
    1007 {(int)offsetof(struct stringpool_t, stringpool_str102), 88},
    \n+
    1008#line 137 "charset_lookup.gperf"
    \n+
    1009 {(int)offsetof(struct stringpool_t, stringpool_str103), 54},
    \n+
    1010#line 9 "charset_lookup.gperf"
    \n+
    1011 {(int)offsetof(struct stringpool_t, stringpool_str104), 25},
    \n+
    1012#line 112 "charset_lookup.gperf"
    \n+
    1013 {(int)offsetof(struct stringpool_t, stringpool_str105), 38},
    \n+
    1014 {-1,-1},
    \n+
    1015#line 373 "charset_lookup.gperf"
    \n+
    1016 {(int)offsetof(struct stringpool_t, stringpool_str107), 88},
    \n+
    1017#line 155 "charset_lookup.gperf"
    \n+
    1018 {(int)offsetof(struct stringpool_t, stringpool_str108), 11},
    \n+
    1019#line 179 "charset_lookup.gperf"
    \n+
    1020 {(int)offsetof(struct stringpool_t, stringpool_str109), 0},
    \n+
    1021#line 132 "charset_lookup.gperf"
    \n+
    1022 {(int)offsetof(struct stringpool_t, stringpool_str110), 49},
    \n+
    1023#line 202 "charset_lookup.gperf"
    \n+
    1024 {(int)offsetof(struct stringpool_t, stringpool_str111), 56},
    \n+
    1025 {-1,-1},
    \n+
    1026#line 196 "charset_lookup.gperf"
    \n+
    1027 {(int)offsetof(struct stringpool_t, stringpool_str113), 53},
    \n+
    1028 {-1,-1},
    \n+
    1029#line 204 "charset_lookup.gperf"
    \n+
    1030 {(int)offsetof(struct stringpool_t, stringpool_str115), 57},
    \n+
    1031#line 219 "charset_lookup.gperf"
    \n+
    1032 {(int)offsetof(struct stringpool_t, stringpool_str116), 58},
    \n+
    1033 {-1,-1},
    \n+
    1034#line 339 "charset_lookup.gperf"
    \n+
    1035 {(int)offsetof(struct stringpool_t, stringpool_str118), 50},
    \n+
    1036 {-1,-1},
    \n+
    1037#line 185 "charset_lookup.gperf"
    \n+
    1038 {(int)offsetof(struct stringpool_t, stringpool_str120), 48},
    \n+
    1039#line 350 "charset_lookup.gperf"
    \n+
    1040 {(int)offsetof(struct stringpool_t, stringpool_str121), 52},
    \n+
    1041#line 8 "charset_lookup.gperf"
    \n+
    1042 {(int)offsetof(struct stringpool_t, stringpool_str122), 24},
    \n+
    1043#line 151 "charset_lookup.gperf"
    \n+
    1044 {(int)offsetof(struct stringpool_t, stringpool_str123), 57},
    \n+
    1045#line 186 "charset_lookup.gperf"
    \n+
    1046 {(int)offsetof(struct stringpool_t, stringpool_str124), 48},
    \n+
    1047 {-1,-1}, {-1,-1},
    \n+
    1048#line 152 "charset_lookup.gperf"
    \n+
    1049 {(int)offsetof(struct stringpool_t, stringpool_str127), 59},
    \n+
    1050#line 156 "charset_lookup.gperf"
    \n+
    1051 {(int)offsetof(struct stringpool_t, stringpool_str128), 61},
    \n+
    1052#line 172 "charset_lookup.gperf"
    \n+
    1053 {(int)offsetof(struct stringpool_t, stringpool_str129), 52},
    \n+
    1054 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1055#line 198 "charset_lookup.gperf"
    \n+
    1056 {(int)offsetof(struct stringpool_t, stringpool_str133), 54},
    \n+
    1057 {-1,-1},
    \n+
    1058#line 369 "charset_lookup.gperf"
    \n+
    1059 {(int)offsetof(struct stringpool_t, stringpool_str135), 45},
    \n+
    1060#line 25 "charset_lookup.gperf"
    \n+
    1061 {(int)offsetof(struct stringpool_t, stringpool_str136), 9},
    \n+
    1062#line 135 "charset_lookup.gperf"
    \n+
    1063 {(int)offsetof(struct stringpool_t, stringpool_str137), 52},
    \n+
    1064 {-1,-1}, {-1,-1},
    \n+
    1065#line 187 "charset_lookup.gperf"
    \n+
    1066 {(int)offsetof(struct stringpool_t, stringpool_str140), 49},
    \n+
    1067#line 224 "charset_lookup.gperf"
    \n+
    1068 {(int)offsetof(struct stringpool_t, stringpool_str141), 59},
    \n+
    1069#line 143 "charset_lookup.gperf"
    \n+
    1070 {(int)offsetof(struct stringpool_t, stringpool_str142), 50},
    \n+
    1071#line 149 "charset_lookup.gperf"
    \n+
    1072 {(int)offsetof(struct stringpool_t, stringpool_str143), 58},
    \n+
    1073#line 130 "charset_lookup.gperf"
    \n+
    1074 {(int)offsetof(struct stringpool_t, stringpool_str144), 47},
    \n+
    1075#line 348 "charset_lookup.gperf"
    \n+
    1076 {(int)offsetof(struct stringpool_t, stringpool_str145), 50},
    \n+
    1077#line 220 "charset_lookup.gperf"
    \n+
    1078 {(int)offsetof(struct stringpool_t, stringpool_str146), 65},
    \n+
    1079 {-1,-1},
    \n+
    1080#line 144 "charset_lookup.gperf"
    \n+
    1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 51},
    \n+
    1082#line 23 "charset_lookup.gperf"
    \n+
    1083 {(int)offsetof(struct stringpool_t, stringpool_str149), 7},
    \n+
    1084#line 344 "charset_lookup.gperf"
    \n+
    1085 {(int)offsetof(struct stringpool_t, stringpool_str150), 55},
    \n+
    1086#line 184 "charset_lookup.gperf"
    \n+
    1087 {(int)offsetof(struct stringpool_t, stringpool_str151), 47},
    \n+
    1088#line 236 "charset_lookup.gperf"
    \n+
    1089 {(int)offsetof(struct stringpool_t, stringpool_str152), 0},
    \n+
    1090#line 171 "charset_lookup.gperf"
    \n+
    1091 {(int)offsetof(struct stringpool_t, stringpool_str153), 50},
    \n+
    1092#line 243 "charset_lookup.gperf"
    \n+
    1093 {(int)offsetof(struct stringpool_t, stringpool_str154), 47},
    \n+
    1094#line 157 "charset_lookup.gperf"
    \n+
    1095 {(int)offsetof(struct stringpool_t, stringpool_str155), 46},
    \n+
    1096#line 240 "charset_lookup.gperf"
    \n+
    1097 {(int)offsetof(struct stringpool_t, stringpool_str156), 57},
    \n+
    1098#line 146 "charset_lookup.gperf"
    \n+
    1099 {(int)offsetof(struct stringpool_t, stringpool_str157), 55},
    \n+
    1100#line 15 "charset_lookup.gperf"
    \n+
    1101 {(int)offsetof(struct stringpool_t, stringpool_str158), 88},
    \n+
    1102 {-1,-1}, {-1,-1},
    \n+
    1103#line 133 "charset_lookup.gperf"
    \n+
    1104 {(int)offsetof(struct stringpool_t, stringpool_str161), 50},
    \n+
    1105 {-1,-1}, {-1,-1},
    \n+
    1106#line 42 "charset_lookup.gperf"
    \n+
    1107 {(int)offsetof(struct stringpool_t, stringpool_str164), 0},
    \n+
    1108 {-1,-1}, {-1,-1},
    \n+
    1109#line 194 "charset_lookup.gperf"
    \n+
    1110 {(int)offsetof(struct stringpool_t, stringpool_str167), 52},
    \n+
    1111 {-1,-1}, {-1,-1},
    \n+
    1112#line 273 "charset_lookup.gperf"
    \n+
    1113 {(int)offsetof(struct stringpool_t, stringpool_str170), 85},
    \n+
    1114#line 148 "charset_lookup.gperf"
    \n+
    1115 {(int)offsetof(struct stringpool_t, stringpool_str171), 56},
    \n+
    1116 {-1,-1},
    \n+
    1117#line 336 "charset_lookup.gperf"
    \n+
    1118 {(int)offsetof(struct stringpool_t, stringpool_str173), 8},
    \n+
    1119#line 183 "charset_lookup.gperf"
    \n+
    1120 {(int)offsetof(struct stringpool_t, stringpool_str174), 47},
    \n+
    1121 {-1,-1},
    \n+
    1122#line 241 "charset_lookup.gperf"
    \n+
    1123 {(int)offsetof(struct stringpool_t, stringpool_str176), 45},
    \n+
    1124#line 353 "charset_lookup.gperf"
    \n+
    1125 {(int)offsetof(struct stringpool_t, stringpool_str177), 55},
    \n+
    1126#line 169 "charset_lookup.gperf"
    \n+
    1127 {(int)offsetof(struct stringpool_t, stringpool_str178), 45},
    \n+
    1128#line 150 "charset_lookup.gperf"
    \n+
    1129 {(int)offsetof(struct stringpool_t, stringpool_str179), 53},
    \n+
    1130 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1131#line 188 "charset_lookup.gperf"
    \n+
    1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 49},
    \n+
    1133 {-1,-1},
    \n+
    1134#line 175 "charset_lookup.gperf"
    \n+
    1135 {(int)offsetof(struct stringpool_t, stringpool_str185), 55},
    \n+
    1136#line 128 "charset_lookup.gperf"
    \n+
    1137 {(int)offsetof(struct stringpool_t, stringpool_str186), 45},
    \n+
    1138 {-1,-1}, {-1,-1},
    \n+
    1139#line 370 "charset_lookup.gperf"
    \n+
    1140 {(int)offsetof(struct stringpool_t, stringpool_str189), 46},
    \n+
    1141#line 340 "charset_lookup.gperf"
    \n+
    1142 {(int)offsetof(struct stringpool_t, stringpool_str190), 51},
    \n+
    1143#line 190 "charset_lookup.gperf"
    \n+
    1144 {(int)offsetof(struct stringpool_t, stringpool_str191), 50},
    \n+
    1145#line 145 "charset_lookup.gperf"
    \n+
    1146 {(int)offsetof(struct stringpool_t, stringpool_str192), 52},
    \n+
    1147#line 138 "charset_lookup.gperf"
    \n+
    1148 {(int)offsetof(struct stringpool_t, stringpool_str193), 55},
    \n+
    1149#line 45 "charset_lookup.gperf"
    \n+
    1150 {(int)offsetof(struct stringpool_t, stringpool_str194), 26},
    \n+
    1151#line 49 "charset_lookup.gperf"
    \n+
    1152 {(int)offsetof(struct stringpool_t, stringpool_str195), 30},
    \n+
    1153#line 361 "charset_lookup.gperf"
    \n+
    1154 {(int)offsetof(struct stringpool_t, stringpool_str196), 61},
    \n+
    1155#line 302 "charset_lookup.gperf"
    \n+
    1156 {(int)offsetof(struct stringpool_t, stringpool_str197), 94},
    \n+
    1157#line 160 "charset_lookup.gperf"
    \n+
    1158 {(int)offsetof(struct stringpool_t, stringpool_str198), 49},
    \n+
    1159#line 292 "charset_lookup.gperf"
    \n+
    1160 {(int)offsetof(struct stringpool_t, stringpool_str199), 88},
    \n+
    1161#line 164 "charset_lookup.gperf"
    \n+
    1162 {(int)offsetof(struct stringpool_t, stringpool_str200), 62},
    \n+
    1163#line 161 "charset_lookup.gperf"
    \n+
    1164 {(int)offsetof(struct stringpool_t, stringpool_str201), 9},
    \n+
    1165#line 117 "charset_lookup.gperf"
    \n+
    1166 {(int)offsetof(struct stringpool_t, stringpool_str202), 0},
    \n+
    1167#line 379 "charset_lookup.gperf"
    \n+
    1168 {(int)offsetof(struct stringpool_t, stringpool_str203), 78},
    \n+
    1169#line 258 "charset_lookup.gperf"
    \n+
    1170 {(int)offsetof(struct stringpool_t, stringpool_str204), 15},
    \n+
    1171#line 380 "charset_lookup.gperf"
    \n+
    1172 {(int)offsetof(struct stringpool_t, stringpool_str205), 79},
    \n+
    1173 {-1,-1},
    \n+
    1174#line 31 "charset_lookup.gperf"
    \n+
    1175 {(int)offsetof(struct stringpool_t, stringpool_str207), 14},
    \n+
    1176#line 153 "charset_lookup.gperf"
    \n+
    1177 {(int)offsetof(struct stringpool_t, stringpool_str208), 45},
    \n+
    1178#line 38 "charset_lookup.gperf"
    \n+
    1179 {(int)offsetof(struct stringpool_t, stringpool_str209), 21},
    \n+
    1180#line 239 "charset_lookup.gperf"
    \n+
    1181 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},
    \n+
    1182#line 35 "charset_lookup.gperf"
    \n+
    1183 {(int)offsetof(struct stringpool_t, stringpool_str211), 18},
    \n+
    1184#line 181 "charset_lookup.gperf"
    \n+
    1185 {(int)offsetof(struct stringpool_t, stringpool_str212), 45},
    \n+
    1186#line 331 "charset_lookup.gperf"
    \n+
    1187 {(int)offsetof(struct stringpool_t, stringpool_str213), 26},
    \n+
    1188#line 366 "charset_lookup.gperf"
    \n+
    1189 {(int)offsetof(struct stringpool_t, stringpool_str214), 30},
    \n+
    1190 {-1,-1},
    \n+
    1191#line 180 "charset_lookup.gperf"
    \n+
    1192 {(int)offsetof(struct stringpool_t, stringpool_str216), 45},
    \n+
    1193#line 349 "charset_lookup.gperf"
    \n+
    1194 {(int)offsetof(struct stringpool_t, stringpool_str217), 51},
    \n+
    1195#line 269 "charset_lookup.gperf"
    \n+
    1196 {(int)offsetof(struct stringpool_t, stringpool_str218), 83},
    \n+
    1197#line 24 "charset_lookup.gperf"
    \n+
    1198 {(int)offsetof(struct stringpool_t, stringpool_str219), 8},
    \n+
    1199#line 207 "charset_lookup.gperf"
    \n+
    1200 {(int)offsetof(struct stringpool_t, stringpool_str220), 62},
    \n+
    1201 {-1,-1}, {-1,-1},
    \n+
    1202#line 200 "charset_lookup.gperf"
    \n+
    1203 {(int)offsetof(struct stringpool_t, stringpool_str223), 55},
    \n+
    1204 {-1,-1},
    \n+
    1205#line 378 "charset_lookup.gperf"
    \n+
    1206 {(int)offsetof(struct stringpool_t, stringpool_str225), 74},
    \n+
    1207#line 320 "charset_lookup.gperf"
    \n+
    1208 {(int)offsetof(struct stringpool_t, stringpool_str226), 14},
    \n+
    1209#line 363 "charset_lookup.gperf"
    \n+
    1210 {(int)offsetof(struct stringpool_t, stringpool_str227), 0},
    \n+
    1211#line 327 "charset_lookup.gperf"
    \n+
    1212 {(int)offsetof(struct stringpool_t, stringpool_str228), 21},
    \n+
    1213#line 90 "charset_lookup.gperf"
    \n+
    1214 {(int)offsetof(struct stringpool_t, stringpool_str229), 55},
    \n+
    1215#line 324 "charset_lookup.gperf"
    \n+
    1216 {(int)offsetof(struct stringpool_t, stringpool_str230), 18},
    \n+
    1217#line 36 "charset_lookup.gperf"
    \n+
    1218 {(int)offsetof(struct stringpool_t, stringpool_str231), 19},
    \n+
    1219#line 120 "charset_lookup.gperf"
    \n+
    1220 {(int)offsetof(struct stringpool_t, stringpool_str232), 26},
    \n+
    1221#line 134 "charset_lookup.gperf"
    \n+
    1222 {(int)offsetof(struct stringpool_t, stringpool_str233), 51},
    \n+
    1223#line 237 "charset_lookup.gperf"
    \n+
    1224 {(int)offsetof(struct stringpool_t, stringpool_str234), 50},
    \n+
    1225#line 19 "charset_lookup.gperf"
    \n+
    1226 {(int)offsetof(struct stringpool_t, stringpool_str235), 5},
    \n+
    1227#line 266 "charset_lookup.gperf"
    \n+
    1228 {(int)offsetof(struct stringpool_t, stringpool_str236), 81},
    \n+
    1229#line 261 "charset_lookup.gperf"
    \n+
    1230 {(int)offsetof(struct stringpool_t, stringpool_str237), 13},
    \n+
    1231 {-1,-1},
    \n+
    1232#line 165 "charset_lookup.gperf"
    \n+
    1233 {(int)offsetof(struct stringpool_t, stringpool_str239), 9},
    \n+
    1234#line 129 "charset_lookup.gperf"
    \n+
    1235 {(int)offsetof(struct stringpool_t, stringpool_str240), 46},
    \n+
    1236 {-1,-1},
    \n+
    1237#line 142 "charset_lookup.gperf"
    \n+
    1238 {(int)offsetof(struct stringpool_t, stringpool_str242), 0},
    \n+
    1239#line 17 "charset_lookup.gperf"
    \n+
    1240 {(int)offsetof(struct stringpool_t, stringpool_str243), 5},
    \n+
    1241 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1242#line 147 "charset_lookup.gperf"
    \n+
    1243 {(int)offsetof(struct stringpool_t, stringpool_str247), 54},
    \n+
    1244#line 109 "charset_lookup.gperf"
    \n+
    1245 {(int)offsetof(struct stringpool_t, stringpool_str248), 55},
    \n+
    1246 {-1,-1},
    \n+
    1247#line 325 "charset_lookup.gperf"
    \n+
    1248 {(int)offsetof(struct stringpool_t, stringpool_str250), 19},
    \n+
    1249 {-1,-1},
    \n+
    1250#line 44 "charset_lookup.gperf"
    \n+
    1251 {(int)offsetof(struct stringpool_t, stringpool_str252), 25},
    \n+
    1252#line 39 "charset_lookup.gperf"
    \n+
    1253 {(int)offsetof(struct stringpool_t, stringpool_str253), 22},
    \n+
    1254 {-1,-1},
    \n+
    1255#line 103 "charset_lookup.gperf"
    \n+
    1256 {(int)offsetof(struct stringpool_t, stringpool_str255), 29},
    \n+
    1257 {-1,-1}, {-1,-1},
    \n+
    1258#line 91 "charset_lookup.gperf"
    \n+
    1259 {(int)offsetof(struct stringpool_t, stringpool_str258), 55},
    \n+
    1260 {-1,-1},
    \n+
    1261#line 43 "charset_lookup.gperf"
    \n+
    1262 {(int)offsetof(struct stringpool_t, stringpool_str260), 24},
    \n+
    1263#line 48 "charset_lookup.gperf"
    \n+
    1264 {(int)offsetof(struct stringpool_t, stringpool_str261), 29},
    \n+
    1265#line 50 "charset_lookup.gperf"
    \n+
    1266 {(int)offsetof(struct stringpool_t, stringpool_str262), 31},
    \n+
    1267#line 192 "charset_lookup.gperf"
    \n+
    1268 {(int)offsetof(struct stringpool_t, stringpool_str263), 51},
    \n+
    1269 {-1,-1},
    \n+
    1270#line 34 "charset_lookup.gperf"
    \n+
    1271 {(int)offsetof(struct stringpool_t, stringpool_str265), 17},
    \n+
    1272#line 242 "charset_lookup.gperf"
    \n+
    1273 {(int)offsetof(struct stringpool_t, stringpool_str266), 46},
    \n+
    1274 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1275#line 182 "charset_lookup.gperf"
    \n+
    1276 {(int)offsetof(struct stringpool_t, stringpool_str270), 46},
    \n+
    1277#line 330 "charset_lookup.gperf"
    \n+
    1278 {(int)offsetof(struct stringpool_t, stringpool_str271), 25},
    \n+
    1279 {-1,-1},
    \n+
    1280#line 46 "charset_lookup.gperf"
    \n+
    1281 {(int)offsetof(struct stringpool_t, stringpool_str273), 27},
    \n+
    1282#line 79 "charset_lookup.gperf"
    \n+
    1283 {(int)offsetof(struct stringpool_t, stringpool_str274), 65},
    \n+
    1284#line 98 "charset_lookup.gperf"
    \n+
    1285 {(int)offsetof(struct stringpool_t, stringpool_str275), 33},
    \n+
    1286 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1287#line 329 "charset_lookup.gperf"
    \n+
    1288 {(int)offsetof(struct stringpool_t, stringpool_str279), 24},
    \n+
    1289#line 365 "charset_lookup.gperf"
    \n+
    1290 {(int)offsetof(struct stringpool_t, stringpool_str280), 29},
    \n+
    1291#line 367 "charset_lookup.gperf"
    \n+
    1292 {(int)offsetof(struct stringpool_t, stringpool_str281), 31},
    \n+
    1293 {-1,-1},
    \n+
    1294#line 94 "charset_lookup.gperf"
    \n+
    1295 {(int)offsetof(struct stringpool_t, stringpool_str283), 33},
    \n+
    1296#line 323 "charset_lookup.gperf"
    \n+
    1297 {(int)offsetof(struct stringpool_t, stringpool_str284), 17},
    \n+
    1298#line 89 "charset_lookup.gperf"
    \n+
    1299 {(int)offsetof(struct stringpool_t, stringpool_str285), 54},
    \n+
    1300 {-1,-1}, {-1,-1},
    \n+
    1301#line 334 "charset_lookup.gperf"
    \n+
    1302 {(int)offsetof(struct stringpool_t, stringpool_str288), 33},
    \n+
    1303#line 32 "charset_lookup.gperf"
    \n+
    1304 {(int)offsetof(struct stringpool_t, stringpool_str289), 15},
    \n+
    1305#line 119 "charset_lookup.gperf"
    \n+
    1306 {(int)offsetof(struct stringpool_t, stringpool_str290), 25},
    \n+
    1307#line 61 "charset_lookup.gperf"
    \n+
    1308 {(int)offsetof(struct stringpool_t, stringpool_str291), 60},
    \n+
    1309#line 332 "charset_lookup.gperf"
    \n+
    1310 {(int)offsetof(struct stringpool_t, stringpool_str292), 27},
    \n+
    1311#line 166 "charset_lookup.gperf"
    \n+
    1312 {(int)offsetof(struct stringpool_t, stringpool_str293), 58},
    \n+
    1313#line 51 "charset_lookup.gperf"
    \n+
    1314 {(int)offsetof(struct stringpool_t, stringpool_str294), 88},
    \n+
    1315#line 96 "charset_lookup.gperf"
    \n+
    1316 {(int)offsetof(struct stringpool_t, stringpool_str295), 10},
    \n+
    1317 {-1,-1},
    \n+
    1318#line 286 "charset_lookup.gperf"
    \n+
    1319 {(int)offsetof(struct stringpool_t, stringpool_str297), 87},
    \n+
    1320#line 118 "charset_lookup.gperf"
    \n+
    1321 {(int)offsetof(struct stringpool_t, stringpool_str298), 24},
    \n+
    1322 {-1,-1}, {-1,-1},
    \n+
    1323#line 108 "charset_lookup.gperf"
    \n+
    1324 {(int)offsetof(struct stringpool_t, stringpool_str301), 55},
    \n+
    1325#line 167 "charset_lookup.gperf"
    \n+
    1326 {(int)offsetof(struct stringpool_t, stringpool_str302), 88},
    \n+
    1327#line 92 "charset_lookup.gperf"
    \n+
    1328 {(int)offsetof(struct stringpool_t, stringpool_str303), 10},
    \n+
    1329#line 278 "charset_lookup.gperf"
    \n+
    1330 {(int)offsetof(struct stringpool_t, stringpool_str304), 61},
    \n+
    1331#line 376 "charset_lookup.gperf"
    \n+
    1332 {(int)offsetof(struct stringpool_t, stringpool_str305), 69},
    \n+
    1333#line 238 "charset_lookup.gperf"
    \n+
    1334 {(int)offsetof(struct stringpool_t, stringpool_str306), 51},
    \n+
    1335#line 30 "charset_lookup.gperf"
    \n+
    1336 {(int)offsetof(struct stringpool_t, stringpool_str307), 13},
    \n+
    1337#line 321 "charset_lookup.gperf"
    \n+
    1338 {(int)offsetof(struct stringpool_t, stringpool_str308), 15},
    \n+
    1339#line 284 "charset_lookup.gperf"
    \n+
    1340 {(int)offsetof(struct stringpool_t, stringpool_str309), 2},
    \n+
    1341#line 69 "charset_lookup.gperf"
    \n+
    1342 {(int)offsetof(struct stringpool_t, stringpool_str310), 0},
    \n+
    1343 {-1,-1},
    \n+
    1344#line 277 "charset_lookup.gperf"
    \n+
    1345 {(int)offsetof(struct stringpool_t, stringpool_str312), 61},
    \n+
    1346#line 275 "charset_lookup.gperf"
    \n+
    1347 {(int)offsetof(struct stringpool_t, stringpool_str313), 85},
    \n+
    1348#line 73 "charset_lookup.gperf"
    \n+
    1349 {(int)offsetof(struct stringpool_t, stringpool_str314), 57},
    \n+
    1350 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1351#line 104 "charset_lookup.gperf"
    \n+
    1352 {(int)offsetof(struct stringpool_t, stringpool_str318), 9},
    \n+
    1353#line 47 "charset_lookup.gperf"
    \n+
    1354 {(int)offsetof(struct stringpool_t, stringpool_str319), 28},
    \n+
    1355#line 16 "charset_lookup.gperf"
    \n+
    1356 {(int)offsetof(struct stringpool_t, stringpool_str320), 54},
    \n+
    1357#line 37 "charset_lookup.gperf"
    \n+
    1358 {(int)offsetof(struct stringpool_t, stringpool_str321), 20},
    \n+
    1359 {-1,-1}, {-1,-1},
    \n+
    1360#line 222 "charset_lookup.gperf"
    \n+
    1361 {(int)offsetof(struct stringpool_t, stringpool_str324), 67},
    \n+
    1362 {-1,-1},
    \n+
    1363#line 319 "charset_lookup.gperf"
    \n+
    1364 {(int)offsetof(struct stringpool_t, stringpool_str326), 13},
    \n+
    1365 {-1,-1}, {-1,-1},
    \n+
    1366#line 111 "charset_lookup.gperf"
    \n+
    1367 {(int)offsetof(struct stringpool_t, stringpool_str329), 83},
    \n+
    1368 {-1,-1},
    \n+
    1369#line 265 "charset_lookup.gperf"
    \n+
    1370 {(int)offsetof(struct stringpool_t, stringpool_str331), 84},
    \n+
    1371 {-1,-1},
    \n+
    1372#line 87 "charset_lookup.gperf"
    \n+
    1373 {(int)offsetof(struct stringpool_t, stringpool_str333), 94},
    \n+
    1374#line 74 "charset_lookup.gperf"
    \n+
    1375 {(int)offsetof(struct stringpool_t, stringpool_str334), 45},
    \n+
    1376#line 225 "charset_lookup.gperf"
    \n+
    1377 {(int)offsetof(struct stringpool_t, stringpool_str335), 59},
    \n+
    1378#line 270 "charset_lookup.gperf"
    \n+
    1379 {(int)offsetof(struct stringpool_t, stringpool_str336), 84},
    \n+
    1380#line 159 "charset_lookup.gperf"
    \n+
    1381 {(int)offsetof(struct stringpool_t, stringpool_str337), 48},
    \n+
    1382#line 364 "charset_lookup.gperf"
    \n+
    1383 {(int)offsetof(struct stringpool_t, stringpool_str338), 28},
    \n+
    1384#line 218 "charset_lookup.gperf"
    \n+
    1385 {(int)offsetof(struct stringpool_t, stringpool_str339), 22},
    \n+
    1386#line 326 "charset_lookup.gperf"
    \n+
    1387 {(int)offsetof(struct stringpool_t, stringpool_str340), 20},
    \n+
    1388 {-1,-1},
    \n+
    1389#line 14 "charset_lookup.gperf"
    \n+
    1390 {(int)offsetof(struct stringpool_t, stringpool_str342), 4},
    \n+
    1391 {-1,-1}, {-1,-1},
    \n+
    1392#line 178 "charset_lookup.gperf"
    \n+
    1393 {(int)offsetof(struct stringpool_t, stringpool_str345), 88},
    \n+
    1394 {-1,-1},
    \n+
    1395#line 274 "charset_lookup.gperf"
    \n+
    1396 {(int)offsetof(struct stringpool_t, stringpool_str347), 85},
    \n+
    1397 {-1,-1},
    \n+
    1398#line 97 "charset_lookup.gperf"
    \n+
    1399 {(int)offsetof(struct stringpool_t, stringpool_str349), 32},
    \n+
    1400#line 301 "charset_lookup.gperf"
    \n+
    1401 {(int)offsetof(struct stringpool_t, stringpool_str350), 1},
    \n+
    1402#line 315 "charset_lookup.gperf"
    \n+
    1403 {(int)offsetof(struct stringpool_t, stringpool_str351), 64},
    \n+
    1404#line 102 "charset_lookup.gperf"
    \n+
    1405 {(int)offsetof(struct stringpool_t, stringpool_str352), 10},
    \n+
    1406#line 316 "charset_lookup.gperf"
    \n+
    1407 {(int)offsetof(struct stringpool_t, stringpool_str353), 62},
    \n+
    1408#line 126 "charset_lookup.gperf"
    \n+
    1409 {(int)offsetof(struct stringpool_t, stringpool_str354), 44},
    \n+
    1410#line 260 "charset_lookup.gperf"
    \n+
    1411 {(int)offsetof(struct stringpool_t, stringpool_str355), 14},
    \n+
    1412#line 124 "charset_lookup.gperf"
    \n+
    1413 {(int)offsetof(struct stringpool_t, stringpool_str356), 42},
    \n+
    1414#line 93 "charset_lookup.gperf"
    \n+
    1415 {(int)offsetof(struct stringpool_t, stringpool_str357), 32},
    \n+
    1416#line 299 "charset_lookup.gperf"
    \n+
    1417 {(int)offsetof(struct stringpool_t, stringpool_str358), 1},
    \n+
    1418#line 303 "charset_lookup.gperf"
    \n+
    1419 {(int)offsetof(struct stringpool_t, stringpool_str359), 94},
    \n+
    1420#line 40 "charset_lookup.gperf"
    \n+
    1421 {(int)offsetof(struct stringpool_t, stringpool_str360), 88},
    \n+
    1422#line 33 "charset_lookup.gperf"
    \n+
    1423 {(int)offsetof(struct stringpool_t, stringpool_str361), 16},
    \n+
    1424#line 333 "charset_lookup.gperf"
    \n+
    1425 {(int)offsetof(struct stringpool_t, stringpool_str362), 32},
    \n+
    1426 {-1,-1},
    \n+
    1427#line 377 "charset_lookup.gperf"
    \n+
    1428 {(int)offsetof(struct stringpool_t, stringpool_str364), 73},
    \n+
    1429#line 293 "charset_lookup.gperf"
    \n+
    1430 {(int)offsetof(struct stringpool_t, stringpool_str365), 88},
    \n+
    1431#line 271 "charset_lookup.gperf"
    \n+
    1432 {(int)offsetof(struct stringpool_t, stringpool_str366), 84},
    \n+
    1433 {-1,-1},
    \n+
    1434#line 72 "charset_lookup.gperf"
    \n+
    1435 {(int)offsetof(struct stringpool_t, stringpool_str368), 52},
    \n+
    1436#line 279 "charset_lookup.gperf"
    \n+
    1437 {(int)offsetof(struct stringpool_t, stringpool_str369), 61},
    \n+
    1438 {-1,-1},
    \n+
    1439#line 52 "charset_lookup.gperf"
    \n+
    1440 {(int)offsetof(struct stringpool_t, stringpool_str371), 5},
    \n+
    1441 {-1,-1}, {-1,-1},
    \n+
    1442#line 121 "charset_lookup.gperf"
    \n+
    1443 {(int)offsetof(struct stringpool_t, stringpool_str374), 39},
    \n+
    1444 {-1,-1}, {-1,-1},
    \n+
    1445#line 41 "charset_lookup.gperf"
    \n+
    1446 {(int)offsetof(struct stringpool_t, stringpool_str377), 23},
    \n+
    1447 {-1,-1},
    \n+
    1448#line 26 "charset_lookup.gperf"
    \n+
    1449 {(int)offsetof(struct stringpool_t, stringpool_str379), 5},
    \n+
    1450#line 322 "charset_lookup.gperf"
    \n+
    1451 {(int)offsetof(struct stringpool_t, stringpool_str380), 16},
    \n+
    1452#line 13 "charset_lookup.gperf"
    \n+
    1453 {(int)offsetof(struct stringpool_t, stringpool_str381), 54},
    \n+
    1454 {-1,-1},
    \n+
    1455#line 317 "charset_lookup.gperf"
    \n+
    1456 {(int)offsetof(struct stringpool_t, stringpool_str383), 60},
    \n+
    1457#line 60 "charset_lookup.gperf"
    \n+
    1458 {(int)offsetof(struct stringpool_t, stringpool_str384), 58},
    \n+
    1459 {-1,-1}, {-1,-1},
    \n+
    1460#line 101 "charset_lookup.gperf"
    \n+
    1461 {(int)offsetof(struct stringpool_t, stringpool_str387), 35},
    \n+
    1462 {-1,-1},
    \n+
    1463#line 285 "charset_lookup.gperf"
    \n+
    1464 {(int)offsetof(struct stringpool_t, stringpool_str389), 86},
    \n+
    1465 {-1,-1}, {-1,-1},
    \n+
    1466#line 70 "charset_lookup.gperf"
    \n+
    1467 {(int)offsetof(struct stringpool_t, stringpool_str392), 50},
    \n+
    1468#line 107 "charset_lookup.gperf"
    \n+
    1469 {(int)offsetof(struct stringpool_t, stringpool_str393), 37},
    \n+
    1470#line 227 "charset_lookup.gperf"
    \n+
    1471 {(int)offsetof(struct stringpool_t, stringpool_str394), 59},
    \n+
    1472#line 29 "charset_lookup.gperf"
    \n+
    1473 {(int)offsetof(struct stringpool_t, stringpool_str395), 12},
    \n+
    1474#line 328 "charset_lookup.gperf"
    \n+
    1475 {(int)offsetof(struct stringpool_t, stringpool_str396), 23},
    \n+
    1476#line 125 "charset_lookup.gperf"
    \n+
    1477 {(int)offsetof(struct stringpool_t, stringpool_str397), 43},
    \n+
    1478#line 115 "charset_lookup.gperf"
    \n+
    1479 {(int)offsetof(struct stringpool_t, stringpool_str398), 88},
    \n+
    1480 {-1,-1}, {-1,-1},
    \n+
    1481#line 283 "charset_lookup.gperf"
    \n+
    1482 {(int)offsetof(struct stringpool_t, stringpool_str401), 3},
    \n+
    1483#line 288 "charset_lookup.gperf"
    \n+
    1484 {(int)offsetof(struct stringpool_t, stringpool_str402), 3},
    \n+
    1485 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1486#line 209 "charset_lookup.gperf"
    \n+
    1487 {(int)offsetof(struct stringpool_t, stringpool_str409), 58},
    \n+
    1488 {-1,-1},
    \n+
    1489#line 259 "charset_lookup.gperf"
    \n+
    1490 {(int)offsetof(struct stringpool_t, stringpool_str411), 19},
    \n+
    1491 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1492#line 116 "charset_lookup.gperf"
    \n+
    1493 {(int)offsetof(struct stringpool_t, stringpool_str415), 23},
    \n+
    1494 {-1,-1}, {-1,-1},
    \n+
    1495#line 244 "charset_lookup.gperf"
    \n+
    1496 {(int)offsetof(struct stringpool_t, stringpool_str418), 69},
    \n+
    1497 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1498#line 295 "charset_lookup.gperf"
    \n+
    1499 {(int)offsetof(struct stringpool_t, stringpool_str422), 90},
    \n+
    1500 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1501#line 123 "charset_lookup.gperf"
    \n+
    1502 {(int)offsetof(struct stringpool_t, stringpool_str428), 41},
    \n+
    1503#line 28 "charset_lookup.gperf"
    \n+
    1504 {(int)offsetof(struct stringpool_t, stringpool_str429), 11},
    \n+
    1505 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1506#line 306 "charset_lookup.gperf"
    \n+
    1507 {(int)offsetof(struct stringpool_t, stringpool_str434), 14},
    \n+
    1508#line 313 "charset_lookup.gperf"
    \n+
    1509 {(int)offsetof(struct stringpool_t, stringpool_str435), 21},
    \n+
    1510#line 310 "charset_lookup.gperf"
    \n+
    1511 {(int)offsetof(struct stringpool_t, stringpool_str436), 18},
    \n+
    1512 {-1,-1},
    \n+
    1513#line 75 "charset_lookup.gperf"
    \n+
    1514 {(int)offsetof(struct stringpool_t, stringpool_str438), 54},
    \n+
    1515 {-1,-1}, {-1,-1},
    \n+
    1516#line 263 "charset_lookup.gperf"
    \n+
    1517 {(int)offsetof(struct stringpool_t, stringpool_str441), 18},
    \n+
    1518 {-1,-1}, {-1,-1},
    \n+
    1519#line 88 "charset_lookup.gperf"
    \n+
    1520 {(int)offsetof(struct stringpool_t, stringpool_str444), 53},
    \n+
    1521#line 210 "charset_lookup.gperf"
    \n+
    1522 {(int)offsetof(struct stringpool_t, stringpool_str445), 62},
    \n+
    1523#line 311 "charset_lookup.gperf"
    \n+
    1524 {(int)offsetof(struct stringpool_t, stringpool_str446), 19},
    \n+
    1525 {-1,-1},
    \n+
    1526#line 226 "charset_lookup.gperf"
    \n+
    1527 {(int)offsetof(struct stringpool_t, stringpool_str448), 59},
    \n+
    1528 {-1,-1},
    \n+
    1529#line 287 "charset_lookup.gperf"
    \n+
    1530 {(int)offsetof(struct stringpool_t, stringpool_str450), 30},
    \n+
    1531 {-1,-1},
    \n+
    1532#line 22 "charset_lookup.gperf"
    \n+
    1533 {(int)offsetof(struct stringpool_t, stringpool_str452), 5},
    \n+
    1534 {-1,-1},
    \n+
    1535#line 27 "charset_lookup.gperf"
    \n+
    1536 {(int)offsetof(struct stringpool_t, stringpool_str454), 10},
    \n+
    1537#line 106 "charset_lookup.gperf"
    \n+
    1538 {(int)offsetof(struct stringpool_t, stringpool_str455), 36},
    \n+
    1539 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1540#line 18 "charset_lookup.gperf"
    \n+
    1541 {(int)offsetof(struct stringpool_t, stringpool_str460), 5},
    \n+
    1542#line 59 "charset_lookup.gperf"
    \n+
    1543 {(int)offsetof(struct stringpool_t, stringpool_str461), 26},
    \n+
    1544#line 300 "charset_lookup.gperf"
    \n+
    1545 {(int)offsetof(struct stringpool_t, stringpool_str462), 93},
    \n+
    1546#line 309 "charset_lookup.gperf"
    \n+
    1547 {(int)offsetof(struct stringpool_t, stringpool_str463), 17},
    \n+
    1548#line 71 "charset_lookup.gperf"
    \n+
    1549 {(int)offsetof(struct stringpool_t, stringpool_str464), 51},
    \n+
    1550#line 289 "charset_lookup.gperf"
    \n+
    1551 {(int)offsetof(struct stringpool_t, stringpool_str465), 93},
    \n+
    1552 {-1,-1},
    \n+
    1553#line 66 "charset_lookup.gperf"
    \n+
    1554 {(int)offsetof(struct stringpool_t, stringpool_str467), 9},
    \n+
    1555 {-1,-1}, {-1,-1},
    \n+
    1556#line 298 "charset_lookup.gperf"
    \n+
    1557 {(int)offsetof(struct stringpool_t, stringpool_str470), 93},
    \n+
    1558 {-1,-1},
    \n+
    1559#line 105 "charset_lookup.gperf"
    \n+
    1560 {(int)offsetof(struct stringpool_t, stringpool_str472), 8},
    \n+
    1561 {-1,-1},
    \n+
    1562#line 65 "charset_lookup.gperf"
    \n+
    1563 {(int)offsetof(struct stringpool_t, stringpool_str474), 44},
    \n+
    1564#line 307 "charset_lookup.gperf"
    \n+
    1565 {(int)offsetof(struct stringpool_t, stringpool_str475), 15},
    \n+
    1566#line 223 "charset_lookup.gperf"
    \n+
    1567 {(int)offsetof(struct stringpool_t, stringpool_str476), 68},
    \n+
    1568 {-1,-1}, {-1,-1},
    \n+
    1569#line 203 "charset_lookup.gperf"
    \n+
    1570 {(int)offsetof(struct stringpool_t, stringpool_str479), 56},
    \n+
    1571#line 197 "charset_lookup.gperf"
    \n+
    1572 {(int)offsetof(struct stringpool_t, stringpool_str480), 53},
    \n+
    1573 {-1,-1}, {-1,-1},
    \n+
    1574#line 205 "charset_lookup.gperf"
    \n+
    1575 {(int)offsetof(struct stringpool_t, stringpool_str483), 57},
    \n+
    1576#line 305 "charset_lookup.gperf"
    \n+
    1577 {(int)offsetof(struct stringpool_t, stringpool_str484), 13},
    \n+
    1578#line 251 "charset_lookup.gperf"
    \n+
    1579 {(int)offsetof(struct stringpool_t, stringpool_str485), 76},
    \n+
    1580#line 77 "charset_lookup.gperf"
    \n+
    1581 {(int)offsetof(struct stringpool_t, stringpool_str486), 55},
    \n+
    1582#line 122 "charset_lookup.gperf"
    \n+
    1583 {(int)offsetof(struct stringpool_t, stringpool_str487), 40},
    \n+
    1584#line 211 "charset_lookup.gperf"
    \n+
    1585 {(int)offsetof(struct stringpool_t, stringpool_str488), 64},
    \n+
    1586#line 208 "charset_lookup.gperf"
    \n+
    1587 {(int)offsetof(struct stringpool_t, stringpool_str489), 64},
    \n+
    1588#line 212 "charset_lookup.gperf"
    \n+
    1589 {(int)offsetof(struct stringpool_t, stringpool_str490), 62},
    \n+
    1590#line 312 "charset_lookup.gperf"
    \n+
    1591 {(int)offsetof(struct stringpool_t, stringpool_str491), 20},
    \n+
    1592 {-1,-1}, {-1,-1},
    \n+
    1593#line 62 "charset_lookup.gperf"
    \n+
    1594 {(int)offsetof(struct stringpool_t, stringpool_str494), 39},
    \n+
    1595 {-1,-1},
    \n+
    1596#line 262 "charset_lookup.gperf"
    \n+
    1597 {(int)offsetof(struct stringpool_t, stringpool_str496), 16},
    \n+
    1598 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1599#line 100 "charset_lookup.gperf"
    \n+
    1600 {(int)offsetof(struct stringpool_t, stringpool_str500), 32},
    \n+
    1601 {-1,-1}, {-1,-1},
    \n+
    1602#line 221 "charset_lookup.gperf"
    \n+
    1603 {(int)offsetof(struct stringpool_t, stringpool_str503), 66},
    \n+
    1604#line 280 "charset_lookup.gperf"
    \n+
    1605 {(int)offsetof(struct stringpool_t, stringpool_str504), 61},
    \n+
    1606#line 253 "charset_lookup.gperf"
    \n+
    1607 {(int)offsetof(struct stringpool_t, stringpool_str505), 69},
    \n+
    1608#line 314 "charset_lookup.gperf"
    \n+
    1609 {(int)offsetof(struct stringpool_t, stringpool_str506), 27},
    \n+
    1610#line 195 "charset_lookup.gperf"
    \n+
    1611 {(int)offsetof(struct stringpool_t, stringpool_str507), 52},
    \n+
    1612 {-1,-1},
    \n+
    1613#line 80 "charset_lookup.gperf"
    \n+
    1614 {(int)offsetof(struct stringpool_t, stringpool_str509), 59},
    \n+
    1615 {-1,-1},
    \n+
    1616#line 308 "charset_lookup.gperf"
    \n+
    1617 {(int)offsetof(struct stringpool_t, stringpool_str511), 16},
    \n+
    1618 {-1,-1}, {-1,-1},
    \n+
    1619#line 294 "charset_lookup.gperf"
    \n+
    1620 {(int)offsetof(struct stringpool_t, stringpool_str514), 89},
    \n+
    1621#line 68 "charset_lookup.gperf"
    \n+
    1622 {(int)offsetof(struct stringpool_t, stringpool_str515), 62},
    \n+
    1623#line 64 "charset_lookup.gperf"
    \n+
    1624 {(int)offsetof(struct stringpool_t, stringpool_str516), 43},
    \n+
    1625 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1626#line 215 "charset_lookup.gperf"
    \n+
    1627 {(int)offsetof(struct stringpool_t, stringpool_str520), 60},
    \n+
    1628#line 254 "charset_lookup.gperf"
    \n+
    1629 {(int)offsetof(struct stringpool_t, stringpool_str521), 77},
    \n+
    1630#line 85 "charset_lookup.gperf"
    \n+
    1631 {(int)offsetof(struct stringpool_t, stringpool_str522), 3},
    \n+
    1632#line 255 "charset_lookup.gperf"
    \n+
    1633 {(int)offsetof(struct stringpool_t, stringpool_str523), 78},
    \n+
    1634 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1635#line 297 "charset_lookup.gperf"
    \n+
    1636 {(int)offsetof(struct stringpool_t, stringpool_str528), 92},
    \n+
    1637 {-1,-1}, {-1,-1},
    \n+
    1638#line 58 "charset_lookup.gperf"
    \n+
    1639 {(int)offsetof(struct stringpool_t, stringpool_str531), 83},
    \n+
    1640 {-1,-1}, {-1,-1},
    \n+
    1641#line 189 "charset_lookup.gperf"
    \n+
    1642 {(int)offsetof(struct stringpool_t, stringpool_str534), 0},
    \n+
    1643 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1644#line 21 "charset_lookup.gperf"
    \n+
    1645 {(int)offsetof(struct stringpool_t, stringpool_str541), 6},
    \n+
    1646 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1647#line 199 "charset_lookup.gperf"
    \n+
    1648 {(int)offsetof(struct stringpool_t, stringpool_str546), 54},
    \n+
    1649#line 216 "charset_lookup.gperf"
    \n+
    1650 {(int)offsetof(struct stringpool_t, stringpool_str547), 60},
    \n+
    1651#line 63 "charset_lookup.gperf"
    \n+
    1652 {(int)offsetof(struct stringpool_t, stringpool_str548), 41},
    \n+
    1653#line 20 "charset_lookup.gperf"
    \n+
    1654 {(int)offsetof(struct stringpool_t, stringpool_str549), 6},
    \n+
    1655 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1656#line 84 "charset_lookup.gperf"
    \n+
    1657 {(int)offsetof(struct stringpool_t, stringpool_str553), 84},
    \n+
    1658 {-1,-1},
    \n+
    1659#line 193 "charset_lookup.gperf"
    \n+
    1660 {(int)offsetof(struct stringpool_t, stringpool_str555), 51},
    \n+
    1661 {-1,-1},
    \n+
    1662#line 214 "charset_lookup.gperf"
    \n+
    1663 {(int)offsetof(struct stringpool_t, stringpool_str557), 62},
    \n+
    1664 {-1,-1}, {-1,-1},
    \n+
    1665#line 78 "charset_lookup.gperf"
    \n+
    1666 {(int)offsetof(struct stringpool_t, stringpool_str560), 56},
    \n+
    1667#line 76 "charset_lookup.gperf"
    \n+
    1668 {(int)offsetof(struct stringpool_t, stringpool_str561), 53},
    \n+
    1669 {-1,-1},
    \n+
    1670#line 141 "charset_lookup.gperf"
    \n+
    1671 {(int)offsetof(struct stringpool_t, stringpool_str563), 47},
    \n+
    1672#line 113 "charset_lookup.gperf"
    \n+
    1673 {(int)offsetof(struct stringpool_t, stringpool_str564), 38},
    \n+
    1674 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1675#line 11 "charset_lookup.gperf"
    \n+
    1676 {(int)offsetof(struct stringpool_t, stringpool_str571), 88},
    \n+
    1677#line 110 "charset_lookup.gperf"
    \n+
    1678 {(int)offsetof(struct stringpool_t, stringpool_str572), 56},
    \n+
    1679 {-1,-1}, {-1,-1},
    \n+
    1680#line 191 "charset_lookup.gperf"
    \n+
    1681 {(int)offsetof(struct stringpool_t, stringpool_str575), 50},
    \n+
    1682 {-1,-1},
    \n+
    1683#line 67 "charset_lookup.gperf"
    \n+
    1684 {(int)offsetof(struct stringpool_t, stringpool_str577), 8},
    \n+
    1685 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1686#line 56 "charset_lookup.gperf"
    \n+
    1687 {(int)offsetof(struct stringpool_t, stringpool_str581), 10},
    \n+
    1688#line 12 "charset_lookup.gperf"
    \n+
    1689 {(int)offsetof(struct stringpool_t, stringpool_str582), 88},
    \n+
    1690#line 86 "charset_lookup.gperf"
    \n+
    1691 {(int)offsetof(struct stringpool_t, stringpool_str583), 93},
    \n+
    1692#line 213 "charset_lookup.gperf"
    \n+
    1693 {(int)offsetof(struct stringpool_t, stringpool_str584), 62},
    \n+
    1694 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1695#line 201 "charset_lookup.gperf"
    \n+
    1696 {(int)offsetof(struct stringpool_t, stringpool_str591), 55},
    \n+
    1697 {-1,-1}, {-1,-1},
    \n+
    1698#line 99 "charset_lookup.gperf"
    \n+
    1699 {(int)offsetof(struct stringpool_t, stringpool_str594), 34},
    \n+
    1700 {-1,-1},
    \n+
    1701#line 53 "charset_lookup.gperf"
    \n+
    1702 {(int)offsetof(struct stringpool_t, stringpool_str596), 33},
    \n+
    1703 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1704#line 95 "charset_lookup.gperf"
    \n+
    1705 {(int)offsetof(struct stringpool_t, stringpool_str602), 34},
    \n+
    1706 {-1,-1}, {-1,-1},
    \n+
    1707#line 247 "charset_lookup.gperf"
    \n+
    1708 {(int)offsetof(struct stringpool_t, stringpool_str605), 72},
    \n+
    1709 {-1,-1},
    \n+
    1710#line 335 "charset_lookup.gperf"
    \n+
    1711 {(int)offsetof(struct stringpool_t, stringpool_str607), 34},
    \n+
    1712 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1713#line 282 "charset_lookup.gperf"
    \n+
    1714 {(int)offsetof(struct stringpool_t, stringpool_str614), 61},
    \n+
    1715 {-1,-1}, {-1,-1},
    \n+
    1716#line 249 "charset_lookup.gperf"
    \n+
    1717 {(int)offsetof(struct stringpool_t, stringpool_str617), 74},
    \n+
    1718 {-1,-1}, {-1,-1},
    \n+
    1719#line 296 "charset_lookup.gperf"
    \n+
    1720 {(int)offsetof(struct stringpool_t, stringpool_str620), 91},
    \n+
    1721 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1722#line 252 "charset_lookup.gperf"
    \n+
    1723 {(int)offsetof(struct stringpool_t, stringpool_str625), 69},
    \n+
    1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1725 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1726#line 291 "charset_lookup.gperf"
    \n+
    1727 {(int)offsetof(struct stringpool_t, stringpool_str637), 2},
    \n+
    1728 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1729#line 264 "charset_lookup.gperf"
    \n+
    1730 {(int)offsetof(struct stringpool_t, stringpool_str641), 17},
    \n+
    1731 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1732#line 257 "charset_lookup.gperf"
    \n+
    1733 {(int)offsetof(struct stringpool_t, stringpool_str645), 80},
    \n+
    1734 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1735#line 114 "charset_lookup.gperf"
    \n+
    1736 {(int)offsetof(struct stringpool_t, stringpool_str651), 12},
    \n+
    1737 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1738#line 246 "charset_lookup.gperf"
    \n+
    1739 {(int)offsetof(struct stringpool_t, stringpool_str658), 71},
    \n+
    1740 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1741#line 267 "charset_lookup.gperf"
    \n+
    1742 {(int)offsetof(struct stringpool_t, stringpool_str663), 82},
    \n+
    1743#line 281 "charset_lookup.gperf"
    \n+
    1744 {(int)offsetof(struct stringpool_t, stringpool_str664), 61},
    \n+
    1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1746 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1747#line 217 "charset_lookup.gperf"
    \n+
    1748 {(int)offsetof(struct stringpool_t, stringpool_str674), 60},
    \n+
    1749 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1750 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1751 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1752 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1753#line 245 "charset_lookup.gperf"
    \n+
    1754 {(int)offsetof(struct stringpool_t, stringpool_str697), 70},
    \n+
    1755 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1756 {-1,-1}, {-1,-1},
    \n+
    1757#line 290 "charset_lookup.gperf"
    \n+
    1758 {(int)offsetof(struct stringpool_t, stringpool_str706), 3},
    \n+
    1759 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1762#line 83 "charset_lookup.gperf"
    \n+
    1763 {(int)offsetof(struct stringpool_t, stringpool_str723), 25},
    \n+
    1764 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1765 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1766 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1767 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1768#line 248 "charset_lookup.gperf"
    \n+
    1769 {(int)offsetof(struct stringpool_t, stringpool_str748), 73},
    \n+
    1770 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1771 {-1,-1},
    \n+
    1772#line 304 "charset_lookup.gperf"
    \n+
    1773 {(int)offsetof(struct stringpool_t, stringpool_str756), 20},
    \n+
    1774 {-1,-1},
    \n+
    1775#line 276 "charset_lookup.gperf"
    \n+
    1776 {(int)offsetof(struct stringpool_t, stringpool_str758), 85},
    \n+
    1777 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1778#line 81 "charset_lookup.gperf"
    \n+
    1779 {(int)offsetof(struct stringpool_t, stringpool_str762), 69},
    \n+
    1780 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1781 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1782 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1783 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1784 {-1,-1},
    \n+
    1785#line 57 "charset_lookup.gperf"
    \n+
    1786 {(int)offsetof(struct stringpool_t, stringpool_str788), 64},
    \n+
    1787 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1788 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1791 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1792 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1793 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1799 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1800 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1803#line 250 "charset_lookup.gperf"
    \n+
    1804 {(int)offsetof(struct stringpool_t, stringpool_str884), 75},
    \n+
    1805 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1806 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1807 {-1,-1}, {-1,-1},
    \n+
    1808#line 256 "charset_lookup.gperf"
    \n+
    1809 {(int)offsetof(struct stringpool_t, stringpool_str899), 79},
    \n+
    1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1811#line 82 "charset_lookup.gperf"
    \n+
    1812 {(int)offsetof(struct stringpool_t, stringpool_str905), 24},
    \n+
    1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1814 {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1815#line 55 "charset_lookup.gperf"
    \n+
    1816 {(int)offsetof(struct stringpool_t, stringpool_str915), 34},
    \n+
    1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1820 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1821 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1823 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1824 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1825 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1829 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1830 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1833 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1834 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1835 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},
    \n+
    1844 {-1,-1},
    \n+
    1845#line 54 "charset_lookup.gperf"
    \n+
    1846 {(int)offsetof(struct stringpool_t, stringpool_str1079), 32}
    \n+
    1847 };
    \n+
    1848
    \n+
    1849 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    \n+
    1850 {
    \n+
    1851 register unsigned int key = hash_charset (str, len);
    \n+
    1852
    \n+
    1853 if (key <= MAX_HASH_VALUE)
    \n+
    1854 {
    \n+
    1855 register int o = wordlist[key].alias_pos;
    \n+
    1856 if (o >= 0)
    \n+
    1857 {
    \n+
    1858 register const char *s = o + stringpool;
    \n+
    1859
    \n+
    1860 if (*str == *s && !strcmp (str + 1, s + 1))
    \n+
    1861 return &wordlist[key];
    \n+
    1862 }
    \n+
    1863 }
    \n+
    1864 }
    \n+
    1865 return 0;
    \n+
    1866}
    \n+
    1867#line 381 "charset_lookup.gperf"
    \n+
    1868
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,64 +7,1883 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-dlist.h\n- 1/* Dlist - dynamic list\n- 2 * Copyright (C) 2016 Frediano Ziglio\n- 3 *\n- 4 * This program is free software; you can redistribute it and/or modify\n- 5 * it under the terms of the GNU General Public License as published by\n- 6 * the Free Software Foundation; either version 2 of the License, or\n- 7 * (at your option) any later version.\n- 8 *\n- 9 * This program is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n- 12 * GNU General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU General Public License\n- 15 * along with this program; if not, write to the Free Software\n- 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n- 17 *\n- 18 */\n- 19\n- 20#ifndef TDS_DLIST_H\n- 21#define TDS_DLIST_H\n- 22\n-23typedef struct dlist_ring {\n- 24 struct dlist_ring *next;\n- 25 struct dlist_ring *prev;\n- 26} dlist_ring;\n- 27\n- 28#if ENABLE_EXTRA_CHECKS\n- 29void dlist_ring_check(dlist_ring *ring);\n+charset_lookup.h\n+ 1/* ANSI-C code produced by gperf version 3.1 */\n+ 2/* Command-line: /usr/pkg/bin/gperf -m 100 -C -K alias_pos -t -F ,-1 -P -\n+H hash_charset -N charset_lookup -L ANSI-C charset_lookup.gperf */\n+ 3/* Computed positions: -k'1,3-11,$' */\n+ 4\n+ 5#if !((' ' == 32) && ('!' == 33) && ('\"' == 34) && ('#' == 35) \\\n+ 6 && ('%' == 37) && ('&' == 38) && ('\\'' == 39) && ('(' == 40) \\\n+ 7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \\\n+ 8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \\\n+ 9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \\\n+ 10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \\\n+ 11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \\\n+ 12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \\\n+ 13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \\\n+ 14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \\\n+ 15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \\\n+ 16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \\\n+ 17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \\\n+ 18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \\\n+ 19 && ('Z' == 90) && ('[' == 91) && ('\\\\' == 92) && (']' == 93) \\\n+ 20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \\\n+ 21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \\\n+ 22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \\\n+ 23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \\\n+ 24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \\\n+ 25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \\\n+ 26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \\\n+ 27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))\n+ 28/* The character set is not based on ISO-646. */\n+ 29#error \"gperf generated tables don't work with this execution character set.\n+Please report a bug to .\"\n 30#endif\n 31\n- 32#define DLIST_FIELDS(name) \\\n- 33 dlist_ring name\n- 34\n- 35#define DLIST_FOREACH(prefix, list, p) \\\n- 36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next\n-(list, p))\n+ 32#line 3 \"charset_lookup.gperf\"\n+ 33\n+ 34static const struct charset_alias *charset_lookup(register const char *str,\n+register size_t len);\n+ 35#line 2 \"charset_lookup.gperf\"\n+36struct charset_alias { short int alias_pos; short int canonic; };\n 37\n- 38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring\n-*ring_item)\n- 39{\n- 40 assert(!ring_item->next && !ring_item->prev);\n- 41 ring_pos->next->prev = ring_item;\n- 42 ring_item->prev = ring_pos;\n- 43 ring_item->next = ring_pos->next;\n- 44 ring_pos->next = ring_item;\n- 45 assert(ring_item->next && ring_item->prev);\n- 46}\n- 47\n- 48#endif /* TDS_DLIST_H */\n-dlist_ring\n-Definition dlist.h:23\n+ 38#define TOTAL_KEYWORDS 374\n+ 39#define MIN_WORD_LENGTH 2\n+ 40#define MAX_WORD_LENGTH 45\n+ 41#define MIN_HASH_VALUE 15\n+ 42#define MAX_HASH_VALUE 1079\n+ 43/* maximum key range = 1065, duplicates = 0 */\n+ 44\n+ 45#ifdef __GNUC__\n+ 46__inline\n+ 47#else\n+ 48#ifdef __cplusplus\n+ 49inline\n+ 50#endif\n+ 51#endif\n+ 52static unsigned int\n+ 53hash_charset (register const char *str, register size_t len)\n+ 54{\n+ 55 static const unsigned short asso_values[] =\n+ 56 {\n+ 57 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 58 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 59 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 60 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 61 1080, 1080, 1080, 1080, 1080, 7, 132, 1080, 56, 6,\n+ 62 47, 83, 35, 8, 18, 63, 7, 9, 363, 1080,\n+ 63 1080, 1080, 1080, 1080, 1080, 7, 99, 128, 6, 22,\n+ 64 141, 116, 95, 6, 34, 68, 7, 159, 6, 6,\n+ 65 80, 1080, 26, 6, 115, 191, 39, 162, 231, 14,\n+ 66 8, 1080, 1080, 1080, 1080, 37, 1080, 10, 16, 147,\n+ 67 1080, 16, 8, 12, 13, 6, 1080, 6, 1080, 8,\n+ 68 6, 6, 1080, 1080, 6, 7, 6, 19, 1080, 1080,\n+ 69 1080, 6, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 70 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 71 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 72 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 73 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 74 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 75 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 76 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 77 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 78 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 79 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 80 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 81 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,\n+ 82 1080, 1080, 1080, 1080, 1080, 1080\n+ 83 };\n+ 84 register unsigned int hval = len;\n+ 85\n+ 86 switch (hval)\n+ 87 {\n+ 88 default:\n+ 89 hval += asso_values[(unsigned char)str[10]];\n+ 90 /*FALLTHROUGH*/\n+ 91 case 10:\n+ 92 hval += asso_values[(unsigned char)str[9]];\n+ 93 /*FALLTHROUGH*/\n+ 94 case 9:\n+ 95 hval += asso_values[(unsigned char)str[8]];\n+ 96 /*FALLTHROUGH*/\n+ 97 case 8:\n+ 98 hval += asso_values[(unsigned char)str[7]];\n+ 99 /*FALLTHROUGH*/\n+ 100 case 7:\n+ 101 hval += asso_values[(unsigned char)str[6]];\n+ 102 /*FALLTHROUGH*/\n+ 103 case 6:\n+ 104 hval += asso_values[(unsigned char)str[5]];\n+ 105 /*FALLTHROUGH*/\n+ 106 case 5:\n+ 107 hval += asso_values[(unsigned char)str[4]];\n+ 108 /*FALLTHROUGH*/\n+ 109 case 4:\n+ 110 hval += asso_values[(unsigned char)str[3]];\n+ 111 /*FALLTHROUGH*/\n+ 112 case 3:\n+ 113 hval += asso_values[(unsigned char)str[2]];\n+ 114 /*FALLTHROUGH*/\n+ 115 case 2:\n+ 116 case 1:\n+ 117 hval += asso_values[(unsigned char)str[0]];\n+ 118 break;\n+ 119 }\n+ 120 return hval + asso_values[(unsigned char)str[len - 1]];\n+ 121}\n+ 122\n+123struct stringpool_t\n+ 124 {\n+ 125 char stringpool_str15[sizeof(\"L1\")];\n+ 126 char stringpool_str16[sizeof(\"L8\")];\n+ 127 char stringpool_str17[sizeof(\"L5\")];\n+ 128 char stringpool_str27[sizeof(\"L6\")];\n+ 129 char stringpool_str28[sizeof(\"SJIS\")];\n+ 130 char stringpool_str30[sizeof(\"koi8\")];\n+ 131 char stringpool_str31[sizeof(\"sjis\")];\n+ 132 char stringpool_str35[sizeof(\"R8\")];\n+ 133 char stringpool_str36[sizeof(\"iso81\")];\n+ 134 char stringpool_str38[sizeof(\"iso88\")];\n+ 135 char stringpool_str39[sizeof(\"iso15\")];\n+ 136 char stringpool_str40[sizeof(\"iso85\")];\n+ 137 char stringpool_str41[sizeof(\"thai8\")];\n+ 138 char stringpool_str42[sizeof(\"iso89\")];\n+ 139 char stringpool_str43[sizeof(\"roma8\")];\n+ 140 char stringpool_str44[sizeof(\"L4\")];\n+ 141 char stringpool_str45[sizeof(\"utf8\")];\n+ 142 char stringpool_str46[sizeof(\"866\")];\n+ 143 char stringpool_str47[sizeof(\"iso815\")];\n+ 144 char stringpool_str48[sizeof(\"big5\")];\n+ 145 char stringpool_str50[sizeof(\"roman8\")];\n+ 146 char stringpool_str56[sizeof(\"L2\")];\n+ 147 char stringpool_str57[sizeof(\"646\")];\n+ 148 char stringpool_str60[sizeof(\"iso86\")];\n+ 149 char stringpool_str63[sizeof(\"iso88591\")];\n+ 150 char stringpool_str65[sizeof(\"iso88598\")];\n+ 151 char stringpool_str66[sizeof(\"iso_1\")];\n+ 152 char stringpool_str67[sizeof(\"iso88595\")];\n+ 153 char stringpool_str69[sizeof(\"iso88599\")];\n+ 154 char stringpool_str70[sizeof(\"greek8\")];\n+ 155 char stringpool_str71[sizeof(\"ISO8859-1\")];\n+ 156 char stringpool_str72[sizeof(\"L7\")];\n+ 157 char stringpool_str73[sizeof(\"ISO8859-8\")];\n+ 158 char stringpool_str74[sizeof(\"iso885915\")];\n+ 159 char stringpool_str75[sizeof(\"ISO8859-5\")];\n+ 160 char stringpool_str77[sizeof(\"ISO8859-9\")];\n+ 161 char stringpool_str79[sizeof(\"ISO-8859-1\")];\n+ 162 char stringpool_str81[sizeof(\"ISO-8859-8\")];\n+ 163 char stringpool_str82[sizeof(\"ISO8859-15\")];\n+ 164 char stringpool_str83[sizeof(\"ISO-8859-5\")];\n+ 165 char stringpool_str85[sizeof(\"ISO-8859-9\")];\n+ 166 char stringpool_str87[sizeof(\"iso88596\")];\n+ 167 char stringpool_str89[sizeof(\"ISO-IR-58\")];\n+ 168 char stringpool_str90[sizeof(\"ISO-8859-15\")];\n+ 169 char stringpool_str91[sizeof(\"JAVA\")];\n+ 170 char stringpool_str92[sizeof(\"L3\")];\n+ 171 char stringpool_str93[sizeof(\"iso14\")];\n+ 172 char stringpool_str94[sizeof(\"iso84\")];\n+ 173 char stringpool_str95[sizeof(\"ISO8859-6\")];\n+ 174 char stringpool_str100[sizeof(\"ISO-IR-159\")];\n+ 175 char stringpool_str101[sizeof(\"ISO-IR-199\")];\n+ 176 char stringpool_str102[sizeof(\"ISO-IR-6\")];\n+ 177 char stringpool_str103[sizeof(\"ISO-8859-6\")];\n+ 178 char stringpool_str104[sizeof(\"862\")];\n+ 179 char stringpool_str105[sizeof(\"HZ\")];\n+ 180 char stringpool_str107[sizeof(\"iso646\")];\n+ 181 char stringpool_str108[sizeof(\"ISO-IR-165\")];\n+ 182 char stringpool_str109[sizeof(\"ISO_8859-1\")];\n+ 183 char stringpool_str110[sizeof(\"ISO-8859-16\")];\n+ 184 char stringpool_str111[sizeof(\"ISO_8859-8\")];\n+ 185 char stringpool_str113[sizeof(\"ISO_8859-5\")];\n+ 186 char stringpool_str115[sizeof(\"ISO_8859-9\")];\n+ 187 char stringpool_str116[sizeof(\"JP\")];\n+ 188 char stringpool_str118[sizeof(\"iso82\")];\n+ 189 char stringpool_str120[sizeof(\"ISO_8859-15\")];\n+ 190 char stringpool_str121[sizeof(\"iso88594\")];\n+ 191 char stringpool_str122[sizeof(\"850\")];\n+ 192 char stringpool_str123[sizeof(\"ISO-IR-148\")];\n+ 193 char stringpool_str124[sizeof(\"ISO_8859-15:1998\")];\n+ 194 char stringpool_str127[sizeof(\"ISO-IR-149\")];\n+ 195 char stringpool_str128[sizeof(\"ISO-IR-166\")];\n+ 196 char stringpool_str129[sizeof(\"ISO8859-4\")];\n+ 197 char stringpool_str133[sizeof(\"ISO_8859-6\")];\n+ 198 char stringpool_str135[sizeof(\"iso10\")];\n+ 199 char stringpool_str136[sizeof(\"CN\")];\n+ 200 char stringpool_str137[sizeof(\"ISO-8859-4\")];\n+ 201 char stringpool_str140[sizeof(\"ISO_8859-16\")];\n+ 202 char stringpool_str141[sizeof(\"KOREAN\")];\n+ 203 char stringpool_str142[sizeof(\"ISO-IR-101\")];\n+ 204 char stringpool_str143[sizeof(\"ISO-IR-14\")];\n+ 205 char stringpool_str144[sizeof(\"ISO-8859-14\")];\n+ 206 char stringpool_str145[sizeof(\"iso88592\")];\n+ 207 char stringpool_str146[sizeof(\"KOI8-R\")];\n+ 208 char stringpool_str148[sizeof(\"ISO-IR-109\")];\n+ 209 char stringpool_str149[sizeof(\"C99\")];\n+ 210 char stringpool_str150[sizeof(\"iso87\")];\n+ 211 char stringpool_str151[sizeof(\"ISO_8859-14:1998\")];\n+ 212 char stringpool_str152[sizeof(\"LATIN1\")];\n+ 213 char stringpool_str153[sizeof(\"ISO8859-2\")];\n+ 214 char stringpool_str154[sizeof(\"LATIN8\")];\n+ 215 char stringpool_str155[sizeof(\"ISO-IR-179\")];\n+ 216 char stringpool_str156[sizeof(\"LATIN5\")];\n+ 217 char stringpool_str157[sizeof(\"ISO-IR-126\")];\n+ 218 char stringpool_str158[sizeof(\"ASCII\")];\n+ 219 char stringpool_str161[sizeof(\"ISO-8859-2\")];\n+ 220 char stringpool_str164[sizeof(\"CP819\")];\n+ 221 char stringpool_str167[sizeof(\"ISO_8859-4\")];\n+ 222 char stringpool_str170[sizeof(\"TCVN\")];\n+ 223 char stringpool_str171[sizeof(\"ISO-IR-138\")];\n+ 224 char stringpool_str173[sizeof(\"hp15CN\")];\n+ 225 char stringpool_str174[sizeof(\"ISO_8859-14\")];\n+ 226 char stringpool_str176[sizeof(\"LATIN6\")];\n+ 227 char stringpool_str177[sizeof(\"iso88597\")];\n+ 228 char stringpool_str178[sizeof(\"ISO8859-10\")];\n+ 229 char stringpool_str179[sizeof(\"ISO-IR-144\")];\n+ 230 char stringpool_str183[sizeof(\"ISO_8859-16:2000\")];\n+ 231 char stringpool_str185[sizeof(\"ISO8859-7\")];\n+ 232 char stringpool_str186[sizeof(\"ISO-8859-10\")];\n+ 233 char stringpool_str189[sizeof(\"iso13\")];\n+ 234 char stringpool_str190[sizeof(\"iso83\")];\n+ 235 char stringpool_str191[sizeof(\"ISO_8859-2\")];\n+ 236 char stringpool_str192[sizeof(\"ISO-IR-110\")];\n+ 237 char stringpool_str193[sizeof(\"ISO-8859-7\")];\n+ 238 char stringpool_str194[sizeof(\"CP866\")];\n+ 239 char stringpool_str195[sizeof(\"CP949\")];\n+ 240 char stringpool_str196[sizeof(\"tis620\")];\n+ 241 char stringpool_str197[sizeof(\"VISCII\")];\n+ 242 char stringpool_str198[sizeof(\"ISO-IR-226\")];\n+ 243 char stringpool_str199[sizeof(\"US\")];\n+ 244 char stringpool_str200[sizeof(\"ISO-IR-87\")];\n+ 245 char stringpool_str201[sizeof(\"ISO-IR-57\")];\n+ 246 char stringpool_str202[sizeof(\"IBM819\")];\n+ 247 char stringpool_str203[sizeof(\"macthai\")];\n+ 248 char stringpool_str204[sizeof(\"MS-ANSI\")];\n+ 249 char stringpool_str205[sizeof(\"macturk\")];\n+ 250 char stringpool_str207[sizeof(\"CP1251\")];\n+ 251 char stringpool_str208[sizeof(\"ISO-IR-157\")];\n+ 252 char stringpool_str209[sizeof(\"CP1258\")];\n+ 253 char stringpool_str210[sizeof(\"LATIN4\")];\n+ 254 char stringpool_str211[sizeof(\"CP1255\")];\n+ 255 char stringpool_str212[sizeof(\"ISO_8859-10:1992\")];\n+ 256 char stringpool_str213[sizeof(\"cp866\")];\n+ 257 char stringpool_str214[sizeof(\"cp949\")];\n+ 258 char stringpool_str216[sizeof(\"ISO_8859-10\")];\n+ 259 char stringpool_str217[sizeof(\"iso88593\")];\n+ 260 char stringpool_str218[sizeof(\"ROMAN8\")];\n+ 261 char stringpool_str219[sizeof(\"CHINESE\")];\n+ 262 char stringpool_str220[sizeof(\"JIS0208\")];\n+ 263 char stringpool_str223[sizeof(\"ISO_8859-7\")];\n+ 264 char stringpool_str225[sizeof(\"macgreek\")];\n+ 265 char stringpool_str226[sizeof(\"cp1251\")];\n+ 266 char stringpool_str227[sizeof(\"ascii_8\")];\n+ 267 char stringpool_str228[sizeof(\"cp1258\")];\n+ 268 char stringpool_str229[sizeof(\"ECMA-118\")];\n+ 269 char stringpool_str230[sizeof(\"cp1255\")];\n+ 270 char stringpool_str231[sizeof(\"CP1256\")];\n+ 271 char stringpool_str232[sizeof(\"IBM866\")];\n+ 272 char stringpool_str233[sizeof(\"ISO-8859-3\")];\n+ 273 char stringpool_str234[sizeof(\"LATIN2\")];\n+ 274 char stringpool_str235[sizeof(\"BIG5\")];\n+ 275 char stringpool_str236[sizeof(\"MULELAO-1\")];\n+ 276 char stringpool_str237[sizeof(\"MS-EE\")];\n+ 277 char stringpool_str239[sizeof(\"ISO646-CN\")];\n+ 278 char stringpool_str240[sizeof(\"ISO-8859-13\")];\n+ 279 char stringpool_str242[sizeof(\"ISO-IR-100\")];\n+ 280 char stringpool_str243[sizeof(\"BIG-5\")];\n+ 281 char stringpool_str247[sizeof(\"ISO-IR-127\")];\n+ 282 char stringpool_str248[sizeof(\"GREEK8\")];\n+ 283 char stringpool_str250[sizeof(\"cp1256\")];\n+ 284 char stringpool_str252[sizeof(\"CP862\")];\n+ 285 char stringpool_str253[sizeof(\"CP1361\")];\n+ 286 char stringpool_str255[sizeof(\"GBK\")];\n+ 287 char stringpool_str258[sizeof(\"ELOT_928\")];\n+ 288 char stringpool_str260[sizeof(\"CP850\")];\n+ 289 char stringpool_str261[sizeof(\"CP936\")];\n+ 290 char stringpool_str262[sizeof(\"CP950\")];\n+ 291 char stringpool_str263[sizeof(\"ISO_8859-3\")];\n+ 292 char stringpool_str265[sizeof(\"CP1254\")];\n+ 293 char stringpool_str266[sizeof(\"LATIN7\")];\n+ 294 char stringpool_str270[sizeof(\"ISO_8859-13\")];\n+ 295 char stringpool_str271[sizeof(\"cp862\")];\n+ 296 char stringpool_str273[sizeof(\"CP874\")];\n+ 297 char stringpool_str274[sizeof(\"CSKOI8R\")];\n+ 298 char stringpool_str275[sizeof(\"EUCKR\")];\n+ 299 char stringpool_str279[sizeof(\"cp850\")];\n+ 300 char stringpool_str280[sizeof(\"cp936\")];\n+ 301 char stringpool_str281[sizeof(\"cp950\")];\n+ 302 char stringpool_str283[sizeof(\"EUC-KR\")];\n+ 303 char stringpool_str284[sizeof(\"cp1254\")];\n+ 304 char stringpool_str285[sizeof(\"ECMA-114\")];\n+ 305 char stringpool_str288[sizeof(\"eucKR\")];\n+ 306 char stringpool_str289[sizeof(\"CP1252\")];\n+ 307 char stringpool_str290[sizeof(\"IBM862\")];\n+ 308 char stringpool_str291[sizeof(\"CSISO159JISX02121990\")];\n+ 309 char stringpool_str292[sizeof(\"cp874\")];\n+ 310 char stringpool_str293[sizeof(\"ISO646-JP\")];\n+ 311 char stringpool_str294[sizeof(\"CSASCII\")];\n+ 312 char stringpool_str295[sizeof(\"EUCCN\")];\n+ 313 char stringpool_str297[sizeof(\"UCS-4LE\")];\n+ 314 char stringpool_str298[sizeof(\"IBM850\")];\n+ 315 char stringpool_str301[sizeof(\"GREEK\")];\n+ 316 char stringpool_str302[sizeof(\"ISO646-US\")];\n+ 317 char stringpool_str303[sizeof(\"EUC-CN\")];\n+ 318 char stringpool_str304[sizeof(\"TIS620\")];\n+ 319 char stringpool_str305[sizeof(\"mac\")];\n+ 320 char stringpool_str306[sizeof(\"LATIN3\")];\n+ 321 char stringpool_str307[sizeof(\"CP1250\")];\n+ 322 char stringpool_str308[sizeof(\"cp1252\")];\n+ 323 char stringpool_str309[sizeof(\"UCS-2LE\")];\n+ 324 char stringpool_str310[sizeof(\"CSISOLATIN1\")];\n+ 325 char stringpool_str312[sizeof(\"TIS-620\")];\n+ 326 char stringpool_str313[sizeof(\"TCVN5712-1\")];\n+ 327 char stringpool_str314[sizeof(\"CSISOLATIN5\")];\n+ 328 char stringpool_str318[sizeof(\"GB_1988-80\")];\n+ 329 char stringpool_str319[sizeof(\"CP932\")];\n+ 330 char stringpool_str320[sizeof(\"ASMO-708\")];\n+ 331 char stringpool_str321[sizeof(\"CP1257\")];\n+ 332 char stringpool_str324[sizeof(\"KOI8-T\")];\n+ 333 char stringpool_str326[sizeof(\"cp1250\")];\n+ 334 char stringpool_str329[sizeof(\"HP-ROMAN8\")];\n+ 335 char stringpool_str331[sizeof(\"MS_KANJI\")];\n+ 336 char stringpool_str333[sizeof(\"CSVISCII\")];\n+ 337 char stringpool_str334[sizeof(\"CSISOLATIN6\")];\n+ 338 char stringpool_str335[sizeof(\"KSC_5601\")];\n+ 339 char stringpool_str336[sizeof(\"SHIFT-JIS\")];\n+ 340 char stringpool_str337[sizeof(\"ISO-IR-203\")];\n+ 341 char stringpool_str338[sizeof(\"cp932\")];\n+ 342 char stringpool_str339[sizeof(\"JOHAB\")];\n+ 343 char stringpool_str340[sizeof(\"cp1257\")];\n+ 344 char stringpool_str342[sizeof(\"ARMSCII-8\")];\n+ 345 char stringpool_str345[sizeof(\"ISO_646.IRV:1991\")];\n+ 346 char stringpool_str347[sizeof(\"TCVN-5712\")];\n+ 347 char stringpool_str349[sizeof(\"EUCJP\")];\n+ 348 char stringpool_str350[sizeof(\"UTF8\")];\n+ 349 char stringpool_str351[sizeof(\"X0201\")];\n+ 350 char stringpool_str352[sizeof(\"GB2312\")];\n+ 351 char stringpool_str353[sizeof(\"X0208\")];\n+ 352 char stringpool_str354[sizeof(\"ISO-2022-KR\")];\n+ 353 char stringpool_str355[sizeof(\"MS-CYRL\")];\n+ 354 char stringpool_str356[sizeof(\"ISO-2022-JP-1\")];\n+ 355 char stringpool_str357[sizeof(\"EUC-JP\")];\n+ 356 char stringpool_str358[sizeof(\"UTF-8\")];\n+ 357 char stringpool_str359[sizeof(\"VISCII1.1-1\")];\n+ 358 char stringpool_str360[sizeof(\"CP367\")];\n+ 359 char stringpool_str361[sizeof(\"CP1253\")];\n+ 360 char stringpool_str362[sizeof(\"eucJP\")];\n+ 361 char stringpool_str364[sizeof(\"mac_cyr\")];\n+ 362 char stringpool_str365[sizeof(\"US-ASCII\")];\n+ 363 char stringpool_str366[sizeof(\"SHIFT_JIS\")];\n+ 364 char stringpool_str368[sizeof(\"CSISOLATIN4\")];\n+ 365 char stringpool_str369[sizeof(\"TIS620-0\")];\n+ 366 char stringpool_str371[sizeof(\"CSBIG5\")];\n+ 367 char stringpool_str374[sizeof(\"ISO-2022-CN\")];\n+ 368 char stringpool_str377[sizeof(\"CP437\")];\n+ 369 char stringpool_str379[sizeof(\"CN-BIG5\")];\n+ 370 char stringpool_str380[sizeof(\"cp1253\")];\n+ 371 char stringpool_str381[sizeof(\"ARABIC\")];\n+ 372 char stringpool_str383[sizeof(\"X0212\")];\n+ 373 char stringpool_str384[sizeof(\"CSISO14JISC6220RO\")];\n+ 374 char stringpool_str387[sizeof(\"GB18030\")];\n+ 375 char stringpool_str389[sizeof(\"UCS-4BE\")];\n+ 376 char stringpool_str392[sizeof(\"CSISOLATIN2\")];\n+ 377 char stringpool_str393[sizeof(\"GEORGIAN-PS\")];\n+ 378 char stringpool_str394[sizeof(\"KS_C_5601-1989\")];\n+ 379 char stringpool_str395[sizeof(\"CP1133\")];\n+ 380 char stringpool_str396[sizeof(\"cp437\")];\n+ 381 char stringpool_str397[sizeof(\"ISO-2022-JP-2\")];\n+ 382 char stringpool_str398[sizeof(\"IBM367\")];\n+ 383 char stringpool_str401[sizeof(\"UCS-2BE\")];\n+ 384 char stringpool_str402[sizeof(\"UNICODE-1-1\")];\n+ 385 char stringpool_str409[sizeof(\"JIS_C6220-1969-RO\")];\n+ 386 char stringpool_str411[sizeof(\"MS-ARAB\")];\n+ 387 char stringpool_str415[sizeof(\"IBM437\")];\n+ 388 char stringpool_str418[sizeof(\"MAC\")];\n+ 389 char stringpool_str422[sizeof(\"UTF-16LE\")];\n+ 390 char stringpool_str428[sizeof(\"ISO-2022-JP\")];\n+ 391 char stringpool_str429[sizeof(\"CN-GB-ISOIR165\")];\n+ 392 char stringpool_str434[sizeof(\"WINDOWS-1251\")];\n+ 393 char stringpool_str435[sizeof(\"WINDOWS-1258\")];\n+ 394 char stringpool_str436[sizeof(\"WINDOWS-1255\")];\n+ 395 char stringpool_str438[sizeof(\"CSISOLATINARABIC\")];\n+ 396 char stringpool_str441[sizeof(\"MS-HEBR\")];\n+ 397 char stringpool_str444[sizeof(\"CYRILLIC\")];\n+ 398 char stringpool_str445[sizeof(\"JIS_C6226-1983\")];\n+ 399 char stringpool_str446[sizeof(\"WINDOWS-1256\")];\n+ 400 char stringpool_str448[sizeof(\"KS_C_5601-1987\")];\n+ 401 char stringpool_str450[sizeof(\"UHC\")];\n+ 402 char stringpool_str452[sizeof(\"BIGFIVE\")];\n+ 403 char stringpool_str454[sizeof(\"CN-GB\")];\n+ 404 char stringpool_str455[sizeof(\"GEORGIAN-ACADEMY\")];\n+ 405 char stringpool_str460[sizeof(\"BIG-FIVE\")];\n+ 406 char stringpool_str461[sizeof(\"CSIBM866\")];\n+ 407 char stringpool_str462[sizeof(\"UTF7\")];\n+ 408 char stringpool_str463[sizeof(\"WINDOWS-1254\")];\n+ 409 char stringpool_str464[sizeof(\"CSISOLATIN3\")];\n+ 410 char stringpool_str465[sizeof(\"UNICODE-1-1-UTF-7\")];\n+ 411 char stringpool_str467[sizeof(\"CSISO57GB1988\")];\n+ 412 char stringpool_str470[sizeof(\"UTF-7\")];\n+ 413 char stringpool_str472[sizeof(\"GB_2312-80\")];\n+ 414 char stringpool_str474[sizeof(\"CSISO2022KR\")];\n+ 415 char stringpool_str475[sizeof(\"WINDOWS-1252\")];\n+ 416 char stringpool_str476[sizeof(\"KOI8-U\")];\n+ 417 char stringpool_str479[sizeof(\"ISO_8859-8:1988\")];\n+ 418 char stringpool_str480[sizeof(\"ISO_8859-5:1988\")];\n+ 419 char stringpool_str483[sizeof(\"ISO_8859-9:1989\")];\n+ 420 char stringpool_str484[sizeof(\"WINDOWS-1250\")];\n+ 421 char stringpool_str485[sizeof(\"MACICELAND\")];\n+ 422 char stringpool_str486[sizeof(\"CSISOLATINGREEK\")];\n+ 423 char stringpool_str487[sizeof(\"ISO-2022-CN-EXT\")];\n+ 424 char stringpool_str488[sizeof(\"JIS_X0201\")];\n+ 425 char stringpool_str489[sizeof(\"JISX0201-1976\")];\n+ 426 char stringpool_str490[sizeof(\"JIS_X0208\")];\n+ 427 char stringpool_str491[sizeof(\"WINDOWS-1257\")];\n+ 428 char stringpool_str494[sizeof(\"CSISO2022CN\")];\n+ 429 char stringpool_str496[sizeof(\"MS-GREEK\")];\n+ 430 char stringpool_str500[sizeof\n+(\"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\")];\n+ 431 char stringpool_str503[sizeof(\"KOI8-RU\")];\n+ 432 char stringpool_str504[sizeof(\"TIS620.2529-1\")];\n+ 433 char stringpool_str505[sizeof(\"MACROMAN\")];\n+ 434 char stringpool_str506[sizeof(\"WINDOWS-874\")];\n+ 435 char stringpool_str507[sizeof(\"ISO_8859-4:1988\")];\n+ 436 char stringpool_str509[sizeof(\"CSKSC56011987\")];\n+ 437 char stringpool_str511[sizeof(\"WINDOWS-1253\")];\n+ 438 char stringpool_str514[sizeof(\"UTF-16BE\")];\n+ 439 char stringpool_str515[sizeof(\"CSISO87JISX0208\")];\n+ 440 char stringpool_str516[sizeof(\"CSISO2022JP2\")];\n+ 441 char stringpool_str520[sizeof(\"JIS_X0212\")];\n+ 442 char stringpool_str521[sizeof(\"MACROMANIA\")];\n+ 443 char stringpool_str522[sizeof(\"CSUNICODE11\")];\n+ 444 char stringpool_str523[sizeof(\"MACTHAI\")];\n+ 445 char stringpool_str528[sizeof(\"UTF-32LE\")];\n+ 446 char stringpool_str531[sizeof(\"CSHPROMAN8\")];\n+ 447 char stringpool_str534[sizeof(\"ISO_8859-1:1987\")];\n+ 448 char stringpool_str541[sizeof(\"BIG5HKSCS\")];\n+ 449 char stringpool_str546[sizeof(\"ISO_8859-6:1987\")];\n+ 450 char stringpool_str547[sizeof(\"JIS_X0212-1990\")];\n+ 451 char stringpool_str548[sizeof(\"CSISO2022JP\")];\n+ 452 char stringpool_str549[sizeof(\"BIG5-HKSCS\")];\n+ 453 char stringpool_str553[sizeof(\"CSSHIFTJIS\")];\n+ 454 char stringpool_str555[sizeof(\"ISO_8859-3:1988\")];\n+ 455 char stringpool_str557[sizeof(\"JIS_X0208-1990\")];\n+ 456 char stringpool_str560[sizeof(\"CSISOLATINHEBREW\")];\n+ 457 char stringpool_str561[sizeof(\"CSISOLATINCYRILLIC\")];\n+ 458 char stringpool_str563[sizeof(\"ISO-CELTIC\")];\n+ 459 char stringpool_str564[sizeof(\"HZ-GB-2312\")];\n+ 460 char stringpool_str571[sizeof(\"ANSI_X3.4-1968\")];\n+ 461 char stringpool_str572[sizeof(\"HEBREW\")];\n+ 462 char stringpool_str575[sizeof(\"ISO_8859-2:1987\")];\n+ 463 char stringpool_str577[sizeof(\"CSISO58GB231280\")];\n+ 464 char stringpool_str581[sizeof(\"CSGB2312\")];\n+ 465 char stringpool_str582[sizeof(\"ANSI_X3.4-1986\")];\n+ 466 char stringpool_str583[sizeof(\"CSUNICODE11UTF7\")];\n+ 467 char stringpool_str584[sizeof(\"JIS_X0208-1983\")];\n+ 468 char stringpool_str591[sizeof(\"ISO_8859-7:1987\")];\n+ 469 char stringpool_str594[sizeof(\"EUCTW\")];\n+ 470 char stringpool_str596[sizeof(\"CSEUCKR\")];\n+ 471 char stringpool_str602[sizeof(\"EUC-TW\")];\n+ 472 char stringpool_str605[sizeof(\"MACCROATIAN\")];\n+ 473 char stringpool_str607[sizeof(\"eucTW\")];\n+ 474 char stringpool_str614[sizeof(\"TIS620.2533-1\")];\n+ 475 char stringpool_str617[sizeof(\"MACGREEK\")];\n+ 476 char stringpool_str620[sizeof(\"UTF-32BE\")];\n+ 477 char stringpool_str625[sizeof(\"MACINTOSH\")];\n+ 478 char stringpool_str637[sizeof(\"UNICODELITTLE\")];\n+ 479 char stringpool_str641[sizeof(\"MS-TURK\")];\n+ 480 char stringpool_str645[sizeof(\"MACUKRAINE\")];\n+ 481 char stringpool_str651[sizeof(\"IBM-CP1133\")];\n+ 482 char stringpool_str658[sizeof(\"MACCENTRALEUROPE\")];\n+ 483 char stringpool_str663[sizeof(\"NEXTSTEP\")];\n+ 484 char stringpool_str664[sizeof(\"TIS620.2533-0\")];\n+ 485 char stringpool_str674[sizeof(\"JIS_X0212.1990-0\")];\n+ 486 char stringpool_str697[sizeof(\"MACARABIC\")];\n+ 487 char stringpool_str706[sizeof(\"UNICODEBIG\")];\n+ 488 char stringpool_str723[sizeof(\"CSPC862LATINHEBREW\")];\n+ 489 char stringpool_str748[sizeof(\"MACCYRILLIC\")];\n+ 490 char stringpool_str756[sizeof(\"WINBALTRIM\")];\n+ 491 char stringpool_str758[sizeof(\"TCVN5712-1:1993\")];\n+ 492 char stringpool_str762[sizeof(\"CSMACINTOSH\")];\n+ 493 char stringpool_str788[sizeof(\"CSHALFWIDTHKATAKANA\")];\n+ 494 char stringpool_str884[sizeof(\"MACHEBREW\")];\n+ 495 char stringpool_str899[sizeof(\"MACTURKISH\")];\n+ 496 char stringpool_str905[sizeof(\"CSPC850MULTILINGUAL\")];\n+ 497 char stringpool_str915[sizeof(\"CSEUCTW\")];\n+ 498 char stringpool_str1079[sizeof(\"CSEUCPKDFMTJAPANESE\")];\n+ 499 };\n+ 500static const struct stringpool_t stringpool_contents =\n+ 501 {\n+ 502 \"L1\",\n+ 503 \"L8\",\n+ 504 \"L5\",\n+ 505 \"L6\",\n+ 506 \"SJIS\",\n+ 507 \"koi8\",\n+ 508 \"sjis\",\n+ 509 \"R8\",\n+ 510 \"iso81\",\n+ 511 \"iso88\",\n+ 512 \"iso15\",\n+ 513 \"iso85\",\n+ 514 \"thai8\",\n+ 515 \"iso89\",\n+ 516 \"roma8\",\n+ 517 \"L4\",\n+ 518 \"utf8\",\n+ 519 \"866\",\n+ 520 \"iso815\",\n+ 521 \"big5\",\n+ 522 \"roman8\",\n+ 523 \"L2\",\n+ 524 \"646\",\n+ 525 \"iso86\",\n+ 526 \"iso88591\",\n+ 527 \"iso88598\",\n+ 528 \"iso_1\",\n+ 529 \"iso88595\",\n+ 530 \"iso88599\",\n+ 531 \"greek8\",\n+ 532 \"ISO8859-1\",\n+ 533 \"L7\",\n+ 534 \"ISO8859-8\",\n+ 535 \"iso885915\",\n+ 536 \"ISO8859-5\",\n+ 537 \"ISO8859-9\",\n+ 538 \"ISO-8859-1\",\n+ 539 \"ISO-8859-8\",\n+ 540 \"ISO8859-15\",\n+ 541 \"ISO-8859-5\",\n+ 542 \"ISO-8859-9\",\n+ 543 \"iso88596\",\n+ 544 \"ISO-IR-58\",\n+ 545 \"ISO-8859-15\",\n+ 546 \"JAVA\",\n+ 547 \"L3\",\n+ 548 \"iso14\",\n+ 549 \"iso84\",\n+ 550 \"ISO8859-6\",\n+ 551 \"ISO-IR-159\",\n+ 552 \"ISO-IR-199\",\n+ 553 \"ISO-IR-6\",\n+ 554 \"ISO-8859-6\",\n+ 555 \"862\",\n+ 556 \"HZ\",\n+ 557 \"iso646\",\n+ 558 \"ISO-IR-165\",\n+ 559 \"ISO_8859-1\",\n+ 560 \"ISO-8859-16\",\n+ 561 \"ISO_8859-8\",\n+ 562 \"ISO_8859-5\",\n+ 563 \"ISO_8859-9\",\n+ 564 \"JP\",\n+ 565 \"iso82\",\n+ 566 \"ISO_8859-15\",\n+ 567 \"iso88594\",\n+ 568 \"850\",\n+ 569 \"ISO-IR-148\",\n+ 570 \"ISO_8859-15:1998\",\n+ 571 \"ISO-IR-149\",\n+ 572 \"ISO-IR-166\",\n+ 573 \"ISO8859-4\",\n+ 574 \"ISO_8859-6\",\n+ 575 \"iso10\",\n+ 576 \"CN\",\n+ 577 \"ISO-8859-4\",\n+ 578 \"ISO_8859-16\",\n+ 579 \"KOREAN\",\n+ 580 \"ISO-IR-101\",\n+ 581 \"ISO-IR-14\",\n+ 582 \"ISO-8859-14\",\n+ 583 \"iso88592\",\n+ 584 \"KOI8-R\",\n+ 585 \"ISO-IR-109\",\n+ 586 \"C99\",\n+ 587 \"iso87\",\n+ 588 \"ISO_8859-14:1998\",\n+ 589 \"LATIN1\",\n+ 590 \"ISO8859-2\",\n+ 591 \"LATIN8\",\n+ 592 \"ISO-IR-179\",\n+ 593 \"LATIN5\",\n+ 594 \"ISO-IR-126\",\n+ 595 \"ASCII\",\n+ 596 \"ISO-8859-2\",\n+ 597 \"CP819\",\n+ 598 \"ISO_8859-4\",\n+ 599 \"TCVN\",\n+ 600 \"ISO-IR-138\",\n+ 601 \"hp15CN\",\n+ 602 \"ISO_8859-14\",\n+ 603 \"LATIN6\",\n+ 604 \"iso88597\",\n+ 605 \"ISO8859-10\",\n+ 606 \"ISO-IR-144\",\n+ 607 \"ISO_8859-16:2000\",\n+ 608 \"ISO8859-7\",\n+ 609 \"ISO-8859-10\",\n+ 610 \"iso13\",\n+ 611 \"iso83\",\n+ 612 \"ISO_8859-2\",\n+ 613 \"ISO-IR-110\",\n+ 614 \"ISO-8859-7\",\n+ 615 \"CP866\",\n+ 616 \"CP949\",\n+ 617 \"tis620\",\n+ 618 \"VISCII\",\n+ 619 \"ISO-IR-226\",\n+ 620 \"US\",\n+ 621 \"ISO-IR-87\",\n+ 622 \"ISO-IR-57\",\n+ 623 \"IBM819\",\n+ 624 \"macthai\",\n+ 625 \"MS-ANSI\",\n+ 626 \"macturk\",\n+ 627 \"CP1251\",\n+ 628 \"ISO-IR-157\",\n+ 629 \"CP1258\",\n+ 630 \"LATIN4\",\n+ 631 \"CP1255\",\n+ 632 \"ISO_8859-10:1992\",\n+ 633 \"cp866\",\n+ 634 \"cp949\",\n+ 635 \"ISO_8859-10\",\n+ 636 \"iso88593\",\n+ 637 \"ROMAN8\",\n+ 638 \"CHINESE\",\n+ 639 \"JIS0208\",\n+ 640 \"ISO_8859-7\",\n+ 641 \"macgreek\",\n+ 642 \"cp1251\",\n+ 643 \"ascii_8\",\n+ 644 \"cp1258\",\n+ 645 \"ECMA-118\",\n+ 646 \"cp1255\",\n+ 647 \"CP1256\",\n+ 648 \"IBM866\",\n+ 649 \"ISO-8859-3\",\n+ 650 \"LATIN2\",\n+ 651 \"BIG5\",\n+ 652 \"MULELAO-1\",\n+ 653 \"MS-EE\",\n+ 654 \"ISO646-CN\",\n+ 655 \"ISO-8859-13\",\n+ 656 \"ISO-IR-100\",\n+ 657 \"BIG-5\",\n+ 658 \"ISO-IR-127\",\n+ 659 \"GREEK8\",\n+ 660 \"cp1256\",\n+ 661 \"CP862\",\n+ 662 \"CP1361\",\n+ 663 \"GBK\",\n+ 664 \"ELOT_928\",\n+ 665 \"CP850\",\n+ 666 \"CP936\",\n+ 667 \"CP950\",\n+ 668 \"ISO_8859-3\",\n+ 669 \"CP1254\",\n+ 670 \"LATIN7\",\n+ 671 \"ISO_8859-13\",\n+ 672 \"cp862\",\n+ 673 \"CP874\",\n+ 674 \"CSKOI8R\",\n+ 675 \"EUCKR\",\n+ 676 \"cp850\",\n+ 677 \"cp936\",\n+ 678 \"cp950\",\n+ 679 \"EUC-KR\",\n+ 680 \"cp1254\",\n+ 681 \"ECMA-114\",\n+ 682 \"eucKR\",\n+ 683 \"CP1252\",\n+ 684 \"IBM862\",\n+ 685 \"CSISO159JISX02121990\",\n+ 686 \"cp874\",\n+ 687 \"ISO646-JP\",\n+ 688 \"CSASCII\",\n+ 689 \"EUCCN\",\n+ 690 \"UCS-4LE\",\n+ 691 \"IBM850\",\n+ 692 \"GREEK\",\n+ 693 \"ISO646-US\",\n+ 694 \"EUC-CN\",\n+ 695 \"TIS620\",\n+ 696 \"mac\",\n+ 697 \"LATIN3\",\n+ 698 \"CP1250\",\n+ 699 \"cp1252\",\n+ 700 \"UCS-2LE\",\n+ 701 \"CSISOLATIN1\",\n+ 702 \"TIS-620\",\n+ 703 \"TCVN5712-1\",\n+ 704 \"CSISOLATIN5\",\n+ 705 \"GB_1988-80\",\n+ 706 \"CP932\",\n+ 707 \"ASMO-708\",\n+ 708 \"CP1257\",\n+ 709 \"KOI8-T\",\n+ 710 \"cp1250\",\n+ 711 \"HP-ROMAN8\",\n+ 712 \"MS_KANJI\",\n+ 713 \"CSVISCII\",\n+ 714 \"CSISOLATIN6\",\n+ 715 \"KSC_5601\",\n+ 716 \"SHIFT-JIS\",\n+ 717 \"ISO-IR-203\",\n+ 718 \"cp932\",\n+ 719 \"JOHAB\",\n+ 720 \"cp1257\",\n+ 721 \"ARMSCII-8\",\n+ 722 \"ISO_646.IRV:1991\",\n+ 723 \"TCVN-5712\",\n+ 724 \"EUCJP\",\n+ 725 \"UTF8\",\n+ 726 \"X0201\",\n+ 727 \"GB2312\",\n+ 728 \"X0208\",\n+ 729 \"ISO-2022-KR\",\n+ 730 \"MS-CYRL\",\n+ 731 \"ISO-2022-JP-1\",\n+ 732 \"EUC-JP\",\n+ 733 \"UTF-8\",\n+ 734 \"VISCII1.1-1\",\n+ 735 \"CP367\",\n+ 736 \"CP1253\",\n+ 737 \"eucJP\",\n+ 738 \"mac_cyr\",\n+ 739 \"US-ASCII\",\n+ 740 \"SHIFT_JIS\",\n+ 741 \"CSISOLATIN4\",\n+ 742 \"TIS620-0\",\n+ 743 \"CSBIG5\",\n+ 744 \"ISO-2022-CN\",\n+ 745 \"CP437\",\n+ 746 \"CN-BIG5\",\n+ 747 \"cp1253\",\n+ 748 \"ARABIC\",\n+ 749 \"X0212\",\n+ 750 \"CSISO14JISC6220RO\",\n+ 751 \"GB18030\",\n+ 752 \"UCS-4BE\",\n+ 753 \"CSISOLATIN2\",\n+ 754 \"GEORGIAN-PS\",\n+ 755 \"KS_C_5601-1989\",\n+ 756 \"CP1133\",\n+ 757 \"cp437\",\n+ 758 \"ISO-2022-JP-2\",\n+ 759 \"IBM367\",\n+ 760 \"UCS-2BE\",\n+ 761 \"UNICODE-1-1\",\n+ 762 \"JIS_C6220-1969-RO\",\n+ 763 \"MS-ARAB\",\n+ 764 \"IBM437\",\n+ 765 \"MAC\",\n+ 766 \"UTF-16LE\",\n+ 767 \"ISO-2022-JP\",\n+ 768 \"CN-GB-ISOIR165\",\n+ 769 \"WINDOWS-1251\",\n+ 770 \"WINDOWS-1258\",\n+ 771 \"WINDOWS-1255\",\n+ 772 \"CSISOLATINARABIC\",\n+ 773 \"MS-HEBR\",\n+ 774 \"CYRILLIC\",\n+ 775 \"JIS_C6226-1983\",\n+ 776 \"WINDOWS-1256\",\n+ 777 \"KS_C_5601-1987\",\n+ 778 \"UHC\",\n+ 779 \"BIGFIVE\",\n+ 780 \"CN-GB\",\n+ 781 \"GEORGIAN-ACADEMY\",\n+ 782 \"BIG-FIVE\",\n+ 783 \"CSIBM866\",\n+ 784 \"UTF7\",\n+ 785 \"WINDOWS-1254\",\n+ 786 \"CSISOLATIN3\",\n+ 787 \"UNICODE-1-1-UTF-7\",\n+ 788 \"CSISO57GB1988\",\n+ 789 \"UTF-7\",\n+ 790 \"GB_2312-80\",\n+ 791 \"CSISO2022KR\",\n+ 792 \"WINDOWS-1252\",\n+ 793 \"KOI8-U\",\n+ 794 \"ISO_8859-8:1988\",\n+ 795 \"ISO_8859-5:1988\",\n+ 796 \"ISO_8859-9:1989\",\n+ 797 \"WINDOWS-1250\",\n+ 798 \"MACICELAND\",\n+ 799 \"CSISOLATINGREEK\",\n+ 800 \"ISO-2022-CN-EXT\",\n+ 801 \"JIS_X0201\",\n+ 802 \"JISX0201-1976\",\n+ 803 \"JIS_X0208\",\n+ 804 \"WINDOWS-1257\",\n+ 805 \"CSISO2022CN\",\n+ 806 \"MS-GREEK\",\n+ 807 \"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE\",\n+ 808 \"KOI8-RU\",\n+ 809 \"TIS620.2529-1\",\n+ 810 \"MACROMAN\",\n+ 811 \"WINDOWS-874\",\n+ 812 \"ISO_8859-4:1988\",\n+ 813 \"CSKSC56011987\",\n+ 814 \"WINDOWS-1253\",\n+ 815 \"UTF-16BE\",\n+ 816 \"CSISO87JISX0208\",\n+ 817 \"CSISO2022JP2\",\n+ 818 \"JIS_X0212\",\n+ 819 \"MACROMANIA\",\n+ 820 \"CSUNICODE11\",\n+ 821 \"MACTHAI\",\n+ 822 \"UTF-32LE\",\n+ 823 \"CSHPROMAN8\",\n+ 824 \"ISO_8859-1:1987\",\n+ 825 \"BIG5HKSCS\",\n+ 826 \"ISO_8859-6:1987\",\n+ 827 \"JIS_X0212-1990\",\n+ 828 \"CSISO2022JP\",\n+ 829 \"BIG5-HKSCS\",\n+ 830 \"CSSHIFTJIS\",\n+ 831 \"ISO_8859-3:1988\",\n+ 832 \"JIS_X0208-1990\",\n+ 833 \"CSISOLATINHEBREW\",\n+ 834 \"CSISOLATINCYRILLIC\",\n+ 835 \"ISO-CELTIC\",\n+ 836 \"HZ-GB-2312\",\n+ 837 \"ANSI_X3.4-1968\",\n+ 838 \"HEBREW\",\n+ 839 \"ISO_8859-2:1987\",\n+ 840 \"CSISO58GB231280\",\n+ 841 \"CSGB2312\",\n+ 842 \"ANSI_X3.4-1986\",\n+ 843 \"CSUNICODE11UTF7\",\n+ 844 \"JIS_X0208-1983\",\n+ 845 \"ISO_8859-7:1987\",\n+ 846 \"EUCTW\",\n+ 847 \"CSEUCKR\",\n+ 848 \"EUC-TW\",\n+ 849 \"MACCROATIAN\",\n+ 850 \"eucTW\",\n+ 851 \"TIS620.2533-1\",\n+ 852 \"MACGREEK\",\n+ 853 \"UTF-32BE\",\n+ 854 \"MACINTOSH\",\n+ 855 \"UNICODELITTLE\",\n+ 856 \"MS-TURK\",\n+ 857 \"MACUKRAINE\",\n+ 858 \"IBM-CP1133\",\n+ 859 \"MACCENTRALEUROPE\",\n+ 860 \"NEXTSTEP\",\n+ 861 \"TIS620.2533-0\",\n+ 862 \"JIS_X0212.1990-0\",\n+ 863 \"MACARABIC\",\n+ 864 \"UNICODEBIG\",\n+ 865 \"CSPC862LATINHEBREW\",\n+ 866 \"MACCYRILLIC\",\n+ 867 \"WINBALTRIM\",\n+ 868 \"TCVN5712-1:1993\",\n+ 869 \"CSMACINTOSH\",\n+ 870 \"CSHALFWIDTHKATAKANA\",\n+ 871 \"MACHEBREW\",\n+ 872 \"MACTURKISH\",\n+ 873 \"CSPC850MULTILINGUAL\",\n+ 874 \"CSEUCTW\",\n+ 875 \"CSEUCPKDFMTJAPANESE\"\n+ 876 };\n+ 877#define stringpool ((const char *) &stringpool_contents)\n+ 878const struct charset_alias *\n+ 879charset_lookup (register const char *str, register size_t len)\n+ 880{\n+ 881 static const struct charset_alias wordlist[] =\n+ 882 {\n+ 883 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 884 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 885 {-1,-1}, {-1,-1}, {-1,-1},\n+ 886#line 228 \"charset_lookup.gperf\"\n+ 887 {(int)offsetof(struct stringpool_t, stringpool_str15), 0},\n+ 888#line 235 \"charset_lookup.gperf\"\n+ 889 {(int)offsetof(struct stringpool_t, stringpool_str16), 47},\n+ 890#line 232 \"charset_lookup.gperf\"\n+ 891 {(int)offsetof(struct stringpool_t, stringpool_str17), 57},\n+ 892 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 893 {-1,-1}, {-1,-1}, {-1,-1},\n+ 894#line 233 \"charset_lookup.gperf\"\n+ 895 {(int)offsetof(struct stringpool_t, stringpool_str27), 45},\n+ 896#line 272 \"charset_lookup.gperf\"\n+ 897 {(int)offsetof(struct stringpool_t, stringpool_str28), 84},\n+ 898 {-1,-1},\n+ 899#line 375 \"charset_lookup.gperf\"\n+ 900 {(int)offsetof(struct stringpool_t, stringpool_str30), 65},\n+ 901#line 359 \"charset_lookup.gperf\"\n+ 902 {(int)offsetof(struct stringpool_t, stringpool_str31), 84},\n+ 903 {-1,-1}, {-1,-1}, {-1,-1},\n+ 904#line 268 \"charset_lookup.gperf\"\n+ 905 {(int)offsetof(struct stringpool_t, stringpool_str35), 83},\n+ 906#line 337 \"charset_lookup.gperf\"\n+ 907 {(int)offsetof(struct stringpool_t, stringpool_str36), 0},\n+ 908 {-1,-1},\n+ 909#line 345 \"charset_lookup.gperf\"\n+ 910 {(int)offsetof(struct stringpool_t, stringpool_str38), 56},\n+ 911#line 372 \"charset_lookup.gperf\"\n+ 912 {(int)offsetof(struct stringpool_t, stringpool_str39), 48},\n+ 913#line 342 \"charset_lookup.gperf\"\n+ 914 {(int)offsetof(struct stringpool_t, stringpool_str40), 53},\n+ 915#line 360 \"charset_lookup.gperf\"\n+ 916 {(int)offsetof(struct stringpool_t, stringpool_str41), 61},\n+ 917#line 356 \"charset_lookup.gperf\"\n+ 918 {(int)offsetof(struct stringpool_t, stringpool_str42), 57},\n+ 919#line 357 \"charset_lookup.gperf\"\n+ 920 {(int)offsetof(struct stringpool_t, stringpool_str43), 83},\n+ 921#line 231 \"charset_lookup.gperf\"\n+ 922 {(int)offsetof(struct stringpool_t, stringpool_str44), 52},\n+ 923#line 362 \"charset_lookup.gperf\"\n+ 924 {(int)offsetof(struct stringpool_t, stringpool_str45), 1},\n+ 925#line 10 \"charset_lookup.gperf\"\n+ 926 {(int)offsetof(struct stringpool_t, stringpool_str46), 26},\n+ 927#line 338 \"charset_lookup.gperf\"\n+ 928 {(int)offsetof(struct stringpool_t, stringpool_str47), 48},\n+ 929#line 318 \"charset_lookup.gperf\"\n+ 930 {(int)offsetof(struct stringpool_t, stringpool_str48), 5},\n+ 931 {-1,-1},\n+ 932#line 358 \"charset_lookup.gperf\"\n+ 933 {(int)offsetof(struct stringpool_t, stringpool_str50), 83},\n+ 934 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 935#line 229 \"charset_lookup.gperf\"\n+ 936 {(int)offsetof(struct stringpool_t, stringpool_str56), 50},\n+ 937#line 7 \"charset_lookup.gperf\"\n+ 938 {(int)offsetof(struct stringpool_t, stringpool_str57), 88},\n+ 939 {-1,-1}, {-1,-1},\n+ 940#line 343 \"charset_lookup.gperf\"\n+ 941 {(int)offsetof(struct stringpool_t, stringpool_str60), 54},\n+ 942 {-1,-1}, {-1,-1},\n+ 943#line 346 \"charset_lookup.gperf\"\n+ 944 {(int)offsetof(struct stringpool_t, stringpool_str63), 0},\n+ 945 {-1,-1},\n+ 946#line 354 \"charset_lookup.gperf\"\n+ 947 {(int)offsetof(struct stringpool_t, stringpool_str65), 56},\n+ 948#line 374 \"charset_lookup.gperf\"\n+ 949 {(int)offsetof(struct stringpool_t, stringpool_str66), 0},\n+ 950#line 351 \"charset_lookup.gperf\"\n+ 951 {(int)offsetof(struct stringpool_t, stringpool_str67), 53},\n+ 952 {-1,-1},\n+ 953#line 355 \"charset_lookup.gperf\"\n+ 954 {(int)offsetof(struct stringpool_t, stringpool_str69), 57},\n+ 955#line 368 \"charset_lookup.gperf\"\n+ 956 {(int)offsetof(struct stringpool_t, stringpool_str70), 55},\n+ 957#line 168 \"charset_lookup.gperf\"\n+ 958 {(int)offsetof(struct stringpool_t, stringpool_str71), 0},\n+ 959#line 234 \"charset_lookup.gperf\"\n+ 960 {(int)offsetof(struct stringpool_t, stringpool_str72), 46},\n+ 961#line 176 \"charset_lookup.gperf\"\n+ 962 {(int)offsetof(struct stringpool_t, stringpool_str73), 56},\n+ 963#line 347 \"charset_lookup.gperf\"\n+ 964 {(int)offsetof(struct stringpool_t, stringpool_str74), 48},\n+ 965#line 173 \"charset_lookup.gperf\"\n+ 966 {(int)offsetof(struct stringpool_t, stringpool_str75), 53},\n+ 967 {-1,-1},\n+ 968#line 177 \"charset_lookup.gperf\"\n+ 969 {(int)offsetof(struct stringpool_t, stringpool_str77), 57},\n+ 970 {-1,-1},\n+ 971#line 127 \"charset_lookup.gperf\"\n+ 972 {(int)offsetof(struct stringpool_t, stringpool_str79), 0},\n+ 973 {-1,-1},\n+ 974#line 139 \"charset_lookup.gperf\"\n+ 975 {(int)offsetof(struct stringpool_t, stringpool_str81), 56},\n+ 976#line 170 \"charset_lookup.gperf\"\n+ 977 {(int)offsetof(struct stringpool_t, stringpool_str82), 48},\n+ 978#line 136 \"charset_lookup.gperf\"\n+ 979 {(int)offsetof(struct stringpool_t, stringpool_str83), 53},\n+ 980 {-1,-1},\n+ 981#line 140 \"charset_lookup.gperf\"\n+ 982 {(int)offsetof(struct stringpool_t, stringpool_str85), 57},\n+ 983 {-1,-1},\n+ 984#line 352 \"charset_lookup.gperf\"\n+ 985 {(int)offsetof(struct stringpool_t, stringpool_str87), 54},\n+ 986 {-1,-1},\n+ 987#line 162 \"charset_lookup.gperf\"\n+ 988 {(int)offsetof(struct stringpool_t, stringpool_str89), 8},\n+ 989#line 131 \"charset_lookup.gperf\"\n+ 990 {(int)offsetof(struct stringpool_t, stringpool_str90), 48},\n+ 991#line 206 \"charset_lookup.gperf\"\n+ 992 {(int)offsetof(struct stringpool_t, stringpool_str91), 63},\n+ 993#line 230 \"charset_lookup.gperf\"\n+ 994 {(int)offsetof(struct stringpool_t, stringpool_str92), 51},\n+ 995#line 371 \"charset_lookup.gperf\"\n+ 996 {(int)offsetof(struct stringpool_t, stringpool_str93), 47},\n+ 997#line 341 \"charset_lookup.gperf\"\n+ 998 {(int)offsetof(struct stringpool_t, stringpool_str94), 52},\n+ 999#line 174 \"charset_lookup.gperf\"\n+ 1000 {(int)offsetof(struct stringpool_t, stringpool_str95), 54},\n+ 1001 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1002#line 154 \"charset_lookup.gperf\"\n+ 1003 {(int)offsetof(struct stringpool_t, stringpool_str100), 60},\n+ 1004#line 158 \"charset_lookup.gperf\"\n+ 1005 {(int)offsetof(struct stringpool_t, stringpool_str101), 47},\n+ 1006#line 163 \"charset_lookup.gperf\"\n+ 1007 {(int)offsetof(struct stringpool_t, stringpool_str102), 88},\n+ 1008#line 137 \"charset_lookup.gperf\"\n+ 1009 {(int)offsetof(struct stringpool_t, stringpool_str103), 54},\n+ 1010#line 9 \"charset_lookup.gperf\"\n+ 1011 {(int)offsetof(struct stringpool_t, stringpool_str104), 25},\n+ 1012#line 112 \"charset_lookup.gperf\"\n+ 1013 {(int)offsetof(struct stringpool_t, stringpool_str105), 38},\n+ 1014 {-1,-1},\n+ 1015#line 373 \"charset_lookup.gperf\"\n+ 1016 {(int)offsetof(struct stringpool_t, stringpool_str107), 88},\n+ 1017#line 155 \"charset_lookup.gperf\"\n+ 1018 {(int)offsetof(struct stringpool_t, stringpool_str108), 11},\n+ 1019#line 179 \"charset_lookup.gperf\"\n+ 1020 {(int)offsetof(struct stringpool_t, stringpool_str109), 0},\n+ 1021#line 132 \"charset_lookup.gperf\"\n+ 1022 {(int)offsetof(struct stringpool_t, stringpool_str110), 49},\n+ 1023#line 202 \"charset_lookup.gperf\"\n+ 1024 {(int)offsetof(struct stringpool_t, stringpool_str111), 56},\n+ 1025 {-1,-1},\n+ 1026#line 196 \"charset_lookup.gperf\"\n+ 1027 {(int)offsetof(struct stringpool_t, stringpool_str113), 53},\n+ 1028 {-1,-1},\n+ 1029#line 204 \"charset_lookup.gperf\"\n+ 1030 {(int)offsetof(struct stringpool_t, stringpool_str115), 57},\n+ 1031#line 219 \"charset_lookup.gperf\"\n+ 1032 {(int)offsetof(struct stringpool_t, stringpool_str116), 58},\n+ 1033 {-1,-1},\n+ 1034#line 339 \"charset_lookup.gperf\"\n+ 1035 {(int)offsetof(struct stringpool_t, stringpool_str118), 50},\n+ 1036 {-1,-1},\n+ 1037#line 185 \"charset_lookup.gperf\"\n+ 1038 {(int)offsetof(struct stringpool_t, stringpool_str120), 48},\n+ 1039#line 350 \"charset_lookup.gperf\"\n+ 1040 {(int)offsetof(struct stringpool_t, stringpool_str121), 52},\n+ 1041#line 8 \"charset_lookup.gperf\"\n+ 1042 {(int)offsetof(struct stringpool_t, stringpool_str122), 24},\n+ 1043#line 151 \"charset_lookup.gperf\"\n+ 1044 {(int)offsetof(struct stringpool_t, stringpool_str123), 57},\n+ 1045#line 186 \"charset_lookup.gperf\"\n+ 1046 {(int)offsetof(struct stringpool_t, stringpool_str124), 48},\n+ 1047 {-1,-1}, {-1,-1},\n+ 1048#line 152 \"charset_lookup.gperf\"\n+ 1049 {(int)offsetof(struct stringpool_t, stringpool_str127), 59},\n+ 1050#line 156 \"charset_lookup.gperf\"\n+ 1051 {(int)offsetof(struct stringpool_t, stringpool_str128), 61},\n+ 1052#line 172 \"charset_lookup.gperf\"\n+ 1053 {(int)offsetof(struct stringpool_t, stringpool_str129), 52},\n+ 1054 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1055#line 198 \"charset_lookup.gperf\"\n+ 1056 {(int)offsetof(struct stringpool_t, stringpool_str133), 54},\n+ 1057 {-1,-1},\n+ 1058#line 369 \"charset_lookup.gperf\"\n+ 1059 {(int)offsetof(struct stringpool_t, stringpool_str135), 45},\n+ 1060#line 25 \"charset_lookup.gperf\"\n+ 1061 {(int)offsetof(struct stringpool_t, stringpool_str136), 9},\n+ 1062#line 135 \"charset_lookup.gperf\"\n+ 1063 {(int)offsetof(struct stringpool_t, stringpool_str137), 52},\n+ 1064 {-1,-1}, {-1,-1},\n+ 1065#line 187 \"charset_lookup.gperf\"\n+ 1066 {(int)offsetof(struct stringpool_t, stringpool_str140), 49},\n+ 1067#line 224 \"charset_lookup.gperf\"\n+ 1068 {(int)offsetof(struct stringpool_t, stringpool_str141), 59},\n+ 1069#line 143 \"charset_lookup.gperf\"\n+ 1070 {(int)offsetof(struct stringpool_t, stringpool_str142), 50},\n+ 1071#line 149 \"charset_lookup.gperf\"\n+ 1072 {(int)offsetof(struct stringpool_t, stringpool_str143), 58},\n+ 1073#line 130 \"charset_lookup.gperf\"\n+ 1074 {(int)offsetof(struct stringpool_t, stringpool_str144), 47},\n+ 1075#line 348 \"charset_lookup.gperf\"\n+ 1076 {(int)offsetof(struct stringpool_t, stringpool_str145), 50},\n+ 1077#line 220 \"charset_lookup.gperf\"\n+ 1078 {(int)offsetof(struct stringpool_t, stringpool_str146), 65},\n+ 1079 {-1,-1},\n+ 1080#line 144 \"charset_lookup.gperf\"\n+ 1081 {(int)offsetof(struct stringpool_t, stringpool_str148), 51},\n+ 1082#line 23 \"charset_lookup.gperf\"\n+ 1083 {(int)offsetof(struct stringpool_t, stringpool_str149), 7},\n+ 1084#line 344 \"charset_lookup.gperf\"\n+ 1085 {(int)offsetof(struct stringpool_t, stringpool_str150), 55},\n+ 1086#line 184 \"charset_lookup.gperf\"\n+ 1087 {(int)offsetof(struct stringpool_t, stringpool_str151), 47},\n+ 1088#line 236 \"charset_lookup.gperf\"\n+ 1089 {(int)offsetof(struct stringpool_t, stringpool_str152), 0},\n+ 1090#line 171 \"charset_lookup.gperf\"\n+ 1091 {(int)offsetof(struct stringpool_t, stringpool_str153), 50},\n+ 1092#line 243 \"charset_lookup.gperf\"\n+ 1093 {(int)offsetof(struct stringpool_t, stringpool_str154), 47},\n+ 1094#line 157 \"charset_lookup.gperf\"\n+ 1095 {(int)offsetof(struct stringpool_t, stringpool_str155), 46},\n+ 1096#line 240 \"charset_lookup.gperf\"\n+ 1097 {(int)offsetof(struct stringpool_t, stringpool_str156), 57},\n+ 1098#line 146 \"charset_lookup.gperf\"\n+ 1099 {(int)offsetof(struct stringpool_t, stringpool_str157), 55},\n+ 1100#line 15 \"charset_lookup.gperf\"\n+ 1101 {(int)offsetof(struct stringpool_t, stringpool_str158), 88},\n+ 1102 {-1,-1}, {-1,-1},\n+ 1103#line 133 \"charset_lookup.gperf\"\n+ 1104 {(int)offsetof(struct stringpool_t, stringpool_str161), 50},\n+ 1105 {-1,-1}, {-1,-1},\n+ 1106#line 42 \"charset_lookup.gperf\"\n+ 1107 {(int)offsetof(struct stringpool_t, stringpool_str164), 0},\n+ 1108 {-1,-1}, {-1,-1},\n+ 1109#line 194 \"charset_lookup.gperf\"\n+ 1110 {(int)offsetof(struct stringpool_t, stringpool_str167), 52},\n+ 1111 {-1,-1}, {-1,-1},\n+ 1112#line 273 \"charset_lookup.gperf\"\n+ 1113 {(int)offsetof(struct stringpool_t, stringpool_str170), 85},\n+ 1114#line 148 \"charset_lookup.gperf\"\n+ 1115 {(int)offsetof(struct stringpool_t, stringpool_str171), 56},\n+ 1116 {-1,-1},\n+ 1117#line 336 \"charset_lookup.gperf\"\n+ 1118 {(int)offsetof(struct stringpool_t, stringpool_str173), 8},\n+ 1119#line 183 \"charset_lookup.gperf\"\n+ 1120 {(int)offsetof(struct stringpool_t, stringpool_str174), 47},\n+ 1121 {-1,-1},\n+ 1122#line 241 \"charset_lookup.gperf\"\n+ 1123 {(int)offsetof(struct stringpool_t, stringpool_str176), 45},\n+ 1124#line 353 \"charset_lookup.gperf\"\n+ 1125 {(int)offsetof(struct stringpool_t, stringpool_str177), 55},\n+ 1126#line 169 \"charset_lookup.gperf\"\n+ 1127 {(int)offsetof(struct stringpool_t, stringpool_str178), 45},\n+ 1128#line 150 \"charset_lookup.gperf\"\n+ 1129 {(int)offsetof(struct stringpool_t, stringpool_str179), 53},\n+ 1130 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1131#line 188 \"charset_lookup.gperf\"\n+ 1132 {(int)offsetof(struct stringpool_t, stringpool_str183), 49},\n+ 1133 {-1,-1},\n+ 1134#line 175 \"charset_lookup.gperf\"\n+ 1135 {(int)offsetof(struct stringpool_t, stringpool_str185), 55},\n+ 1136#line 128 \"charset_lookup.gperf\"\n+ 1137 {(int)offsetof(struct stringpool_t, stringpool_str186), 45},\n+ 1138 {-1,-1}, {-1,-1},\n+ 1139#line 370 \"charset_lookup.gperf\"\n+ 1140 {(int)offsetof(struct stringpool_t, stringpool_str189), 46},\n+ 1141#line 340 \"charset_lookup.gperf\"\n+ 1142 {(int)offsetof(struct stringpool_t, stringpool_str190), 51},\n+ 1143#line 190 \"charset_lookup.gperf\"\n+ 1144 {(int)offsetof(struct stringpool_t, stringpool_str191), 50},\n+ 1145#line 145 \"charset_lookup.gperf\"\n+ 1146 {(int)offsetof(struct stringpool_t, stringpool_str192), 52},\n+ 1147#line 138 \"charset_lookup.gperf\"\n+ 1148 {(int)offsetof(struct stringpool_t, stringpool_str193), 55},\n+ 1149#line 45 \"charset_lookup.gperf\"\n+ 1150 {(int)offsetof(struct stringpool_t, stringpool_str194), 26},\n+ 1151#line 49 \"charset_lookup.gperf\"\n+ 1152 {(int)offsetof(struct stringpool_t, stringpool_str195), 30},\n+ 1153#line 361 \"charset_lookup.gperf\"\n+ 1154 {(int)offsetof(struct stringpool_t, stringpool_str196), 61},\n+ 1155#line 302 \"charset_lookup.gperf\"\n+ 1156 {(int)offsetof(struct stringpool_t, stringpool_str197), 94},\n+ 1157#line 160 \"charset_lookup.gperf\"\n+ 1158 {(int)offsetof(struct stringpool_t, stringpool_str198), 49},\n+ 1159#line 292 \"charset_lookup.gperf\"\n+ 1160 {(int)offsetof(struct stringpool_t, stringpool_str199), 88},\n+ 1161#line 164 \"charset_lookup.gperf\"\n+ 1162 {(int)offsetof(struct stringpool_t, stringpool_str200), 62},\n+ 1163#line 161 \"charset_lookup.gperf\"\n+ 1164 {(int)offsetof(struct stringpool_t, stringpool_str201), 9},\n+ 1165#line 117 \"charset_lookup.gperf\"\n+ 1166 {(int)offsetof(struct stringpool_t, stringpool_str202), 0},\n+ 1167#line 379 \"charset_lookup.gperf\"\n+ 1168 {(int)offsetof(struct stringpool_t, stringpool_str203), 78},\n+ 1169#line 258 \"charset_lookup.gperf\"\n+ 1170 {(int)offsetof(struct stringpool_t, stringpool_str204), 15},\n+ 1171#line 380 \"charset_lookup.gperf\"\n+ 1172 {(int)offsetof(struct stringpool_t, stringpool_str205), 79},\n+ 1173 {-1,-1},\n+ 1174#line 31 \"charset_lookup.gperf\"\n+ 1175 {(int)offsetof(struct stringpool_t, stringpool_str207), 14},\n+ 1176#line 153 \"charset_lookup.gperf\"\n+ 1177 {(int)offsetof(struct stringpool_t, stringpool_str208), 45},\n+ 1178#line 38 \"charset_lookup.gperf\"\n+ 1179 {(int)offsetof(struct stringpool_t, stringpool_str209), 21},\n+ 1180#line 239 \"charset_lookup.gperf\"\n+ 1181 {(int)offsetof(struct stringpool_t, stringpool_str210), 52},\n+ 1182#line 35 \"charset_lookup.gperf\"\n+ 1183 {(int)offsetof(struct stringpool_t, stringpool_str211), 18},\n+ 1184#line 181 \"charset_lookup.gperf\"\n+ 1185 {(int)offsetof(struct stringpool_t, stringpool_str212), 45},\n+ 1186#line 331 \"charset_lookup.gperf\"\n+ 1187 {(int)offsetof(struct stringpool_t, stringpool_str213), 26},\n+ 1188#line 366 \"charset_lookup.gperf\"\n+ 1189 {(int)offsetof(struct stringpool_t, stringpool_str214), 30},\n+ 1190 {-1,-1},\n+ 1191#line 180 \"charset_lookup.gperf\"\n+ 1192 {(int)offsetof(struct stringpool_t, stringpool_str216), 45},\n+ 1193#line 349 \"charset_lookup.gperf\"\n+ 1194 {(int)offsetof(struct stringpool_t, stringpool_str217), 51},\n+ 1195#line 269 \"charset_lookup.gperf\"\n+ 1196 {(int)offsetof(struct stringpool_t, stringpool_str218), 83},\n+ 1197#line 24 \"charset_lookup.gperf\"\n+ 1198 {(int)offsetof(struct stringpool_t, stringpool_str219), 8},\n+ 1199#line 207 \"charset_lookup.gperf\"\n+ 1200 {(int)offsetof(struct stringpool_t, stringpool_str220), 62},\n+ 1201 {-1,-1}, {-1,-1},\n+ 1202#line 200 \"charset_lookup.gperf\"\n+ 1203 {(int)offsetof(struct stringpool_t, stringpool_str223), 55},\n+ 1204 {-1,-1},\n+ 1205#line 378 \"charset_lookup.gperf\"\n+ 1206 {(int)offsetof(struct stringpool_t, stringpool_str225), 74},\n+ 1207#line 320 \"charset_lookup.gperf\"\n+ 1208 {(int)offsetof(struct stringpool_t, stringpool_str226), 14},\n+ 1209#line 363 \"charset_lookup.gperf\"\n+ 1210 {(int)offsetof(struct stringpool_t, stringpool_str227), 0},\n+ 1211#line 327 \"charset_lookup.gperf\"\n+ 1212 {(int)offsetof(struct stringpool_t, stringpool_str228), 21},\n+ 1213#line 90 \"charset_lookup.gperf\"\n+ 1214 {(int)offsetof(struct stringpool_t, stringpool_str229), 55},\n+ 1215#line 324 \"charset_lookup.gperf\"\n+ 1216 {(int)offsetof(struct stringpool_t, stringpool_str230), 18},\n+ 1217#line 36 \"charset_lookup.gperf\"\n+ 1218 {(int)offsetof(struct stringpool_t, stringpool_str231), 19},\n+ 1219#line 120 \"charset_lookup.gperf\"\n+ 1220 {(int)offsetof(struct stringpool_t, stringpool_str232), 26},\n+ 1221#line 134 \"charset_lookup.gperf\"\n+ 1222 {(int)offsetof(struct stringpool_t, stringpool_str233), 51},\n+ 1223#line 237 \"charset_lookup.gperf\"\n+ 1224 {(int)offsetof(struct stringpool_t, stringpool_str234), 50},\n+ 1225#line 19 \"charset_lookup.gperf\"\n+ 1226 {(int)offsetof(struct stringpool_t, stringpool_str235), 5},\n+ 1227#line 266 \"charset_lookup.gperf\"\n+ 1228 {(int)offsetof(struct stringpool_t, stringpool_str236), 81},\n+ 1229#line 261 \"charset_lookup.gperf\"\n+ 1230 {(int)offsetof(struct stringpool_t, stringpool_str237), 13},\n+ 1231 {-1,-1},\n+ 1232#line 165 \"charset_lookup.gperf\"\n+ 1233 {(int)offsetof(struct stringpool_t, stringpool_str239), 9},\n+ 1234#line 129 \"charset_lookup.gperf\"\n+ 1235 {(int)offsetof(struct stringpool_t, stringpool_str240), 46},\n+ 1236 {-1,-1},\n+ 1237#line 142 \"charset_lookup.gperf\"\n+ 1238 {(int)offsetof(struct stringpool_t, stringpool_str242), 0},\n+ 1239#line 17 \"charset_lookup.gperf\"\n+ 1240 {(int)offsetof(struct stringpool_t, stringpool_str243), 5},\n+ 1241 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1242#line 147 \"charset_lookup.gperf\"\n+ 1243 {(int)offsetof(struct stringpool_t, stringpool_str247), 54},\n+ 1244#line 109 \"charset_lookup.gperf\"\n+ 1245 {(int)offsetof(struct stringpool_t, stringpool_str248), 55},\n+ 1246 {-1,-1},\n+ 1247#line 325 \"charset_lookup.gperf\"\n+ 1248 {(int)offsetof(struct stringpool_t, stringpool_str250), 19},\n+ 1249 {-1,-1},\n+ 1250#line 44 \"charset_lookup.gperf\"\n+ 1251 {(int)offsetof(struct stringpool_t, stringpool_str252), 25},\n+ 1252#line 39 \"charset_lookup.gperf\"\n+ 1253 {(int)offsetof(struct stringpool_t, stringpool_str253), 22},\n+ 1254 {-1,-1},\n+ 1255#line 103 \"charset_lookup.gperf\"\n+ 1256 {(int)offsetof(struct stringpool_t, stringpool_str255), 29},\n+ 1257 {-1,-1}, {-1,-1},\n+ 1258#line 91 \"charset_lookup.gperf\"\n+ 1259 {(int)offsetof(struct stringpool_t, stringpool_str258), 55},\n+ 1260 {-1,-1},\n+ 1261#line 43 \"charset_lookup.gperf\"\n+ 1262 {(int)offsetof(struct stringpool_t, stringpool_str260), 24},\n+ 1263#line 48 \"charset_lookup.gperf\"\n+ 1264 {(int)offsetof(struct stringpool_t, stringpool_str261), 29},\n+ 1265#line 50 \"charset_lookup.gperf\"\n+ 1266 {(int)offsetof(struct stringpool_t, stringpool_str262), 31},\n+ 1267#line 192 \"charset_lookup.gperf\"\n+ 1268 {(int)offsetof(struct stringpool_t, stringpool_str263), 51},\n+ 1269 {-1,-1},\n+ 1270#line 34 \"charset_lookup.gperf\"\n+ 1271 {(int)offsetof(struct stringpool_t, stringpool_str265), 17},\n+ 1272#line 242 \"charset_lookup.gperf\"\n+ 1273 {(int)offsetof(struct stringpool_t, stringpool_str266), 46},\n+ 1274 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1275#line 182 \"charset_lookup.gperf\"\n+ 1276 {(int)offsetof(struct stringpool_t, stringpool_str270), 46},\n+ 1277#line 330 \"charset_lookup.gperf\"\n+ 1278 {(int)offsetof(struct stringpool_t, stringpool_str271), 25},\n+ 1279 {-1,-1},\n+ 1280#line 46 \"charset_lookup.gperf\"\n+ 1281 {(int)offsetof(struct stringpool_t, stringpool_str273), 27},\n+ 1282#line 79 \"charset_lookup.gperf\"\n+ 1283 {(int)offsetof(struct stringpool_t, stringpool_str274), 65},\n+ 1284#line 98 \"charset_lookup.gperf\"\n+ 1285 {(int)offsetof(struct stringpool_t, stringpool_str275), 33},\n+ 1286 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1287#line 329 \"charset_lookup.gperf\"\n+ 1288 {(int)offsetof(struct stringpool_t, stringpool_str279), 24},\n+ 1289#line 365 \"charset_lookup.gperf\"\n+ 1290 {(int)offsetof(struct stringpool_t, stringpool_str280), 29},\n+ 1291#line 367 \"charset_lookup.gperf\"\n+ 1292 {(int)offsetof(struct stringpool_t, stringpool_str281), 31},\n+ 1293 {-1,-1},\n+ 1294#line 94 \"charset_lookup.gperf\"\n+ 1295 {(int)offsetof(struct stringpool_t, stringpool_str283), 33},\n+ 1296#line 323 \"charset_lookup.gperf\"\n+ 1297 {(int)offsetof(struct stringpool_t, stringpool_str284), 17},\n+ 1298#line 89 \"charset_lookup.gperf\"\n+ 1299 {(int)offsetof(struct stringpool_t, stringpool_str285), 54},\n+ 1300 {-1,-1}, {-1,-1},\n+ 1301#line 334 \"charset_lookup.gperf\"\n+ 1302 {(int)offsetof(struct stringpool_t, stringpool_str288), 33},\n+ 1303#line 32 \"charset_lookup.gperf\"\n+ 1304 {(int)offsetof(struct stringpool_t, stringpool_str289), 15},\n+ 1305#line 119 \"charset_lookup.gperf\"\n+ 1306 {(int)offsetof(struct stringpool_t, stringpool_str290), 25},\n+ 1307#line 61 \"charset_lookup.gperf\"\n+ 1308 {(int)offsetof(struct stringpool_t, stringpool_str291), 60},\n+ 1309#line 332 \"charset_lookup.gperf\"\n+ 1310 {(int)offsetof(struct stringpool_t, stringpool_str292), 27},\n+ 1311#line 166 \"charset_lookup.gperf\"\n+ 1312 {(int)offsetof(struct stringpool_t, stringpool_str293), 58},\n+ 1313#line 51 \"charset_lookup.gperf\"\n+ 1314 {(int)offsetof(struct stringpool_t, stringpool_str294), 88},\n+ 1315#line 96 \"charset_lookup.gperf\"\n+ 1316 {(int)offsetof(struct stringpool_t, stringpool_str295), 10},\n+ 1317 {-1,-1},\n+ 1318#line 286 \"charset_lookup.gperf\"\n+ 1319 {(int)offsetof(struct stringpool_t, stringpool_str297), 87},\n+ 1320#line 118 \"charset_lookup.gperf\"\n+ 1321 {(int)offsetof(struct stringpool_t, stringpool_str298), 24},\n+ 1322 {-1,-1}, {-1,-1},\n+ 1323#line 108 \"charset_lookup.gperf\"\n+ 1324 {(int)offsetof(struct stringpool_t, stringpool_str301), 55},\n+ 1325#line 167 \"charset_lookup.gperf\"\n+ 1326 {(int)offsetof(struct stringpool_t, stringpool_str302), 88},\n+ 1327#line 92 \"charset_lookup.gperf\"\n+ 1328 {(int)offsetof(struct stringpool_t, stringpool_str303), 10},\n+ 1329#line 278 \"charset_lookup.gperf\"\n+ 1330 {(int)offsetof(struct stringpool_t, stringpool_str304), 61},\n+ 1331#line 376 \"charset_lookup.gperf\"\n+ 1332 {(int)offsetof(struct stringpool_t, stringpool_str305), 69},\n+ 1333#line 238 \"charset_lookup.gperf\"\n+ 1334 {(int)offsetof(struct stringpool_t, stringpool_str306), 51},\n+ 1335#line 30 \"charset_lookup.gperf\"\n+ 1336 {(int)offsetof(struct stringpool_t, stringpool_str307), 13},\n+ 1337#line 321 \"charset_lookup.gperf\"\n+ 1338 {(int)offsetof(struct stringpool_t, stringpool_str308), 15},\n+ 1339#line 284 \"charset_lookup.gperf\"\n+ 1340 {(int)offsetof(struct stringpool_t, stringpool_str309), 2},\n+ 1341#line 69 \"charset_lookup.gperf\"\n+ 1342 {(int)offsetof(struct stringpool_t, stringpool_str310), 0},\n+ 1343 {-1,-1},\n+ 1344#line 277 \"charset_lookup.gperf\"\n+ 1345 {(int)offsetof(struct stringpool_t, stringpool_str312), 61},\n+ 1346#line 275 \"charset_lookup.gperf\"\n+ 1347 {(int)offsetof(struct stringpool_t, stringpool_str313), 85},\n+ 1348#line 73 \"charset_lookup.gperf\"\n+ 1349 {(int)offsetof(struct stringpool_t, stringpool_str314), 57},\n+ 1350 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1351#line 104 \"charset_lookup.gperf\"\n+ 1352 {(int)offsetof(struct stringpool_t, stringpool_str318), 9},\n+ 1353#line 47 \"charset_lookup.gperf\"\n+ 1354 {(int)offsetof(struct stringpool_t, stringpool_str319), 28},\n+ 1355#line 16 \"charset_lookup.gperf\"\n+ 1356 {(int)offsetof(struct stringpool_t, stringpool_str320), 54},\n+ 1357#line 37 \"charset_lookup.gperf\"\n+ 1358 {(int)offsetof(struct stringpool_t, stringpool_str321), 20},\n+ 1359 {-1,-1}, {-1,-1},\n+ 1360#line 222 \"charset_lookup.gperf\"\n+ 1361 {(int)offsetof(struct stringpool_t, stringpool_str324), 67},\n+ 1362 {-1,-1},\n+ 1363#line 319 \"charset_lookup.gperf\"\n+ 1364 {(int)offsetof(struct stringpool_t, stringpool_str326), 13},\n+ 1365 {-1,-1}, {-1,-1},\n+ 1366#line 111 \"charset_lookup.gperf\"\n+ 1367 {(int)offsetof(struct stringpool_t, stringpool_str329), 83},\n+ 1368 {-1,-1},\n+ 1369#line 265 \"charset_lookup.gperf\"\n+ 1370 {(int)offsetof(struct stringpool_t, stringpool_str331), 84},\n+ 1371 {-1,-1},\n+ 1372#line 87 \"charset_lookup.gperf\"\n+ 1373 {(int)offsetof(struct stringpool_t, stringpool_str333), 94},\n+ 1374#line 74 \"charset_lookup.gperf\"\n+ 1375 {(int)offsetof(struct stringpool_t, stringpool_str334), 45},\n+ 1376#line 225 \"charset_lookup.gperf\"\n+ 1377 {(int)offsetof(struct stringpool_t, stringpool_str335), 59},\n+ 1378#line 270 \"charset_lookup.gperf\"\n+ 1379 {(int)offsetof(struct stringpool_t, stringpool_str336), 84},\n+ 1380#line 159 \"charset_lookup.gperf\"\n+ 1381 {(int)offsetof(struct stringpool_t, stringpool_str337), 48},\n+ 1382#line 364 \"charset_lookup.gperf\"\n+ 1383 {(int)offsetof(struct stringpool_t, stringpool_str338), 28},\n+ 1384#line 218 \"charset_lookup.gperf\"\n+ 1385 {(int)offsetof(struct stringpool_t, stringpool_str339), 22},\n+ 1386#line 326 \"charset_lookup.gperf\"\n+ 1387 {(int)offsetof(struct stringpool_t, stringpool_str340), 20},\n+ 1388 {-1,-1},\n+ 1389#line 14 \"charset_lookup.gperf\"\n+ 1390 {(int)offsetof(struct stringpool_t, stringpool_str342), 4},\n+ 1391 {-1,-1}, {-1,-1},\n+ 1392#line 178 \"charset_lookup.gperf\"\n+ 1393 {(int)offsetof(struct stringpool_t, stringpool_str345), 88},\n+ 1394 {-1,-1},\n+ 1395#line 274 \"charset_lookup.gperf\"\n+ 1396 {(int)offsetof(struct stringpool_t, stringpool_str347), 85},\n+ 1397 {-1,-1},\n+ 1398#line 97 \"charset_lookup.gperf\"\n+ 1399 {(int)offsetof(struct stringpool_t, stringpool_str349), 32},\n+ 1400#line 301 \"charset_lookup.gperf\"\n+ 1401 {(int)offsetof(struct stringpool_t, stringpool_str350), 1},\n+ 1402#line 315 \"charset_lookup.gperf\"\n+ 1403 {(int)offsetof(struct stringpool_t, stringpool_str351), 64},\n+ 1404#line 102 \"charset_lookup.gperf\"\n+ 1405 {(int)offsetof(struct stringpool_t, stringpool_str352), 10},\n+ 1406#line 316 \"charset_lookup.gperf\"\n+ 1407 {(int)offsetof(struct stringpool_t, stringpool_str353), 62},\n+ 1408#line 126 \"charset_lookup.gperf\"\n+ 1409 {(int)offsetof(struct stringpool_t, stringpool_str354), 44},\n+ 1410#line 260 \"charset_lookup.gperf\"\n+ 1411 {(int)offsetof(struct stringpool_t, stringpool_str355), 14},\n+ 1412#line 124 \"charset_lookup.gperf\"\n+ 1413 {(int)offsetof(struct stringpool_t, stringpool_str356), 42},\n+ 1414#line 93 \"charset_lookup.gperf\"\n+ 1415 {(int)offsetof(struct stringpool_t, stringpool_str357), 32},\n+ 1416#line 299 \"charset_lookup.gperf\"\n+ 1417 {(int)offsetof(struct stringpool_t, stringpool_str358), 1},\n+ 1418#line 303 \"charset_lookup.gperf\"\n+ 1419 {(int)offsetof(struct stringpool_t, stringpool_str359), 94},\n+ 1420#line 40 \"charset_lookup.gperf\"\n+ 1421 {(int)offsetof(struct stringpool_t, stringpool_str360), 88},\n+ 1422#line 33 \"charset_lookup.gperf\"\n+ 1423 {(int)offsetof(struct stringpool_t, stringpool_str361), 16},\n+ 1424#line 333 \"charset_lookup.gperf\"\n+ 1425 {(int)offsetof(struct stringpool_t, stringpool_str362), 32},\n+ 1426 {-1,-1},\n+ 1427#line 377 \"charset_lookup.gperf\"\n+ 1428 {(int)offsetof(struct stringpool_t, stringpool_str364), 73},\n+ 1429#line 293 \"charset_lookup.gperf\"\n+ 1430 {(int)offsetof(struct stringpool_t, stringpool_str365), 88},\n+ 1431#line 271 \"charset_lookup.gperf\"\n+ 1432 {(int)offsetof(struct stringpool_t, stringpool_str366), 84},\n+ 1433 {-1,-1},\n+ 1434#line 72 \"charset_lookup.gperf\"\n+ 1435 {(int)offsetof(struct stringpool_t, stringpool_str368), 52},\n+ 1436#line 279 \"charset_lookup.gperf\"\n+ 1437 {(int)offsetof(struct stringpool_t, stringpool_str369), 61},\n+ 1438 {-1,-1},\n+ 1439#line 52 \"charset_lookup.gperf\"\n+ 1440 {(int)offsetof(struct stringpool_t, stringpool_str371), 5},\n+ 1441 {-1,-1}, {-1,-1},\n+ 1442#line 121 \"charset_lookup.gperf\"\n+ 1443 {(int)offsetof(struct stringpool_t, stringpool_str374), 39},\n+ 1444 {-1,-1}, {-1,-1},\n+ 1445#line 41 \"charset_lookup.gperf\"\n+ 1446 {(int)offsetof(struct stringpool_t, stringpool_str377), 23},\n+ 1447 {-1,-1},\n+ 1448#line 26 \"charset_lookup.gperf\"\n+ 1449 {(int)offsetof(struct stringpool_t, stringpool_str379), 5},\n+ 1450#line 322 \"charset_lookup.gperf\"\n+ 1451 {(int)offsetof(struct stringpool_t, stringpool_str380), 16},\n+ 1452#line 13 \"charset_lookup.gperf\"\n+ 1453 {(int)offsetof(struct stringpool_t, stringpool_str381), 54},\n+ 1454 {-1,-1},\n+ 1455#line 317 \"charset_lookup.gperf\"\n+ 1456 {(int)offsetof(struct stringpool_t, stringpool_str383), 60},\n+ 1457#line 60 \"charset_lookup.gperf\"\n+ 1458 {(int)offsetof(struct stringpool_t, stringpool_str384), 58},\n+ 1459 {-1,-1}, {-1,-1},\n+ 1460#line 101 \"charset_lookup.gperf\"\n+ 1461 {(int)offsetof(struct stringpool_t, stringpool_str387), 35},\n+ 1462 {-1,-1},\n+ 1463#line 285 \"charset_lookup.gperf\"\n+ 1464 {(int)offsetof(struct stringpool_t, stringpool_str389), 86},\n+ 1465 {-1,-1}, {-1,-1},\n+ 1466#line 70 \"charset_lookup.gperf\"\n+ 1467 {(int)offsetof(struct stringpool_t, stringpool_str392), 50},\n+ 1468#line 107 \"charset_lookup.gperf\"\n+ 1469 {(int)offsetof(struct stringpool_t, stringpool_str393), 37},\n+ 1470#line 227 \"charset_lookup.gperf\"\n+ 1471 {(int)offsetof(struct stringpool_t, stringpool_str394), 59},\n+ 1472#line 29 \"charset_lookup.gperf\"\n+ 1473 {(int)offsetof(struct stringpool_t, stringpool_str395), 12},\n+ 1474#line 328 \"charset_lookup.gperf\"\n+ 1475 {(int)offsetof(struct stringpool_t, stringpool_str396), 23},\n+ 1476#line 125 \"charset_lookup.gperf\"\n+ 1477 {(int)offsetof(struct stringpool_t, stringpool_str397), 43},\n+ 1478#line 115 \"charset_lookup.gperf\"\n+ 1479 {(int)offsetof(struct stringpool_t, stringpool_str398), 88},\n+ 1480 {-1,-1}, {-1,-1},\n+ 1481#line 283 \"charset_lookup.gperf\"\n+ 1482 {(int)offsetof(struct stringpool_t, stringpool_str401), 3},\n+ 1483#line 288 \"charset_lookup.gperf\"\n+ 1484 {(int)offsetof(struct stringpool_t, stringpool_str402), 3},\n+ 1485 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1486#line 209 \"charset_lookup.gperf\"\n+ 1487 {(int)offsetof(struct stringpool_t, stringpool_str409), 58},\n+ 1488 {-1,-1},\n+ 1489#line 259 \"charset_lookup.gperf\"\n+ 1490 {(int)offsetof(struct stringpool_t, stringpool_str411), 19},\n+ 1491 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1492#line 116 \"charset_lookup.gperf\"\n+ 1493 {(int)offsetof(struct stringpool_t, stringpool_str415), 23},\n+ 1494 {-1,-1}, {-1,-1},\n+ 1495#line 244 \"charset_lookup.gperf\"\n+ 1496 {(int)offsetof(struct stringpool_t, stringpool_str418), 69},\n+ 1497 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1498#line 295 \"charset_lookup.gperf\"\n+ 1499 {(int)offsetof(struct stringpool_t, stringpool_str422), 90},\n+ 1500 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1501#line 123 \"charset_lookup.gperf\"\n+ 1502 {(int)offsetof(struct stringpool_t, stringpool_str428), 41},\n+ 1503#line 28 \"charset_lookup.gperf\"\n+ 1504 {(int)offsetof(struct stringpool_t, stringpool_str429), 11},\n+ 1505 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1506#line 306 \"charset_lookup.gperf\"\n+ 1507 {(int)offsetof(struct stringpool_t, stringpool_str434), 14},\n+ 1508#line 313 \"charset_lookup.gperf\"\n+ 1509 {(int)offsetof(struct stringpool_t, stringpool_str435), 21},\n+ 1510#line 310 \"charset_lookup.gperf\"\n+ 1511 {(int)offsetof(struct stringpool_t, stringpool_str436), 18},\n+ 1512 {-1,-1},\n+ 1513#line 75 \"charset_lookup.gperf\"\n+ 1514 {(int)offsetof(struct stringpool_t, stringpool_str438), 54},\n+ 1515 {-1,-1}, {-1,-1},\n+ 1516#line 263 \"charset_lookup.gperf\"\n+ 1517 {(int)offsetof(struct stringpool_t, stringpool_str441), 18},\n+ 1518 {-1,-1}, {-1,-1},\n+ 1519#line 88 \"charset_lookup.gperf\"\n+ 1520 {(int)offsetof(struct stringpool_t, stringpool_str444), 53},\n+ 1521#line 210 \"charset_lookup.gperf\"\n+ 1522 {(int)offsetof(struct stringpool_t, stringpool_str445), 62},\n+ 1523#line 311 \"charset_lookup.gperf\"\n+ 1524 {(int)offsetof(struct stringpool_t, stringpool_str446), 19},\n+ 1525 {-1,-1},\n+ 1526#line 226 \"charset_lookup.gperf\"\n+ 1527 {(int)offsetof(struct stringpool_t, stringpool_str448), 59},\n+ 1528 {-1,-1},\n+ 1529#line 287 \"charset_lookup.gperf\"\n+ 1530 {(int)offsetof(struct stringpool_t, stringpool_str450), 30},\n+ 1531 {-1,-1},\n+ 1532#line 22 \"charset_lookup.gperf\"\n+ 1533 {(int)offsetof(struct stringpool_t, stringpool_str452), 5},\n+ 1534 {-1,-1},\n+ 1535#line 27 \"charset_lookup.gperf\"\n+ 1536 {(int)offsetof(struct stringpool_t, stringpool_str454), 10},\n+ 1537#line 106 \"charset_lookup.gperf\"\n+ 1538 {(int)offsetof(struct stringpool_t, stringpool_str455), 36},\n+ 1539 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1540#line 18 \"charset_lookup.gperf\"\n+ 1541 {(int)offsetof(struct stringpool_t, stringpool_str460), 5},\n+ 1542#line 59 \"charset_lookup.gperf\"\n+ 1543 {(int)offsetof(struct stringpool_t, stringpool_str461), 26},\n+ 1544#line 300 \"charset_lookup.gperf\"\n+ 1545 {(int)offsetof(struct stringpool_t, stringpool_str462), 93},\n+ 1546#line 309 \"charset_lookup.gperf\"\n+ 1547 {(int)offsetof(struct stringpool_t, stringpool_str463), 17},\n+ 1548#line 71 \"charset_lookup.gperf\"\n+ 1549 {(int)offsetof(struct stringpool_t, stringpool_str464), 51},\n+ 1550#line 289 \"charset_lookup.gperf\"\n+ 1551 {(int)offsetof(struct stringpool_t, stringpool_str465), 93},\n+ 1552 {-1,-1},\n+ 1553#line 66 \"charset_lookup.gperf\"\n+ 1554 {(int)offsetof(struct stringpool_t, stringpool_str467), 9},\n+ 1555 {-1,-1}, {-1,-1},\n+ 1556#line 298 \"charset_lookup.gperf\"\n+ 1557 {(int)offsetof(struct stringpool_t, stringpool_str470), 93},\n+ 1558 {-1,-1},\n+ 1559#line 105 \"charset_lookup.gperf\"\n+ 1560 {(int)offsetof(struct stringpool_t, stringpool_str472), 8},\n+ 1561 {-1,-1},\n+ 1562#line 65 \"charset_lookup.gperf\"\n+ 1563 {(int)offsetof(struct stringpool_t, stringpool_str474), 44},\n+ 1564#line 307 \"charset_lookup.gperf\"\n+ 1565 {(int)offsetof(struct stringpool_t, stringpool_str475), 15},\n+ 1566#line 223 \"charset_lookup.gperf\"\n+ 1567 {(int)offsetof(struct stringpool_t, stringpool_str476), 68},\n+ 1568 {-1,-1}, {-1,-1},\n+ 1569#line 203 \"charset_lookup.gperf\"\n+ 1570 {(int)offsetof(struct stringpool_t, stringpool_str479), 56},\n+ 1571#line 197 \"charset_lookup.gperf\"\n+ 1572 {(int)offsetof(struct stringpool_t, stringpool_str480), 53},\n+ 1573 {-1,-1}, {-1,-1},\n+ 1574#line 205 \"charset_lookup.gperf\"\n+ 1575 {(int)offsetof(struct stringpool_t, stringpool_str483), 57},\n+ 1576#line 305 \"charset_lookup.gperf\"\n+ 1577 {(int)offsetof(struct stringpool_t, stringpool_str484), 13},\n+ 1578#line 251 \"charset_lookup.gperf\"\n+ 1579 {(int)offsetof(struct stringpool_t, stringpool_str485), 76},\n+ 1580#line 77 \"charset_lookup.gperf\"\n+ 1581 {(int)offsetof(struct stringpool_t, stringpool_str486), 55},\n+ 1582#line 122 \"charset_lookup.gperf\"\n+ 1583 {(int)offsetof(struct stringpool_t, stringpool_str487), 40},\n+ 1584#line 211 \"charset_lookup.gperf\"\n+ 1585 {(int)offsetof(struct stringpool_t, stringpool_str488), 64},\n+ 1586#line 208 \"charset_lookup.gperf\"\n+ 1587 {(int)offsetof(struct stringpool_t, stringpool_str489), 64},\n+ 1588#line 212 \"charset_lookup.gperf\"\n+ 1589 {(int)offsetof(struct stringpool_t, stringpool_str490), 62},\n+ 1590#line 312 \"charset_lookup.gperf\"\n+ 1591 {(int)offsetof(struct stringpool_t, stringpool_str491), 20},\n+ 1592 {-1,-1}, {-1,-1},\n+ 1593#line 62 \"charset_lookup.gperf\"\n+ 1594 {(int)offsetof(struct stringpool_t, stringpool_str494), 39},\n+ 1595 {-1,-1},\n+ 1596#line 262 \"charset_lookup.gperf\"\n+ 1597 {(int)offsetof(struct stringpool_t, stringpool_str496), 16},\n+ 1598 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1599#line 100 \"charset_lookup.gperf\"\n+ 1600 {(int)offsetof(struct stringpool_t, stringpool_str500), 32},\n+ 1601 {-1,-1}, {-1,-1},\n+ 1602#line 221 \"charset_lookup.gperf\"\n+ 1603 {(int)offsetof(struct stringpool_t, stringpool_str503), 66},\n+ 1604#line 280 \"charset_lookup.gperf\"\n+ 1605 {(int)offsetof(struct stringpool_t, stringpool_str504), 61},\n+ 1606#line 253 \"charset_lookup.gperf\"\n+ 1607 {(int)offsetof(struct stringpool_t, stringpool_str505), 69},\n+ 1608#line 314 \"charset_lookup.gperf\"\n+ 1609 {(int)offsetof(struct stringpool_t, stringpool_str506), 27},\n+ 1610#line 195 \"charset_lookup.gperf\"\n+ 1611 {(int)offsetof(struct stringpool_t, stringpool_str507), 52},\n+ 1612 {-1,-1},\n+ 1613#line 80 \"charset_lookup.gperf\"\n+ 1614 {(int)offsetof(struct stringpool_t, stringpool_str509), 59},\n+ 1615 {-1,-1},\n+ 1616#line 308 \"charset_lookup.gperf\"\n+ 1617 {(int)offsetof(struct stringpool_t, stringpool_str511), 16},\n+ 1618 {-1,-1}, {-1,-1},\n+ 1619#line 294 \"charset_lookup.gperf\"\n+ 1620 {(int)offsetof(struct stringpool_t, stringpool_str514), 89},\n+ 1621#line 68 \"charset_lookup.gperf\"\n+ 1622 {(int)offsetof(struct stringpool_t, stringpool_str515), 62},\n+ 1623#line 64 \"charset_lookup.gperf\"\n+ 1624 {(int)offsetof(struct stringpool_t, stringpool_str516), 43},\n+ 1625 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1626#line 215 \"charset_lookup.gperf\"\n+ 1627 {(int)offsetof(struct stringpool_t, stringpool_str520), 60},\n+ 1628#line 254 \"charset_lookup.gperf\"\n+ 1629 {(int)offsetof(struct stringpool_t, stringpool_str521), 77},\n+ 1630#line 85 \"charset_lookup.gperf\"\n+ 1631 {(int)offsetof(struct stringpool_t, stringpool_str522), 3},\n+ 1632#line 255 \"charset_lookup.gperf\"\n+ 1633 {(int)offsetof(struct stringpool_t, stringpool_str523), 78},\n+ 1634 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1635#line 297 \"charset_lookup.gperf\"\n+ 1636 {(int)offsetof(struct stringpool_t, stringpool_str528), 92},\n+ 1637 {-1,-1}, {-1,-1},\n+ 1638#line 58 \"charset_lookup.gperf\"\n+ 1639 {(int)offsetof(struct stringpool_t, stringpool_str531), 83},\n+ 1640 {-1,-1}, {-1,-1},\n+ 1641#line 189 \"charset_lookup.gperf\"\n+ 1642 {(int)offsetof(struct stringpool_t, stringpool_str534), 0},\n+ 1643 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1644#line 21 \"charset_lookup.gperf\"\n+ 1645 {(int)offsetof(struct stringpool_t, stringpool_str541), 6},\n+ 1646 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1647#line 199 \"charset_lookup.gperf\"\n+ 1648 {(int)offsetof(struct stringpool_t, stringpool_str546), 54},\n+ 1649#line 216 \"charset_lookup.gperf\"\n+ 1650 {(int)offsetof(struct stringpool_t, stringpool_str547), 60},\n+ 1651#line 63 \"charset_lookup.gperf\"\n+ 1652 {(int)offsetof(struct stringpool_t, stringpool_str548), 41},\n+ 1653#line 20 \"charset_lookup.gperf\"\n+ 1654 {(int)offsetof(struct stringpool_t, stringpool_str549), 6},\n+ 1655 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1656#line 84 \"charset_lookup.gperf\"\n+ 1657 {(int)offsetof(struct stringpool_t, stringpool_str553), 84},\n+ 1658 {-1,-1},\n+ 1659#line 193 \"charset_lookup.gperf\"\n+ 1660 {(int)offsetof(struct stringpool_t, stringpool_str555), 51},\n+ 1661 {-1,-1},\n+ 1662#line 214 \"charset_lookup.gperf\"\n+ 1663 {(int)offsetof(struct stringpool_t, stringpool_str557), 62},\n+ 1664 {-1,-1}, {-1,-1},\n+ 1665#line 78 \"charset_lookup.gperf\"\n+ 1666 {(int)offsetof(struct stringpool_t, stringpool_str560), 56},\n+ 1667#line 76 \"charset_lookup.gperf\"\n+ 1668 {(int)offsetof(struct stringpool_t, stringpool_str561), 53},\n+ 1669 {-1,-1},\n+ 1670#line 141 \"charset_lookup.gperf\"\n+ 1671 {(int)offsetof(struct stringpool_t, stringpool_str563), 47},\n+ 1672#line 113 \"charset_lookup.gperf\"\n+ 1673 {(int)offsetof(struct stringpool_t, stringpool_str564), 38},\n+ 1674 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1675#line 11 \"charset_lookup.gperf\"\n+ 1676 {(int)offsetof(struct stringpool_t, stringpool_str571), 88},\n+ 1677#line 110 \"charset_lookup.gperf\"\n+ 1678 {(int)offsetof(struct stringpool_t, stringpool_str572), 56},\n+ 1679 {-1,-1}, {-1,-1},\n+ 1680#line 191 \"charset_lookup.gperf\"\n+ 1681 {(int)offsetof(struct stringpool_t, stringpool_str575), 50},\n+ 1682 {-1,-1},\n+ 1683#line 67 \"charset_lookup.gperf\"\n+ 1684 {(int)offsetof(struct stringpool_t, stringpool_str577), 8},\n+ 1685 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1686#line 56 \"charset_lookup.gperf\"\n+ 1687 {(int)offsetof(struct stringpool_t, stringpool_str581), 10},\n+ 1688#line 12 \"charset_lookup.gperf\"\n+ 1689 {(int)offsetof(struct stringpool_t, stringpool_str582), 88},\n+ 1690#line 86 \"charset_lookup.gperf\"\n+ 1691 {(int)offsetof(struct stringpool_t, stringpool_str583), 93},\n+ 1692#line 213 \"charset_lookup.gperf\"\n+ 1693 {(int)offsetof(struct stringpool_t, stringpool_str584), 62},\n+ 1694 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1695#line 201 \"charset_lookup.gperf\"\n+ 1696 {(int)offsetof(struct stringpool_t, stringpool_str591), 55},\n+ 1697 {-1,-1}, {-1,-1},\n+ 1698#line 99 \"charset_lookup.gperf\"\n+ 1699 {(int)offsetof(struct stringpool_t, stringpool_str594), 34},\n+ 1700 {-1,-1},\n+ 1701#line 53 \"charset_lookup.gperf\"\n+ 1702 {(int)offsetof(struct stringpool_t, stringpool_str596), 33},\n+ 1703 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1704#line 95 \"charset_lookup.gperf\"\n+ 1705 {(int)offsetof(struct stringpool_t, stringpool_str602), 34},\n+ 1706 {-1,-1}, {-1,-1},\n+ 1707#line 247 \"charset_lookup.gperf\"\n+ 1708 {(int)offsetof(struct stringpool_t, stringpool_str605), 72},\n+ 1709 {-1,-1},\n+ 1710#line 335 \"charset_lookup.gperf\"\n+ 1711 {(int)offsetof(struct stringpool_t, stringpool_str607), 34},\n+ 1712 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1713#line 282 \"charset_lookup.gperf\"\n+ 1714 {(int)offsetof(struct stringpool_t, stringpool_str614), 61},\n+ 1715 {-1,-1}, {-1,-1},\n+ 1716#line 249 \"charset_lookup.gperf\"\n+ 1717 {(int)offsetof(struct stringpool_t, stringpool_str617), 74},\n+ 1718 {-1,-1}, {-1,-1},\n+ 1719#line 296 \"charset_lookup.gperf\"\n+ 1720 {(int)offsetof(struct stringpool_t, stringpool_str620), 91},\n+ 1721 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1722#line 252 \"charset_lookup.gperf\"\n+ 1723 {(int)offsetof(struct stringpool_t, stringpool_str625), 69},\n+ 1724 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1725 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1726#line 291 \"charset_lookup.gperf\"\n+ 1727 {(int)offsetof(struct stringpool_t, stringpool_str637), 2},\n+ 1728 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1729#line 264 \"charset_lookup.gperf\"\n+ 1730 {(int)offsetof(struct stringpool_t, stringpool_str641), 17},\n+ 1731 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1732#line 257 \"charset_lookup.gperf\"\n+ 1733 {(int)offsetof(struct stringpool_t, stringpool_str645), 80},\n+ 1734 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1735#line 114 \"charset_lookup.gperf\"\n+ 1736 {(int)offsetof(struct stringpool_t, stringpool_str651), 12},\n+ 1737 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1738#line 246 \"charset_lookup.gperf\"\n+ 1739 {(int)offsetof(struct stringpool_t, stringpool_str658), 71},\n+ 1740 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1741#line 267 \"charset_lookup.gperf\"\n+ 1742 {(int)offsetof(struct stringpool_t, stringpool_str663), 82},\n+ 1743#line 281 \"charset_lookup.gperf\"\n+ 1744 {(int)offsetof(struct stringpool_t, stringpool_str664), 61},\n+ 1745 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1746 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1747#line 217 \"charset_lookup.gperf\"\n+ 1748 {(int)offsetof(struct stringpool_t, stringpool_str674), 60},\n+ 1749 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1750 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1751 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1752 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1753#line 245 \"charset_lookup.gperf\"\n+ 1754 {(int)offsetof(struct stringpool_t, stringpool_str697), 70},\n+ 1755 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1756 {-1,-1}, {-1,-1},\n+ 1757#line 290 \"charset_lookup.gperf\"\n+ 1758 {(int)offsetof(struct stringpool_t, stringpool_str706), 3},\n+ 1759 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1760 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1761 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1762#line 83 \"charset_lookup.gperf\"\n+ 1763 {(int)offsetof(struct stringpool_t, stringpool_str723), 25},\n+ 1764 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1765 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1766 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1767 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1768#line 248 \"charset_lookup.gperf\"\n+ 1769 {(int)offsetof(struct stringpool_t, stringpool_str748), 73},\n+ 1770 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1771 {-1,-1},\n+ 1772#line 304 \"charset_lookup.gperf\"\n+ 1773 {(int)offsetof(struct stringpool_t, stringpool_str756), 20},\n+ 1774 {-1,-1},\n+ 1775#line 276 \"charset_lookup.gperf\"\n+ 1776 {(int)offsetof(struct stringpool_t, stringpool_str758), 85},\n+ 1777 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1778#line 81 \"charset_lookup.gperf\"\n+ 1779 {(int)offsetof(struct stringpool_t, stringpool_str762), 69},\n+ 1780 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1781 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1782 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1783 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1784 {-1,-1},\n+ 1785#line 57 \"charset_lookup.gperf\"\n+ 1786 {(int)offsetof(struct stringpool_t, stringpool_str788), 64},\n+ 1787 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1788 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1789 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1790 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1791 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1792 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1793 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1794 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1795 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1796 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1797 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1798 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1799 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1800 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1801 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1802 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1803#line 250 \"charset_lookup.gperf\"\n+ 1804 {(int)offsetof(struct stringpool_t, stringpool_str884), 75},\n+ 1805 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1806 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1807 {-1,-1}, {-1,-1},\n+ 1808#line 256 \"charset_lookup.gperf\"\n+ 1809 {(int)offsetof(struct stringpool_t, stringpool_str899), 79},\n+ 1810 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1811#line 82 \"charset_lookup.gperf\"\n+ 1812 {(int)offsetof(struct stringpool_t, stringpool_str905), 24},\n+ 1813 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1814 {-1,-1}, {-1,-1}, {-1,-1},\n+ 1815#line 55 \"charset_lookup.gperf\"\n+ 1816 {(int)offsetof(struct stringpool_t, stringpool_str915), 34},\n+ 1817 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1818 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1819 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1820 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1821 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1822 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1823 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1824 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1825 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1826 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1827 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1828 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1829 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1830 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1831 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1832 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1833 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1834 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1835 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1836 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1837 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1838 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1839 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1840 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1841 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1842 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1843 {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1},\n+ 1844 {-1,-1},\n+ 1845#line 54 \"charset_lookup.gperf\"\n+ 1846 {(int)offsetof(struct stringpool_t, stringpool_str1079), 32}\n+ 1847 };\n+ 1848\n+ 1849 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n+ 1850 {\n+ 1851 register unsigned int key = hash_charset (str, len);\n+ 1852\n+ 1853 if (key <= MAX_HASH_VALUE)\n+ 1854 {\n+ 1855 register int o = wordlist[key].alias_pos;\n+ 1856 if (o >= 0)\n+ 1857 {\n+ 1858 register const char *s = o + stringpool;\n+ 1859\n+ 1860 if (*str == *s && !strcmp (str + 1, s + 1))\n+ 1861 return &wordlist[key];\n+ 1862 }\n+ 1863 }\n+ 1864 }\n+ 1865 return 0;\n+ 1866}\n+ 1867#line 381 \"charset_lookup.gperf\"\n+ 1868\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00410_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00410_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/string.h Source File\n+FreeTDS API: include/freetds/data.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n
    \n \n \n \n \n \n \n
    \n-
    string.h
    \n+
    data.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n+
    2 * Copyright (C) 2014 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,108 +96,98 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _tdsstring_h_
    \n-
    21#define _tdsstring_h_
    \n+
    20#ifndef _freetds_data_h_
    \n+
    21#define _freetds_data_h_
    \n
    22
    \n-
    23#include <freetds/macros.h>
    \n-
    24
    \n-
    25#include <freetds/pushvis.h>
    \n+
    23#ifndef _tds_h_
    \n+
    24# error Include tds.h before data.h
    \n+
    25#endif
    \n
    26
    \n-
    \n-
    36typedef struct tds_dstr {
    \n-
    37 size_t dstr_size;
    \n-
    38 char dstr_s[1];
    \n-\n-
    \n-
    40
    \n-
    42extern const struct tds_dstr tds_str_empty;
    \n-
    43
    \n-
    49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)
    \n-
    50
    \n-
    52static inline void
    \n-
    \n-\n-
    54{
    \n-
    55 *(s) = DSTR_INITIALIZER;
    \n-
    56}
    \n-
    \n-
    57
    \n-
    59static inline int
    \n-
    \n-\n-
    61{
    \n-
    62 return (*s)->dstr_size == 0;
    \n-
    63}
    \n-
    \n-
    64
    \n-
    70static inline char *
    \n-
    \n-\n-
    72{
    \n-
    73 return (*s)->dstr_s;
    \n-
    74}
    \n-
    \n-
    75
    \n-
    77static inline const char *
    \n-
    \n-\n-
    79{
    \n-
    80 return (*s)->dstr_s;
    \n-
    81}
    \n-
    \n-
    82
    \n-
    84static inline size_t
    \n-
    \n-\n-
    86{
    \n-
    87 return (*s)->dstr_size;
    \n-
    88}
    \n-
    \n-
    89
    \n-
    \n-
    91#define tds_dstr_empty(s) \\
    \n-
    92 tds_dstr_free(s)
    \n-
    \n-
    93
    \n-
    94void tds_dstr_zero(DSTR * s);
    \n-
    95void tds_dstr_free(DSTR * s);
    \n-
    96
    \n-
    97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;
    \n-
    98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;
    \n-
    99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;
    \n-
    100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;
    \n-
    101
    \n-
    102DSTR* tds_dstr_setlen(DSTR *s, size_t length);
    \n-
    103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;
    \n+
    27#include <freetds/pushvis.h>
    \n+
    28
    \n+
    29#define TDS_COMMON_FUNCS(name) \\
    \n+
    30{ \\
    \n+
    31 tds_ ## name ## _get_info, \\
    \n+
    32 tds_ ## name ## _get, \\
    \n+
    33 tds_ ## name ## _row_len, \\
    \n+
    34 tds_ ## name ## _put_info, \\
    \n+
    35 tds_ ## name ## _put, \\
    \n+
    36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \\
    \n+
    37}
    \n+
    38
    \n+
    39tds_func_get_info tds_invalid_get_info;
    \n+
    40tds_func_row_len tds_invalid_row_len;
    \n+
    41tds_func_get_data tds_invalid_get;
    \n+
    42tds_func_put_info tds_invalid_put_info;
    \n+
    43tds_func_put_data tds_invalid_put;
    \n+
    44tds_func_check tds_invalid_check;
    \n+
    45
    \n+
    46tds_func_get_info tds_generic_get_info;
    \n+
    47tds_func_row_len tds_generic_row_len;
    \n+
    48tds_func_get_data tds_generic_get;
    \n+
    49tds_func_put_info tds_generic_put_info;
    \n+
    50tds_func_put_data tds_generic_put;
    \n+
    51tds_func_check tds_generic_check;
    \n+
    52
    \n+
    53tds_func_get_info tds_numeric_get_info;
    \n+
    54tds_func_row_len tds_numeric_row_len;
    \n+
    55tds_func_get_data tds_numeric_get;
    \n+
    56tds_func_put_info tds_numeric_put_info;
    \n+
    57tds_func_put_data tds_numeric_put;
    \n+
    58tds_func_check tds_numeric_check;
    \n+
    59
    \n+
    60#define tds_variant_get_info tds_generic_get_info
    \n+
    61#define tds_variant_row_len tds_generic_row_len
    \n+
    62tds_func_get_data tds_variant_get;
    \n+
    63tds_func_put_info tds_variant_put_info;
    \n+
    64tds_func_put_data tds_variant_put;
    \n+
    65tds_func_check tds_variant_check;
    \n+
    66
    \n+
    67tds_func_get_info tds_msdatetime_get_info;
    \n+
    68tds_func_row_len tds_msdatetime_row_len;
    \n+
    69tds_func_get_data tds_msdatetime_get;
    \n+
    70tds_func_put_info tds_msdatetime_put_info;
    \n+
    71tds_func_put_data tds_msdatetime_put;
    \n+
    72tds_func_check tds_msdatetime_check;
    \n+
    73
    \n+
    74tds_func_get_info tds_clrudt_get_info;
    \n+
    75tds_func_row_len tds_clrudt_row_len;
    \n+
    76#define tds_clrudt_get tds_generic_get
    \n+
    77tds_func_put_info tds_clrudt_put_info;
    \n+
    78#define tds_clrudt_put tds_generic_put
    \n+
    79tds_func_check tds_clrudt_check;
    \n+
    80
    \n+
    81tds_func_get_info tds_sybbigtime_get_info;
    \n+
    82tds_func_row_len tds_sybbigtime_row_len;
    \n+
    83tds_func_get_data tds_sybbigtime_get;
    \n+
    84tds_func_put_info tds_sybbigtime_put_info;
    \n+
    85tds_func_put_data tds_sybbigtime_put;
    \n+
    86tds_func_check tds_sybbigtime_check;
    \n+
    87
    \n+
    92#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
    \n+
    93# define TDS_DEFINE_DEFAULT_FUNCS(name) \\
    \n+
    94 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)
    \n+
    95
    \n+
    96TDS_DEFINE_DEFAULT_FUNCS(invalid);
    \n+
    97TDS_DEFINE_DEFAULT_FUNCS(generic);
    \n+
    98TDS_DEFINE_DEFAULT_FUNCS(numeric);
    \n+
    99TDS_DEFINE_DEFAULT_FUNCS(variant);
    \n+
    100TDS_DEFINE_DEFAULT_FUNCS(msdatetime);
    \n+
    101TDS_DEFINE_DEFAULT_FUNCS(clrudt);
    \n+
    102TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);
    \n+
    103#endif
    \n
    104
    \n-
    107#include <freetds/popvis.h>
    \n-
    108
    \n-
    109#endif /* _tdsstring_h_ */
    \n-
    DSTR * tds_dstr_setlen(DSTR *s, size_t length)
    limit length of string, MUST be <= current length
    Definition tdsstring.c:145
    \n-
    static int tds_dstr_isempty(const DSTR *s)
    test if string is empty
    Definition string.h:60
    \n-
    void tds_dstr_zero(DSTR *s)
    clear all string filling with zeroes (mainly for security reason)
    Definition tdsstring.c:55
    \n-
    static size_t tds_dstr_len(const DSTR *s)
    Returns the length of the string in bytes.
    Definition string.h:85
    \n-
    DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)
    Duplicate a string from another dynamic string.
    Definition tdsstring.c:134
    \n-
    #define DSTR_INITIALIZER
    Initializer, used to initialize string like in the following example.
    Definition string.h:49
    \n-
    DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)
    Set string to a given buffer of characters.
    Definition tdsstring.c:77
    \n-
    const struct tds_dstr tds_str_empty
    Internal representation for an empty string.
    Definition tdsstring.c:45
    \n-
    DSTR * tds_dstr_alloc(DSTR *s, size_t length)
    allocate space for length char
    Definition tdsstring.c:165
    \n-
    static void tds_dstr_init(DSTR *s)
    init a string with empty
    Definition string.h:53
    \n-
    DSTR * tds_dstr_set(DSTR *s, char *src)
    set a string from another buffer.
    Definition tdsstring.c:107
    \n-
    static const char * tds_dstr_cstr(const DSTR *s)
    Returns a C version (NUL terminated string) of dstr.
    Definition string.h:78
    \n-
    void tds_dstr_free(DSTR *s)
    free string
    Definition tdsstring.c:62
    \n-
    DSTR * tds_dstr_copy(DSTR *s, const char *src)
    copy a string from another
    Definition tdsstring.c:122
    \n-
    static char * tds_dstr_buf(DSTR *s)
    Returns a buffer to edit the string.
    Definition string.h:71
    \n-
    struct tds_dstr * DSTR
    Structure to hold a string.
    \n-
    Structure to hold a string.
    Definition string.h:36
    \n+
    105#include <freetds/popvis.h>
    \n+
    106
    \n+
    107#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,18 +7,17 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-string.h\n+data.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n+ 2 * Copyright (C) 2014 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -28,139 +27,94 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _tdsstring_h_\n- 21#define _tdsstring_h_\n+ 20#ifndef _freetds_data_h_\n+ 21#define _freetds_data_h_\n 22\n- 23#include \n- 24\n- 25#include \n+ 23#ifndef _tds_h_\n+ 24# error Include tds.h before data.h\n+ 25#endif\n 26\n-36typedef struct tds_dstr {\n- 37 size_t dstr_size;\n- 38 char dstr_s[1];\n-39} *DSTR;\n- 40\n- 42extern const struct tds_dstr tds_str_empty;\n- 43\n-49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)\n- 50\n- 52static inline void\n-53tds_dstr_init(DSTR * s)\n- 54{\n- 55 *(s) = DSTR_INITIALIZER;\n- 56}\n- 57\n- 59static inline int\n-60tds_dstr_isempty(const DSTR * s)\n- 61{\n- 62 return (*s)->dstr_size == 0;\n- 63}\n- 64\n- 70static inline char *\n-71tds_dstr_buf(DSTR * s)\n- 72{\n- 73 return (*s)->dstr_s;\n- 74}\n- 75\n- 77static inline const char *\n-78tds_dstr_cstr(const DSTR * s)\n- 79{\n- 80 return (*s)->dstr_s;\n- 81}\n- 82\n- 84static inline size_t\n-85tds_dstr_len(const DSTR * s)\n- 86{\n- 87 return (*s)->dstr_size;\n- 88}\n- 89\n-91#define tds_dstr_empty(s) \\\n- 92 tds_dstr_free(s)\n- 93\n- 94void tds_dstr_zero(DSTR * s);\n- 95void tds_dstr_free(DSTR * s);\n- 96\n- 97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;\n- 98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;\n- 99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;\n- 100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;\n- 101\n- 102DSTR* tds_dstr_setlen(DSTR *s, size_t length);\n- 103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;\n+ 27#include \n+ 28\n+ 29#define TDS_COMMON_FUNCS(name) \\\n+ 30{ \\\n+ 31 tds_ ## name ## _get_info, \\\n+ 32 tds_ ## name ## _get, \\\n+ 33 tds_ ## name ## _row_len, \\\n+ 34 tds_ ## name ## _put_info, \\\n+ 35 tds_ ## name ## _put, \\\n+ 36 TDS_EXTRA_CHECK(tds_ ## name ## _check) \\\n+ 37}\n+ 38\n+ 39tds_func_get_info tds_invalid_get_info;\n+ 40tds_func_row_len tds_invalid_row_len;\n+ 41tds_func_get_data tds_invalid_get;\n+ 42tds_func_put_info tds_invalid_put_info;\n+ 43tds_func_put_data tds_invalid_put;\n+ 44tds_func_check tds_invalid_check;\n+ 45\n+ 46tds_func_get_info tds_generic_get_info;\n+ 47tds_func_row_len tds_generic_row_len;\n+ 48tds_func_get_data tds_generic_get;\n+ 49tds_func_put_info tds_generic_put_info;\n+ 50tds_func_put_data tds_generic_put;\n+ 51tds_func_check tds_generic_check;\n+ 52\n+ 53tds_func_get_info tds_numeric_get_info;\n+ 54tds_func_row_len tds_numeric_row_len;\n+ 55tds_func_get_data tds_numeric_get;\n+ 56tds_func_put_info tds_numeric_put_info;\n+ 57tds_func_put_data tds_numeric_put;\n+ 58tds_func_check tds_numeric_check;\n+ 59\n+ 60#define tds_variant_get_info tds_generic_get_info\n+ 61#define tds_variant_row_len tds_generic_row_len\n+ 62tds_func_get_data tds_variant_get;\n+ 63tds_func_put_info tds_variant_put_info;\n+ 64tds_func_put_data tds_variant_put;\n+ 65tds_func_check tds_variant_check;\n+ 66\n+ 67tds_func_get_info tds_msdatetime_get_info;\n+ 68tds_func_row_len tds_msdatetime_row_len;\n+ 69tds_func_get_data tds_msdatetime_get;\n+ 70tds_func_put_info tds_msdatetime_put_info;\n+ 71tds_func_put_data tds_msdatetime_put;\n+ 72tds_func_check tds_msdatetime_check;\n+ 73\n+ 74tds_func_get_info tds_clrudt_get_info;\n+ 75tds_func_row_len tds_clrudt_row_len;\n+ 76#define tds_clrudt_get tds_generic_get\n+ 77tds_func_put_info tds_clrudt_put_info;\n+ 78#define tds_clrudt_put tds_generic_put\n+ 79tds_func_check tds_clrudt_check;\n+ 80\n+ 81tds_func_get_info tds_sybbigtime_get_info;\n+ 82tds_func_row_len tds_sybbigtime_row_len;\n+ 83tds_func_get_data tds_sybbigtime_get;\n+ 84tds_func_put_info tds_sybbigtime_put_info;\n+ 85tds_func_put_data tds_sybbigtime_put;\n+ 86tds_func_check tds_sybbigtime_check;\n+ 87\n+ 92#ifndef TDS_DONT_DEFINE_DEFAULT_FUNCTIONS\n+ 93# define TDS_DEFINE_DEFAULT_FUNCS(name) \\\n+ 94 const TDSCOLUMNFUNCS tds_ ## name ## _funcs = TDS_COMMON_FUNCS(name)\n+ 95\n+ 96TDS_DEFINE_DEFAULT_FUNCS(invalid);\n+ 97TDS_DEFINE_DEFAULT_FUNCS(generic);\n+ 98TDS_DEFINE_DEFAULT_FUNCS(numeric);\n+ 99TDS_DEFINE_DEFAULT_FUNCS(variant);\n+ 100TDS_DEFINE_DEFAULT_FUNCS(msdatetime);\n+ 101TDS_DEFINE_DEFAULT_FUNCS(clrudt);\n+ 102TDS_DEFINE_DEFAULT_FUNCS(sybbigtime);\n+ 103#endif\n 104\n- 107#include \n- 108\n- 109#endif /* _tdsstring_h_ */\n-tds_dstr_setlen\n-DSTR * tds_dstr_setlen(DSTR *s, size_t length)\n-limit length of string, MUST be <= current length\n-Definition tdsstring.c:145\n-tds_dstr_isempty\n-static int tds_dstr_isempty(const DSTR *s)\n-test if string is empty\n-Definition string.h:60\n-tds_dstr_zero\n-void tds_dstr_zero(DSTR *s)\n-clear all string filling with zeroes (mainly for security reason)\n-Definition tdsstring.c:55\n-tds_dstr_len\n-static size_t tds_dstr_len(const DSTR *s)\n-Returns the length of the string in bytes.\n-Definition string.h:85\n-tds_dstr_dup\n-DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)\n-Duplicate a string from another dynamic string.\n-Definition tdsstring.c:134\n-DSTR_INITIALIZER\n-#define DSTR_INITIALIZER\n-Initializer, used to initialize string like in the following example.\n-Definition string.h:49\n-tds_dstr_copyn\n-DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)\n-Set string to a given buffer of characters.\n-Definition tdsstring.c:77\n-tds_str_empty\n-const struct tds_dstr tds_str_empty\n-Internal representation for an empty string.\n-Definition tdsstring.c:45\n-tds_dstr_alloc\n-DSTR * tds_dstr_alloc(DSTR *s, size_t length)\n-allocate space for length char\n-Definition tdsstring.c:165\n-tds_dstr_init\n-static void tds_dstr_init(DSTR *s)\n-init a string with empty\n-Definition string.h:53\n-tds_dstr_set\n-DSTR * tds_dstr_set(DSTR *s, char *src)\n-set a string from another buffer.\n-Definition tdsstring.c:107\n-tds_dstr_cstr\n-static const char * tds_dstr_cstr(const DSTR *s)\n-Returns a C version (NUL terminated string) of dstr.\n-Definition string.h:78\n-tds_dstr_free\n-void tds_dstr_free(DSTR *s)\n-free string\n-Definition tdsstring.c:62\n-tds_dstr_copy\n-DSTR * tds_dstr_copy(DSTR *s, const char *src)\n-copy a string from another\n-Definition tdsstring.c:122\n-tds_dstr_buf\n-static char * tds_dstr_buf(DSTR *s)\n-Returns a buffer to edit the string.\n-Definition string.h:71\n-DSTR\n-struct tds_dstr * DSTR\n-Structure to hold a string.\n-tds_dstr\n-Structure to hold a string.\n-Definition string.h:36\n+ 105#include \n+ 106\n+ 107#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00413_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00413_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/des.h Source File\n+FreeTDS API: include/freetds/configs.h Source File\n \n \n \n \n \n \n \n@@ -70,68 +70,69 @@\n \n \n \n \n \n \n \n
    \n-
    des.h
    \n+
    configs.h
    \n
    \n
    \n-
    1#ifndef DES_H
    \n-
    2#define DES_H
    \n-
    3
    \n-
    4#ifdef HAVE_NETTLE
    \n-
    5#include <nettle/des.h>
    \n-
    6
    \n-
    7typedef struct des_ctx DES_KEY;
    \n-
    8#endif
    \n-
    9
    \n-
    10#include <freetds/pushvis.h>
    \n-
    11
    \n-
    12typedef uint8_t des_cblock[8];
    \n-
    13
    \n-
    14#ifndef HAVE_NETTLE
    \n-
    \n-
    15typedef struct des_key
    \n-
    16{
    \n-
    17 uint8_t kn[16][8];
    \n-
    18 uint32_t sp[8][64];
    \n-
    19 uint8_t iperm[16][16][8];
    \n-
    20 uint8_t fperm[16][16][8];
    \n-
    21} DES_KEY;
    \n-
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _tds_configs_h_
    \n+
    21#define _tds_configs_h_
    \n
    22
    \n-
    23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len);
    \n-
    24void tds_des_encrypt(const DES_KEY * key, des_cblock block);
    \n-
    25#endif
    \n-
    26
    \n-
    27void tds_des_set_odd_parity(des_cblock key);
    \n-
    28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, uint8_t *output);
    \n-
    29
    \n-
    30#include <freetds/popvis.h>
    \n-
    31
    \n-
    32#ifdef HAVE_NETTLE
    \n-
    33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)
    \n-
    34{
    \n-
    35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);
    \n-
    36}
    \n-
    37
    \n-
    38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len)
    \n-
    39{
    \n-
    40 return nettle_des_set_key(dkey, user_key);
    \n-
    41}
    \n-
    42#endif
    \n-
    43
    \n-
    44#endif /* !DES_H */
    \n-
    Definition des.h:16
    \n+
    23#include <freetds/sysconfdir.h>
    \n+
    24
    \n+
    25#ifndef _tds_h_
    \n+
    26#error freetds/tds.h must be included before freetds/configs.h
    \n+
    27#endif
    \n+
    28
    \n+
    29#ifdef __cplusplus
    \n+
    30extern "C"
    \n+
    31{
    \n+
    32#if 0
    \n+
    33}
    \n+
    34#endif
    \n+
    35#endif
    \n+
    36
    \n+
    37#define FREETDS_SYSCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "freetds.conf"
    \n+
    38#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "pool.conf"
    \n+
    39#define FREETDS_LOCALECONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "locales.conf"
    \n+
    40
    \n+
    41#ifdef __cplusplus
    \n+
    42#if 0
    \n+
    43{
    \n+
    44#endif
    \n+
    45}
    \n+
    46#endif
    \n+
    47
    \n+
    48#endif /* _tds_configs_h_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,60 +7,62 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-des.h\n- 1#ifndef DES_H\n- 2#define DES_H\n- 3\n- 4#ifdef HAVE_NETTLE\n- 5#include \n- 6\n- 7typedef struct des_ctx DES_KEY;\n- 8#endif\n- 9\n- 10#include \n- 11\n- 12typedef uint8_t des_cblock[8];\n- 13\n- 14#ifndef HAVE_NETTLE\n-15typedef struct des_key\n- 16{\n- 17 uint8_t kn[16][8];\n- 18 uint32_t sp[8][64];\n- 19 uint8_t iperm[16][16][8];\n- 20 uint8_t fperm[16][16][8];\n- 21} DES_KEY;\n+configs.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _tds_configs_h_\n+ 21#define _tds_configs_h_\n 22\n- 23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len);\n- 24void tds_des_encrypt(const DES_KEY * key, des_cblock block);\n- 25#endif\n- 26\n- 27void tds_des_set_odd_parity(des_cblock key);\n- 28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey,\n-uint8_t *output);\n- 29\n- 30#include \n- 31\n- 32#ifdef HAVE_NETTLE\n- 33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)\n- 34{\n- 35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);\n- 36}\n- 37\n- 38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key,\n-int len)\n- 39{\n- 40 return nettle_des_set_key(dkey, user_key);\n- 41}\n- 42#endif\n- 43\n- 44#endif /* !DES_H */\n-des_key\n-Definition des.h:16\n+ 23#include \n+ 24\n+ 25#ifndef _tds_h_\n+ 26#error freetds/tds.h must be included before freetds/configs.h\n+ 27#endif\n+ 28\n+ 29#ifdef __cplusplus\n+ 30extern \"C\"\n+ 31{\n+ 32#if 0\n+ 33}\n+ 34#endif\n+ 35#endif\n+ 36\n+ 37#define FREETDS_SYSCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n+\"freetds.conf\"\n+ 38#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n+\"pool.conf\"\n+ 39#define FREETDS_LOCALECONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n+\"locales.conf\"\n+ 40\n+ 41#ifdef __cplusplus\n+ 42#if 0\n+ 43{\n+ 44#endif\n+ 45}\n+ 46#endif\n+ 47\n+ 48#endif /* _tds_configs_h_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00416_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00416_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/md4.h Source File\n+FreeTDS API: include/freetds/checks.h Source File\n \n \n \n \n \n \n \n@@ -70,71 +70,99 @@\n
    \n \n \n \n \n \n \n
    \n-
    md4.h
    \n+
    checks.h
    \n
    \n
    \n-
    1#ifndef MD4_H
    \n-
    2#define MD4_H
    \n-
    3
    \n-
    4#ifndef HAVE_NETTLE
    \n-
    5
    \n-
    6#include <freetds/pushvis.h>
    \n-
    7
    \n-
    \n-\n-
    9{
    \n-
    10 uint32_t buf[4];
    \n-
    11 uint64_t bytes;
    \n-
    12 uint32_t in[16];
    \n-
    13};
    \n-
    \n-
    14
    \n-
    15void MD4Init(struct MD4Context *context);
    \n-
    16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len);
    \n-
    17void MD4Final(struct MD4Context *context, uint8_t *digest);
    \n-
    18
    \n-
    19typedef struct MD4Context MD4_CTX;
    \n-
    20
    \n-
    21#include <freetds/popvis.h>
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 2004 Frediano Ziglio
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef TDS_CHECKS_H
    \n+
    21#define TDS_CHECKS_H
    \n
    22
    \n-
    23#else
    \n+
    23#include <freetds/pushvis.h>
    \n
    24
    \n-
    25#include <nettle/md4.h>
    \n-
    26
    \n-
    27typedef struct md4_ctx MD4_CTX;
    \n-
    28
    \n-
    29static inline void MD4Init(MD4_CTX *ctx)
    \n-
    30{
    \n-
    31 nettle_md4_init(ctx);
    \n-
    32}
    \n-
    33
    \n-
    34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len)
    \n-
    35{
    \n-
    36 nettle_md4_update(ctx, len, buf);
    \n-
    37}
    \n-
    38
    \n-
    39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest)
    \n-
    40{
    \n-
    41 nettle_md4_digest(ctx, 16, digest);
    \n-
    42}
    \n-
    43
    \n-
    44
    \n-
    45#endif
    \n-
    46
    \n-
    47#endif /* !MD4_H */
    \n-
    Definition md4.h:9
    \n+
    25#if ENABLE_EXTRA_CHECKS
    \n+
    26#define CHECK_STRUCT_EXTRA(func,s) func(s)
    \n+
    27#else
    \n+
    28#define CHECK_STRUCT_EXTRA(func,s)
    \n+
    29#endif
    \n+
    30
    \n+
    31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)
    \n+
    32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_extra,ctx)
    \n+
    33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)
    \n+
    34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_extra,column)
    \n+
    35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
    \n+
    36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
    \n+
    37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_extra,cursor)
    \n+
    38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_extra,dynamic)
    \n+
    39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_extra,freeze)
    \n+
    40#define CHECK_CONN_EXTRA(conn)
    \n+
    41
    \n+
    42#if ENABLE_EXTRA_CHECKS
    \n+
    43void tds_check_tds_extra(const TDSSOCKET * tds);
    \n+
    44void tds_check_context_extra(const TDSCONTEXT * ctx);
    \n+
    45void tds_check_env_extra(const TDSENV * env);
    \n+
    46void tds_check_column_extra(const TDSCOLUMN * column);
    \n+
    47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);
    \n+
    48void tds_check_cursor_extra(const TDSCURSOR * cursor);
    \n+
    49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);
    \n+
    50void tds_check_freeze_extra(const TDSFREEZE * freeze);
    \n+
    51#endif
    \n+
    52
    \n+
    53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS
    \n+
    54# include <valgrind/memcheck.h>
    \n+
    55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)
    \n+
    56#else
    \n+
    57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)
    \n+
    58#endif
    \n+
    59
    \n+
    60#if ENABLE_EXTRA_CHECKS
    \n+
    61void tds_extra_assert_check(const char *fn, int line, int cond, const char *cond_str);
    \n+
    62# define tds_extra_assert(cond) \\
    \n+
    63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)
    \n+
    64#else
    \n+
    65# define tds_extra_assert(cond) do { } while(0)
    \n+
    66#endif
    \n+
    67
    \n+
    68#include <freetds/popvis.h>
    \n+
    69
    \n+
    70#endif /* TDS_CHECKS_H */
    \n+
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n+
    Hold information for any results.
    Definition tds.h:769
    \n+
    Holds informations about a cursor.
    Definition tds.h:937
    \n+
    Current environment as reported by the server.
    Definition tds.h:963
    \n+
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n+
    Definition tds.h:1029
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n+
    Definition tds.h:1571
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,61 +7,111 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-md4.h\n- 1#ifndef MD4_H\n- 2#define MD4_H\n- 3\n- 4#ifndef HAVE_NETTLE\n- 5\n- 6#include \n- 7\n-8struct MD4Context\n- 9{\n- 10 uint32_t buf[4];\n- 11 uint64_t bytes;\n- 12 uint32_t in[16];\n- 13};\n- 14\n- 15void MD4Init(struct MD4Context *context);\n- 16void MD4Update(struct MD4Context *context, const uint8_t *buf, size_t len);\n- 17void MD4Final(struct MD4Context *context, uint8_t *digest);\n- 18\n- 19typedef struct MD4Context MD4_CTX;\n- 20\n- 21#include \n+checks.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 2004 Frediano Ziglio\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef TDS_CHECKS_H\n+ 21#define TDS_CHECKS_H\n 22\n- 23#else\n+ 23#include \n 24\n- 25#include \n- 26\n- 27typedef struct md4_ctx MD4_CTX;\n- 28\n- 29static inline void MD4Init(MD4_CTX *ctx)\n- 30{\n- 31 nettle_md4_init(ctx);\n- 32}\n- 33\n- 34static inline void MD4Update(MD4_CTX *ctx, const uint8_t *buf, size_t len)\n- 35{\n- 36 nettle_md4_update(ctx, len, buf);\n- 37}\n- 38\n- 39static inline void MD4Final(MD4_CTX *ctx, uint8_t *digest)\n- 40{\n- 41 nettle_md4_digest(ctx, 16, digest);\n- 42}\n- 43\n- 44\n- 45#endif\n- 46\n- 47#endif /* !MD4_H */\n-MD4Context\n-Definition md4.h:9\n+ 25#if ENABLE_EXTRA_CHECKS\n+ 26#define CHECK_STRUCT_EXTRA(func,s) func(s)\n+ 27#else\n+ 28#define CHECK_STRUCT_EXTRA(func,s)\n+ 29#endif\n+ 30\n+ 31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)\n+ 32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA\n+(tds_check_context_extra,ctx)\n+ 33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)\n+ 34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA\n+(tds_check_column_extra,column)\n+ 35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA\n+(tds_check_resultinfo_extra,res_info)\n+ 36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA\n+(tds_check_resultinfo_extra,res_info)\n+ 37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA\n+(tds_check_cursor_extra,cursor)\n+ 38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA\n+(tds_check_dynamic_extra,dynamic)\n+ 39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA\n+(tds_check_freeze_extra,freeze)\n+ 40#define CHECK_CONN_EXTRA(conn)\n+ 41\n+ 42#if ENABLE_EXTRA_CHECKS\n+ 43void tds_check_tds_extra(const TDSSOCKET * tds);\n+ 44void tds_check_context_extra(const TDSCONTEXT * ctx);\n+ 45void tds_check_env_extra(const TDSENV * env);\n+ 46void tds_check_column_extra(const TDSCOLUMN * column);\n+ 47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);\n+ 48void tds_check_cursor_extra(const TDSCURSOR * cursor);\n+ 49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);\n+ 50void tds_check_freeze_extra(const TDSFREEZE * freeze);\n+ 51#endif\n+ 52\n+ 53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS\n+ 54# include \n+ 55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)\n+ 56#else\n+ 57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)\n+ 58#endif\n+ 59\n+ 60#if ENABLE_EXTRA_CHECKS\n+ 61void tds_extra_assert_check(const char *fn, int line, int cond, const char\n+*cond_str);\n+ 62# define tds_extra_assert(cond) \\\n+ 63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)\n+ 64#else\n+ 65# define tds_extra_assert(cond) do { } while(0)\n+ 66#endif\n+ 67\n+ 68#include \n+ 69\n+ 70#endif /* TDS_CHECKS_H */\n+tds_column\n+Metadata about columns in regular and compute rows.\n+Definition tds.h:689\n+tds_result_info\n+Hold information for any results.\n+Definition tds.h:769\n+tds_cursor\n+Holds informations about a cursor.\n+Definition tds.h:937\n+tds_env\n+Current environment as reported by the server.\n+Definition tds.h:963\n+tds_dynamic\n+Holds information for a dynamic (also called prepared) query.\n+Definition tds.h:977\n+tds_context\n+Definition tds.h:1029\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n+tds_freeze\n+Definition tds.h:1571\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00419_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00419_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/hmac_md5.h Source File\n+FreeTDS API: include/freetds/proto.h Source File\n \n \n \n \n \n \n \n@@ -70,50 +70,581 @@\n
    \n \n \n \n \n \n \n
    \n-
    hmac_md5.h
    \n+
    proto.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2008 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _hmac_md5_h_
    \n-
    21#define _hmac_md5_h_
    \n-
    22
    \n-
    23#include <freetds/pushvis.h>
    \n-
    24void hmac_md5(const unsigned char key[16],
    \n-
    25 const unsigned char* data, size_t data_len,
    \n-
    26 unsigned char* digest);
    \n-
    27#include <freetds/popvis.h>
    \n-
    28
    \n-
    29#endif
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n+
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    21/*
    \n+
    22 * This file contains defines and structures strictly related to TDS protocol
    \n+
    23 */
    \n+
    24
    \n+
    \n+
    25typedef struct tdsnumeric
    \n+
    26{
    \n+
    27 unsigned char precision;
    \n+
    28 unsigned char scale;
    \n+
    29 unsigned char array[33];
    \n+\n+
    \n+
    31
    \n+
    \n+
    32typedef struct tdsoldmoney
    \n+
    33{
    \n+
    34 TDS_INT mnyhigh;
    \n+
    35 TDS_UINT mnylow;
    \n+\n+
    \n+
    37
    \n+
    \n+
    38typedef union tdsmoney
    \n+
    39{
    \n+\n+
    41 TDS_INT8 mny;
    \n+
    42} TDS_MONEY;
    \n+
    \n+
    43
    \n+
    \n+
    44typedef struct tdsmoney4
    \n+
    45{
    \n+
    46 TDS_INT mny4;
    \n+\n+
    \n+
    48
    \n+
    \n+
    49typedef struct tdsdatetime
    \n+
    50{
    \n+
    51 TDS_INT dtdays;
    \n+
    52 TDS_INT dttime;
    \n+\n+
    \n+
    54
    \n+
    \n+
    55typedef struct tdsdatetime4
    \n+
    56{
    \n+
    57 TDS_USMALLINT days;
    \n+
    58 TDS_USMALLINT minutes;
    \n+\n+
    \n+
    60
    \n+
    \n+
    61typedef struct tdsunique
    \n+
    62{
    \n+
    63 TDS_UINT Data1;
    \n+
    64 TDS_USMALLINT Data2;
    \n+
    65 TDS_USMALLINT Data3;
    \n+
    66 TDS_UCHAR Data4[8];
    \n+\n+
    \n+
    68
    \n+
    69typedef TDS_INT TDS_DATE;
    \n+
    70typedef TDS_INT TDS_TIME;
    \n+
    71
    \n+
    72typedef TDS_UINT8 TDS_BIGTIME;
    \n+
    73typedef TDS_UINT8 TDS_BIGDATETIME;
    \n+
    74
    \n+
    75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */
    \n+
    76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */
    \n+
    77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */
    \n+
    78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */
    \n+
    79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */
    \n+
    80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */
    \n+
    81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */
    \n+
    82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */
    \n+
    83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */
    \n+
    84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */
    \n+
    85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */
    \n+
    86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */
    \n+
    87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */
    \n+
    88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */
    \n+
    89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */
    \n+
    90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */
    \n+
    91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */
    \n+
    92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */
    \n+
    93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */
    \n+
    94#define TDS_ERROR_TOKEN 170 /* 0xAA */
    \n+
    95#define TDS_INFO_TOKEN 171 /* 0xAB */
    \n+
    96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */
    \n+
    97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */
    \n+
    98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \\
    \n+
    99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */
    \n+
    100#define TDS_ROW_TOKEN 209 /* 0xD1 */
    \n+
    101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */
    \n+
    102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */
    \n+
    103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */
    \n+
    104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */
    \n+
    105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */
    \n+
    106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */
    \n+
    107#define TDS_EED_TOKEN 229 /* 0xE5 */
    \n+
    108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */
    \n+
    109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */
    \n+
    110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */
    \n+
    111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */
    \n+
    112#define TDS_RESULT_TOKEN 238 /* 0xEE */
    \n+
    113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */
    \n+
    114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */
    \n+
    115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */
    \n+
    116
    \n+
    117/* CURSOR support: TDS 5.0 only*/
    \n+
    118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */
    \n+
    119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */
    \n+
    120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */
    \n+
    121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */
    \n+
    122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */
    \n+
    123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */
    \n+
    124
    \n+
    125
    \n+
    126/* environment type field */
    \n+
    127#define TDS_ENV_DATABASE 1
    \n+
    128#define TDS_ENV_LANG 2
    \n+
    129#define TDS_ENV_CHARSET 3
    \n+
    130#define TDS_ENV_PACKSIZE 4
    \n+
    131#define TDS_ENV_LCID 5
    \n+
    132#define TDS_ENV_SQLCOLLATION 7
    \n+
    133#define TDS_ENV_BEGINTRANS 8
    \n+
    134#define TDS_ENV_COMMITTRANS 9
    \n+
    135#define TDS_ENV_ROLLBACKTRANS 10
    \n+
    136#define TDS_ENV_ROUTING 20
    \n+
    137
    \n+
    138/* Microsoft internal stored procedure id's */
    \n+
    139#define TDS_SP_CURSOR 1
    \n+
    140#define TDS_SP_CURSOROPEN 2
    \n+
    141#define TDS_SP_CURSORPREPARE 3
    \n+
    142#define TDS_SP_CURSOREXECUTE 4
    \n+
    143#define TDS_SP_CURSORPREPEXEC 5
    \n+
    144#define TDS_SP_CURSORUNPREPARE 6
    \n+
    145#define TDS_SP_CURSORFETCH 7
    \n+
    146#define TDS_SP_CURSOROPTION 8
    \n+
    147#define TDS_SP_CURSORCLOSE 9
    \n+
    148#define TDS_SP_EXECUTESQL 10
    \n+
    149#define TDS_SP_PREPARE 11
    \n+
    150#define TDS_SP_EXECUTE 12
    \n+
    151#define TDS_SP_PREPEXEC 13
    \n+
    152#define TDS_SP_PREPEXECRPC 14
    \n+
    153#define TDS_SP_UNPREPARE 15
    \n+
    154
    \n+
    155/*
    \n+
    156 * <rant> Sybase does an awful job of this stuff, non null ints of size 1 2
    \n+
    157 * and 4 have there own codes but nullable ints are lumped into INTN
    \n+
    158 * sheesh! </rant>
    \n+
    159 */
    \n+
    160typedef enum
    \n+
    161{
    \n+
    162 SYBCHAR = 47, /* 0x2F */
    \n+
    163 SYBVARCHAR = 39, /* 0x27 */
    \n+
    164 SYBINTN = 38, /* 0x26 */
    \n+
    165 SYBINT1 = 48, /* 0x30 */
    \n+
    166 SYBINT2 = 52, /* 0x34 */
    \n+
    167 SYBINT4 = 56, /* 0x38 */
    \n+
    168 SYBFLT8 = 62, /* 0x3E */
    \n+
    169 SYBDATETIME = 61, /* 0x3D */
    \n+
    170 SYBBIT = 50, /* 0x32 */
    \n+
    171 SYBTEXT = 35, /* 0x23 */
    \n+
    172 SYBNTEXT = 99, /* 0x63 */
    \n+
    173 SYBIMAGE = 34, /* 0x22 */
    \n+
    174 SYBMONEY4 = 122, /* 0x7A */
    \n+
    175 SYBMONEY = 60, /* 0x3C */
    \n+
    176 SYBDATETIME4 = 58, /* 0x3A */
    \n+
    177 SYBREAL = 59, /* 0x3B */
    \n+
    178 SYBBINARY = 45, /* 0x2D */
    \n+
    179 SYBVOID = 31, /* 0x1F */
    \n+
    180 SYBVARBINARY = 37, /* 0x25 */
    \n+
    181 SYBBITN = 104, /* 0x68 */
    \n+
    182 SYBNUMERIC = 108, /* 0x6C */
    \n+
    183 SYBDECIMAL = 106, /* 0x6A */
    \n+
    184 SYBFLTN = 109, /* 0x6D */
    \n+
    185 SYBMONEYN = 110, /* 0x6E */
    \n+
    186 SYBDATETIMN = 111, /* 0x6F */
    \n+
    187
    \n+
    188/*
    \n+
    189 * MS only types
    \n+
    190 */
    \n+
    191 SYBNVARCHAR = 103, /* 0x67 */
    \n+
    192 SYBINT8 = 127, /* 0x7F */
    \n+
    193 XSYBCHAR = 175, /* 0xAF */
    \n+
    194 XSYBVARCHAR = 167, /* 0xA7 */
    \n+
    195 XSYBNVARCHAR = 231, /* 0xE7 */
    \n+
    196 XSYBNCHAR = 239, /* 0xEF */
    \n+
    197 XSYBVARBINARY = 165, /* 0xA5 */
    \n+
    198 XSYBBINARY = 173, /* 0xAD */
    \n+
    199 SYBUNIQUE = 36, /* 0x24 */
    \n+
    200 SYBVARIANT = 98, /* 0x62 */
    \n+
    201 SYBMSUDT = 240, /* 0xF0 */
    \n+
    202 SYBMSXML = 241, /* 0xF1 */
    \n+
    203 SYBMSDATE = 40, /* 0x28 */
    \n+
    204 SYBMSTIME = 41, /* 0x29 */
    \n+
    205 SYBMSDATETIME2 = 42, /* 0x2a */
    \n+
    206 SYBMSDATETIMEOFFSET = 43,/* 0x2b */
    \n+
    207
    \n+
    208/*
    \n+
    209 * Sybase only types
    \n+
    210 */
    \n+
    211 SYBLONGBINARY = 225, /* 0xE1 */
    \n+
    212 SYBUINT1 = 64, /* 0x40 */
    \n+
    213 SYBUINT2 = 65, /* 0x41 */
    \n+
    214 SYBUINT4 = 66, /* 0x42 */
    \n+
    215 SYBUINT8 = 67, /* 0x43 */
    \n+
    216 SYBBLOB = 36, /* 0x24 */
    \n+
    217 SYBBOUNDARY = 104, /* 0x68 */
    \n+
    218 SYBDATE = 49, /* 0x31 */
    \n+
    219 SYBDATEN = 123, /* 0x7B */
    \n+
    220 SYB5INT8 = 191, /* 0xBF */
    \n+
    221 SYBINTERVAL = 46, /* 0x2E */
    \n+
    222 SYBLONGCHAR = 175, /* 0xAF */
    \n+
    223 SYBSENSITIVITY = 103, /* 0x67 */
    \n+
    224 SYBSINT1 = 176, /* 0xB0 */
    \n+
    225 SYBTIME = 51, /* 0x33 */
    \n+
    226 SYBTIMEN = 147, /* 0x93 */
    \n+
    227 SYBUINTN = 68, /* 0x44 */
    \n+
    228 SYBUNITEXT = 174, /* 0xAE */
    \n+
    229 SYBXML = 163, /* 0xA3 */
    \n+
    230 SYB5BIGDATETIME = 187, /* 0xBB */
    \n+
    231 SYB5BIGTIME = 188, /* 0xBC */
    \n+
    232
    \n+
    233} TDS_SERVER_TYPE;
    \n+
    234
    \n+
    235typedef enum
    \n+
    236{
    \n+
    237 USER_UNICHAR_TYPE = 34, /* 0x22 */
    \n+
    238 USER_UNIVARCHAR_TYPE = 35 /* 0x23 */
    \n+
    239} TDS_USER_TYPE;
    \n+
    240
    \n+
    241/* compute operator */
    \n+
    242#define SYBAOPCNT 75 /* 0x4B */
    \n+
    243#define SYBAOPCNTU 76 /* 0x4C, obsolete */
    \n+
    244#define SYBAOPSUM 77 /* 0x4D */
    \n+
    245#define SYBAOPSUMU 78 /* 0x4E, obsolete */
    \n+
    246#define SYBAOPAVG 79 /* 0x4F */
    \n+
    247#define SYBAOPAVGU 80 /* 0x50, obsolete */
    \n+
    248#define SYBAOPMIN 81 /* 0x51 */
    \n+
    249#define SYBAOPMAX 82 /* 0x52 */
    \n+
    250
    \n+
    251/* mssql2k compute operator */
    \n+
    252#define SYBAOPCNT_BIG 9 /* 0x09 */
    \n+
    253#define SYBAOPSTDEV 48 /* 0x30 */
    \n+
    254#define SYBAOPSTDEVP 49 /* 0x31 */
    \n+
    255#define SYBAOPVAR 50 /* 0x32 */
    \n+
    256#define SYBAOPVARP 51 /* 0x33 */
    \n+
    257#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */
    \n+
    258
    \n+
    262typedef enum
    \n+
    263{
    \n+
    264 TDS_OPT_SET = 1
    \n+
    265 , TDS_OPT_DEFAULT = 2
    \n+
    266 , TDS_OPT_LIST = 3
    \n+
    267 , TDS_OPT_INFO = 4
    \n+
    268} TDS_OPTION_CMD;
    \n+
    269
    \n+
    270typedef enum
    \n+
    271{
    \n+
    272 TDS_OPT_DATEFIRST = 1 /* 0x01 */
    \n+
    273 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */
    \n+
    274 , TDS_OPT_STAT_TIME = 3 /* 0x03 */
    \n+
    275 , TDS_OPT_STAT_IO = 4 /* 0x04 */
    \n+
    276 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */
    \n+
    277 , TDS_OPT_NATLANG = 6 /* 0x06 */
    \n+
    278 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */
    \n+
    279 , TDS_OPT_ISOLATION = 8 /* 0x08 */
    \n+
    280 , TDS_OPT_AUTHON = 9 /* 0x09 */
    \n+
    281 , TDS_OPT_CHARSET = 10 /* 0x0a */
    \n+
    282 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */
    \n+
    283 , TDS_OPT_NOEXEC = 14 /* 0x0e */
    \n+
    284 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */
    \n+
    285 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */
    \n+
    286 , TDS_OPT_PARSEONLY = 18 /* 0x12 */
    \n+
    287 , TDS_OPT_GETDATA = 20 /* 0x14 */
    \n+
    288 , TDS_OPT_NOCOUNT = 21 /* 0x15 */
    \n+
    289 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */
    \n+
    290 , TDS_OPT_FORMATONLY = 24 /* 0x18 */
    \n+
    291 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */
    \n+
    292 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */
    \n+
    293 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */
    \n+
    294 , TDS_OPT_RESTREES = 28 /* 0x1c */
    \n+
    295 , TDS_OPT_IDENTITYON = 29 /* 0x1d */
    \n+
    296 , TDS_OPT_CURREAD = 30 /* 0x1e */
    \n+
    297 , TDS_OPT_CURWRITE = 31 /* 0x1f */
    \n+
    298 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */
    \n+
    299 , TDS_OPT_AUTHOFF = 33 /* 0x21 */
    \n+
    300 , TDS_OPT_ANSINULL = 34 /* 0x22 */
    \n+
    301 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */
    \n+
    302 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */
    \n+
    303 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */
    \n+
    304 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */
    \n+
    305} TDS_OPTION;
    \n+
    306
    \n+
    307enum {
    \n+
    308 TDS_OPT_ARITHOVERFLOW = 0x01,
    \n+
    309 TDS_OPT_NUMERICTRUNC = 0x02
    \n+
    310};
    \n+
    311
    \n+
    312enum TDS_OPT_DATEFIRST_CHOICE
    \n+
    313{
    \n+
    314 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =
    \n+
    315 6, TDS_OPT_SUNDAY = 7
    \n+
    316};
    \n+
    317
    \n+
    318enum TDS_OPT_DATEFORMAT_CHOICE
    \n+
    319{
    \n+
    320 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
    \n+
    321};
    \n+
    322enum TDS_OPT_ISOLATION_CHOICE
    \n+
    323{
    \n+
    324 TDS_OPT_LEVEL0 = 0,
    \n+
    325 TDS_OPT_LEVEL1 = 1,
    \n+
    326 TDS_OPT_LEVEL2 = 2,
    \n+
    327 TDS_OPT_LEVEL3 = 3
    \n+
    328};
    \n+
    329
    \n+
    330
    \n+
    331typedef enum tds_packet_type
    \n+
    332{
    \n+
    333 TDS_QUERY = 1,
    \n+
    334 TDS_LOGIN = 2,
    \n+
    335 TDS_RPC = 3,
    \n+
    336 TDS_REPLY = 4,
    \n+
    337 TDS_CANCEL = 6,
    \n+
    338 TDS_BULK = 7,
    \n+
    339 TDS7_TRANS = 14, /* transaction management */
    \n+
    340 TDS_NORMAL = 15,
    \n+
    341 TDS7_LOGIN = 16,
    \n+
    342 TDS7_AUTH = 17,
    \n+
    343 TDS71_PRELOGIN = 18,
    \n+
    344 TDS72_SMP = 0x53
    \n+
    345} TDS_PACKET_TYPE;
    \n+
    346
    \n+
    \n+
    350typedef struct
    \n+
    351{
    \n+
    352 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */
    \n+
    353 TDS_USMALLINT flags;
    \n+
    354 TDS_UCHAR charset_id; /* or zero */
    \n+\n+
    \n+
    356
    \n+
    \n+
    360typedef struct
    \n+
    361{
    \n+
    362 TDS_UCHAR signature; /* TDS72_SMP */
    \n+
    363 TDS_UCHAR type;
    \n+
    364 TDS_USMALLINT sid;
    \n+
    365 TDS_UINT size;
    \n+
    366 TDS_UINT seq;
    \n+
    367 TDS_UINT wnd;
    \n+\n+
    \n+
    369
    \n+
    370enum {
    \n+
    371 TDS_SMP_SYN = 1,
    \n+
    372 TDS_SMP_ACK = 2,
    \n+
    373 TDS_SMP_FIN = 4,
    \n+
    374 TDS_SMP_DATA = 8,
    \n+
    375};
    \n+
    376
    \n+
    377/* SF stands for "sort flag" */
    \n+
    378#define TDS_SF_BIN (TDS_USMALLINT) 0x100
    \n+
    379#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080
    \n+
    380#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040
    \n+
    381#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020
    \n+
    382#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010
    \n+
    383
    \n+
    384/* UT stands for user type */
    \n+
    385#define TDS_UT_TIMESTAMP 80
    \n+
    386
    \n+
    387
    \n+
    388/* mssql login options flags */
    \n+
    389enum option_flag1_values {
    \n+
    390 TDS_BYTE_ORDER_X86 = 0,
    \n+
    391 TDS_CHARSET_ASCII = 0,
    \n+
    392 TDS_DUMPLOAD_ON = 0,
    \n+
    393 TDS_FLOAT_IEEE_754 = 0,
    \n+
    394 TDS_INIT_DB_WARN = 0,
    \n+
    395 TDS_SET_LANG_OFF = 0,
    \n+
    396 TDS_USE_DB_SILENT = 0,
    \n+
    397 TDS_BYTE_ORDER_68000 = 0x01,
    \n+
    398 TDS_CHARSET_EBDDIC = 0x02,
    \n+
    399 TDS_FLOAT_VAX = 0x04,
    \n+
    400 TDS_FLOAT_ND5000 = 0x08,
    \n+
    401 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */
    \n+
    402 TDS_USE_DB_NOTIFY = 0x20,
    \n+
    403 TDS_INIT_DB_FATAL = 0x40,
    \n+
    404 TDS_SET_LANG_ON = 0x80
    \n+
    405};
    \n+
    406
    \n+
    407enum option_flag2_values {
    \n+
    408 TDS_INIT_LANG_WARN = 0,
    \n+
    409 TDS_INTEGRATED_SECURTY_OFF = 0,
    \n+
    410 TDS_ODBC_OFF = 0,
    \n+
    411 TDS_USER_NORMAL = 0, /* SQL Server login */
    \n+
    412 TDS_INIT_LANG_REQUIRED = 0x01,
    \n+
    413 TDS_ODBC_ON = 0x02,
    \n+
    414 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */
    \n+
    415 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */
    \n+
    416 TDS_USER_SERVER = 0x10, /* reserved */
    \n+
    417 TDS_USER_REMUSER = 0x20, /* DQ login */
    \n+
    418 TDS_USER_SQLREPL = 0x40, /* replication login */
    \n+
    419 TDS_INTEGRATED_SECURITY_ON = 0x80
    \n+
    420};
    \n+
    421
    \n+
    422enum option_flag3_values {
    \n+
    423 TDS_RESTRICTED_COLLATION = 0,
    \n+
    424 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */
    \n+
    425 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */
    \n+
    426 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */
    \n+
    427 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */
    \n+
    428 TDS_EXTENSION = 0x10, /* TDS 7.4 */
    \n+
    429};
    \n+
    430
    \n+
    431enum type_flags {
    \n+
    432 TDS_OLEDB_ON = 0x10,
    \n+
    433 TDS_READONLY_INTENT = 0x20,
    \n+
    434};
    \n+
    435
    \n+
    436/* Sybase dynamic types */
    \n+
    437enum dynamic_types {
    \n+
    438 TDS_DYN_PREPARE = 0x01,
    \n+
    439 TDS_DYN_EXEC = 0x02,
    \n+
    440 TDS_DYN_DEALLOC = 0x04,
    \n+
    441 TDS_DYN_EXEC_IMMED = 0x08,
    \n+
    442 TDS_DYN_PROCNAME = 0x10,
    \n+
    443 TDS_DYN_ACK = 0x20,
    \n+
    444 TDS_DYN_DESCIN = 0x40,
    \n+
    445 TDS_DYN_DESCOUT = 0x80,
    \n+
    446};
    \n+
    447
    \n+
    448/* http://jtds.sourceforge.net/apiCursors.html */
    \n+
    449/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */
    \n+
    450enum {
    \n+
    451 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */
    \n+
    452 TDS_CUR_TYPE_DYNAMIC = 0x0002,
    \n+
    453 TDS_CUR_TYPE_FORWARD = 0x0004,
    \n+
    454 TDS_CUR_TYPE_STATIC = 0x0008,
    \n+
    455 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,
    \n+
    456 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,
    \n+
    457 TDS_CUR_TYPE_AUTO_FETCH = 0x2000
    \n+
    458};
    \n+
    459
    \n+
    460enum {
    \n+
    461 TDS_CUR_CONCUR_READ_ONLY = 1,
    \n+
    462 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,
    \n+
    463 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */
    \n+
    464 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8
    \n+
    465};
    \n+
    466
    \n+
    467/* TDS 4/5 login*/
    \n+
    468#define TDS_MAXNAME 30 /* maximum login name lenghts */
    \n+
    469#define TDS_PROGNLEN 10 /* maximum program lenght */
    \n+
    470#define TDS_PKTLEN 6 /* maximum packet lenght in login */
    \n+
    471
    \n+
    472/* TDS 5 login security flags */
    \n+
    473enum {
    \n+
    474 TDS5_SEC_LOG_ENCRYPT = 1,
    \n+
    475 TDS5_SEC_LOG_CHALLENGE = 2,
    \n+
    476 TDS5_SEC_LOG_LABELS = 4,
    \n+
    477 TDS5_SEC_LOG_APPDEFINED = 8,
    \n+
    478 TDS5_SEC_LOG_SECSESS = 16,
    \n+
    479 TDS5_SEC_LOG_ENCRYPT2 = 32,
    \n+
    480 TDS5_SEC_LOG_ENCRYPT3 = 128,
    \n+
    481};
    \n+
    482
    \n+
    484enum {
    \n+
    485 TDS5_MSG_SEC_ENCRYPT = 1,
    \n+
    486 TDS5_MSG_SEC_LOGPWD = 2,
    \n+
    487 TDS5_MSG_SEC_REMPWD = 3,
    \n+
    488 TDS5_MSG_SEC_CHALLENGE = 4,
    \n+
    489 TDS5_MSG_SEC_RESPONSE = 5,
    \n+
    490 TDS5_MSG_SEC_GETLABEL = 6,
    \n+
    491 TDS5_MSG_SEC_LABEL = 7,
    \n+
    492 TDS5_MSG_SQL_TBLNAME = 8,
    \n+
    493 TDS5_MSG_GW_RESERVED = 9,
    \n+
    494 TDS5_MSG_OMNI_CAPABILITIES = 10,
    \n+
    495 TDS5_MSG_SEC_OPAQUE = 11,
    \n+
    496 TDS5_MSG_HAFAILOVER = 12,
    \n+
    497 TDS5_MSG_EMPTY = 13,
    \n+
    500 TDS5_MSG_SEC_ENCRYPT2 = 14,
    \n+
    501 TDS5_MSG_SEC_LOGPWD2 = 15,
    \n+
    502 TDS5_MSG_SEC_SUP_CIPHER = 16,
    \n+
    503 TDS5_MSG_MIG_REQ = 17,
    \n+
    505 TDS5_MSG_MIG_SYNC = 18,
    \n+
    506 TDS5_MSG_MIG_CONT = 19,
    \n+
    507 TDS5_MSG_MIG_IGN = 20,
    \n+
    508 TDS5_MSG_MIG_FAIL = 21,
    \n+
    510 TDS5_MSG_SEC_REMPWD2 = 22,
    \n+
    511 TDS5_MSG_MIG_RESUME = 23,
    \n+
    512 TDS5_MSG_SEC_ENCRYPT3 = 30,
    \n+
    513 TDS5_MSG_SEC_LOGPWD3 = 31,
    \n+
    514 TDS5_MSG_SEC_REMPWD3 = 32,
    \n+
    515 TDS5_MSG_DR_MAP = 33,
    \n+
    516};
    \n+
    517
    \n+
    528enum {
    \n+
    529 TDS5_SEC_SECSESS = 1,
    \n+
    530 TDS5_SEC_FORWARD = 2,
    \n+
    531 TDS5_SEC_SIGN = 3,
    \n+
    532 TDS5_SEC_OTHER = 4,
    \n+
    533};
    \n+
    534
    \n+
    538enum {
    \n+
    539 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,
    \n+
    540 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,
    \n+
    541 TDS5_SEC_DELEGATION = 0x4,
    \n+
    542 TDS5_SEC_INTEGRITY = 0x8,
    \n+
    543 TDS5_SEC_CONFIDENTIALITY = 0x10,
    \n+
    544 TDS5_SEC_DETECT_REPLAY = 0x20,
    \n+
    545 TDS5_SEC_DETECT_SEQUENCE = 0x40,
    \n+
    546 TDS5_SEC_DATA_ORIGIN = 0x80,
    \n+
    547 TDS5_SEC_CHANNEL_BINDING = 0x100,
    \n+
    548};
    \n+
    549
    \n+
    550enum {
    \n+
    551 TDS5_SEC_VERSION = 50,
    \n+
    552};
    \n+
    553
    \n+
    554/* MS encryption byte (pre login) */
    \n+
    555enum {
    \n+
    556 TDS7_ENCRYPT_OFF,
    \n+
    557 TDS7_ENCRYPT_ON,
    \n+
    558 TDS7_ENCRYPT_NOT_SUP,
    \n+
    559 TDS7_ENCRYPT_REQ,
    \n+
    560};
    \n+
    Definition proto.h:26
    \n+
    Definition proto.h:33
    \n+
    Definition proto.h:39
    \n+
    Definition proto.h:45
    \n+
    Definition proto.h:50
    \n+
    Definition proto.h:56
    \n+
    Definition proto.h:62
    \n+
    TDS 7.1 collation informations.
    Definition proto.h:351
    \n+
    TDS 7.2 SMP packet header.
    Definition proto.h:361
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,41 +7,568 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-hmac_md5.h\n+proto.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2008 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _hmac_md5_h_\n- 21#define _hmac_md5_h_\n- 22\n- 23#include \n- 24void hmac_md5(const unsigned char key[16],\n- 25 const unsigned char* data, size_t data_len,\n- 26 unsigned char* digest);\n- 27#include \n- 28\n- 29#endif\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n+ 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 21/*\n+ 22 * This file contains defines and structures strictly related to TDS\n+protocol\n+ 23 */\n+ 24\n+25typedef struct tdsnumeric\n+ 26{\n+ 27 unsigned char precision;\n+ 28 unsigned char scale;\n+ 29 unsigned char array[33];\n+ 30} TDS_NUMERIC;\n+ 31\n+32typedef struct tdsoldmoney\n+ 33{\n+ 34 TDS_INT mnyhigh;\n+ 35 TDS_UINT mnylow;\n+ 36} TDS_OLD_MONEY;\n+ 37\n+38typedef union tdsmoney\n+ 39{\n+ 40 TDS_OLD_MONEY tdsoldmoney;\n+ 41 TDS_INT8 mny;\n+ 42} TDS_MONEY;\n+ 43\n+44typedef struct tdsmoney4\n+ 45{\n+ 46 TDS_INT mny4;\n+ 47} TDS_MONEY4;\n+ 48\n+49typedef struct tdsdatetime\n+ 50{\n+ 51 TDS_INT dtdays;\n+ 52 TDS_INT dttime;\n+ 53} TDS_DATETIME;\n+ 54\n+55typedef struct tdsdatetime4\n+ 56{\n+ 57 TDS_USMALLINT days;\n+ 58 TDS_USMALLINT minutes;\n+ 59} TDS_DATETIME4;\n+ 60\n+61typedef struct tdsunique\n+ 62{\n+ 63 TDS_UINT Data1;\n+ 64 TDS_USMALLINT Data2;\n+ 65 TDS_USMALLINT Data3;\n+ 66 TDS_UCHAR Data4[8];\n+ 67} TDS_UNIQUE;\n+ 68\n+ 69typedef TDS_INT TDS_DATE;\n+ 70typedef TDS_INT TDS_TIME;\n+ 71\n+ 72typedef TDS_UINT8 TDS_BIGTIME;\n+ 73typedef TDS_UINT8 TDS_BIGDATETIME;\n+ 74\n+ 75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */\n+ 76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */\n+ 77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */\n+ 78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */\n+ 79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */\n+ 80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */\n+ 81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */\n+ 82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */\n+ 83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */\n+ 84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */\n+ 85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */\n+ 86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */\n+ 87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */\n+ 88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */\n+ 89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */\n+ 90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */\n+ 91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */\n+ 92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */\n+ 93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */\n+ 94#define TDS_ERROR_TOKEN 170 /* 0xAA */\n+ 95#define TDS_INFO_TOKEN 171 /* 0xAB */\n+ 96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */\n+ 97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */\n+ 98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \\\n+ 99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */\n+ 100#define TDS_ROW_TOKEN 209 /* 0xD1 */\n+ 101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */\n+ 102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */\n+ 103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */\n+ 104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */\n+ 105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */\n+ 106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */\n+ 107#define TDS_EED_TOKEN 229 /* 0xE5 */\n+ 108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */\n+ 109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */\n+ 110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */\n+ 111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */\n+ 112#define TDS_RESULT_TOKEN 238 /* 0xEE */\n+ 113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */\n+ 114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */\n+ 115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */\n+ 116\n+ 117/* CURSOR support: TDS 5.0 only*/\n+ 118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */\n+ 119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */\n+ 120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */\n+ 121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */\n+ 122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */\n+ 123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */\n+ 124\n+ 125\n+ 126/* environment type field */\n+ 127#define TDS_ENV_DATABASE 1\n+ 128#define TDS_ENV_LANG 2\n+ 129#define TDS_ENV_CHARSET 3\n+ 130#define TDS_ENV_PACKSIZE 4\n+ 131#define TDS_ENV_LCID 5\n+ 132#define TDS_ENV_SQLCOLLATION 7\n+ 133#define TDS_ENV_BEGINTRANS 8\n+ 134#define TDS_ENV_COMMITTRANS 9\n+ 135#define TDS_ENV_ROLLBACKTRANS 10\n+ 136#define TDS_ENV_ROUTING 20\n+ 137\n+ 138/* Microsoft internal stored procedure id's */\n+ 139#define TDS_SP_CURSOR 1\n+ 140#define TDS_SP_CURSOROPEN 2\n+ 141#define TDS_SP_CURSORPREPARE 3\n+ 142#define TDS_SP_CURSOREXECUTE 4\n+ 143#define TDS_SP_CURSORPREPEXEC 5\n+ 144#define TDS_SP_CURSORUNPREPARE 6\n+ 145#define TDS_SP_CURSORFETCH 7\n+ 146#define TDS_SP_CURSOROPTION 8\n+ 147#define TDS_SP_CURSORCLOSE 9\n+ 148#define TDS_SP_EXECUTESQL 10\n+ 149#define TDS_SP_PREPARE 11\n+ 150#define TDS_SP_EXECUTE 12\n+ 151#define TDS_SP_PREPEXEC 13\n+ 152#define TDS_SP_PREPEXECRPC 14\n+ 153#define TDS_SP_UNPREPARE 15\n+ 154\n+ 155/*\n+ 156 * Sybase does an awful job of this stuff, non null ints of size 1 2\n+ 157 * and 4 have there own codes but nullable ints are lumped into INTN\n+ 158 * sheesh! \n+ 159 */\n+ 160typedef enum\n+ 161{\n+ 162 SYBCHAR = 47, /* 0x2F */\n+ 163 SYBVARCHAR = 39, /* 0x27 */\n+ 164 SYBINTN = 38, /* 0x26 */\n+ 165 SYBINT1 = 48, /* 0x30 */\n+ 166 SYBINT2 = 52, /* 0x34 */\n+ 167 SYBINT4 = 56, /* 0x38 */\n+ 168 SYBFLT8 = 62, /* 0x3E */\n+ 169 SYBDATETIME = 61, /* 0x3D */\n+ 170 SYBBIT = 50, /* 0x32 */\n+ 171 SYBTEXT = 35, /* 0x23 */\n+ 172 SYBNTEXT = 99, /* 0x63 */\n+ 173 SYBIMAGE = 34, /* 0x22 */\n+ 174 SYBMONEY4 = 122, /* 0x7A */\n+ 175 SYBMONEY = 60, /* 0x3C */\n+ 176 SYBDATETIME4 = 58, /* 0x3A */\n+ 177 SYBREAL = 59, /* 0x3B */\n+ 178 SYBBINARY = 45, /* 0x2D */\n+ 179 SYBVOID = 31, /* 0x1F */\n+ 180 SYBVARBINARY = 37, /* 0x25 */\n+ 181 SYBBITN = 104, /* 0x68 */\n+ 182 SYBNUMERIC = 108, /* 0x6C */\n+ 183 SYBDECIMAL = 106, /* 0x6A */\n+ 184 SYBFLTN = 109, /* 0x6D */\n+ 185 SYBMONEYN = 110, /* 0x6E */\n+ 186 SYBDATETIMN = 111, /* 0x6F */\n+ 187\n+ 188/*\n+ 189 * MS only types\n+ 190 */\n+ 191 SYBNVARCHAR = 103, /* 0x67 */\n+ 192 SYBINT8 = 127, /* 0x7F */\n+ 193 XSYBCHAR = 175, /* 0xAF */\n+ 194 XSYBVARCHAR = 167, /* 0xA7 */\n+ 195 XSYBNVARCHAR = 231, /* 0xE7 */\n+ 196 XSYBNCHAR = 239, /* 0xEF */\n+ 197 XSYBVARBINARY = 165, /* 0xA5 */\n+ 198 XSYBBINARY = 173, /* 0xAD */\n+ 199 SYBUNIQUE = 36, /* 0x24 */\n+ 200 SYBVARIANT = 98, /* 0x62 */\n+ 201 SYBMSUDT = 240, /* 0xF0 */\n+ 202 SYBMSXML = 241, /* 0xF1 */\n+ 203 SYBMSDATE = 40, /* 0x28 */\n+ 204 SYBMSTIME = 41, /* 0x29 */\n+ 205 SYBMSDATETIME2 = 42, /* 0x2a */\n+ 206 SYBMSDATETIMEOFFSET = 43,/* 0x2b */\n+ 207\n+ 208/*\n+ 209 * Sybase only types\n+ 210 */\n+ 211 SYBLONGBINARY = 225, /* 0xE1 */\n+ 212 SYBUINT1 = 64, /* 0x40 */\n+ 213 SYBUINT2 = 65, /* 0x41 */\n+ 214 SYBUINT4 = 66, /* 0x42 */\n+ 215 SYBUINT8 = 67, /* 0x43 */\n+ 216 SYBBLOB = 36, /* 0x24 */\n+ 217 SYBBOUNDARY = 104, /* 0x68 */\n+ 218 SYBDATE = 49, /* 0x31 */\n+ 219 SYBDATEN = 123, /* 0x7B */\n+ 220 SYB5INT8 = 191, /* 0xBF */\n+ 221 SYBINTERVAL = 46, /* 0x2E */\n+ 222 SYBLONGCHAR = 175, /* 0xAF */\n+ 223 SYBSENSITIVITY = 103, /* 0x67 */\n+ 224 SYBSINT1 = 176, /* 0xB0 */\n+ 225 SYBTIME = 51, /* 0x33 */\n+ 226 SYBTIMEN = 147, /* 0x93 */\n+ 227 SYBUINTN = 68, /* 0x44 */\n+ 228 SYBUNITEXT = 174, /* 0xAE */\n+ 229 SYBXML = 163, /* 0xA3 */\n+ 230 SYB5BIGDATETIME = 187, /* 0xBB */\n+ 231 SYB5BIGTIME = 188, /* 0xBC */\n+ 232\n+ 233} TDS_SERVER_TYPE;\n+ 234\n+ 235typedef enum\n+ 236{\n+ 237 USER_UNICHAR_TYPE = 34, /* 0x22 */\n+ 238 USER_UNIVARCHAR_TYPE = 35 /* 0x23 */\n+ 239} TDS_USER_TYPE;\n+ 240\n+ 241/* compute operator */\n+ 242#define SYBAOPCNT 75 /* 0x4B */\n+ 243#define SYBAOPCNTU 76 /* 0x4C, obsolete */\n+ 244#define SYBAOPSUM 77 /* 0x4D */\n+ 245#define SYBAOPSUMU 78 /* 0x4E, obsolete */\n+ 246#define SYBAOPAVG 79 /* 0x4F */\n+ 247#define SYBAOPAVGU 80 /* 0x50, obsolete */\n+ 248#define SYBAOPMIN 81 /* 0x51 */\n+ 249#define SYBAOPMAX 82 /* 0x52 */\n+ 250\n+ 251/* mssql2k compute operator */\n+ 252#define SYBAOPCNT_BIG 9 /* 0x09 */\n+ 253#define SYBAOPSTDEV 48 /* 0x30 */\n+ 254#define SYBAOPSTDEVP 49 /* 0x31 */\n+ 255#define SYBAOPVAR 50 /* 0x32 */\n+ 256#define SYBAOPVARP 51 /* 0x33 */\n+ 257#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */\n+ 258\n+ 262typedef enum\n+ 263{\n+ 264 TDS_OPT_SET = 1\n+ 265 , TDS_OPT_DEFAULT = 2\n+ 266 , TDS_OPT_LIST = 3\n+ 267 , TDS_OPT_INFO = 4\n+ 268} TDS_OPTION_CMD;\n+ 269\n+ 270typedef enum\n+ 271{\n+ 272 TDS_OPT_DATEFIRST = 1 /* 0x01 */\n+ 273 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */\n+ 274 , TDS_OPT_STAT_TIME = 3 /* 0x03 */\n+ 275 , TDS_OPT_STAT_IO = 4 /* 0x04 */\n+ 276 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */\n+ 277 , TDS_OPT_NATLANG = 6 /* 0x06 */\n+ 278 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */\n+ 279 , TDS_OPT_ISOLATION = 8 /* 0x08 */\n+ 280 , TDS_OPT_AUTHON = 9 /* 0x09 */\n+ 281 , TDS_OPT_CHARSET = 10 /* 0x0a */\n+ 282 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */\n+ 283 , TDS_OPT_NOEXEC = 14 /* 0x0e */\n+ 284 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */\n+ 285 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */\n+ 286 , TDS_OPT_PARSEONLY = 18 /* 0x12 */\n+ 287 , TDS_OPT_GETDATA = 20 /* 0x14 */\n+ 288 , TDS_OPT_NOCOUNT = 21 /* 0x15 */\n+ 289 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */\n+ 290 , TDS_OPT_FORMATONLY = 24 /* 0x18 */\n+ 291 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */\n+ 292 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */\n+ 293 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */\n+ 294 , TDS_OPT_RESTREES = 28 /* 0x1c */\n+ 295 , TDS_OPT_IDENTITYON = 29 /* 0x1d */\n+ 296 , TDS_OPT_CURREAD = 30 /* 0x1e */\n+ 297 , TDS_OPT_CURWRITE = 31 /* 0x1f */\n+ 298 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */\n+ 299 , TDS_OPT_AUTHOFF = 33 /* 0x21 */\n+ 300 , TDS_OPT_ANSINULL = 34 /* 0x22 */\n+ 301 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */\n+ 302 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */\n+ 303 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */\n+ 304 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */\n+ 305} TDS_OPTION;\n+ 306\n+ 307enum {\n+ 308 TDS_OPT_ARITHOVERFLOW = 0x01,\n+ 309 TDS_OPT_NUMERICTRUNC = 0x02\n+ 310};\n+ 311\n+ 312enum TDS_OPT_DATEFIRST_CHOICE\n+ 313{\n+ 314 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3,\n+TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =\n+ 315 6, TDS_OPT_SUNDAY = 7\n+ 316};\n+ 317\n+ 318enum TDS_OPT_DATEFORMAT_CHOICE\n+ 319{\n+ 320 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM\n+= 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6\n+ 321};\n+ 322enum TDS_OPT_ISOLATION_CHOICE\n+ 323{\n+ 324 TDS_OPT_LEVEL0 = 0,\n+ 325 TDS_OPT_LEVEL1 = 1,\n+ 326 TDS_OPT_LEVEL2 = 2,\n+ 327 TDS_OPT_LEVEL3 = 3\n+ 328};\n+ 329\n+ 330\n+ 331typedef enum tds_packet_type\n+ 332{\n+ 333 TDS_QUERY = 1,\n+ 334 TDS_LOGIN = 2,\n+ 335 TDS_RPC = 3,\n+ 336 TDS_REPLY = 4,\n+ 337 TDS_CANCEL = 6,\n+ 338 TDS_BULK = 7,\n+ 339 TDS7_TRANS = 14, /* transaction management */\n+ 340 TDS_NORMAL = 15,\n+ 341 TDS7_LOGIN = 16,\n+ 342 TDS7_AUTH = 17,\n+ 343 TDS71_PRELOGIN = 18,\n+ 344 TDS72_SMP = 0x53\n+ 345} TDS_PACKET_TYPE;\n+ 346\n+350typedef struct\n+ 351{\n+ 352 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */\n+ 353 TDS_USMALLINT flags;\n+ 354 TDS_UCHAR charset_id; /* or zero */\n+ 355} TDS71_COLLATION;\n+ 356\n+360typedef struct\n+ 361{\n+ 362 TDS_UCHAR signature; /* TDS72_SMP */\n+ 363 TDS_UCHAR type;\n+ 364 TDS_USMALLINT sid;\n+ 365 TDS_UINT size;\n+ 366 TDS_UINT seq;\n+ 367 TDS_UINT wnd;\n+ 368} TDS72_SMP_HEADER;\n+ 369\n+ 370enum {\n+ 371 TDS_SMP_SYN = 1,\n+ 372 TDS_SMP_ACK = 2,\n+ 373 TDS_SMP_FIN = 4,\n+ 374 TDS_SMP_DATA = 8,\n+ 375};\n+ 376\n+ 377/* SF stands for \"sort flag\" */\n+ 378#define TDS_SF_BIN (TDS_USMALLINT) 0x100\n+ 379#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080\n+ 380#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040\n+ 381#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020\n+ 382#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010\n+ 383\n+ 384/* UT stands for user type */\n+ 385#define TDS_UT_TIMESTAMP 80\n+ 386\n+ 387\n+ 388/* mssql login options flags */\n+ 389enum option_flag1_values {\n+ 390 TDS_BYTE_ORDER_X86 = 0,\n+ 391 TDS_CHARSET_ASCII = 0,\n+ 392 TDS_DUMPLOAD_ON = 0,\n+ 393 TDS_FLOAT_IEEE_754 = 0,\n+ 394 TDS_INIT_DB_WARN = 0,\n+ 395 TDS_SET_LANG_OFF = 0,\n+ 396 TDS_USE_DB_SILENT = 0,\n+ 397 TDS_BYTE_ORDER_68000 = 0x01,\n+ 398 TDS_CHARSET_EBDDIC = 0x02,\n+ 399 TDS_FLOAT_VAX = 0x04,\n+ 400 TDS_FLOAT_ND5000 = 0x08,\n+ 401 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */\n+ 402 TDS_USE_DB_NOTIFY = 0x20,\n+ 403 TDS_INIT_DB_FATAL = 0x40,\n+ 404 TDS_SET_LANG_ON = 0x80\n+ 405};\n+ 406\n+ 407enum option_flag2_values {\n+ 408 TDS_INIT_LANG_WARN = 0,\n+ 409 TDS_INTEGRATED_SECURTY_OFF = 0,\n+ 410 TDS_ODBC_OFF = 0,\n+ 411 TDS_USER_NORMAL = 0, /* SQL Server login */\n+ 412 TDS_INIT_LANG_REQUIRED = 0x01,\n+ 413 TDS_ODBC_ON = 0x02,\n+ 414 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */\n+ 415 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */\n+ 416 TDS_USER_SERVER = 0x10, /* reserved */\n+ 417 TDS_USER_REMUSER = 0x20, /* DQ login */\n+ 418 TDS_USER_SQLREPL = 0x40, /* replication login */\n+ 419 TDS_INTEGRATED_SECURITY_ON = 0x80\n+ 420};\n+ 421\n+ 422enum option_flag3_values {\n+ 423 TDS_RESTRICTED_COLLATION = 0,\n+ 424 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */\n+ 425 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */\n+ 426 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */\n+ 427 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */\n+ 428 TDS_EXTENSION = 0x10, /* TDS 7.4 */\n+ 429};\n+ 430\n+ 431enum type_flags {\n+ 432 TDS_OLEDB_ON = 0x10,\n+ 433 TDS_READONLY_INTENT = 0x20,\n+ 434};\n+ 435\n+ 436/* Sybase dynamic types */\n+ 437enum dynamic_types {\n+ 438 TDS_DYN_PREPARE = 0x01,\n+ 439 TDS_DYN_EXEC = 0x02,\n+ 440 TDS_DYN_DEALLOC = 0x04,\n+ 441 TDS_DYN_EXEC_IMMED = 0x08,\n+ 442 TDS_DYN_PROCNAME = 0x10,\n+ 443 TDS_DYN_ACK = 0x20,\n+ 444 TDS_DYN_DESCIN = 0x40,\n+ 445 TDS_DYN_DESCOUT = 0x80,\n+ 446};\n+ 447\n+ 448/* http://jtds.sourceforge.net/apiCursors.html */\n+ 449/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits\n+*/\n+ 450enum {\n+ 451 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */\n+ 452 TDS_CUR_TYPE_DYNAMIC = 0x0002,\n+ 453 TDS_CUR_TYPE_FORWARD = 0x0004,\n+ 454 TDS_CUR_TYPE_STATIC = 0x0008,\n+ 455 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,\n+ 456 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,\n+ 457 TDS_CUR_TYPE_AUTO_FETCH = 0x2000\n+ 458};\n+ 459\n+ 460enum {\n+ 461 TDS_CUR_CONCUR_READ_ONLY = 1,\n+ 462 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,\n+ 463 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */\n+ 464 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8\n+ 465};\n+ 466\n+ 467/* TDS 4/5 login*/\n+ 468#define TDS_MAXNAME 30 /* maximum login name lenghts */\n+ 469#define TDS_PROGNLEN 10 /* maximum program lenght */\n+ 470#define TDS_PKTLEN 6 /* maximum packet lenght in login */\n+ 471\n+ 472/* TDS 5 login security flags */\n+ 473enum {\n+ 474 TDS5_SEC_LOG_ENCRYPT = 1,\n+ 475 TDS5_SEC_LOG_CHALLENGE = 2,\n+ 476 TDS5_SEC_LOG_LABELS = 4,\n+ 477 TDS5_SEC_LOG_APPDEFINED = 8,\n+ 478 TDS5_SEC_LOG_SECSESS = 16,\n+ 479 TDS5_SEC_LOG_ENCRYPT2 = 32,\n+ 480 TDS5_SEC_LOG_ENCRYPT3 = 128,\n+ 481};\n+ 482\n+ 484enum {\n+ 485 TDS5_MSG_SEC_ENCRYPT = 1,\n+ 486 TDS5_MSG_SEC_LOGPWD = 2,\n+ 487 TDS5_MSG_SEC_REMPWD = 3,\n+ 488 TDS5_MSG_SEC_CHALLENGE = 4,\n+ 489 TDS5_MSG_SEC_RESPONSE = 5,\n+ 490 TDS5_MSG_SEC_GETLABEL = 6,\n+ 491 TDS5_MSG_SEC_LABEL = 7,\n+ 492 TDS5_MSG_SQL_TBLNAME = 8,\n+ 493 TDS5_MSG_GW_RESERVED = 9,\n+ 494 TDS5_MSG_OMNI_CAPABILITIES = 10,\n+ 495 TDS5_MSG_SEC_OPAQUE = 11,\n+ 496 TDS5_MSG_HAFAILOVER = 12,\n+ 497 TDS5_MSG_EMPTY = 13,\n+ 500 TDS5_MSG_SEC_ENCRYPT2 = 14,\n+ 501 TDS5_MSG_SEC_LOGPWD2 = 15,\n+ 502 TDS5_MSG_SEC_SUP_CIPHER = 16,\n+ 503 TDS5_MSG_MIG_REQ = 17,\n+ 505 TDS5_MSG_MIG_SYNC = 18,\n+ 506 TDS5_MSG_MIG_CONT = 19,\n+ 507 TDS5_MSG_MIG_IGN = 20,\n+ 508 TDS5_MSG_MIG_FAIL = 21,\n+ 510 TDS5_MSG_SEC_REMPWD2 = 22,\n+ 511 TDS5_MSG_MIG_RESUME = 23,\n+ 512 TDS5_MSG_SEC_ENCRYPT3 = 30,\n+ 513 TDS5_MSG_SEC_LOGPWD3 = 31,\n+ 514 TDS5_MSG_SEC_REMPWD3 = 32,\n+ 515 TDS5_MSG_DR_MAP = 33,\n+ 516};\n+ 517\n+ 528enum {\n+ 529 TDS5_SEC_SECSESS = 1,\n+ 530 TDS5_SEC_FORWARD = 2,\n+ 531 TDS5_SEC_SIGN = 3,\n+ 532 TDS5_SEC_OTHER = 4,\n+ 533};\n+ 534\n+ 538enum {\n+ 539 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,\n+ 540 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,\n+ 541 TDS5_SEC_DELEGATION = 0x4,\n+ 542 TDS5_SEC_INTEGRITY = 0x8,\n+ 543 TDS5_SEC_CONFIDENTIALITY = 0x10,\n+ 544 TDS5_SEC_DETECT_REPLAY = 0x20,\n+ 545 TDS5_SEC_DETECT_SEQUENCE = 0x40,\n+ 546 TDS5_SEC_DATA_ORIGIN = 0x80,\n+ 547 TDS5_SEC_CHANNEL_BINDING = 0x100,\n+ 548};\n+ 549\n+ 550enum {\n+ 551 TDS5_SEC_VERSION = 50,\n+ 552};\n+ 553\n+ 554/* MS encryption byte (pre login) */\n+ 555enum {\n+ 556 TDS7_ENCRYPT_OFF,\n+ 557 TDS7_ENCRYPT_ON,\n+ 558 TDS7_ENCRYPT_NOT_SUP,\n+ 559 TDS7_ENCRYPT_REQ,\n+ 560};\n+tdsnumeric\n+Definition proto.h:26\n+tdsoldmoney\n+Definition proto.h:33\n+tdsmoney\n+Definition proto.h:39\n+tdsmoney4\n+Definition proto.h:45\n+tdsdatetime\n+Definition proto.h:50\n+tdsdatetime4\n+Definition proto.h:56\n+tdsunique\n+Definition proto.h:62\n+TDS71_COLLATION\n+TDS 7.1 collation informations.\n+Definition proto.h:351\n+TDS72_SMP_HEADER\n+TDS 7.2 SMP packet header.\n+Definition proto.h:361\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00422_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00422_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/utils/dlist.tmpl.h Source File\n+FreeTDS API: include/freetds/stream.h Source File\n \n \n \n \n \n \n \n@@ -70,143 +70,145 @@\n \n \n \n \n \n \n \n
    \n-
    dlist.tmpl.h
    \n+
    stream.h
    \n
    \n
    \n-
    1/* Dlist - dynamic list
    \n-
    2 * Copyright (C) 2016 Frediano Ziglio
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 2013 Frediano Ziglio
    \n
    3 *
    \n-
    4 * This program is free software; you can redistribute it and/or modify
    \n-
    5 * it under the terms of the GNU General Public License as published by
    \n-
    6 * the Free Software Foundation; either version 2 of the License, or
    \n-
    7 * (at your option) any later version.
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n-
    9 * This program is distributed in the hope that it will be useful,
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    \n-
    12 * GNU General Public License for more details.
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n
    13 *
    \n-
    14 * You should have received a copy of the GNU General Public License
    \n-
    15 * along with this program; if not, write to the Free Software
    \n-
    16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    \n-
    17 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#include <freetds/bool.h>
    \n-
    21#include <freetds/utils.h>
    \n-
    22#include <freetds/macros.h>
    \n-
    23
    \n-
    24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_LIST_TYPE)
    \n-
    25#error Required defines for dlist missing!
    \n-
    26#endif
    \n-
    27
    \n-
    28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \\
    \n-
    29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)
    \n-
    30#error Some internal dlist macros already defined
    \n-
    31#endif
    \n-
    32
    \n-
    \n-
    33typedef struct
    \n-
    34{
    \n-
    35 dlist_ring ring;
    \n-\n+
    20#ifndef _freetds_stream_h_
    \n+
    21#define _freetds_stream_h_
    \n+
    22
    \n+
    23#ifndef _tds_h_
    \n+
    24#error Include tds.h first
    \n+
    25#endif
    \n+
    26
    \n+
    27#include <freetds/pushvis.h>
    \n+
    28
    \n+
    \n+
    30typedef struct tds_input_stream {
    \n+
    35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);
    \n+\n
    \n
    37
    \n-
    38#define DLIST_PASTER(x,y) x ## _ ## y
    \n-
    39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)
    \n-
    40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)
    \n-
    41#define DLIST_ITEM(ring) \\
    \n-
    42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_NAME(item))))
    \n-
    43
    \n-
    44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list)
    \n-
    45{
    \n-
    46#if ENABLE_EXTRA_CHECKS
    \n-
    47 assert(list != NULL);
    \n-
    48 dlist_ring_check(&list->ring);
    \n-
    49#endif
    \n-
    50}
    \n-
    51
    \n-
    52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)
    \n-
    53{
    \n-
    54 list->ring.next = list->ring.prev = &list->ring;
    \n-
    55 DLIST_NAME(check)(list);
    \n-
    56}
    \n-
    57
    \n-
    58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)
    \n-
    59{
    \n-
    60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);
    \n-
    61}
    \n-
    62
    \n-
    63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)
    \n-
    64{
    \n-
    65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);
    \n-
    66}
    \n-
    67
    \n-
    68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    69{
    \n-
    70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).next);
    \n-
    71}
    \n-
    72
    \n-
    73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    74{
    \n-
    75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).prev);
    \n-
    76}
    \n+
    \n+
    39typedef struct tds_output_stream {
    \n+
    41 int (*write)(struct tds_output_stream *stream, size_t len);
    \n+
    50 char *buffer;
    \n+
    51 size_t buf_len;
    \n+\n+
    \n+
    53
    \n+
    55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION direction,
    \n+
    56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);
    \n+
    58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);
    \n+
    59
    \n+
    60/* Additional streams */
    \n+
    61
    \n+
    \n+
    63typedef struct tds_datain_stream {
    \n+
    64 TDSINSTREAM stream;
    \n+
    65 size_t wire_size;
    \n+
    66 TDSSOCKET *tds;
    \n+\n+
    \n+
    68
    \n+
    69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds, size_t wire_size);
    \n+
    70
    \n+
    \n+
    72typedef struct tds_dataout_stream {
    \n+
    73 TDSOUTSTREAM stream;
    \n+
    74 TDSSOCKET *tds;
    \n+
    75 size_t written;
    \n+\n+
    \n
    77
    \n-
    78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    79{
    \n-
    80 DLIST_NAME(check)(list);
    \n-
    81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));
    \n-
    82 DLIST_NAME(check)(list);
    \n-
    83}
    \n-
    84
    \n-
    85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    86{
    \n-
    87 DLIST_NAME(check)(list);
    \n-
    88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));
    \n-
    89 DLIST_NAME(check)(list);
    \n-
    90}
    \n-
    91
    \n-
    92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    93{
    \n-
    94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME(item).next;
    \n-
    95 DLIST_NAME(check)(list);
    \n-
    96 if (prev) {
    \n-
    97 prev->next = next;
    \n-
    98 next->prev = prev;
    \n-
    99 }
    \n-
    100 item->DLIST_NAME(item).prev = NULL;
    \n-
    101 item->DLIST_NAME(item).next = NULL;
    \n-
    102 DLIST_NAME(check)(list);
    \n-
    103}
    \n-
    104
    \n-
    105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n-
    106{
    \n-
    107 DLIST_NAME(check)(list);
    \n-
    108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next != NULL;
    \n-
    109}
    \n+\n+
    79
    \n+
    \n+
    81typedef struct tds_staticin_stream {
    \n+
    82 TDSINSTREAM stream;
    \n+
    83 const char *buffer;
    \n+
    84 size_t buf_left;
    \n+\n+
    \n+
    86
    \n+
    87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr, size_t len);
    \n+
    88
    \n+
    \n+
    92typedef struct tds_staticout_stream {
    \n+
    93 TDSOUTSTREAM stream;
    \n+\n+
    \n+
    95
    \n+
    96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr, size_t len);
    \n+
    97
    \n+
    \n+
    99typedef struct tds_dynamic_stream {
    \n+
    100 TDSOUTSTREAM stream;
    \n+
    102 void **buf;
    \n+
    104 size_t allocated;
    \n+
    106 size_t size;
    \n+\n+
    \n+
    108
    \n+
    109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr, size_t allocated);
    \n
    110
    \n-
    111#undef DLIST_ITEM
    \n-
    112#undef DLIST_NAME
    \n-
    113#undef DLIST_ITEM_TYPE
    \n-
    114#undef DLIST_LIST_TYPE
    \n-
    115#undef DLIST_PREFIX
    \n-
    116#undef DLIST_PASTER
    \n-
    117#undef DLIST_EVALUATOR
    \n-
    118
    \n-
    Definition dlist.h:23
    \n-
    Definition dlist.tmpl.h:34
    \n+
    111#include <freetds/popvis.h>
    \n+
    112
    \n+
    113#endif
    \n+
    114
    \n+
    TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
    Initialize a dynamic output stream.
    Definition stream.c:354
    \n+
    TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
    Reads and writes from a stream to another.
    Definition stream.c:163
    \n+
    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
    \n+
    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
    \n+
    void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
    Initialize a data output stream.
    Definition stream.c:244
    \n+
    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
    \n+
    void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
    Initialize a data input stream.
    Definition stream.c:204
    \n+
    Definition iconv.h:92
    \n+
    define a stream of data used for input
    Definition stream.h:30
    \n+
    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
    \n+
    define a stream of data used for output
    Definition stream.h:39
    \n+
    char * buffer
    write buffer.
    Definition stream.h:50
    \n+
    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
    \n+
    input stream to read data from tds protocol
    Definition stream.h:63
    \n+
    size_t wire_size
    bytes still to read
    Definition stream.h:65
    \n+
    output stream to write data to tds protocol
    Definition stream.h:72
    \n+
    input stream to read data from a static buffer
    Definition stream.h:81
    \n+
    output stream to write data to a static buffer.
    Definition stream.h:92
    \n+
    output stream to write data to a dynamic buffer
    Definition stream.h:99
    \n+
    void ** buf
    where is stored the pointer
    Definition stream.h:102
    \n+
    size_t size
    size of data inside buffer
    Definition stream.h:106
    \n+
    size_t allocated
    currently allocated buffer
    Definition stream.h:104
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,146 +7,191 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n- * utils\n-dlist.tmpl.h\n- 1/* Dlist - dynamic list\n- 2 * Copyright (C) 2016 Frediano Ziglio\n+stream.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 2013 Frediano Ziglio\n 3 *\n- 4 * This program is free software; you can redistribute it and/or modify\n- 5 * it under the terms of the GNU General Public License as published by\n- 6 * the Free Software Foundation; either version 2 of the License, or\n- 7 * (at your option) any later version.\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n- 9 * This program is distributed in the hope that it will be useful,\n+ 9 * This library is distributed in the hope that it will be useful,\n 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n- 12 * GNU General Public License for more details.\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n 13 *\n- 14 * You should have received a copy of the GNU General Public License\n- 15 * along with this program; if not, write to the Free Software\n- 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n- 17 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#include \n- 21#include \n- 22#include \n- 23\n- 24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined\n-(DLIST_LIST_TYPE)\n- 25#error Required defines for dlist missing!\n- 26#endif\n- 27\n- 28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \\\n- 29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)\n- 30#error Some internal dlist macros already defined\n- 31#endif\n- 32\n-33typedef struct\n- 34{\n- 35 dlist_ring ring;\n- 36} DLIST_LIST_TYPE;\n+ 20#ifndef _freetds_stream_h_\n+ 21#define _freetds_stream_h_\n+ 22\n+ 23#ifndef _tds_h_\n+ 24#error Include tds.h first\n+ 25#endif\n+ 26\n+ 27#include \n+ 28\n+30typedef struct tds_input_stream {\n+35 int (*read)(struct tds_input_stream *stream, void *ptr, size_t len);\n+ 36} TDSINSTREAM;\n 37\n- 38#define DLIST_PASTER(x,y) x ## _ ## y\n- 39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)\n- 40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)\n- 41#define DLIST_ITEM(ring) \\\n- 42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE,\n-DLIST_NAME(item))))\n- 43\n- 44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list)\n- 45{\n- 46#if ENABLE_EXTRA_CHECKS\n- 47 assert(list != NULL);\n- 48 dlist_ring_check(&list->ring);\n- 49#endif\n- 50}\n- 51\n- 52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)\n- 53{\n- 54 list->ring.next = list->ring.prev = &list->ring;\n- 55 DLIST_NAME(check)(list);\n- 56}\n- 57\n- 58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)\n- 59{\n- 60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);\n- 61}\n- 62\n- 63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)\n- 64{\n- 65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);\n- 66}\n- 67\n- 68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list,\n-DLIST_ITEM_TYPE *item)\n- 69{\n- 70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item-\n->DLIST_NAME(item).next);\n- 71}\n- 72\n- 73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list,\n-DLIST_ITEM_TYPE *item)\n- 74{\n- 75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item-\n->DLIST_NAME(item).prev);\n- 76}\n+39typedef struct tds_output_stream {\n+41 int (*write)(struct tds_output_stream *stream, size_t len);\n+50 char *buffer;\n+ 51 size_t buf_len;\n+ 52} TDSOUTSTREAM;\n+ 53\n+ 55TDSRET tds_convert_stream(TDSSOCKET * tds, TDSICONV * char_conv,\n+TDS_ICONV_DIRECTION direction,\n+ 56 TDSINSTREAM * istream, TDSOUTSTREAM *ostream);\n+ 58TDSRET tds_copy_stream(TDSINSTREAM * istream, TDSOUTSTREAM * ostream);\n+ 59\n+ 60/* Additional streams */\n+ 61\n+63typedef struct tds_datain_stream {\n+ 64 TDSINSTREAM stream;\n+65 size_t wire_size;\n+ 66 TDSSOCKET *tds;\n+ 67} TDSDATAINSTREAM;\n+ 68\n+ 69void tds_datain_stream_init(TDSDATAINSTREAM * stream, TDSSOCKET * tds,\n+size_t wire_size);\n+ 70\n+72typedef struct tds_dataout_stream {\n+ 73 TDSOUTSTREAM stream;\n+ 74 TDSSOCKET *tds;\n+ 75 size_t written;\n+ 76} TDSDATAOUTSTREAM;\n 77\n- 78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list,\n-DLIST_ITEM_TYPE *item)\n- 79{\n- 80 DLIST_NAME(check)(list);\n- 81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));\n- 82 DLIST_NAME(check)(list);\n- 83}\n- 84\n- 85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE\n-*item)\n- 86{\n- 87 DLIST_NAME(check)(list);\n- 88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));\n- 89 DLIST_NAME(check)(list);\n- 90}\n- 91\n- 92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE\n-*item)\n- 93{\n- 94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME\n-(item).next;\n- 95 DLIST_NAME(check)(list);\n- 96 if (prev) {\n- 97 prev->next = next;\n- 98 next->prev = prev;\n- 99 }\n- 100 item->DLIST_NAME(item).prev = NULL;\n- 101 item->DLIST_NAME(item).next = NULL;\n- 102 DLIST_NAME(check)(list);\n- 103}\n- 104\n- 105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list,\n-DLIST_ITEM_TYPE *item)\n- 106{\n- 107 DLIST_NAME(check)(list);\n- 108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next\n-!= NULL;\n- 109}\n+ 78void tds_dataout_stream_init(TDSDATAOUTSTREAM * stream, TDSSOCKET * tds);\n+ 79\n+81typedef struct tds_staticin_stream {\n+ 82 TDSINSTREAM stream;\n+ 83 const char *buffer;\n+ 84 size_t buf_left;\n+ 85} TDSSTATICINSTREAM;\n+ 86\n+ 87void tds_staticin_stream_init(TDSSTATICINSTREAM * stream, const void *ptr,\n+size_t len);\n+ 88\n+92typedef struct tds_staticout_stream {\n+ 93 TDSOUTSTREAM stream;\n+ 94} TDSSTATICOUTSTREAM;\n+ 95\n+ 96void tds_staticout_stream_init(TDSSTATICOUTSTREAM * stream, void *ptr,\n+size_t len);\n+ 97\n+99typedef struct tds_dynamic_stream {\n+ 100 TDSOUTSTREAM stream;\n+102 void **buf;\n+104 size_t allocated;\n+106 size_t size;\n+ 107} TDSDYNAMICSTREAM;\n+ 108\n+ 109TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM * stream, void **ptr,\n+size_t allocated);\n 110\n- 111#undef DLIST_ITEM\n- 112#undef DLIST_NAME\n- 113#undef DLIST_ITEM_TYPE\n- 114#undef DLIST_LIST_TYPE\n- 115#undef DLIST_PREFIX\n- 116#undef DLIST_PASTER\n- 117#undef DLIST_EVALUATOR\n- 118\n-dlist_ring\n-Definition dlist.h:23\n-DLIST_LIST_TYPE\n-Definition dlist.tmpl.h:34\n+ 111#include \n+ 112\n+ 113#endif\n+ 114\n+tds_dynamic_stream_init\n+TDSRET tds_dynamic_stream_init(TDSDYNAMICSTREAM *stream, void **ptr, size_t\n+allocated)\n+Initialize a dynamic output stream.\n+Definition stream.c:354\n+tds_copy_stream\n+TDSRET tds_copy_stream(TDSINSTREAM *istream, TDSOUTSTREAM *ostream)\n+Reads and writes from a stream to another.\n+Definition stream.c:163\n+tds_convert_stream\n+TDSRET tds_convert_stream(TDSSOCKET *tds, TDSICONV *char_conv,\n+TDS_ICONV_DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream)\n+Reads and writes from a stream converting characters.\n+Definition stream.c:71\n+tds_staticout_stream_init\n+void tds_staticout_stream_init(TDSSTATICOUTSTREAM *stream, void *ptr, size_t\n+len)\n+Initialize an output stream for write into a static allocated buffer.\n+Definition stream.c:313\n+tds_dataout_stream_init\n+void tds_dataout_stream_init(TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)\n+Initialize a data output stream.\n+Definition stream.c:244\n+tds_staticin_stream_init\n+void tds_staticin_stream_init(TDSSTATICINSTREAM *stream, const void *ptr,\n+size_t len)\n+Initialize an input stream for read from a static allocated buffer.\n+Definition stream.c:286\n+tds_datain_stream_init\n+void tds_datain_stream_init(TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t\n+wire_size)\n+Initialize a data input stream.\n+Definition stream.c:204\n+tdsiconvinfo\n+Definition iconv.h:92\n+tds_input_stream\n+define a stream of data used for input\n+Definition stream.h:30\n+tds_input_stream::read\n+int(* read)(struct tds_input_stream *stream, void *ptr, size_t len)\n+read some data Return 0 if end of stream Return <0 if error (actually not\n+defined)\n+Definition stream.h:35\n+tds_output_stream\n+define a stream of data used for output\n+Definition stream.h:39\n+tds_output_stream::buffer\n+char * buffer\n+write buffer.\n+Definition stream.h:50\n+tds_output_stream::write\n+int(* write)(struct tds_output_stream *stream, size_t len)\n+write len bytes from buffer, return <0 if error or len\n+Definition stream.h:41\n+tds_datain_stream\n+input stream to read data from tds protocol\n+Definition stream.h:63\n+tds_datain_stream::wire_size\n+size_t wire_size\n+bytes still to read\n+Definition stream.h:65\n+tds_dataout_stream\n+output stream to write data to tds protocol\n+Definition stream.h:72\n+tds_staticin_stream\n+input stream to read data from a static buffer\n+Definition stream.h:81\n+tds_staticout_stream\n+output stream to write data to a static buffer.\n+Definition stream.h:92\n+tds_dynamic_stream\n+output stream to write data to a dynamic buffer\n+Definition stream.h:99\n+tds_dynamic_stream::buf\n+void ** buf\n+where is stored the pointer\n+Definition stream.h:102\n+tds_dynamic_stream::size\n+size_t size\n+size of data inside buffer\n+Definition stream.h:106\n+tds_dynamic_stream::allocated\n+size_t allocated\n+currently allocated buffer\n+Definition stream.h:104\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00425_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00425_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/configs.h Source File\n+FreeTDS API: include/freetds/tds.h Source File\n \n \n \n \n \n \n \n@@ -74,65 +74,1889 @@\n \n
    \n \n
    \n
    \n
    \n-
    configs.h
    \n+
    tds.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _tds_configs_h_
    \n-
    21#define _tds_configs_h_
    \n-
    22
    \n-
    23#include <freetds/sysconfdir.h>
    \n-
    24
    \n-
    25#ifndef _tds_h_
    \n-
    26#error freetds/tds.h must be included before freetds/configs.h
    \n-
    27#endif
    \n-
    28
    \n-
    29#ifdef __cplusplus
    \n-
    30extern "C"
    \n-
    31{
    \n-
    32#if 0
    \n-
    33}
    \n+Go to the documentation of this file.
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n+
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    21#ifndef _tds_h_
    \n+
    22#define _tds_h_
    \n+
    23
    \n+
    24#ifndef _freetds_config_h_
    \n+
    25#error should include config.h before
    \n+
    26#endif
    \n+
    27
    \n+
    28#include <stdarg.h>
    \n+
    29#include <stdio.h>
    \n+
    30#include <time.h>
    \n+
    31
    \n+
    32#ifdef HAVE_STDDEF_H
    \n+
    33#include <stddef.h>
    \n
    34#endif
    \n-
    35#endif
    \n-
    36
    \n-
    37#define FREETDS_SYSCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "freetds.conf"
    \n-
    38#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "pool.conf"
    \n-
    39#define FREETDS_LOCALECONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR "locales.conf"
    \n-
    40
    \n-
    41#ifdef __cplusplus
    \n-
    42#if 0
    \n-
    43{
    \n-
    44#endif
    \n-
    45}
    \n-
    46#endif
    \n-
    47
    \n-
    48#endif /* _tds_configs_h_ */
    \n+
    35
    \n+
    36#if HAVE_NETDB_H
    \n+
    37#include <netdb.h>
    \n+
    38#endif /* HAVE_NETDB_H */
    \n+
    39
    \n+
    40#if HAVE_NETINET_IN_H
    \n+
    41#include <netinet/in.h>
    \n+
    42#endif /* HAVE_NET_INET_IN_H */
    \n+
    43#if HAVE_ARPA_INET_H
    \n+
    44#include <arpa/inet.h>
    \n+
    45#endif /* HAVE_ARPA_INET_H */
    \n+
    46
    \n+
    47#if HAVE_SYS_SOCKET_H
    \n+
    48#include <sys/socket.h>
    \n+
    49#endif /* HAVE_SYS_SOCKET_H */
    \n+
    50
    \n+
    51/* forward declaration */
    \n+
    52typedef struct tdsiconvinfo TDSICONV;
    \n+
    53typedef struct tds_connection TDSCONNECTION;
    \n+
    54typedef struct tds_socket TDSSOCKET;
    \n+
    55typedef struct tds_column TDSCOLUMN;
    \n+
    56typedef struct tds_bcpinfo TDSBCPINFO;
    \n+
    57
    \n+
    58#include <freetds/version.h>
    \n+
    59#include <freetds/sysdep_private.h>
    \n+
    60#include <freetds/thread.h>
    \n+
    61#include <freetds/bool.h>
    \n+
    62#include <freetds/macros.h>
    \n+
    63#include <freetds/utils/string.h>
    \n+
    64#include <freetds/replacements.h>
    \n+
    65
    \n+
    66#include <freetds/pushvis.h>
    \n+
    67
    \n+
    68#ifdef __cplusplus
    \n+
    69extern "C"
    \n+
    70{
    \n+
    71#if 0
    \n+
    72}
    \n+
    73#endif
    \n+
    74#endif
    \n+
    75
    \n+
    \n+\n+
    82{
    \n+
    83 const char *freetds_version; /* release version of FreeTDS */
    \n+
    84 const char *sysconfdir; /* location of freetds.conf */
    \n+
    85 const char *last_update; /* latest software_version date among the modules */
    \n+
    86 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1) 5.0 */
    \n+
    87 bool msdblib; /* for MS style dblib */
    \n+
    88 bool sybase_compat; /* enable increased Open Client binary compatibility */
    \n+
    89 bool threadsafe; /* compile for thread safety default=no */
    \n+
    90 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */
    \n+
    91 bool iodbc; /* build odbc driver against iODBC in DIR */
    \n+
    92 bool unixodbc; /* build odbc driver against unixODBC in DIR */
    \n+
    93 bool openssl; /* build against OpenSSL */
    \n+
    94 bool gnutls; /* build against GnuTLS */
    \n+
    95 bool mars; /* MARS enabled */
    \n+
    96 bool sspi; /* SSPI enabled */
    \n+
    97 bool kerberos; /* Kerberos enabled */
    \n+\n+
    \n+
    99
    \n+
    115/*
    \n+
    116 * All references to data that touch the wire should use the following typedefs.
    \n+
    117 *
    \n+
    118 * If you have problems on 64-bit machines and the code is
    \n+
    119 * using a native datatype, please change it to use
    \n+
    120 * these. (In the TDS layer only, the API layers have their
    \n+
    121 * own typedefs which equate to these).
    \n+
    122 */
    \n+
    123typedef char TDS_CHAR; /* 8-bit char */
    \n+
    124typedef uint8_t TDS_UCHAR; /* 8-bit uchar */
    \n+
    125typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */
    \n+
    126typedef int16_t TDS_SMALLINT; /* 16-bit int */
    \n+
    127typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */
    \n+
    128typedef int32_t TDS_INT; /* 32-bit int */
    \n+
    129typedef uint32_t TDS_UINT; /* 32-bit unsigned */
    \n+
    130typedef int64_t TDS_INT8; /* 64-bit integer */
    \n+
    131typedef uint64_t TDS_UINT8; /* 64-bit unsigned */
    \n+
    132typedef intptr_t TDS_INTPTR;
    \n+
    133typedef uintptr_t TDS_UINTPTR;
    \n+
    134typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */
    \n+
    135typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */
    \n+
    136
    \n+
    137#include <freetds/proto.h>
    \n+
    138
    \n+
    139#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)
    \n+
    140
    \n+
    \n+
    145typedef struct
    \n+
    146{
    \n+
    147 TDS_UINT8 time;
    \n+
    148 TDS_INT date;
    \n+
    149 TDS_SMALLINT offset;
    \n+
    150 TDS_USMALLINT time_prec:3;
    \n+
    151 TDS_USMALLINT _tds_reserved:10;
    \n+
    152 TDS_USMALLINT has_time:1;
    \n+
    153 TDS_USMALLINT has_date:1;
    \n+
    154 TDS_USMALLINT has_offset:1;
    \n+\n+
    \n+
    156
    \n+
    \n+
    158typedef struct tdsdaterec
    \n+
    159{
    \n+
    160 TDS_INT year;
    \n+
    161 TDS_INT quarter;
    \n+
    162 TDS_INT month;
    \n+
    163 TDS_INT day;
    \n+
    164 TDS_INT dayofyear;
    \n+
    165 TDS_INT weekday;
    \n+
    166 TDS_INT hour;
    \n+
    167 TDS_INT minute;
    \n+
    168 TDS_INT second;
    \n+\n+
    170 TDS_INT timezone;
    \n+\n+
    \n+
    172
    \n+
    178extern const int tds_numeric_bytes_per_prec[];
    \n+
    179
    \n+
    180typedef int TDSRET;
    \n+
    181#define TDS_NO_MORE_RESULTS ((TDSRET)1)
    \n+
    182#define TDS_SUCCESS ((TDSRET)0)
    \n+
    183#define TDS_FAIL ((TDSRET)-1)
    \n+
    184#define TDS_CANCELLED ((TDSRET)-2)
    \n+
    185#define TDS_FAILED(rc) ((rc)<0)
    \n+
    186#define TDS_SUCCEED(rc) ((rc)>=0)
    \n+
    187#define TDS_PROPAGATE(rc) \\
    \n+
    188 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; } while(0)
    \n+
    189
    \n+
    190#define TDS_INT_CONTINUE 1
    \n+
    191#define TDS_INT_CANCEL 2
    \n+
    192#define TDS_INT_TIMEOUT 3
    \n+
    193
    \n+
    194
    \n+
    195#define TDS_NO_COUNT -1
    \n+
    196
    \n+
    197#define TDS_ROW_RESULT 4040
    \n+
    198#define TDS_PARAM_RESULT 4042
    \n+
    199#define TDS_STATUS_RESULT 4043
    \n+
    200#define TDS_MSG_RESULT 4044
    \n+
    201#define TDS_COMPUTE_RESULT 4045
    \n+
    202#define TDS_CMD_DONE 4046
    \n+
    203#define TDS_CMD_SUCCEED 4047
    \n+
    204#define TDS_CMD_FAIL 4048
    \n+
    205#define TDS_ROWFMT_RESULT 4049
    \n+
    206#define TDS_COMPUTEFMT_RESULT 4050
    \n+
    207#define TDS_DESCRIBE_RESULT 4051
    \n+
    208#define TDS_DONE_RESULT 4052
    \n+
    209#define TDS_DONEPROC_RESULT 4053
    \n+
    210#define TDS_DONEINPROC_RESULT 4054
    \n+
    211#define TDS_OTHERS_RESULT 4055
    \n+
    212
    \n+
    213enum tds_token_results
    \n+
    214{
    \n+
    215 TDS_TOKEN_RES_OTHERS,
    \n+
    216 TDS_TOKEN_RES_ROWFMT,
    \n+
    217 TDS_TOKEN_RES_COMPUTEFMT,
    \n+
    218 TDS_TOKEN_RES_PARAMFMT,
    \n+
    219 TDS_TOKEN_RES_DONE,
    \n+
    220 TDS_TOKEN_RES_ROW,
    \n+
    221 TDS_TOKEN_RES_COMPUTE,
    \n+
    222 TDS_TOKEN_RES_PROC,
    \n+
    223 TDS_TOKEN_RES_MSG,
    \n+
    224 TDS_TOKEN_RES_ENV,
    \n+
    225};
    \n+
    226
    \n+
    227#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
    \n+
    228
    \n+
    229enum tds_token_flags
    \n+
    230{
    \n+
    231 TDS_HANDLE_ALL = 0,
    \n+
    232 TDS_TOKEN_FLAG(OTHERS),
    \n+
    233 TDS_TOKEN_FLAG(ROWFMT),
    \n+
    234 TDS_TOKEN_FLAG(COMPUTEFMT),
    \n+
    235 TDS_TOKEN_FLAG(PARAMFMT),
    \n+
    236 TDS_TOKEN_FLAG(DONE),
    \n+
    237 TDS_TOKEN_FLAG(ROW),
    \n+
    238 TDS_TOKEN_FLAG(COMPUTE),
    \n+
    239 TDS_TOKEN_FLAG(PROC),
    \n+
    240 TDS_TOKEN_FLAG(MSG),
    \n+
    241 TDS_TOKEN_FLAG(ENV),
    \n+
    242 TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,
    \n+
    243 TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
    \n+
    244};
    \n+
    245
    \n+
    \n+\n+
    250{
    \n+
    251 TDS_DONE_FINAL = 0x00
    \n+\n+\n+\n+\n+\n+\n+
    258 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */
    \n+
    259 , TDS_DONE_SRVERROR = 0x100
    \n+
    261 /* after the above flags, a TDS_DONE packet has a field describing the state of the transaction */
    \n+
    262 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */
    \n+
    263 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */
    \n+
    264 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */
    \n+
    265 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */
    \n+
    266 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */
    \n+
    267};
    \n+
    \n+
    268
    \n+
    269
    \n+
    270/*
    \n+
    271 * TDSERRNO is emitted by libtds to the client library's error handler
    \n+
    272 * (which may in turn call the client's error handler).
    \n+
    273 * These match the db-lib msgno, because the same values have the same meaning
    \n+
    274 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).
    \n+
    275 */
    \n+
    276typedef enum { TDSEOK = TDS_SUCCESS,
    \n+
    277 TDSEVERDOWN = 100,
    \n+
    278 TDSEINPROGRESS,
    \n+
    279 TDSEICONVIU = 2400,
    \n+
    280 TDSEICONVAVAIL = 2401,
    \n+
    281 TDSEICONVO = 2402,
    \n+
    282 TDSEICONVI = 2403,
    \n+
    283 TDSEICONV2BIG = 2404,
    \n+
    284 TDSEPORTINSTANCE = 2500,
    \n+
    285 TDSESYNC = 20001,
    \n+
    286 TDSEFCON = 20002,
    \n+
    287 TDSETIME = 20003,
    \n+
    288 TDSEREAD = 20004,
    \n+
    289 TDSEWRIT = 20006,
    \n+
    290 TDSESOCK = 20008,
    \n+
    291 TDSECONN = 20009,
    \n+
    292 TDSEMEM = 20010,
    \n+
    293 TDSEINTF = 20012, /* Server name not found in interface file */
    \n+
    294 TDSEUHST = 20013, /* Unknown host machine name. */
    \n+
    295 TDSEPWD = 20014,
    \n+
    296 TDSESEOF = 20017,
    \n+
    297 TDSERPND = 20019,
    \n+
    298 TDSEBTOK = 20020,
    \n+
    299 TDSEOOB = 20022,
    \n+
    300 TDSECLOS = 20056,
    \n+
    301 TDSEUSCT = 20058,
    \n+
    302 TDSEUTDS = 20146,
    \n+
    303 TDSEEUNR = 20185,
    \n+
    304 TDSECAP = 20203,
    \n+
    305 TDSENEG = 20210,
    \n+
    306 TDSEUMSG = 20212,
    \n+
    307 TDSECAPTYP = 20213,
    \n+
    308 TDSECONF = 20214,
    \n+
    309 TDSEBPROBADTYP = 20250,
    \n+
    310 TDSECLOSEIN = 20292
    \n+
    311} TDSERRNO;
    \n+
    312
    \n+
    313
    \n+
    314enum {
    \n+
    315 TDS_CUR_ISTAT_UNUSED = 0x00,
    \n+
    316 TDS_CUR_ISTAT_DECLARED = 0x01,
    \n+
    317 TDS_CUR_ISTAT_OPEN = 0x02,
    \n+
    318 TDS_CUR_ISTAT_CLOSED = 0x04,
    \n+
    319 TDS_CUR_ISTAT_RDONLY = 0x08,
    \n+
    320 TDS_CUR_ISTAT_UPDATABLE = 0x10,
    \n+
    321 TDS_CUR_ISTAT_ROWCNT = 0x20,
    \n+
    322 TDS_CUR_ISTAT_DEALLOC = 0x40
    \n+
    323};
    \n+
    324
    \n+
    325/* string types */
    \n+
    326#define TDS_NULLTERM -9
    \n+
    327
    \n+
    328
    \n+
    \n+
    329typedef union tds_option_arg
    \n+
    330{
    \n+
    331 TDS_TINYINT ti;
    \n+
    332 TDS_INT i;
    \n+
    333 TDS_CHAR *c;
    \n+\n+
    \n+
    335
    \n+
    336
    \n+
    337typedef enum tds_encryption_level {
    \n+
    338 TDS_ENCRYPTION_DEFAULT,
    \n+
    339 TDS_ENCRYPTION_OFF,
    \n+
    340 TDS_ENCRYPTION_REQUEST,
    \n+
    341 TDS_ENCRYPTION_REQUIRE
    \n+
    342} TDS_ENCRYPTION_LEVEL;
    \n+
    343
    \n+
    344/*
    \n+
    345 * TODO use system macros for optimization
    \n+
    346 * See mcrypt for reference and linux kernel source for optimization
    \n+
    347 * check if unaligned access and use fast write/read when implemented
    \n+
    348 */
    \n+
    349#define TDS_BYTE_SWAP16(value) \\
    \n+
    350 (((((uint16_t)value)<<8) & 0xFF00u) | \\
    \n+
    351 ((((uint16_t)value)>>8) & 0x00FFu))
    \n+
    352
    \n+
    353#define TDS_BYTE_SWAP32(value) \\
    \n+
    354 (((((uint32_t)value)<<24) & 0xFF000000u)| \\
    \n+
    355 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \\
    \n+
    356 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \\
    \n+
    357 ((((uint32_t)value)>>24) & 0x000000FFu))
    \n+
    358
    \n+
    359#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <= TDS_DONEINPROC_TOKEN)
    \n+
    360
    \n+
    361enum {
    \n+
    362 TDS_TYPEFLAG_INVALID = 0,
    \n+
    363 TDS_TYPEFLAG_NULLABLE = 1,
    \n+
    364 TDS_TYPEFLAG_FIXED = 2,
    \n+
    365 TDS_TYPEFLAG_VARIABLE = 4,
    \n+
    366 TDS_TYPEFLAG_COLLATE = 8,
    \n+
    367 TDS_TYPEFLAG_ASCII = 16,
    \n+
    368 TDS_TYPEFLAG_UNICODE = 32,
    \n+
    369 TDS_TYPEFLAG_BINARY = 64,
    \n+
    370 TDS_TYPEFLAG_DATETIME = 128,
    \n+
    371 TDS_TYPEFLAG_NUMERIC = 256,
    \n+
    372 TDS_TYPEFLAG_VARIANT = 512,
    \n+
    373};
    \n+
    374
    \n+
    375extern const uint16_t tds_type_flags_ms[256];
    \n+
    376#if 0
    \n+
    377extern const uint16_t tds_type_flags_syb[256];
    \n+
    378extern const char *const tds_type_names[256];
    \n+
    379#endif
    \n+
    380
    \n+
    381#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)
    \n+
    382#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE) != 0)
    \n+
    383#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
    \n+
    384#define is_variant_inner_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIANT) != 0)
    \n+
    385
    \n+
    386
    \n+
    387#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)
    \n+
    388#define is_blob_col(x) ((x)->column_varint_size > 2)
    \n+
    389/* large type means it has a two byte size field */
    \n+
    390/* define is_large_type(x) (x>128) */
    \n+
    391#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)
    \n+
    393#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME) != 0)
    \n+
    394#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
    \n+
    395#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE) != 0)
    \n+
    396#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)
    \n+
    397#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) != 0)
    \n+
    398#define is_char_type(x) ((tds_type_flags_ms[x] & (TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)
    \n+
    399#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))
    \n+
    400static inline
    \n+
    401bool is_tds_type_valid(int type)
    \n+
    402{
    \n+
    403 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;
    \n+
    404}
    \n+
    405
    \n+
    406
    \n+
    407#define TDS_MAX_CAPABILITY 32
    \n+
    408#define MAXPRECISION 77
    \n+
    409#define TDS_MAX_CONN 4096
    \n+
    410#define TDS_MAX_DYNID_LEN 30
    \n+
    411
    \n+
    412/* defaults to use if no others are found */
    \n+
    413#define TDS_DEF_SERVER "SYBASE"
    \n+
    414#define TDS_DEF_BLKSZ 512
    \n+
    415#define TDS_DEF_CHARSET "iso_1"
    \n+
    416#define TDS_DEF_LANG "us_english"
    \n+
    417#if TDS50
    \n+
    418#define TDS_DEFAULT_VERSION 0x500
    \n+
    419#define TDS_DEF_PORT 4000
    \n+
    420#elif TDS71
    \n+
    421#define TDS_DEFAULT_VERSION 0x701
    \n+
    422#define TDS_DEF_PORT 1433
    \n+
    423#elif TDS72
    \n+
    424#define TDS_DEFAULT_VERSION 0x702
    \n+
    425#define TDS_DEF_PORT 1433
    \n+
    426#elif TDS73
    \n+
    427#define TDS_DEFAULT_VERSION 0x703
    \n+
    428#define TDS_DEF_PORT 1433
    \n+
    429#elif TDS74
    \n+
    430#define TDS_DEFAULT_VERSION 0x704
    \n+
    431#define TDS_DEF_PORT 1433
    \n+
    432#else
    \n+
    433#define TDS_DEFAULT_VERSION 0x000
    \n+
    434#define TDS_DEF_PORT 1433
    \n+
    435#endif
    \n+
    436
    \n+
    437/* normalized strings from freetds.conf file */
    \n+
    438#define TDS_STR_VERSION "tds version"
    \n+
    439#define TDS_STR_BLKSZ "initial block size"
    \n+
    440#define TDS_STR_SWAPDT "swap broken dates"
    \n+
    441#define TDS_STR_DUMPFILE "dump file"
    \n+
    442#define TDS_STR_DEBUGLVL "debug level"
    \n+
    443#define TDS_STR_DEBUGFLAGS "debug flags"
    \n+
    444#define TDS_STR_TIMEOUT "timeout"
    \n+
    445#define TDS_STR_QUERY_TIMEOUT "query timeout"
    \n+
    446#define TDS_STR_CONNTIMEOUT "connect timeout"
    \n+
    447#define TDS_STR_HOSTNAME "hostname"
    \n+
    448#define TDS_STR_HOST "host"
    \n+
    449#define TDS_STR_PORT "port"
    \n+
    450#define TDS_STR_TEXTSZ "text size"
    \n+
    451/* for big endian hosts, obsolete, ignored */
    \n+
    452#define TDS_STR_EMUL_LE "emulate little endian"
    \n+
    453#define TDS_STR_CHARSET "charset"
    \n+
    454#define TDS_STR_CLCHARSET "client charset"
    \n+
    455#define TDS_STR_USE_UTF_16 "use utf-16"
    \n+
    456#define TDS_STR_LANGUAGE "language"
    \n+
    457#define TDS_STR_APPENDMODE "dump file append"
    \n+
    458#define TDS_STR_DATEFMT "date format"
    \n+
    459#define TDS_STR_INSTANCE "instance"
    \n+
    460#define TDS_STR_ASA_DATABASE "asa database"
    \n+
    461#define TDS_STR_DATABASE "database"
    \n+
    462#define TDS_STR_ENCRYPTION "encryption"
    \n+
    463#define TDS_STR_USENTLMV2 "use ntlmv2"
    \n+
    464#define TDS_STR_USELANMAN "use lanman"
    \n+
    465/* conf values */
    \n+
    466#define TDS_STR_ENCRYPTION_OFF "off"
    \n+
    467#define TDS_STR_ENCRYPTION_REQUEST "request"
    \n+
    468#define TDS_STR_ENCRYPTION_REQUIRE "require"
    \n+
    469/* Defines to enable optional GSSAPI delegation */
    \n+
    470#define TDS_GSSAPI_DELEGATION "enable gssapi delegation"
    \n+
    471/* Mutual authentication */
    \n+
    472#define TDS_STR_MUTUAL_AUTHENTICATION "mutual authentication"
    \n+
    473/* Kerberos realm name */
    \n+
    474#define TDS_STR_REALM "realm"
    \n+
    475/* Kerberos SPN */
    \n+
    476#define TDS_STR_SPN "spn"
    \n+
    477/* CA file */
    \n+
    478#define TDS_STR_CAFILE "ca file"
    \n+
    479/* CRL file */
    \n+
    480#define TDS_STR_CRLFILE "crl file"
    \n+
    481/* check SSL hostname */
    \n+
    482#define TDS_STR_CHECKSSLHOSTNAME "check certificate hostname"
    \n+
    483/* database filename to attach on login (MSSQL) */
    \n+
    484#define TDS_STR_DBFILENAME "database filename"
    \n+
    485/* Application Intent MSSQL 2012 support */
    \n+
    486#define TDS_STR_READONLY_INTENT "read-only intent"
    \n+
    487/* configurable cipher suite to send to openssl's SSL_set_cipher_list() function */
    \n+
    488#define TLS_STR_OPENSSL_CIPHERS "openssl ciphers"
    \n+
    489/* enable old TLS v1, required for instance if you are using a really old Windows XP */
    \n+
    490#define TDS_STR_ENABLE_TLS_V1 "enable tls v1"
    \n+
    491
    \n+
    492
    \n+
    493/* TODO do a better check for alignment than this */
    \n+
    \n+
    494typedef union
    \n+
    495{
    \n+
    496 void *p;
    \n+
    497 int i;
    \n+
    498 int64_t ui;
    \n+\n+
    \n+
    500
    \n+
    501#define TDS_ALIGN_SIZE sizeof(tds_align_struct)
    \n+
    502
    \n+
    \n+\n+
    504{
    \n+
    505 unsigned char type;
    \n+
    506 unsigned char len; /* always sizeof(values) */
    \n+
    507 unsigned char values[TDS_MAX_CAPABILITY/2-2];
    \n+\n+
    \n+
    509
    \n+
    \n+
    510typedef struct tds_capabilities
    \n+
    511{
    \n+
    512 TDS_CAPABILITY_TYPE types[2];
    \n+\n+
    \n+
    514
    \n+
    515#define TDS_MAX_LOGIN_STR_SZ 128
    \n+
    \n+
    516typedef struct tds_login
    \n+
    517{
    \n+\n+
    519 int port;
    \n+
    520 TDS_USMALLINT tds_version;
    \n+
    521 int block_size;
    \n+
    522 DSTR language; /* e.g. us-english */
    \n+\n+
    524 TDS_INT connect_timeout;
    \n+
    525 DSTR client_host_name;
    \n+
    526 DSTR server_host_name;
    \n+\n+\n+\n+\n+\n+
    532 DSTR openssl_ciphers;
    \n+
    533 DSTR app_name;
    \n+\n+\n+\n+
    538 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */
    \n+
    539 TDS_TINYINT encryption_level;
    \n+
    540
    \n+
    541 TDS_INT query_timeout;
    \n+
    542 TDS_CAPABILITIES capabilities;
    \n+
    543 DSTR client_charset;
    \n+
    544 DSTR database;
    \n+
    545
    \n+
    546 struct addrinfo *ip_addrs;
    \n+
    547 DSTR instance_name;
    \n+
    548 DSTR dump_file;
    \n+
    549 int debug_flags;
    \n+
    550 int text_size;
    \n+
    551 DSTR routing_address;
    \n+
    552 uint16_t routing_port;
    \n+
    553
    \n+
    554 unsigned char option_flag2;
    \n+
    555
    \n+
    556 unsigned int bulk_copy:1;
    \n+
    557 unsigned int suppress_language:1;
    \n+
    558 unsigned int gssapi_use_delegation:1;
    \n+
    559 unsigned int mutual_authentication:1;
    \n+
    560 unsigned int use_ntlmv2:1;
    \n+
    561 unsigned int use_ntlmv2_specified:1;
    \n+
    562 unsigned int use_lanman:1;
    \n+
    563 unsigned int mars:1;
    \n+
    564 unsigned int use_utf16:1;
    \n+
    565 unsigned int use_new_password:1;
    \n+
    566 unsigned int valid_configuration:1;
    \n+
    567 unsigned int check_ssl_hostname:1;
    \n+
    568 unsigned int readonly_intent:1;
    \n+
    569 unsigned int enable_tls_v1:1;
    \n+
    570 unsigned int server_is_valid:1;
    \n+
    571} TDSLOGIN;
    \n+
    \n+
    572
    \n+
    \n+
    573typedef struct tds_headers
    \n+
    574{
    \n+
    575 const char *qn_options;
    \n+
    576 const char *qn_msgtext;
    \n+
    577 TDS_INT qn_timeout;
    \n+
    578 /* TDS 7.4+: trace activity ID char[20] */
    \n+
    579} TDSHEADERS;
    \n+
    \n+
    580
    \n+
    \n+
    581typedef struct tds_locale
    \n+
    582{
    \n+
    583 char *language;
    \n+
    584 char *server_charset;
    \n+
    585 char *date_fmt;
    \n+
    586} TDSLOCALE;
    \n+
    \n+
    587
    \n+
    \n+
    592typedef struct tds_blob
    \n+
    593{
    \n+
    594 TDS_CHAR *textvalue;
    \n+
    595 TDS_CHAR textptr[16];
    \n+
    596 TDS_CHAR timestamp[8];
    \n+
    597 unsigned char valid_ptr;
    \n+\n+
    \n+
    599
    \n+
    \n+
    603typedef struct tds_variant
    \n+
    604{
    \n+
    605 /* this MUST have same position and place of textvalue in tds_blob */
    \n+
    606 TDS_CHAR *data;
    \n+
    607 TDS_INT size;
    \n+
    608 TDS_INT data_len;
    \n+
    609 TDS_SERVER_TYPE type;
    \n+
    610 TDS_UCHAR collation[5];
    \n+\n+
    \n+
    612
    \n+
    \n+
    617typedef struct tds_encoding
    \n+
    618{
    \n+
    620 const char *name;
    \n+
    621 unsigned char min_bytes_per_char;
    \n+
    622 unsigned char max_bytes_per_char;
    \n+
    624 unsigned char canonic;
    \n+\n+
    \n+
    626
    \n+
    \n+
    627typedef struct tds_bcpcoldata
    \n+
    628{
    \n+
    629 TDS_UCHAR *data;
    \n+
    630 TDS_INT datalen;
    \n+
    631 bool is_null;
    \n+
    632} BCPCOLDATA;
    \n+
    \n+
    633
    \n+
    634
    \n+
    635typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);
    \n+
    636typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);
    \n+
    637typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);
    \n+
    638typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);
    \n+
    639typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);
    \n+
    640typedef int tds_func_check(const TDSCOLUMN *col);
    \n+
    641
    \n+
    \n+
    642typedef struct tds_column_funcs
    \n+
    643{
    \n+
    644 tds_func_get_info *get_info;
    \n+
    645 tds_func_get_data *get_data;
    \n+
    646 tds_func_row_len *row_len;
    \n+
    652 tds_func_put_info *put_info;
    \n+
    662 tds_func_put_data *put_data;
    \n+
    663#if ENABLE_EXTRA_CHECKS
    \n+
    678 tds_func_check *check;
    \n+
    679#endif
    \n+
    680#if 0
    \n+
    681 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);
    \n+
    682#endif
    \n+\n+
    \n+
    684
    \n+
    \n+\n+
    689{
    \n+
    690 const TDSCOLUMNFUNCS *funcs;
    \n+
    691 TDS_INT column_usertype;
    \n+
    692 TDS_INT column_flags;
    \n+
    693
    \n+
    694 TDS_INT column_size;
    \n+
    696 TDS_SERVER_TYPE column_type;
    \n+
    701 TDS_TINYINT column_varint_size;
    \n+
    703 TDS_TINYINT column_prec;
    \n+
    704 TDS_TINYINT column_scale;
    \n+
    706 struct
    \n+
    707 {
    \n+
    708 TDS_SERVER_TYPE column_type;
    \n+
    709 TDS_INT column_size;
    \n+
    710 } on_server;
    \n+
    711
    \n+\n+
    714 DSTR table_name;
    \n+
    715 DSTR column_name;
    \n+
    716 DSTR table_column_name;
    \n+
    717
    \n+
    718 unsigned char *column_data;
    \n+
    719 void (*column_data_free)(struct tds_column *column);
    \n+
    720 unsigned char column_nullable:1;
    \n+
    721 unsigned char column_writeable:1;
    \n+
    722 unsigned char column_identity:1;
    \n+
    723 unsigned char column_key:1;
    \n+
    724 unsigned char column_hidden:1;
    \n+
    725 unsigned char column_output:1;
    \n+
    726 unsigned char column_timestamp:1;
    \n+
    727 unsigned char column_computed:1;
    \n+
    728 TDS_UCHAR column_collation[5];
    \n+
    729
    \n+
    730 /* additional fields flags for compute results */
    \n+
    731 TDS_SMALLINT column_operand;
    \n+
    732 TDS_TINYINT column_operator;
    \n+
    733
    \n+
    734 /* FIXME this is data related, not column */
    \n+\n+
    737
    \n+
    738 /* related to binding or info stored by client libraries */
    \n+
    739 /* FIXME find a best place to store these data, some are unused */
    \n+
    740 TDS_SMALLINT column_bindtype;
    \n+
    741 TDS_SMALLINT column_bindfmt;
    \n+
    742 TDS_UINT column_bindlen;
    \n+
    743 TDS_SMALLINT *column_nullbind;
    \n+
    744 TDS_CHAR *column_varaddr;
    \n+
    745 TDS_INT *column_lenbind;
    \n+
    746 TDS_INT column_textpos;
    \n+
    747 TDS_INT column_text_sqlgetdatapos;
    \n+
    748 TDS_CHAR column_text_sqlputdatainfo;
    \n+
    749 unsigned char column_iconv_left;
    \n+
    750 char column_iconv_buf[9];
    \n+
    751
    \n+
    752 BCPCOLDATA *bcp_column_data;
    \n+\n+
    762 TDS_INT bcp_term_len;
    \n+
    763 TDS_CHAR *bcp_terminator;
    \n+
    764};
    \n+
    \n+
    765
    \n+
    766
    \n+
    \n+
    768typedef struct tds_result_info
    \n+
    769{
    \n+
    770 /* TODO those fields can became a struct */
    \n+
    771 TDSCOLUMN **columns;
    \n+
    772 TDS_USMALLINT num_cols;
    \n+
    773 TDS_USMALLINT computeid;
    \n+
    774 TDS_INT ref_count;
    \n+
    775 TDSSOCKET *attached_to;
    \n+
    776 unsigned char *current_row;
    \n+
    777 void (*row_free)(struct tds_result_info* result, unsigned char *row);
    \n+
    778 TDS_INT row_size;
    \n+
    779
    \n+
    780 TDS_SMALLINT *bycolumns;
    \n+
    781 TDS_USMALLINT by_cols;
    \n+
    782 bool rows_exist;
    \n+
    783 /* TODO remove ?? used only in dblib */
    \n+
    784 bool more_results;
    \n+\n+
    \n+
    786
    \n+
    \n+
    788typedef enum tds_states
    \n+
    789{
    \n+\n+\n+\n+\n+\n+
    795 TDS_DEAD
    \n+\n+
    \n+
    797
    \n+
    798typedef enum tds_operations
    \n+
    799{
    \n+
    800 TDS_OP_NONE = 0,
    \n+
    801
    \n+
    802 /* mssql operations */
    \n+
    803 TDS_OP_CURSOR = TDS_SP_CURSOR,
    \n+
    804 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,
    \n+
    805 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,
    \n+
    806 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,
    \n+
    807 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,
    \n+
    808 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,
    \n+
    809 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,
    \n+
    810 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,
    \n+
    811 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,
    \n+
    812 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,
    \n+
    813 TDS_OP_PREPARE = TDS_SP_PREPARE,
    \n+
    814 TDS_OP_EXECUTE = TDS_SP_EXECUTE,
    \n+
    815 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,
    \n+
    816 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,
    \n+
    817 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,
    \n+
    818
    \n+
    819 /* sybase operations */
    \n+
    820 TDS_OP_DYN_DEALLOC = 100,
    \n+
    821} TDS_OPERATION;
    \n+
    822
    \n+
    823#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)
    \n+
    824#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)
    \n+
    825#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)
    \n+
    826#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)
    \n+
    827#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)
    \n+
    828#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)
    \n+
    829#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)
    \n+
    830#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)
    \n+
    831#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)
    \n+
    832
    \n+
    833#define TDS_DBGFLAG_FUNC 0x80
    \n+
    834#define TDS_DBGFLAG_INFO2 0x40
    \n+
    835#define TDS_DBGFLAG_INFO1 0x20
    \n+
    836#define TDS_DBGFLAG_NETWORK 0x10
    \n+
    837#define TDS_DBGFLAG_WARN 0x08
    \n+
    838#define TDS_DBGFLAG_ERROR 0x04
    \n+
    839#define TDS_DBGFLAG_SEVERE 0x02
    \n+
    840#define TDS_DBGFLAG_ALL 0xfff
    \n+
    841#define TDS_DBGFLAG_LOGIN 0x0800
    \n+
    842#define TDS_DBGFLAG_HEADER 0x0400
    \n+
    843#define TDS_DBGFLAG_PID 0x1000
    \n+
    844#define TDS_DBGFLAG_TIME 0x2000
    \n+
    845#define TDS_DBGFLAG_SOURCE 0x4000
    \n+
    846#define TDS_DBGFLAG_THREAD 0x8000
    \n+
    847
    \n+
    848#if 0
    \n+
    854enum TDS_DBG_LOG_STATE
    \n+
    855{
    \n+
    856 TDS_DBG_LOGIN = (1 << 0)
    \n+
    858 , TDS_DBG_API = (1 << 1)
    \n+
    859 , TDS_DBG_ASYNC = (1 << 2)
    \n+
    860 , TDS_DBG_DIAG = (1 << 3)
    \n+
    861 , TDS_DBG_error = (1 << 4)
    \n+
    862 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */
    \n+
    863 /* Log FreeTDS runtime/logic error occurs. */
    \n+
    864 , TDS_DBG_PACKET = (1 << 5)
    \n+
    865 , TDS_DBG_LIBTDS = (1 << 6)
    \n+
    866 , TDS_DBG_CONFIG = (1 << 7)
    \n+
    867 , TDS_DBG_DEFAULT = 0xFE
    \n+
    868};
    \n+
    869#endif
    \n+
    870
    \n+
    871typedef struct tds_result_info TDSCOMPUTEINFO;
    \n+
    872
    \n+\n+
    874
    \n+
    \n+
    875typedef struct tds_message
    \n+
    876{
    \n+
    877 TDS_CHAR *server;
    \n+
    878 TDS_CHAR *message;
    \n+
    879 TDS_CHAR *proc_name;
    \n+
    880 TDS_CHAR *sql_state;
    \n+
    881 TDS_INT msgno;
    \n+
    882 TDS_INT line_number;
    \n+
    883 /* -1 .. 255 */
    \n+
    884 TDS_SMALLINT state;
    \n+
    885 TDS_TINYINT priv_msg_type;
    \n+
    886 TDS_TINYINT severity;
    \n+
    887 /* for library-generated errors */
    \n+
    888 int oserr;
    \n+
    889} TDSMESSAGE;
    \n+
    \n+
    890
    \n+
    \n+
    891typedef struct tds_upd_col
    \n+
    892{
    \n+
    893 struct tds_upd_col *next;
    \n+
    894 TDS_INT colnamelength;
    \n+
    895 char * columnname;
    \n+
    896} TDSUPDCOL;
    \n+
    \n+
    897
    \n+
    898typedef enum {
    \n+
    899 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */
    \n+
    900 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */
    \n+
    901 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */
    \n+
    902 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */
    \n+
    903} TDS_CURSOR_STATE;
    \n+
    904
    \n+
    \n+
    905typedef struct tds_cursor_status
    \n+
    906{
    \n+
    907 TDS_CURSOR_STATE declare;
    \n+
    908 TDS_CURSOR_STATE cursor_row;
    \n+
    909 TDS_CURSOR_STATE open;
    \n+
    910 TDS_CURSOR_STATE fetch;
    \n+
    911 TDS_CURSOR_STATE close;
    \n+
    912 TDS_CURSOR_STATE dealloc;
    \n+\n+
    \n+
    914
    \n+
    915typedef enum tds_cursor_operation
    \n+
    916{
    \n+
    917 TDS_CURSOR_POSITION = 0,
    \n+
    918 TDS_CURSOR_UPDATE = 1,
    \n+
    919 TDS_CURSOR_DELETE = 2,
    \n+
    920 TDS_CURSOR_INSERT = 4
    \n+
    921} TDS_CURSOR_OPERATION;
    \n+
    922
    \n+
    923typedef enum tds_cursor_fetch
    \n+
    924{
    \n+
    925 TDS_CURSOR_FETCH_NEXT = 1,
    \n+
    926 TDS_CURSOR_FETCH_PREV,
    \n+
    927 TDS_CURSOR_FETCH_FIRST,
    \n+
    928 TDS_CURSOR_FETCH_LAST,
    \n+
    929 TDS_CURSOR_FETCH_ABSOLUTE,
    \n+
    930 TDS_CURSOR_FETCH_RELATIVE
    \n+
    931} TDS_CURSOR_FETCH;
    \n+
    932
    \n+
    \n+
    936typedef struct tds_cursor
    \n+
    937{
    \n+
    938 struct tds_cursor *next;
    \n+
    939 TDS_INT ref_count;
    \n+\n+
    941 TDS_INT cursor_id;
    \n+
    942 TDS_TINYINT options;
    \n+\n+
    947 char *query;
    \n+
    948 /* TODO for updatable columns */
    \n+
    949 /* TDS_TINYINT number_upd_cols; */
    \n+
    950 /* TDSUPDCOL *cur_col_list; */
    \n+
    951 TDS_INT cursor_rows;
    \n+
    952 /* TDSPARAMINFO *params; */
    \n+\n+
    954 TDS_USMALLINT srv_status;
    \n+
    955 TDSRESULTINFO *res_info;
    \n+
    956 TDS_INT type, concurrency;
    \n+\n+
    \n+
    958
    \n+
    \n+
    962typedef struct tds_env
    \n+
    963{
    \n+\n+
    966 char *language;
    \n+
    968 char *charset;
    \n+
    970 char *database;
    \n+\n+
    \n+
    972
    \n+
    \n+
    976typedef struct tds_dynamic
    \n+
    977{
    \n+\n+
    979 TDS_INT ref_count;
    \n+
    981 TDS_INT num_id;
    \n+
    987 char id[30];
    \n+
    993 TDS_TINYINT emulated;
    \n+\n+
    998 /* int dyn_state; */ /* TODO use it */
    \n+\n+\n+
    1009 char *query;
    \n+\n+
    \n+
    1011
    \n+
    1012typedef enum {
    \n+
    1013 TDS_MULTIPLE_QUERY,
    \n+
    1014 TDS_MULTIPLE_EXECUTE,
    \n+
    1015 TDS_MULTIPLE_RPC
    \n+
    1016} TDS_MULTIPLE_TYPE;
    \n+
    1017
    \n+
    \n+
    1018typedef struct tds_multiple
    \n+
    1019{
    \n+
    1020 TDS_MULTIPLE_TYPE type;
    \n+
    1021 unsigned int flags;
    \n+
    1022} TDSMULTIPLE;
    \n+
    \n+
    1023
    \n+
    1024/* forward declaration */
    \n+
    1025typedef struct tds_context TDSCONTEXT;
    \n+
    1026typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n+
    1027
    \n+
    \n+\n+
    1029{
    \n+
    1030 TDSLOCALE *locale;
    \n+
    1031 void *parent;
    \n+
    1032 /* handlers */
    \n+
    1033 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n+
    1034 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);
    \n+
    1035 int (*int_handler) (void *);
    \n+
    1036 bool money_use_2_digits;
    \n+
    1037};
    \n+
    \n+
    1038
    \n+
    1039enum TDS_ICONV_ENTRY
    \n+
    1040{
    \n+
    1041 client2ucs2
    \n+
    1042 , client2server_chardata
    \n+
    1043 , initial_char_conv_count /* keep last */
    \n+
    1044};
    \n+
    1045
    \n+
    \n+\n+
    1047{
    \n+
    1048 uint8_t *packet;
    \n+
    1049 int packet_len;
    \n+
    1050 /* TDS_MSG_TOKEN type, for TDS5 */
    \n+
    1051 uint16_t msg_type;
    \n+
    1052 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);
    \n+
    1053 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth, size_t len);
    \n+\n+
    \n+
    1055
    \n+
    \n+
    1056typedef struct tds_packet
    \n+
    1057{
    \n+
    1058 struct tds_packet *next;
    \n+
    1059 uint16_t sid;
    \n+
    1060
    \n+
    1061#if ENABLE_ODBC_MARS
    \n+
    1065 uint8_t data_start;
    \n+
    1066#endif
    \n+
    1067
    \n+
    1071 unsigned data_len;
    \n+
    1072 unsigned capacity;
    \n+
    1073 unsigned char buf[1];
    \n+
    1074} TDSPACKET;
    \n+
    \n+
    1075
    \n+
    1076#if ENABLE_ODBC_MARS
    \n+
    1077#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; } while(0)
    \n+
    1078#define tds_packet_get_data_start(pkt) ((pkt)->data_start)
    \n+
    1079#else
    \n+
    1080#define tds_packet_zero_data_start(pkt) do { } while(0)
    \n+
    1081#define tds_packet_get_data_start(pkt) 0
    \n+
    1082#endif
    \n+
    1083
    \n+
    \n+
    1084typedef struct tds_poll_wakeup
    \n+
    1085{
    \n+
    1086 TDS_SYS_SOCKET s_signal, s_signaled;
    \n+\n+
    \n+
    1088
    \n+
    1089/* field related to connection */
    \n+
    \n+\n+
    1091{
    \n+
    1092 TDS_USMALLINT tds_version;
    \n+\n+
    1094 char *product_name;
    \n+
    1095
    \n+
    1096 TDS_SYS_SOCKET s;
    \n+
    1097 TDSPOLLWAKEUP wakeup;
    \n+
    1098 const TDSCONTEXT *tds_ctx;
    \n+
    1099
    \n+\n+
    1102
    \n+\n+\n+
    1113
    \n+
    1114 int char_conv_count;
    \n+
    1115 TDSICONV **char_convs;
    \n+
    1116
    \n+
    1117 TDS_UCHAR collation[5];
    \n+
    1118 TDS_UCHAR tds72_transaction[8];
    \n+
    1119
    \n+
    1120 TDS_CAPABILITIES capabilities;
    \n+
    1121 unsigned int use_iconv:1;
    \n+
    1122 unsigned int tds71rev1:1;
    \n+
    1123 unsigned int pending_close:1;
    \n+
    1124 unsigned int encrypt_single_packet:1;
    \n+
    1125#if ENABLE_ODBC_MARS
    \n+
    1126 unsigned int mars:1;
    \n+
    1127
    \n+
    1128 TDSSOCKET *in_net_tds;
    \n+
    1129 TDSPACKET *packets;
    \n+
    1130 TDSPACKET *recv_packet;
    \n+
    1131 TDSPACKET *send_packets;
    \n+
    1132 unsigned send_pos, recv_pos;
    \n+
    1133
    \n+
    1134#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)
    \n+
    1135#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)
    \n+
    1136 struct tds_socket **sessions;
    \n+
    1137 unsigned num_sessions;
    \n+
    1138#endif
    \n+
    1139 tds_mutex list_mtx;
    \n+
    1140
    \n+
    1141 unsigned num_cached_packets;
    \n+
    1142 TDSPACKET *packet_cache;
    \n+
    1143
    \n+
    1144 int spid;
    \n+
    1145 int client_spid;
    \n+
    1146
    \n+
    1147 void *tls_session;
    \n+
    1148#if defined(HAVE_GNUTLS)
    \n+
    1149 void *tls_credentials;
    \n+
    1150#elif defined(HAVE_OPENSSL)
    \n+
    1151 void *tls_ctx;
    \n+
    1152#else
    \n+
    1153 void *tls_dummy;
    \n+
    1154#endif
    \n+
    1155 TDSAUTHENTICATION *authentication;
    \n+
    1156 char *server;
    \n+
    1157};
    \n+
    \n+
    1158
    \n+
    \n+\n+
    1163{
    \n+
    1164#if ENABLE_ODBC_MARS
    \n+
    1165 TDSCONNECTION *conn;
    \n+
    1166#else
    \n+
    1167 TDSCONNECTION conn[1];
    \n+
    1168#endif
    \n+
    1169
    \n+
    1170 void *parent;
    \n+
    1171
    \n+
    1177 unsigned char *in_buf;
    \n+
    1178
    \n+
    1185 unsigned char *out_buf;
    \n+
    1186
    \n+
    1191 unsigned int out_buf_max;
    \n+
    1192 unsigned in_pos;
    \n+
    1193 unsigned out_pos;
    \n+
    1194 unsigned in_len;
    \n+
    1195 unsigned char in_flag;
    \n+
    1196 unsigned char out_flag;
    \n+
    1198 unsigned frozen;
    \n+\n+
    1204
    \n+
    1205#if ENABLE_ODBC_MARS
    \n+
    1210 uint16_t sid;
    \n+
    1211
    \n+
    1216 tds_condition packet_cond;
    \n+
    1217
    \n+
    1222 TDSPACKET *sending_packet;
    \n+
    1223 TDS_UINT recv_seq;
    \n+
    1224 TDS_UINT send_seq;
    \n+
    1225 TDS_UINT recv_wnd;
    \n+
    1226 TDS_UINT send_wnd;
    \n+
    1227#endif
    \n+
    1228 /* packet we received */
    \n+
    1229 TDSPACKET *recv_packet;
    \n+\n+
    1232
    \n+\n+
    1239 TDSRESULTINFO *res_info;
    \n+
    1240 TDS_UINT num_comp_info;
    \n+
    1241 TDSCOMPUTEINFO **comp_info;
    \n+
    1242 TDSPARAMINFO *param_info;
    \n+\n+\n+\n+
    1246 bool in_row;
    \n+
    1247 volatile
    \n+
    1248 unsigned char in_cancel;
    \n+
    1250 TDS_INT ret_status;
    \n+
    1251 TDS_STATE state;
    \n+
    1252
    \n+
    1253 TDS_INT query_timeout;
    \n+
    1254 TDS_INT8 rows_affected;
    \n+\n+\n+
    1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char *newval);
    \n+
    1261 TDS_OPERATION current_op;
    \n+
    1262
    \n+
    1263 int option_value;
    \n+
    1264 tds_mutex wire_mtx;
    \n+
    1265};
    \n+
    \n+
    1266
    \n+
    1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)
    \n+
    1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while(0)
    \n+
    1269#define tds_get_parent(tds) ((tds)->parent)
    \n+
    1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)
    \n+
    1271#define tds_get_s(tds) ((tds)->conn->s)
    \n+
    1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)
    \n+
    1273
    \n+
    1274
    \n+
    1275/* config.c */
    \n+\n+
    1277typedef void (*TDSCONFPARSE) (const char *option, const char *value, void *param);
    \n+
    1278bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param);
    \n+
    1279bool tds_read_conf_file(TDSLOGIN * login, const char *server);
    \n+
    1280void tds_parse_conf_section(const char *option, const char *value, void *param);
    \n+
    1281TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login, TDSLOCALE * locale);
    \n+
    1282void tds_fix_login(TDSLOGIN* login);
    \n+
    1283TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);
    \n+
    1284struct addrinfo *tds_lookup_host(const char *servername);
    \n+
    1285TDSRET tds_lookup_host_set(const char *servername, struct addrinfo **addr);
    \n+
    1286const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int namemax);
    \n+
    1287char *tds_get_home_file(const char *file);
    \n+
    1288
    \n+
    1289TDSRET tds_set_interfaces_file_loc(const char *interfloc);
    \n+
    1290extern const char STD_DATETIME_FMT[];
    \n+
    1291int tds_parse_boolean(const char *value, int default_value);
    \n+
    1292int tds_config_boolean(const char *option, const char *value, TDSLOGIN * login);
    \n+
    1293
    \n+\n+
    1295TDSRET tds_alloc_row(TDSRESULTINFO * res_info);
    \n+
    1296TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);
    \n+
    1297BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);
    \n+
    1298TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);
    \n+
    1299/*@observer@*/ const char *tds_prtype(int token);
    \n+
    1300int tds_get_varint_size(TDSCONNECTION * conn, int datatype);
    \n+
    1301TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int usertype);
    \n+
    1302
    \n+
    1303
    \n+
    1304/* iconv.c */
    \n+
    1305TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int use_utf16);
    \n+
    1306void tds_iconv_close(TDSCONNECTION * conn);
    \n+
    1307void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);
    \n+
    1308void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
    \n+
    1309int tds_iconv_alloc(TDSCONNECTION * conn);
    \n+
    1310void tds_iconv_free(TDSCONNECTION * conn);
    \n+
    1311TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate[5]);
    \n+
    1312
    \n+
    1313
    \n+
    1314/* mem.c */
    \n+
    1315void tds_free_socket(TDSSOCKET * tds);
    \n+
    1316void tds_free_all_results(TDSSOCKET * tds);
    \n+
    1317void tds_free_results(TDSRESULTINFO * res_info);
    \n+
    1318void tds_free_param_results(TDSPARAMINFO * param_info);
    \n+
    1319void tds_free_param_result(TDSPARAMINFO * param_info);
    \n+
    1320void tds_free_msg(TDSMESSAGE * message);
    \n+
    1321void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);
    \n+
    1322void tds_release_cursor(TDSCURSOR **pcursor);
    \n+
    1323void tds_free_bcp_column_data(BCPCOLDATA * coldata);
    \n+
    1324TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);
    \n+
    1325TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT num_cols, TDS_USMALLINT by_cols);
    \n+
    1326TDSCONTEXT *tds_alloc_context(void * parent);
    \n+
    1327void tds_free_context(TDSCONTEXT * locale);
    \n+\n+\n+
    1330void tds_release_dynamic(TDSDYNAMIC ** dyn);
    \n+
    1331static inline
    \n+
    1332void tds_release_cur_dyn(TDSSOCKET * tds)
    \n+
    1333{
    \n+\n+
    1335}
    \n+
    1336void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);
    \n+
    1337void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);
    \n+
    1338TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);
    \n+
    1339char *tds_alloc_client_sqlstate(int msgno);
    \n+
    1340char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);
    \n+
    1341TDSLOGIN *tds_alloc_login(int use_environment);
    \n+
    1342TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);
    \n+
    1343void tds_free_login(TDSLOGIN * login);
    \n+
    1344TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);
    \n+
    1345TDSLOCALE *tds_alloc_locale(void);
    \n+
    1346void *tds_alloc_param_data(TDSCOLUMN * curparam);
    \n+
    1347void tds_free_locale(TDSLOCALE * locale);
    \n+
    1348TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen);
    \n+
    1349void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);
    \n+
    1350TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);
    \n+
    1351TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);
    \n+
    1352void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);
    \n+\n+
    1354void * tds_realloc(void **pp, size_t new_size);
    \n+
    1355#define TDS_RESIZE(p, n_elem) \\
    \n+
    1356 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))
    \n+
    1357#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))
    \n+
    1358#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))
    \n+
    1359
    \n+
    1360TDSPACKET *tds_alloc_packet(void *buf, unsigned len);
    \n+
    1361TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);
    \n+
    1362void tds_free_packets(TDSPACKET *packet);
    \n+
    1363TDSBCPINFO *tds_alloc_bcpinfo(void);
    \n+
    1364void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);
    \n+
    1365void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);
    \n+
    1366
    \n+
    1367
    \n+
    1368/* login.c */
    \n+
    1369void tds_set_packet(TDSLOGIN * tds_login, int packet_size);
    \n+
    1370void tds_set_port(TDSLOGIN * tds_login, int port);
    \n+
    1371bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;
    \n+
    1372void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);
    \n+
    1373bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;
    \n+
    1374bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;
    \n+
    1375bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;
    \n+
    1376bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;
    \n+
    1377bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;
    \n+
    1378bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset) TDS_WUR;
    \n+
    1379bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;
    \n+
    1380void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver);
    \n+
    1381int tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);
    \n+
    1382
    \n+
    1383
    \n+
    1384/* query.c */
    \n+
    1385void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);
    \n+
    1386
    \n+
    1387TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);
    \n+
    1388TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
    \n+
    1389TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);
    \n+
    1390TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
    \n+
    1391TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query, TDSPARAMINFO * params, TDSHEADERS * head);
    \n+
    1392TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);
    \n+
    1393TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);
    \n+
    1394TDSRET tds_send_cancel(TDSSOCKET * tds);
    \n+
    1395const char *tds_next_placeholder(const char *start);
    \n+
    1396int tds_count_placeholders(const char *query);
    \n+\n+
    1398TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);
    \n+
    1399TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);
    \n+
    1400TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * params, TDSHEADERS * head);
    \n+
    1401TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);
    \n+
    1402TDSRET tds_submit_begin_tran(TDSSOCKET *tds);
    \n+
    1403TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont);
    \n+
    1404TDSRET tds_submit_commit(TDSSOCKET *tds, int cont);
    \n+
    1405TDSRET tds_disconnect(TDSSOCKET * tds);
    \n+
    1406size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
    \n+
    1407size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int idlen);
    \n+
    1408size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str, int len);
    \n+
    1409const char *tds_skip_comment(const char *s);
    \n+
    1410const char *tds_skip_quoted(const char *s);
    \n+
    1411size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);
    \n+
    1412const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv, const char *s, int len, size_t *out_len);
    \n+
    1413void tds_convert_string_free(const char *original, const char *converted);
    \n+
    1414#if !ENABLE_EXTRA_CHECKS
    \n+
    1415#define tds_convert_string_free(original, converted) \\
    \n+
    1416 do { if (original != converted) free((char*) converted); } while(0)
    \n+
    1417#endif
    \n+
    1418TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol, char *out);
    \n+
    1419
    \n+
    1420TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, int *send);
    \n+
    1421TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, int *send);
    \n+
    1422TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO *params, int *send);
    \n+
    1423TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);
    \n+
    1424TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_UINT * row_number, TDS_UINT * row_count);
    \n+
    1425TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n+
    1426TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n+\n+
    1428TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);
    \n+
    1429TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);
    \n+
    1430
    \n+
    1431TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS * head);
    \n+
    1432TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);
    \n+
    1433TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO * params);
    \n+
    1434TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC * dyn);
    \n+
    1435
    \n+
    1436
    \n+
    1437/* token.c */
    \n+
    1438TDSRET tds_process_cancel(TDSSOCKET * tds);
    \n+
    1439int tds_get_token_size(int marker);
    \n+\n+\n+
    1442int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,
    \n+
    1443 TDS_INT * tds_argsize);
    \n+
    1444TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT * result_type, /*@out@*/ int *done_flags, unsigned flag);
    \n+
    1445
    \n+
    1446
    \n+
    1447/* data.c */
    \n+
    1448void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
    \n+
    1449void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol, TDS_SERVER_TYPE type);
    \n+
    1450#ifdef WORDS_BIGENDIAN
    \n+
    1451void tds_swap_datatype(int coltype, void *b);
    \n+
    1452#endif
    \n+
    1453
    \n+
    1454
    \n+
    1455/* tds_convert.c */
    \n+
    1456TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);
    \n+
    1457TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize);
    \n+
    1458extern const char tds_hex_digits[];
    \n+
    1459
    \n+
    1460
    \n+
    1461/* write.c */
    \n+
    1462int tds_init_write_buf(TDSSOCKET * tds);
    \n+
    1463int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);
    \n+
    1464int tds_put_string(TDSSOCKET * tds, const char *buf, int len);
    \n+
    1465int tds_put_int(TDSSOCKET * tds, TDS_INT i);
    \n+
    1466int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);
    \n+
    1467int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);
    \n+
    1469#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)
    \n+
    1470int tds_put_byte(TDSSOCKET * tds, unsigned char c);
    \n+
    1471TDSRET tds_flush_packet(TDSSOCKET * tds);
    \n+
    1472int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int ssize);
    \n+
    1473
    \n+
    1474
    \n+
    1475/* read.c */
    \n+
    1476unsigned char tds_get_byte(TDSSOCKET * tds);
    \n+
    1477void tds_unget_byte(TDSSOCKET * tds);
    \n+
    1478unsigned char tds_peek(TDSSOCKET * tds);
    \n+
    1479TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);
    \n+
    1480#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))
    \n+
    1481TDS_UINT tds_get_uint(TDSSOCKET * tds);
    \n+
    1482#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))
    \n+
    1483TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);
    \n+
    1484#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))
    \n+
    1485size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest, size_t dest_size);
    \n+
    1486TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size, TDSCOLUMN * curcol);
    \n+
    1487bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t n);
    \n+
    1488int tds_get_size_by_type(TDS_SERVER_TYPE servertype);
    \n+
    1489DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);
    \n+
    1490
    \n+
    1491
    \n+
    1492/* util.c */
    \n+
    1493int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int errnum);
    \n+\n+
    1495void tds_swap_bytes(void *buf, int bytes);
    \n+
    1496unsigned int tds_gettime_ms(void);
    \n+
    1497char *tds_strndup(const void *s, TDS_INTPTR len);
    \n+
    1498
    \n+
    1499
    \n+
    1500/* log.c */
    \n+
    \n+
    1501typedef struct tdsdump_off_item {
    \n+
    1502 struct tdsdump_off_item *next;
    \n+
    1503 tds_thread_id thread_id;
    \n+\n+
    \n+
    1505void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);
    \n+
    1506void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);
    \n+
    1507int tdsdump_isopen(void);
    \n+
    1508#include <freetds/popvis.h>
    \n+
    1509int tdsdump_open(const char *filename);
    \n+
    1510#include <freetds/pushvis.h>
    \n+
    1511void tdsdump_close(void);
    \n+
    1512void tdsdump_dump_buf(const char* file, unsigned int level_line, const char *msg, const void *buf, size_t length);
    \n+
    1513void tdsdump_col(const TDSCOLUMN *col);
    \n+
    1514#undef tdsdump_log
    \n+
    1515void tdsdump_log(const char* file, unsigned int level_line, const char *fmt, ...)
    \n+
    1516#if defined(__GNUC__) && __GNUC__ >= 2
    \n+
    1517#if defined(__MINGW32__)
    \n+
    1518 __attribute__ ((__format__ (ms_printf, 3, 4)))
    \n+
    1519#else
    \n+
    1520 __attribute__ ((__format__ (__printf__, 3, 4)))
    \n+
    1521#endif
    \n+
    1522#endif
    \n+
    1523;
    \n+
    1524#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log
    \n+
    1525#define tdsdump_log TDSDUMP_LOG_FAST
    \n+
    1526#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_dump_buf
    \n+
    1527#define tdsdump_dump_buf TDSDUMP_BUF_FAST
    \n+
    1528
    \n+
    1529extern int tds_write_dump;
    \n+
    1530extern int tds_debug_flags;
    \n+
    1531extern int tds_g_append_mode;
    \n+
    1532
    \n+
    1533
    \n+
    1534/* net.c */
    \n+
    1535TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr);
    \n+
    1536void tds_close_socket(TDSSOCKET * tds);
    \n+
    1537int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);
    \n+
    1538int tds7_get_instance_port(struct addrinfo *addr, const char *instance);
    \n+
    1539char *tds_prwsaerror(int erc);
    \n+
    1540void tds_prwsaerror_free(char *s);
    \n+
    1541int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);
    \n+
    1542int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int buflen, int final);
    \n+
    1543#define TDSSELREAD POLLIN
    \n+
    1544#define TDSSELWRITE POLLOUT
    \n+
    1545int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);
    \n+
    1546void tds_connection_close(TDSCONNECTION *conn);
    \n+
    1547int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);
    \n+
    1548int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t buflen);
    \n+
    1549void tds_socket_flush(TDS_SYS_SOCKET sock);
    \n+
    1550int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);
    \n+
    1551int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);
    \n+
    1552void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);
    \n+
    1553void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);
    \n+
    1554static inline TDS_SYS_SOCKET tds_wakeup_get_fd(const TDSPOLLWAKEUP *wakeup)
    \n+
    1555{
    \n+
    1556 return wakeup->s_signaled;
    \n+
    1557}
    \n+
    1558
    \n+
    1559
    \n+
    1560/* packet.c */
    \n+
    1561int tds_read_packet(TDSSOCKET * tds);
    \n+
    1562TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);
    \n+
    1563#if ENABLE_ODBC_MARS
    \n+
    1564int tds_append_cancel(TDSSOCKET *tds);
    \n+
    1565TDSRET tds_append_syn(TDSSOCKET *tds);
    \n+
    1566TDSRET tds_append_fin(TDSSOCKET *tds);
    \n+
    1567#else
    \n+
    1568int tds_put_cancel(TDSSOCKET * tds);
    \n+
    1569#endif
    \n+
    1570
    \n+
    \n+
    1571typedef struct tds_freeze {
    \n+\n+\n+
    1577 unsigned pkt_pos;
    \n+
    1579 unsigned size_len;
    \n+
    1580} TDSFREEZE;
    \n+
    \n+
    1581
    \n+
    1582void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);
    \n+
    1583size_t tds_freeze_written(TDSFREEZE *freeze);
    \n+
    1584TDSRET tds_freeze_abort(TDSFREEZE *freeze);
    \n+
    1585TDSRET tds_freeze_close(TDSFREEZE *freeze);
    \n+
    1586TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);
    \n+
    1587
    \n+
    1588static void inline
    \n+
    1589tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)
    \n+
    1590{
    \n+
    1591 tds->send_packet = pkt;
    \n+
    1592 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);
    \n+
    1593}
    \n+
    1594
    \n+
    1595/* Macros to allow some indentation of the packets.
    \n+
    1596 *
    \n+
    1597 * The 3 nested fake loops require some explanation:
    \n+
    1598 * - first is to allows to declare variables;
    \n+
    1599 * - second is to force using brackets;
    \n+
    1600 * - third is to avoids that a break inside will skip the close.
    \n+
    1601 */
    \n+
    1602#define TDS_START_LEN_GENERIC(tds_socket, len) do { \\
    \n+
    1603 TDSFREEZE current_freeze[1]; \\
    \n+
    1604 tds_freeze((tds_socket), current_freeze, (len)); do { do
    \n+
    1605#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze), 0); } while(0);
    \n+
    1606
    \n+
    1607#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 1)
    \n+
    1608#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 2)
    \n+
    1609#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket, 4)
    \n+
    1610
    \n+
    1611/* vstrbuild.c */
    \n+
    1612TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char *text, int textlen, const char *formats, int formatlen,
    \n+
    1613 va_list ap);
    \n+
    1614
    \n+
    1615
    \n+
    1616/* numeric.c */
    \n+
    1617char *tds_money_to_string(const TDS_MONEY * money, char *s, bool use_2_digits);
    \n+
    1618TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);
    \n+
    1619TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char new_prec, unsigned char new_scale);
    \n+
    1620
    \n+
    1621
    \n+
    1622/* getmac.c */
    \n+
    1623void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);
    \n+
    1624
    \n+
    1625
    \n+
    1626/* challenge.c */
    \n+
    1627#ifndef HAVE_SSPI
    \n+\n+
    1629TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);
    \n+
    1630#else
    \n+
    1631TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);
    \n+
    1632#endif
    \n+
    1633TDSRET tds5_gss_send(TDSSOCKET *tds);
    \n+
    1634
    \n+
    1635
    \n+
    1636/* random.c */
    \n+
    1637void tds_random_buffer(unsigned char *out, int len);
    \n+
    1638
    \n+
    1639
    \n+
    1640/* sec_negotiate.c */
    \n+
    1641TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);
    \n+
    1642static inline
    \n+
    1643void tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned msg_type)
    \n+
    1644{
    \n+
    1645 if (tds_auth)
    \n+
    1646 tds_auth->msg_type = msg_type;
    \n+
    1647}
    \n+
    1648
    \n+
    1649
    \n+
    1650/* bulk.c */
    \n+
    1651
    \n+
    \n+\n+
    1654{
    \n+
    1655 TDS_BCP_IN = 1,
    \n+
    1656 TDS_BCP_OUT = 2,
    \n+
    1657 TDS_BCP_QUERYOUT = 3
    \n+
    1658};
    \n+
    \n+
    1659
    \n+
    \n+\n+
    1661{
    \n+
    1662 const char *hint;
    \n+
    1663 void *parent;
    \n+
    1664 DSTR tablename;
    \n+
    1665 TDS_CHAR *insert_stmt;
    \n+
    1666 TDS_INT direction;
    \n+
    1667 TDS_INT identity_insert_on;
    \n+
    1668 TDS_INT xfer_init;
    \n+
    1669 TDS_INT bind_count;
    \n+
    1670 TDSRESULTINFO *bindinfo;
    \n+
    1671};
    \n+
    \n+
    1672
    \n+
    1673TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n+
    1674typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN *bcpcol, int offset);
    \n+
    1675typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int offset);
    \n+
    1676TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);
    \n+
    1677TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);
    \n+
    1678TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n+
    1679TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);
    \n+
    1680
    \n+
    1681TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,
    \n+
    1682 const char *terminator, size_t term_len, char **outbuf, size_t * outbytes);
    \n+
    1683
    \n+
    1684TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size);
    \n+
    1685TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size);
    \n+
    1686TDSRET tds_writetext_end(TDSSOCKET *tds);
    \n+
    1687
    \n+
    1688
    \n+
    1689static inline
    \n+
    1690bool tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
    \n+
    1691{
    \n+
    1692 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) & 1;
    \n+
    1693}
    \n+
    1694#define tds_capability_has_req(conn, cap) \\
    \n+
    1695 tds_capability_enabled(&conn->capabilities.types[0], cap)
    \n+
    1696#define tds_capability_has_res(conn, cap) \\
    \n+
    1697 tds_capability_enabled(&conn->capabilities.types[1], cap)
    \n+
    1698
    \n+
    1699#define IS_TDS42(x) (x->tds_version==0x402)
    \n+
    1700#define IS_TDS46(x) (x->tds_version==0x406)
    \n+
    1701#define IS_TDS50(x) (x->tds_version==0x500)
    \n+
    1702#define IS_TDS70(x) (x->tds_version==0x700)
    \n+
    1703#define IS_TDS71(x) (x->tds_version==0x701)
    \n+
    1704#define IS_TDS72(x) (x->tds_version==0x702)
    \n+
    1705#define IS_TDS73(x) (x->tds_version==0x703)
    \n+
    1706
    \n+
    1707#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)
    \n+
    1708#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)
    \n+
    1709#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)
    \n+
    1710#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)
    \n+
    1711#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)
    \n+
    1712#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)
    \n+
    1713
    \n+
    1714#define TDS_MAJOR(x) ((x)->tds_version >> 8)
    \n+
    1715#define TDS_MINOR(x) ((x)->tds_version & 0xff)
    \n+
    1716
    \n+
    1717#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)
    \n+
    1718
    \n+
    1720#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))
    \n+
    1722#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)
    \n+
    1723
    \n+
    1727#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))
    \n+
    1728
    \n+
    1729/* TODO test if not similar to ms one*/
    \n+
    1731#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)
    \n+
    1732
    \n+
    1733#ifdef __cplusplus
    \n+
    1734#if 0
    \n+
    1735{
    \n+
    1736#endif
    \n+
    1737}
    \n+
    1738#endif
    \n+
    1739
    \n+
    1740#include <freetds/popvis.h>
    \n+
    1741
    \n+
    1742#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))
    \n+
    1743#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)(v)))
    \n+
    1744#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))
    \n+
    1745
    \n+
    1746#endif /* _tds_h_ */
    \n+
    int tds_iconv_alloc(TDSCONNECTION *conn)
    Allocate iconv stuff.
    Definition iconv.c:307
    \n+
    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
    \n+
    char * tds_strndup(const void *s, TDS_INTPTR len)
    Copy a string of length len to a new allocated buffer This function does not read more than len bytes...
    Definition util.c:406
    \n+
    TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)
    Set state of TDS connection, with logging and checking.
    Definition util.c:58
    \n+
    struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
    A structure to hold all the compile-time settings.
    \n+
    struct tds_result_info TDSRESULTINFO
    Hold information for any results.
    \n+
    int tdsdump_open(const char *filename)
    Create and truncate a human readable dump file for the TDS traffic.
    Definition log.c:131
    \n+
    struct tds_variant TDSVARIANT
    Store variant informations.
    \n+
    void tdsdump_close(void)
    Close the TDS dump log file.
    Definition log.c:212
    \n+
    void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
    Set type of column initializing all dependency.
    Definition data.c:224
    \n+
    bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR
    Set the servername in a TDSLOGIN structure.
    Definition login.c:129
    \n+
    struct tdsdaterec TDSDATEREC
    Used by tds_datecrack.
    \n+
    TDSLOCALE * tds_get_locale(void)
    Get locale information.
    Definition locale.c:50
    \n+
    struct tds_env TDSENV
    Current environment as reported by the server.
    \n+
    int tds_write_dump
    Tell if TDS debug logging is turned on or off.
    Definition log.c:58
    \n+
    struct tds_blob TDSBLOB
    Information about blobs (e.g.
    \n+
    int tds_get_size_by_type(TDS_SERVER_TYPE servertype)
    Return the number of bytes needed by specified type.
    Definition tds_types.h:9
    \n+
    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:41
    \n+
    TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Start bulk copy to server.
    Definition bulk.c:916
    \n+
    TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)
    Definition numeric.c:95
    \n+
    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
    \n+
    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:1147
    \n+
    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:1077
    \n+
    TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Start sending BCP data to server.
    Definition bulk.c:866
    \n+
    struct tds_dynamic TDSDYNAMIC
    Holds information for a dynamic (also called prepared) query.
    \n+
    void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
    Set type of column initializing all dependency.
    Definition data.c:246
    \n+
    tds_states
    values for tds->state
    Definition tds.h:789
    \n+
    @ TDS_PENDING
    cilent is waiting for data
    Definition tds.h:793
    \n+
    @ TDS_SENDING
    client would send data
    Definition tds.h:792
    \n+
    @ TDS_READING
    client is reading data
    Definition tds.h:794
    \n+
    @ TDS_WRITING
    client is writing data
    Definition tds.h:791
    \n+
    @ TDS_IDLE
    no data expected
    Definition tds.h:790
    \n+
    @ TDS_DEAD
    no connection
    Definition tds.h:795
    \n+
    tds_end
    Flags returned in TDS_DONE token.
    Definition tds.h:250
    \n+
    @ TDS_DONE_CANCELLED
    acknowledging an attention command (usually a cancel)
    Definition tds.h:257
    \n+
    @ TDS_DONE_MORE_RESULTS
    more results follow
    Definition tds.h:252
    \n+
    @ TDS_DONE_SRVERROR
    SQL server server error.
    Definition tds.h:259
    \n+
    @ TDS_DONE_FINAL
    final result set, command completed successfully.
    Definition tds.h:251
    \n+
    @ TDS_DONE_ERROR
    error occurred
    Definition tds.h:253
    \n+
    @ TDS_DONE_INXACT
    transaction in progress
    Definition tds.h:254
    \n+
    @ TDS_DONE_PROC
    results are from a stored procedure
    Definition tds.h:255
    \n+
    @ TDS_DONE_COUNT
    count field in packet is valid
    Definition tds.h:256
    \n+
    void tdsdump_col(const TDSCOLUMN *col)
    Write a column value to the debug log.
    Definition log.c:455
    \n+
    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:1185
    \n+
    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
    \n+
    enum tds_states TDS_STATE
    values for tds->state
    \n+
    TDSRET tds_writetext_end(TDSSOCKET *tds)
    Finish sending writetext data.
    Definition bulk.c:1202
    \n+
    TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    Initialize BCP information.
    Definition bulk.c:84
    \n+
    tds_bcp_directions
    bcp direction
    Definition tds.h:1654
    \n+
    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:468
    \n+
    TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)
    Tell we finished sending BCP data to server.
    Definition bulk.c:836
    \n+
    struct tds_encoding TDS_ENCODING
    Information relevant to libiconv.
    \n+
    void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)
    Temporarily turn off logging for current thread.
    Definition log.c:81
    \n+
    void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)
    Turn logging back on for current thread.
    Definition log.c:101
    \n+
    struct tds_cursor TDSCURSOR
    Holds informations about a cursor.
    \n+
    TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)
    Build a NTLMSPP packet to send to server.
    Definition challenge.c:721
    \n+
    TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)
    Set TDS version from given string.
    Definition config.c:923
    \n+
    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:1344
    \n+
    struct addrinfo * tds_lookup_host(const char *servername)
    Get the IP address for a hostname.
    Definition config.c:987
    \n+
    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:503
    \n+
    bool tds_read_conf_file(TDSLOGIN *login, const char *server)
    Read configuration info for given server return 0 on error.
    Definition config.c:346
    \n+
    TDSRET tds_set_interfaces_file_loc(const char *interfloc)
    Set the full name of interface file.
    Definition config.c:961
    \n+
    char * tds_get_home_file(const char *file)
    Return filename from HOME directory.
    Definition config.c:325
    \n+
    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
    \n+
    void tds_fix_login(TDSLOGIN *login)
    Fix configuration after reading it.
    Definition config.c:285
    \n+
    TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)
    Convert from db date format to a structured date format.
    Definition convert.c:3172
    \n+
    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:1245
    \n+
    TDSRET tds_alloc_row(TDSRESULTINFO *res_info)
    Allocate space for row store return NULL on out of memory.
    Definition mem.c:524
    \n+
    void tds_detach_results(TDSRESULTINFO *info)
    Detach result info from it current socket.
    Definition mem.c:488
    \n+
    TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)
    Adds a output parameter to TDSPARAMINFO.
    Definition mem.c:284
    \n+
    void * tds_alloc_param_data(TDSCOLUMN *curparam)
    Allocate data for a parameter.
    Definition mem.c:364
    \n+
    TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)
    Initialize login structure with locale information and other stuff for connection.
    Definition mem.c:800
    \n+
    void tds_free_param_result(TDSPARAMINFO *param_info)
    Delete latest parameter.
    Definition mem.c:320
    \n+
    TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)
    Allocate a dynamic statement.
    Definition mem.c:160
    \n+
    void * tds_realloc(void **pp, size_t new_size)
    Reallocate a pointer and update it if success.
    Definition mem.c:1876
    \n+
    void tds_free_input_params(TDSDYNAMIC *dyn)
    Frees all allocated input parameters of a dynamic statement.
    Definition mem.c:206
    \n+
    void tds_release_dynamic(TDSDYNAMIC **dyn)
    Frees dynamic statement.
    Definition mem.c:253
    \n+
    int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
    Check if dynamic request must be unprepared.
    Definition query.c:1752
    \n+
    const char * tds_skip_quoted(const char *s)
    Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd])
    Definition query.c:515
    \n+
    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:1401
    \n+
    void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)
    Start query packet of a given type.
    Definition query.c:332
    \n+
    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:2026
    \n+
    TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Sends a previously prepared dynamic statement to the server.
    Definition query.c:1630
    \n+
    size_t tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol)
    Get column size for wire.
    Definition query.c:1491
    \n+
    TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)
    Return declaration for column (like "varchar(20)").
    Definition query.c:718
    \n+
    TDSRET tds_submit_commit(TDSSOCKET *tds, int cont)
    Send a commit request.
    Definition query.c:3724
    \n+
    TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)
    Deallocate cursor on idle.
    Definition query.c:3057
    \n+
    TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)
    Sends a language string to the database server for processing.
    Definition query.c:210
    \n+
    TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)
    Calls a RPC from server.
    Definition query.c:1929
    \n+
    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:2216
    \n+
    size_t tds_quote_string(TDSSOCKET *tds, char *buffer, const char *str, int len)
    Quote a string.
    Definition query.c:2241
    \n+
    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:1124
    \n+
    TDSRET tds_submit_begin_tran(TDSSOCKET *tds)
    Send a rollback request.
    Definition query.c:3665
    \n+
    size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)
    Quote an id.
    Definition query.c:2171
    \n+
    const char * tds_next_placeholder(const char *start)
    Get position of next placeholder.
    Definition query.c:535
    \n+
    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:350
    \n+
    TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont)
    Send a rollback request.
    Definition query.c:3693
    \n+
    TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)
    Unprepare dynamic on idle.
    Definition query.c:1774
    \n+
    int tds_count_placeholders(const char *query)
    Count the number of placeholders ('?') in a query.
    Definition query.c:571
    \n+
    TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)
    Send a deallocation request to server.
    Definition query.c:3006
    \n+
    const char * tds_skip_comment(const char *s)
    Skip a comment in a query.
    Definition query.c:490
    \n+
    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
    \n+
    TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)
    Format and submit a query.
    Definition query.c:467
    \n+
    TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)
    Submit a prepared query with parameters.
    Definition query.c:1256
    \n+
    void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Set current dynamic.
    Definition query.c:192
    \n+
    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:3389
    \n+
    TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)
    Send a unprepare request for a prepared query.
    Definition query.c:1797
    \n+
    DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)
    Reads a string from wire and put in a DSTR.
    Definition read.c:293
    \n+
    unsigned char tds_get_byte(TDSSOCKET *tds)
    Return a single byte from the input buffer.
    Definition read.c:72
    \n+
    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
    \n+
    unsigned char tds_peek(TDSSOCKET *tds)
    Reads a byte from the TDS stream without removing it.
    Definition read.c:100
    \n+
    TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)
    Stop keeping data for this specific freeze.
    Definition packet.c:1031
    \n+
    int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
    Definition net.c:985
    \n+
    int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)
    Set socket to non-blocking.
    Definition net.c:168
    \n+
    void tds_close_socket(TDSSOCKET *tds)
    Close current socket.
    Definition net.c:548
    \n+
    int tds_read_packet(TDSSOCKET *tds)
    Read in one 'packet' from the server.
    Definition packet.c:527
    \n+
    size_t tds_freeze_written(TDSFREEZE *freeze)
    Compute how many bytes has been written from freeze.
    Definition packet.c:935
    \n+
    TDSRET tds_flush_packet(TDSSOCKET *tds)
    Flush packet to server.
    Definition write.c:224
    \n+
    TDSRET tds_freeze_close(TDSFREEZE *freeze)
    Stop keeping data for this specific freeze.
    Definition packet.c:996
    \n+
    int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)
    Loops until we have received some characters return -1 on failure.
    Definition net.c:914
    \n+
    TDSRET tds_freeze_abort(TDSFREEZE *freeze)
    Discard all data written after the freeze.
    Definition packet.c:961
    \n+
    TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)
    Get an uint64 from the server.
    Definition read.c:140
    \n+
    TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
    Fetch character data the wire.
    Definition read.c:195
    \n+
    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:166
    \n+
    int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)
    Get port of all instances.
    Definition net.c:1091
    \n+
    TDS_UINT tds_get_uint(TDSSOCKET *tds)
    Get an int32 from the server.
    Definition read.c:127
    \n+
    int tds7_get_instance_port(struct addrinfo *addr, const char *instance)
    Get port of given instance.
    Definition net.c:1227
    \n+
    TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)
    Get an int16 from the server.
    Definition read.c:113
    \n+
    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
    \n+
    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:610
    \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:230
    \n+
    const char * tds_prtype(int token)
    Returns string representation of the given type.
    Definition token.c:3056
    \n+
    TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)
    Finds a dynamic given string id.
    Definition token.c:2587
    \n+
    TDSRET tds_process_login_tokens(TDSSOCKET *tds)
    tds_process_login_tokens() is called after sending the login packet to the server.
    Definition token.c:411
    \n+
    int tds_get_token_size(int marker)
    tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determi...
    Definition token.c:2754
    \n+
    TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
    process all streams.
    Definition token.c:531
    \n+
    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:881
    \n+
    TDSRET tds_process_cancel(TDSSOCKET *tds)
    Definition token.c:2554
    \n+
    Definition iconv.h:92
    \n+
    Definition proto.h:26
    \n+
    Definition proto.h:39
    \n+
    A structure to hold all the compile-time settings.
    Definition tds.h:82
    \n+
    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.
    Definition tds.h:146
    \n+
    TDS_INT date
    date, 0 = 1900-01-01
    Definition tds.h:148
    \n+
    TDS_SMALLINT offset
    time offset
    Definition tds.h:149
    \n+
    TDS_UINT8 time
    time, 7 digit precision
    Definition tds.h:147
    \n+
    Used by tds_datecrack.
    Definition tds.h:159
    \n+
    TDS_INT dayofyear
    day of year (1-366)
    Definition tds.h:164
    \n+
    TDS_INT weekday
    day of week (0-6, 0 = sunday)
    Definition tds.h:165
    \n+
    TDS_INT year
    year
    Definition tds.h:160
    \n+
    TDS_INT timezone
    -840 - 840 minutes from UTC
    Definition tds.h:170
    \n+
    TDS_INT minute
    0-59
    Definition tds.h:167
    \n+
    TDS_INT day
    day of month (1-31)
    Definition tds.h:163
    \n+
    TDS_INT decimicrosecond
    0-9999999
    Definition tds.h:169
    \n+
    TDS_INT second
    0-59
    Definition tds.h:168
    \n+
    TDS_INT quarter
    quarter (0-3)
    Definition tds.h:161
    \n+
    TDS_INT hour
    0-23
    Definition tds.h:166
    \n+
    TDS_INT month
    month number (0-11)
    Definition tds.h:162
    \n+
    Definition tds.h:330
    \n+
    Definition tds.h:495
    \n+
    Definition tds.h:504
    \n+
    Definition tds.h:511
    \n+
    Definition tds.h:517
    \n+
    DSTR crlfile
    certificate revocation file
    Definition tds.h:531
    \n+
    DSTR server_realm_name
    server realm name (in freetds.conf)
    Definition tds.h:527
    \n+
    DSTR user_name
    account for login
    Definition tds.h:534
    \n+
    DSTR password
    password of account login
    Definition tds.h:535
    \n+
    DSTR db_filename
    database filename to attach (MSSQL)
    Definition tds.h:529
    \n+
    DSTR server_name
    server name (in freetds.conf)
    Definition tds.h:518
    \n+
    struct addrinfo * ip_addrs
    ip(s) of server
    Definition tds.h:546
    \n+
    DSTR server_charset
    charset of server e.g.
    Definition tds.h:523
    \n+
    TDS_USMALLINT tds_version
    TDS version.
    Definition tds.h:520
    \n+
    DSTR new_password
    new password to set (TDS 7.2+)
    Definition tds.h:536
    \n+
    unsigned int bulk_copy
    if bulk copy should be enabled
    Definition tds.h:556
    \n+
    DSTR cafile
    certificate authorities file
    Definition tds.h:530
    \n+
    DSTR server_spn
    server SPN (in freetds.conf)
    Definition tds.h:528
    \n+
    int port
    port of database service
    Definition tds.h:519
    \n+
    Definition tds.h:574
    \n+
    Definition tds.h:582
    \n+
    Information about blobs (e.g.
    Definition tds.h:593
    \n+
    Store variant informations.
    Definition tds.h:604
    \n+
    Information relevant to libiconv.
    Definition tds.h:618
    \n+
    const char * name
    name of the encoding (ie UTF-8)
    Definition tds.h:620
    \n+
    unsigned char canonic
    internal numeric index into array of all encodings
    Definition tds.h:624
    \n+
    Definition tds.h:628
    \n+
    Definition tds.h:643
    \n+
    tds_func_put_data * put_data
    Send column data to server.
    Definition tds.h:662
    \n+
    tds_func_put_info * put_info
    Send metadata column information to server.
    Definition tds.h:652
    \n+
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n+
    TDS_INT bcp_prefix_len
    The length, in bytes, of any length prefix this column may have.
    Definition tds.h:761
    \n+
    TDS_TINYINT column_varint_size
    size of length when reading from wire (0, 1, 2 or 4)
    Definition tds.h:701
    \n+
    TDS_INT column_size
    maximun size of data.
    Definition tds.h:694
    \n+
    TDS_TINYINT column_prec
    precision for decimal/numeric
    Definition tds.h:703
    \n+
    TDS_SERVER_TYPE column_type
    This type can be different from wire type because conversion (e.g.
    Definition tds.h:696
    \n+
    TDSICONV * char_conv
    refers to previously allocated iconv information
    Definition tds.h:712
    \n+
    TDS_TINYINT column_scale
    scale for decimal/numeric
    Definition tds.h:704
    \n+
    TDS_INT column_cur_size
    size written in variable (ie: char, text, binary).
    Definition tds.h:736
    \n+
    Hold information for any results.
    Definition tds.h:769
    \n+
    Definition tds.h:876
    \n+
    Definition tds.h:892
    \n+
    Definition tds.h:906
    \n+
    Holds informations about a cursor.
    Definition tds.h:937
    \n+
    TDS_TINYINT options
    read only|updatable TODO use it
    Definition tds.h:942
    \n+
    bool defer_close
    true if cursor was marker to be closed when connection is idle
    Definition tds.h:946
    \n+
    TDS_INT ref_count
    reference counter so client can retain safely a pointer
    Definition tds.h:939
    \n+
    TDS_INT cursor_id
    cursor id returned by the server after cursor declare
    Definition tds.h:941
    \n+
    TDS_INT cursor_rows
    < number of updatable columns
    Definition tds.h:951
    \n+
    struct tds_cursor * next
    next in linked list, keep first
    Definition tds.h:938
    \n+
    TDS_INT type
    row fetched from this cursor
    Definition tds.h:956
    \n+
    TDS_CURSOR_STATUS status
    cursor parameter
    Definition tds.h:953
    \n+
    char * query
    SQL query.
    Definition tds.h:947
    \n+
    char * cursor_name
    name of the cursor
    Definition tds.h:940
    \n+
    Current environment as reported by the server.
    Definition tds.h:963
    \n+
    char * charset
    character set encoding
    Definition tds.h:968
    \n+
    int block_size
    packet size (512-65535)
    Definition tds.h:965
    \n+
    char * database
    database name
    Definition tds.h:970
    \n+
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n+
    char * query
    saved query, we need to know original query if prepare is impossible
    Definition tds.h:1009
    \n+
    TDS_INT ref_count
    reference counter so client can retain safely a pointer
    Definition tds.h:979
    \n+
    bool defer_close
    true if dynamic was marker to be closed when connection is idle
    Definition tds.h:997
    \n+
    TDSPARAMINFO * res_info
    query results
    Definition tds.h:999
    \n+
    TDS_TINYINT emulated
    this dynamic query cannot be prepared so libTDS have to construct a simple query.
    Definition tds.h:993
    \n+
    TDSPARAMINFO * params
    query parameters.
    Definition tds.h:1007
    \n+
    struct tds_dynamic * next
    next in linked list, keep first
    Definition tds.h:978
    \n+
    TDS_INT num_id
    numeric id for mssql7+
    Definition tds.h:981
    \n+
    Definition tds.h:1019
    \n+
    Definition tds.h:1029
    \n+
    Definition tds.h:1047
    \n+
    Definition tds.h:1057
    \n+
    unsigned data_len
    data length, this does not account SMP header, only TDS part
    Definition tds.h:1071
    \n+
    Definition tds.h:1085
    \n+
    Definition tds.h:1091
    \n+
    TDSENV env
    environment is shared between all sessions
    Definition tds.h:1101
    \n+
    TDSCURSOR * cursors
    linked list of cursors allocated for this connection contains only cursors allocated on the server
    Definition tds.h:1107
    \n+
    TDS_SYS_SOCKET s
    tcp socket, INVALID_SOCKET if not connected
    Definition tds.h:1096
    \n+
    TDS_UINT product_version
    version of product (Sybase/MS and full version)
    Definition tds.h:1093
    \n+
    TDSDYNAMIC * dyns
    list of dynamic allocated for this connection contains only dynamic allocated on the server
    Definition tds.h:1112
    \n+
    unsigned int pending_close
    true is connection has pending closing (cursors or dynamic)
    Definition tds.h:1123
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n+
    TDSLOGIN * login
    config for login stuff.
    Definition tds.h:1258
    \n+
    unsigned in_len
    input buffer length
    Definition tds.h:1194
    \n+
    TDSPACKET * frozen_packets
    list of packets frozen, points to first one.
    Definition tds.h:1203
    \n+
    TDSPACKET * send_packet
    packet we are preparing to send
    Definition tds.h:1231
    \n+
    unsigned char * in_buf
    Input buffer.
    Definition tds.h:1177
    \n+
    TDS_INT ret_status
    return status from store procedure
    Definition tds.h:1250
    \n+
    unsigned out_pos
    current position in out_buf
    Definition tds.h:1193
    \n+
    TDSRESULTINFO * current_results
    Current query information.
    Definition tds.h:1238
    \n+
    unsigned char in_flag
    input buffer type
    Definition tds.h:1195
    \n+
    TDS_INT8 rows_affected
    rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid
    Definition tds.h:1254
    \n+
    unsigned char out_flag
    output buffer type
    Definition tds.h:1196
    \n+
    unsigned in_pos
    current position in in_buf
    Definition tds.h:1192
    \n+
    TDSCURSOR * cur_cursor
    cursor in use
    Definition tds.h:1243
    \n+
    bool in_row
    true if we are getting rows
    Definition tds.h:1246
    \n+
    bool bulk_query
    true is query sent was a bulk query so we need to switch state to QUERYING
    Definition tds.h:1244
    \n+
    bool has_status
    true is ret_status is valid
    Definition tds.h:1245
    \n+
    unsigned char * out_buf
    Output buffer.
    Definition tds.h:1185
    \n+
    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
    \n+
    unsigned int out_buf_max
    Maximum size of packet pointed by out_buf.
    Definition tds.h:1191
    \n+
    TDSDYNAMIC * cur_dyn
    dynamic structure in use
    Definition tds.h:1256
    \n+
    Definition tds.h:1501
    \n+
    Definition tds.h:1571
    \n+
    TDSSOCKET * tds
    which socket we refer to
    Definition tds.h:1573
    \n+
    unsigned pkt_pos
    position in pkt
    Definition tds.h:1577
    \n+
    unsigned size_len
    length size (0, 1, 2 or 4)
    Definition tds.h:1579
    \n+
    TDSPACKET * pkt
    first packet frozen
    Definition tds.h:1575
    \n+
    Definition tds.h:1661
    \n+
    Definition thread.h:278
    \n+
    Structure to hold a string.
    Definition string.h:36
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,62 +7,2668 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-configs.h\n+tds.h\n+Go_to_the_documentation_of_this_file.\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _tds_configs_h_\n- 21#define _tds_configs_h_\n- 22\n- 23#include \n- 24\n- 25#ifndef _tds_h_\n- 26#error freetds/tds.h must be included before freetds/configs.h\n- 27#endif\n- 28\n- 29#ifdef __cplusplus\n- 30extern \"C\"\n- 31{\n- 32#if 0\n- 33}\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n+ 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 21#ifndef _tds_h_\n+ 22#define _tds_h_\n+ 23\n+ 24#ifndef _freetds_config_h_\n+ 25#error should include config.h before\n+ 26#endif\n+ 27\n+ 28#include \n+ 29#include \n+ 30#include \n+ 31\n+ 32#ifdef HAVE_STDDEF_H\n+ 33#include \n 34#endif\n- 35#endif\n- 36\n- 37#define FREETDS_SYSCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n-\"freetds.conf\"\n- 38#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n-\"pool.conf\"\n- 39#define FREETDS_LOCALECONFFILE FREETDS_SYSCONFDIR TDS_SDIR_SEPARATOR\n-\"locales.conf\"\n- 40\n- 41#ifdef __cplusplus\n- 42#if 0\n- 43{\n- 44#endif\n- 45}\n- 46#endif\n- 47\n- 48#endif /* _tds_configs_h_ */\n+ 35\n+ 36#if HAVE_NETDB_H\n+ 37#include \n+ 38#endif /* HAVE_NETDB_H */\n+ 39\n+ 40#if HAVE_NETINET_IN_H\n+ 41#include \n+ 42#endif /* HAVE_NET_INET_IN_H */\n+ 43#if HAVE_ARPA_INET_H\n+ 44#include \n+ 45#endif /* HAVE_ARPA_INET_H */\n+ 46\n+ 47#if HAVE_SYS_SOCKET_H\n+ 48#include \n+ 49#endif /* HAVE_SYS_SOCKET_H */\n+ 50\n+ 51/* forward declaration */\n+ 52typedef struct tdsiconvinfo TDSICONV;\n+ 53typedef struct tds_connection TDSCONNECTION;\n+ 54typedef struct tds_socket TDSSOCKET;\n+ 55typedef struct tds_column TDSCOLUMN;\n+ 56typedef struct tds_bcpinfo TDSBCPINFO;\n+ 57\n+ 58#include \n+ 59#include \n+ 60#include \n+ 61#include \n+ 62#include \n+ 63#include \n+ 64#include \n+ 65\n+ 66#include \n+ 67\n+ 68#ifdef __cplusplus\n+ 69extern \"C\"\n+ 70{\n+ 71#if 0\n+ 72}\n+ 73#endif\n+ 74#endif\n+ 75\n+81typedef struct tds_compiletime_settings\n+ 82{\n+ 83 const char *freetds_version; /* release version of FreeTDS */\n+ 84 const char *sysconfdir; /* location of freetds.conf */\n+ 85 const char *last_update; /* latest software_version date among the modules\n+*/\n+ 86 const char *tdsver; /* TDS protocol version (4.2/4.6/5.0/7.0/7.1) 5.0 */\n+ 87 bool msdblib; /* for MS style dblib */\n+ 88 bool sybase_compat; /* enable increased Open Client binary compatibility */\n+ 89 bool threadsafe; /* compile for thread safety default=no */\n+ 90 bool libiconv; /* search for libiconv in DIR/include and DIR/lib */\n+ 91 bool iodbc; /* build odbc driver against iODBC in DIR */\n+ 92 bool unixodbc; /* build odbc driver against unixODBC in DIR */\n+ 93 bool openssl; /* build against OpenSSL */\n+ 94 bool gnutls; /* build against GnuTLS */\n+ 95 bool mars; /* MARS enabled */\n+ 96 bool sspi; /* SSPI enabled */\n+ 97 bool kerberos; /* Kerberos enabled */\n+98} TDS_COMPILETIME_SETTINGS;\n+ 99\n+ 115/*\n+ 116 * All references to data that touch the wire should use the following\n+typedefs.\n+ 117 *\n+ 118 * If you have problems on 64-bit machines and the code is\n+ 119 * using a native datatype, please change it to use\n+ 120 * these. (In the TDS layer only, the API layers have their\n+ 121 * own typedefs which equate to these).\n+ 122 */\n+ 123typedef char TDS_CHAR; /* 8-bit char */\n+ 124typedef uint8_t TDS_UCHAR; /* 8-bit uchar */\n+ 125typedef uint8_t TDS_TINYINT; /* 8-bit unsigned */\n+ 126typedef int16_t TDS_SMALLINT; /* 16-bit int */\n+ 127typedef uint16_t TDS_USMALLINT; /* 16-bit unsigned */\n+ 128typedef int32_t TDS_INT; /* 32-bit int */\n+ 129typedef uint32_t TDS_UINT; /* 32-bit unsigned */\n+ 130typedef int64_t TDS_INT8; /* 64-bit integer */\n+ 131typedef uint64_t TDS_UINT8; /* 64-bit unsigned */\n+ 132typedef intptr_t TDS_INTPTR;\n+ 133typedef uintptr_t TDS_UINTPTR;\n+ 134typedef tds_sysdep_real32_type TDS_REAL; /* 32-bit real */\n+ 135typedef tds_sysdep_real64_type TDS_FLOAT; /* 64-bit real */\n+ 136\n+ 137#include \n+ 138\n+ 139#define TDS_INVALID_TYPE ((TDS_SERVER_TYPE) 0)\n+ 140\n+145typedef struct\n+ 146{\n+147 TDS_UINT8 time;\n+148 TDS_INT date;\n+149 TDS_SMALLINT offset;\n+ 150 TDS_USMALLINT time_prec:3;\n+ 151 TDS_USMALLINT _tds_reserved:10;\n+ 152 TDS_USMALLINT has_time:1;\n+ 153 TDS_USMALLINT has_date:1;\n+ 154 TDS_USMALLINT has_offset:1;\n+ 155} TDS_DATETIMEALL;\n+ 156\n+158typedef struct tdsdaterec\n+ 159{\n+160 TDS_INT year;\n+161 TDS_INT quarter;\n+162 TDS_INT month;\n+163 TDS_INT day;\n+164 TDS_INT dayofyear;\n+165 TDS_INT weekday;\n+166 TDS_INT hour;\n+167 TDS_INT minute;\n+168 TDS_INT second;\n+169 TDS_INT decimicrosecond;\n+170 TDS_INT timezone;\n+171} TDSDATEREC;\n+ 172\n+ 178extern const int tds_numeric_bytes_per_prec[];\n+ 179\n+ 180typedef int TDSRET;\n+ 181#define TDS_NO_MORE_RESULTS ((TDSRET)1)\n+ 182#define TDS_SUCCESS ((TDSRET)0)\n+ 183#define TDS_FAIL ((TDSRET)-1)\n+ 184#define TDS_CANCELLED ((TDSRET)-2)\n+ 185#define TDS_FAILED(rc) ((rc)<0)\n+ 186#define TDS_SUCCEED(rc) ((rc)>=0)\n+ 187#define TDS_PROPAGATE(rc) \\\n+ 188 do { TDSRET _tds_ret = (rc); if (TDS_FAILED(_tds_ret)) return _tds_ret; }\n+while(0)\n+ 189\n+ 190#define TDS_INT_CONTINUE 1\n+ 191#define TDS_INT_CANCEL 2\n+ 192#define TDS_INT_TIMEOUT 3\n+ 193\n+ 194\n+ 195#define TDS_NO_COUNT -1\n+ 196\n+ 197#define TDS_ROW_RESULT 4040\n+ 198#define TDS_PARAM_RESULT 4042\n+ 199#define TDS_STATUS_RESULT 4043\n+ 200#define TDS_MSG_RESULT 4044\n+ 201#define TDS_COMPUTE_RESULT 4045\n+ 202#define TDS_CMD_DONE 4046\n+ 203#define TDS_CMD_SUCCEED 4047\n+ 204#define TDS_CMD_FAIL 4048\n+ 205#define TDS_ROWFMT_RESULT 4049\n+ 206#define TDS_COMPUTEFMT_RESULT 4050\n+ 207#define TDS_DESCRIBE_RESULT 4051\n+ 208#define TDS_DONE_RESULT 4052\n+ 209#define TDS_DONEPROC_RESULT 4053\n+ 210#define TDS_DONEINPROC_RESULT 4054\n+ 211#define TDS_OTHERS_RESULT 4055\n+ 212\n+ 213enum tds_token_results\n+ 214{\n+ 215 TDS_TOKEN_RES_OTHERS,\n+ 216 TDS_TOKEN_RES_ROWFMT,\n+ 217 TDS_TOKEN_RES_COMPUTEFMT,\n+ 218 TDS_TOKEN_RES_PARAMFMT,\n+ 219 TDS_TOKEN_RES_DONE,\n+ 220 TDS_TOKEN_RES_ROW,\n+ 221 TDS_TOKEN_RES_COMPUTE,\n+ 222 TDS_TOKEN_RES_PROC,\n+ 223 TDS_TOKEN_RES_MSG,\n+ 224 TDS_TOKEN_RES_ENV,\n+ 225};\n+ 226\n+ 227#define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 <<\n+(TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))\n+ 228\n+ 229enum tds_token_flags\n+ 230{\n+ 231 TDS_HANDLE_ALL = 0,\n+ 232 TDS_TOKEN_FLAG(OTHERS),\n+ 233 TDS_TOKEN_FLAG(ROWFMT),\n+ 234 TDS_TOKEN_FLAG(COMPUTEFMT),\n+ 235 TDS_TOKEN_FLAG(PARAMFMT),\n+ 236 TDS_TOKEN_FLAG(DONE),\n+ 237 TDS_TOKEN_FLAG(ROW),\n+ 238 TDS_TOKEN_FLAG(COMPUTE),\n+ 239 TDS_TOKEN_FLAG(PROC),\n+ 240 TDS_TOKEN_FLAG(MSG),\n+ 241 TDS_TOKEN_FLAG(ENV),\n+ 242 TDS_TOKEN_RESULTS =\n+TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,\n+ 243 TDS_TOKEN_TRAILING =\n+TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS\n+ 244};\n+ 245\n+249enum tds_end\n+ 250{\n+ 251 TDS_DONE_FINAL = 0x00\n+252 , TDS_DONE_MORE_RESULTS = 0x01\n+253 , TDS_DONE_ERROR = 0x02\n+254 , TDS_DONE_INXACT = 0x04\n+255 , TDS_DONE_PROC = 0x08\n+256 , TDS_DONE_COUNT = 0x10\n+257 , TDS_DONE_CANCELLED = 0x20\n+258 , TDS_DONE_EVENT = 0x40 /* part of an event notification. */\n+ 259 , TDS_DONE_SRVERROR = 0x100\n+ 261 /* after the above flags, a TDS_DONE packet has a field describing the\n+state of the transaction */\n+262 , TDS_DONE_NO_TRAN = 0 /* No transaction in effect */\n+ 263 , TDS_DONE_TRAN_SUCCEED = 1 /* Transaction completed successfully */\n+ 264 , TDS_DONE_TRAN_PROGRESS= 2 /* Transaction in progress */\n+ 265 , TDS_DONE_STMT_ABORT = 3 /* A statement aborted */\n+ 266 , TDS_DONE_TRAN_ABORT = 4 /* Transaction aborted */\n+ 267};\n+ 268\n+ 269\n+ 270/*\n+ 271 * TDSERRNO is emitted by libtds to the client library's error handler\n+ 272 * (which may in turn call the client's error handler).\n+ 273 * These match the db-lib msgno, because the same values have the same\n+meaning\n+ 274 * in db-lib and ODBC. ct-lib maps them to ct-lib numbers (todo).\n+ 275 */\n+ 276typedef enum { TDSEOK = TDS_SUCCESS,\n+ 277 TDSEVERDOWN = 100,\n+ 278 TDSEINPROGRESS,\n+ 279 TDSEICONVIU = 2400,\n+ 280 TDSEICONVAVAIL = 2401,\n+ 281 TDSEICONVO = 2402,\n+ 282 TDSEICONVI = 2403,\n+ 283 TDSEICONV2BIG = 2404,\n+ 284 TDSEPORTINSTANCE = 2500,\n+ 285 TDSESYNC = 20001,\n+ 286 TDSEFCON = 20002,\n+ 287 TDSETIME = 20003,\n+ 288 TDSEREAD = 20004,\n+ 289 TDSEWRIT = 20006,\n+ 290 TDSESOCK = 20008,\n+ 291 TDSECONN = 20009,\n+ 292 TDSEMEM = 20010,\n+ 293 TDSEINTF = 20012, /* Server name not found in interface file */\n+ 294 TDSEUHST = 20013, /* Unknown host machine name. */\n+ 295 TDSEPWD = 20014,\n+ 296 TDSESEOF = 20017,\n+ 297 TDSERPND = 20019,\n+ 298 TDSEBTOK = 20020,\n+ 299 TDSEOOB = 20022,\n+ 300 TDSECLOS = 20056,\n+ 301 TDSEUSCT = 20058,\n+ 302 TDSEUTDS = 20146,\n+ 303 TDSEEUNR = 20185,\n+ 304 TDSECAP = 20203,\n+ 305 TDSENEG = 20210,\n+ 306 TDSEUMSG = 20212,\n+ 307 TDSECAPTYP = 20213,\n+ 308 TDSECONF = 20214,\n+ 309 TDSEBPROBADTYP = 20250,\n+ 310 TDSECLOSEIN = 20292\n+ 311} TDSERRNO;\n+ 312\n+ 313\n+ 314enum {\n+ 315 TDS_CUR_ISTAT_UNUSED = 0x00,\n+ 316 TDS_CUR_ISTAT_DECLARED = 0x01,\n+ 317 TDS_CUR_ISTAT_OPEN = 0x02,\n+ 318 TDS_CUR_ISTAT_CLOSED = 0x04,\n+ 319 TDS_CUR_ISTAT_RDONLY = 0x08,\n+ 320 TDS_CUR_ISTAT_UPDATABLE = 0x10,\n+ 321 TDS_CUR_ISTAT_ROWCNT = 0x20,\n+ 322 TDS_CUR_ISTAT_DEALLOC = 0x40\n+ 323};\n+ 324\n+ 325/* string types */\n+ 326#define TDS_NULLTERM -9\n+ 327\n+ 328\n+329typedef union tds_option_arg\n+ 330{\n+ 331 TDS_TINYINT ti;\n+ 332 TDS_INT i;\n+ 333 TDS_CHAR *c;\n+ 334} TDS_OPTION_ARG;\n+ 335\n+ 336\n+ 337typedef enum tds_encryption_level {\n+ 338 TDS_ENCRYPTION_DEFAULT,\n+ 339 TDS_ENCRYPTION_OFF,\n+ 340 TDS_ENCRYPTION_REQUEST,\n+ 341 TDS_ENCRYPTION_REQUIRE\n+ 342} TDS_ENCRYPTION_LEVEL;\n+ 343\n+ 344/*\n+ 345 * TODO use system macros for optimization\n+ 346 * See mcrypt for reference and linux kernel source for optimization\n+ 347 * check if unaligned access and use fast write/read when implemented\n+ 348 */\n+ 349#define TDS_BYTE_SWAP16(value) \\\n+ 350 (((((uint16_t)value)<<8) & 0xFF00u) | \\\n+ 351 ((((uint16_t)value)>>8) & 0x00FFu))\n+ 352\n+ 353#define TDS_BYTE_SWAP32(value) \\\n+ 354 (((((uint32_t)value)<<24) & 0xFF000000u)| \\\n+ 355 ((((uint32_t)value)<< 8) & 0x00FF0000u)| \\\n+ 356 ((((uint32_t)value)>> 8) & 0x0000FF00u)| \\\n+ 357 ((((uint32_t)value)>>24) & 0x000000FFu))\n+ 358\n+ 359#define is_end_token(x) ((x) >= TDS_DONE_TOKEN && (x) <=\n+TDS_DONEINPROC_TOKEN)\n+ 360\n+ 361enum {\n+ 362 TDS_TYPEFLAG_INVALID = 0,\n+ 363 TDS_TYPEFLAG_NULLABLE = 1,\n+ 364 TDS_TYPEFLAG_FIXED = 2,\n+ 365 TDS_TYPEFLAG_VARIABLE = 4,\n+ 366 TDS_TYPEFLAG_COLLATE = 8,\n+ 367 TDS_TYPEFLAG_ASCII = 16,\n+ 368 TDS_TYPEFLAG_UNICODE = 32,\n+ 369 TDS_TYPEFLAG_BINARY = 64,\n+ 370 TDS_TYPEFLAG_DATETIME = 128,\n+ 371 TDS_TYPEFLAG_NUMERIC = 256,\n+ 372 TDS_TYPEFLAG_VARIANT = 512,\n+ 373};\n+ 374\n+ 375extern const uint16_t tds_type_flags_ms[256];\n+ 376#if 0\n+ 377extern const uint16_t tds_type_flags_syb[256];\n+ 378extern const char *const tds_type_names[256];\n+ 379#endif\n+ 380\n+ 381#define is_fixed_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_FIXED) != 0)\n+ 382#define is_nullable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_NULLABLE)\n+!= 0)\n+ 383#define is_variable_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE)\n+!= 0)\n+ 384#define is_variant_inner_type(x) ((tds_type_flags_ms[x] &\n+TDS_TYPEFLAG_VARIANT) != 0)\n+ 385\n+ 386\n+ 387#define is_blob_type(x) ((x)==SYBTEXT || (x)==SYBIMAGE || (x)==SYBNTEXT)\n+ 388#define is_blob_col(x) ((x)->column_varint_size > 2)\n+ 389/* large type means it has a two byte size field */\n+ 390/* define is_large_type(x) (x>128) */\n+ 391#define is_numeric_type(x) ((x)==SYBNUMERIC || (x)==SYBDECIMAL)\n+393#define is_datetime_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_DATETIME)\n+!= 0)\n+ 394#define is_unicode_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE)\n+!= 0)\n+ 395#define is_collate_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_COLLATE)\n+!= 0)\n+ 396#define is_ascii_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_ASCII) != 0)\n+ 397#define is_binary_type(x) ((tds_type_flags_ms[x] & TDS_TYPEFLAG_BINARY) !=\n+0)\n+ 398#define is_char_type(x) ((tds_type_flags_ms[x] &\n+(TDS_TYPEFLAG_ASCII|TDS_TYPEFLAG_UNICODE)) != 0)\n+ 399#define is_similar_type(x, y) (is_char_type(x) && is_char_type(y))\n+ 400static inline\n+ 401bool is_tds_type_valid(int type)\n+ 402{\n+ 403 return (unsigned) type < 256u && tds_type_flags_ms[type] != 0;\n+ 404}\n+ 405\n+ 406\n+ 407#define TDS_MAX_CAPABILITY 32\n+ 408#define MAXPRECISION 77\n+ 409#define TDS_MAX_CONN 4096\n+ 410#define TDS_MAX_DYNID_LEN 30\n+ 411\n+ 412/* defaults to use if no others are found */\n+ 413#define TDS_DEF_SERVER \"SYBASE\"\n+ 414#define TDS_DEF_BLKSZ 512\n+ 415#define TDS_DEF_CHARSET \"iso_1\"\n+ 416#define TDS_DEF_LANG \"us_english\"\n+ 417#if TDS50\n+ 418#define TDS_DEFAULT_VERSION 0x500\n+ 419#define TDS_DEF_PORT 4000\n+ 420#elif TDS71\n+ 421#define TDS_DEFAULT_VERSION 0x701\n+ 422#define TDS_DEF_PORT 1433\n+ 423#elif TDS72\n+ 424#define TDS_DEFAULT_VERSION 0x702\n+ 425#define TDS_DEF_PORT 1433\n+ 426#elif TDS73\n+ 427#define TDS_DEFAULT_VERSION 0x703\n+ 428#define TDS_DEF_PORT 1433\n+ 429#elif TDS74\n+ 430#define TDS_DEFAULT_VERSION 0x704\n+ 431#define TDS_DEF_PORT 1433\n+ 432#else\n+ 433#define TDS_DEFAULT_VERSION 0x000\n+ 434#define TDS_DEF_PORT 1433\n+ 435#endif\n+ 436\n+ 437/* normalized strings from freetds.conf file */\n+ 438#define TDS_STR_VERSION \"tds version\"\n+ 439#define TDS_STR_BLKSZ \"initial block size\"\n+ 440#define TDS_STR_SWAPDT \"swap broken dates\"\n+ 441#define TDS_STR_DUMPFILE \"dump file\"\n+ 442#define TDS_STR_DEBUGLVL \"debug level\"\n+ 443#define TDS_STR_DEBUGFLAGS \"debug flags\"\n+ 444#define TDS_STR_TIMEOUT \"timeout\"\n+ 445#define TDS_STR_QUERY_TIMEOUT \"query timeout\"\n+ 446#define TDS_STR_CONNTIMEOUT \"connect timeout\"\n+ 447#define TDS_STR_HOSTNAME \"hostname\"\n+ 448#define TDS_STR_HOST \"host\"\n+ 449#define TDS_STR_PORT \"port\"\n+ 450#define TDS_STR_TEXTSZ \"text size\"\n+ 451/* for big endian hosts, obsolete, ignored */\n+ 452#define TDS_STR_EMUL_LE \"emulate little endian\"\n+ 453#define TDS_STR_CHARSET \"charset\"\n+ 454#define TDS_STR_CLCHARSET \"client charset\"\n+ 455#define TDS_STR_USE_UTF_16 \"use utf-16\"\n+ 456#define TDS_STR_LANGUAGE \"language\"\n+ 457#define TDS_STR_APPENDMODE \"dump file append\"\n+ 458#define TDS_STR_DATEFMT \"date format\"\n+ 459#define TDS_STR_INSTANCE \"instance\"\n+ 460#define TDS_STR_ASA_DATABASE \"asa database\"\n+ 461#define TDS_STR_DATABASE \"database\"\n+ 462#define TDS_STR_ENCRYPTION \"encryption\"\n+ 463#define TDS_STR_USENTLMV2 \"use ntlmv2\"\n+ 464#define TDS_STR_USELANMAN \"use lanman\"\n+ 465/* conf values */\n+ 466#define TDS_STR_ENCRYPTION_OFF \"off\"\n+ 467#define TDS_STR_ENCRYPTION_REQUEST \"request\"\n+ 468#define TDS_STR_ENCRYPTION_REQUIRE \"require\"\n+ 469/* Defines to enable optional GSSAPI delegation */\n+ 470#define TDS_GSSAPI_DELEGATION \"enable gssapi delegation\"\n+ 471/* Mutual authentication */\n+ 472#define TDS_STR_MUTUAL_AUTHENTICATION \"mutual authentication\"\n+ 473/* Kerberos realm name */\n+ 474#define TDS_STR_REALM \"realm\"\n+ 475/* Kerberos SPN */\n+ 476#define TDS_STR_SPN \"spn\"\n+ 477/* CA file */\n+ 478#define TDS_STR_CAFILE \"ca file\"\n+ 479/* CRL file */\n+ 480#define TDS_STR_CRLFILE \"crl file\"\n+ 481/* check SSL hostname */\n+ 482#define TDS_STR_CHECKSSLHOSTNAME \"check certificate hostname\"\n+ 483/* database filename to attach on login (MSSQL) */\n+ 484#define TDS_STR_DBFILENAME \"database filename\"\n+ 485/* Application Intent MSSQL 2012 support */\n+ 486#define TDS_STR_READONLY_INTENT \"read-only intent\"\n+ 487/* configurable cipher suite to send to openssl's SSL_set_cipher_list()\n+function */\n+ 488#define TLS_STR_OPENSSL_CIPHERS \"openssl ciphers\"\n+ 489/* enable old TLS v1, required for instance if you are using a really old\n+Windows XP */\n+ 490#define TDS_STR_ENABLE_TLS_V1 \"enable tls v1\"\n+ 491\n+ 492\n+ 493/* TODO do a better check for alignment than this */\n+494typedef union\n+ 495{\n+ 496 void *p;\n+ 497 int i;\n+ 498 int64_t ui;\n+ 499} tds_align_struct;\n+ 500\n+ 501#define TDS_ALIGN_SIZE sizeof(tds_align_struct)\n+ 502\n+503typedef struct tds_capability_type\n+ 504{\n+ 505 unsigned char type;\n+ 506 unsigned char len; /* always sizeof(values) */\n+ 507 unsigned char values[TDS_MAX_CAPABILITY/2-2];\n+ 508} TDS_CAPABILITY_TYPE;\n+ 509\n+510typedef struct tds_capabilities\n+ 511{\n+ 512 TDS_CAPABILITY_TYPE types[2];\n+ 513} TDS_CAPABILITIES;\n+ 514\n+ 515#define TDS_MAX_LOGIN_STR_SZ 128\n+516typedef struct tds_login\n+ 517{\n+518 DSTR server_name;\n+519 int port;\n+520 TDS_USMALLINT tds_version;\n+ 521 int block_size;\n+ 522 DSTR language; /* e.g. us-english */\n+523 DSTR server_charset;\n+ 524 TDS_INT connect_timeout;\n+ 525 DSTR client_host_name;\n+ 526 DSTR server_host_name;\n+527 DSTR server_realm_name;\n+528 DSTR server_spn;\n+529 DSTR db_filename;\n+530 DSTR cafile;\n+531 DSTR crlfile;\n+ 532 DSTR openssl_ciphers;\n+ 533 DSTR app_name;\n+534 DSTR user_name;\n+535 DSTR password;\n+536 DSTR new_password;\n+ 538 DSTR library; /* Ct-Library, DB-Library, TDS-Library or ODBC */\n+ 539 TDS_TINYINT encryption_level;\n+ 540\n+ 541 TDS_INT query_timeout;\n+ 542 TDS_CAPABILITIES capabilities;\n+ 543 DSTR client_charset;\n+ 544 DSTR database;\n+ 545\n+546 struct addrinfo *ip_addrs;\n+ 547 DSTR instance_name;\n+ 548 DSTR dump_file;\n+ 549 int debug_flags;\n+ 550 int text_size;\n+ 551 DSTR routing_address;\n+ 552 uint16_t routing_port;\n+ 553\n+ 554 unsigned char option_flag2;\n+ 555\n+556 unsigned int bulk_copy:1;\n+ 557 unsigned int suppress_language:1;\n+ 558 unsigned int gssapi_use_delegation:1;\n+ 559 unsigned int mutual_authentication:1;\n+ 560 unsigned int use_ntlmv2:1;\n+ 561 unsigned int use_ntlmv2_specified:1;\n+ 562 unsigned int use_lanman:1;\n+ 563 unsigned int mars:1;\n+ 564 unsigned int use_utf16:1;\n+ 565 unsigned int use_new_password:1;\n+ 566 unsigned int valid_configuration:1;\n+ 567 unsigned int check_ssl_hostname:1;\n+ 568 unsigned int readonly_intent:1;\n+ 569 unsigned int enable_tls_v1:1;\n+ 570 unsigned int server_is_valid:1;\n+ 571} TDSLOGIN;\n+ 572\n+573typedef struct tds_headers\n+ 574{\n+ 575 const char *qn_options;\n+ 576 const char *qn_msgtext;\n+ 577 TDS_INT qn_timeout;\n+ 578 /* TDS 7.4+: trace activity ID char[20] */\n+ 579} TDSHEADERS;\n+ 580\n+581typedef struct tds_locale\n+ 582{\n+ 583 char *language;\n+ 584 char *server_charset;\n+ 585 char *date_fmt;\n+ 586} TDSLOCALE;\n+ 587\n+592typedef struct tds_blob\n+ 593{\n+ 594 TDS_CHAR *textvalue;\n+ 595 TDS_CHAR textptr[16];\n+ 596 TDS_CHAR timestamp[8];\n+ 597 unsigned char valid_ptr;\n+598} TDSBLOB;\n+ 599\n+603typedef struct tds_variant\n+ 604{\n+ 605 /* this MUST have same position and place of textvalue in tds_blob */\n+ 606 TDS_CHAR *data;\n+ 607 TDS_INT size;\n+ 608 TDS_INT data_len;\n+ 609 TDS_SERVER_TYPE type;\n+ 610 TDS_UCHAR collation[5];\n+611} TDSVARIANT;\n+ 612\n+617typedef struct tds_encoding\n+ 618{\n+620 const char *name;\n+ 621 unsigned char min_bytes_per_char;\n+ 622 unsigned char max_bytes_per_char;\n+624 unsigned char canonic;\n+625} TDS_ENCODING;\n+ 626\n+627typedef struct tds_bcpcoldata\n+ 628{\n+ 629 TDS_UCHAR *data;\n+ 630 TDS_INT datalen;\n+ 631 bool is_null;\n+ 632} BCPCOLDATA;\n+ 633\n+ 634\n+ 635typedef TDSRET tds_func_get_info(TDSSOCKET *tds, TDSCOLUMN *col);\n+ 636typedef TDSRET tds_func_get_data(TDSSOCKET *tds, TDSCOLUMN *col);\n+ 637typedef TDS_INT tds_func_row_len(TDSCOLUMN *col);\n+ 638typedef TDSRET tds_func_put_info(TDSSOCKET *tds, TDSCOLUMN *col);\n+ 639typedef TDSRET tds_func_put_data(TDSSOCKET *tds, TDSCOLUMN *col, int bcp7);\n+ 640typedef int tds_func_check(const TDSCOLUMN *col);\n+ 641\n+642typedef struct tds_column_funcs\n+ 643{\n+ 644 tds_func_get_info *get_info;\n+ 645 tds_func_get_data *get_data;\n+ 646 tds_func_row_len *row_len;\n+652 tds_func_put_info *put_info;\n+662 tds_func_put_data *put_data;\n+ 663#if ENABLE_EXTRA_CHECKS\n+ 678 tds_func_check *check;\n+ 679#endif\n+ 680#if 0\n+ 681 TDSRET (*convert)(TDSSOCKET *tds, TDSCOLUMN *col);\n+ 682#endif\n+ 683} TDSCOLUMNFUNCS;\n+ 684\n+688struct tds_column\n+ 689{\n+ 690 const TDSCOLUMNFUNCS *funcs;\n+ 691 TDS_INT column_usertype;\n+ 692 TDS_INT column_flags;\n+ 693\n+694 TDS_INT column_size;\n+696 TDS_SERVER_TYPE column_type;\n+701 TDS_TINYINT column_varint_size;\n+703 TDS_TINYINT column_prec;\n+704 TDS_TINYINT column_scale;\n+ 706 struct\n+ 707 {\n+ 708 TDS_SERVER_TYPE column_type;\n+ 709 TDS_INT column_size;\n+ 710 } on_server;\n+ 711\n+712 TDSICONV *char_conv;\n+ 714 DSTR table_name;\n+ 715 DSTR column_name;\n+ 716 DSTR table_column_name;\n+ 717\n+ 718 unsigned char *column_data;\n+ 719 void (*column_data_free)(struct tds_column *column);\n+ 720 unsigned char column_nullable:1;\n+ 721 unsigned char column_writeable:1;\n+ 722 unsigned char column_identity:1;\n+ 723 unsigned char column_key:1;\n+ 724 unsigned char column_hidden:1;\n+ 725 unsigned char column_output:1;\n+ 726 unsigned char column_timestamp:1;\n+ 727 unsigned char column_computed:1;\n+ 728 TDS_UCHAR column_collation[5];\n+ 729\n+ 730 /* additional fields flags for compute results */\n+ 731 TDS_SMALLINT column_operand;\n+ 732 TDS_TINYINT column_operator;\n+ 733\n+ 734 /* FIXME this is data related, not column */\n+736 TDS_INT column_cur_size;\n+ 737\n+ 738 /* related to binding or info stored by client libraries */\n+ 739 /* FIXME find a best place to store these data, some are unused */\n+ 740 TDS_SMALLINT column_bindtype;\n+ 741 TDS_SMALLINT column_bindfmt;\n+ 742 TDS_UINT column_bindlen;\n+ 743 TDS_SMALLINT *column_nullbind;\n+ 744 TDS_CHAR *column_varaddr;\n+ 745 TDS_INT *column_lenbind;\n+ 746 TDS_INT column_textpos;\n+ 747 TDS_INT column_text_sqlgetdatapos;\n+ 748 TDS_CHAR column_text_sqlputdatainfo;\n+ 749 unsigned char column_iconv_left;\n+ 750 char column_iconv_buf[9];\n+ 751\n+ 752 BCPCOLDATA *bcp_column_data;\n+761 TDS_INT bcp_prefix_len;\n+ 762 TDS_INT bcp_term_len;\n+ 763 TDS_CHAR *bcp_terminator;\n+ 764};\n+ 765\n+ 766\n+768typedef struct tds_result_info\n+ 769{\n+ 770 /* TODO those fields can became a struct */\n+ 771 TDSCOLUMN **columns;\n+ 772 TDS_USMALLINT num_cols;\n+ 773 TDS_USMALLINT computeid;\n+ 774 TDS_INT ref_count;\n+ 775 TDSSOCKET *attached_to;\n+ 776 unsigned char *current_row;\n+ 777 void (*row_free)(struct tds_result_info* result, unsigned char *row);\n+ 778 TDS_INT row_size;\n+ 779\n+ 780 TDS_SMALLINT *bycolumns;\n+ 781 TDS_USMALLINT by_cols;\n+ 782 bool rows_exist;\n+ 783 /* TODO remove ?? used only in dblib */\n+ 784 bool more_results;\n+785} TDSRESULTINFO;\n+ 786\n+788typedef enum tds_states\n+ 789{\n+790 TDS_IDLE,\n+791 TDS_WRITING,\n+792 TDS_SENDING,\n+793 TDS_PENDING,\n+794 TDS_READING,\n+ 795 TDS_DEAD\n+796} TDS_STATE;\n+ 797\n+ 798typedef enum tds_operations\n+ 799{\n+ 800 TDS_OP_NONE = 0,\n+ 801\n+ 802 /* mssql operations */\n+ 803 TDS_OP_CURSOR = TDS_SP_CURSOR,\n+ 804 TDS_OP_CURSOROPEN = TDS_SP_CURSOROPEN,\n+ 805 TDS_OP_CURSORPREPARE = TDS_SP_CURSORPREPARE,\n+ 806 TDS_OP_CURSOREXECUTE = TDS_SP_CURSOREXECUTE,\n+ 807 TDS_OP_CURSORPREPEXEC = TDS_SP_CURSORPREPEXEC,\n+ 808 TDS_OP_CURSORUNPREPARE = TDS_SP_CURSORUNPREPARE,\n+ 809 TDS_OP_CURSORFETCH = TDS_SP_CURSORFETCH,\n+ 810 TDS_OP_CURSOROPTION = TDS_SP_CURSOROPTION,\n+ 811 TDS_OP_CURSORCLOSE = TDS_SP_CURSORCLOSE,\n+ 812 TDS_OP_EXECUTESQL = TDS_SP_EXECUTESQL,\n+ 813 TDS_OP_PREPARE = TDS_SP_PREPARE,\n+ 814 TDS_OP_EXECUTE = TDS_SP_EXECUTE,\n+ 815 TDS_OP_PREPEXEC = TDS_SP_PREPEXEC,\n+ 816 TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC,\n+ 817 TDS_OP_UNPREPARE = TDS_SP_UNPREPARE,\n+ 818\n+ 819 /* sybase operations */\n+ 820 TDS_OP_DYN_DEALLOC = 100,\n+ 821} TDS_OPERATION;\n+ 822\n+ 823#define TDS_DBG_LOGIN __FILE__, ((__LINE__ << 4) | 11)\n+ 824#define TDS_DBG_HEADER __FILE__, ((__LINE__ << 4) | 10)\n+ 825#define TDS_DBG_FUNC __FILE__, ((__LINE__ << 4) | 7)\n+ 826#define TDS_DBG_INFO2 __FILE__, ((__LINE__ << 4) | 6)\n+ 827#define TDS_DBG_INFO1 __FILE__, ((__LINE__ << 4) | 5)\n+ 828#define TDS_DBG_NETWORK __FILE__, ((__LINE__ << 4) | 4)\n+ 829#define TDS_DBG_WARN __FILE__, ((__LINE__ << 4) | 3)\n+ 830#define TDS_DBG_ERROR __FILE__, ((__LINE__ << 4) | 2)\n+ 831#define TDS_DBG_SEVERE __FILE__, ((__LINE__ << 4) | 1)\n+ 832\n+ 833#define TDS_DBGFLAG_FUNC 0x80\n+ 834#define TDS_DBGFLAG_INFO2 0x40\n+ 835#define TDS_DBGFLAG_INFO1 0x20\n+ 836#define TDS_DBGFLAG_NETWORK 0x10\n+ 837#define TDS_DBGFLAG_WARN 0x08\n+ 838#define TDS_DBGFLAG_ERROR 0x04\n+ 839#define TDS_DBGFLAG_SEVERE 0x02\n+ 840#define TDS_DBGFLAG_ALL 0xfff\n+ 841#define TDS_DBGFLAG_LOGIN 0x0800\n+ 842#define TDS_DBGFLAG_HEADER 0x0400\n+ 843#define TDS_DBGFLAG_PID 0x1000\n+ 844#define TDS_DBGFLAG_TIME 0x2000\n+ 845#define TDS_DBGFLAG_SOURCE 0x4000\n+ 846#define TDS_DBGFLAG_THREAD 0x8000\n+ 847\n+ 848#if 0\n+ 854enum TDS_DBG_LOG_STATE\n+ 855{\n+ 856 TDS_DBG_LOGIN = (1 << 0)\n+ 858 , TDS_DBG_API = (1 << 1)\n+ 859 , TDS_DBG_ASYNC = (1 << 2)\n+ 860 , TDS_DBG_DIAG = (1 << 3)\n+ 861 , TDS_DBG_error = (1 << 4)\n+ 862 /* TODO: ^^^^^ make upper case when old #defines (above) are removed */\n+ 863 /* Log FreeTDS runtime/logic error occurs. */\n+ 864 , TDS_DBG_PACKET = (1 << 5)\n+ 865 , TDS_DBG_LIBTDS = (1 << 6)\n+ 866 , TDS_DBG_CONFIG = (1 << 7)\n+ 867 , TDS_DBG_DEFAULT = 0xFE\n+ 868};\n+ 869#endif\n+ 870\n+ 871typedef struct tds_result_info TDSCOMPUTEINFO;\n+ 872\n+ 873typedef TDSRESULTINFO TDSPARAMINFO;\n+ 874\n+875typedef struct tds_message\n+ 876{\n+ 877 TDS_CHAR *server;\n+ 878 TDS_CHAR *message;\n+ 879 TDS_CHAR *proc_name;\n+ 880 TDS_CHAR *sql_state;\n+ 881 TDS_INT msgno;\n+ 882 TDS_INT line_number;\n+ 883 /* -1 .. 255 */\n+ 884 TDS_SMALLINT state;\n+ 885 TDS_TINYINT priv_msg_type;\n+ 886 TDS_TINYINT severity;\n+ 887 /* for library-generated errors */\n+ 888 int oserr;\n+ 889} TDSMESSAGE;\n+ 890\n+891typedef struct tds_upd_col\n+ 892{\n+ 893 struct tds_upd_col *next;\n+ 894 TDS_INT colnamelength;\n+ 895 char * columnname;\n+ 896} TDSUPDCOL;\n+ 897\n+ 898typedef enum {\n+ 899 TDS_CURSOR_STATE_UNACTIONED = 0 /* initial value */\n+ 900 , TDS_CURSOR_STATE_REQUESTED = 1 /* called by ct_cursor */\n+ 901 , TDS_CURSOR_STATE_SENT = 2 /* sent to server */\n+ 902 , TDS_CURSOR_STATE_ACTIONED = 3 /* acknowledged by server */\n+ 903} TDS_CURSOR_STATE;\n+ 904\n+905typedef struct tds_cursor_status\n+ 906{\n+ 907 TDS_CURSOR_STATE declare;\n+ 908 TDS_CURSOR_STATE cursor_row;\n+ 909 TDS_CURSOR_STATE open;\n+ 910 TDS_CURSOR_STATE fetch;\n+ 911 TDS_CURSOR_STATE close;\n+ 912 TDS_CURSOR_STATE dealloc;\n+ 913} TDS_CURSOR_STATUS;\n+ 914\n+ 915typedef enum tds_cursor_operation\n+ 916{\n+ 917 TDS_CURSOR_POSITION = 0,\n+ 918 TDS_CURSOR_UPDATE = 1,\n+ 919 TDS_CURSOR_DELETE = 2,\n+ 920 TDS_CURSOR_INSERT = 4\n+ 921} TDS_CURSOR_OPERATION;\n+ 922\n+ 923typedef enum tds_cursor_fetch\n+ 924{\n+ 925 TDS_CURSOR_FETCH_NEXT = 1,\n+ 926 TDS_CURSOR_FETCH_PREV,\n+ 927 TDS_CURSOR_FETCH_FIRST,\n+ 928 TDS_CURSOR_FETCH_LAST,\n+ 929 TDS_CURSOR_FETCH_ABSOLUTE,\n+ 930 TDS_CURSOR_FETCH_RELATIVE\n+ 931} TDS_CURSOR_FETCH;\n+ 932\n+936typedef struct tds_cursor\n+ 937{\n+938 struct tds_cursor *next;\n+939 TDS_INT ref_count;\n+940 char *cursor_name;\n+941 TDS_INT cursor_id;\n+942 TDS_TINYINT options;\n+946 bool defer_close;\n+947 char *query;\n+ 948 /* TODO for updatable columns */\n+ 949 /* TDS_TINYINT number_upd_cols; */\n+ 950 /* TDSUPDCOL *cur_col_list; */\n+951 TDS_INT cursor_rows;\n+ 952 /* TDSPARAMINFO *params; */\n+953 TDS_CURSOR_STATUS status;\n+ 954 TDS_USMALLINT srv_status;\n+ 955 TDSRESULTINFO *res_info;\n+956 TDS_INT type, concurrency;\n+957} TDSCURSOR;\n+ 958\n+962typedef struct tds_env\n+ 963{\n+965 int block_size;\n+ 966 char *language;\n+968 char *charset;\n+970 char *database;\n+971} TDSENV;\n+ 972\n+976typedef struct tds_dynamic\n+ 977{\n+978 struct tds_dynamic *next;\n+979 TDS_INT ref_count;\n+981 TDS_INT num_id;\n+987 char id[30];\n+993 TDS_TINYINT emulated;\n+997 bool defer_close;\n+ 998 /* int dyn_state; */ /* TODO use it */\n+999 TDSPARAMINFO *res_info;\n+1007 TDSPARAMINFO *params;\n+1009 char *query;\n+1010} TDSDYNAMIC;\n+ 1011\n+ 1012typedef enum {\n+ 1013 TDS_MULTIPLE_QUERY,\n+ 1014 TDS_MULTIPLE_EXECUTE,\n+ 1015 TDS_MULTIPLE_RPC\n+ 1016} TDS_MULTIPLE_TYPE;\n+ 1017\n+1018typedef struct tds_multiple\n+ 1019{\n+ 1020 TDS_MULTIPLE_TYPE type;\n+ 1021 unsigned int flags;\n+ 1022} TDSMULTIPLE;\n+ 1023\n+ 1024/* forward declaration */\n+ 1025typedef struct tds_context TDSCONTEXT;\n+ 1026typedef int (*err_handler_t) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE\n+*);\n+ 1027\n+1028struct tds_context\n+ 1029{\n+ 1030 TDSLOCALE *locale;\n+ 1031 void *parent;\n+ 1032 /* handlers */\n+ 1033 int (*msg_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);\n+ 1034 int (*err_handler) (const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *);\n+ 1035 int (*int_handler) (void *);\n+ 1036 bool money_use_2_digits;\n+ 1037};\n+ 1038\n+ 1039enum TDS_ICONV_ENTRY\n+ 1040{\n+ 1041 client2ucs2\n+ 1042 , client2server_chardata\n+ 1043 , initial_char_conv_count /* keep last */\n+ 1044};\n+ 1045\n+1046typedef struct tds_authentication\n+ 1047{\n+ 1048 uint8_t *packet;\n+ 1049 int packet_len;\n+ 1050 /* TDS_MSG_TOKEN type, for TDS5 */\n+ 1051 uint16_t msg_type;\n+ 1052 TDSRET (*free)(TDSCONNECTION* conn, struct tds_authentication * auth);\n+ 1053 TDSRET (*handle_next)(TDSSOCKET * tds, struct tds_authentication * auth,\n+size_t len);\n+ 1054} TDSAUTHENTICATION;\n+ 1055\n+1056typedef struct tds_packet\n+ 1057{\n+ 1058 struct tds_packet *next;\n+ 1059 uint16_t sid;\n+ 1060\n+ 1061#if ENABLE_ODBC_MARS\n+ 1065 uint8_t data_start;\n+ 1066#endif\n+ 1067\n+1071 unsigned data_len;\n+ 1072 unsigned capacity;\n+ 1073 unsigned char buf[1];\n+ 1074} TDSPACKET;\n+ 1075\n+ 1076#if ENABLE_ODBC_MARS\n+ 1077#define tds_packet_zero_data_start(pkt) do { (pkt)->data_start = 0; }\n+while(0)\n+ 1078#define tds_packet_get_data_start(pkt) ((pkt)->data_start)\n+ 1079#else\n+ 1080#define tds_packet_zero_data_start(pkt) do { } while(0)\n+ 1081#define tds_packet_get_data_start(pkt) 0\n+ 1082#endif\n+ 1083\n+1084typedef struct tds_poll_wakeup\n+ 1085{\n+ 1086 TDS_SYS_SOCKET s_signal, s_signaled;\n+ 1087} TDSPOLLWAKEUP;\n+ 1088\n+ 1089/* field related to connection */\n+1090struct tds_connection\n+ 1091{\n+ 1092 TDS_USMALLINT tds_version;\n+1093 TDS_UINT product_version;\n+ 1094 char *product_name;\n+ 1095\n+1096 TDS_SYS_SOCKET s;\n+ 1097 TDSPOLLWAKEUP wakeup;\n+ 1098 const TDSCONTEXT *tds_ctx;\n+ 1099\n+1101 TDSENV env;\n+ 1102\n+1107 TDSCURSOR *cursors;\n+1112 TDSDYNAMIC *dyns;\n+ 1113\n+ 1114 int char_conv_count;\n+ 1115 TDSICONV **char_convs;\n+ 1116\n+ 1117 TDS_UCHAR collation[5];\n+ 1118 TDS_UCHAR tds72_transaction[8];\n+ 1119\n+ 1120 TDS_CAPABILITIES capabilities;\n+ 1121 unsigned int use_iconv:1;\n+ 1122 unsigned int tds71rev1:1;\n+1123 unsigned int pending_close:1;\n+ 1124 unsigned int encrypt_single_packet:1;\n+ 1125#if ENABLE_ODBC_MARS\n+ 1126 unsigned int mars:1;\n+ 1127\n+ 1128 TDSSOCKET *in_net_tds;\n+ 1129 TDSPACKET *packets;\n+ 1130 TDSPACKET *recv_packet;\n+ 1131 TDSPACKET *send_packets;\n+ 1132 unsigned send_pos, recv_pos;\n+ 1133\n+ 1134#define BUSY_SOCKET ((TDSSOCKET*)(TDS_UINTPTR)1)\n+ 1135#define TDSSOCKET_VALID(tds) (((TDS_UINTPTR)(tds)) > 1)\n+ 1136 struct tds_socket **sessions;\n+ 1137 unsigned num_sessions;\n+ 1138#endif\n+ 1139 tds_mutex list_mtx;\n+ 1140\n+ 1141 unsigned num_cached_packets;\n+ 1142 TDSPACKET *packet_cache;\n+ 1143\n+ 1144 int spid;\n+ 1145 int client_spid;\n+ 1146\n+ 1147 void *tls_session;\n+ 1148#if defined(HAVE_GNUTLS)\n+ 1149 void *tls_credentials;\n+ 1150#elif defined(HAVE_OPENSSL)\n+ 1151 void *tls_ctx;\n+ 1152#else\n+ 1153 void *tls_dummy;\n+ 1154#endif\n+ 1155 TDSAUTHENTICATION *authentication;\n+ 1156 char *server;\n+ 1157};\n+ 1158\n+1162struct tds_socket\n+ 1163{\n+ 1164#if ENABLE_ODBC_MARS\n+ 1165 TDSCONNECTION *conn;\n+ 1166#else\n+ 1167 TDSCONNECTION conn[1];\n+ 1168#endif\n+ 1169\n+ 1170 void *parent;\n+ 1171\n+1177 unsigned char *in_buf;\n+ 1178\n+1185 unsigned char *out_buf;\n+ 1186\n+1191 unsigned int out_buf_max;\n+1192 unsigned in_pos;\n+1193 unsigned out_pos;\n+1194 unsigned in_len;\n+1195 unsigned char in_flag;\n+1196 unsigned char out_flag;\n+ 1198 unsigned frozen;\n+1203 TDSPACKET *frozen_packets;\n+ 1204\n+ 1205#if ENABLE_ODBC_MARS\n+ 1210 uint16_t sid;\n+ 1211\n+ 1216 tds_condition packet_cond;\n+ 1217\n+ 1222 TDSPACKET *sending_packet;\n+ 1223 TDS_UINT recv_seq;\n+ 1224 TDS_UINT send_seq;\n+ 1225 TDS_UINT recv_wnd;\n+ 1226 TDS_UINT send_wnd;\n+ 1227#endif\n+ 1228 /* packet we received */\n+ 1229 TDSPACKET *recv_packet;\n+1231 TDSPACKET *send_packet;\n+ 1232\n+1238 TDSRESULTINFO *current_results;\n+ 1239 TDSRESULTINFO *res_info;\n+ 1240 TDS_UINT num_comp_info;\n+ 1241 TDSCOMPUTEINFO **comp_info;\n+ 1242 TDSPARAMINFO *param_info;\n+1243 TDSCURSOR *cur_cursor;\n+1244 bool bulk_query;\n+1245 bool has_status;\n+1246 bool in_row;\n+ 1247 volatile\n+1248 unsigned char in_cancel;\n+1250 TDS_INT ret_status;\n+ 1251 TDS_STATE state;\n+ 1252\n+ 1253 TDS_INT query_timeout;\n+1254 TDS_INT8 rows_affected;\n+1256 TDSDYNAMIC *cur_dyn;\n+1258 TDSLOGIN *login;\n+ 1260 void (*env_chg_func) (TDSSOCKET * tds, int type, char *oldval, char\n+*newval);\n+ 1261 TDS_OPERATION current_op;\n+ 1262\n+ 1263 int option_value;\n+ 1264 tds_mutex wire_mtx;\n+ 1265};\n+ 1266\n+ 1267#define tds_get_ctx(tds) ((tds)->conn->tds_ctx)\n+ 1268#define tds_set_ctx(tds, val) do { ((tds)->conn->tds_ctx) = (val); } while\n+(0)\n+ 1269#define tds_get_parent(tds) ((tds)->parent)\n+ 1270#define tds_set_parent(tds, val) do { ((tds)->parent) = (val); } while(0)\n+ 1271#define tds_get_s(tds) ((tds)->conn->s)\n+ 1272#define tds_set_s(tds, val) do { ((tds)->conn->s) = (val); } while(0)\n+ 1273\n+ 1274\n+ 1275/* config.c */\n+ 1276const TDS_COMPILETIME_SETTINGS *tds_get_compiletime_settings(void);\n+ 1277typedef void (*TDSCONFPARSE) (const char *option, const char *value, void\n+*param);\n+ 1278bool tds_read_conf_section(FILE * in, const char *section, TDSCONFPARSE\n+tds_conf_parse, void *parse_param);\n+ 1279bool tds_read_conf_file(TDSLOGIN * login, const char *server);\n+ 1280void tds_parse_conf_section(const char *option, const char *value, void\n+*param);\n+ 1281TDSLOGIN *tds_read_config_info(TDSSOCKET * tds, TDSLOGIN * login,\n+TDSLOCALE * locale);\n+ 1282void tds_fix_login(TDSLOGIN* login);\n+ 1283TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN* login);\n+ 1284struct addrinfo *tds_lookup_host(const char *servername);\n+ 1285TDSRET tds_lookup_host_set(const char *servername, struct addrinfo\n+**addr);\n+ 1286const char *tds_addrinfo2str(struct addrinfo *addr, char *name, int\n+namemax);\n+ 1287char *tds_get_home_file(const char *file);\n+ 1288\n+ 1289TDSRET tds_set_interfaces_file_loc(const char *interfloc);\n+ 1290extern const char STD_DATETIME_FMT[];\n+ 1291int tds_parse_boolean(const char *value, int default_value);\n+ 1292int tds_config_boolean(const char *option, const char *value, TDSLOGIN *\n+login);\n+ 1293\n+ 1294TDSLOCALE *tds_get_locale(void);\n+ 1295TDSRET tds_alloc_row(TDSRESULTINFO * res_info);\n+ 1296TDSRET tds_alloc_compute_row(TDSCOMPUTEINFO * res_info);\n+ 1297BCPCOLDATA * tds_alloc_bcp_column_data(unsigned int column_size);\n+ 1298TDSDYNAMIC *tds_lookup_dynamic(TDSCONNECTION * conn, const char *id);\n+ 1299/*@observer@*/ const char *tds_prtype(int token);\n+ 1300int tds_get_varint_size(TDSCONNECTION * conn, int datatype);\n+ 1301TDS_SERVER_TYPE tds_get_cardinal_type(TDS_SERVER_TYPE datatype, int\n+usertype);\n+ 1302\n+ 1303\n+ 1304/* iconv.c */\n+ 1305TDSRET tds_iconv_open(TDSCONNECTION * conn, const char *charset, int\n+use_utf16);\n+ 1306void tds_iconv_close(TDSCONNECTION * conn);\n+ 1307void tds_srv_charset_changed(TDSCONNECTION * conn, const char *charset);\n+ 1308void tds7_srv_charset_changed(TDSCONNECTION * conn, TDS_UCHAR collate[5]);\n+ 1309int tds_iconv_alloc(TDSCONNECTION * conn);\n+ 1310void tds_iconv_free(TDSCONNECTION * conn);\n+ 1311TDSICONV *tds_iconv_from_collate(TDSCONNECTION * conn, TDS_UCHAR collate\n+[5]);\n+ 1312\n+ 1313\n+ 1314/* mem.c */\n+ 1315void tds_free_socket(TDSSOCKET * tds);\n+ 1316void tds_free_all_results(TDSSOCKET * tds);\n+ 1317void tds_free_results(TDSRESULTINFO * res_info);\n+ 1318void tds_free_param_results(TDSPARAMINFO * param_info);\n+ 1319void tds_free_param_result(TDSPARAMINFO * param_info);\n+ 1320void tds_free_msg(TDSMESSAGE * message);\n+ 1321void tds_cursor_deallocated(TDSCONNECTION *conn, TDSCURSOR *cursor);\n+ 1322void tds_release_cursor(TDSCURSOR **pcursor);\n+ 1323void tds_free_bcp_column_data(BCPCOLDATA * coldata);\n+ 1324TDSRESULTINFO *tds_alloc_results(TDS_USMALLINT num_cols);\n+ 1325TDSCOMPUTEINFO **tds_alloc_compute_results(TDSSOCKET * tds, TDS_USMALLINT\n+num_cols, TDS_USMALLINT by_cols);\n+ 1326TDSCONTEXT *tds_alloc_context(void * parent);\n+ 1327void tds_free_context(TDSCONTEXT * locale);\n+ 1328TDSPARAMINFO *tds_alloc_param_result(TDSPARAMINFO * old_param);\n+ 1329void tds_free_input_params(TDSDYNAMIC * dyn);\n+ 1330void tds_release_dynamic(TDSDYNAMIC ** dyn);\n+ 1331static inline\n+ 1332void tds_release_cur_dyn(TDSSOCKET * tds)\n+ 1333{\n+ 1334 tds_release_dynamic(&tds->cur_dyn);\n+ 1335}\n+ 1336void tds_dynamic_deallocated(TDSCONNECTION *conn, TDSDYNAMIC *dyn);\n+ 1337void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn);\n+ 1338TDSSOCKET *tds_realloc_socket(TDSSOCKET * tds, size_t bufsize);\n+ 1339char *tds_alloc_client_sqlstate(int msgno);\n+ 1340char *tds_alloc_lookup_sqlstate(TDSSOCKET * tds, int msgno);\n+ 1341TDSLOGIN *tds_alloc_login(int use_environment);\n+ 1342TDSDYNAMIC *tds_alloc_dynamic(TDSCONNECTION * conn, const char *id);\n+ 1343void tds_free_login(TDSLOGIN * login);\n+ 1344TDSLOGIN *tds_init_login(TDSLOGIN * login, TDSLOCALE * locale);\n+ 1345TDSLOCALE *tds_alloc_locale(void);\n+ 1346void *tds_alloc_param_data(TDSCOLUMN * curparam);\n+ 1347void tds_free_locale(TDSLOCALE * locale);\n+ 1348TDSCURSOR * tds_alloc_cursor(TDSSOCKET * tds, const char *name, TDS_INT\n+namelen, const char *query, TDS_INT querylen);\n+ 1349void tds_free_row(TDSRESULTINFO * res_info, unsigned char *row);\n+ 1350TDSSOCKET *tds_alloc_socket(TDSCONTEXT * context, unsigned int bufsize);\n+ 1351TDSSOCKET *tds_alloc_additional_socket(TDSCONNECTION *conn);\n+ 1352void tds_set_current_results(TDSSOCKET *tds, TDSRESULTINFO *info);\n+ 1353void tds_detach_results(TDSRESULTINFO *info);\n+ 1354void * tds_realloc(void **pp, size_t new_size);\n+ 1355#define TDS_RESIZE(p, n_elem) \\\n+ 1356 tds_realloc((void **) &(p), sizeof(*(p)) * (size_t) (n_elem))\n+ 1357#define tds_new(type, n) ((type *) malloc(sizeof(type) * (n)))\n+ 1358#define tds_new0(type, n) ((type *) calloc(n, sizeof(type)))\n+ 1359\n+ 1360TDSPACKET *tds_alloc_packet(void *buf, unsigned len);\n+ 1361TDSPACKET *tds_realloc_packet(TDSPACKET *packet, unsigned len);\n+ 1362void tds_free_packets(TDSPACKET *packet);\n+ 1363TDSBCPINFO *tds_alloc_bcpinfo(void);\n+ 1364void tds_free_bcpinfo(TDSBCPINFO *bcpinfo);\n+ 1365void tds_deinit_bcpinfo(TDSBCPINFO *bcpinfo);\n+ 1366\n+ 1367\n+ 1368/* login.c */\n+ 1369void tds_set_packet(TDSLOGIN * tds_login, int packet_size);\n+ 1370void tds_set_port(TDSLOGIN * tds_login, int port);\n+ 1371bool tds_set_passwd(TDSLOGIN * tds_login, const char *password) TDS_WUR;\n+ 1372void tds_set_bulk(TDSLOGIN * tds_login, bool enabled);\n+ 1373bool tds_set_user(TDSLOGIN * tds_login, const char *username) TDS_WUR;\n+ 1374bool tds_set_app(TDSLOGIN * tds_login, const char *application) TDS_WUR;\n+ 1375bool tds_set_host(TDSLOGIN * tds_login, const char *hostname) TDS_WUR;\n+ 1376bool tds_set_library(TDSLOGIN * tds_login, const char *library) TDS_WUR;\n+ 1377bool tds_set_server(TDSLOGIN * tds_login, const char *server) TDS_WUR;\n+ 1378bool tds_set_client_charset(TDSLOGIN * tds_login, const char *charset)\n+TDS_WUR;\n+ 1379bool tds_set_language(TDSLOGIN * tds_login, const char *language) TDS_WUR;\n+ 1380void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver,\n+TDS_TINYINT minor_ver);\n+ 1381int tds_connect_and_login(TDSSOCKET * tds, TDSLOGIN * login);\n+ 1382\n+ 1383\n+ 1384/* query.c */\n+ 1385void tds_start_query(TDSSOCKET *tds, unsigned char packet_type);\n+ 1386\n+ 1387TDSRET tds_submit_query(TDSSOCKET * tds, const char *query);\n+ 1388TDSRET tds_submit_query_params(TDSSOCKET * tds, const char *query,\n+TDSPARAMINFO * params, TDSHEADERS * head);\n+ 1389TDSRET tds_submit_queryf(TDSSOCKET * tds, const char *queryf, ...);\n+ 1390TDSRET tds_submit_prepare(TDSSOCKET * tds, const char *query, const char\n+*id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);\n+ 1391TDSRET tds_submit_execdirect(TDSSOCKET * tds, const char *query,\n+TDSPARAMINFO * params, TDSHEADERS * head);\n+ 1392TDSRET tds71_submit_prepexec(TDSSOCKET * tds, const char *query, const\n+char *id, TDSDYNAMIC ** dyn_out, TDSPARAMINFO * params);\n+ 1393TDSRET tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn);\n+ 1394TDSRET tds_send_cancel(TDSSOCKET * tds);\n+ 1395const char *tds_next_placeholder(const char *start);\n+ 1396int tds_count_placeholders(const char *query);\n+ 1397int tds_needs_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);\n+ 1398TDSRET tds_deferred_unprepare(TDSCONNECTION * conn, TDSDYNAMIC * dyn);\n+ 1399TDSRET tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn);\n+ 1400TDSRET tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO\n+* params, TDSHEADERS * head);\n+ 1401TDSRET tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command,\n+TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size);\n+ 1402TDSRET tds_submit_begin_tran(TDSSOCKET *tds);\n+ 1403TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont);\n+ 1404TDSRET tds_submit_commit(TDSSOCKET *tds, int cont);\n+ 1405TDSRET tds_disconnect(TDSSOCKET * tds);\n+ 1406size_t tds_quote_id(TDSSOCKET * tds, char *buffer, const char *id, int\n+idlen);\n+ 1407size_t tds_quote_id_rpc(TDSSOCKET * tds, char *buffer, const char *id, int\n+idlen);\n+ 1408size_t tds_quote_string(TDSSOCKET * tds, char *buffer, const char *str,\n+int len);\n+ 1409const char *tds_skip_comment(const char *s);\n+ 1410const char *tds_skip_quoted(const char *s);\n+ 1411size_t tds_fix_column_size(TDSSOCKET * tds, TDSCOLUMN * curcol);\n+ 1412const char *tds_convert_string(TDSSOCKET * tds, TDSICONV * char_conv,\n+const char *s, int len, size_t *out_len);\n+ 1413void tds_convert_string_free(const char *original, const char *converted);\n+ 1414#if !ENABLE_EXTRA_CHECKS\n+ 1415#define tds_convert_string_free(original, converted) \\\n+ 1416 do { if (original != converted) free((char*) converted); } while(0)\n+ 1417#endif\n+ 1418TDSRET tds_get_column_declaration(TDSSOCKET * tds, TDSCOLUMN * curcol,\n+char *out);\n+ 1419\n+ 1420TDSRET tds_cursor_declare(TDSSOCKET * tds, TDSCURSOR * cursor,\n+TDSPARAMINFO *params, int *send);\n+ 1421TDSRET tds_cursor_setrows(TDSSOCKET * tds, TDSCURSOR * cursor, int *send);\n+ 1422TDSRET tds_cursor_open(TDSSOCKET * tds, TDSCURSOR * cursor, TDSPARAMINFO\n+*params, int *send);\n+ 1423TDSRET tds_cursor_fetch(TDSSOCKET * tds, TDSCURSOR * cursor,\n+TDS_CURSOR_FETCH fetch_type, TDS_INT i_row);\n+ 1424TDSRET tds_cursor_get_cursor_info(TDSSOCKET * tds, TDSCURSOR * cursor,\n+TDS_UINT * row_number, TDS_UINT * row_count);\n+ 1425TDSRET tds_cursor_close(TDSSOCKET * tds, TDSCURSOR * cursor);\n+ 1426TDSRET tds_cursor_dealloc(TDSSOCKET * tds, TDSCURSOR * cursor);\n+ 1427TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *\n+cursor);\n+ 1428TDSRET tds_cursor_update(TDSSOCKET * tds, TDSCURSOR * cursor,\n+TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO * params);\n+ 1429TDSRET tds_cursor_setname(TDSSOCKET * tds, TDSCURSOR * cursor);\n+ 1430\n+ 1431TDSRET tds_multiple_init(TDSSOCKET *tds, TDSMULTIPLE *multiple,\n+TDS_MULTIPLE_TYPE type, TDSHEADERS * head);\n+ 1432TDSRET tds_multiple_done(TDSSOCKET *tds, TDSMULTIPLE *multiple);\n+ 1433TDSRET tds_multiple_query(TDSSOCKET *tds, TDSMULTIPLE *multiple, const\n+char *query, TDSPARAMINFO * params);\n+ 1434TDSRET tds_multiple_execute(TDSSOCKET *tds, TDSMULTIPLE *multiple,\n+TDSDYNAMIC * dyn);\n+ 1435\n+ 1436\n+ 1437/* token.c */\n+ 1438TDSRET tds_process_cancel(TDSSOCKET * tds);\n+ 1439int tds_get_token_size(int marker);\n+ 1440TDSRET tds_process_login_tokens(TDSSOCKET * tds);\n+ 1441TDSRET tds_process_simple_query(TDSSOCKET * tds);\n+ 1442int tds5_send_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD tds_command,\n+TDS_OPTION tds_option, TDS_OPTION_ARG * tds_argument,\n+ 1443 TDS_INT * tds_argsize);\n+ 1444TDSRET tds_process_tokens(TDSSOCKET * tds, /*@out@*/ TDS_INT *\n+result_type, /*@out@*/ int *done_flags, unsigned flag);\n+ 1445\n+ 1446\n+ 1447/* data.c */\n+ 1448void tds_set_param_type(TDSCONNECTION * conn, TDSCOLUMN * curcol,\n+TDS_SERVER_TYPE type);\n+ 1449void tds_set_column_type(TDSCONNECTION * conn, TDSCOLUMN * curcol,\n+TDS_SERVER_TYPE type);\n+ 1450#ifdef WORDS_BIGENDIAN\n+ 1451void tds_swap_datatype(int coltype, void *b);\n+ 1452#endif\n+ 1453\n+ 1454\n+ 1455/* tds_convert.c */\n+ 1456TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC * dr);\n+ 1457TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int\n+colsize);\n+ 1458extern const char tds_hex_digits[];\n+ 1459\n+ 1460\n+ 1461/* write.c */\n+ 1462int tds_init_write_buf(TDSSOCKET * tds);\n+ 1463int tds_put_n(TDSSOCKET * tds, const void *buf, size_t n);\n+ 1464int tds_put_string(TDSSOCKET * tds, const char *buf, int len);\n+ 1465int tds_put_int(TDSSOCKET * tds, TDS_INT i);\n+ 1466int tds_put_int8(TDSSOCKET * tds, TDS_INT8 i);\n+ 1467int tds_put_smallint(TDSSOCKET * tds, TDS_SMALLINT si);\n+1469#define tds_put_tinyint(tds, ti) tds_put_byte(tds,ti)\n+ 1470int tds_put_byte(TDSSOCKET * tds, unsigned char c);\n+ 1471TDSRET tds_flush_packet(TDSSOCKET * tds);\n+ 1472int tds_put_buf(TDSSOCKET * tds, const unsigned char *buf, int dsize, int\n+ssize);\n+ 1473\n+ 1474\n+ 1475/* read.c */\n+ 1476unsigned char tds_get_byte(TDSSOCKET * tds);\n+ 1477void tds_unget_byte(TDSSOCKET * tds);\n+ 1478unsigned char tds_peek(TDSSOCKET * tds);\n+ 1479TDS_USMALLINT tds_get_usmallint(TDSSOCKET * tds);\n+ 1480#define tds_get_smallint(tds) ((TDS_SMALLINT) tds_get_usmallint(tds))\n+ 1481TDS_UINT tds_get_uint(TDSSOCKET * tds);\n+ 1482#define tds_get_int(tds) ((TDS_INT) tds_get_uint(tds))\n+ 1483TDS_UINT8 tds_get_uint8(TDSSOCKET * tds);\n+ 1484#define tds_get_int8(tds) ((TDS_INT8) tds_get_uint8(tds))\n+ 1485size_t tds_get_string(TDSSOCKET * tds, size_t string_len, char *dest,\n+size_t dest_size);\n+ 1486TDSRET tds_get_char_data(TDSSOCKET * tds, char *dest, size_t wire_size,\n+TDSCOLUMN * curcol);\n+ 1487bool tds_get_n(TDSSOCKET * tds, /*@out@*/ /*@null@*/ void *dest, size_t\n+n);\n+ 1488int tds_get_size_by_type(TDS_SERVER_TYPE servertype);\n+ 1489DSTR* tds_dstr_get(TDSSOCKET * tds, DSTR * s, size_t len);\n+ 1490\n+ 1491\n+ 1492/* util.c */\n+ 1493int tdserror (const TDSCONTEXT * tds_ctx, TDSSOCKET * tds, int msgno, int\n+errnum);\n+ 1494TDS_STATE tds_set_state(TDSSOCKET * tds, TDS_STATE state);\n+ 1495void tds_swap_bytes(void *buf, int bytes);\n+ 1496unsigned int tds_gettime_ms(void);\n+ 1497char *tds_strndup(const void *s, TDS_INTPTR len);\n+ 1498\n+ 1499\n+ 1500/* log.c */\n+1501typedef struct tdsdump_off_item {\n+ 1502 struct tdsdump_off_item *next;\n+ 1503 tds_thread_id thread_id;\n+ 1504} TDSDUMP_OFF_ITEM;\n+ 1505void tdsdump_off(TDSDUMP_OFF_ITEM *off_item);\n+ 1506void tdsdump_on(TDSDUMP_OFF_ITEM *off_item);\n+ 1507int tdsdump_isopen(void);\n+ 1508#include \n+ 1509int tdsdump_open(const char *filename);\n+ 1510#include \n+ 1511void tdsdump_close(void);\n+ 1512void tdsdump_dump_buf(const char* file, unsigned int level_line, const\n+char *msg, const void *buf, size_t length);\n+ 1513void tdsdump_col(const TDSCOLUMN *col);\n+ 1514#undef tdsdump_log\n+ 1515void tdsdump_log(const char* file, unsigned int level_line, const char\n+*fmt, ...)\n+ 1516#if defined(__GNUC__) && __GNUC__ >= 2\n+ 1517#if defined(__MINGW32__)\n+ 1518 __attribute__ ((__format__ (ms_printf, 3, 4)))\n+ 1519#else\n+ 1520 __attribute__ ((__format__ (__printf__, 3, 4)))\n+ 1521#endif\n+ 1522#endif\n+ 1523;\n+ 1524#define TDSDUMP_LOG_FAST if (TDS_UNLIKELY(tds_write_dump)) tdsdump_log\n+ 1525#define tdsdump_log TDSDUMP_LOG_FAST\n+ 1526#define TDSDUMP_BUF_FAST if (TDS_UNLIKELY(tds_write_dump))\n+tdsdump_dump_buf\n+ 1527#define tdsdump_dump_buf TDSDUMP_BUF_FAST\n+ 1528\n+ 1529extern int tds_write_dump;\n+ 1530extern int tds_debug_flags;\n+ 1531extern int tds_g_append_mode;\n+ 1532\n+ 1533\n+ 1534/* net.c */\n+ 1535TDSERRNO tds_open_socket(TDSSOCKET * tds, struct addrinfo *ipaddr,\n+unsigned int port, int timeout, int *p_oserr);\n+ 1536void tds_close_socket(TDSSOCKET * tds);\n+ 1537int tds7_get_instance_ports(FILE *output, struct addrinfo *addr);\n+ 1538int tds7_get_instance_port(struct addrinfo *addr, const char *instance);\n+ 1539char *tds_prwsaerror(int erc);\n+ 1540void tds_prwsaerror_free(char *s);\n+ 1541int tds_connection_read(TDSSOCKET * tds, unsigned char *buf, int buflen);\n+ 1542int tds_connection_write(TDSSOCKET *tds, const unsigned char *buf, int\n+buflen, int final);\n+ 1543#define TDSSELREAD POLLIN\n+ 1544#define TDSSELWRITE POLLOUT\n+ 1545int tds_select(TDSSOCKET * tds, unsigned tds_sel, int timeout_seconds);\n+ 1546void tds_connection_close(TDSCONNECTION *conn);\n+ 1547int tds_goodread(TDSSOCKET * tds, unsigned char *buf, int buflen);\n+ 1548int tds_goodwrite(TDSSOCKET * tds, const unsigned char *buffer, size_t\n+buflen);\n+ 1549void tds_socket_flush(TDS_SYS_SOCKET sock);\n+ 1550int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock);\n+ 1551int tds_wakeup_init(TDSPOLLWAKEUP *wakeup);\n+ 1552void tds_wakeup_close(TDSPOLLWAKEUP *wakeup);\n+ 1553void tds_wakeup_send(TDSPOLLWAKEUP *wakeup, char cancel);\n+ 1554static inline TDS_SYS_SOCKET tds_wakeup_get_fd(const TDSPOLLWAKEUP\n+*wakeup)\n+ 1555{\n+ 1556 return wakeup->s_signaled;\n+ 1557}\n+ 1558\n+ 1559\n+ 1560/* packet.c */\n+ 1561int tds_read_packet(TDSSOCKET * tds);\n+ 1562TDSRET tds_write_packet(TDSSOCKET * tds, unsigned char final);\n+ 1563#if ENABLE_ODBC_MARS\n+ 1564int tds_append_cancel(TDSSOCKET *tds);\n+ 1565TDSRET tds_append_syn(TDSSOCKET *tds);\n+ 1566TDSRET tds_append_fin(TDSSOCKET *tds);\n+ 1567#else\n+ 1568int tds_put_cancel(TDSSOCKET * tds);\n+ 1569#endif\n+ 1570\n+1571typedef struct tds_freeze {\n+1573 TDSSOCKET *tds;\n+1575 TDSPACKET *pkt;\n+1577 unsigned pkt_pos;\n+1579 unsigned size_len;\n+ 1580} TDSFREEZE;\n+ 1581\n+ 1582void tds_freeze(TDSSOCKET *tds, TDSFREEZE *freeze, unsigned size_len);\n+ 1583size_t tds_freeze_written(TDSFREEZE *freeze);\n+ 1584TDSRET tds_freeze_abort(TDSFREEZE *freeze);\n+ 1585TDSRET tds_freeze_close(TDSFREEZE *freeze);\n+ 1586TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size);\n+ 1587\n+ 1588static void inline\n+ 1589tds_set_current_send_packet(TDSSOCKET *tds, TDSPACKET *pkt)\n+ 1590{\n+ 1591 tds->send_packet = pkt;\n+ 1592 tds->out_buf = pkt->buf + tds_packet_get_data_start(pkt);\n+ 1593}\n+ 1594\n+ 1595/* Macros to allow some indentation of the packets.\n+ 1596 *\n+ 1597 * The 3 nested fake loops require some explanation:\n+ 1598 * - first is to allows to declare variables;\n+ 1599 * - second is to force using brackets;\n+ 1600 * - third is to avoids that a break inside will skip the close.\n+ 1601 */\n+ 1602#define TDS_START_LEN_GENERIC(tds_socket, len) do { \\\n+ 1603 TDSFREEZE current_freeze[1]; \\\n+ 1604 tds_freeze((tds_socket), current_freeze, (len)); do { do\n+ 1605#define TDS_END_LEN while(0); } while(tds_freeze_close(current_freeze),\n+0); } while(0);\n+ 1606\n+ 1607#define TDS_START_LEN_TINYINT(tds_socket) TDS_START_LEN_GENERIC\n+(tds_socket, 1)\n+ 1608#define TDS_START_LEN_USMALLINT(tds_socket) TDS_START_LEN_GENERIC\n+(tds_socket, 2)\n+ 1609#define TDS_START_LEN_UINT(tds_socket) TDS_START_LEN_GENERIC(tds_socket,\n+4)\n+ 1610\n+ 1611/* vstrbuild.c */\n+ 1612TDSRET tds_vstrbuild(char *buffer, int buflen, int *resultlen, const char\n+*text, int textlen, const char *formats, int formatlen,\n+ 1613 va_list ap);\n+ 1614\n+ 1615\n+ 1616/* numeric.c */\n+ 1617char *tds_money_to_string(const TDS_MONEY * money, char *s, bool\n+use_2_digits);\n+ 1618TDS_INT tds_numeric_to_string(const TDS_NUMERIC * numeric, char *s);\n+ 1619TDS_INT tds_numeric_change_prec_scale(TDS_NUMERIC * numeric, unsigned char\n+new_prec, unsigned char new_scale);\n+ 1620\n+ 1621\n+ 1622/* getmac.c */\n+ 1623void tds_getmac(TDS_SYS_SOCKET s, unsigned char mac[6]);\n+ 1624\n+ 1625\n+ 1626/* challenge.c */\n+ 1627#ifndef HAVE_SSPI\n+ 1628TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET * tds);\n+ 1629TDSAUTHENTICATION * tds_gss_get_auth(TDSSOCKET * tds);\n+ 1630#else\n+ 1631TDSAUTHENTICATION * tds_sspi_get_auth(TDSSOCKET * tds);\n+ 1632#endif\n+ 1633TDSRET tds5_gss_send(TDSSOCKET *tds);\n+ 1634\n+ 1635\n+ 1636/* random.c */\n+ 1637void tds_random_buffer(unsigned char *out, int len);\n+ 1638\n+ 1639\n+ 1640/* sec_negotiate.c */\n+ 1641TDSAUTHENTICATION * tds5_negotiate_get_auth(TDSSOCKET * tds);\n+ 1642static inline\n+ 1643void tds5_negotiate_set_msg_type(TDSAUTHENTICATION * tds_auth, unsigned\n+msg_type)\n+ 1644{\n+ 1645 if (tds_auth)\n+ 1646 tds_auth->msg_type = msg_type;\n+ 1647}\n+ 1648\n+ 1649\n+ 1650/* bulk.c */\n+ 1651\n+1653enum tds_bcp_directions\n+ 1654{\n+ 1655 TDS_BCP_IN = 1,\n+ 1656 TDS_BCP_OUT = 2,\n+ 1657 TDS_BCP_QUERYOUT = 3\n+ 1658};\n+ 1659\n+1660struct tds_bcpinfo\n+ 1661{\n+ 1662 const char *hint;\n+ 1663 void *parent;\n+ 1664 DSTR tablename;\n+ 1665 TDS_CHAR *insert_stmt;\n+ 1666 TDS_INT direction;\n+ 1667 TDS_INT identity_insert_on;\n+ 1668 TDS_INT xfer_init;\n+ 1669 TDS_INT bind_count;\n+ 1670 TDSRESULTINFO *bindinfo;\n+ 1671};\n+ 1672\n+ 1673TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n+ 1674typedef TDSRET (*tds_bcp_get_col_data) (TDSBCPINFO *bulk, TDSCOLUMN\n+*bcpcol, int offset);\n+ 1675typedef void (*tds_bcp_null_error) (TDSBCPINFO *bulk, int index, int\n+offset);\n+ 1676TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo,\n+tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset);\n+ 1677TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied);\n+ 1678TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n+ 1679TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo);\n+ 1680\n+ 1681TDSRET tds_bcp_fread(TDSSOCKET * tds, TDSICONV * conv, FILE * stream,\n+ 1682 const char *terminator, size_t term_len, char **outbuf, size_t *\n+outbytes);\n+ 1683\n+ 1684TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char\n+*textptr, const char *timestamp, int with_log, TDS_UINT size);\n+ 1685TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text,\n+TDS_UINT size);\n+ 1686TDSRET tds_writetext_end(TDSSOCKET *tds);\n+ 1687\n+ 1688\n+ 1689static inline\n+ 1690bool tds_capability_enabled(const TDS_CAPABILITY_TYPE *cap, unsigned\n+cap_num)\n+ 1691{\n+ 1692 return (cap->values[sizeof(cap->values)-1-(cap_num>>3)] >> (cap_num&7)) &\n+1;\n+ 1693}\n+ 1694#define tds_capability_has_req(conn, cap) \\\n+ 1695 tds_capability_enabled(&conn->capabilities.types[0], cap)\n+ 1696#define tds_capability_has_res(conn, cap) \\\n+ 1697 tds_capability_enabled(&conn->capabilities.types[1], cap)\n+ 1698\n+ 1699#define IS_TDS42(x) (x->tds_version==0x402)\n+ 1700#define IS_TDS46(x) (x->tds_version==0x406)\n+ 1701#define IS_TDS50(x) (x->tds_version==0x500)\n+ 1702#define IS_TDS70(x) (x->tds_version==0x700)\n+ 1703#define IS_TDS71(x) (x->tds_version==0x701)\n+ 1704#define IS_TDS72(x) (x->tds_version==0x702)\n+ 1705#define IS_TDS73(x) (x->tds_version==0x703)\n+ 1706\n+ 1707#define IS_TDS50_PLUS(x) ((x)->tds_version>=0x500)\n+ 1708#define IS_TDS7_PLUS(x) ((x)->tds_version>=0x700)\n+ 1709#define IS_TDS71_PLUS(x) ((x)->tds_version>=0x701)\n+ 1710#define IS_TDS72_PLUS(x) ((x)->tds_version>=0x702)\n+ 1711#define IS_TDS73_PLUS(x) ((x)->tds_version>=0x703)\n+ 1712#define IS_TDS74_PLUS(x) ((x)->tds_version>=0x704)\n+ 1713\n+ 1714#define TDS_MAJOR(x) ((x)->tds_version >> 8)\n+ 1715#define TDS_MINOR(x) ((x)->tds_version & 0xff)\n+ 1716\n+ 1717#define IS_TDSDEAD(x) (((x) == NULL) || (x)->state == TDS_DEAD)\n+ 1718\n+1720#define TDS_IS_SYBASE(x) (!((x)->conn->product_version & 0x80000000u))\n+1722#define TDS_IS_MSSQL(x) (((x)->conn->product_version & 0x80000000u)!=0)\n+ 1723\n+1727#define TDS_MS_VER(maj,min,x) (0x80000000u|((maj)<<24)|((min)<<16)|(x))\n+ 1728\n+ 1729/* TODO test if not similar to ms one*/\n+1731#define TDS_SYB_VER(maj,min,x) (((maj)<<24)|((min)<<16)|(x)<<8)\n+ 1732\n+ 1733#ifdef __cplusplus\n+ 1734#if 0\n+ 1735{\n+ 1736#endif\n+ 1737}\n+ 1738#endif\n+ 1739\n+ 1740#include \n+ 1741\n+ 1742#define TDS_PUT_INT(tds,v) tds_put_int((tds), ((TDS_INT)(v)))\n+ 1743#define TDS_PUT_SMALLINT(tds,v) tds_put_smallint((tds), ((TDS_SMALLINT)\n+(v)))\n+ 1744#define TDS_PUT_BYTE(tds,v) tds_put_byte((tds), ((unsigned char)(v)))\n+ 1745\n+ 1746#endif /* _tds_h_ */\n+tds_iconv_alloc\n+int tds_iconv_alloc(TDSCONNECTION *conn)\n+Allocate iconv stuff.\n+Definition iconv.c:307\n+tds_get_conversion_type\n+TDS_SERVER_TYPE tds_get_conversion_type(TDS_SERVER_TYPE srctype, int colsize)\n+Return type suitable for conversions (convert all nullable types to fixed type)\n+Definition tds_types.h:125\n+tds_strndup\n+char * tds_strndup(const void *s, TDS_INTPTR len)\n+Copy a string of length len to a new allocated buffer This function does not\n+read more than len bytes...\n+Definition util.c:406\n+tds_set_state\n+TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)\n+Set state of TDS connection, with logging and checking.\n+Definition util.c:58\n+TDS_COMPILETIME_SETTINGS\n+struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS\n+A structure to hold all the compile-time settings.\n+TDSRESULTINFO\n+struct tds_result_info TDSRESULTINFO\n+Hold information for any results.\n+tdsdump_open\n+int tdsdump_open(const char *filename)\n+Create and truncate a human readable dump file for the TDS traffic.\n+Definition log.c:131\n+TDSVARIANT\n+struct tds_variant TDSVARIANT\n+Store variant informations.\n+tdsdump_close\n+void tdsdump_close(void)\n+Close the TDS dump log file.\n+Definition log.c:212\n+tds_set_column_type\n+void tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol,\n+TDS_SERVER_TYPE type)\n+Set type of column initializing all dependency.\n+Definition data.c:224\n+tds_set_server\n+bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR\n+Set the servername in a TDSLOGIN structure.\n+Definition login.c:129\n+TDSDATEREC\n+struct tdsdaterec TDSDATEREC\n+Used by tds_datecrack.\n+tds_get_locale\n+TDSLOCALE * tds_get_locale(void)\n+Get locale information.\n+Definition locale.c:50\n+TDSENV\n+struct tds_env TDSENV\n+Current environment as reported by the server.\n+tds_write_dump\n+int tds_write_dump\n+Tell if TDS debug logging is turned on or off.\n+Definition log.c:58\n+TDSBLOB\n+struct tds_blob TDSBLOB\n+Information about blobs (e.g.\n+tds_get_size_by_type\n+int tds_get_size_by_type(TDS_SERVER_TYPE servertype)\n+Return the number of bytes needed by specified type.\n+Definition tds_types.h:9\n+tds_numeric_bytes_per_prec\n+const int tds_numeric_bytes_per_prec[]\n+The following little table is indexed by precision and will tell us the number\n+of bytes required to s...\n+Definition numeric.c:41\n+tds_bcp_start_copy_in\n+TDSRET tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n+Start bulk copy to server.\n+Definition bulk.c:916\n+tds_numeric_to_string\n+TDS_INT tds_numeric_to_string(const TDS_NUMERIC *numeric, char *s)\n+Definition numeric.c:95\n+tds_get_varint_size\n+int tds_get_varint_size(TDSCONNECTION *conn, int datatype)\n+tds_get_varint_size() returns the size of a variable length integer returned in\n+a result string\n+Definition tds_types.h:57\n+tds_writetext_start\n+TDSRET tds_writetext_start(TDSSOCKET *tds, const char *objname, const char\n+*textptr, const char *timestamp, int with_log, TDS_UINT size)\n+Start writing writetext request.\n+Definition bulk.c:1147\n+tds_bcp_fread\n+TDSRET tds_bcp_fread(TDSSOCKET *tds, TDSICONV *conv, FILE *stream, const char\n+*terminator, size_t term_len, char **outbuf, size_t *outbytes)\n+Read a data file, passing the data through iconv().\n+Definition bulk.c:1077\n+tds_bcp_start\n+TDSRET tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n+Start sending BCP data to server.\n+Definition bulk.c:866\n+TDSDYNAMIC\n+struct tds_dynamic TDSDYNAMIC\n+Holds information for a dynamic (also called prepared) query.\n+tds_set_param_type\n+void tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE\n+type)\n+Set type of column initializing all dependency.\n+Definition data.c:246\n+tds_states\n+tds_states\n+values for tds->state\n+Definition tds.h:789\n+TDS_PENDING\n+@ TDS_PENDING\n+cilent is waiting for data\n+Definition tds.h:793\n+TDS_SENDING\n+@ TDS_SENDING\n+client would send data\n+Definition tds.h:792\n+TDS_READING\n+@ TDS_READING\n+client is reading data\n+Definition tds.h:794\n+TDS_WRITING\n+@ TDS_WRITING\n+client is writing data\n+Definition tds.h:791\n+TDS_IDLE\n+@ TDS_IDLE\n+no data expected\n+Definition tds.h:790\n+TDS_DEAD\n+@ TDS_DEAD\n+no connection\n+Definition tds.h:795\n+tds_end\n+tds_end\n+Flags returned in TDS_DONE token.\n+Definition tds.h:250\n+TDS_DONE_CANCELLED\n+@ TDS_DONE_CANCELLED\n+acknowledging an attention command (usually a cancel)\n+Definition tds.h:257\n+TDS_DONE_MORE_RESULTS\n+@ TDS_DONE_MORE_RESULTS\n+more results follow\n+Definition tds.h:252\n+TDS_DONE_SRVERROR\n+@ TDS_DONE_SRVERROR\n+SQL server server error.\n+Definition tds.h:259\n+TDS_DONE_FINAL\n+@ TDS_DONE_FINAL\n+final result set, command completed successfully.\n+Definition tds.h:251\n+TDS_DONE_ERROR\n+@ TDS_DONE_ERROR\n+error occurred\n+Definition tds.h:253\n+TDS_DONE_INXACT\n+@ TDS_DONE_INXACT\n+transaction in progress\n+Definition tds.h:254\n+TDS_DONE_PROC\n+@ TDS_DONE_PROC\n+results are from a stored procedure\n+Definition tds.h:255\n+TDS_DONE_COUNT\n+@ TDS_DONE_COUNT\n+count field in packet is valid\n+Definition tds.h:256\n+tdsdump_col\n+void tdsdump_col(const TDSCOLUMN *col)\n+Write a column value to the debug log.\n+Definition log.c:455\n+tds_writetext_continue\n+TDSRET tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT\n+size)\n+Send some data in the writetext request started by tds_writetext_start.\n+Definition bulk.c:1185\n+tdserror\n+int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)\n+Call the client library's error handler (for library-generated errors only)\n+Definition util.c:321\n+TDS_STATE\n+enum tds_states TDS_STATE\n+values for tds->state\n+tds_writetext_end\n+TDSRET tds_writetext_end(TDSSOCKET *tds)\n+Finish sending writetext data.\n+Definition bulk.c:1202\n+tds_bcp_init\n+TDSRET tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo)\n+Initialize BCP information.\n+Definition bulk.c:84\n+tds_bcp_directions\n+tds_bcp_directions\n+bcp direction\n+Definition tds.h:1654\n+tds_bcp_send_record\n+TDSRET tds_bcp_send_record(TDSSOCKET *tds, TDSBCPINFO *bcpinfo,\n+tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)\n+Send one row of data to server.\n+Definition bulk.c:468\n+tds_bcp_done\n+TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)\n+Tell we finished sending BCP data to server.\n+Definition bulk.c:836\n+TDS_ENCODING\n+struct tds_encoding TDS_ENCODING\n+Information relevant to libiconv.\n+tdsdump_off\n+void tdsdump_off(TDSDUMP_OFF_ITEM *off_item)\n+Temporarily turn off logging for current thread.\n+Definition log.c:81\n+tdsdump_on\n+void tdsdump_on(TDSDUMP_OFF_ITEM *off_item)\n+Turn logging back on for current thread.\n+Definition log.c:101\n+TDSCURSOR\n+struct tds_cursor TDSCURSOR\n+Holds informations about a cursor.\n+tds_ntlm_get_auth\n+TDSAUTHENTICATION * tds_ntlm_get_auth(TDSSOCKET *tds)\n+Build a NTLMSPP packet to send to server.\n+Definition challenge.c:721\n+tds_config_verstr\n+TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)\n+Set TDS version from given string.\n+Definition config.c:923\n+tds_get_compiletime_settings\n+const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void)\n+Return a structure capturing the compile-time settings provided to the\n+configure script.\n+Definition config.c:1344\n+tds_lookup_host\n+struct addrinfo * tds_lookup_host(const char *servername)\n+Get the IP address for a hostname.\n+Definition config.c:987\n+tds_read_conf_section\n+bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE\n+tds_conf_parse, void *parse_param)\n+Read a section of configuration file (INI style file)\n+Definition config.c:503\n+tds_read_conf_file\n+bool tds_read_conf_file(TDSLOGIN *login, const char *server)\n+Read configuration info for given server return 0 on error.\n+Definition config.c:346\n+tds_set_interfaces_file_loc\n+TDSRET tds_set_interfaces_file_loc(const char *interfloc)\n+Set the full name of interface file.\n+Definition config.c:961\n+tds_get_home_file\n+char * tds_get_home_file(const char *file)\n+Return filename from HOME directory.\n+Definition config.c:325\n+tds_read_config_info\n+TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE\n+*locale)\n+tds_read_config_info() will fill the tds connection structure based on\n+configuration information gath...\n+Definition config.c:138\n+tds_fix_login\n+void tds_fix_login(TDSLOGIN *login)\n+Fix configuration after reading it.\n+Definition config.c:285\n+tds_datecrack\n+TDSRET tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr)\n+Convert from db date format to a structured date format.\n+Definition convert.c:3172\n+tds_iconv_from_collate\n+TDSICONV * tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5])\n+Get iconv information from a LCID (to support different column encoding under\n+MSSQL2K)\n+Definition iconv.c:1245\n+tds_alloc_row\n+TDSRET tds_alloc_row(TDSRESULTINFO *res_info)\n+Allocate space for row store return NULL on out of memory.\n+Definition mem.c:524\n+tds_detach_results\n+void tds_detach_results(TDSRESULTINFO *info)\n+Detach result info from it current socket.\n+Definition mem.c:488\n+tds_alloc_param_result\n+TDSPARAMINFO * tds_alloc_param_result(TDSPARAMINFO *old_param)\n+Adds a output parameter to TDSPARAMINFO.\n+Definition mem.c:284\n+tds_alloc_param_data\n+void * tds_alloc_param_data(TDSCOLUMN *curparam)\n+Allocate data for a parameter.\n+Definition mem.c:364\n+tds_init_login\n+TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)\n+Initialize login structure with locale information and other stuff for\n+connection.\n+Definition mem.c:800\n+tds_free_param_result\n+void tds_free_param_result(TDSPARAMINFO *param_info)\n+Delete latest parameter.\n+Definition mem.c:320\n+tds_alloc_dynamic\n+TDSDYNAMIC * tds_alloc_dynamic(TDSCONNECTION *conn, const char *id)\n+Allocate a dynamic statement.\n+Definition mem.c:160\n+tds_realloc\n+void * tds_realloc(void **pp, size_t new_size)\n+Reallocate a pointer and update it if success.\n+Definition mem.c:1876\n+tds_free_input_params\n+void tds_free_input_params(TDSDYNAMIC *dyn)\n+Frees all allocated input parameters of a dynamic statement.\n+Definition mem.c:206\n+tds_release_dynamic\n+void tds_release_dynamic(TDSDYNAMIC **dyn)\n+Frees dynamic statement.\n+Definition mem.c:253\n+tds_needs_unprepare\n+int tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n+Check if dynamic request must be unprepared.\n+Definition query.c:1752\n+tds_skip_quoted\n+const char * tds_skip_quoted(const char *s)\n+Skip quoting string (like 'sfsf', \"dflkdj\" or [dfkjd])\n+Definition query.c:515\n+tds71_submit_prepexec\n+TDSRET tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id,\n+TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n+Creates a temporary stored procedure in the server and execute it.\n+Definition query.c:1401\n+tds_start_query\n+void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)\n+Start query packet of a given type.\n+Definition query.c:332\n+tds_send_cancel\n+TDSRET tds_send_cancel(TDSSOCKET *tds)\n+tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel\n+should be called dire...\n+Definition query.c:2026\n+tds_submit_execute\n+TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+Sends a previously prepared dynamic statement to the server.\n+Definition query.c:1630\n+tds_fix_column_size\n+size_t tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol)\n+Get column size for wire.\n+Definition query.c:1491\n+tds_get_column_declaration\n+TDSRET tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)\n+Return declaration for column (like \"varchar(20)\").\n+Definition query.c:718\n+tds_submit_commit\n+TDSRET tds_submit_commit(TDSSOCKET *tds, int cont)\n+Send a commit request.\n+Definition query.c:3724\n+tds_deferred_cursor_dealloc\n+TDSRET tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor)\n+Deallocate cursor on idle.\n+Definition query.c:3057\n+tds_submit_query\n+TDSRET tds_submit_query(TDSSOCKET *tds, const char *query)\n+Sends a language string to the database server for processing.\n+Definition query.c:210\n+tds_submit_rpc\n+TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO\n+*params, TDSHEADERS *head)\n+Calls a RPC from server.\n+Definition query.c:1929\n+tds_quote_id_rpc\n+size_t tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int\n+idlen)\n+Quote an id for a RPC call.\n+Definition query.c:2216\n+tds_quote_string\n+size_t tds_quote_string(TDSSOCKET *tds, char *buffer, const char *str, int len)\n+Quote a string.\n+Definition query.c:2241\n+tds_submit_prepare\n+TDSRET tds_submit_prepare(TDSSOCKET *tds, const char *query, const char *id,\n+TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n+Creates a temporary stored procedure in the server.\n+Definition query.c:1124\n+tds_submit_begin_tran\n+TDSRET tds_submit_begin_tran(TDSSOCKET *tds)\n+Send a rollback request.\n+Definition query.c:3665\n+tds_quote_id\n+size_t tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen)\n+Quote an id.\n+Definition query.c:2171\n+tds_next_placeholder\n+const char * tds_next_placeholder(const char *start)\n+Get position of next placeholder.\n+Definition query.c:535\n+tds_submit_query_params\n+TDSRET tds_submit_query_params(TDSSOCKET *tds, const char *query, TDSPARAMINFO\n+*params, TDSHEADERS *head)\n+Sends a language string to the database server for processing.\n+Definition query.c:350\n+tds_submit_rollback\n+TDSRET tds_submit_rollback(TDSSOCKET *tds, int cont)\n+Send a rollback request.\n+Definition query.c:3693\n+tds_deferred_unprepare\n+TDSRET tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n+Unprepare dynamic on idle.\n+Definition query.c:1774\n+tds_count_placeholders\n+int tds_count_placeholders(const char *query)\n+Count the number of placeholders ('?') in a query.\n+Definition query.c:571\n+tds_cursor_dealloc\n+TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)\n+Send a deallocation request to server.\n+Definition query.c:3006\n+tds_skip_comment\n+const char * tds_skip_comment(const char *s)\n+Skip a comment in a query.\n+Definition query.c:490\n+tds_convert_string\n+const char * tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char\n+*s, int len, size_t *out_len)\n+Convert a string in an allocated buffer.\n+Definition query.c:126\n+tds_submit_queryf\n+TDSRET tds_submit_queryf(TDSSOCKET *tds, const char *queryf,...)\n+Format and submit a query.\n+Definition query.c:467\n+tds_submit_execdirect\n+TDSRET tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO\n+*params, TDSHEADERS *head)\n+Submit a prepared query with parameters.\n+Definition query.c:1256\n+tds_set_cur_dyn\n+void tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+Set current dynamic.\n+Definition query.c:192\n+tds_submit_optioncmd\n+TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION\n+option, TDS_OPTION_ARG *param, TDS_INT param_size)\n+Send option commands to server.\n+Definition query.c:3389\n+tds_submit_unprepare\n+TDSRET tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+Send a unprepare request for a prepared query.\n+Definition query.c:1797\n+tds_dstr_get\n+DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)\n+Reads a string from wire and put in a DSTR.\n+Definition read.c:293\n+tds_get_byte\n+unsigned char tds_get_byte(TDSSOCKET *tds)\n+Return a single byte from the input buffer.\n+Definition read.c:72\n+tds_put_string\n+int tds_put_string(TDSSOCKET *tds, const char *buf, int len)\n+Output a string to wire automatic translate string to unicode if needed.\n+Definition write.c:97\n+tds_peek\n+unsigned char tds_peek(TDSSOCKET *tds)\n+Reads a byte from the TDS stream without removing it.\n+Definition read.c:100\n+tds_freeze_close_len\n+TDSRET tds_freeze_close_len(TDSFREEZE *freeze, int32_t size)\n+Stop keeping data for this specific freeze.\n+Definition packet.c:1031\n+tds_goodwrite\n+int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)\n+Definition net.c:985\n+tds_socket_set_nonblocking\n+int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)\n+Set socket to non-blocking.\n+Definition net.c:168\n+tds_close_socket\n+void tds_close_socket(TDSSOCKET *tds)\n+Close current socket.\n+Definition net.c:548\n+tds_read_packet\n+int tds_read_packet(TDSSOCKET *tds)\n+Read in one 'packet' from the server.\n+Definition packet.c:527\n+tds_freeze_written\n+size_t tds_freeze_written(TDSFREEZE *freeze)\n+Compute how many bytes has been written from freeze.\n+Definition packet.c:935\n+tds_flush_packet\n+TDSRET tds_flush_packet(TDSSOCKET *tds)\n+Flush packet to server.\n+Definition write.c:224\n+tds_freeze_close\n+TDSRET tds_freeze_close(TDSFREEZE *freeze)\n+Stop keeping data for this specific freeze.\n+Definition packet.c:996\n+tds_goodread\n+int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)\n+Loops until we have received some characters return -1 on failure.\n+Definition net.c:914\n+tds_freeze_abort\n+TDSRET tds_freeze_abort(TDSFREEZE *freeze)\n+Discard all data written after the freeze.\n+Definition packet.c:961\n+tds_get_uint8\n+TDS_UINT8 tds_get_uint8(TDSSOCKET *tds)\n+Get an uint64 from the server.\n+Definition read.c:140\n+tds_get_char_data\n+TDSRET tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size,\n+TDSCOLUMN *curcol)\n+Fetch character data the wire.\n+Definition read.c:195\n+tds_get_string\n+size_t tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t\n+dest_size)\n+Fetch a string from the wire.\n+Definition read.c:166\n+tds7_get_instance_ports\n+int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)\n+Get port of all instances.\n+Definition net.c:1091\n+tds_get_uint\n+TDS_UINT tds_get_uint(TDSSOCKET *tds)\n+Get an int32 from the server.\n+Definition read.c:127\n+tds7_get_instance_port\n+int tds7_get_instance_port(struct addrinfo *addr, const char *instance)\n+Get port of given instance.\n+Definition net.c:1227\n+tds_get_usmallint\n+TDS_USMALLINT tds_get_usmallint(TDSSOCKET *tds)\n+Get an int16 from the server.\n+Definition read.c:113\n+tds_unget_byte\n+void tds_unget_byte(TDSSOCKET *tds)\n+Unget will always work as long as you don't call it twice in a row.\n+Definition read.c:89\n+tds_select\n+int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)\n+Select on a socket until it's available or the timeout expires.\n+Definition net.c:610\n+tds_get_n\n+bool tds_get_n(TDSSOCKET *tds, void *dest, size_t n)\n+Get N bytes from the buffer and return them in the already allocated space\n+given to us.\n+Definition read.c:230\n+tds_prtype\n+const char * tds_prtype(int token)\n+Returns string representation of the given type.\n+Definition token.c:3056\n+tds_lookup_dynamic\n+TDSDYNAMIC * tds_lookup_dynamic(TDSCONNECTION *conn, const char *id)\n+Finds a dynamic given string id.\n+Definition token.c:2587\n+tds_process_login_tokens\n+TDSRET tds_process_login_tokens(TDSSOCKET *tds)\n+tds_process_login_tokens() is called after sending the login packet to the\n+server.\n+Definition token.c:411\n+tds_get_token_size\n+int tds_get_token_size(int marker)\n+tds_get_token_size() returns the size of a fixed length token used by\n+tds_process_cancel() to determi...\n+Definition token.c:2754\n+tds_process_tokens\n+TDSRET tds_process_tokens(TDSSOCKET *tds, TDS_INT *result_type, int\n+*done_flags, unsigned flag)\n+process all streams.\n+Definition token.c:531\n+tds_process_simple_query\n+TDSRET tds_process_simple_query(TDSSOCKET *tds)\n+Process results for simple query as \"SET TEXTSIZE\" or \"USE dbname\" If the\n+statement returns results,...\n+Definition token.c:881\n+tds_process_cancel\n+TDSRET tds_process_cancel(TDSSOCKET *tds)\n+Definition token.c:2554\n+tdsiconvinfo\n+Definition iconv.h:92\n+tdsnumeric\n+Definition proto.h:26\n+tdsmoney\n+Definition proto.h:39\n+tds_compiletime_settings\n+A structure to hold all the compile-time settings.\n+Definition tds.h:82\n+TDS_DATETIMEALL\n+this structure is not directed connected to a TDS protocol but keeps any DATE/\n+TIME information.\n+Definition tds.h:146\n+TDS_DATETIMEALL::date\n+TDS_INT date\n+date, 0 = 1900-01-01\n+Definition tds.h:148\n+TDS_DATETIMEALL::offset\n+TDS_SMALLINT offset\n+time offset\n+Definition tds.h:149\n+TDS_DATETIMEALL::time\n+TDS_UINT8 time\n+time, 7 digit precision\n+Definition tds.h:147\n+tdsdaterec\n+Used by tds_datecrack.\n+Definition tds.h:159\n+tdsdaterec::dayofyear\n+TDS_INT dayofyear\n+day of year (1-366)\n+Definition tds.h:164\n+tdsdaterec::weekday\n+TDS_INT weekday\n+day of week (0-6, 0 = sunday)\n+Definition tds.h:165\n+tdsdaterec::year\n+TDS_INT year\n+year\n+Definition tds.h:160\n+tdsdaterec::timezone\n+TDS_INT timezone\n+-840 - 840 minutes from UTC\n+Definition tds.h:170\n+tdsdaterec::minute\n+TDS_INT minute\n+0-59\n+Definition tds.h:167\n+tdsdaterec::day\n+TDS_INT day\n+day of month (1-31)\n+Definition tds.h:163\n+tdsdaterec::decimicrosecond\n+TDS_INT decimicrosecond\n+0-9999999\n+Definition tds.h:169\n+tdsdaterec::second\n+TDS_INT second\n+0-59\n+Definition tds.h:168\n+tdsdaterec::quarter\n+TDS_INT quarter\n+quarter (0-3)\n+Definition tds.h:161\n+tdsdaterec::hour\n+TDS_INT hour\n+0-23\n+Definition tds.h:166\n+tdsdaterec::month\n+TDS_INT month\n+month number (0-11)\n+Definition tds.h:162\n+tds_option_arg\n+Definition tds.h:330\n+tds_align_struct\n+Definition tds.h:495\n+tds_capability_type\n+Definition tds.h:504\n+tds_capabilities\n+Definition tds.h:511\n+tds_login\n+Definition tds.h:517\n+tds_login::crlfile\n+DSTR crlfile\n+certificate revocation file\n+Definition tds.h:531\n+tds_login::server_realm_name\n+DSTR server_realm_name\n+server realm name (in freetds.conf)\n+Definition tds.h:527\n+tds_login::user_name\n+DSTR user_name\n+account for login\n+Definition tds.h:534\n+tds_login::password\n+DSTR password\n+password of account login\n+Definition tds.h:535\n+tds_login::db_filename\n+DSTR db_filename\n+database filename to attach (MSSQL)\n+Definition tds.h:529\n+tds_login::server_name\n+DSTR server_name\n+server name (in freetds.conf)\n+Definition tds.h:518\n+tds_login::ip_addrs\n+struct addrinfo * ip_addrs\n+ip(s) of server\n+Definition tds.h:546\n+tds_login::server_charset\n+DSTR server_charset\n+charset of server e.g.\n+Definition tds.h:523\n+tds_login::tds_version\n+TDS_USMALLINT tds_version\n+TDS version.\n+Definition tds.h:520\n+tds_login::new_password\n+DSTR new_password\n+new password to set (TDS 7.2+)\n+Definition tds.h:536\n+tds_login::bulk_copy\n+unsigned int bulk_copy\n+if bulk copy should be enabled\n+Definition tds.h:556\n+tds_login::cafile\n+DSTR cafile\n+certificate authorities file\n+Definition tds.h:530\n+tds_login::server_spn\n+DSTR server_spn\n+server SPN (in freetds.conf)\n+Definition tds.h:528\n+tds_login::port\n+int port\n+port of database service\n+Definition tds.h:519\n+tds_headers\n+Definition tds.h:574\n+tds_locale\n+Definition tds.h:582\n+tds_blob\n+Information about blobs (e.g.\n+Definition tds.h:593\n+tds_variant\n+Store variant informations.\n+Definition tds.h:604\n+tds_encoding\n+Information relevant to libiconv.\n+Definition tds.h:618\n+tds_encoding::name\n+const char * name\n+name of the encoding (ie UTF-8)\n+Definition tds.h:620\n+tds_encoding::canonic\n+unsigned char canonic\n+internal numeric index into array of all encodings\n+Definition tds.h:624\n+tds_bcpcoldata\n+Definition tds.h:628\n+tds_column_funcs\n+Definition tds.h:643\n+tds_column_funcs::put_data\n+tds_func_put_data * put_data\n+Send column data to server.\n+Definition tds.h:662\n+tds_column_funcs::put_info\n+tds_func_put_info * put_info\n+Send metadata column information to server.\n+Definition tds.h:652\n+tds_column\n+Metadata about columns in regular and compute rows.\n+Definition tds.h:689\n+tds_column::bcp_prefix_len\n+TDS_INT bcp_prefix_len\n+The length, in bytes, of any length prefix this column may have.\n+Definition tds.h:761\n+tds_column::column_varint_size\n+TDS_TINYINT column_varint_size\n+size of length when reading from wire (0, 1, 2 or 4)\n+Definition tds.h:701\n+tds_column::column_size\n+TDS_INT column_size\n+maximun size of data.\n+Definition tds.h:694\n+tds_column::column_prec\n+TDS_TINYINT column_prec\n+precision for decimal/numeric\n+Definition tds.h:703\n+tds_column::column_type\n+TDS_SERVER_TYPE column_type\n+This type can be different from wire type because conversion (e.g.\n+Definition tds.h:696\n+tds_column::char_conv\n+TDSICONV * char_conv\n+refers to previously allocated iconv information\n+Definition tds.h:712\n+tds_column::column_scale\n+TDS_TINYINT column_scale\n+scale for decimal/numeric\n+Definition tds.h:704\n+tds_column::column_cur_size\n+TDS_INT column_cur_size\n+size written in variable (ie: char, text, binary).\n+Definition tds.h:736\n+tds_result_info\n+Hold information for any results.\n+Definition tds.h:769\n+tds_message\n+Definition tds.h:876\n+tds_upd_col\n+Definition tds.h:892\n+tds_cursor_status\n+Definition tds.h:906\n+tds_cursor\n+Holds informations about a cursor.\n+Definition tds.h:937\n+tds_cursor::options\n+TDS_TINYINT options\n+read only|updatable TODO use it\n+Definition tds.h:942\n+tds_cursor::defer_close\n+bool defer_close\n+true if cursor was marker to be closed when connection is idle\n+Definition tds.h:946\n+tds_cursor::ref_count\n+TDS_INT ref_count\n+reference counter so client can retain safely a pointer\n+Definition tds.h:939\n+tds_cursor::cursor_id\n+TDS_INT cursor_id\n+cursor id returned by the server after cursor declare\n+Definition tds.h:941\n+tds_cursor::cursor_rows\n+TDS_INT cursor_rows\n+< number of updatable columns\n+Definition tds.h:951\n+tds_cursor::next\n+struct tds_cursor * next\n+next in linked list, keep first\n+Definition tds.h:938\n+tds_cursor::type\n+TDS_INT type\n+row fetched from this cursor\n+Definition tds.h:956\n+tds_cursor::status\n+TDS_CURSOR_STATUS status\n+cursor parameter\n+Definition tds.h:953\n+tds_cursor::query\n+char * query\n+SQL query.\n+Definition tds.h:947\n+tds_cursor::cursor_name\n+char * cursor_name\n+name of the cursor\n+Definition tds.h:940\n+tds_env\n+Current environment as reported by the server.\n+Definition tds.h:963\n+tds_env::charset\n+char * charset\n+character set encoding\n+Definition tds.h:968\n+tds_env::block_size\n+int block_size\n+packet size (512-65535)\n+Definition tds.h:965\n+tds_env::database\n+char * database\n+database name\n+Definition tds.h:970\n+tds_dynamic\n+Holds information for a dynamic (also called prepared) query.\n+Definition tds.h:977\n+tds_dynamic::query\n+char * query\n+saved query, we need to know original query if prepare is impossible\n+Definition tds.h:1009\n+tds_dynamic::ref_count\n+TDS_INT ref_count\n+reference counter so client can retain safely a pointer\n+Definition tds.h:979\n+tds_dynamic::defer_close\n+bool defer_close\n+true if dynamic was marker to be closed when connection is idle\n+Definition tds.h:997\n+tds_dynamic::res_info\n+TDSPARAMINFO * res_info\n+query results\n+Definition tds.h:999\n+tds_dynamic::emulated\n+TDS_TINYINT emulated\n+this dynamic query cannot be prepared so libTDS have to construct a simple\n+query.\n+Definition tds.h:993\n+tds_dynamic::params\n+TDSPARAMINFO * params\n+query parameters.\n+Definition tds.h:1007\n+tds_dynamic::next\n+struct tds_dynamic * next\n+next in linked list, keep first\n+Definition tds.h:978\n+tds_dynamic::num_id\n+TDS_INT num_id\n+numeric id for mssql7+\n+Definition tds.h:981\n+tds_multiple\n+Definition tds.h:1019\n+tds_context\n+Definition tds.h:1029\n+tds_authentication\n+Definition tds.h:1047\n+tds_packet\n+Definition tds.h:1057\n+tds_packet::data_len\n+unsigned data_len\n+data length, this does not account SMP header, only TDS part\n+Definition tds.h:1071\n+tds_poll_wakeup\n+Definition tds.h:1085\n+tds_connection\n+Definition tds.h:1091\n+tds_connection::env\n+TDSENV env\n+environment is shared between all sessions\n+Definition tds.h:1101\n+tds_connection::cursors\n+TDSCURSOR * cursors\n+linked list of cursors allocated for this connection contains only cursors\n+allocated on the server\n+Definition tds.h:1107\n+tds_connection::s\n+TDS_SYS_SOCKET s\n+tcp socket, INVALID_SOCKET if not connected\n+Definition tds.h:1096\n+tds_connection::product_version\n+TDS_UINT product_version\n+version of product (Sybase/MS and full version)\n+Definition tds.h:1093\n+tds_connection::dyns\n+TDSDYNAMIC * dyns\n+list of dynamic allocated for this connection contains only dynamic allocated\n+on the server\n+Definition tds.h:1112\n+tds_connection::pending_close\n+unsigned int pending_close\n+true is connection has pending closing (cursors or dynamic)\n+Definition tds.h:1123\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n+tds_socket::login\n+TDSLOGIN * login\n+config for login stuff.\n+Definition tds.h:1258\n+tds_socket::in_len\n+unsigned in_len\n+input buffer length\n+Definition tds.h:1194\n+tds_socket::frozen_packets\n+TDSPACKET * frozen_packets\n+list of packets frozen, points to first one.\n+Definition tds.h:1203\n+tds_socket::send_packet\n+TDSPACKET * send_packet\n+packet we are preparing to send\n+Definition tds.h:1231\n+tds_socket::in_buf\n+unsigned char * in_buf\n+Input buffer.\n+Definition tds.h:1177\n+tds_socket::ret_status\n+TDS_INT ret_status\n+return status from store procedure\n+Definition tds.h:1250\n+tds_socket::out_pos\n+unsigned out_pos\n+current position in out_buf\n+Definition tds.h:1193\n+tds_socket::current_results\n+TDSRESULTINFO * current_results\n+Current query information.\n+Definition tds.h:1238\n+tds_socket::in_flag\n+unsigned char in_flag\n+input buffer type\n+Definition tds.h:1195\n+tds_socket::rows_affected\n+TDS_INT8 rows_affected\n+rows updated/deleted/inserted/selected, TDS_NO_COUNT if not valid\n+Definition tds.h:1254\n+tds_socket::out_flag\n+unsigned char out_flag\n+output buffer type\n+Definition tds.h:1196\n+tds_socket::in_pos\n+unsigned in_pos\n+current position in in_buf\n+Definition tds.h:1192\n+tds_socket::cur_cursor\n+TDSCURSOR * cur_cursor\n+cursor in use\n+Definition tds.h:1243\n+tds_socket::in_row\n+bool in_row\n+true if we are getting rows\n+Definition tds.h:1246\n+tds_socket::bulk_query\n+bool bulk_query\n+true is query sent was a bulk query so we need to switch state to QUERYING\n+Definition tds.h:1244\n+tds_socket::has_status\n+bool has_status\n+true is ret_status is valid\n+Definition tds.h:1245\n+tds_socket::out_buf\n+unsigned char * out_buf\n+Output buffer.\n+Definition tds.h:1185\n+tds_socket::in_cancel\n+volatile unsigned char in_cancel\n+indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean\n+we have to send cance...\n+Definition tds.h:1248\n+tds_socket::out_buf_max\n+unsigned int out_buf_max\n+Maximum size of packet pointed by out_buf.\n+Definition tds.h:1191\n+tds_socket::cur_dyn\n+TDSDYNAMIC * cur_dyn\n+dynamic structure in use\n+Definition tds.h:1256\n+tdsdump_off_item\n+Definition tds.h:1501\n+tds_freeze\n+Definition tds.h:1571\n+tds_freeze::tds\n+TDSSOCKET * tds\n+which socket we refer to\n+Definition tds.h:1573\n+tds_freeze::pkt_pos\n+unsigned pkt_pos\n+position in pkt\n+Definition tds.h:1577\n+tds_freeze::size_len\n+unsigned size_len\n+length size (0, 1, 2 or 4)\n+Definition tds.h:1579\n+tds_freeze::pkt\n+TDSPACKET * pkt\n+first packet frozen\n+Definition tds.h:1575\n+tds_bcpinfo\n+Definition tds.h:1661\n+tds_condition\n+Definition thread.h:278\n+tds_dstr\n+Structure to hold a string.\n+Definition string.h:36\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00428_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00428_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/convert.h Source File\n+FreeTDS API: include/freetds/odbc.h Source File\n \n \n \n \n \n \n \n@@ -74,142 +74,791 @@\n \n
    \n \n
    \n
    \n
    \n-
    convert.h
    \n+
    odbc.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _tdsconvert_h_
    \n-
    21#define _tdsconvert_h_
    \n-
    22
    \n-
    23#include <freetds/pushvis.h>
    \n-
    24
    \n-
    25#ifdef __cplusplus
    \n-
    26extern "C"
    \n-
    27{
    \n-
    28#if 0
    \n-
    29}
    \n-
    30#endif
    \n-
    31#endif
    \n-
    32
    \n-
    \n-
    33typedef union conv_result
    \n-
    34{
    \n-
    35 /* fixed */
    \n-
    36 TDS_TINYINT ti;
    \n-
    37 TDS_SMALLINT si;
    \n-
    38 TDS_USMALLINT usi;
    \n-
    39 TDS_INT i;
    \n-
    40 TDS_UINT ui;
    \n-
    41 TDS_INT8 bi;
    \n-
    42 TDS_UINT8 ubi;
    \n-
    43 TDS_FLOAT f;
    \n-
    44 TDS_REAL r;
    \n-
    45 TDS_MONEY m;
    \n-
    46 TDS_MONEY4 m4;
    \n-
    47 TDS_DATETIME dt;
    \n-
    48 TDS_DATETIME4 dt4;
    \n-\n-
    50 TDS_TIME time;
    \n-
    51 TDS_DATE date;
    \n-
    52 TDS_BIGTIME bigtime;
    \n-
    53 TDS_BIGDATETIME bigdatetime;
    \n-\n-
    55 TDS_UNIQUE u;
    \n-
    56
    \n-
    57 /* variable */
    \n-
    58 TDS_CHAR *c;
    \n-
    59 TDS_CHAR *ib;
    \n-
    60
    \n-
    61 /* sized buffer types */
    \n-
    \n-
    62 struct cc_t {
    \n-
    63 TDS_CHAR *c;
    \n-
    64 TDS_UINT len;
    \n-
    65 } cc;
    \n-
    \n-
    \n-
    66 struct cb_t {
    \n-
    67 TDS_CHAR *ib;
    \n-
    68 TDS_UINT len;
    \n-
    69 } cb;
    \n-
    \n-
    70}
    \n-
    \n-\n-
    72
    \n-
    73/*
    \n-
    74 * Failure return codes for tds_convert()
    \n-
    75 */
    \n-
    76#define TDS_CONVERT_FAIL -1 /* unspecified failure */
    \n-
    77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */
    \n-
    78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */
    \n-
    79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */
    \n-
    80#define TDS_CONVERT_OVERFLOW -5 /* result too large */
    \n-
    81
    \n-
    82/* sized types */
    \n-
    83#define TDS_CONVERT_CHAR 256
    \n-
    84#define TDS_CONVERT_BINARY 257
    \n-
    85
    \n-
    86unsigned char tds_willconvert(int srctype, int desttype);
    \n-
    87
    \n-
    88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);
    \n-
    89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, TDS_UINT srclen);
    \n-
    90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr);
    \n-
    91
    \n-
    92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC * timeptr, int prec);
    \n-
    93
    \n-
    94#ifdef __cplusplus
    \n-
    95#if 0
    \n-
    96{
    \n-
    97#endif
    \n-
    98}
    \n-
    99#endif
    \n-
    100
    \n-
    101#include <freetds/popvis.h>
    \n-
    102
    \n-
    103#endif /* _tdsconvert_h_ */
    \n-
    TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)
    Get same type but nullable.
    Definition convert.c:2926
    \n-
    unsigned char tds_willconvert(int srctype, int desttype)
    Test if a conversion is possible.
    Definition convert.c:3106
    \n-
    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:2992
    \n-
    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:1891
    \n-
    Definition convert.h:34
    \n-
    Definition convert.h:62
    \n-
    Definition convert.h:66
    \n-
    Definition proto.h:26
    \n-
    Definition proto.h:39
    \n-
    Definition proto.h:45
    \n-
    Definition proto.h:50
    \n-
    Definition proto.h:56
    \n-
    Definition proto.h:62
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n+
    3 * Copyright (C) 2004-2010 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    21#ifndef _sql_h_
    \n+
    22#define _sql_h_
    \n+
    23
    \n+
    24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS
    \n+
    25#include <freetds/tds.h>
    \n+
    26#include <freetds/thread.h>
    \n+
    27#include <freetds/data.h>
    \n+
    28
    \n+
    29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)
    \n+
    30#include <sql.h>
    \n+
    31#include <sqlext.h>
    \n+
    32#if defined(UNIXODBC) || defined(_WIN32)
    \n+
    33#include <odbcinst.h>
    \n+
    34#endif
    \n+
    35#else /* IODBC */
    \n+
    36#include <isql.h>
    \n+
    37#include <isqlext.h>
    \n+
    38#ifdef HAVE_IODBCINST_H
    \n+
    39#include <iodbcinst.h>
    \n+
    40#endif /* HAVE_IODBCINST_H */
    \n+
    41#endif
    \n+
    42
    \n+
    43#ifdef HAVE_WCHAR_H
    \n+
    44#include <wchar.h>
    \n+
    45#endif
    \n+
    46
    \n+
    47#ifndef HAVE_SQLLEN
    \n+
    48#ifndef SQLULEN
    \n+
    49#define SQLULEN SQLUINTEGER
    \n+
    50#endif
    \n+
    51#ifndef SQLLEN
    \n+
    52#define SQLLEN SQLINTEGER
    \n+
    53#endif
    \n+
    54#endif
    \n+
    55
    \n+
    56#ifndef HAVE_SQLSETPOSIROW
    \n+
    57#define SQLSETPOSIROW SQLUSMALLINT
    \n+
    58#endif
    \n+
    59
    \n+
    60#ifndef HAVE_SQLROWOFFSET
    \n+
    61#define SQLROWOFFSET SQLLEN
    \n+
    62#endif
    \n+
    63
    \n+
    64#ifndef HAVE_SQLROWSETSIZE
    \n+
    65#define SQLROWSETSIZE SQLULEN
    \n+
    66#endif
    \n+
    67
    \n+
    68#ifdef __cplusplus
    \n+
    69extern "C"
    \n+
    70{
    \n+
    71#if 0
    \n+
    72}
    \n+
    73#endif
    \n+
    74#endif
    \n+
    75
    \n+
    76#include <freetds/pushvis.h>
    \n+
    77#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n+
    78#define ODBC_API SQL_API __attribute__((externally_visible))
    \n+
    79#else
    \n+
    80#define ODBC_API SQL_API
    \n+
    81#endif
    \n+
    82
    \n+
    83#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)
    \n+
    84# define ODBC_PUBLIC __attribute__((dllexport))
    \n+
    85#else
    \n+
    86# define ODBC_PUBLIC
    \n+
    87#endif
    \n+
    88
    \n+
    89#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )
    \n+
    90#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )
    \n+
    91#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )
    \n+
    92
    \n+
    \n+\n+
    94{
    \n+
    95 const char *msg;
    \n+
    96 char state2[6];
    \n+
    97 char state3[6];
    \n+
    98 TDS_UINT native;
    \n+
    99 char *server;
    \n+
    100 int linenum;
    \n+
    101 int msgstate;
    \n+
    102 int row;
    \n+
    103};
    \n+
    \n+
    104
    \n+
    \n+\n+
    106{
    \n+
    107 struct _sql_error *errs;
    \n+
    108 int num_errors;
    \n+
    109 SQLRETURN lastrc;
    \n+
    110 char ranked;
    \n+
    111};
    \n+
    \n+
    112
    \n+
    113typedef struct _sql_errors TDS_ERRS;
    \n+
    114
    \n+
    115#if ENABLE_EXTRA_CHECKS
    \n+
    116void odbc_check_struct_extra(void *p);
    \n+
    117#else
    \n+
    118static inline void odbc_check_struct_extra(void *p) {}
    \n+
    119#endif
    \n+
    120
    \n+
    121#define ODBC_RETURN(handle, rc) \\
    \n+
    122 do { odbc_check_struct_extra(handle); \\
    \n+
    123 return handle->errs.lastrc = (rc); } while(0)
    \n+
    124#define ODBC_RETURN_(handle) \\
    \n+
    125 do { odbc_check_struct_extra(handle); \\
    \n+
    126 return handle->errs.lastrc; } while(0)
    \n+
    127
    \n+
    128#define ODBC_EXIT(handle, rc) \\
    \n+
    129 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \\
    \n+
    130 odbc_check_struct_extra(handle); \\
    \n+
    131 tds_mutex_unlock(&handle->mtx); \\
    \n+
    132 return _odbc_rc; } while(0)
    \n+
    133#define ODBC_EXIT_(handle) \\
    \n+
    134 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \\
    \n+
    135 odbc_check_struct_extra(handle); \\
    \n+
    136 tds_mutex_unlock(&handle->mtx); \\
    \n+
    137 return _odbc_rc; } while(0)
    \n+
    138
    \n+
    139
    \n+
    141void odbc_errs_reset(struct _sql_errors *errs);
    \n+
    142
    \n+
    144void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const char *msg);
    \n+
    145
    \n+
    147void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const char *sqlstate, const char *msg, int linenum,
    \n+
    148 int msgstate, const char *server, int row);
    \n+
    149
    \n+
    \n+\n+
    151{
    \n+
    152 SQLSMALLINT sql_desc_alloc_type;
    \n+
    153 SQLINTEGER sql_desc_bind_type;
    \n+
    154 SQLULEN sql_desc_array_size;
    \n+
    155 /* TODO SQLLEN ?? see http://support.microsoft.com/default.aspx?scid=kb;en-us;298678 */
    \n+
    156 SQLSMALLINT sql_desc_count;
    \n+
    157 SQLUSMALLINT *sql_desc_array_status_ptr;
    \n+
    158 SQLULEN *sql_desc_rows_processed_ptr;
    \n+
    159 SQLLEN *sql_desc_bind_offset_ptr;
    \n+
    160};
    \n+
    \n+
    161
    \n+
    \n+\n+
    163{
    \n+
    164 SQLUINTEGER sql_desc_auto_unique_value;
    \n+
    165 DSTR sql_desc_base_column_name;
    \n+
    166 DSTR sql_desc_base_table_name;
    \n+
    167 SQLINTEGER sql_desc_case_sensitive;
    \n+
    168 DSTR sql_desc_catalog_name;
    \n+
    169 SQLSMALLINT sql_desc_concise_type;
    \n+
    170 SQLPOINTER sql_desc_data_ptr;
    \n+
    171 SQLSMALLINT sql_desc_datetime_interval_code;
    \n+
    172 SQLINTEGER sql_desc_datetime_interval_precision;
    \n+
    173 SQLLEN sql_desc_display_size;
    \n+
    174 SQLSMALLINT sql_desc_fixed_prec_scale;
    \n+
    175 SQLLEN *sql_desc_indicator_ptr;
    \n+
    176 DSTR sql_desc_label;
    \n+
    177 SQLULEN sql_desc_length;
    \n+
    178 /* this point to a constant buffer, do not free or modify */
    \n+
    179 const char *sql_desc_literal_prefix;
    \n+
    180 /* this point to a constant buffer, do not free or modify */
    \n+
    181 const char *sql_desc_literal_suffix;
    \n+
    182 DSTR sql_desc_local_type_name;
    \n+
    183 DSTR sql_desc_name;
    \n+
    184 SQLSMALLINT sql_desc_nullable;
    \n+
    185 SQLINTEGER sql_desc_num_prec_radix;
    \n+
    186 SQLLEN sql_desc_octet_length;
    \n+
    187 SQLLEN *sql_desc_octet_length_ptr;
    \n+
    188 SQLSMALLINT sql_desc_parameter_type;
    \n+
    189 SQLSMALLINT sql_desc_precision;
    \n+
    190 SQLSMALLINT sql_desc_rowver;
    \n+
    191 SQLSMALLINT sql_desc_scale;
    \n+
    192 DSTR sql_desc_schema_name;
    \n+
    193 SQLSMALLINT sql_desc_searchable;
    \n+
    194 DSTR sql_desc_table_name;
    \n+
    195 SQLSMALLINT sql_desc_type;
    \n+
    196 /* this point to a constant buffer, do not free or modify */
    \n+
    197 const char *sql_desc_type_name;
    \n+
    198 SQLSMALLINT sql_desc_unnamed;
    \n+
    199 SQLSMALLINT sql_desc_unsigned;
    \n+
    200 SQLSMALLINT sql_desc_updatable;
    \n+
    201};
    \n+
    \n+
    202
    \n+
    \n+
    203struct _hdesc
    \n+
    204{
    \n+
    205 SQLSMALLINT htype; /* do not reorder this field */
    \n+
    206 struct _sql_errors errs; /* do not reorder this field */
    \n+
    207 tds_mutex mtx;
    \n+
    208 int type;
    \n+
    209 SQLHANDLE parent;
    \n+
    210 struct _dheader header;
    \n+
    211 struct _drecord *records;
    \n+
    212};
    \n+
    \n+
    213
    \n+
    214typedef struct _hdesc TDS_DESC;
    \n+
    215
    \n+
    216#define DESC_IRD 1
    \n+
    217#define DESC_IPD 2
    \n+
    218#define DESC_ARD 3
    \n+
    219#define DESC_APD 4
    \n+
    220
    \n+
    \n+\n+
    222{
    \n+
    223 SQLUINTEGER connection_pooling;
    \n+
    224 SQLUINTEGER cp_match;
    \n+
    225 SQLINTEGER odbc_version;
    \n+
    226 SQLINTEGER output_nts;
    \n+
    227};
    \n+
    \n+
    228
    \n+
    \n+
    229struct _hchk
    \n+
    230{
    \n+
    231 SQLSMALLINT htype; /* do not reorder this field */
    \n+
    232 struct _sql_errors errs; /* do not reorder this field */
    \n+
    233 tds_mutex mtx;
    \n+
    234};
    \n+
    \n+
    235
    \n+
    \n+
    236struct _henv
    \n+
    237{
    \n+
    238 SQLSMALLINT htype; /* do not reorder this field */
    \n+
    239 struct _sql_errors errs; /* do not reorder this field */
    \n+
    240 tds_mutex mtx;
    \n+
    241 TDSCONTEXT *tds_ctx;
    \n+
    242 struct _heattr attr;
    \n+
    243};
    \n+
    \n+
    244
    \n+
    \n+\n+
    246{
    \n+
    247 SQLUINTEGER access_mode;
    \n+
    248 SQLUINTEGER async_enable;
    \n+
    249 SQLUINTEGER auto_ipd;
    \n+
    250 SQLUINTEGER autocommit;
    \n+
    251 SQLUINTEGER connection_dead;
    \n+
    252 SQLUINTEGER connection_timeout;
    \n+
    253 DSTR current_catalog;
    \n+
    254 SQLUINTEGER login_timeout;
    \n+
    255 SQLUINTEGER metadata_id;
    \n+
    256 SQLUINTEGER odbc_cursors;
    \n+
    257 SQLUINTEGER packet_size;
    \n+
    258 SQLHWND quite_mode;
    \n+
    259 DSTR translate_lib;
    \n+
    260 SQLUINTEGER translate_option;
    \n+
    261 SQLUINTEGER txn_isolation;
    \n+
    262 SQLUINTEGER mars_enabled;
    \n+
    263 SQLUINTEGER cursor_type;
    \n+
    264 SQLUINTEGER bulk_enabled;
    \n+
    265#ifdef TDS_NO_DM
    \n+
    266 SQLUINTEGER trace;
    \n+
    267 DSTR tracefile;
    \n+
    268#endif
    \n+
    269};
    \n+
    \n+
    270
    \n+
    271#define TDS_MAX_APP_DESC 100
    \n+
    272
    \n+
    273struct _hstmt;
    \n+
    \n+
    274struct _hdbc
    \n+
    275{
    \n+
    276 SQLSMALLINT htype; /* do not reorder this field */
    \n+
    277 struct _sql_errors errs; /* do not reorder this field */
    \n+
    278 tds_mutex mtx;
    \n+
    279 struct _henv *env;
    \n+\n+
    281 DSTR dsn;
    \n+
    282 DSTR oldpwd;
    \n+
    283#ifdef ENABLE_ODBC_WIDE
    \n+
    284 int original_charset_num;
    \n+
    285 TDSICONV *mb_conv;
    \n+
    286#endif
    \n+
    287
    \n+\n+\n+
    296 struct _hcattr attr;
    \n+
    298 TDS_DESC *uad[TDS_MAX_APP_DESC];
    \n+
    300 unsigned int cursor_support:1;
    \n+
    301 unsigned int use_oldpwd:1;
    \n+
    302 TDS_INT default_query_timeout;
    \n+
    303
    \n+
    304 TDSBCPINFO *bcpinfo;
    \n+
    305 char *bcphint;
    \n+
    306};
    \n+
    \n+
    307
    \n+
    \n+\n+
    309{
    \n+
    310 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */
    \n+
    311/* TDS_DESC *app_row_desc; */
    \n+
    312/* TDS_DESC *app_param_desc; */
    \n+
    313 SQLUINTEGER async_enable;
    \n+
    314 SQLUINTEGER concurrency;
    \n+
    315 SQLUINTEGER cursor_scrollable;
    \n+
    316 SQLUINTEGER cursor_sensitivity;
    \n+
    317 SQLUINTEGER cursor_type;
    \n+
    318 SQLUINTEGER enable_auto_ipd;
    \n+
    319 SQLPOINTER fetch_bookmark_ptr;
    \n+
    320 SQLULEN keyset_size;
    \n+
    321 SQLULEN max_length;
    \n+
    322 SQLULEN max_rows;
    \n+
    323 SQLUINTEGER metadata_id;
    \n+
    324 SQLUINTEGER noscan;
    \n+
    325 /* apd->sql_desc_bind_offset_ptr */
    \n+
    326 /* SQLUINTEGER *param_bind_offset_ptr; */
    \n+
    327 /* apd->sql_desc_bind_type */
    \n+
    328 /* SQLUINTEGER param_bind_type; */
    \n+
    329 /* apd->sql_desc_array_status_ptr */
    \n+
    330 /* SQLUSMALLINT *param_operation_ptr; */
    \n+
    331 /* ipd->sql_desc_array_status_ptr */
    \n+
    332 /* SQLUSMALLINT *param_status_ptr; */
    \n+
    333 /* ipd->sql_desc_rows_processed_ptr */
    \n+
    334 /* SQLUSMALLINT *params_processed_ptr; */
    \n+
    335 /* apd->sql_desc_array_size */
    \n+
    336 /* SQLUINTEGER paramset_size; */
    \n+
    337 SQLUINTEGER query_timeout;
    \n+
    338 SQLUINTEGER retrieve_data;
    \n+
    339 /* ard->sql_desc_bind_offset_ptr */
    \n+
    340 /* SQLUINTEGER *row_bind_offset_ptr; */
    \n+
    341 /* ard->sql_desc_array_size */
    \n+
    342 /* SQLUINTEGER row_array_size; */
    \n+
    343 /* ard->sql_desc_bind_type */
    \n+
    344 /* SQLUINTEGER row_bind_type; */
    \n+
    345 SQLULEN row_number;
    \n+
    346 /* ard->sql_desc_array_status_ptr */
    \n+
    347 /* SQLUINTEGER *row_operation_ptr; */
    \n+
    348 /* ird->sql_desc_array_status_ptr */
    \n+
    349 /* SQLUINTEGER *row_status_ptr; */
    \n+
    350 /* ird->sql_desc_rows_processed_ptr */
    \n+
    351 /* SQLUINTEGER *rows_fetched_ptr; */
    \n+
    352 SQLUINTEGER simulate_cursor;
    \n+
    353 SQLUINTEGER use_bookmarks;
    \n+
    354 /* SQLGetStmtAttr only */
    \n+
    355/* TDS_DESC *imp_row_desc; */
    \n+
    356/* TDS_DESC *imp_param_desc; */
    \n+
    357 DSTR qn_msgtext;
    \n+
    358 DSTR qn_options;
    \n+
    359 SQLUINTEGER qn_timeout;
    \n+
    360};
    \n+
    \n+
    361
    \n+
    362typedef enum
    \n+
    363{
    \n+
    364 NOT_IN_ROW,
    \n+
    365 IN_NORMAL_ROW,
    \n+
    366 IN_COMPUTE_ROW,
    \n+
    367 AFTER_COMPUTE_ROW,
    \n+
    368 PRE_NORMAL_ROW
    \n+
    369} TDS_ODBC_ROW_STATUS;
    \n+
    370
    \n+
    371typedef enum
    \n+
    372{
    \n+
    373 ODBC_SPECIAL_NONE = 0,
    \n+
    374 ODBC_SPECIAL_GETTYPEINFO = 1,
    \n+
    375 ODBC_SPECIAL_COLUMNS = 2,
    \n+
    376 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,
    \n+
    377 ODBC_SPECIAL_SPECIALCOLUMNS = 4
    \n+
    378} TDS_ODBC_SPECIAL_ROWS;
    \n+
    379
    \n+
    \n+
    380struct _hstmt
    \n+
    381{
    \n+
    382 SQLSMALLINT htype; /* do not reorder this field */
    \n+
    383 struct _sql_errors errs; /* do not reorder this field */
    \n+
    384 tds_mutex mtx;
    \n+
    385 struct _hdbc *dbc;
    \n+\n+\n+
    390
    \n+
    392 struct _hstmt *next;
    \n+
    394 struct _hstmt *prev;
    \n+
    395
    \n+
    396 /* begin prepared query stuff */
    \n+
    397 unsigned is_prepared_query:1;
    \n+
    398 unsigned prepared_query_is_func:1;
    \n+
    399 unsigned prepared_query_is_rpc:1;
    \n+
    404 unsigned need_reprepare:1;
    \n+
    405 unsigned param_data_called:1;
    \n+
    406 /* end prepared query stuff */
    \n+
    407
    \n+\n+\n+\n+
    414
    \n+
    415 unsigned int curr_param_row, num_param_rows;
    \n+
    416
    \n+
    418 unsigned int param_count;
    \n+
    419 int row;
    \n+
    421 TDS_INT8 row_count;
    \n+
    423 TDS_ODBC_ROW_STATUS row_status;
    \n+
    424 /* do NOT free dynamic, free from socket or attach to connection */
    \n+
    425 TDSDYNAMIC *dyn;
    \n+
    426 TDS_DESC *ard, *ird, *apd, *ipd;
    \n+
    427 TDS_DESC *orig_ard, *orig_apd;
    \n+
    428 SQLULEN sql_rowset_size;
    \n+
    429 struct _hsattr attr;
    \n+
    430 DSTR cursor_name; /* auto generated cursor name */
    \n+
    431 TDS_ODBC_SPECIAL_ROWS special_row;
    \n+
    432 /* do NOT free cursor, free from socket or attach to connection */
    \n+
    433 TDSCURSOR *cursor;
    \n+
    434};
    \n+
    \n+
    435
    \n+
    436typedef struct _henv TDS_ENV;
    \n+
    437typedef struct _hdbc TDS_DBC;
    \n+
    438typedef struct _hstmt TDS_STMT;
    \n+
    439typedef struct _hchk TDS_CHK;
    \n+
    440
    \n+
    \n+
    441typedef struct {
    \n+
    442 /* this must be the first member */
    \n+
    443 TDSCOLUMNFUNCS common;
    \n+
    444 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver);
    \n+
    445} TDS_FUNCS;
    \n+
    \n+
    446
    \n+
    447#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)
    \n+
    448#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)
    \n+
    449#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)
    \n+
    450#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)
    \n+
    451
    \n+
    452/* fix a bug in MingW headers */
    \n+
    453#ifdef __MINGW32__
    \n+
    454#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)
    \n+
    455
    \n+
    456#undef SQL_INTERVAL_YEAR
    \n+
    457#undef SQL_INTERVAL_MONTH
    \n+
    458#undef SQL_INTERVAL_DAY
    \n+
    459#undef SQL_INTERVAL_HOUR
    \n+
    460#undef SQL_INTERVAL_MINUTE
    \n+
    461#undef SQL_INTERVAL_SECOND
    \n+
    462#undef SQL_INTERVAL_YEAR_TO_MONTH
    \n+
    463#undef SQL_INTERVAL_DAY_TO_HOUR
    \n+
    464#undef SQL_INTERVAL_DAY_TO_MINUTE
    \n+
    465#undef SQL_INTERVAL_DAY_TO_SECOND
    \n+
    466#undef SQL_INTERVAL_HOUR_TO_MINUTE
    \n+
    467#undef SQL_INTERVAL_HOUR_TO_SECOND
    \n+
    468#undef SQL_INTERVAL_MINUTE_TO_SECOND
    \n+
    469
    \n+
    470#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)
    \n+
    471#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)
    \n+
    472#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)
    \n+
    473#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)
    \n+
    474#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)
    \n+
    475#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)
    \n+
    476#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)
    \n+
    477#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)
    \n+
    478#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)
    \n+
    479#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)
    \n+
    480#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)
    \n+
    481#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)
    \n+
    482#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)
    \n+
    483
    \n+
    484#endif
    \n+
    485#endif
    \n+
    486
    \n+
    487#ifdef _WIN32
    \n+
    488bool get_login_info(HWND hwndParent, TDSLOGIN * login);
    \n+
    489#endif
    \n+
    490
    \n+
    491#define ODBC_PARAM_LIST \\
    \n+
    492 ODBC_PARAM(Servername) \\
    \n+
    493 ODBC_PARAM(Server) \\
    \n+
    494 ODBC_PARAM(DSN) \\
    \n+
    495 ODBC_PARAM(UID) \\
    \n+
    496 ODBC_PARAM(PWD) \\
    \n+
    497 ODBC_PARAM(Address) \\
    \n+
    498 ODBC_PARAM(Port) \\
    \n+
    499 ODBC_PARAM(TDS_Version) \\
    \n+
    500 ODBC_PARAM(Language) \\
    \n+
    501 ODBC_PARAM(Database) \\
    \n+
    502 ODBC_PARAM(TextSize) \\
    \n+
    503 ODBC_PARAM(PacketSize) \\
    \n+
    504 ODBC_PARAM(ClientCharset) \\
    \n+
    505 ODBC_PARAM(DumpFile) \\
    \n+
    506 ODBC_PARAM(DumpFileAppend) \\
    \n+
    507 ODBC_PARAM(DebugFlags) \\
    \n+
    508 ODBC_PARAM(Encryption) \\
    \n+
    509 ODBC_PARAM(Trusted_Connection) \\
    \n+
    510 ODBC_PARAM(APP) \\
    \n+
    511 ODBC_PARAM(WSID) \\
    \n+
    512 ODBC_PARAM(UseNTLMv2) \\
    \n+
    513 ODBC_PARAM(MARS_Connection) \\
    \n+
    514 ODBC_PARAM(REALM) \\
    \n+
    515 ODBC_PARAM(ServerSPN) \\
    \n+
    516 ODBC_PARAM(AttachDbFilename) \\
    \n+
    517 ODBC_PARAM(ApplicationIntent) \\
    \n+
    518 ODBC_PARAM(Timeout)
    \n+
    519
    \n+
    520#define ODBC_PARAM(p) ODBC_PARAM_##p,
    \n+
    521enum {
    \n+
    522 ODBC_PARAM_LIST
    \n+
    523 ODBC_PARAM_SIZE
    \n+
    524};
    \n+
    525#undef ODBC_PARAM
    \n+
    526
    \n+
    527
    \n+
    528/*
    \n+
    529 * connectparams.h
    \n+
    530 */
    \n+
    531
    \n+
    \n+
    532typedef struct {
    \n+
    533 const char *p;
    \n+
    534 size_t len;
    \n+\n+
    \n+
    536
    \n+
    544int odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string, const char *connect_string_end, TDSLOGIN * login, TDS_PARSED_PARAM *parsed_params);
    \n+
    545int odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);
    \n+
    546#ifdef _WIN32
    \n+
    547int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params, char **out);
    \n+
    548#endif
    \n+
    549
    \n+
    550/*
    \n+
    551 * convert_tds2sql.c
    \n+
    552 */
    \n+
    553SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype, TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);
    \n+
    554SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype, TDS_CHAR * dest, SQLULEN destlen);
    \n+
    555
    \n+
    556
    \n+
    557
    \n+
    558/*
    \n+
    559 * descriptor.c
    \n+
    560 */
    \n+
    561TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, int alloc_type);
    \n+
    562SQLRETURN desc_free(TDS_DESC * desc);
    \n+
    563SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);
    \n+
    564SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);
    \n+
    565SQLRETURN desc_free_records(TDS_DESC * desc);
    \n+
    566TDS_DBC *desc_get_dbc(TDS_DESC *desc);
    \n+
    567
    \n+
    568/*
    \n+
    569 * odbc.c
    \n+
    570 */
    \n+
    571SQLRETURN _SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);
    \n+
    572
    \n+
    573/*
    \n+
    574 * odbc_checks.h
    \n+
    575 */
    \n+
    576#if ENABLE_EXTRA_CHECKS
    \n+
    577/* macro */
    \n+
    578#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)
    \n+
    579#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)
    \n+
    580#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)
    \n+
    581#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)
    \n+
    582/* declarations*/
    \n+
    583void odbc_check_env_extra(TDS_ENV * env);
    \n+
    584void odbc_check_dbc_extra(TDS_DBC * dbc);
    \n+
    585void odbc_check_stmt_extra(TDS_STMT * stmt);
    \n+
    586void odbc_check_desc_extra(TDS_DESC * desc);
    \n+
    587#else
    \n+
    588/* macro */
    \n+
    589#define CHECK_ENV_EXTRA(env)
    \n+
    590#define CHECK_DBC_EXTRA(dbc)
    \n+
    591#define CHECK_STMT_EXTRA(stmt)
    \n+
    592#define CHECK_DESC_EXTRA(desc)
    \n+
    593#endif
    \n+
    594
    \n+
    595/*
    \n+
    596 * odbc_util.h
    \n+
    597 */
    \n+
    598
    \n+
    599/* helpers for ODBC wide string support */
    \n+
    600#undef _wide
    \n+
    601#undef _WIDE
    \n+
    602#ifdef ENABLE_ODBC_WIDE
    \n+
    603typedef union {
    \n+
    604 char mb[1];
    \n+
    605 SQLWCHAR wide[1];
    \n+
    606} ODBC_CHAR;
    \n+
    607# define _wide ,wide
    \n+
    608# define _wide0 ,0
    \n+
    609# define _WIDE ,int wide
    \n+
    610#else
    \n+
    611# define _wide
    \n+
    612# define _wide0
    \n+
    613# define _WIDE
    \n+
    614# define ODBC_CHAR SQLCHAR
    \n+
    615#endif
    \n+
    616int odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int sql_len _WIDE);
    \n+
    617void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);
    \n+
    618void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);
    \n+
    619
    \n+
    620void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec, SQLINTEGER odbc_ver);
    \n+
    621
    \n+
    622int odbc_sql_to_c_type_default(int sql_type);
    \n+
    623TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type, int sql_unsigned);
    \n+
    624TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);
    \n+
    625
    \n+
    626unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);
    \n+
    627void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);
    \n+
    628SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct _drecord *drec_ixd, const TDS_DESC* axd, unsigned int n_row);
    \n+
    629
    \n+
    630#ifdef ENABLE_ODBC_WIDE
    \n+
    631DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str, int flag);
    \n+
    632#define odbc_dstr_copy(dbc, s, len, out) \\
    \n+
    633 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)
    \n+
    634#define odbc_dstr_copy_oct(dbc, s, len, out) \\
    \n+
    635 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)
    \n+
    636#else
    \n+
    637DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR * str);
    \n+
    638#define odbc_dstr_copy_oct odbc_dstr_copy
    \n+
    639#endif
    \n+
    640
    \n+
    641
    \n+
    642SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR * pcbBuffer, const char *s, int len, int flag);
    \n+
    643#ifdef ENABLE_ODBC_WIDE
    \n+
    644#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\
    \n+
    645 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
    \n+
    646#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\
    \n+
    647 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
    \n+
    648#else
    \n+
    649#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\
    \n+
    650 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))
    \n+
    651#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\
    \n+
    652 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))
    \n+
    653#endif
    \n+
    654
    \n+
    655#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s) odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))
    \n+
    656#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))
    \n+
    657
    \n+
    658SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT interval);
    \n+
    659SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
    \n+
    660SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT interval);
    \n+
    661SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord *drec, int check_only);
    \n+
    662
    \n+
    663SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);
    \n+
    664void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);
    \n+
    665
    \n+
    666/*
    \n+
    667 * prepare_query.c
    \n+
    668 */
    \n+
    669SQLRETURN prepare_call(struct _hstmt *stmt);
    \n+
    670SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);
    \n+
    671int parse_prepared_query(struct _hstmt *stmt, bool compute_row);
    \n+
    672int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);
    \n+
    673int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr, SQLLEN StrLen_or_Ind);
    \n+
    674const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);
    \n+
    675const char *odbc_skip_rpc_name(const char *s);
    \n+
    676
    \n+
    677/*
    \n+
    678 * sql2tds.c
    \n+
    679 */
    \n+
    680SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd, const struct _drecord *drec_axd, TDSCOLUMN *curcol, bool compute_row, const TDS_DESC* axd, unsigned int n_row);
    \n+
    681TDS_INT convert_datetime2server(int bindtype, const void *src, TDS_DATETIMEALL * dta);
    \n+
    682
    \n+
    683/*
    \n+
    684 * bcp.c
    \n+
    685 */
    \n+
    686void odbc_bcp_free_storage(TDS_DBC *dbc);
    \n+
    687void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR *hfile, const ODBC_CHAR *errfile, int direction _WIDE);
    \n+
    688void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);
    \n+
    689void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);
    \n+
    690void odbc_bcp_sendrow(TDS_DBC *dbc);
    \n+
    691int odbc_bcp_batch(TDS_DBC *dbc);
    \n+
    692int odbc_bcp_done(TDS_DBC *dbc);
    \n+
    693void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int varlen, const void * terminator, int termlen, int vartype, int table_column);
    \n+
    694
    \n+
    695/*
    \n+
    696 * sqlwchar.c
    \n+
    697 */
    \n+
    698#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T
    \n+
    699size_t sqlwcslen(const SQLWCHAR * s);
    \n+
    700
    \n+
    701typedef struct sqlwstr_buf {
    \n+
    702 struct sqlwstr_buf *next;
    \n+
    703 wchar_t buf[256];
    \n+
    704} SQLWSTRBUF;
    \n+
    705const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);
    \n+
    706void sqlwstr_free(SQLWSTRBUF *bufs);
    \n+
    707#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL
    \n+
    708#define SQLWSTR(s) sqlwstr(s, &bufs)
    \n+
    709#define SQLWSTR_FREE() sqlwstr_free(bufs)
    \n+
    710#else
    \n+
    711#define sqlwcslen(s) wcslen(s)
    \n+
    712
    \n+
    713#define SQLWSTR_BUFS(n) do {} while(0)
    \n+
    714#define SQLWSTR(s) ((const wchar_t*)(s))
    \n+
    715#define SQLWSTR_FREE() do {} while(0)
    \n+
    716#endif
    \n+
    717
    \n+
    718int odbc_get_wide_canonic(TDSCONNECTION *conn);
    \n+
    719
    \n+
    720#include <freetds/popvis.h>
    \n+
    721
    \n+
    722#ifdef __cplusplus
    \n+
    723#if 0
    \n+
    724{
    \n+
    725#endif
    \n+
    726}
    \n+
    727#endif
    \n+
    728
    \n+
    729#endif
    \n+
    Main include file for libtds.
    \n+
    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:976
    \n+
    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:1098
    \n+
    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:861
    \n+
    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:601
    \n+
    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:301
    \n+
    void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)
    Returns the version of the RDBMS in the ODBC format.
    Definition odbc_util.c:852
    \n+
    Definition iconv.h:92
    \n+
    Definition odbc.h:94
    \n+
    Definition odbc.h:106
    \n+
    Definition odbc.h:151
    \n+
    Definition odbc.h:163
    \n+
    Definition odbc.h:204
    \n+
    Definition odbc.h:222
    \n+
    Definition odbc.h:230
    \n+
    Definition odbc.h:237
    \n+
    Definition odbc.h:246
    \n+
    Definition odbc.h:275
    \n+
    struct _hstmt * stmt_list
    list of all statements allocated from this connection
    Definition odbc.h:295
    \n+
    TDS_DESC * uad[TDS_MAX_APP_DESC]
    descriptors associated to connection
    Definition odbc.h:298
    \n+
    struct _hstmt * current_statement
    Statement executing.
    Definition odbc.h:293
    \n+
    unsigned int cursor_support
    <>0 if server handle cursors
    Definition odbc.h:300
    \n+
    Definition odbc.h:309
    \n+
    Definition odbc.h:381
    \n+
    unsigned int param_count
    number of parameter in current query
    Definition odbc.h:418
    \n+
    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:423
    \n+
    size_t prepared_pos
    position in prepared query to check parameters, used only in RPC
    Definition odbc.h:413
    \n+
    TDS_INT8 row_count
    row count to return
    Definition odbc.h:421
    \n+
    int param_num
    last valid parameter in params, it's a ODBC index (from 1 relative to descriptor)
    Definition odbc.h:411
    \n+
    DSTR query
    query to execute
    Definition odbc.h:387
    \n+
    unsigned need_reprepare
    Prepared statement needs to be prepared again.
    Definition odbc.h:404
    \n+
    struct _hstmt * next
    next in list
    Definition odbc.h:392
    \n+
    TDSSOCKET * tds
    socket (only if active)
    Definition odbc.h:389
    \n+
    struct _hstmt * prev
    previous in list
    Definition odbc.h:394
    \n+
    TDSPARAMINFO * params
    parameters saved
    Definition odbc.h:409
    \n+
    Definition odbc.h:441
    \n+
    Definition odbc.h:532
    \n
    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.
    Definition tds.h:146
    \n-
    Used by tds_datecrack.
    Definition tds.h:159
    \n+
    Definition tds.h:517
    \n+
    Definition tds.h:643
    \n+
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n+
    Hold information for any results.
    Definition tds.h:769
    \n+
    Holds informations about a cursor.
    Definition tds.h:937
    \n+
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n
    Definition tds.h:1029
    \n+
    Definition tds.h:1091
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n+
    Definition tds.h:1661
    \n+
    Structure to hold a string.
    Definition string.h:36
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,163 +7,896 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-convert.h\n+odbc.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _tdsconvert_h_\n- 21#define _tdsconvert_h_\n- 22\n- 23#include \n- 24\n- 25#ifdef __cplusplus\n- 26extern \"C\"\n- 27{\n- 28#if 0\n- 29}\n- 30#endif\n- 31#endif\n- 32\n-33typedef union conv_result\n- 34{\n- 35 /* fixed */\n- 36 TDS_TINYINT ti;\n- 37 TDS_SMALLINT si;\n- 38 TDS_USMALLINT usi;\n- 39 TDS_INT i;\n- 40 TDS_UINT ui;\n- 41 TDS_INT8 bi;\n- 42 TDS_UINT8 ubi;\n- 43 TDS_FLOAT f;\n- 44 TDS_REAL r;\n- 45 TDS_MONEY m;\n- 46 TDS_MONEY4 m4;\n- 47 TDS_DATETIME dt;\n- 48 TDS_DATETIME4 dt4;\n- 49 TDS_DATETIMEALL dta;\n- 50 TDS_TIME time;\n- 51 TDS_DATE date;\n- 52 TDS_BIGTIME bigtime;\n- 53 TDS_BIGDATETIME bigdatetime;\n- 54 TDS_NUMERIC n;\n- 55 TDS_UNIQUE u;\n- 56\n- 57 /* variable */\n- 58 TDS_CHAR *c;\n- 59 TDS_CHAR *ib;\n- 60\n- 61 /* sized buffer types */\n-62 struct cc_t {\n- 63 TDS_CHAR *c;\n- 64 TDS_UINT len;\n- 65 } cc;\n-66 struct cb_t {\n- 67 TDS_CHAR *ib;\n- 68 TDS_UINT len;\n- 69 } cb;\n- 70}\n- 71CONV_RESULT;\n- 72\n- 73/*\n- 74 * Failure return codes for tds_convert()\n- 75 */\n- 76#define TDS_CONVERT_FAIL -1 /* unspecified failure */\n- 77#define TDS_CONVERT_NOAVAIL -2 /* conversion does not exist */\n- 78#define TDS_CONVERT_SYNTAX -3 /* syntax error in source field */\n- 79#define TDS_CONVERT_NOMEM -4 /* insufficient memory */\n- 80#define TDS_CONVERT_OVERFLOW -5 /* result too large */\n- 81\n- 82/* sized types */\n- 83#define TDS_CONVERT_CHAR 256\n- 84#define TDS_CONVERT_BINARY 257\n- 85\n- 86unsigned char tds_willconvert(int srctype, int desttype);\n- 87\n- 88TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype);\n- 89TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src,\n-TDS_UINT srclen);\n- 90TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src,\n-TDS_UINT srclen, int desttype, CONV_RESULT *cr);\n- 91\n- 92size_t tds_strftime(char *buf, size_t maxsize, const char *format, const\n-TDSDATEREC * timeptr, int prec);\n- 93\n- 94#ifdef __cplusplus\n- 95#if 0\n- 96{\n- 97#endif\n- 98}\n- 99#endif\n- 100\n- 101#include \n- 102\n- 103#endif /* _tdsconvert_h_ */\n-tds_get_null_type\n-TDS_SERVER_TYPE tds_get_null_type(TDS_SERVER_TYPE srctype)\n-Get same type but nullable.\n-Definition convert.c:2926\n-tds_willconvert\n-unsigned char tds_willconvert(int srctype, int desttype)\n-Test if a conversion is possible.\n-Definition convert.c:3106\n-tds_strftime\n-size_t tds_strftime(char *buf, size_t maxsize, const char *format, const\n-TDSDATEREC *timeptr, int prec)\n-format a date string according to an \"extended\" strftime(3) formatting\n-definition.\n-Definition convert.c:2992\n-tds_convert\n-TDS_INT tds_convert(const TDSCONTEXT *context, int srctype, const void *src,\n-TDS_UINT srclen, int desttype, CONV_RESULT *cr)\n-tds_convert convert a type to another.\n-Definition convert.c:1891\n-conv_result\n-Definition convert.h:34\n-conv_result::cc_t\n-Definition convert.h:62\n-conv_result::cb_t\n-Definition convert.h:66\n-tdsnumeric\n-Definition proto.h:26\n-tdsmoney\n-Definition proto.h:39\n-tdsmoney4\n-Definition proto.h:45\n-tdsdatetime\n-Definition proto.h:50\n-tdsdatetime4\n-Definition proto.h:56\n-tdsunique\n-Definition proto.h:62\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n+ 3 * Copyright (C) 2004-2010 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 21#ifndef _sql_h_\n+ 22#define _sql_h_\n+ 23\n+ 24#define TDS_DONT_DEFINE_DEFAULT_FUNCTIONS\n+ 25#include \n+ 26#include \n+ 27#include \n+ 28\n+ 29#if defined(UNIXODBC) || defined(_WIN32) || defined(TDS_NO_DM)\n+ 30#include \n+ 31#include \n+ 32#if defined(UNIXODBC) || defined(_WIN32)\n+ 33#include \n+ 34#endif\n+ 35#else /* IODBC */\n+ 36#include \n+ 37#include \n+ 38#ifdef HAVE_IODBCINST_H\n+ 39#include \n+ 40#endif /* HAVE_IODBCINST_H */\n+ 41#endif\n+ 42\n+ 43#ifdef HAVE_WCHAR_H\n+ 44#include \n+ 45#endif\n+ 46\n+ 47#ifndef HAVE_SQLLEN\n+ 48#ifndef SQLULEN\n+ 49#define SQLULEN SQLUINTEGER\n+ 50#endif\n+ 51#ifndef SQLLEN\n+ 52#define SQLLEN SQLINTEGER\n+ 53#endif\n+ 54#endif\n+ 55\n+ 56#ifndef HAVE_SQLSETPOSIROW\n+ 57#define SQLSETPOSIROW SQLUSMALLINT\n+ 58#endif\n+ 59\n+ 60#ifndef HAVE_SQLROWOFFSET\n+ 61#define SQLROWOFFSET SQLLEN\n+ 62#endif\n+ 63\n+ 64#ifndef HAVE_SQLROWSETSIZE\n+ 65#define SQLROWSETSIZE SQLULEN\n+ 66#endif\n+ 67\n+ 68#ifdef __cplusplus\n+ 69extern \"C\"\n+ 70{\n+ 71#if 0\n+ 72}\n+ 73#endif\n+ 74#endif\n+ 75\n+ 76#include \n+ 77#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n+ 78#define ODBC_API SQL_API __attribute__((externally_visible))\n+ 79#else\n+ 80#define ODBC_API SQL_API\n+ 81#endif\n+ 82\n+ 83#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(__GNUC__)\n+ 84# define ODBC_PUBLIC __attribute__((dllexport))\n+ 85#else\n+ 86# define ODBC_PUBLIC\n+ 87#endif\n+ 88\n+ 89#define ODBC_MAX(a,b) ( (a) > (b) ? (a) : (b) )\n+ 90#define ODBC_MIN(a,b) ( (a) < (b) ? (a) : (b) )\n+ 91#define ODBC_CLAMP(x,a,b) ( (x) < (a) ? (a) : (x) > (b) ? (b) : (x) )\n+ 92\n+93struct _sql_error\n+ 94{\n+ 95 const char *msg;\n+ 96 char state2[6];\n+ 97 char state3[6];\n+ 98 TDS_UINT native;\n+ 99 char *server;\n+ 100 int linenum;\n+ 101 int msgstate;\n+ 102 int row;\n+ 103};\n+ 104\n+105struct _sql_errors\n+ 106{\n+ 107 struct _sql_error *errs;\n+ 108 int num_errors;\n+ 109 SQLRETURN lastrc;\n+ 110 char ranked;\n+ 111};\n+ 112\n+ 113typedef struct _sql_errors TDS_ERRS;\n+ 114\n+ 115#if ENABLE_EXTRA_CHECKS\n+ 116void odbc_check_struct_extra(void *p);\n+ 117#else\n+ 118static inline void odbc_check_struct_extra(void *p) {}\n+ 119#endif\n+ 120\n+ 121#define ODBC_RETURN(handle, rc) \\\n+ 122 do { odbc_check_struct_extra(handle); \\\n+ 123 return handle->errs.lastrc = (rc); } while(0)\n+ 124#define ODBC_RETURN_(handle) \\\n+ 125 do { odbc_check_struct_extra(handle); \\\n+ 126 return handle->errs.lastrc; } while(0)\n+ 127\n+ 128#define ODBC_EXIT(handle, rc) \\\n+ 129 do { SQLRETURN _odbc_rc = handle->errs.lastrc = (rc); \\\n+ 130 odbc_check_struct_extra(handle); \\\n+ 131 tds_mutex_unlock(&handle->mtx); \\\n+ 132 return _odbc_rc; } while(0)\n+ 133#define ODBC_EXIT_(handle) \\\n+ 134 do { SQLRETURN _odbc_rc = handle->errs.lastrc; \\\n+ 135 odbc_check_struct_extra(handle); \\\n+ 136 tds_mutex_unlock(&handle->mtx); \\\n+ 137 return _odbc_rc; } while(0)\n+ 138\n+ 139\n+ 141void odbc_errs_reset(struct _sql_errors *errs);\n+ 142\n+ 144void odbc_errs_add(struct _sql_errors *errs, const char *sqlstate, const\n+char *msg);\n+ 145\n+ 147void odbc_errs_add_rdbms(struct _sql_errors *errs, TDS_UINT native, const\n+char *sqlstate, const char *msg, int linenum,\n+ 148 int msgstate, const char *server, int row);\n+ 149\n+150struct _dheader\n+ 151{\n+ 152 SQLSMALLINT sql_desc_alloc_type;\n+ 153 SQLINTEGER sql_desc_bind_type;\n+ 154 SQLULEN sql_desc_array_size;\n+ 155 /* TODO SQLLEN ?? see http://support.microsoft.com/\n+default.aspx?scid=kb;en-us;298678 */\n+ 156 SQLSMALLINT sql_desc_count;\n+ 157 SQLUSMALLINT *sql_desc_array_status_ptr;\n+ 158 SQLULEN *sql_desc_rows_processed_ptr;\n+ 159 SQLLEN *sql_desc_bind_offset_ptr;\n+ 160};\n+ 161\n+162struct _drecord\n+ 163{\n+ 164 SQLUINTEGER sql_desc_auto_unique_value;\n+ 165 DSTR sql_desc_base_column_name;\n+ 166 DSTR sql_desc_base_table_name;\n+ 167 SQLINTEGER sql_desc_case_sensitive;\n+ 168 DSTR sql_desc_catalog_name;\n+ 169 SQLSMALLINT sql_desc_concise_type;\n+ 170 SQLPOINTER sql_desc_data_ptr;\n+ 171 SQLSMALLINT sql_desc_datetime_interval_code;\n+ 172 SQLINTEGER sql_desc_datetime_interval_precision;\n+ 173 SQLLEN sql_desc_display_size;\n+ 174 SQLSMALLINT sql_desc_fixed_prec_scale;\n+ 175 SQLLEN *sql_desc_indicator_ptr;\n+ 176 DSTR sql_desc_label;\n+ 177 SQLULEN sql_desc_length;\n+ 178 /* this point to a constant buffer, do not free or modify */\n+ 179 const char *sql_desc_literal_prefix;\n+ 180 /* this point to a constant buffer, do not free or modify */\n+ 181 const char *sql_desc_literal_suffix;\n+ 182 DSTR sql_desc_local_type_name;\n+ 183 DSTR sql_desc_name;\n+ 184 SQLSMALLINT sql_desc_nullable;\n+ 185 SQLINTEGER sql_desc_num_prec_radix;\n+ 186 SQLLEN sql_desc_octet_length;\n+ 187 SQLLEN *sql_desc_octet_length_ptr;\n+ 188 SQLSMALLINT sql_desc_parameter_type;\n+ 189 SQLSMALLINT sql_desc_precision;\n+ 190 SQLSMALLINT sql_desc_rowver;\n+ 191 SQLSMALLINT sql_desc_scale;\n+ 192 DSTR sql_desc_schema_name;\n+ 193 SQLSMALLINT sql_desc_searchable;\n+ 194 DSTR sql_desc_table_name;\n+ 195 SQLSMALLINT sql_desc_type;\n+ 196 /* this point to a constant buffer, do not free or modify */\n+ 197 const char *sql_desc_type_name;\n+ 198 SQLSMALLINT sql_desc_unnamed;\n+ 199 SQLSMALLINT sql_desc_unsigned;\n+ 200 SQLSMALLINT sql_desc_updatable;\n+ 201};\n+ 202\n+203struct _hdesc\n+ 204{\n+ 205 SQLSMALLINT htype; /* do not reorder this field */\n+ 206 struct _sql_errors errs; /* do not reorder this field */\n+ 207 tds_mutex mtx;\n+ 208 int type;\n+ 209 SQLHANDLE parent;\n+ 210 struct _dheader header;\n+ 211 struct _drecord *records;\n+ 212};\n+ 213\n+ 214typedef struct _hdesc TDS_DESC;\n+ 215\n+ 216#define DESC_IRD 1\n+ 217#define DESC_IPD 2\n+ 218#define DESC_ARD 3\n+ 219#define DESC_APD 4\n+ 220\n+221struct _heattr\n+ 222{\n+ 223 SQLUINTEGER connection_pooling;\n+ 224 SQLUINTEGER cp_match;\n+ 225 SQLINTEGER odbc_version;\n+ 226 SQLINTEGER output_nts;\n+ 227};\n+ 228\n+229struct _hchk\n+ 230{\n+ 231 SQLSMALLINT htype; /* do not reorder this field */\n+ 232 struct _sql_errors errs; /* do not reorder this field */\n+ 233 tds_mutex mtx;\n+ 234};\n+ 235\n+236struct _henv\n+ 237{\n+ 238 SQLSMALLINT htype; /* do not reorder this field */\n+ 239 struct _sql_errors errs; /* do not reorder this field */\n+ 240 tds_mutex mtx;\n+ 241 TDSCONTEXT *tds_ctx;\n+ 242 struct _heattr attr;\n+ 243};\n+ 244\n+245struct _hcattr\n+ 246{\n+ 247 SQLUINTEGER access_mode;\n+ 248 SQLUINTEGER async_enable;\n+ 249 SQLUINTEGER auto_ipd;\n+ 250 SQLUINTEGER autocommit;\n+ 251 SQLUINTEGER connection_dead;\n+ 252 SQLUINTEGER connection_timeout;\n+ 253 DSTR current_catalog;\n+ 254 SQLUINTEGER login_timeout;\n+ 255 SQLUINTEGER metadata_id;\n+ 256 SQLUINTEGER odbc_cursors;\n+ 257 SQLUINTEGER packet_size;\n+ 258 SQLHWND quite_mode;\n+ 259 DSTR translate_lib;\n+ 260 SQLUINTEGER translate_option;\n+ 261 SQLUINTEGER txn_isolation;\n+ 262 SQLUINTEGER mars_enabled;\n+ 263 SQLUINTEGER cursor_type;\n+ 264 SQLUINTEGER bulk_enabled;\n+ 265#ifdef TDS_NO_DM\n+ 266 SQLUINTEGER trace;\n+ 267 DSTR tracefile;\n+ 268#endif\n+ 269};\n+ 270\n+ 271#define TDS_MAX_APP_DESC 100\n+ 272\n+ 273struct _hstmt;\n+274struct _hdbc\n+ 275{\n+ 276 SQLSMALLINT htype; /* do not reorder this field */\n+ 277 struct _sql_errors errs; /* do not reorder this field */\n+ 278 tds_mutex mtx;\n+ 279 struct _henv *env;\n+ 280 TDSSOCKET *tds_socket;\n+ 281 DSTR dsn;\n+ 282 DSTR oldpwd;\n+ 283#ifdef ENABLE_ODBC_WIDE\n+ 284 int original_charset_num;\n+ 285 TDSICONV *mb_conv;\n+ 286#endif\n+ 287\n+293 struct _hstmt *current_statement;\n+295 struct _hstmt *stmt_list;\n+ 296 struct _hcattr attr;\n+298 TDS_DESC *uad[TDS_MAX_APP_DESC];\n+300 unsigned int cursor_support:1;\n+ 301 unsigned int use_oldpwd:1;\n+ 302 TDS_INT default_query_timeout;\n+ 303\n+ 304 TDSBCPINFO *bcpinfo;\n+ 305 char *bcphint;\n+ 306};\n+ 307\n+308struct _hsattr\n+ 309{\n+ 310 /* TODO remove IRD, ARD, IPD, APD from statement, do not duplicate */\n+ 311/* TDS_DESC *app_row_desc; */\n+ 312/* TDS_DESC *app_param_desc; */\n+ 313 SQLUINTEGER async_enable;\n+ 314 SQLUINTEGER concurrency;\n+ 315 SQLUINTEGER cursor_scrollable;\n+ 316 SQLUINTEGER cursor_sensitivity;\n+ 317 SQLUINTEGER cursor_type;\n+ 318 SQLUINTEGER enable_auto_ipd;\n+ 319 SQLPOINTER fetch_bookmark_ptr;\n+ 320 SQLULEN keyset_size;\n+ 321 SQLULEN max_length;\n+ 322 SQLULEN max_rows;\n+ 323 SQLUINTEGER metadata_id;\n+ 324 SQLUINTEGER noscan;\n+ 325 /* apd->sql_desc_bind_offset_ptr */\n+ 326 /* SQLUINTEGER *param_bind_offset_ptr; */\n+ 327 /* apd->sql_desc_bind_type */\n+ 328 /* SQLUINTEGER param_bind_type; */\n+ 329 /* apd->sql_desc_array_status_ptr */\n+ 330 /* SQLUSMALLINT *param_operation_ptr; */\n+ 331 /* ipd->sql_desc_array_status_ptr */\n+ 332 /* SQLUSMALLINT *param_status_ptr; */\n+ 333 /* ipd->sql_desc_rows_processed_ptr */\n+ 334 /* SQLUSMALLINT *params_processed_ptr; */\n+ 335 /* apd->sql_desc_array_size */\n+ 336 /* SQLUINTEGER paramset_size; */\n+ 337 SQLUINTEGER query_timeout;\n+ 338 SQLUINTEGER retrieve_data;\n+ 339 /* ard->sql_desc_bind_offset_ptr */\n+ 340 /* SQLUINTEGER *row_bind_offset_ptr; */\n+ 341 /* ard->sql_desc_array_size */\n+ 342 /* SQLUINTEGER row_array_size; */\n+ 343 /* ard->sql_desc_bind_type */\n+ 344 /* SQLUINTEGER row_bind_type; */\n+ 345 SQLULEN row_number;\n+ 346 /* ard->sql_desc_array_status_ptr */\n+ 347 /* SQLUINTEGER *row_operation_ptr; */\n+ 348 /* ird->sql_desc_array_status_ptr */\n+ 349 /* SQLUINTEGER *row_status_ptr; */\n+ 350 /* ird->sql_desc_rows_processed_ptr */\n+ 351 /* SQLUINTEGER *rows_fetched_ptr; */\n+ 352 SQLUINTEGER simulate_cursor;\n+ 353 SQLUINTEGER use_bookmarks;\n+ 354 /* SQLGetStmtAttr only */\n+ 355/* TDS_DESC *imp_row_desc; */\n+ 356/* TDS_DESC *imp_param_desc; */\n+ 357 DSTR qn_msgtext;\n+ 358 DSTR qn_options;\n+ 359 SQLUINTEGER qn_timeout;\n+ 360};\n+ 361\n+ 362typedef enum\n+ 363{\n+ 364 NOT_IN_ROW,\n+ 365 IN_NORMAL_ROW,\n+ 366 IN_COMPUTE_ROW,\n+ 367 AFTER_COMPUTE_ROW,\n+ 368 PRE_NORMAL_ROW\n+ 369} TDS_ODBC_ROW_STATUS;\n+ 370\n+ 371typedef enum\n+ 372{\n+ 373 ODBC_SPECIAL_NONE = 0,\n+ 374 ODBC_SPECIAL_GETTYPEINFO = 1,\n+ 375 ODBC_SPECIAL_COLUMNS = 2,\n+ 376 ODBC_SPECIAL_PROCEDURECOLUMNS = 3,\n+ 377 ODBC_SPECIAL_SPECIALCOLUMNS = 4\n+ 378} TDS_ODBC_SPECIAL_ROWS;\n+ 379\n+380struct _hstmt\n+ 381{\n+ 382 SQLSMALLINT htype; /* do not reorder this field */\n+ 383 struct _sql_errors errs; /* do not reorder this field */\n+ 384 tds_mutex mtx;\n+ 385 struct _hdbc *dbc;\n+387 DSTR query;\n+389 TDSSOCKET *tds;\n+ 390\n+392 struct _hstmt *next;\n+394 struct _hstmt *prev;\n+ 395\n+ 396 /* begin prepared query stuff */\n+ 397 unsigned is_prepared_query:1;\n+ 398 unsigned prepared_query_is_func:1;\n+ 399 unsigned prepared_query_is_rpc:1;\n+404 unsigned need_reprepare:1;\n+ 405 unsigned param_data_called:1;\n+ 406 /* end prepared query stuff */\n+ 407\n+409 TDSPARAMINFO *params;\n+411 int param_num;\n+413 size_t prepared_pos;\n+ 414\n+ 415 unsigned int curr_param_row, num_param_rows;\n+ 416\n+418 unsigned int param_count;\n+ 419 int row;\n+421 TDS_INT8 row_count;\n+423 TDS_ODBC_ROW_STATUS row_status;\n+ 424 /* do NOT free dynamic, free from socket or attach to connection */\n+ 425 TDSDYNAMIC *dyn;\n+ 426 TDS_DESC *ard, *ird, *apd, *ipd;\n+ 427 TDS_DESC *orig_ard, *orig_apd;\n+ 428 SQLULEN sql_rowset_size;\n+ 429 struct _hsattr attr;\n+ 430 DSTR cursor_name; /* auto generated cursor name */\n+ 431 TDS_ODBC_SPECIAL_ROWS special_row;\n+ 432 /* do NOT free cursor, free from socket or attach to connection */\n+ 433 TDSCURSOR *cursor;\n+ 434};\n+ 435\n+ 436typedef struct _henv TDS_ENV;\n+ 437typedef struct _hdbc TDS_DBC;\n+ 438typedef struct _hstmt TDS_STMT;\n+ 439typedef struct _hchk TDS_CHK;\n+ 440\n+441typedef struct {\n+ 442 /* this must be the first member */\n+ 443 TDSCOLUMNFUNCS common;\n+ 444 void (*set_type_info)(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER\n+odbc_ver);\n+ 445} TDS_FUNCS;\n+ 446\n+ 447#define IS_HENV(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_ENV)\n+ 448#define IS_HDBC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DBC)\n+ 449#define IS_HSTMT(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_STMT)\n+ 450#define IS_HDESC(x) (((TDS_CHK *)x)->htype == SQL_HANDLE_DESC)\n+ 451\n+ 452/* fix a bug in MingW headers */\n+ 453#ifdef __MINGW32__\n+ 454#if SQL_INTERVAL_YEAR == (100 + SQL_CODE_SECOND)\n+ 455\n+ 456#undef SQL_INTERVAL_YEAR\n+ 457#undef SQL_INTERVAL_MONTH\n+ 458#undef SQL_INTERVAL_DAY\n+ 459#undef SQL_INTERVAL_HOUR\n+ 460#undef SQL_INTERVAL_MINUTE\n+ 461#undef SQL_INTERVAL_SECOND\n+ 462#undef SQL_INTERVAL_YEAR_TO_MONTH\n+ 463#undef SQL_INTERVAL_DAY_TO_HOUR\n+ 464#undef SQL_INTERVAL_DAY_TO_MINUTE\n+ 465#undef SQL_INTERVAL_DAY_TO_SECOND\n+ 466#undef SQL_INTERVAL_HOUR_TO_MINUTE\n+ 467#undef SQL_INTERVAL_HOUR_TO_SECOND\n+ 468#undef SQL_INTERVAL_MINUTE_TO_SECOND\n+ 469\n+ 470#define SQL_INTERVAL_YEAR (100 + SQL_CODE_YEAR)\n+ 471#define SQL_INTERVAL_MONTH (100 + SQL_CODE_MONTH)\n+ 472#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY)\n+ 473#define SQL_INTERVAL_HOUR (100 + SQL_CODE_HOUR)\n+ 474#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_MINUTE)\n+ 475#define SQL_INTERVAL_SECOND (100 + SQL_CODE_SECOND)\n+ 476#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_YEAR_TO_MONTH)\n+ 477#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_DAY_TO_HOUR)\n+ 478#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE)\n+ 479#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND)\n+ 480#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE)\n+ 481#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND)\n+ 482#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND)\n+ 483\n+ 484#endif\n+ 485#endif\n+ 486\n+ 487#ifdef _WIN32\n+ 488bool get_login_info(HWND hwndParent, TDSLOGIN * login);\n+ 489#endif\n+ 490\n+ 491#define ODBC_PARAM_LIST \\\n+ 492 ODBC_PARAM(Servername) \\\n+ 493 ODBC_PARAM(Server) \\\n+ 494 ODBC_PARAM(DSN) \\\n+ 495 ODBC_PARAM(UID) \\\n+ 496 ODBC_PARAM(PWD) \\\n+ 497 ODBC_PARAM(Address) \\\n+ 498 ODBC_PARAM(Port) \\\n+ 499 ODBC_PARAM(TDS_Version) \\\n+ 500 ODBC_PARAM(Language) \\\n+ 501 ODBC_PARAM(Database) \\\n+ 502 ODBC_PARAM(TextSize) \\\n+ 503 ODBC_PARAM(PacketSize) \\\n+ 504 ODBC_PARAM(ClientCharset) \\\n+ 505 ODBC_PARAM(DumpFile) \\\n+ 506 ODBC_PARAM(DumpFileAppend) \\\n+ 507 ODBC_PARAM(DebugFlags) \\\n+ 508 ODBC_PARAM(Encryption) \\\n+ 509 ODBC_PARAM(Trusted_Connection) \\\n+ 510 ODBC_PARAM(APP) \\\n+ 511 ODBC_PARAM(WSID) \\\n+ 512 ODBC_PARAM(UseNTLMv2) \\\n+ 513 ODBC_PARAM(MARS_Connection) \\\n+ 514 ODBC_PARAM(REALM) \\\n+ 515 ODBC_PARAM(ServerSPN) \\\n+ 516 ODBC_PARAM(AttachDbFilename) \\\n+ 517 ODBC_PARAM(ApplicationIntent) \\\n+ 518 ODBC_PARAM(Timeout)\n+ 519\n+ 520#define ODBC_PARAM(p) ODBC_PARAM_##p,\n+ 521enum {\n+ 522 ODBC_PARAM_LIST\n+ 523 ODBC_PARAM_SIZE\n+ 524};\n+ 525#undef ODBC_PARAM\n+ 526\n+ 527\n+ 528/*\n+ 529 * connectparams.h\n+ 530 */\n+ 531\n+532typedef struct {\n+ 533 const char *p;\n+ 534 size_t len;\n+ 535} TDS_PARSED_PARAM;\n+ 536\n+ 544int odbc_parse_connect_string(TDS_ERRS *errs, const char *connect_string,\n+const char *connect_string_end, TDSLOGIN * login, TDS_PARSED_PARAM\n+*parsed_params);\n+ 545int odbc_get_dsn_info(TDS_ERRS *errs, const char *DSN, TDSLOGIN * login);\n+ 546#ifdef _WIN32\n+ 547int odbc_build_connect_string(TDS_ERRS *errs, TDS_PARSED_PARAM *params,\n+char **out);\n+ 548#endif\n+ 549\n+ 550/*\n+ 551 * convert_tds2sql.c\n+ 552 */\n+ 553SQLLEN odbc_tds2sql_col(TDS_STMT * stmt, TDSCOLUMN *curcol, int desttype,\n+TDS_CHAR * dest, SQLULEN destlen, const struct _drecord *drec_ixd);\n+ 554SQLLEN odbc_tds2sql_int4(TDS_STMT * stmt, TDS_INT *src, int desttype,\n+TDS_CHAR * dest, SQLULEN destlen);\n+ 555\n+ 556\n+ 557\n+ 558/*\n+ 559 * descriptor.c\n+ 560 */\n+ 561TDS_DESC *desc_alloc(SQLHANDLE parent, int desc_type, int alloc_type);\n+ 562SQLRETURN desc_free(TDS_DESC * desc);\n+ 563SQLRETURN desc_alloc_records(TDS_DESC * desc, unsigned count);\n+ 564SQLRETURN desc_copy(TDS_DESC * dest, TDS_DESC * src);\n+ 565SQLRETURN desc_free_records(TDS_DESC * desc);\n+ 566TDS_DBC *desc_get_dbc(TDS_DESC *desc);\n+ 567\n+ 568/*\n+ 569 * odbc.c\n+ 570 */\n+ 571SQLRETURN _SQLRowCount(SQLHSTMT hstmt, SQLLEN FAR * pcrow);\n+ 572\n+ 573/*\n+ 574 * odbc_checks.h\n+ 575 */\n+ 576#if ENABLE_EXTRA_CHECKS\n+ 577/* macro */\n+ 578#define CHECK_ENV_EXTRA(env) odbc_check_env_extra(env)\n+ 579#define CHECK_DBC_EXTRA(dbc) odbc_check_dbc_extra(dbc)\n+ 580#define CHECK_STMT_EXTRA(stmt) odbc_check_stmt_extra(stmt)\n+ 581#define CHECK_DESC_EXTRA(desc) odbc_check_desc_extra(desc)\n+ 582/* declarations*/\n+ 583void odbc_check_env_extra(TDS_ENV * env);\n+ 584void odbc_check_dbc_extra(TDS_DBC * dbc);\n+ 585void odbc_check_stmt_extra(TDS_STMT * stmt);\n+ 586void odbc_check_desc_extra(TDS_DESC * desc);\n+ 587#else\n+ 588/* macro */\n+ 589#define CHECK_ENV_EXTRA(env)\n+ 590#define CHECK_DBC_EXTRA(dbc)\n+ 591#define CHECK_STMT_EXTRA(stmt)\n+ 592#define CHECK_DESC_EXTRA(desc)\n+ 593#endif\n+ 594\n+ 595/*\n+ 596 * odbc_util.h\n+ 597 */\n+ 598\n+ 599/* helpers for ODBC wide string support */\n+ 600#undef _wide\n+ 601#undef _WIDE\n+ 602#ifdef ENABLE_ODBC_WIDE\n+ 603typedef union {\n+ 604 char mb[1];\n+ 605 SQLWCHAR wide[1];\n+ 606} ODBC_CHAR;\n+ 607# define _wide ,wide\n+ 608# define _wide0 ,0\n+ 609# define _WIDE ,int wide\n+ 610#else\n+ 611# define _wide\n+ 612# define _wide0\n+ 613# define _WIDE\n+ 614# define ODBC_CHAR SQLCHAR\n+ 615#endif\n+ 616int odbc_set_stmt_query(struct _hstmt *stmt, const ODBC_CHAR *sql, int\n+sql_len _WIDE);\n+ 617void odbc_set_return_status(struct _hstmt *stmt, unsigned int n_row);\n+ 618void odbc_set_return_params(struct _hstmt *stmt, unsigned int n_row);\n+ 619\n+ 620void odbc_set_sql_type_info(TDSCOLUMN * col, struct _drecord *drec,\n+SQLINTEGER odbc_ver);\n+ 621\n+ 622int odbc_sql_to_c_type_default(int sql_type);\n+ 623TDS_SERVER_TYPE odbc_sql_to_server_type(TDSCONNECTION * conn, int sql_type,\n+int sql_unsigned);\n+ 624TDS_SERVER_TYPE odbc_c_to_server_type(int c_type);\n+ 625\n+ 626unsigned int odbc_get_string_size(int size, const ODBC_CHAR * str _WIDE);\n+ 627void odbc_rdbms_version(TDSSOCKET * tds_socket, char *pversion_string);\n+ 628SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct\n+_drecord *drec_ixd, const TDS_DESC* axd, unsigned int n_row);\n+ 629\n+ 630#ifdef ENABLE_ODBC_WIDE\n+ 631DSTR* odbc_dstr_copy_flag(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR\n+* str, int flag);\n+ 632#define odbc_dstr_copy(dbc, s, len, out) \\\n+ 633 odbc_dstr_copy_flag(dbc, s, len, sizeof((out)->mb) ? (out) : (out), wide)\n+ 634#define odbc_dstr_copy_oct(dbc, s, len, out) \\\n+ 635 odbc_dstr_copy_flag(dbc, s, len, out, wide|0x20)\n+ 636#else\n+ 637DSTR* odbc_dstr_copy(TDS_DBC *dbc, DSTR *s, int size, const ODBC_CHAR *\n+str);\n+ 638#define odbc_dstr_copy_oct odbc_dstr_copy\n+ 639#endif\n+ 640\n+ 641\n+ 642SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER\n+cbBuffer, void FAR * pcbBuffer, const char *s, int len, int flag);\n+ 643#ifdef ENABLE_ODBC_WIDE\n+ 644#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\\n+ 645 odbc_set_string_flag(dbc, sizeof((buf)->mb) ? (buf) : (buf), buf_len,\n+out_len, s, s_len, (wide) | (sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0:0x10))\n+ 646#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\\n+ 647 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (wide) |\n+(sizeof(*(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))\n+ 648#else\n+ 649#define odbc_set_string(dbc, buf, buf_len, out_len, s, s_len) \\\n+ 650 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*\n+(out_len)) == sizeof(SQLSMALLINT)?0:0x10))\n+ 651#define odbc_set_string_oct(dbc, buf, buf_len, out_len, s, s_len) \\\n+ 652 odbc_set_string_flag(dbc, buf, buf_len, out_len, s, s_len, (sizeof(*\n+(out_len)) == sizeof(SQLSMALLINT)?0x20:0x30))\n+ 653#endif\n+ 654\n+ 655#define odbc_set_dstr_oct(dbc, buf, buf_len, out_len, s)\n+odbc_set_string_oct(dbc, buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len\n+(s))\n+ 656#define odbc_set_dstr(dbc, buf, buf_len, out_len, s) odbc_set_string(dbc,\n+buf, buf_len, out_len, tds_dstr_cstr(s), tds_dstr_len(s))\n+ 657\n+ 658SQLSMALLINT odbc_get_concise_sql_type(SQLSMALLINT type, SQLSMALLINT\n+interval);\n+ 659SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct\n+_drecord *drec, int check_only);\n+ 660SQLSMALLINT odbc_get_concise_c_type(SQLSMALLINT type, SQLSMALLINT\n+interval);\n+ 661SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord\n+*drec, int check_only);\n+ 662\n+ 663SQLLEN odbc_get_octet_len(int c_type, const struct _drecord *drec);\n+ 664void odbc_convert_err_set(struct _sql_errors *errs, TDS_INT err);\n+ 665\n+ 666/*\n+ 667 * prepare_query.c\n+ 668 */\n+ 669SQLRETURN prepare_call(struct _hstmt *stmt);\n+ 670SQLRETURN native_sql(struct _hdbc *dbc, DSTR *s);\n+ 671int parse_prepared_query(struct _hstmt *stmt, bool compute_row);\n+ 672int start_parse_prepared_query(struct _hstmt *stmt, bool compute_row);\n+ 673int continue_parse_prepared_query(struct _hstmt *stmt, SQLPOINTER DataPtr,\n+SQLLEN StrLen_or_Ind);\n+ 674const char *parse_const_param(const char * s, TDS_SERVER_TYPE *type);\n+ 675const char *odbc_skip_rpc_name(const char *s);\n+ 676\n+ 677/*\n+ 678 * sql2tds.c\n+ 679 */\n+ 680SQLRETURN odbc_sql2tds(TDS_STMT * stmt, const struct _drecord *drec_ixd,\n+const struct _drecord *drec_axd, TDSCOLUMN *curcol, bool compute_row, const\n+TDS_DESC* axd, unsigned int n_row);\n+ 681TDS_INT convert_datetime2server(int bindtype, const void *src,\n+TDS_DATETIMEALL * dta);\n+ 682\n+ 683/*\n+ 684 * bcp.c\n+ 685 */\n+ 686void odbc_bcp_free_storage(TDS_DBC *dbc);\n+ 687void odbc_bcp_init(TDS_DBC *dbc, const ODBC_CHAR *tblname, const ODBC_CHAR\n+*hfile, const ODBC_CHAR *errfile, int direction _WIDE);\n+ 688void odbc_bcp_control(TDS_DBC *dbc, int field, void *value);\n+ 689void odbc_bcp_colptr(TDS_DBC *dbc, const void * colptr, int table_column);\n+ 690void odbc_bcp_sendrow(TDS_DBC *dbc);\n+ 691int odbc_bcp_batch(TDS_DBC *dbc);\n+ 692int odbc_bcp_done(TDS_DBC *dbc);\n+ 693void odbc_bcp_bind(TDS_DBC *dbc, const void * varaddr, int prefixlen, int\n+varlen, const void * terminator, int termlen, int vartype, int table_column);\n+ 694\n+ 695/*\n+ 696 * sqlwchar.c\n+ 697 */\n+ 698#if SIZEOF_SQLWCHAR != SIZEOF_WCHAR_T\n+ 699size_t sqlwcslen(const SQLWCHAR * s);\n+ 700\n+ 701typedef struct sqlwstr_buf {\n+ 702 struct sqlwstr_buf *next;\n+ 703 wchar_t buf[256];\n+ 704} SQLWSTRBUF;\n+ 705const wchar_t *sqlwstr(const SQLWCHAR * s, SQLWSTRBUF **bufs);\n+ 706void sqlwstr_free(SQLWSTRBUF *bufs);\n+ 707#define SQLWSTR_BUFS(n) SQLWSTRBUF *bufs = NULL\n+ 708#define SQLWSTR(s) sqlwstr(s, &bufs)\n+ 709#define SQLWSTR_FREE() sqlwstr_free(bufs)\n+ 710#else\n+ 711#define sqlwcslen(s) wcslen(s)\n+ 712\n+ 713#define SQLWSTR_BUFS(n) do {} while(0)\n+ 714#define SQLWSTR(s) ((const wchar_t*)(s))\n+ 715#define SQLWSTR_FREE() do {} while(0)\n+ 716#endif\n+ 717\n+ 718int odbc_get_wide_canonic(TDSCONNECTION *conn);\n+ 719\n+ 720#include \n+ 721\n+ 722#ifdef __cplusplus\n+ 723#if 0\n+ 724{\n+ 725#endif\n+ 726}\n+ 727#endif\n+ 728\n+ 729#endif\n+tds.h\n+Main include file for libtds.\n+odbc_set_concise_sql_type\n+SQLRETURN odbc_set_concise_sql_type(SQLSMALLINT concise_type, struct _drecord\n+*drec, int check_only)\n+Set concise type and all cascading field.\n+Definition odbc_util.c:976\n+odbc_set_concise_c_type\n+SQLRETURN odbc_set_concise_c_type(SQLSMALLINT concise_type, struct _drecord\n+*drec, int check_only)\n+Set concise type and all cascading field.\n+Definition odbc_util.c:1098\n+odbc_get_param_len\n+SQLINTEGER odbc_get_param_len(const struct _drecord *drec_axd, const struct\n+_drecord *drec_ixd, const TDS_DESC *axd, unsigned int n_row)\n+Return length of parameter from parameter information.\n+Definition odbc_util.c:861\n+odbc_c_to_server_type\n+TDS_SERVER_TYPE odbc_c_to_server_type(int c_type)\n+Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to\n+the SQL_C_* type.\n+Definition odbc_util.c:601\n+odbc_set_string_flag\n+SQLRETURN odbc_set_string_flag(TDS_DBC *dbc, SQLPOINTER buffer, SQLINTEGER\n+cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag)\n+Copy a string to client setting size according to ODBC convenction.\n+Definition odbc_util.c:301\n+odbc_rdbms_version\n+void odbc_rdbms_version(TDSSOCKET *tds_socket, char *pversion_string)\n+Returns the version of the RDBMS in the ODBC format.\n+Definition odbc_util.c:852\n+tdsiconvinfo\n+Definition iconv.h:92\n+_sql_error\n+Definition odbc.h:94\n+_sql_errors\n+Definition odbc.h:106\n+_dheader\n+Definition odbc.h:151\n+_drecord\n+Definition odbc.h:163\n+_hdesc\n+Definition odbc.h:204\n+_heattr\n+Definition odbc.h:222\n+_hchk\n+Definition odbc.h:230\n+_henv\n+Definition odbc.h:237\n+_hcattr\n+Definition odbc.h:246\n+_hdbc\n+Definition odbc.h:275\n+_hdbc::stmt_list\n+struct _hstmt * stmt_list\n+list of all statements allocated from this connection\n+Definition odbc.h:295\n+_hdbc::uad\n+TDS_DESC * uad[TDS_MAX_APP_DESC]\n+descriptors associated to connection\n+Definition odbc.h:298\n+_hdbc::current_statement\n+struct _hstmt * current_statement\n+Statement executing.\n+Definition odbc.h:293\n+_hdbc::cursor_support\n+unsigned int cursor_support\n+<>0 if server handle cursors\n+Definition odbc.h:300\n+_hsattr\n+Definition odbc.h:309\n+_hstmt\n+Definition odbc.h:381\n+_hstmt::param_count\n+unsigned int param_count\n+number of parameter in current query\n+Definition odbc.h:418\n+_hstmt::row_status\n+TDS_ODBC_ROW_STATUS row_status\n+status of row, it can happen that this flag mark that we are still parsing row,\n+this it's normal\n+Definition odbc.h:423\n+_hstmt::prepared_pos\n+size_t prepared_pos\n+position in prepared query to check parameters, used only in RPC\n+Definition odbc.h:413\n+_hstmt::row_count\n+TDS_INT8 row_count\n+row count to return\n+Definition odbc.h:421\n+_hstmt::param_num\n+int param_num\n+last valid parameter in params, it's a ODBC index (from 1 relative to\n+descriptor)\n+Definition odbc.h:411\n+_hstmt::query\n+DSTR query\n+query to execute\n+Definition odbc.h:387\n+_hstmt::need_reprepare\n+unsigned need_reprepare\n+Prepared statement needs to be prepared again.\n+Definition odbc.h:404\n+_hstmt::next\n+struct _hstmt * next\n+next in list\n+Definition odbc.h:392\n+_hstmt::tds\n+TDSSOCKET * tds\n+socket (only if active)\n+Definition odbc.h:389\n+_hstmt::prev\n+struct _hstmt * prev\n+previous in list\n+Definition odbc.h:394\n+_hstmt::params\n+TDSPARAMINFO * params\n+parameters saved\n+Definition odbc.h:409\n+TDS_FUNCS\n+Definition odbc.h:441\n+TDS_PARSED_PARAM\n+Definition odbc.h:532\n TDS_DATETIMEALL\n this structure is not directed connected to a TDS protocol but keeps any DATE/\n TIME information.\n Definition tds.h:146\n-tdsdaterec\n-Used by tds_datecrack.\n-Definition tds.h:159\n+tds_login\n+Definition tds.h:517\n+tds_column_funcs\n+Definition tds.h:643\n+tds_column\n+Metadata about columns in regular and compute rows.\n+Definition tds.h:689\n+tds_result_info\n+Hold information for any results.\n+Definition tds.h:769\n+tds_cursor\n+Holds informations about a cursor.\n+Definition tds.h:937\n+tds_dynamic\n+Holds information for a dynamic (also called prepared) query.\n+Definition tds.h:977\n tds_context\n Definition tds.h:1029\n+tds_connection\n+Definition tds.h:1091\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n+tds_bcpinfo\n+Definition tds.h:1661\n+tds_dstr\n+Structure to hold a string.\n+Definition string.h:36\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00431_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00431_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/thread.h Source File\n+FreeTDS API: include/freetds/macros.h Source File\n \n \n \n \n \n \n \n@@ -74,458 +74,95 @@\n \n
    \n \n
    \n
    \n
    \n-
    thread.h
    \n+
    macros.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 *
    \n-
    3 * Copyright (C) 2005 Liam Widdowson
    \n-
    4 * Copyright (C) 2010-2012 Frediano Ziglio
    \n-
    5 *
    \n-
    6 * This library is free software; you can redistribute it and/or
    \n-
    7 * modify it under the terms of the GNU Library General Public
    \n-
    8 * License as published by the Free Software Foundation; either
    \n-
    9 * version 2 of the License, or (at your option) any later version.
    \n-
    10 *
    \n-
    11 * This library is distributed in the hope that it will be useful,
    \n-
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    14 * Library General Public License for more details.
    \n-
    15 *
    \n-
    16 * You should have received a copy of the GNU Library General Public
    \n-
    17 * License along with this library; if not, write to the
    \n-
    18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    19 * Boston, MA 02111-1307, USA.
    \n-
    20 */
    \n-
    21
    \n-
    22#ifndef TDSTHREAD_H
    \n-
    23#define TDSTHREAD_H 1
    \n-
    24
    \n-
    25#undef TDS_HAVE_MUTEX
    \n-
    26
    \n-
    27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
    \n-
    28
    \n-
    29#include <tds_sysdep_public.h>
    \n-
    30#include <pthread.h>
    \n-
    31#include <errno.h>
    \n-
    32
    \n-
    33#include <freetds/pushvis.h>
    \n-
    34
    \n-
    35typedef pthread_mutex_t tds_raw_mutex;
    \n-
    36#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
    \n-
    37
    \n-
    38static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n-
    39{
    \n-
    40 pthread_mutex_lock(mtx);
    \n-
    41}
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n+
    3 * Copyright (C) 2010-2017 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    21#ifndef _freetds_macros_h_
    \n+
    22#define _freetds_macros_h_
    \n+
    23
    \n+
    24#ifndef _freetds_config_h_
    \n+
    25#error should include config.h before
    \n+
    26#endif
    \n+
    27
    \n+
    28#if HAVE_STDDEF_H
    \n+
    29#include <stddef.h>
    \n+
    30#endif /* HAVE_STDDEF_H */
    \n+
    31
    \n+
    32#include "tds_sysdep_public.h"
    \n+
    33
    \n+
    34#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)
    \n+
    35#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))
    \n+
    36
    \n+
    37#ifdef offsetof
    \n+
    38#define TDS_OFFSET(type, field) offsetof(type, field)
    \n+
    39#else
    \n+
    40#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))
    \n+
    41#endif
    \n
    42
    \n-
    43static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
    \n-
    44{
    \n-
    45 return pthread_mutex_trylock(mtx);
    \n-
    46}
    \n-
    47
    \n-
    48static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n-
    49{
    \n-
    50 pthread_mutex_unlock(mtx);
    \n-
    51}
    \n-
    52
    \n-
    53static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n-
    54{
    \n-
    55 return pthread_mutex_init(mtx, NULL);
    \n-
    56}
    \n-
    57
    \n-
    58static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n-
    59{
    \n-
    60 pthread_mutex_destroy(mtx);
    \n-
    61}
    \n-
    62
    \n-
    63typedef pthread_cond_t tds_condition;
    \n-
    64
    \n-
    65int tds_raw_cond_init(tds_condition *cond);
    \n-
    66static inline int tds_raw_cond_destroy(tds_condition *cond)
    \n-
    67{
    \n-
    68 return pthread_cond_destroy(cond);
    \n-
    69}
    \n-
    70static inline int tds_raw_cond_signal(tds_condition *cond)
    \n-
    71{
    \n-
    72 return pthread_cond_signal(cond);
    \n-
    73}
    \n-
    74static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
    \n-
    75{
    \n-
    76 return pthread_cond_wait(cond, mtx);
    \n-
    77}
    \n-
    78int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
    \n-
    79
    \n-
    80#define TDS_HAVE_MUTEX 1
    \n-
    81
    \n-
    82typedef pthread_t tds_thread;
    \n-
    83typedef pthread_t tds_thread_id;
    \n-
    84typedef void *(*tds_thread_proc)(void *arg);
    \n-
    85#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n-
    86 void *name(void *arg)
    \n-
    87#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))
    \n-
    88
    \n-
    89static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
    \n-
    90{
    \n-
    91 return pthread_create(ret, NULL, proc, arg);
    \n-
    92}
    \n-
    93
    \n-
    94static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
    \n-
    95{
    \n-
    96 tds_thread th;
    \n-
    97 int ret = pthread_create(&th, NULL, proc, arg);
    \n-
    98 if (!ret)
    \n-
    99 pthread_detach(th);
    \n-
    100 return ret;
    \n-
    101}
    \n-
    102
    \n-
    103static inline int tds_thread_join(tds_thread th, void **ret)
    \n-
    104{
    \n-
    105 return pthread_join(th, ret);
    \n-
    106}
    \n-
    107
    \n-
    108static inline tds_thread_id tds_thread_get_current_id(void)
    \n-
    109{
    \n-
    110 return pthread_self();
    \n-
    111}
    \n-
    112
    \n-
    113static inline int tds_thread_is_current(tds_thread_id th)
    \n-
    114{
    \n-
    115 return pthread_equal(th, pthread_self());
    \n-
    116}
    \n-
    117
    \n-
    118#include <freetds/popvis.h>
    \n-
    119
    \n-
    120#elif defined(_WIN32)
    \n-
    121
    \n-
    122#include <freetds/windows.h>
    \n-
    123#include <errno.h>
    \n-
    124
    \n-
    125/* old version of Windows do not define this constant */
    \n-
    126#ifndef ETIMEDOUT
    \n-
    127#define ETIMEDOUT 138
    \n-
    128#endif
    \n-
    129
    \n-
    130struct ptw32_mcs_node_t_;
    \n-
    131
    \n-
    132typedef struct {
    \n-
    133 struct ptw32_mcs_node_t_ *lock;
    \n-
    134 LONG done;
    \n-
    135 DWORD thread_id;
    \n-
    136 CRITICAL_SECTION crit;
    \n-\n-
    138
    \n-
    139#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }
    \n-
    140
    \n-
    141static inline int
    \n-
    142tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n-
    143{
    \n-
    144 mtx->lock = NULL;
    \n-
    145 mtx->done = 0;
    \n-
    146 mtx->thread_id = 0;
    \n-
    147 return 0;
    \n-
    148}
    \n-
    149
    \n-
    150void tds_win_mutex_lock(tds_raw_mutex *mutex);
    \n-
    151
    \n-
    152static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n-
    153{
    \n-
    154 if (mtx->done) {
    \n-
    155 EnterCriticalSection(&mtx->crit);
    \n-
    156 mtx->thread_id = GetCurrentThreadId();
    \n-
    157 } else {
    \n-
    158 tds_win_mutex_lock(mtx);
    \n-
    159 }
    \n-
    160}
    \n-
    161
    \n-
    162int tds_raw_mutex_trylock(tds_raw_mutex *mtx);
    \n-
    163
    \n-
    164static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n-
    165{
    \n-
    166 mtx->thread_id = 0;
    \n-
    167 LeaveCriticalSection(&mtx->crit);
    \n-
    168}
    \n-
    169
    \n-
    170static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n-
    171{
    \n-
    172 if (mtx->done) {
    \n-
    173 DeleteCriticalSection(&mtx->crit);
    \n-
    174 mtx->done = 0;
    \n-
    175 }
    \n-
    176}
    \n-
    177
    \n-
    178#define TDS_HAVE_MUTEX 1
    \n-
    179
    \n-
    180/* easy way, only single signal supported */
    \n-
    181typedef void *TDS_CONDITION_VARIABLE;
    \n-
    182typedef union {
    \n-
    183 HANDLE ev;
    \n-
    184 TDS_CONDITION_VARIABLE cv;
    \n-\n-
    186
    \n-
    187extern int (*tds_raw_cond_init)(tds_condition *cond);
    \n-
    188extern int (*tds_raw_cond_destroy)(tds_condition *cond);
    \n-
    189extern int (*tds_raw_cond_signal)(tds_condition *cond);
    \n-
    190extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
    \n-
    191static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
    \n-
    192{
    \n-
    193 return tds_raw_cond_timedwait(cond, mtx, -1);
    \n-
    194}
    \n-
    195
    \n-
    196typedef HANDLE tds_thread;
    \n-
    197typedef DWORD tds_thread_id;
    \n-
    198typedef DWORD (WINAPI *tds_thread_proc)(void *arg);
    \n-
    199#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n-
    200 DWORD WINAPI name(void *arg)
    \n-
    201#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))
    \n-
    202
    \n-
    203static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
    \n-
    204{
    \n-
    205 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);
    \n-
    206 return *ret != NULL ? 0 : 11 /* EAGAIN */;
    \n-
    207}
    \n-
    208
    \n-
    209static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
    \n-
    210{
    \n-
    211 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);
    \n-
    212 if (h)
    \n-
    213 return 0;
    \n-
    214 CloseHandle(h);
    \n-
    215 return 11 /* EAGAIN */;
    \n-
    216}
    \n-
    217
    \n-
    218static inline int tds_thread_join(tds_thread th, void **ret)
    \n-
    219{
    \n-
    220 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {
    \n-
    221 if (ret) {
    \n-
    222 DWORD r;
    \n-
    223 if (!GetExitCodeThread(th, &r))
    \n-
    224 r = 0xffffffffu;
    \n-
    225 *ret = (void*) (((char*)0) + r);
    \n-
    226 }
    \n-
    227
    \n-
    228 CloseHandle(th);
    \n-
    229 return 0;
    \n-
    230 }
    \n-
    231 CloseHandle(th);
    \n-
    232 return 22 /* EINVAL */;
    \n-
    233}
    \n-
    234
    \n-
    235static inline tds_thread_id tds_thread_get_current_id(void)
    \n-
    236{
    \n-
    237 return GetCurrentThreadId();
    \n-
    238}
    \n-
    239
    \n-
    240static inline int tds_thread_is_current(tds_thread_id th)
    \n-
    241{
    \n-
    242 return th == GetCurrentThreadId();
    \n-
    243}
    \n-
    244
    \n-
    245#else
    \n-
    246
    \n-
    247#include <tds_sysdep_public.h>
    \n-
    248
    \n-
    249/* define noops as "successful" */
    \n-
    \n-
    250typedef struct {
    \n-
    251 char dummy[0]; /* compiler compatibility */
    \n-\n-
    \n-
    253
    \n-
    254#define TDS_RAW_MUTEX_INITIALIZER {}
    \n-
    255
    \n-
    256static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n-
    257{
    \n-
    258}
    \n-
    259
    \n-
    260static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
    \n-
    261{
    \n-
    262 return 0;
    \n-
    263}
    \n-
    264
    \n-
    265static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n-
    266{
    \n-
    267}
    \n-
    268
    \n-
    269static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n-
    270{
    \n-
    271 return 0;
    \n-
    272}
    \n-
    273
    \n-
    274static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n-
    275{
    \n-
    276}
    \n-
    277
    \n-
    \n-
    278typedef struct {
    \n-
    279 char dummy[0]; /* compiler compatibility */
    \n-\n-
    \n-
    281
    \n-
    282static inline int tds_raw_cond_init(tds_condition *cond)
    \n-
    283{
    \n-
    284 return 0;
    \n-
    285}
    \n-
    286static inline int tds_raw_cond_destroy(tds_condition *cond)
    \n-
    287{
    \n-
    288 return 0;
    \n-
    289}
    \n-
    290#define tds_raw_cond_signal(cond) \\
    \n-
    291 FreeTDS_Condition_not_compiled
    \n-
    292
    \n-
    293#define tds_raw_cond_wait(cond, mtx) \\
    \n-
    294 FreeTDS_Condition_not_compiled
    \n-
    295
    \n-
    296#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \\
    \n-
    297 FreeTDS_Condition_not_compiled
    \n-
    298
    \n-
    \n-
    299typedef struct {
    \n-
    300 char dummy[0]; /* compiler compatibility */
    \n-
    301} tds_thread;
    \n-
    \n-
    302typedef int tds_thread_id;
    \n-
    303
    \n-
    304typedef void *(*tds_thread_proc)(void *arg);
    \n-
    305#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n-
    306 void *name(void *arg)
    \n-
    307#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))
    \n-
    308
    \n-
    309#define tds_thread_create(ret, proc, arg) \\
    \n-
    310 FreeTDS_Thread_not_compiled
    \n-
    311
    \n-
    312#define tds_thread_create_detached(proc, arg) \\
    \n-
    313 FreeTDS_Thread_not_compiled
    \n-
    314
    \n-
    315#define tds_thread_join(th, ret) \\
    \n-
    316 FreeTDS_Thread_not_compiled
    \n-
    317
    \n-
    318static inline tds_thread_id tds_thread_get_current_id(void)
    \n-
    319{
    \n-
    320 return 0;
    \n-
    321}
    \n-
    322
    \n-
    323static inline int tds_thread_is_current(tds_thread_id th)
    \n-
    324{
    \n-
    325 return 1;
    \n-
    326}
    \n-
    327
    \n-
    328#endif
    \n-
    329
    \n-
    330# define tds_cond_init tds_raw_cond_init
    \n-
    331# define tds_cond_destroy tds_raw_cond_destroy
    \n-
    332# define tds_cond_signal tds_raw_cond_signal
    \n-
    333# if !ENABLE_EXTRA_CHECKS
    \n-
    334# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER
    \n-
    335# define tds_mutex tds_raw_mutex
    \n-
    336# define tds_mutex_lock tds_raw_mutex_lock
    \n-
    337# define tds_mutex_trylock tds_raw_mutex_trylock
    \n-
    338# define tds_mutex_unlock tds_raw_mutex_unlock
    \n-
    339# define tds_mutex_check_owned(mtx) do {} while(0)
    \n-
    340# define tds_mutex_init tds_raw_mutex_init
    \n-
    341# define tds_mutex_free tds_raw_mutex_free
    \n-
    342# define tds_cond_wait tds_raw_cond_wait
    \n-
    343# define tds_cond_timedwait tds_raw_cond_timedwait
    \n-
    344# else
    \n-
    345# include <assert.h>
    \n-
    346
    \n-
    347typedef struct tds_mutex
    \n-
    348{
    \n-
    349 tds_raw_mutex mtx;
    \n-
    350 volatile int locked;
    \n-
    351 volatile tds_thread_id locked_by;
    \n-
    352} tds_mutex;
    \n-
    353
    \n-
    354# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }
    \n-
    355
    \n-
    356static inline void tds_mutex_lock(tds_mutex *mtx)
    \n-
    357{
    \n-
    358 assert(mtx);
    \n-
    359 tds_raw_mutex_lock(&mtx->mtx);
    \n-
    360 assert(!mtx->locked);
    \n-
    361 mtx->locked = 1;
    \n-
    362 mtx->locked_by = tds_thread_get_current_id();
    \n-
    363}
    \n-
    364
    \n-
    365static inline int tds_mutex_trylock(tds_mutex *mtx)
    \n-
    366{
    \n-
    367 int ret;
    \n-
    368 assert(mtx);
    \n-
    369 ret = tds_raw_mutex_trylock(&mtx->mtx);
    \n-
    370 if (!ret) {
    \n-
    371 assert(!mtx->locked);
    \n-
    372 mtx->locked = 1;
    \n-
    373 mtx->locked_by = tds_thread_get_current_id();
    \n-
    374 }
    \n-
    375 return ret;
    \n-
    376}
    \n-
    377
    \n-
    378static inline void tds_mutex_unlock(tds_mutex *mtx)
    \n-
    379{
    \n-
    380 assert(mtx && mtx->locked);
    \n-
    381 mtx->locked = 0;
    \n-
    382 tds_raw_mutex_unlock(&mtx->mtx);
    \n-
    383}
    \n-
    384
    \n-
    385static inline void tds_mutex_check_owned(tds_mutex *mtx)
    \n-
    386{
    \n-
    387 int ret;
    \n-
    388 assert(mtx);
    \n-
    389 ret = tds_raw_mutex_trylock(&mtx->mtx);
    \n-
    390 assert(ret);
    \n-
    391 assert(mtx->locked);
    \n-
    392 assert(tds_thread_is_current(mtx->locked_by));
    \n-
    393}
    \n-
    394
    \n-
    395static inline int tds_mutex_init(tds_mutex *mtx)
    \n-
    396{
    \n-
    397 mtx->locked = 0;
    \n-
    398 return tds_raw_mutex_init(&mtx->mtx);
    \n-
    399}
    \n-
    400
    \n-
    401static inline void tds_mutex_free(tds_mutex *mtx)
    \n-
    402{
    \n-
    403 assert(mtx && !mtx->locked);
    \n-
    404 tds_raw_mutex_free(&mtx->mtx);
    \n-
    405}
    \n-
    406
    \n-
    407static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)
    \n-
    408{
    \n-
    409 int ret;
    \n-
    410 assert(mtx && mtx->locked);
    \n-
    411 mtx->locked = 0;
    \n-
    412 ret = tds_raw_cond_wait(cond, &mtx->mtx);
    \n-
    413 mtx->locked = 1;
    \n-
    414 mtx->locked_by = tds_thread_get_current_id();
    \n-
    415 return ret;
    \n-
    416}
    \n-
    417
    \n-
    418static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, int timeout_sec)
    \n-
    419{
    \n-
    420 int ret;
    \n-
    421 assert(mtx && mtx->locked);
    \n-
    422 mtx->locked = 0;
    \n-
    423 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);
    \n-
    424 mtx->locked = 1;
    \n-
    425 mtx->locked_by = tds_thread_get_current_id();
    \n-
    426 return ret;
    \n-
    427}
    \n-
    428
    \n-
    429# endif
    \n-
    430
    \n-
    431#endif
    \n-
    Definition ptw32_MCS_lock.c:98
    \n-
    Definition thread.h:250
    \n-
    Definition thread.h:278
    \n-
    Definition thread.h:299
    \n+
    43#if ENABLE_EXTRA_CHECKS
    \n+
    44# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
    \n+
    45# define TDS_COMPILE_CHECK(name,check) \\
    \n+
    46 _Static_assert(check,#name)
    \n+
    47# elif defined(__GNUC__) && __GNUC__ >= 2
    \n+
    48# define TDS_COMPILE_CHECK(name,check) \\
    \n+
    49 extern int name[(check)?1:-1] __attribute__ ((unused))
    \n+
    50# else
    \n+
    51# define TDS_COMPILE_CHECK(name,check) \\
    \n+
    52 extern int name[(check)?1:-1]
    \n+
    53# endif
    \n+
    54# define TDS_EXTRA_CHECK(stmt) stmt
    \n+
    55#else
    \n+
    56# define TDS_COMPILE_CHECK(name,check) \\
    \n+
    57 extern int disabled_check_##name
    \n+
    58# define TDS_EXTRA_CHECK(stmt)
    \n+
    59#endif
    \n+
    60
    \n+
    61#if defined(__GNUC__) && __GNUC__ >= 3
    \n+
    62# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)
    \n+
    63# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)
    \n+
    64#else
    \n+
    65# define TDS_LIKELY(x) (x)
    \n+
    66# define TDS_UNLIKELY(x) (x)
    \n+
    67#endif
    \n+
    68
    \n+
    69#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4
    \n+
    70#define TDS_WUR __attribute__ ((__warn_unused_result__))
    \n+
    71#else
    \n+
    72#define TDS_WUR
    \n+
    73#endif
    \n+
    74
    \n+
    75#define TDS_INT2PTR(i) ((void*)(((char*)0)+((intptr_t)(i))))
    \n+
    76#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))
    \n+
    77
    \n+
    78#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,458 +7,90 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-thread.h\n+macros.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 *\n- 3 * Copyright (C) 2005 Liam Widdowson\n- 4 * Copyright (C) 2010-2012 Frediano Ziglio\n- 5 *\n- 6 * This library is free software; you can redistribute it and/or\n- 7 * modify it under the terms of the GNU Library General Public\n- 8 * License as published by the Free Software Foundation; either\n- 9 * version 2 of the License, or (at your option) any later version.\n- 10 *\n- 11 * This library is distributed in the hope that it will be useful,\n- 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 14 * Library General Public License for more details.\n- 15 *\n- 16 * You should have received a copy of the GNU Library General Public\n- 17 * License along with this library; if not, write to the\n- 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 19 * Boston, MA 02111-1307, USA.\n- 20 */\n- 21\n- 22#ifndef TDSTHREAD_H\n- 23#define TDSTHREAD_H 1\n- 24\n- 25#undef TDS_HAVE_MUTEX\n- 26\n- 27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)\n- 28\n- 29#include \n- 30#include \n- 31#include \n- 32\n- 33#include \n- 34\n- 35typedef pthread_mutex_t tds_raw_mutex;\n- 36#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER\n- 37\n- 38static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n- 39{\n- 40 pthread_mutex_lock(mtx);\n- 41}\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n+ 3 * Copyright (C) 2010-2017 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 21#ifndef _freetds_macros_h_\n+ 22#define _freetds_macros_h_\n+ 23\n+ 24#ifndef _freetds_config_h_\n+ 25#error should include config.h before\n+ 26#endif\n+ 27\n+ 28#if HAVE_STDDEF_H\n+ 29#include \n+ 30#endif /* HAVE_STDDEF_H */\n+ 31\n+ 32#include \"tds_sysdep_public.h\"\n+ 33\n+ 34#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)\n+ 35#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))\n+ 36\n+ 37#ifdef offsetof\n+ 38#define TDS_OFFSET(type, field) offsetof(type, field)\n+ 39#else\n+ 40#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))\n+ 41#endif\n 42\n- 43static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)\n- 44{\n- 45 return pthread_mutex_trylock(mtx);\n- 46}\n- 47\n- 48static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n- 49{\n- 50 pthread_mutex_unlock(mtx);\n- 51}\n- 52\n- 53static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)\n- 54{\n- 55 return pthread_mutex_init(mtx, NULL);\n- 56}\n- 57\n- 58static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n- 59{\n- 60 pthread_mutex_destroy(mtx);\n- 61}\n- 62\n- 63typedef pthread_cond_t tds_condition;\n- 64\n- 65int tds_raw_cond_init(tds_condition *cond);\n- 66static inline int tds_raw_cond_destroy(tds_condition *cond)\n- 67{\n- 68 return pthread_cond_destroy(cond);\n- 69}\n- 70static inline int tds_raw_cond_signal(tds_condition *cond)\n- 71{\n- 72 return pthread_cond_signal(cond);\n- 73}\n- 74static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)\n- 75{\n- 76 return pthread_cond_wait(cond, mtx);\n- 77}\n- 78int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int\n-timeout_sec);\n- 79\n- 80#define TDS_HAVE_MUTEX 1\n- 81\n- 82typedef pthread_t tds_thread;\n- 83typedef pthread_t tds_thread_id;\n- 84typedef void *(*tds_thread_proc)(void *arg);\n- 85#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n- 86 void *name(void *arg)\n- 87#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))\n- 88\n- 89static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc,\n-void *arg)\n- 90{\n- 91 return pthread_create(ret, NULL, proc, arg);\n- 92}\n- 93\n- 94static inline int tds_thread_create_detached(tds_thread_proc proc, void\n-*arg)\n- 95{\n- 96 tds_thread th;\n- 97 int ret = pthread_create(&th, NULL, proc, arg);\n- 98 if (!ret)\n- 99 pthread_detach(th);\n- 100 return ret;\n- 101}\n- 102\n- 103static inline int tds_thread_join(tds_thread th, void **ret)\n- 104{\n- 105 return pthread_join(th, ret);\n- 106}\n- 107\n- 108static inline tds_thread_id tds_thread_get_current_id(void)\n- 109{\n- 110 return pthread_self();\n- 111}\n- 112\n- 113static inline int tds_thread_is_current(tds_thread_id th)\n- 114{\n- 115 return pthread_equal(th, pthread_self());\n- 116}\n- 117\n- 118#include \n- 119\n- 120#elif defined(_WIN32)\n- 121\n- 122#include \n- 123#include \n- 124\n- 125/* old version of Windows do not define this constant */\n- 126#ifndef ETIMEDOUT\n- 127#define ETIMEDOUT 138\n- 128#endif\n- 129\n- 130struct ptw32_mcs_node_t_;\n- 131\n- 132typedef struct {\n- 133 struct ptw32_mcs_node_t_ *lock;\n- 134 LONG done;\n- 135 DWORD thread_id;\n- 136 CRITICAL_SECTION crit;\n- 137} tds_raw_mutex;\n- 138\n- 139#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }\n- 140\n- 141static inline int\n- 142tds_raw_mutex_init(tds_raw_mutex *mtx)\n- 143{\n- 144 mtx->lock = NULL;\n- 145 mtx->done = 0;\n- 146 mtx->thread_id = 0;\n- 147 return 0;\n- 148}\n- 149\n- 150void tds_win_mutex_lock(tds_raw_mutex *mutex);\n- 151\n- 152static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n- 153{\n- 154 if (mtx->done) {\n- 155 EnterCriticalSection(&mtx->crit);\n- 156 mtx->thread_id = GetCurrentThreadId();\n- 157 } else {\n- 158 tds_win_mutex_lock(mtx);\n- 159 }\n- 160}\n- 161\n- 162int tds_raw_mutex_trylock(tds_raw_mutex *mtx);\n- 163\n- 164static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n- 165{\n- 166 mtx->thread_id = 0;\n- 167 LeaveCriticalSection(&mtx->crit);\n- 168}\n- 169\n- 170static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n- 171{\n- 172 if (mtx->done) {\n- 173 DeleteCriticalSection(&mtx->crit);\n- 174 mtx->done = 0;\n- 175 }\n- 176}\n- 177\n- 178#define TDS_HAVE_MUTEX 1\n- 179\n- 180/* easy way, only single signal supported */\n- 181typedef void *TDS_CONDITION_VARIABLE;\n- 182typedef union {\n- 183 HANDLE ev;\n- 184 TDS_CONDITION_VARIABLE cv;\n- 185} tds_condition;\n- 186\n- 187extern int (*tds_raw_cond_init)(tds_condition *cond);\n- 188extern int (*tds_raw_cond_destroy)(tds_condition *cond);\n- 189extern int (*tds_raw_cond_signal)(tds_condition *cond);\n- 190extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex\n-*mtx, int timeout_sec);\n- 191static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex\n-*mtx)\n- 192{\n- 193 return tds_raw_cond_timedwait(cond, mtx, -1);\n- 194}\n- 195\n- 196typedef HANDLE tds_thread;\n- 197typedef DWORD tds_thread_id;\n- 198typedef DWORD (WINAPI *tds_thread_proc)(void *arg);\n- 199#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n- 200 DWORD WINAPI name(void *arg)\n- 201#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))\n- 202\n- 203static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc,\n-void *arg)\n- 204{\n- 205 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);\n- 206 return *ret != NULL ? 0 : 11 /* EAGAIN */;\n- 207}\n- 208\n- 209static inline int tds_thread_create_detached(tds_thread_proc proc, void\n-*arg)\n- 210{\n- 211 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);\n- 212 if (h)\n- 213 return 0;\n- 214 CloseHandle(h);\n- 215 return 11 /* EAGAIN */;\n- 216}\n- 217\n- 218static inline int tds_thread_join(tds_thread th, void **ret)\n- 219{\n- 220 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {\n- 221 if (ret) {\n- 222 DWORD r;\n- 223 if (!GetExitCodeThread(th, &r))\n- 224 r = 0xffffffffu;\n- 225 *ret = (void*) (((char*)0) + r);\n- 226 }\n- 227\n- 228 CloseHandle(th);\n- 229 return 0;\n- 230 }\n- 231 CloseHandle(th);\n- 232 return 22 /* EINVAL */;\n- 233}\n- 234\n- 235static inline tds_thread_id tds_thread_get_current_id(void)\n- 236{\n- 237 return GetCurrentThreadId();\n- 238}\n- 239\n- 240static inline int tds_thread_is_current(tds_thread_id th)\n- 241{\n- 242 return th == GetCurrentThreadId();\n- 243}\n- 244\n- 245#else\n- 246\n- 247#include \n- 248\n- 249/* define noops as \"successful\" */\n-250typedef struct {\n- 251 char dummy[0]; /* compiler compatibility */\n- 252} tds_raw_mutex;\n- 253\n- 254#define TDS_RAW_MUTEX_INITIALIZER {}\n- 255\n- 256static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n- 257{\n- 258}\n- 259\n- 260static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)\n- 261{\n- 262 return 0;\n- 263}\n- 264\n- 265static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n- 266{\n- 267}\n- 268\n- 269static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)\n- 270{\n- 271 return 0;\n- 272}\n- 273\n- 274static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n- 275{\n- 276}\n- 277\n-278typedef struct {\n- 279 char dummy[0]; /* compiler compatibility */\n- 280} tds_condition;\n- 281\n- 282static inline int tds_raw_cond_init(tds_condition *cond)\n- 283{\n- 284 return 0;\n- 285}\n- 286static inline int tds_raw_cond_destroy(tds_condition *cond)\n- 287{\n- 288 return 0;\n- 289}\n- 290#define tds_raw_cond_signal(cond) \\\n- 291 FreeTDS_Condition_not_compiled\n- 292\n- 293#define tds_raw_cond_wait(cond, mtx) \\\n- 294 FreeTDS_Condition_not_compiled\n- 295\n- 296#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \\\n- 297 FreeTDS_Condition_not_compiled\n- 298\n-299typedef struct {\n- 300 char dummy[0]; /* compiler compatibility */\n- 301} tds_thread;\n- 302typedef int tds_thread_id;\n- 303\n- 304typedef void *(*tds_thread_proc)(void *arg);\n- 305#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n- 306 void *name(void *arg)\n- 307#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))\n- 308\n- 309#define tds_thread_create(ret, proc, arg) \\\n- 310 FreeTDS_Thread_not_compiled\n- 311\n- 312#define tds_thread_create_detached(proc, arg) \\\n- 313 FreeTDS_Thread_not_compiled\n- 314\n- 315#define tds_thread_join(th, ret) \\\n- 316 FreeTDS_Thread_not_compiled\n- 317\n- 318static inline tds_thread_id tds_thread_get_current_id(void)\n- 319{\n- 320 return 0;\n- 321}\n- 322\n- 323static inline int tds_thread_is_current(tds_thread_id th)\n- 324{\n- 325 return 1;\n- 326}\n- 327\n- 328#endif\n- 329\n- 330# define tds_cond_init tds_raw_cond_init\n- 331# define tds_cond_destroy tds_raw_cond_destroy\n- 332# define tds_cond_signal tds_raw_cond_signal\n- 333# if !ENABLE_EXTRA_CHECKS\n- 334# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER\n- 335# define tds_mutex tds_raw_mutex\n- 336# define tds_mutex_lock tds_raw_mutex_lock\n- 337# define tds_mutex_trylock tds_raw_mutex_trylock\n- 338# define tds_mutex_unlock tds_raw_mutex_unlock\n- 339# define tds_mutex_check_owned(mtx) do {} while(0)\n- 340# define tds_mutex_init tds_raw_mutex_init\n- 341# define tds_mutex_free tds_raw_mutex_free\n- 342# define tds_cond_wait tds_raw_cond_wait\n- 343# define tds_cond_timedwait tds_raw_cond_timedwait\n- 344# else\n- 345# include \n- 346\n- 347typedef struct tds_mutex\n- 348{\n- 349 tds_raw_mutex mtx;\n- 350 volatile int locked;\n- 351 volatile tds_thread_id locked_by;\n- 352} tds_mutex;\n- 353\n- 354# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }\n- 355\n- 356static inline void tds_mutex_lock(tds_mutex *mtx)\n- 357{\n- 358 assert(mtx);\n- 359 tds_raw_mutex_lock(&mtx->mtx);\n- 360 assert(!mtx->locked);\n- 361 mtx->locked = 1;\n- 362 mtx->locked_by = tds_thread_get_current_id();\n- 363}\n- 364\n- 365static inline int tds_mutex_trylock(tds_mutex *mtx)\n- 366{\n- 367 int ret;\n- 368 assert(mtx);\n- 369 ret = tds_raw_mutex_trylock(&mtx->mtx);\n- 370 if (!ret) {\n- 371 assert(!mtx->locked);\n- 372 mtx->locked = 1;\n- 373 mtx->locked_by = tds_thread_get_current_id();\n- 374 }\n- 375 return ret;\n- 376}\n- 377\n- 378static inline void tds_mutex_unlock(tds_mutex *mtx)\n- 379{\n- 380 assert(mtx && mtx->locked);\n- 381 mtx->locked = 0;\n- 382 tds_raw_mutex_unlock(&mtx->mtx);\n- 383}\n- 384\n- 385static inline void tds_mutex_check_owned(tds_mutex *mtx)\n- 386{\n- 387 int ret;\n- 388 assert(mtx);\n- 389 ret = tds_raw_mutex_trylock(&mtx->mtx);\n- 390 assert(ret);\n- 391 assert(mtx->locked);\n- 392 assert(tds_thread_is_current(mtx->locked_by));\n- 393}\n- 394\n- 395static inline int tds_mutex_init(tds_mutex *mtx)\n- 396{\n- 397 mtx->locked = 0;\n- 398 return tds_raw_mutex_init(&mtx->mtx);\n- 399}\n- 400\n- 401static inline void tds_mutex_free(tds_mutex *mtx)\n- 402{\n- 403 assert(mtx && !mtx->locked);\n- 404 tds_raw_mutex_free(&mtx->mtx);\n- 405}\n- 406\n- 407static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)\n- 408{\n- 409 int ret;\n- 410 assert(mtx && mtx->locked);\n- 411 mtx->locked = 0;\n- 412 ret = tds_raw_cond_wait(cond, &mtx->mtx);\n- 413 mtx->locked = 1;\n- 414 mtx->locked_by = tds_thread_get_current_id();\n- 415 return ret;\n- 416}\n- 417\n- 418static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx,\n-int timeout_sec)\n- 419{\n- 420 int ret;\n- 421 assert(mtx && mtx->locked);\n- 422 mtx->locked = 0;\n- 423 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);\n- 424 mtx->locked = 1;\n- 425 mtx->locked_by = tds_thread_get_current_id();\n- 426 return ret;\n- 427}\n- 428\n- 429# endif\n- 430\n- 431#endif\n-ptw32_mcs_node_t_\n-Definition ptw32_MCS_lock.c:98\n-tds_raw_mutex\n-Definition thread.h:250\n-tds_condition\n-Definition thread.h:278\n-tds_thread\n-Definition thread.h:299\n+ 43#if ENABLE_EXTRA_CHECKS\n+ 44# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__\n+== 4 && __GNUC_MINOR__ >= 6)))\n+ 45# define TDS_COMPILE_CHECK(name,check) \\\n+ 46 _Static_assert(check,#name)\n+ 47# elif defined(__GNUC__) && __GNUC__ >= 2\n+ 48# define TDS_COMPILE_CHECK(name,check) \\\n+ 49 extern int name[(check)?1:-1] __attribute__ ((unused))\n+ 50# else\n+ 51# define TDS_COMPILE_CHECK(name,check) \\\n+ 52 extern int name[(check)?1:-1]\n+ 53# endif\n+ 54# define TDS_EXTRA_CHECK(stmt) stmt\n+ 55#else\n+ 56# define TDS_COMPILE_CHECK(name,check) \\\n+ 57 extern int disabled_check_##name\n+ 58# define TDS_EXTRA_CHECK(stmt)\n+ 59#endif\n+ 60\n+ 61#if defined(__GNUC__) && __GNUC__ >= 3\n+ 62# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)\n+ 63# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)\n+ 64#else\n+ 65# define TDS_LIKELY(x) (x)\n+ 66# define TDS_UNLIKELY(x) (x)\n+ 67#endif\n+ 68\n+ 69#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4\n+ 70#define TDS_WUR __attribute__ ((__warn_unused_result__))\n+ 71#else\n+ 72#define TDS_WUR\n+ 73#endif\n+ 74\n+ 75#define TDS_INT2PTR(i) ((void*)(((char*)0)+((intptr_t)(i))))\n+ 76#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))\n+ 77\n+ 78#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00434_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00434_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/time.h Source File\n+FreeTDS API: include/freetds/version.h Source File\n \n \n \n \n \n \n \n@@ -74,28 +74,49 @@\n \n
    \n \n
    \n \n
    \n-
    time.h
    \n+
    version.h
    \n
    \n
    \n-
    1#if TIME_WITH_SYS_TIME
    \n-
    2# include <sys/time.h>
    \n-
    3# include <time.h>
    \n-
    4#else
    \n-
    5# if HAVE_SYS_TIME_H
    \n-
    6# include <sys/time.h>
    \n-
    7# else
    \n-
    8# include <time.h>
    \n-
    9# endif
    \n-
    10#endif
    \n-
    11
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _tdsversion_h_
    \n+
    21#define _tdsversion_h_
    \n+
    22
    \n+
    23/* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */
    \n+
    24
    \n+
    25#define TDS_VERSION_NO "freetds v1.3.17"
    \n+
    26
    \n+
    27#define TDS_VERSION_MAJOR 1
    \n+
    28#define TDS_VERSION_MINOR 3
    \n+
    29#define TDS_VERSION_SUBVERSION 17
    \n+
    30#define TDS_VERSION_BUILD_NUMBER 1202
    \n+
    31
    \n+
    32#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,22 +7,43 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-time.h\n- 1#if TIME_WITH_SYS_TIME\n- 2# include \n- 3# include \n- 4#else\n- 5# if HAVE_SYS_TIME_H\n- 6# include \n- 7# else\n- 8# include \n- 9# endif\n- 10#endif\n- 11\n+version.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _tdsversion_h_\n+ 21#define _tdsversion_h_\n+ 22\n+ 23/* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */\n+ 24\n+ 25#define TDS_VERSION_NO \"freetds v1.3.17\"\n+ 26\n+ 27#define TDS_VERSION_MAJOR 1\n+ 28#define TDS_VERSION_MINOR 3\n+ 29#define TDS_VERSION_SUBVERSION 17\n+ 30#define TDS_VERSION_BUILD_NUMBER 1202\n+ 31\n+ 32#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00437_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00437_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/checks.h Source File\n+FreeTDS API: include/freetds/thread.h Source File\n \n \n \n \n \n \n \n@@ -74,95 +74,458 @@\n \n
    \n \n
    \n
    \n
    \n-
    checks.h
    \n+
    thread.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2004 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef TDS_CHECKS_H
    \n-
    21#define TDS_CHECKS_H
    \n-
    22
    \n-
    23#include <freetds/pushvis.h>
    \n+
    2 *
    \n+
    3 * Copyright (C) 2005 Liam Widdowson
    \n+
    4 * Copyright (C) 2010-2012 Frediano Ziglio
    \n+
    5 *
    \n+
    6 * This library is free software; you can redistribute it and/or
    \n+
    7 * modify it under the terms of the GNU Library General Public
    \n+
    8 * License as published by the Free Software Foundation; either
    \n+
    9 * version 2 of the License, or (at your option) any later version.
    \n+
    10 *
    \n+
    11 * This library is distributed in the hope that it will be useful,
    \n+
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    14 * Library General Public License for more details.
    \n+
    15 *
    \n+
    16 * You should have received a copy of the GNU Library General Public
    \n+
    17 * License along with this library; if not, write to the
    \n+
    18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    19 * Boston, MA 02111-1307, USA.
    \n+
    20 */
    \n+
    21
    \n+
    22#ifndef TDSTHREAD_H
    \n+
    23#define TDSTHREAD_H 1
    \n
    24
    \n-
    25#if ENABLE_EXTRA_CHECKS
    \n-
    26#define CHECK_STRUCT_EXTRA(func,s) func(s)
    \n-
    27#else
    \n-
    28#define CHECK_STRUCT_EXTRA(func,s)
    \n-
    29#endif
    \n-
    30
    \n-
    31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)
    \n-
    32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA(tds_check_context_extra,ctx)
    \n-
    33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)
    \n-
    34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA(tds_check_column_extra,column)
    \n-
    35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
    \n-
    36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA(tds_check_resultinfo_extra,res_info)
    \n-
    37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA(tds_check_cursor_extra,cursor)
    \n-
    38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA(tds_check_dynamic_extra,dynamic)
    \n-
    39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA(tds_check_freeze_extra,freeze)
    \n-
    40#define CHECK_CONN_EXTRA(conn)
    \n-
    41
    \n-
    42#if ENABLE_EXTRA_CHECKS
    \n-
    43void tds_check_tds_extra(const TDSSOCKET * tds);
    \n-
    44void tds_check_context_extra(const TDSCONTEXT * ctx);
    \n-
    45void tds_check_env_extra(const TDSENV * env);
    \n-
    46void tds_check_column_extra(const TDSCOLUMN * column);
    \n-
    47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);
    \n-
    48void tds_check_cursor_extra(const TDSCURSOR * cursor);
    \n-
    49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);
    \n-
    50void tds_check_freeze_extra(const TDSFREEZE * freeze);
    \n-
    51#endif
    \n+
    25#undef TDS_HAVE_MUTEX
    \n+
    26
    \n+
    27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
    \n+
    28
    \n+
    29#include <tds_sysdep_public.h>
    \n+
    30#include <pthread.h>
    \n+
    31#include <errno.h>
    \n+
    32
    \n+
    33#include <freetds/pushvis.h>
    \n+
    34
    \n+
    35typedef pthread_mutex_t tds_raw_mutex;
    \n+
    36#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
    \n+
    37
    \n+
    38static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n+
    39{
    \n+
    40 pthread_mutex_lock(mtx);
    \n+
    41}
    \n+
    42
    \n+
    43static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
    \n+
    44{
    \n+
    45 return pthread_mutex_trylock(mtx);
    \n+
    46}
    \n+
    47
    \n+
    48static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n+
    49{
    \n+
    50 pthread_mutex_unlock(mtx);
    \n+
    51}
    \n
    52
    \n-
    53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS
    \n-
    54# include <valgrind/memcheck.h>
    \n-
    55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)
    \n-
    56#else
    \n-
    57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)
    \n-
    58#endif
    \n-
    59
    \n-
    60#if ENABLE_EXTRA_CHECKS
    \n-
    61void tds_extra_assert_check(const char *fn, int line, int cond, const char *cond_str);
    \n-
    62# define tds_extra_assert(cond) \\
    \n-
    63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)
    \n-
    64#else
    \n-
    65# define tds_extra_assert(cond) do { } while(0)
    \n-
    66#endif
    \n-
    67
    \n-
    68#include <freetds/popvis.h>
    \n-
    69
    \n-
    70#endif /* TDS_CHECKS_H */
    \n-
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n-
    Holds informations about a cursor.
    Definition tds.h:937
    \n-
    Current environment as reported by the server.
    Definition tds.h:963
    \n-
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n-
    Definition tds.h:1029
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n-
    Definition tds.h:1571
    \n+
    53static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n+
    54{
    \n+
    55 return pthread_mutex_init(mtx, NULL);
    \n+
    56}
    \n+
    57
    \n+
    58static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n+
    59{
    \n+
    60 pthread_mutex_destroy(mtx);
    \n+
    61}
    \n+
    62
    \n+
    63typedef pthread_cond_t tds_condition;
    \n+
    64
    \n+
    65int tds_raw_cond_init(tds_condition *cond);
    \n+
    66static inline int tds_raw_cond_destroy(tds_condition *cond)
    \n+
    67{
    \n+
    68 return pthread_cond_destroy(cond);
    \n+
    69}
    \n+
    70static inline int tds_raw_cond_signal(tds_condition *cond)
    \n+
    71{
    \n+
    72 return pthread_cond_signal(cond);
    \n+
    73}
    \n+
    74static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
    \n+
    75{
    \n+
    76 return pthread_cond_wait(cond, mtx);
    \n+
    77}
    \n+
    78int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
    \n+
    79
    \n+
    80#define TDS_HAVE_MUTEX 1
    \n+
    81
    \n+
    82typedef pthread_t tds_thread;
    \n+
    83typedef pthread_t tds_thread_id;
    \n+
    84typedef void *(*tds_thread_proc)(void *arg);
    \n+
    85#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n+
    86 void *name(void *arg)
    \n+
    87#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))
    \n+
    88
    \n+
    89static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
    \n+
    90{
    \n+
    91 return pthread_create(ret, NULL, proc, arg);
    \n+
    92}
    \n+
    93
    \n+
    94static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
    \n+
    95{
    \n+
    96 tds_thread th;
    \n+
    97 int ret = pthread_create(&th, NULL, proc, arg);
    \n+
    98 if (!ret)
    \n+
    99 pthread_detach(th);
    \n+
    100 return ret;
    \n+
    101}
    \n+
    102
    \n+
    103static inline int tds_thread_join(tds_thread th, void **ret)
    \n+
    104{
    \n+
    105 return pthread_join(th, ret);
    \n+
    106}
    \n+
    107
    \n+
    108static inline tds_thread_id tds_thread_get_current_id(void)
    \n+
    109{
    \n+
    110 return pthread_self();
    \n+
    111}
    \n+
    112
    \n+
    113static inline int tds_thread_is_current(tds_thread_id th)
    \n+
    114{
    \n+
    115 return pthread_equal(th, pthread_self());
    \n+
    116}
    \n+
    117
    \n+
    118#include <freetds/popvis.h>
    \n+
    119
    \n+
    120#elif defined(_WIN32)
    \n+
    121
    \n+
    122#include <freetds/windows.h>
    \n+
    123#include <errno.h>
    \n+
    124
    \n+
    125/* old version of Windows do not define this constant */
    \n+
    126#ifndef ETIMEDOUT
    \n+
    127#define ETIMEDOUT 138
    \n+
    128#endif
    \n+
    129
    \n+
    130struct ptw32_mcs_node_t_;
    \n+
    131
    \n+
    132typedef struct {
    \n+
    133 struct ptw32_mcs_node_t_ *lock;
    \n+
    134 LONG done;
    \n+
    135 DWORD thread_id;
    \n+
    136 CRITICAL_SECTION crit;
    \n+\n+
    138
    \n+
    139#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }
    \n+
    140
    \n+
    141static inline int
    \n+
    142tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n+
    143{
    \n+
    144 mtx->lock = NULL;
    \n+
    145 mtx->done = 0;
    \n+
    146 mtx->thread_id = 0;
    \n+
    147 return 0;
    \n+
    148}
    \n+
    149
    \n+
    150void tds_win_mutex_lock(tds_raw_mutex *mutex);
    \n+
    151
    \n+
    152static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n+
    153{
    \n+
    154 if (mtx->done) {
    \n+
    155 EnterCriticalSection(&mtx->crit);
    \n+
    156 mtx->thread_id = GetCurrentThreadId();
    \n+
    157 } else {
    \n+
    158 tds_win_mutex_lock(mtx);
    \n+
    159 }
    \n+
    160}
    \n+
    161
    \n+
    162int tds_raw_mutex_trylock(tds_raw_mutex *mtx);
    \n+
    163
    \n+
    164static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n+
    165{
    \n+
    166 mtx->thread_id = 0;
    \n+
    167 LeaveCriticalSection(&mtx->crit);
    \n+
    168}
    \n+
    169
    \n+
    170static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n+
    171{
    \n+
    172 if (mtx->done) {
    \n+
    173 DeleteCriticalSection(&mtx->crit);
    \n+
    174 mtx->done = 0;
    \n+
    175 }
    \n+
    176}
    \n+
    177
    \n+
    178#define TDS_HAVE_MUTEX 1
    \n+
    179
    \n+
    180/* easy way, only single signal supported */
    \n+
    181typedef void *TDS_CONDITION_VARIABLE;
    \n+
    182typedef union {
    \n+
    183 HANDLE ev;
    \n+
    184 TDS_CONDITION_VARIABLE cv;
    \n+\n+
    186
    \n+
    187extern int (*tds_raw_cond_init)(tds_condition *cond);
    \n+
    188extern int (*tds_raw_cond_destroy)(tds_condition *cond);
    \n+
    189extern int (*tds_raw_cond_signal)(tds_condition *cond);
    \n+
    190extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex *mtx, int timeout_sec);
    \n+
    191static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)
    \n+
    192{
    \n+
    193 return tds_raw_cond_timedwait(cond, mtx, -1);
    \n+
    194}
    \n+
    195
    \n+
    196typedef HANDLE tds_thread;
    \n+
    197typedef DWORD tds_thread_id;
    \n+
    198typedef DWORD (WINAPI *tds_thread_proc)(void *arg);
    \n+
    199#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n+
    200 DWORD WINAPI name(void *arg)
    \n+
    201#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))
    \n+
    202
    \n+
    203static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc, void *arg)
    \n+
    204{
    \n+
    205 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);
    \n+
    206 return *ret != NULL ? 0 : 11 /* EAGAIN */;
    \n+
    207}
    \n+
    208
    \n+
    209static inline int tds_thread_create_detached(tds_thread_proc proc, void *arg)
    \n+
    210{
    \n+
    211 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);
    \n+
    212 if (h)
    \n+
    213 return 0;
    \n+
    214 CloseHandle(h);
    \n+
    215 return 11 /* EAGAIN */;
    \n+
    216}
    \n+
    217
    \n+
    218static inline int tds_thread_join(tds_thread th, void **ret)
    \n+
    219{
    \n+
    220 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {
    \n+
    221 if (ret) {
    \n+
    222 DWORD r;
    \n+
    223 if (!GetExitCodeThread(th, &r))
    \n+
    224 r = 0xffffffffu;
    \n+
    225 *ret = (void*) (((char*)0) + r);
    \n+
    226 }
    \n+
    227
    \n+
    228 CloseHandle(th);
    \n+
    229 return 0;
    \n+
    230 }
    \n+
    231 CloseHandle(th);
    \n+
    232 return 22 /* EINVAL */;
    \n+
    233}
    \n+
    234
    \n+
    235static inline tds_thread_id tds_thread_get_current_id(void)
    \n+
    236{
    \n+
    237 return GetCurrentThreadId();
    \n+
    238}
    \n+
    239
    \n+
    240static inline int tds_thread_is_current(tds_thread_id th)
    \n+
    241{
    \n+
    242 return th == GetCurrentThreadId();
    \n+
    243}
    \n+
    244
    \n+
    245#else
    \n+
    246
    \n+
    247#include <tds_sysdep_public.h>
    \n+
    248
    \n+
    249/* define noops as "successful" */
    \n+
    \n+
    250typedef struct {
    \n+
    251 char dummy[0]; /* compiler compatibility */
    \n+\n+
    \n+
    253
    \n+
    254#define TDS_RAW_MUTEX_INITIALIZER {}
    \n+
    255
    \n+
    256static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)
    \n+
    257{
    \n+
    258}
    \n+
    259
    \n+
    260static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)
    \n+
    261{
    \n+
    262 return 0;
    \n+
    263}
    \n+
    264
    \n+
    265static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)
    \n+
    266{
    \n+
    267}
    \n+
    268
    \n+
    269static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)
    \n+
    270{
    \n+
    271 return 0;
    \n+
    272}
    \n+
    273
    \n+
    274static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)
    \n+
    275{
    \n+
    276}
    \n+
    277
    \n+
    \n+
    278typedef struct {
    \n+
    279 char dummy[0]; /* compiler compatibility */
    \n+\n+
    \n+
    281
    \n+
    282static inline int tds_raw_cond_init(tds_condition *cond)
    \n+
    283{
    \n+
    284 return 0;
    \n+
    285}
    \n+
    286static inline int tds_raw_cond_destroy(tds_condition *cond)
    \n+
    287{
    \n+
    288 return 0;
    \n+
    289}
    \n+
    290#define tds_raw_cond_signal(cond) \\
    \n+
    291 FreeTDS_Condition_not_compiled
    \n+
    292
    \n+
    293#define tds_raw_cond_wait(cond, mtx) \\
    \n+
    294 FreeTDS_Condition_not_compiled
    \n+
    295
    \n+
    296#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \\
    \n+
    297 FreeTDS_Condition_not_compiled
    \n+
    298
    \n+
    \n+
    299typedef struct {
    \n+
    300 char dummy[0]; /* compiler compatibility */
    \n+
    301} tds_thread;
    \n+
    \n+
    302typedef int tds_thread_id;
    \n+
    303
    \n+
    304typedef void *(*tds_thread_proc)(void *arg);
    \n+
    305#define TDS_THREAD_PROC_DECLARE(name, arg) \\
    \n+
    306 void *name(void *arg)
    \n+
    307#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))
    \n+
    308
    \n+
    309#define tds_thread_create(ret, proc, arg) \\
    \n+
    310 FreeTDS_Thread_not_compiled
    \n+
    311
    \n+
    312#define tds_thread_create_detached(proc, arg) \\
    \n+
    313 FreeTDS_Thread_not_compiled
    \n+
    314
    \n+
    315#define tds_thread_join(th, ret) \\
    \n+
    316 FreeTDS_Thread_not_compiled
    \n+
    317
    \n+
    318static inline tds_thread_id tds_thread_get_current_id(void)
    \n+
    319{
    \n+
    320 return 0;
    \n+
    321}
    \n+
    322
    \n+
    323static inline int tds_thread_is_current(tds_thread_id th)
    \n+
    324{
    \n+
    325 return 1;
    \n+
    326}
    \n+
    327
    \n+
    328#endif
    \n+
    329
    \n+
    330# define tds_cond_init tds_raw_cond_init
    \n+
    331# define tds_cond_destroy tds_raw_cond_destroy
    \n+
    332# define tds_cond_signal tds_raw_cond_signal
    \n+
    333# if !ENABLE_EXTRA_CHECKS
    \n+
    334# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER
    \n+
    335# define tds_mutex tds_raw_mutex
    \n+
    336# define tds_mutex_lock tds_raw_mutex_lock
    \n+
    337# define tds_mutex_trylock tds_raw_mutex_trylock
    \n+
    338# define tds_mutex_unlock tds_raw_mutex_unlock
    \n+
    339# define tds_mutex_check_owned(mtx) do {} while(0)
    \n+
    340# define tds_mutex_init tds_raw_mutex_init
    \n+
    341# define tds_mutex_free tds_raw_mutex_free
    \n+
    342# define tds_cond_wait tds_raw_cond_wait
    \n+
    343# define tds_cond_timedwait tds_raw_cond_timedwait
    \n+
    344# else
    \n+
    345# include <assert.h>
    \n+
    346
    \n+
    347typedef struct tds_mutex
    \n+
    348{
    \n+
    349 tds_raw_mutex mtx;
    \n+
    350 volatile int locked;
    \n+
    351 volatile tds_thread_id locked_by;
    \n+
    352} tds_mutex;
    \n+
    353
    \n+
    354# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }
    \n+
    355
    \n+
    356static inline void tds_mutex_lock(tds_mutex *mtx)
    \n+
    357{
    \n+
    358 assert(mtx);
    \n+
    359 tds_raw_mutex_lock(&mtx->mtx);
    \n+
    360 assert(!mtx->locked);
    \n+
    361 mtx->locked = 1;
    \n+
    362 mtx->locked_by = tds_thread_get_current_id();
    \n+
    363}
    \n+
    364
    \n+
    365static inline int tds_mutex_trylock(tds_mutex *mtx)
    \n+
    366{
    \n+
    367 int ret;
    \n+
    368 assert(mtx);
    \n+
    369 ret = tds_raw_mutex_trylock(&mtx->mtx);
    \n+
    370 if (!ret) {
    \n+
    371 assert(!mtx->locked);
    \n+
    372 mtx->locked = 1;
    \n+
    373 mtx->locked_by = tds_thread_get_current_id();
    \n+
    374 }
    \n+
    375 return ret;
    \n+
    376}
    \n+
    377
    \n+
    378static inline void tds_mutex_unlock(tds_mutex *mtx)
    \n+
    379{
    \n+
    380 assert(mtx && mtx->locked);
    \n+
    381 mtx->locked = 0;
    \n+
    382 tds_raw_mutex_unlock(&mtx->mtx);
    \n+
    383}
    \n+
    384
    \n+
    385static inline void tds_mutex_check_owned(tds_mutex *mtx)
    \n+
    386{
    \n+
    387 int ret;
    \n+
    388 assert(mtx);
    \n+
    389 ret = tds_raw_mutex_trylock(&mtx->mtx);
    \n+
    390 assert(ret);
    \n+
    391 assert(mtx->locked);
    \n+
    392 assert(tds_thread_is_current(mtx->locked_by));
    \n+
    393}
    \n+
    394
    \n+
    395static inline int tds_mutex_init(tds_mutex *mtx)
    \n+
    396{
    \n+
    397 mtx->locked = 0;
    \n+
    398 return tds_raw_mutex_init(&mtx->mtx);
    \n+
    399}
    \n+
    400
    \n+
    401static inline void tds_mutex_free(tds_mutex *mtx)
    \n+
    402{
    \n+
    403 assert(mtx && !mtx->locked);
    \n+
    404 tds_raw_mutex_free(&mtx->mtx);
    \n+
    405}
    \n+
    406
    \n+
    407static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)
    \n+
    408{
    \n+
    409 int ret;
    \n+
    410 assert(mtx && mtx->locked);
    \n+
    411 mtx->locked = 0;
    \n+
    412 ret = tds_raw_cond_wait(cond, &mtx->mtx);
    \n+
    413 mtx->locked = 1;
    \n+
    414 mtx->locked_by = tds_thread_get_current_id();
    \n+
    415 return ret;
    \n+
    416}
    \n+
    417
    \n+
    418static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx, int timeout_sec)
    \n+
    419{
    \n+
    420 int ret;
    \n+
    421 assert(mtx && mtx->locked);
    \n+
    422 mtx->locked = 0;
    \n+
    423 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);
    \n+
    424 mtx->locked = 1;
    \n+
    425 mtx->locked_by = tds_thread_get_current_id();
    \n+
    426 return ret;
    \n+
    427}
    \n+
    428
    \n+
    429# endif
    \n+
    430
    \n+
    431#endif
    \n+
    Definition ptw32_MCS_lock.c:98
    \n+
    Definition thread.h:250
    \n+
    Definition thread.h:278
    \n+
    Definition thread.h:299
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,111 +7,458 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-checks.h\n+thread.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2004 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef TDS_CHECKS_H\n- 21#define TDS_CHECKS_H\n- 22\n- 23#include \n+ 2 *\n+ 3 * Copyright (C) 2005 Liam Widdowson\n+ 4 * Copyright (C) 2010-2012 Frediano Ziglio\n+ 5 *\n+ 6 * This library is free software; you can redistribute it and/or\n+ 7 * modify it under the terms of the GNU Library General Public\n+ 8 * License as published by the Free Software Foundation; either\n+ 9 * version 2 of the License, or (at your option) any later version.\n+ 10 *\n+ 11 * This library is distributed in the hope that it will be useful,\n+ 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 14 * Library General Public License for more details.\n+ 15 *\n+ 16 * You should have received a copy of the GNU Library General Public\n+ 17 * License along with this library; if not, write to the\n+ 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 19 * Boston, MA 02111-1307, USA.\n+ 20 */\n+ 21\n+ 22#ifndef TDSTHREAD_H\n+ 23#define TDSTHREAD_H 1\n 24\n- 25#if ENABLE_EXTRA_CHECKS\n- 26#define CHECK_STRUCT_EXTRA(func,s) func(s)\n- 27#else\n- 28#define CHECK_STRUCT_EXTRA(func,s)\n- 29#endif\n- 30\n- 31#define CHECK_TDS_EXTRA(tds) CHECK_STRUCT_EXTRA(tds_check_tds_extra,tds)\n- 32#define CHECK_CONTEXT_EXTRA(ctx) CHECK_STRUCT_EXTRA\n-(tds_check_context_extra,ctx)\n- 33#define CHECK_TDSENV_EXTRA(env) CHECK_STRUCT_EXTRA(tds_check_env_extra,env)\n- 34#define CHECK_COLUMN_EXTRA(column) CHECK_STRUCT_EXTRA\n-(tds_check_column_extra,column)\n- 35#define CHECK_RESULTINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA\n-(tds_check_resultinfo_extra,res_info)\n- 36#define CHECK_PARAMINFO_EXTRA(res_info) CHECK_STRUCT_EXTRA\n-(tds_check_resultinfo_extra,res_info)\n- 37#define CHECK_CURSOR_EXTRA(cursor) CHECK_STRUCT_EXTRA\n-(tds_check_cursor_extra,cursor)\n- 38#define CHECK_DYNAMIC_EXTRA(dynamic) CHECK_STRUCT_EXTRA\n-(tds_check_dynamic_extra,dynamic)\n- 39#define CHECK_FREEZE_EXTRA(freeze) CHECK_STRUCT_EXTRA\n-(tds_check_freeze_extra,freeze)\n- 40#define CHECK_CONN_EXTRA(conn)\n- 41\n- 42#if ENABLE_EXTRA_CHECKS\n- 43void tds_check_tds_extra(const TDSSOCKET * tds);\n- 44void tds_check_context_extra(const TDSCONTEXT * ctx);\n- 45void tds_check_env_extra(const TDSENV * env);\n- 46void tds_check_column_extra(const TDSCOLUMN * column);\n- 47void tds_check_resultinfo_extra(const TDSRESULTINFO * res_info);\n- 48void tds_check_cursor_extra(const TDSCURSOR * cursor);\n- 49void tds_check_dynamic_extra(const TDSDYNAMIC * dynamic);\n- 50void tds_check_freeze_extra(const TDSFREEZE * freeze);\n- 51#endif\n+ 25#undef TDS_HAVE_MUTEX\n+ 26\n+ 27#if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)\n+ 28\n+ 29#include \n+ 30#include \n+ 31#include \n+ 32\n+ 33#include \n+ 34\n+ 35typedef pthread_mutex_t tds_raw_mutex;\n+ 36#define TDS_RAW_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER\n+ 37\n+ 38static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n+ 39{\n+ 40 pthread_mutex_lock(mtx);\n+ 41}\n+ 42\n+ 43static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)\n+ 44{\n+ 45 return pthread_mutex_trylock(mtx);\n+ 46}\n+ 47\n+ 48static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n+ 49{\n+ 50 pthread_mutex_unlock(mtx);\n+ 51}\n 52\n- 53#if defined(HAVE_VALGRIND_MEMCHECK_H) && ENABLE_EXTRA_CHECKS\n- 54# include \n- 55# define TDS_MARK_UNDEFINED(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)\n- 56#else\n- 57# define TDS_MARK_UNDEFINED(ptr, len) do {} while(0)\n- 58#endif\n- 59\n- 60#if ENABLE_EXTRA_CHECKS\n- 61void tds_extra_assert_check(const char *fn, int line, int cond, const char\n-*cond_str);\n- 62# define tds_extra_assert(cond) \\\n- 63 tds_extra_assert_check(__FILE__, __LINE__, cond, #cond)\n- 64#else\n- 65# define tds_extra_assert(cond) do { } while(0)\n- 66#endif\n- 67\n- 68#include \n- 69\n- 70#endif /* TDS_CHECKS_H */\n-tds_column\n-Metadata about columns in regular and compute rows.\n-Definition tds.h:689\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n-tds_cursor\n-Holds informations about a cursor.\n-Definition tds.h:937\n-tds_env\n-Current environment as reported by the server.\n-Definition tds.h:963\n-tds_dynamic\n-Holds information for a dynamic (also called prepared) query.\n-Definition tds.h:977\n-tds_context\n-Definition tds.h:1029\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n-tds_freeze\n-Definition tds.h:1571\n+ 53static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)\n+ 54{\n+ 55 return pthread_mutex_init(mtx, NULL);\n+ 56}\n+ 57\n+ 58static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n+ 59{\n+ 60 pthread_mutex_destroy(mtx);\n+ 61}\n+ 62\n+ 63typedef pthread_cond_t tds_condition;\n+ 64\n+ 65int tds_raw_cond_init(tds_condition *cond);\n+ 66static inline int tds_raw_cond_destroy(tds_condition *cond)\n+ 67{\n+ 68 return pthread_cond_destroy(cond);\n+ 69}\n+ 70static inline int tds_raw_cond_signal(tds_condition *cond)\n+ 71{\n+ 72 return pthread_cond_signal(cond);\n+ 73}\n+ 74static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex *mtx)\n+ 75{\n+ 76 return pthread_cond_wait(cond, mtx);\n+ 77}\n+ 78int tds_raw_cond_timedwait(tds_condition *cond, tds_raw_mutex *mtx, int\n+timeout_sec);\n+ 79\n+ 80#define TDS_HAVE_MUTEX 1\n+ 81\n+ 82typedef pthread_t tds_thread;\n+ 83typedef pthread_t tds_thread_id;\n+ 84typedef void *(*tds_thread_proc)(void *arg);\n+ 85#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n+ 86 void *name(void *arg)\n+ 87#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))\n+ 88\n+ 89static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc,\n+void *arg)\n+ 90{\n+ 91 return pthread_create(ret, NULL, proc, arg);\n+ 92}\n+ 93\n+ 94static inline int tds_thread_create_detached(tds_thread_proc proc, void\n+*arg)\n+ 95{\n+ 96 tds_thread th;\n+ 97 int ret = pthread_create(&th, NULL, proc, arg);\n+ 98 if (!ret)\n+ 99 pthread_detach(th);\n+ 100 return ret;\n+ 101}\n+ 102\n+ 103static inline int tds_thread_join(tds_thread th, void **ret)\n+ 104{\n+ 105 return pthread_join(th, ret);\n+ 106}\n+ 107\n+ 108static inline tds_thread_id tds_thread_get_current_id(void)\n+ 109{\n+ 110 return pthread_self();\n+ 111}\n+ 112\n+ 113static inline int tds_thread_is_current(tds_thread_id th)\n+ 114{\n+ 115 return pthread_equal(th, pthread_self());\n+ 116}\n+ 117\n+ 118#include \n+ 119\n+ 120#elif defined(_WIN32)\n+ 121\n+ 122#include \n+ 123#include \n+ 124\n+ 125/* old version of Windows do not define this constant */\n+ 126#ifndef ETIMEDOUT\n+ 127#define ETIMEDOUT 138\n+ 128#endif\n+ 129\n+ 130struct ptw32_mcs_node_t_;\n+ 131\n+ 132typedef struct {\n+ 133 struct ptw32_mcs_node_t_ *lock;\n+ 134 LONG done;\n+ 135 DWORD thread_id;\n+ 136 CRITICAL_SECTION crit;\n+ 137} tds_raw_mutex;\n+ 138\n+ 139#define TDS_RAW_MUTEX_INITIALIZER { NULL, 0, 0 }\n+ 140\n+ 141static inline int\n+ 142tds_raw_mutex_init(tds_raw_mutex *mtx)\n+ 143{\n+ 144 mtx->lock = NULL;\n+ 145 mtx->done = 0;\n+ 146 mtx->thread_id = 0;\n+ 147 return 0;\n+ 148}\n+ 149\n+ 150void tds_win_mutex_lock(tds_raw_mutex *mutex);\n+ 151\n+ 152static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n+ 153{\n+ 154 if (mtx->done) {\n+ 155 EnterCriticalSection(&mtx->crit);\n+ 156 mtx->thread_id = GetCurrentThreadId();\n+ 157 } else {\n+ 158 tds_win_mutex_lock(mtx);\n+ 159 }\n+ 160}\n+ 161\n+ 162int tds_raw_mutex_trylock(tds_raw_mutex *mtx);\n+ 163\n+ 164static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n+ 165{\n+ 166 mtx->thread_id = 0;\n+ 167 LeaveCriticalSection(&mtx->crit);\n+ 168}\n+ 169\n+ 170static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n+ 171{\n+ 172 if (mtx->done) {\n+ 173 DeleteCriticalSection(&mtx->crit);\n+ 174 mtx->done = 0;\n+ 175 }\n+ 176}\n+ 177\n+ 178#define TDS_HAVE_MUTEX 1\n+ 179\n+ 180/* easy way, only single signal supported */\n+ 181typedef void *TDS_CONDITION_VARIABLE;\n+ 182typedef union {\n+ 183 HANDLE ev;\n+ 184 TDS_CONDITION_VARIABLE cv;\n+ 185} tds_condition;\n+ 186\n+ 187extern int (*tds_raw_cond_init)(tds_condition *cond);\n+ 188extern int (*tds_raw_cond_destroy)(tds_condition *cond);\n+ 189extern int (*tds_raw_cond_signal)(tds_condition *cond);\n+ 190extern int (*tds_raw_cond_timedwait)(tds_condition *cond, tds_raw_mutex\n+*mtx, int timeout_sec);\n+ 191static inline int tds_raw_cond_wait(tds_condition *cond, tds_raw_mutex\n+*mtx)\n+ 192{\n+ 193 return tds_raw_cond_timedwait(cond, mtx, -1);\n+ 194}\n+ 195\n+ 196typedef HANDLE tds_thread;\n+ 197typedef DWORD tds_thread_id;\n+ 198typedef DWORD (WINAPI *tds_thread_proc)(void *arg);\n+ 199#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n+ 200 DWORD WINAPI name(void *arg)\n+ 201#define TDS_THREAD_RESULT(n) ((DWORD)(int)(n))\n+ 202\n+ 203static inline int tds_thread_create(tds_thread *ret, tds_thread_proc proc,\n+void *arg)\n+ 204{\n+ 205 *ret = CreateThread(NULL, 0, proc, arg, 0, NULL);\n+ 206 return *ret != NULL ? 0 : 11 /* EAGAIN */;\n+ 207}\n+ 208\n+ 209static inline int tds_thread_create_detached(tds_thread_proc proc, void\n+*arg)\n+ 210{\n+ 211 HANDLE h = CreateThread(NULL, 0, proc, arg, 0, NULL);\n+ 212 if (h)\n+ 213 return 0;\n+ 214 CloseHandle(h);\n+ 215 return 11 /* EAGAIN */;\n+ 216}\n+ 217\n+ 218static inline int tds_thread_join(tds_thread th, void **ret)\n+ 219{\n+ 220 if (WaitForSingleObject(th, INFINITE) == WAIT_OBJECT_0) {\n+ 221 if (ret) {\n+ 222 DWORD r;\n+ 223 if (!GetExitCodeThread(th, &r))\n+ 224 r = 0xffffffffu;\n+ 225 *ret = (void*) (((char*)0) + r);\n+ 226 }\n+ 227\n+ 228 CloseHandle(th);\n+ 229 return 0;\n+ 230 }\n+ 231 CloseHandle(th);\n+ 232 return 22 /* EINVAL */;\n+ 233}\n+ 234\n+ 235static inline tds_thread_id tds_thread_get_current_id(void)\n+ 236{\n+ 237 return GetCurrentThreadId();\n+ 238}\n+ 239\n+ 240static inline int tds_thread_is_current(tds_thread_id th)\n+ 241{\n+ 242 return th == GetCurrentThreadId();\n+ 243}\n+ 244\n+ 245#else\n+ 246\n+ 247#include \n+ 248\n+ 249/* define noops as \"successful\" */\n+250typedef struct {\n+ 251 char dummy[0]; /* compiler compatibility */\n+ 252} tds_raw_mutex;\n+ 253\n+ 254#define TDS_RAW_MUTEX_INITIALIZER {}\n+ 255\n+ 256static inline void tds_raw_mutex_lock(tds_raw_mutex *mtx)\n+ 257{\n+ 258}\n+ 259\n+ 260static inline int tds_raw_mutex_trylock(tds_raw_mutex *mtx)\n+ 261{\n+ 262 return 0;\n+ 263}\n+ 264\n+ 265static inline void tds_raw_mutex_unlock(tds_raw_mutex *mtx)\n+ 266{\n+ 267}\n+ 268\n+ 269static inline int tds_raw_mutex_init(tds_raw_mutex *mtx)\n+ 270{\n+ 271 return 0;\n+ 272}\n+ 273\n+ 274static inline void tds_raw_mutex_free(tds_raw_mutex *mtx)\n+ 275{\n+ 276}\n+ 277\n+278typedef struct {\n+ 279 char dummy[0]; /* compiler compatibility */\n+ 280} tds_condition;\n+ 281\n+ 282static inline int tds_raw_cond_init(tds_condition *cond)\n+ 283{\n+ 284 return 0;\n+ 285}\n+ 286static inline int tds_raw_cond_destroy(tds_condition *cond)\n+ 287{\n+ 288 return 0;\n+ 289}\n+ 290#define tds_raw_cond_signal(cond) \\\n+ 291 FreeTDS_Condition_not_compiled\n+ 292\n+ 293#define tds_raw_cond_wait(cond, mtx) \\\n+ 294 FreeTDS_Condition_not_compiled\n+ 295\n+ 296#define tds_raw_cond_timedwait(cond, mtx, timeout_sec) \\\n+ 297 FreeTDS_Condition_not_compiled\n+ 298\n+299typedef struct {\n+ 300 char dummy[0]; /* compiler compatibility */\n+ 301} tds_thread;\n+ 302typedef int tds_thread_id;\n+ 303\n+ 304typedef void *(*tds_thread_proc)(void *arg);\n+ 305#define TDS_THREAD_PROC_DECLARE(name, arg) \\\n+ 306 void *name(void *arg)\n+ 307#define TDS_THREAD_RESULT(n) ((void*)(intptr_t)(n))\n+ 308\n+ 309#define tds_thread_create(ret, proc, arg) \\\n+ 310 FreeTDS_Thread_not_compiled\n+ 311\n+ 312#define tds_thread_create_detached(proc, arg) \\\n+ 313 FreeTDS_Thread_not_compiled\n+ 314\n+ 315#define tds_thread_join(th, ret) \\\n+ 316 FreeTDS_Thread_not_compiled\n+ 317\n+ 318static inline tds_thread_id tds_thread_get_current_id(void)\n+ 319{\n+ 320 return 0;\n+ 321}\n+ 322\n+ 323static inline int tds_thread_is_current(tds_thread_id th)\n+ 324{\n+ 325 return 1;\n+ 326}\n+ 327\n+ 328#endif\n+ 329\n+ 330# define tds_cond_init tds_raw_cond_init\n+ 331# define tds_cond_destroy tds_raw_cond_destroy\n+ 332# define tds_cond_signal tds_raw_cond_signal\n+ 333# if !ENABLE_EXTRA_CHECKS\n+ 334# define TDS_MUTEX_INITIALIZER TDS_RAW_MUTEX_INITIALIZER\n+ 335# define tds_mutex tds_raw_mutex\n+ 336# define tds_mutex_lock tds_raw_mutex_lock\n+ 337# define tds_mutex_trylock tds_raw_mutex_trylock\n+ 338# define tds_mutex_unlock tds_raw_mutex_unlock\n+ 339# define tds_mutex_check_owned(mtx) do {} while(0)\n+ 340# define tds_mutex_init tds_raw_mutex_init\n+ 341# define tds_mutex_free tds_raw_mutex_free\n+ 342# define tds_cond_wait tds_raw_cond_wait\n+ 343# define tds_cond_timedwait tds_raw_cond_timedwait\n+ 344# else\n+ 345# include \n+ 346\n+ 347typedef struct tds_mutex\n+ 348{\n+ 349 tds_raw_mutex mtx;\n+ 350 volatile int locked;\n+ 351 volatile tds_thread_id locked_by;\n+ 352} tds_mutex;\n+ 353\n+ 354# define TDS_MUTEX_INITIALIZER { TDS_RAW_MUTEX_INITIALIZER, 0 }\n+ 355\n+ 356static inline void tds_mutex_lock(tds_mutex *mtx)\n+ 357{\n+ 358 assert(mtx);\n+ 359 tds_raw_mutex_lock(&mtx->mtx);\n+ 360 assert(!mtx->locked);\n+ 361 mtx->locked = 1;\n+ 362 mtx->locked_by = tds_thread_get_current_id();\n+ 363}\n+ 364\n+ 365static inline int tds_mutex_trylock(tds_mutex *mtx)\n+ 366{\n+ 367 int ret;\n+ 368 assert(mtx);\n+ 369 ret = tds_raw_mutex_trylock(&mtx->mtx);\n+ 370 if (!ret) {\n+ 371 assert(!mtx->locked);\n+ 372 mtx->locked = 1;\n+ 373 mtx->locked_by = tds_thread_get_current_id();\n+ 374 }\n+ 375 return ret;\n+ 376}\n+ 377\n+ 378static inline void tds_mutex_unlock(tds_mutex *mtx)\n+ 379{\n+ 380 assert(mtx && mtx->locked);\n+ 381 mtx->locked = 0;\n+ 382 tds_raw_mutex_unlock(&mtx->mtx);\n+ 383}\n+ 384\n+ 385static inline void tds_mutex_check_owned(tds_mutex *mtx)\n+ 386{\n+ 387 int ret;\n+ 388 assert(mtx);\n+ 389 ret = tds_raw_mutex_trylock(&mtx->mtx);\n+ 390 assert(ret);\n+ 391 assert(mtx->locked);\n+ 392 assert(tds_thread_is_current(mtx->locked_by));\n+ 393}\n+ 394\n+ 395static inline int tds_mutex_init(tds_mutex *mtx)\n+ 396{\n+ 397 mtx->locked = 0;\n+ 398 return tds_raw_mutex_init(&mtx->mtx);\n+ 399}\n+ 400\n+ 401static inline void tds_mutex_free(tds_mutex *mtx)\n+ 402{\n+ 403 assert(mtx && !mtx->locked);\n+ 404 tds_raw_mutex_free(&mtx->mtx);\n+ 405}\n+ 406\n+ 407static inline int tds_cond_wait(tds_condition *cond, tds_mutex *mtx)\n+ 408{\n+ 409 int ret;\n+ 410 assert(mtx && mtx->locked);\n+ 411 mtx->locked = 0;\n+ 412 ret = tds_raw_cond_wait(cond, &mtx->mtx);\n+ 413 mtx->locked = 1;\n+ 414 mtx->locked_by = tds_thread_get_current_id();\n+ 415 return ret;\n+ 416}\n+ 417\n+ 418static inline int tds_cond_timedwait(tds_condition *cond, tds_mutex *mtx,\n+int timeout_sec)\n+ 419{\n+ 420 int ret;\n+ 421 assert(mtx && mtx->locked);\n+ 422 mtx->locked = 0;\n+ 423 ret = tds_raw_cond_timedwait(cond, &mtx->mtx, timeout_sec);\n+ 424 mtx->locked = 1;\n+ 425 mtx->locked_by = tds_thread_get_current_id();\n+ 426 return ret;\n+ 427}\n+ 428\n+ 429# endif\n+ 430\n+ 431#endif\n+ptw32_mcs_node_t_\n+Definition ptw32_MCS_lock.c:98\n+tds_raw_mutex\n+Definition thread.h:250\n+tds_condition\n+Definition thread.h:278\n+tds_thread\n+Definition thread.h:299\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00440_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00440_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/proto.h Source File\n+FreeTDS API: include/freetds/utils.h Source File\n \n \n \n \n \n \n \n@@ -74,577 +74,72 @@\n \n
    \n \n
    \n \n
    \n-
    proto.h
    \n+
    utils.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n-
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n-
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    21/*
    \n-
    22 * This file contains defines and structures strictly related to TDS protocol
    \n-
    23 */
    \n-
    24
    \n-
    \n-
    25typedef struct tdsnumeric
    \n-
    26{
    \n-
    27 unsigned char precision;
    \n-
    28 unsigned char scale;
    \n-
    29 unsigned char array[33];
    \n-\n-
    \n+
    2 * Copyright (C) 2016 Frediano Ziglio
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef _freetds_utils_h_
    \n+
    21#define _freetds_utils_h_
    \n+
    22
    \n+
    23#if HAVE_STDDEF_H
    \n+
    24#include <stddef.h>
    \n+
    25#endif /* HAVE_STDDEF_H */
    \n+
    26
    \n+
    27#include <freetds/time.h>
    \n+
    28#include <freetds/sysdep_private.h>
    \n+
    29
    \n+
    30#include <freetds/pushvis.h>
    \n
    31
    \n-
    \n-
    32typedef struct tdsoldmoney
    \n-
    33{
    \n-
    34 TDS_INT mnyhigh;
    \n-
    35 TDS_UINT mnylow;
    \n-\n-
    \n-
    37
    \n-
    \n-
    38typedef union tdsmoney
    \n-
    39{
    \n-\n-
    41 TDS_INT8 mny;
    \n-
    42} TDS_MONEY;
    \n-
    \n-
    43
    \n-
    \n-
    44typedef struct tdsmoney4
    \n-
    45{
    \n-
    46 TDS_INT mny4;
    \n-\n-
    \n-
    48
    \n-
    \n-
    49typedef struct tdsdatetime
    \n-
    50{
    \n-
    51 TDS_INT dtdays;
    \n-
    52 TDS_INT dttime;
    \n-\n-
    \n-
    54
    \n-
    \n-
    55typedef struct tdsdatetime4
    \n-
    56{
    \n-
    57 TDS_USMALLINT days;
    \n-
    58 TDS_USMALLINT minutes;
    \n-\n-
    \n-
    60
    \n-
    \n-
    61typedef struct tdsunique
    \n-
    62{
    \n-
    63 TDS_UINT Data1;
    \n-
    64 TDS_USMALLINT Data2;
    \n-
    65 TDS_USMALLINT Data3;
    \n-
    66 TDS_UCHAR Data4[8];
    \n-\n-
    \n-
    68
    \n-
    69typedef TDS_INT TDS_DATE;
    \n-
    70typedef TDS_INT TDS_TIME;
    \n-
    71
    \n-
    72typedef TDS_UINT8 TDS_BIGTIME;
    \n-
    73typedef TDS_UINT8 TDS_BIGDATETIME;
    \n-
    74
    \n-
    75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */
    \n-
    76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */
    \n-
    77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */
    \n-
    78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */
    \n-
    79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */
    \n-
    80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */
    \n-
    81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */
    \n-
    82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */
    \n-
    83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */
    \n-
    84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */
    \n-
    85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */
    \n-
    86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */
    \n-
    87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */
    \n-
    88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */
    \n-
    89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */
    \n-
    90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */
    \n-
    91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */
    \n-
    92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */
    \n-
    93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */
    \n-
    94#define TDS_ERROR_TOKEN 170 /* 0xAA */
    \n-
    95#define TDS_INFO_TOKEN 171 /* 0xAB */
    \n-
    96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */
    \n-
    97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */
    \n-
    98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \\
    \n-
    99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */
    \n-
    100#define TDS_ROW_TOKEN 209 /* 0xD1 */
    \n-
    101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */
    \n-
    102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */
    \n-
    103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */
    \n-
    104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */
    \n-
    105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */
    \n-
    106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */
    \n-
    107#define TDS_EED_TOKEN 229 /* 0xE5 */
    \n-
    108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */
    \n-
    109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */
    \n-
    110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */
    \n-
    111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */
    \n-
    112#define TDS_RESULT_TOKEN 238 /* 0xEE */
    \n-
    113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */
    \n-
    114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */
    \n-
    115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */
    \n-
    116
    \n-
    117/* CURSOR support: TDS 5.0 only*/
    \n-
    118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */
    \n-
    119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */
    \n-
    120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */
    \n-
    121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */
    \n-
    122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */
    \n-
    123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */
    \n-
    124
    \n-
    125
    \n-
    126/* environment type field */
    \n-
    127#define TDS_ENV_DATABASE 1
    \n-
    128#define TDS_ENV_LANG 2
    \n-
    129#define TDS_ENV_CHARSET 3
    \n-
    130#define TDS_ENV_PACKSIZE 4
    \n-
    131#define TDS_ENV_LCID 5
    \n-
    132#define TDS_ENV_SQLCOLLATION 7
    \n-
    133#define TDS_ENV_BEGINTRANS 8
    \n-
    134#define TDS_ENV_COMMITTRANS 9
    \n-
    135#define TDS_ENV_ROLLBACKTRANS 10
    \n-
    136#define TDS_ENV_ROUTING 20
    \n-
    137
    \n-
    138/* Microsoft internal stored procedure id's */
    \n-
    139#define TDS_SP_CURSOR 1
    \n-
    140#define TDS_SP_CURSOROPEN 2
    \n-
    141#define TDS_SP_CURSORPREPARE 3
    \n-
    142#define TDS_SP_CURSOREXECUTE 4
    \n-
    143#define TDS_SP_CURSORPREPEXEC 5
    \n-
    144#define TDS_SP_CURSORUNPREPARE 6
    \n-
    145#define TDS_SP_CURSORFETCH 7
    \n-
    146#define TDS_SP_CURSOROPTION 8
    \n-
    147#define TDS_SP_CURSORCLOSE 9
    \n-
    148#define TDS_SP_EXECUTESQL 10
    \n-
    149#define TDS_SP_PREPARE 11
    \n-
    150#define TDS_SP_EXECUTE 12
    \n-
    151#define TDS_SP_PREPEXEC 13
    \n-
    152#define TDS_SP_PREPEXECRPC 14
    \n-
    153#define TDS_SP_UNPREPARE 15
    \n-
    154
    \n-
    155/*
    \n-
    156 * <rant> Sybase does an awful job of this stuff, non null ints of size 1 2
    \n-
    157 * and 4 have there own codes but nullable ints are lumped into INTN
    \n-
    158 * sheesh! </rant>
    \n-
    159 */
    \n-
    160typedef enum
    \n-
    161{
    \n-
    162 SYBCHAR = 47, /* 0x2F */
    \n-
    163 SYBVARCHAR = 39, /* 0x27 */
    \n-
    164 SYBINTN = 38, /* 0x26 */
    \n-
    165 SYBINT1 = 48, /* 0x30 */
    \n-
    166 SYBINT2 = 52, /* 0x34 */
    \n-
    167 SYBINT4 = 56, /* 0x38 */
    \n-
    168 SYBFLT8 = 62, /* 0x3E */
    \n-
    169 SYBDATETIME = 61, /* 0x3D */
    \n-
    170 SYBBIT = 50, /* 0x32 */
    \n-
    171 SYBTEXT = 35, /* 0x23 */
    \n-
    172 SYBNTEXT = 99, /* 0x63 */
    \n-
    173 SYBIMAGE = 34, /* 0x22 */
    \n-
    174 SYBMONEY4 = 122, /* 0x7A */
    \n-
    175 SYBMONEY = 60, /* 0x3C */
    \n-
    176 SYBDATETIME4 = 58, /* 0x3A */
    \n-
    177 SYBREAL = 59, /* 0x3B */
    \n-
    178 SYBBINARY = 45, /* 0x2D */
    \n-
    179 SYBVOID = 31, /* 0x1F */
    \n-
    180 SYBVARBINARY = 37, /* 0x25 */
    \n-
    181 SYBBITN = 104, /* 0x68 */
    \n-
    182 SYBNUMERIC = 108, /* 0x6C */
    \n-
    183 SYBDECIMAL = 106, /* 0x6A */
    \n-
    184 SYBFLTN = 109, /* 0x6D */
    \n-
    185 SYBMONEYN = 110, /* 0x6E */
    \n-
    186 SYBDATETIMN = 111, /* 0x6F */
    \n-
    187
    \n-
    188/*
    \n-
    189 * MS only types
    \n-
    190 */
    \n-
    191 SYBNVARCHAR = 103, /* 0x67 */
    \n-
    192 SYBINT8 = 127, /* 0x7F */
    \n-
    193 XSYBCHAR = 175, /* 0xAF */
    \n-
    194 XSYBVARCHAR = 167, /* 0xA7 */
    \n-
    195 XSYBNVARCHAR = 231, /* 0xE7 */
    \n-
    196 XSYBNCHAR = 239, /* 0xEF */
    \n-
    197 XSYBVARBINARY = 165, /* 0xA5 */
    \n-
    198 XSYBBINARY = 173, /* 0xAD */
    \n-
    199 SYBUNIQUE = 36, /* 0x24 */
    \n-
    200 SYBVARIANT = 98, /* 0x62 */
    \n-
    201 SYBMSUDT = 240, /* 0xF0 */
    \n-
    202 SYBMSXML = 241, /* 0xF1 */
    \n-
    203 SYBMSDATE = 40, /* 0x28 */
    \n-
    204 SYBMSTIME = 41, /* 0x29 */
    \n-
    205 SYBMSDATETIME2 = 42, /* 0x2a */
    \n-
    206 SYBMSDATETIMEOFFSET = 43,/* 0x2b */
    \n-
    207
    \n-
    208/*
    \n-
    209 * Sybase only types
    \n-
    210 */
    \n-
    211 SYBLONGBINARY = 225, /* 0xE1 */
    \n-
    212 SYBUINT1 = 64, /* 0x40 */
    \n-
    213 SYBUINT2 = 65, /* 0x41 */
    \n-
    214 SYBUINT4 = 66, /* 0x42 */
    \n-
    215 SYBUINT8 = 67, /* 0x43 */
    \n-
    216 SYBBLOB = 36, /* 0x24 */
    \n-
    217 SYBBOUNDARY = 104, /* 0x68 */
    \n-
    218 SYBDATE = 49, /* 0x31 */
    \n-
    219 SYBDATEN = 123, /* 0x7B */
    \n-
    220 SYB5INT8 = 191, /* 0xBF */
    \n-
    221 SYBINTERVAL = 46, /* 0x2E */
    \n-
    222 SYBLONGCHAR = 175, /* 0xAF */
    \n-
    223 SYBSENSITIVITY = 103, /* 0x67 */
    \n-
    224 SYBSINT1 = 176, /* 0xB0 */
    \n-
    225 SYBTIME = 51, /* 0x33 */
    \n-
    226 SYBTIMEN = 147, /* 0x93 */
    \n-
    227 SYBUINTN = 68, /* 0x44 */
    \n-
    228 SYBUNITEXT = 174, /* 0xAE */
    \n-
    229 SYBXML = 163, /* 0xA3 */
    \n-
    230 SYB5BIGDATETIME = 187, /* 0xBB */
    \n-
    231 SYB5BIGTIME = 188, /* 0xBC */
    \n-
    232
    \n-
    233} TDS_SERVER_TYPE;
    \n-
    234
    \n-
    235typedef enum
    \n-
    236{
    \n-
    237 USER_UNICHAR_TYPE = 34, /* 0x22 */
    \n-
    238 USER_UNIVARCHAR_TYPE = 35 /* 0x23 */
    \n-
    239} TDS_USER_TYPE;
    \n-
    240
    \n-
    241/* compute operator */
    \n-
    242#define SYBAOPCNT 75 /* 0x4B */
    \n-
    243#define SYBAOPCNTU 76 /* 0x4C, obsolete */
    \n-
    244#define SYBAOPSUM 77 /* 0x4D */
    \n-
    245#define SYBAOPSUMU 78 /* 0x4E, obsolete */
    \n-
    246#define SYBAOPAVG 79 /* 0x4F */
    \n-
    247#define SYBAOPAVGU 80 /* 0x50, obsolete */
    \n-
    248#define SYBAOPMIN 81 /* 0x51 */
    \n-
    249#define SYBAOPMAX 82 /* 0x52 */
    \n-
    250
    \n-
    251/* mssql2k compute operator */
    \n-
    252#define SYBAOPCNT_BIG 9 /* 0x09 */
    \n-
    253#define SYBAOPSTDEV 48 /* 0x30 */
    \n-
    254#define SYBAOPSTDEVP 49 /* 0x31 */
    \n-
    255#define SYBAOPVAR 50 /* 0x32 */
    \n-
    256#define SYBAOPVARP 51 /* 0x33 */
    \n-
    257#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */
    \n-
    258
    \n-
    262typedef enum
    \n-
    263{
    \n-
    264 TDS_OPT_SET = 1
    \n-
    265 , TDS_OPT_DEFAULT = 2
    \n-
    266 , TDS_OPT_LIST = 3
    \n-
    267 , TDS_OPT_INFO = 4
    \n-
    268} TDS_OPTION_CMD;
    \n-
    269
    \n-
    270typedef enum
    \n-
    271{
    \n-
    272 TDS_OPT_DATEFIRST = 1 /* 0x01 */
    \n-
    273 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */
    \n-
    274 , TDS_OPT_STAT_TIME = 3 /* 0x03 */
    \n-
    275 , TDS_OPT_STAT_IO = 4 /* 0x04 */
    \n-
    276 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */
    \n-
    277 , TDS_OPT_NATLANG = 6 /* 0x06 */
    \n-
    278 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */
    \n-
    279 , TDS_OPT_ISOLATION = 8 /* 0x08 */
    \n-
    280 , TDS_OPT_AUTHON = 9 /* 0x09 */
    \n-
    281 , TDS_OPT_CHARSET = 10 /* 0x0a */
    \n-
    282 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */
    \n-
    283 , TDS_OPT_NOEXEC = 14 /* 0x0e */
    \n-
    284 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */
    \n-
    285 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */
    \n-
    286 , TDS_OPT_PARSEONLY = 18 /* 0x12 */
    \n-
    287 , TDS_OPT_GETDATA = 20 /* 0x14 */
    \n-
    288 , TDS_OPT_NOCOUNT = 21 /* 0x15 */
    \n-
    289 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */
    \n-
    290 , TDS_OPT_FORMATONLY = 24 /* 0x18 */
    \n-
    291 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */
    \n-
    292 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */
    \n-
    293 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */
    \n-
    294 , TDS_OPT_RESTREES = 28 /* 0x1c */
    \n-
    295 , TDS_OPT_IDENTITYON = 29 /* 0x1d */
    \n-
    296 , TDS_OPT_CURREAD = 30 /* 0x1e */
    \n-
    297 , TDS_OPT_CURWRITE = 31 /* 0x1f */
    \n-
    298 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */
    \n-
    299 , TDS_OPT_AUTHOFF = 33 /* 0x21 */
    \n-
    300 , TDS_OPT_ANSINULL = 34 /* 0x22 */
    \n-
    301 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */
    \n-
    302 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */
    \n-
    303 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */
    \n-
    304 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */
    \n-
    305} TDS_OPTION;
    \n-
    306
    \n-
    307enum {
    \n-
    308 TDS_OPT_ARITHOVERFLOW = 0x01,
    \n-
    309 TDS_OPT_NUMERICTRUNC = 0x02
    \n-
    310};
    \n-
    311
    \n-
    312enum TDS_OPT_DATEFIRST_CHOICE
    \n-
    313{
    \n-
    314 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =
    \n-
    315 6, TDS_OPT_SUNDAY = 7
    \n-
    316};
    \n-
    317
    \n-
    318enum TDS_OPT_DATEFORMAT_CHOICE
    \n-
    319{
    \n-
    320 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
    \n-
    321};
    \n-
    322enum TDS_OPT_ISOLATION_CHOICE
    \n-
    323{
    \n-
    324 TDS_OPT_LEVEL0 = 0,
    \n-
    325 TDS_OPT_LEVEL1 = 1,
    \n-
    326 TDS_OPT_LEVEL2 = 2,
    \n-
    327 TDS_OPT_LEVEL3 = 3
    \n-
    328};
    \n-
    329
    \n-
    330
    \n-
    331typedef enum tds_packet_type
    \n-
    332{
    \n-
    333 TDS_QUERY = 1,
    \n-
    334 TDS_LOGIN = 2,
    \n-
    335 TDS_RPC = 3,
    \n-
    336 TDS_REPLY = 4,
    \n-
    337 TDS_CANCEL = 6,
    \n-
    338 TDS_BULK = 7,
    \n-
    339 TDS7_TRANS = 14, /* transaction management */
    \n-
    340 TDS_NORMAL = 15,
    \n-
    341 TDS7_LOGIN = 16,
    \n-
    342 TDS7_AUTH = 17,
    \n-
    343 TDS71_PRELOGIN = 18,
    \n-
    344 TDS72_SMP = 0x53
    \n-
    345} TDS_PACKET_TYPE;
    \n-
    346
    \n-
    \n-
    350typedef struct
    \n-
    351{
    \n-
    352 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */
    \n-
    353 TDS_USMALLINT flags;
    \n-
    354 TDS_UCHAR charset_id; /* or zero */
    \n-\n-
    \n-
    356
    \n-
    \n-
    360typedef struct
    \n-
    361{
    \n-
    362 TDS_UCHAR signature; /* TDS72_SMP */
    \n-
    363 TDS_UCHAR type;
    \n-
    364 TDS_USMALLINT sid;
    \n-
    365 TDS_UINT size;
    \n-
    366 TDS_UINT seq;
    \n-
    367 TDS_UINT wnd;
    \n-\n-
    \n-
    369
    \n-
    370enum {
    \n-
    371 TDS_SMP_SYN = 1,
    \n-
    372 TDS_SMP_ACK = 2,
    \n-
    373 TDS_SMP_FIN = 4,
    \n-
    374 TDS_SMP_DATA = 8,
    \n-
    375};
    \n-
    376
    \n-
    377/* SF stands for "sort flag" */
    \n-
    378#define TDS_SF_BIN (TDS_USMALLINT) 0x100
    \n-
    379#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080
    \n-
    380#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040
    \n-
    381#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020
    \n-
    382#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010
    \n-
    383
    \n-
    384/* UT stands for user type */
    \n-
    385#define TDS_UT_TIMESTAMP 80
    \n-
    386
    \n-
    387
    \n-
    388/* mssql login options flags */
    \n-
    389enum option_flag1_values {
    \n-
    390 TDS_BYTE_ORDER_X86 = 0,
    \n-
    391 TDS_CHARSET_ASCII = 0,
    \n-
    392 TDS_DUMPLOAD_ON = 0,
    \n-
    393 TDS_FLOAT_IEEE_754 = 0,
    \n-
    394 TDS_INIT_DB_WARN = 0,
    \n-
    395 TDS_SET_LANG_OFF = 0,
    \n-
    396 TDS_USE_DB_SILENT = 0,
    \n-
    397 TDS_BYTE_ORDER_68000 = 0x01,
    \n-
    398 TDS_CHARSET_EBDDIC = 0x02,
    \n-
    399 TDS_FLOAT_VAX = 0x04,
    \n-
    400 TDS_FLOAT_ND5000 = 0x08,
    \n-
    401 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */
    \n-
    402 TDS_USE_DB_NOTIFY = 0x20,
    \n-
    403 TDS_INIT_DB_FATAL = 0x40,
    \n-
    404 TDS_SET_LANG_ON = 0x80
    \n-
    405};
    \n-
    406
    \n-
    407enum option_flag2_values {
    \n-
    408 TDS_INIT_LANG_WARN = 0,
    \n-
    409 TDS_INTEGRATED_SECURTY_OFF = 0,
    \n-
    410 TDS_ODBC_OFF = 0,
    \n-
    411 TDS_USER_NORMAL = 0, /* SQL Server login */
    \n-
    412 TDS_INIT_LANG_REQUIRED = 0x01,
    \n-
    413 TDS_ODBC_ON = 0x02,
    \n-
    414 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */
    \n-
    415 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */
    \n-
    416 TDS_USER_SERVER = 0x10, /* reserved */
    \n-
    417 TDS_USER_REMUSER = 0x20, /* DQ login */
    \n-
    418 TDS_USER_SQLREPL = 0x40, /* replication login */
    \n-
    419 TDS_INTEGRATED_SECURITY_ON = 0x80
    \n-
    420};
    \n-
    421
    \n-
    422enum option_flag3_values {
    \n-
    423 TDS_RESTRICTED_COLLATION = 0,
    \n-
    424 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */
    \n-
    425 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */
    \n-
    426 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */
    \n-
    427 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */
    \n-
    428 TDS_EXTENSION = 0x10, /* TDS 7.4 */
    \n-
    429};
    \n-
    430
    \n-
    431enum type_flags {
    \n-
    432 TDS_OLEDB_ON = 0x10,
    \n-
    433 TDS_READONLY_INTENT = 0x20,
    \n-
    434};
    \n-
    435
    \n-
    436/* Sybase dynamic types */
    \n-
    437enum dynamic_types {
    \n-
    438 TDS_DYN_PREPARE = 0x01,
    \n-
    439 TDS_DYN_EXEC = 0x02,
    \n-
    440 TDS_DYN_DEALLOC = 0x04,
    \n-
    441 TDS_DYN_EXEC_IMMED = 0x08,
    \n-
    442 TDS_DYN_PROCNAME = 0x10,
    \n-
    443 TDS_DYN_ACK = 0x20,
    \n-
    444 TDS_DYN_DESCIN = 0x40,
    \n-
    445 TDS_DYN_DESCOUT = 0x80,
    \n-
    446};
    \n-
    447
    \n-
    448/* http://jtds.sourceforge.net/apiCursors.html */
    \n-
    449/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits */
    \n-
    450enum {
    \n-
    451 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */
    \n-
    452 TDS_CUR_TYPE_DYNAMIC = 0x0002,
    \n-
    453 TDS_CUR_TYPE_FORWARD = 0x0004,
    \n-
    454 TDS_CUR_TYPE_STATIC = 0x0008,
    \n-
    455 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,
    \n-
    456 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,
    \n-
    457 TDS_CUR_TYPE_AUTO_FETCH = 0x2000
    \n-
    458};
    \n-
    459
    \n-
    460enum {
    \n-
    461 TDS_CUR_CONCUR_READ_ONLY = 1,
    \n-
    462 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,
    \n-
    463 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */
    \n-
    464 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8
    \n-
    465};
    \n-
    466
    \n-
    467/* TDS 4/5 login*/
    \n-
    468#define TDS_MAXNAME 30 /* maximum login name lenghts */
    \n-
    469#define TDS_PROGNLEN 10 /* maximum program lenght */
    \n-
    470#define TDS_PKTLEN 6 /* maximum packet lenght in login */
    \n-
    471
    \n-
    472/* TDS 5 login security flags */
    \n-
    473enum {
    \n-
    474 TDS5_SEC_LOG_ENCRYPT = 1,
    \n-
    475 TDS5_SEC_LOG_CHALLENGE = 2,
    \n-
    476 TDS5_SEC_LOG_LABELS = 4,
    \n-
    477 TDS5_SEC_LOG_APPDEFINED = 8,
    \n-
    478 TDS5_SEC_LOG_SECSESS = 16,
    \n-
    479 TDS5_SEC_LOG_ENCRYPT2 = 32,
    \n-
    480 TDS5_SEC_LOG_ENCRYPT3 = 128,
    \n-
    481};
    \n-
    482
    \n-
    484enum {
    \n-
    485 TDS5_MSG_SEC_ENCRYPT = 1,
    \n-
    486 TDS5_MSG_SEC_LOGPWD = 2,
    \n-
    487 TDS5_MSG_SEC_REMPWD = 3,
    \n-
    488 TDS5_MSG_SEC_CHALLENGE = 4,
    \n-
    489 TDS5_MSG_SEC_RESPONSE = 5,
    \n-
    490 TDS5_MSG_SEC_GETLABEL = 6,
    \n-
    491 TDS5_MSG_SEC_LABEL = 7,
    \n-
    492 TDS5_MSG_SQL_TBLNAME = 8,
    \n-
    493 TDS5_MSG_GW_RESERVED = 9,
    \n-
    494 TDS5_MSG_OMNI_CAPABILITIES = 10,
    \n-
    495 TDS5_MSG_SEC_OPAQUE = 11,
    \n-
    496 TDS5_MSG_HAFAILOVER = 12,
    \n-
    497 TDS5_MSG_EMPTY = 13,
    \n-
    500 TDS5_MSG_SEC_ENCRYPT2 = 14,
    \n-
    501 TDS5_MSG_SEC_LOGPWD2 = 15,
    \n-
    502 TDS5_MSG_SEC_SUP_CIPHER = 16,
    \n-
    503 TDS5_MSG_MIG_REQ = 17,
    \n-
    505 TDS5_MSG_MIG_SYNC = 18,
    \n-
    506 TDS5_MSG_MIG_CONT = 19,
    \n-
    507 TDS5_MSG_MIG_IGN = 20,
    \n-
    508 TDS5_MSG_MIG_FAIL = 21,
    \n-
    510 TDS5_MSG_SEC_REMPWD2 = 22,
    \n-
    511 TDS5_MSG_MIG_RESUME = 23,
    \n-
    512 TDS5_MSG_SEC_ENCRYPT3 = 30,
    \n-
    513 TDS5_MSG_SEC_LOGPWD3 = 31,
    \n-
    514 TDS5_MSG_SEC_REMPWD3 = 32,
    \n-
    515 TDS5_MSG_DR_MAP = 33,
    \n-
    516};
    \n-
    517
    \n-
    528enum {
    \n-
    529 TDS5_SEC_SECSESS = 1,
    \n-
    530 TDS5_SEC_FORWARD = 2,
    \n-
    531 TDS5_SEC_SIGN = 3,
    \n-
    532 TDS5_SEC_OTHER = 4,
    \n-
    533};
    \n-
    534
    \n-
    538enum {
    \n-
    539 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,
    \n-
    540 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,
    \n-
    541 TDS5_SEC_DELEGATION = 0x4,
    \n-
    542 TDS5_SEC_INTEGRITY = 0x8,
    \n-
    543 TDS5_SEC_CONFIDENTIALITY = 0x10,
    \n-
    544 TDS5_SEC_DETECT_REPLAY = 0x20,
    \n-
    545 TDS5_SEC_DETECT_SEQUENCE = 0x40,
    \n-
    546 TDS5_SEC_DATA_ORIGIN = 0x80,
    \n-
    547 TDS5_SEC_CHANNEL_BINDING = 0x100,
    \n-
    548};
    \n-
    549
    \n-
    550enum {
    \n-
    551 TDS5_SEC_VERSION = 50,
    \n-
    552};
    \n-
    553
    \n-
    554/* MS encryption byte (pre login) */
    \n-
    555enum {
    \n-
    556 TDS7_ENCRYPT_OFF,
    \n-
    557 TDS7_ENCRYPT_ON,
    \n-
    558 TDS7_ENCRYPT_NOT_SUP,
    \n-
    559 TDS7_ENCRYPT_REQ,
    \n-
    560};
    \n-
    Definition proto.h:26
    \n-
    Definition proto.h:33
    \n-
    Definition proto.h:39
    \n-
    Definition proto.h:45
    \n-
    Definition proto.h:50
    \n-
    Definition proto.h:56
    \n-
    Definition proto.h:62
    \n-
    TDS 7.1 collation informations.
    Definition proto.h:351
    \n-
    TDS 7.2 SMP packet header.
    Definition proto.h:361
    \n+
    32#ifdef __cplusplus
    \n+
    33extern "C" {
    \n+
    34#endif
    \n+
    35
    \n+
    36void tds_sleep_s(unsigned sec);
    \n+
    37void tds_sleep_ms(unsigned ms);
    \n+
    38
    \n+
    39char *tds_getpassarg(char *arg);
    \n+
    40
    \n+
    41char *tds_timestamp_str(char *str, int maxlen);
    \n+
    42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);
    \n+
    43int tds_getservice(const char *name);
    \n+
    44char *tds_get_homedir(void);
    \n+
    45
    \n+
    46int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);
    \n+
    47
    \n+
    48#ifdef __cplusplus
    \n+
    49}
    \n+
    50#endif
    \n+
    51
    \n+
    52#include <freetds/popvis.h>
    \n+
    53
    \n+
    54#endif
    \n+
    int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)
    Set socket to not throw SIGPIPE.
    Definition net.c:72
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,568 +7,69 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-proto.h\n+utils.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n- 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n- 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 21/*\n- 22 * This file contains defines and structures strictly related to TDS\n-protocol\n- 23 */\n- 24\n-25typedef struct tdsnumeric\n- 26{\n- 27 unsigned char precision;\n- 28 unsigned char scale;\n- 29 unsigned char array[33];\n- 30} TDS_NUMERIC;\n+ 2 * Copyright (C) 2016 Frediano Ziglio\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef _freetds_utils_h_\n+ 21#define _freetds_utils_h_\n+ 22\n+ 23#if HAVE_STDDEF_H\n+ 24#include \n+ 25#endif /* HAVE_STDDEF_H */\n+ 26\n+ 27#include \n+ 28#include \n+ 29\n+ 30#include \n 31\n-32typedef struct tdsoldmoney\n- 33{\n- 34 TDS_INT mnyhigh;\n- 35 TDS_UINT mnylow;\n- 36} TDS_OLD_MONEY;\n- 37\n-38typedef union tdsmoney\n- 39{\n- 40 TDS_OLD_MONEY tdsoldmoney;\n- 41 TDS_INT8 mny;\n- 42} TDS_MONEY;\n- 43\n-44typedef struct tdsmoney4\n- 45{\n- 46 TDS_INT mny4;\n- 47} TDS_MONEY4;\n- 48\n-49typedef struct tdsdatetime\n- 50{\n- 51 TDS_INT dtdays;\n- 52 TDS_INT dttime;\n- 53} TDS_DATETIME;\n- 54\n-55typedef struct tdsdatetime4\n- 56{\n- 57 TDS_USMALLINT days;\n- 58 TDS_USMALLINT minutes;\n- 59} TDS_DATETIME4;\n- 60\n-61typedef struct tdsunique\n- 62{\n- 63 TDS_UINT Data1;\n- 64 TDS_USMALLINT Data2;\n- 65 TDS_USMALLINT Data3;\n- 66 TDS_UCHAR Data4[8];\n- 67} TDS_UNIQUE;\n- 68\n- 69typedef TDS_INT TDS_DATE;\n- 70typedef TDS_INT TDS_TIME;\n- 71\n- 72typedef TDS_UINT8 TDS_BIGTIME;\n- 73typedef TDS_UINT8 TDS_BIGDATETIME;\n- 74\n- 75#define TDS5_PARAMFMT2_TOKEN 32 /* 0x20 */\n- 76#define TDS_LANGUAGE_TOKEN 33 /* 0x21 TDS 5.0 only */\n- 77#define TDS_ORDERBY2_TOKEN 34 /* 0x22 */\n- 78#define TDS_ROWFMT2_TOKEN 97 /* 0x61 TDS 5.0 only */\n- 79#define TDS_MSG_TOKEN 101 /* 0x65 TDS 5.0 only */\n- 80#define TDS_LOGOUT_TOKEN 113 /* 0x71 TDS 5.0 only? ct_close() */\n- 81#define TDS_RETURNSTATUS_TOKEN 121 /* 0x79 */\n- 82#define TDS_PROCID_TOKEN 124 /* 0x7C TDS 4.2 only - TDS_PROCID */\n- 83#define TDS7_RESULT_TOKEN 129 /* 0x81 TDS 7.0 only */\n- 84#define TDS7_COMPUTE_RESULT_TOKEN 136 /* 0x88 TDS 7.0 only */\n- 85#define TDS_COLNAME_TOKEN 160 /* 0xA0 TDS 4.2 only */\n- 86#define TDS_COLFMT_TOKEN 161 /* 0xA1 TDS 4.2 only - TDS_COLFMT */\n- 87#define TDS_DYNAMIC2_TOKEN 163 /* 0xA3 */\n- 88#define TDS_TABNAME_TOKEN 164 /* 0xA4 */\n- 89#define TDS_COLINFO_TOKEN 165 /* 0xA5 */\n- 90#define TDS_OPTIONCMD_TOKEN 166 /* 0xA6 */\n- 91#define TDS_COMPUTE_NAMES_TOKEN 167 /* 0xA7 */\n- 92#define TDS_COMPUTE_RESULT_TOKEN 168 /* 0xA8 */\n- 93#define TDS_ORDERBY_TOKEN 169 /* 0xA9 TDS_ORDER */\n- 94#define TDS_ERROR_TOKEN 170 /* 0xAA */\n- 95#define TDS_INFO_TOKEN 171 /* 0xAB */\n- 96#define TDS_PARAM_TOKEN 172 /* 0xAC RETURNVALUE? */\n- 97#define TDS_LOGINACK_TOKEN 173 /* 0xAD */\n- 98#define TDS_CONTROL_FEATUREEXTACK_TOKEN \\\n- 99 174 /* 0xAE TDS_CONTROL/TDS_FEATUREEXTACK */\n- 100#define TDS_ROW_TOKEN 209 /* 0xD1 */\n- 101#define TDS_NBC_ROW_TOKEN 210 /* 0xD2 as of TDS 7.3.B */\n- 102#define TDS_CMP_ROW_TOKEN 211 /* 0xD3 */\n- 103#define TDS5_PARAMS_TOKEN 215 /* 0xD7 TDS 5.0 only */\n- 104#define TDS_CAPABILITY_TOKEN 226 /* 0xE2 */\n- 105#define TDS_ENVCHANGE_TOKEN 227 /* 0xE3 */\n- 106#define TDS_SESSIONSTATE_TOKEN 228 /* 0xE4 TDS 7.4 */\n- 107#define TDS_EED_TOKEN 229 /* 0xE5 */\n- 108#define TDS_DBRPC_TOKEN 230 /* 0xE6 TDS 5.0 only */\n- 109#define TDS5_DYNAMIC_TOKEN 231 /* 0xE7 TDS 5.0 only */\n- 110#define TDS5_PARAMFMT_TOKEN 236 /* 0xEC TDS 5.0 only */\n- 111#define TDS_AUTH_TOKEN 237 /* 0xED TDS 7.0 only */\n- 112#define TDS_RESULT_TOKEN 238 /* 0xEE */\n- 113#define TDS_DONE_TOKEN 253 /* 0xFD TDS_DONE */\n- 114#define TDS_DONEPROC_TOKEN 254 /* 0xFE TDS_DONEPROC */\n- 115#define TDS_DONEINPROC_TOKEN 255 /* 0xFF TDS_DONEINPROC */\n- 116\n- 117/* CURSOR support: TDS 5.0 only*/\n- 118#define TDS_CURCLOSE_TOKEN 128 /* 0x80 TDS 5.0 only */\n- 119#define TDS_CURDELETE_TOKEN 129 /* 0x81 TDS 5.0 only */\n- 120#define TDS_CURFETCH_TOKEN 130 /* 0x82 TDS 5.0 only */\n- 121#define TDS_CURINFO_TOKEN 131 /* 0x83 TDS 5.0 only */\n- 122#define TDS_CUROPEN_TOKEN 132 /* 0x84 TDS 5.0 only */\n- 123#define TDS_CURDECLARE_TOKEN 134 /* 0x86 TDS 5.0 only */\n- 124\n- 125\n- 126/* environment type field */\n- 127#define TDS_ENV_DATABASE 1\n- 128#define TDS_ENV_LANG 2\n- 129#define TDS_ENV_CHARSET 3\n- 130#define TDS_ENV_PACKSIZE 4\n- 131#define TDS_ENV_LCID 5\n- 132#define TDS_ENV_SQLCOLLATION 7\n- 133#define TDS_ENV_BEGINTRANS 8\n- 134#define TDS_ENV_COMMITTRANS 9\n- 135#define TDS_ENV_ROLLBACKTRANS 10\n- 136#define TDS_ENV_ROUTING 20\n- 137\n- 138/* Microsoft internal stored procedure id's */\n- 139#define TDS_SP_CURSOR 1\n- 140#define TDS_SP_CURSOROPEN 2\n- 141#define TDS_SP_CURSORPREPARE 3\n- 142#define TDS_SP_CURSOREXECUTE 4\n- 143#define TDS_SP_CURSORPREPEXEC 5\n- 144#define TDS_SP_CURSORUNPREPARE 6\n- 145#define TDS_SP_CURSORFETCH 7\n- 146#define TDS_SP_CURSOROPTION 8\n- 147#define TDS_SP_CURSORCLOSE 9\n- 148#define TDS_SP_EXECUTESQL 10\n- 149#define TDS_SP_PREPARE 11\n- 150#define TDS_SP_EXECUTE 12\n- 151#define TDS_SP_PREPEXEC 13\n- 152#define TDS_SP_PREPEXECRPC 14\n- 153#define TDS_SP_UNPREPARE 15\n- 154\n- 155/*\n- 156 * Sybase does an awful job of this stuff, non null ints of size 1 2\n- 157 * and 4 have there own codes but nullable ints are lumped into INTN\n- 158 * sheesh! \n- 159 */\n- 160typedef enum\n- 161{\n- 162 SYBCHAR = 47, /* 0x2F */\n- 163 SYBVARCHAR = 39, /* 0x27 */\n- 164 SYBINTN = 38, /* 0x26 */\n- 165 SYBINT1 = 48, /* 0x30 */\n- 166 SYBINT2 = 52, /* 0x34 */\n- 167 SYBINT4 = 56, /* 0x38 */\n- 168 SYBFLT8 = 62, /* 0x3E */\n- 169 SYBDATETIME = 61, /* 0x3D */\n- 170 SYBBIT = 50, /* 0x32 */\n- 171 SYBTEXT = 35, /* 0x23 */\n- 172 SYBNTEXT = 99, /* 0x63 */\n- 173 SYBIMAGE = 34, /* 0x22 */\n- 174 SYBMONEY4 = 122, /* 0x7A */\n- 175 SYBMONEY = 60, /* 0x3C */\n- 176 SYBDATETIME4 = 58, /* 0x3A */\n- 177 SYBREAL = 59, /* 0x3B */\n- 178 SYBBINARY = 45, /* 0x2D */\n- 179 SYBVOID = 31, /* 0x1F */\n- 180 SYBVARBINARY = 37, /* 0x25 */\n- 181 SYBBITN = 104, /* 0x68 */\n- 182 SYBNUMERIC = 108, /* 0x6C */\n- 183 SYBDECIMAL = 106, /* 0x6A */\n- 184 SYBFLTN = 109, /* 0x6D */\n- 185 SYBMONEYN = 110, /* 0x6E */\n- 186 SYBDATETIMN = 111, /* 0x6F */\n- 187\n- 188/*\n- 189 * MS only types\n- 190 */\n- 191 SYBNVARCHAR = 103, /* 0x67 */\n- 192 SYBINT8 = 127, /* 0x7F */\n- 193 XSYBCHAR = 175, /* 0xAF */\n- 194 XSYBVARCHAR = 167, /* 0xA7 */\n- 195 XSYBNVARCHAR = 231, /* 0xE7 */\n- 196 XSYBNCHAR = 239, /* 0xEF */\n- 197 XSYBVARBINARY = 165, /* 0xA5 */\n- 198 XSYBBINARY = 173, /* 0xAD */\n- 199 SYBUNIQUE = 36, /* 0x24 */\n- 200 SYBVARIANT = 98, /* 0x62 */\n- 201 SYBMSUDT = 240, /* 0xF0 */\n- 202 SYBMSXML = 241, /* 0xF1 */\n- 203 SYBMSDATE = 40, /* 0x28 */\n- 204 SYBMSTIME = 41, /* 0x29 */\n- 205 SYBMSDATETIME2 = 42, /* 0x2a */\n- 206 SYBMSDATETIMEOFFSET = 43,/* 0x2b */\n- 207\n- 208/*\n- 209 * Sybase only types\n- 210 */\n- 211 SYBLONGBINARY = 225, /* 0xE1 */\n- 212 SYBUINT1 = 64, /* 0x40 */\n- 213 SYBUINT2 = 65, /* 0x41 */\n- 214 SYBUINT4 = 66, /* 0x42 */\n- 215 SYBUINT8 = 67, /* 0x43 */\n- 216 SYBBLOB = 36, /* 0x24 */\n- 217 SYBBOUNDARY = 104, /* 0x68 */\n- 218 SYBDATE = 49, /* 0x31 */\n- 219 SYBDATEN = 123, /* 0x7B */\n- 220 SYB5INT8 = 191, /* 0xBF */\n- 221 SYBINTERVAL = 46, /* 0x2E */\n- 222 SYBLONGCHAR = 175, /* 0xAF */\n- 223 SYBSENSITIVITY = 103, /* 0x67 */\n- 224 SYBSINT1 = 176, /* 0xB0 */\n- 225 SYBTIME = 51, /* 0x33 */\n- 226 SYBTIMEN = 147, /* 0x93 */\n- 227 SYBUINTN = 68, /* 0x44 */\n- 228 SYBUNITEXT = 174, /* 0xAE */\n- 229 SYBXML = 163, /* 0xA3 */\n- 230 SYB5BIGDATETIME = 187, /* 0xBB */\n- 231 SYB5BIGTIME = 188, /* 0xBC */\n- 232\n- 233} TDS_SERVER_TYPE;\n- 234\n- 235typedef enum\n- 236{\n- 237 USER_UNICHAR_TYPE = 34, /* 0x22 */\n- 238 USER_UNIVARCHAR_TYPE = 35 /* 0x23 */\n- 239} TDS_USER_TYPE;\n- 240\n- 241/* compute operator */\n- 242#define SYBAOPCNT 75 /* 0x4B */\n- 243#define SYBAOPCNTU 76 /* 0x4C, obsolete */\n- 244#define SYBAOPSUM 77 /* 0x4D */\n- 245#define SYBAOPSUMU 78 /* 0x4E, obsolete */\n- 246#define SYBAOPAVG 79 /* 0x4F */\n- 247#define SYBAOPAVGU 80 /* 0x50, obsolete */\n- 248#define SYBAOPMIN 81 /* 0x51 */\n- 249#define SYBAOPMAX 82 /* 0x52 */\n- 250\n- 251/* mssql2k compute operator */\n- 252#define SYBAOPCNT_BIG 9 /* 0x09 */\n- 253#define SYBAOPSTDEV 48 /* 0x30 */\n- 254#define SYBAOPSTDEVP 49 /* 0x31 */\n- 255#define SYBAOPVAR 50 /* 0x32 */\n- 256#define SYBAOPVARP 51 /* 0x33 */\n- 257#define SYBAOPCHECKSUM_AGG 114 /* 0x72 */\n- 258\n- 262typedef enum\n- 263{\n- 264 TDS_OPT_SET = 1\n- 265 , TDS_OPT_DEFAULT = 2\n- 266 , TDS_OPT_LIST = 3\n- 267 , TDS_OPT_INFO = 4\n- 268} TDS_OPTION_CMD;\n- 269\n- 270typedef enum\n- 271{\n- 272 TDS_OPT_DATEFIRST = 1 /* 0x01 */\n- 273 , TDS_OPT_TEXTSIZE = 2 /* 0x02 */\n- 274 , TDS_OPT_STAT_TIME = 3 /* 0x03 */\n- 275 , TDS_OPT_STAT_IO = 4 /* 0x04 */\n- 276 , TDS_OPT_ROWCOUNT = 5 /* 0x05 */\n- 277 , TDS_OPT_NATLANG = 6 /* 0x06 */\n- 278 , TDS_OPT_DATEFORMAT = 7 /* 0x07 */\n- 279 , TDS_OPT_ISOLATION = 8 /* 0x08 */\n- 280 , TDS_OPT_AUTHON = 9 /* 0x09 */\n- 281 , TDS_OPT_CHARSET = 10 /* 0x0a */\n- 282 , TDS_OPT_SHOWPLAN = 13 /* 0x0d */\n- 283 , TDS_OPT_NOEXEC = 14 /* 0x0e */\n- 284 , TDS_OPT_ARITHIGNOREON = 15 /* 0x0f */\n- 285 , TDS_OPT_ARITHABORTON = 17 /* 0x11 */\n- 286 , TDS_OPT_PARSEONLY = 18 /* 0x12 */\n- 287 , TDS_OPT_GETDATA = 20 /* 0x14 */\n- 288 , TDS_OPT_NOCOUNT = 21 /* 0x15 */\n- 289 , TDS_OPT_FORCEPLAN = 23 /* 0x17 */\n- 290 , TDS_OPT_FORMATONLY = 24 /* 0x18 */\n- 291 , TDS_OPT_CHAINXACTS = 25 /* 0x19 */\n- 292 , TDS_OPT_CURCLOSEONXACT = 26 /* 0x1a */\n- 293 , TDS_OPT_FIPSFLAG = 27 /* 0x1b */\n- 294 , TDS_OPT_RESTREES = 28 /* 0x1c */\n- 295 , TDS_OPT_IDENTITYON = 29 /* 0x1d */\n- 296 , TDS_OPT_CURREAD = 30 /* 0x1e */\n- 297 , TDS_OPT_CURWRITE = 31 /* 0x1f */\n- 298 , TDS_OPT_IDENTITYOFF = 32 /* 0x20 */\n- 299 , TDS_OPT_AUTHOFF = 33 /* 0x21 */\n- 300 , TDS_OPT_ANSINULL = 34 /* 0x22 */\n- 301 , TDS_OPT_QUOTED_IDENT = 35 /* 0x23 */\n- 302 , TDS_OPT_ARITHIGNOREOFF = 36 /* 0x24 */\n- 303 , TDS_OPT_ARITHABORTOFF = 37 /* 0x25 */\n- 304 , TDS_OPT_TRUNCABORT = 38 /* 0x26 */\n- 305} TDS_OPTION;\n- 306\n- 307enum {\n- 308 TDS_OPT_ARITHOVERFLOW = 0x01,\n- 309 TDS_OPT_NUMERICTRUNC = 0x02\n- 310};\n- 311\n- 312enum TDS_OPT_DATEFIRST_CHOICE\n- 313{\n- 314 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3,\n-TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =\n- 315 6, TDS_OPT_SUNDAY = 7\n- 316};\n- 317\n- 318enum TDS_OPT_DATEFORMAT_CHOICE\n- 319{\n- 320 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM\n-= 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6\n- 321};\n- 322enum TDS_OPT_ISOLATION_CHOICE\n- 323{\n- 324 TDS_OPT_LEVEL0 = 0,\n- 325 TDS_OPT_LEVEL1 = 1,\n- 326 TDS_OPT_LEVEL2 = 2,\n- 327 TDS_OPT_LEVEL3 = 3\n- 328};\n- 329\n- 330\n- 331typedef enum tds_packet_type\n- 332{\n- 333 TDS_QUERY = 1,\n- 334 TDS_LOGIN = 2,\n- 335 TDS_RPC = 3,\n- 336 TDS_REPLY = 4,\n- 337 TDS_CANCEL = 6,\n- 338 TDS_BULK = 7,\n- 339 TDS7_TRANS = 14, /* transaction management */\n- 340 TDS_NORMAL = 15,\n- 341 TDS7_LOGIN = 16,\n- 342 TDS7_AUTH = 17,\n- 343 TDS71_PRELOGIN = 18,\n- 344 TDS72_SMP = 0x53\n- 345} TDS_PACKET_TYPE;\n- 346\n-350typedef struct\n- 351{\n- 352 TDS_USMALLINT locale_id; /* master..syslanguages.lcid */\n- 353 TDS_USMALLINT flags;\n- 354 TDS_UCHAR charset_id; /* or zero */\n- 355} TDS71_COLLATION;\n- 356\n-360typedef struct\n- 361{\n- 362 TDS_UCHAR signature; /* TDS72_SMP */\n- 363 TDS_UCHAR type;\n- 364 TDS_USMALLINT sid;\n- 365 TDS_UINT size;\n- 366 TDS_UINT seq;\n- 367 TDS_UINT wnd;\n- 368} TDS72_SMP_HEADER;\n- 369\n- 370enum {\n- 371 TDS_SMP_SYN = 1,\n- 372 TDS_SMP_ACK = 2,\n- 373 TDS_SMP_FIN = 4,\n- 374 TDS_SMP_DATA = 8,\n- 375};\n- 376\n- 377/* SF stands for \"sort flag\" */\n- 378#define TDS_SF_BIN (TDS_USMALLINT) 0x100\n- 379#define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080\n- 380#define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040\n- 381#define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020\n- 382#define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010\n- 383\n- 384/* UT stands for user type */\n- 385#define TDS_UT_TIMESTAMP 80\n- 386\n- 387\n- 388/* mssql login options flags */\n- 389enum option_flag1_values {\n- 390 TDS_BYTE_ORDER_X86 = 0,\n- 391 TDS_CHARSET_ASCII = 0,\n- 392 TDS_DUMPLOAD_ON = 0,\n- 393 TDS_FLOAT_IEEE_754 = 0,\n- 394 TDS_INIT_DB_WARN = 0,\n- 395 TDS_SET_LANG_OFF = 0,\n- 396 TDS_USE_DB_SILENT = 0,\n- 397 TDS_BYTE_ORDER_68000 = 0x01,\n- 398 TDS_CHARSET_EBDDIC = 0x02,\n- 399 TDS_FLOAT_VAX = 0x04,\n- 400 TDS_FLOAT_ND5000 = 0x08,\n- 401 TDS_DUMPLOAD_OFF = 0x10, /* prevent BCP */\n- 402 TDS_USE_DB_NOTIFY = 0x20,\n- 403 TDS_INIT_DB_FATAL = 0x40,\n- 404 TDS_SET_LANG_ON = 0x80\n- 405};\n- 406\n- 407enum option_flag2_values {\n- 408 TDS_INIT_LANG_WARN = 0,\n- 409 TDS_INTEGRATED_SECURTY_OFF = 0,\n- 410 TDS_ODBC_OFF = 0,\n- 411 TDS_USER_NORMAL = 0, /* SQL Server login */\n- 412 TDS_INIT_LANG_REQUIRED = 0x01,\n- 413 TDS_ODBC_ON = 0x02,\n- 414 TDS_TRANSACTION_BOUNDARY71 = 0x04, /* removed in TDS 7.2 */\n- 415 TDS_CACHE_CONNECT71 = 0x08, /* removed in TDS 7.2 */\n- 416 TDS_USER_SERVER = 0x10, /* reserved */\n- 417 TDS_USER_REMUSER = 0x20, /* DQ login */\n- 418 TDS_USER_SQLREPL = 0x40, /* replication login */\n- 419 TDS_INTEGRATED_SECURITY_ON = 0x80\n- 420};\n- 421\n- 422enum option_flag3_values {\n- 423 TDS_RESTRICTED_COLLATION = 0,\n- 424 TDS_CHANGE_PASSWORD = 0x01, /* TDS 7.2 */\n- 425 TDS_SEND_YUKON_BINARY_XML = 0x02, /* TDS 7.2 */\n- 426 TDS_REQUEST_USER_INSTANCE = 0x04, /* TDS 7.2 */\n- 427 TDS_UNKNOWN_COLLATION_HANDLING = 0x08, /* TDS 7.3 */\n- 428 TDS_EXTENSION = 0x10, /* TDS 7.4 */\n- 429};\n- 430\n- 431enum type_flags {\n- 432 TDS_OLEDB_ON = 0x10,\n- 433 TDS_READONLY_INTENT = 0x20,\n- 434};\n- 435\n- 436/* Sybase dynamic types */\n- 437enum dynamic_types {\n- 438 TDS_DYN_PREPARE = 0x01,\n- 439 TDS_DYN_EXEC = 0x02,\n- 440 TDS_DYN_DEALLOC = 0x04,\n- 441 TDS_DYN_EXEC_IMMED = 0x08,\n- 442 TDS_DYN_PROCNAME = 0x10,\n- 443 TDS_DYN_ACK = 0x20,\n- 444 TDS_DYN_DESCIN = 0x40,\n- 445 TDS_DYN_DESCOUT = 0x80,\n- 446};\n- 447\n- 448/* http://jtds.sourceforge.net/apiCursors.html */\n- 449/* Cursor scroll option, must be one of 0x01 - 0x10, OR'd with other bits\n-*/\n- 450enum {\n- 451 TDS_CUR_TYPE_KEYSET = 0x0001, /* default */\n- 452 TDS_CUR_TYPE_DYNAMIC = 0x0002,\n- 453 TDS_CUR_TYPE_FORWARD = 0x0004,\n- 454 TDS_CUR_TYPE_STATIC = 0x0008,\n- 455 TDS_CUR_TYPE_FASTFORWARDONLY = 0x0010,\n- 456 TDS_CUR_TYPE_PARAMETERIZED = 0x1000,\n- 457 TDS_CUR_TYPE_AUTO_FETCH = 0x2000\n- 458};\n- 459\n- 460enum {\n- 461 TDS_CUR_CONCUR_READ_ONLY = 1,\n- 462 TDS_CUR_CONCUR_SCROLL_LOCKS = 2,\n- 463 TDS_CUR_CONCUR_OPTIMISTIC = 4, /* default */\n- 464 TDS_CUR_CONCUR_OPTIMISTIC_VALUES = 8\n- 465};\n- 466\n- 467/* TDS 4/5 login*/\n- 468#define TDS_MAXNAME 30 /* maximum login name lenghts */\n- 469#define TDS_PROGNLEN 10 /* maximum program lenght */\n- 470#define TDS_PKTLEN 6 /* maximum packet lenght in login */\n- 471\n- 472/* TDS 5 login security flags */\n- 473enum {\n- 474 TDS5_SEC_LOG_ENCRYPT = 1,\n- 475 TDS5_SEC_LOG_CHALLENGE = 2,\n- 476 TDS5_SEC_LOG_LABELS = 4,\n- 477 TDS5_SEC_LOG_APPDEFINED = 8,\n- 478 TDS5_SEC_LOG_SECSESS = 16,\n- 479 TDS5_SEC_LOG_ENCRYPT2 = 32,\n- 480 TDS5_SEC_LOG_ENCRYPT3 = 128,\n- 481};\n- 482\n- 484enum {\n- 485 TDS5_MSG_SEC_ENCRYPT = 1,\n- 486 TDS5_MSG_SEC_LOGPWD = 2,\n- 487 TDS5_MSG_SEC_REMPWD = 3,\n- 488 TDS5_MSG_SEC_CHALLENGE = 4,\n- 489 TDS5_MSG_SEC_RESPONSE = 5,\n- 490 TDS5_MSG_SEC_GETLABEL = 6,\n- 491 TDS5_MSG_SEC_LABEL = 7,\n- 492 TDS5_MSG_SQL_TBLNAME = 8,\n- 493 TDS5_MSG_GW_RESERVED = 9,\n- 494 TDS5_MSG_OMNI_CAPABILITIES = 10,\n- 495 TDS5_MSG_SEC_OPAQUE = 11,\n- 496 TDS5_MSG_HAFAILOVER = 12,\n- 497 TDS5_MSG_EMPTY = 13,\n- 500 TDS5_MSG_SEC_ENCRYPT2 = 14,\n- 501 TDS5_MSG_SEC_LOGPWD2 = 15,\n- 502 TDS5_MSG_SEC_SUP_CIPHER = 16,\n- 503 TDS5_MSG_MIG_REQ = 17,\n- 505 TDS5_MSG_MIG_SYNC = 18,\n- 506 TDS5_MSG_MIG_CONT = 19,\n- 507 TDS5_MSG_MIG_IGN = 20,\n- 508 TDS5_MSG_MIG_FAIL = 21,\n- 510 TDS5_MSG_SEC_REMPWD2 = 22,\n- 511 TDS5_MSG_MIG_RESUME = 23,\n- 512 TDS5_MSG_SEC_ENCRYPT3 = 30,\n- 513 TDS5_MSG_SEC_LOGPWD3 = 31,\n- 514 TDS5_MSG_SEC_REMPWD3 = 32,\n- 515 TDS5_MSG_DR_MAP = 33,\n- 516};\n- 517\n- 528enum {\n- 529 TDS5_SEC_SECSESS = 1,\n- 530 TDS5_SEC_FORWARD = 2,\n- 531 TDS5_SEC_SIGN = 3,\n- 532 TDS5_SEC_OTHER = 4,\n- 533};\n- 534\n- 538enum {\n- 539 TDS5_SEC_NETWORK_AUTHENTICATION = 0x1,\n- 540 TDS5_SEC_MUTUAL_AUTHENTICATION = 0x2,\n- 541 TDS5_SEC_DELEGATION = 0x4,\n- 542 TDS5_SEC_INTEGRITY = 0x8,\n- 543 TDS5_SEC_CONFIDENTIALITY = 0x10,\n- 544 TDS5_SEC_DETECT_REPLAY = 0x20,\n- 545 TDS5_SEC_DETECT_SEQUENCE = 0x40,\n- 546 TDS5_SEC_DATA_ORIGIN = 0x80,\n- 547 TDS5_SEC_CHANNEL_BINDING = 0x100,\n- 548};\n- 549\n- 550enum {\n- 551 TDS5_SEC_VERSION = 50,\n- 552};\n- 553\n- 554/* MS encryption byte (pre login) */\n- 555enum {\n- 556 TDS7_ENCRYPT_OFF,\n- 557 TDS7_ENCRYPT_ON,\n- 558 TDS7_ENCRYPT_NOT_SUP,\n- 559 TDS7_ENCRYPT_REQ,\n- 560};\n-tdsnumeric\n-Definition proto.h:26\n-tdsoldmoney\n-Definition proto.h:33\n-tdsmoney\n-Definition proto.h:39\n-tdsmoney4\n-Definition proto.h:45\n-tdsdatetime\n-Definition proto.h:50\n-tdsdatetime4\n-Definition proto.h:56\n-tdsunique\n-Definition proto.h:62\n-TDS71_COLLATION\n-TDS 7.1 collation informations.\n-Definition proto.h:351\n-TDS72_SMP_HEADER\n-TDS 7.2 SMP packet header.\n-Definition proto.h:361\n+ 32#ifdef __cplusplus\n+ 33extern \"C\" {\n+ 34#endif\n+ 35\n+ 36void tds_sleep_s(unsigned sec);\n+ 37void tds_sleep_ms(unsigned ms);\n+ 38\n+ 39char *tds_getpassarg(char *arg);\n+ 40\n+ 41char *tds_timestamp_str(char *str, int maxlen);\n+ 42struct tm *tds_localtime_r(const time_t *timep, struct tm *result);\n+ 43int tds_getservice(const char *name);\n+ 44char *tds_get_homedir(void);\n+ 45\n+ 46int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on);\n+ 47\n+ 48#ifdef __cplusplus\n+ 49}\n+ 50#endif\n+ 51\n+ 52#include \n+ 53\n+ 54#endif\n+tds_socket_set_nosigpipe\n+int tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on)\n+Set socket to not throw SIGPIPE.\n+Definition net.c:72\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00446_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00446_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/replacements.h Source File\n+FreeTDS API: include/freetds/utils/string.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n \n \n \n \n \n \n \n
    \n-
    replacements.h
    \n+
    string.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,195 +96,108 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _replacements_h_
    \n-
    21#define _replacements_h_
    \n+
    20#ifndef _tdsstring_h_
    \n+
    21#define _tdsstring_h_
    \n
    22
    \n-
    23#include <stdarg.h>
    \n-
    24#include "tds_sysdep_public.h"
    \n-
    25#include <freetds/sysdep_private.h>
    \n+
    23#include <freetds/macros.h>
    \n+
    24
    \n+
    25#include <freetds/pushvis.h>
    \n
    26
    \n-
    27#include <freetds/replacements/readpassphrase.h>
    \n-
    28
    \n-
    29/* these headers are needed for basename */
    \n-
    30#ifdef HAVE_STRING_H
    \n-
    31# include <string.h>
    \n-
    32#endif
    \n-
    33#ifdef HAVE_LIBGEN_H
    \n-
    34# include <libgen.h>
    \n-
    35#endif
    \n-
    36#ifdef HAVE_GETOPT_H
    \n-
    37# include <getopt.h>
    \n-
    38#endif
    \n-
    39
    \n-
    40#if !HAVE_POLL
    \n-\n-
    42#endif /* !HAVE_POLL */
    \n+
    \n+
    36typedef struct tds_dstr {
    \n+
    37 size_t dstr_size;
    \n+
    38 char dstr_s[1];
    \n+\n+
    \n+
    40
    \n+
    42extern const struct tds_dstr tds_str_empty;
    \n
    43
    \n-
    44#include <freetds/pushvis.h>
    \n-
    45
    \n-
    46#ifdef __cplusplus
    \n-
    47extern "C"
    \n-
    48{
    \n-
    49#endif
    \n+
    49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)
    \n
    50
    \n-
    51#if !HAVE_ASPRINTF
    \n-
    52#undef asprintf
    \n-
    53int tds_asprintf(char **ret, const char *fmt, ...);
    \n-
    54#define asprintf tds_asprintf
    \n-
    55#endif /* !HAVE_ASPRINTF */
    \n-
    56
    \n-
    57#if !HAVE_VASPRINTF
    \n-
    58#undef vasprintf
    \n-
    59int tds_vasprintf(char **ret, const char *fmt, va_list ap);
    \n-
    60#define vasprintf tds_vasprintf
    \n-
    61#endif /* !HAVE_VASPRINTF */
    \n-
    62
    \n-
    63#if !HAVE_STRTOK_R
    \n-
    64/* Some MinGW define strtok_r macro thread-safe but not reentrant but we
    \n-
    65 need both so avoid using the macro */
    \n-
    66#undef strtok_r
    \n-
    67#if defined(_WIN32) && HAVE_STRTOK_S
    \n-
    68#define strtok_r strtok_s
    \n-
    69#else
    \n-
    70char *tds_strtok_r(char *str, const char *sep, char **lasts);
    \n-
    71#define strtok_r tds_strtok_r
    \n-
    72#endif
    \n-
    73#endif /* !HAVE_STRTOK_R */
    \n-
    74
    \n-
    75#if !HAVE_STRSEP
    \n-
    76#undef strsep
    \n-
    77char *tds_strsep(char **stringp, const char *delim);
    \n-
    78#define strsep tds_strsep
    \n-
    79#endif /* !HAVE_STRSEP */
    \n-
    80
    \n-
    81#if !HAVE_STRLCPY
    \n-
    82size_t tds_strlcpy(char *dest, const char *src, size_t len);
    \n-
    83#undef strlcpy
    \n-
    84#define strlcpy(d,s,l) tds_strlcpy(d,s,l)
    \n-
    85#endif
    \n-
    86
    \n-
    87#if !HAVE_GETADDRINFO
    \n-
    \n-
    88typedef struct tds_addrinfo {
    \n-
    89 int ai_flags;
    \n-
    90 int ai_family;
    \n-
    91 int ai_socktype;
    \n-
    92 int ai_protocol;
    \n-
    93 size_t ai_addrlen;
    \n-
    94 struct sockaddr *ai_addr;
    \n-
    95 char *ai_canonname;
    \n-
    96 struct tds_addrinfo *ai_next;
    \n-\n-
    \n-
    98
    \n-
    99int tds_getaddrinfo(const char *node, const char *service, const struct tds_addrinfo *hints, struct tds_addrinfo **res);
    \n-
    100int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
    \n-
    101void tds_freeaddrinfo(struct tds_addrinfo *addr);
    \n-
    102#define addrinfo tds_addrinfo
    \n-
    103#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)
    \n-
    104#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)
    \n-
    105#define freeaddrinfo(a) tds_freeaddrinfo(a)
    \n-
    106#endif
    \n-
    107
    \n-
    108#ifndef AI_FQDN
    \n-
    109#define AI_FQDN 0
    \n-
    110#endif
    \n-
    111
    \n-
    112#if !HAVE_STRLCAT
    \n-
    113size_t tds_strlcat(char *dest, const char *src, size_t len);
    \n-
    114#undef strlcat
    \n-
    115#define strlcat(d,s,l) tds_strlcat(d,s,l)
    \n-
    116#endif
    \n-
    117
    \n-
    118#if !HAVE_BASENAME
    \n-
    119char *tds_basename(char *path);
    \n-
    120#define basename(path) tds_basename(path)
    \n-
    121#endif
    \n-
    122
    \n-
    123/*
    \n-
    124 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.
    \n-
    125 * Other Win32 C runtime libraries, notably MinGW, may define it.
    \n-
    126 * There is no symbol uniquely defined in Microsoft's header files that
    \n-
    127 * can be used by the preprocessor to know whether we're compiling for
    \n-
    128 * Microsoft's library or not (or which version). Thus there's no
    \n-
    129 * way to automatically decide whether or not to define strcasecmp
    \n-
    130 * in terms of stricmp.
    \n-
    131 *
    \n-
    132 * The Microsoft *compiler* defines _MSC_VER. On the assumption that
    \n-
    133 * anyone using their compiler is also using their library, the below
    \n-
    134 * tests check _MSC_VER as a proxy.
    \n-
    135 */
    \n-
    136#if defined(_WIN32)
    \n-
    137# if !defined(strcasecmp) && defined(_MSC_VER)
    \n-
    138# define strcasecmp(A, B) stricmp((A), (B))
    \n-
    139# endif
    \n-
    140# if !defined(strncasecmp) && defined(_MSC_VER)
    \n-
    141# define strncasecmp(x,y,z) strnicmp((x),(y),(z))
    \n-
    142# endif
    \n-
    143
    \n-
    144#undef gettimeofday
    \n-
    145int tds_gettimeofday (struct timeval *tv, void *tz);
    \n-
    146#define gettimeofday tds_gettimeofday
    \n-
    147
    \n-
    148/* Older MinGW-w64 versions don't define these flags. */
    \n-
    149#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)
    \n-
    150# define AI_ADDRCONFIG 0x00000400
    \n-
    151#endif
    \n-
    152#if defined(__MINGW32__) && !defined(AI_V4MAPPED)
    \n-
    153# define AI_V4MAPPED 0x00000800
    \n-
    154#endif
    \n-
    155
    \n-
    156#endif
    \n-
    157
    \n-
    158#if defined(_WIN32) && defined(_MSC_VER)
    \n-
    159#define tds_strtoll _strtoi64
    \n-
    160#else
    \n-
    161#define tds_strtoll strtoll
    \n-
    162#endif
    \n-
    163
    \n-
    164#if !HAVE_GETOPT
    \n-
    165#undef getopt
    \n-
    166int tds_getopt(int argc, char * const argv[], const char *optstring);
    \n-
    167#define getopt tds_getopt
    \n-
    168
    \n-
    169extern char *optarg;
    \n-
    170extern int optind, offset, opterr, optreset;
    \n-
    171#endif
    \n-
    172
    \n-
    173#if !HAVE_SOCKETPAIR
    \n-
    174int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv[2]);
    \n-
    175#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)
    \n-
    176#endif
    \n-
    177
    \n-
    178#if !HAVE_DAEMON
    \n-
    179int tds_daemon(int no_chdir, int no_close);
    \n-
    180#define daemon(d,c) tds_daemon(d,c)
    \n-
    181#endif
    \n-
    182
    \n-
    183#if !HAVE_SETENV
    \n-
    184int tds_setenv(const char *name, const char *value, int overwrite);
    \n-
    185#define setenv(n,v,o) tds_setenv(n,v,o)
    \n-
    186int tds_unsetenv(const char *name);
    \n-
    187#define unsetenv(n) tds_unsetenv(n)
    \n-
    188#endif
    \n-
    189
    \n-
    190#ifdef __cplusplus
    \n-
    191}
    \n-
    192#endif
    \n-
    193
    \n-
    194#include <freetds/popvis.h>
    \n-
    195
    \n-
    196#endif
    \n-
    Provide poll call where missing.
    \n-
    Definition replacements.h:88
    \n+
    52static inline void
    \n+
    \n+\n+
    54{
    \n+
    55 *(s) = DSTR_INITIALIZER;
    \n+
    56}
    \n+
    \n+
    57
    \n+
    59static inline int
    \n+
    \n+\n+
    61{
    \n+
    62 return (*s)->dstr_size == 0;
    \n+
    63}
    \n+
    \n+
    64
    \n+
    70static inline char *
    \n+
    \n+\n+
    72{
    \n+
    73 return (*s)->dstr_s;
    \n+
    74}
    \n+
    \n+
    75
    \n+
    77static inline const char *
    \n+
    \n+\n+
    79{
    \n+
    80 return (*s)->dstr_s;
    \n+
    81}
    \n+
    \n+
    82
    \n+
    84static inline size_t
    \n+
    \n+\n+
    86{
    \n+
    87 return (*s)->dstr_size;
    \n+
    88}
    \n+
    \n+
    89
    \n+
    \n+
    91#define tds_dstr_empty(s) \\
    \n+
    92 tds_dstr_free(s)
    \n+
    \n+
    93
    \n+
    94void tds_dstr_zero(DSTR * s);
    \n+
    95void tds_dstr_free(DSTR * s);
    \n+
    96
    \n+
    97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;
    \n+
    98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;
    \n+
    99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;
    \n+
    100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;
    \n+
    101
    \n+
    102DSTR* tds_dstr_setlen(DSTR *s, size_t length);
    \n+
    103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;
    \n+
    104
    \n+
    107#include <freetds/popvis.h>
    \n+
    108
    \n+
    109#endif /* _tdsstring_h_ */
    \n+
    DSTR * tds_dstr_setlen(DSTR *s, size_t length)
    limit length of string, MUST be <= current length
    Definition tdsstring.c:145
    \n+
    static int tds_dstr_isempty(const DSTR *s)
    test if string is empty
    Definition string.h:60
    \n+
    void tds_dstr_zero(DSTR *s)
    clear all string filling with zeroes (mainly for security reason)
    Definition tdsstring.c:55
    \n+
    static size_t tds_dstr_len(const DSTR *s)
    Returns the length of the string in bytes.
    Definition string.h:85
    \n+
    DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)
    Duplicate a string from another dynamic string.
    Definition tdsstring.c:134
    \n+
    #define DSTR_INITIALIZER
    Initializer, used to initialize string like in the following example.
    Definition string.h:49
    \n+
    DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)
    Set string to a given buffer of characters.
    Definition tdsstring.c:77
    \n+
    const struct tds_dstr tds_str_empty
    Internal representation for an empty string.
    Definition tdsstring.c:45
    \n+
    DSTR * tds_dstr_alloc(DSTR *s, size_t length)
    allocate space for length char
    Definition tdsstring.c:165
    \n+
    static void tds_dstr_init(DSTR *s)
    init a string with empty
    Definition string.h:53
    \n+
    DSTR * tds_dstr_set(DSTR *s, char *src)
    set a string from another buffer.
    Definition tdsstring.c:107
    \n+
    static const char * tds_dstr_cstr(const DSTR *s)
    Returns a C version (NUL terminated string) of dstr.
    Definition string.h:78
    \n+
    void tds_dstr_free(DSTR *s)
    free string
    Definition tdsstring.c:62
    \n+
    DSTR * tds_dstr_copy(DSTR *s, const char *src)
    copy a string from another
    Definition tdsstring.c:122
    \n+
    static char * tds_dstr_buf(DSTR *s)
    Returns a buffer to edit the string.
    Definition string.h:71
    \n+
    struct tds_dstr * DSTR
    Structure to hold a string.
    \n+
    Structure to hold a string.
    Definition string.h:36
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,18 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-replacements.h\n+ * utils\n+string.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,194 +28,139 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _replacements_h_\n- 21#define _replacements_h_\n+ 20#ifndef _tdsstring_h_\n+ 21#define _tdsstring_h_\n 22\n- 23#include \n- 24#include \"tds_sysdep_public.h\"\n- 25#include \n+ 23#include \n+ 24\n+ 25#include \n 26\n- 27#include \n- 28\n- 29/* these headers are needed for basename */\n- 30#ifdef HAVE_STRING_H\n- 31# include \n- 32#endif\n- 33#ifdef HAVE_LIBGEN_H\n- 34# include \n- 35#endif\n- 36#ifdef HAVE_GETOPT_H\n- 37# include \n- 38#endif\n- 39\n- 40#if !HAVE_POLL\n- 41#include \n- 42#endif /* !HAVE_POLL */\n+36typedef struct tds_dstr {\n+ 37 size_t dstr_size;\n+ 38 char dstr_s[1];\n+39} *DSTR;\n+ 40\n+ 42extern const struct tds_dstr tds_str_empty;\n 43\n- 44#include \n- 45\n- 46#ifdef __cplusplus\n- 47extern \"C\"\n- 48{\n- 49#endif\n+49#define DSTR_INITIALIZER ((struct tds_dstr*) &tds_str_empty)\n 50\n- 51#if !HAVE_ASPRINTF\n- 52#undef asprintf\n- 53int tds_asprintf(char **ret, const char *fmt, ...);\n- 54#define asprintf tds_asprintf\n- 55#endif /* !HAVE_ASPRINTF */\n- 56\n- 57#if !HAVE_VASPRINTF\n- 58#undef vasprintf\n- 59int tds_vasprintf(char **ret, const char *fmt, va_list ap);\n- 60#define vasprintf tds_vasprintf\n- 61#endif /* !HAVE_VASPRINTF */\n- 62\n- 63#if !HAVE_STRTOK_R\n- 64/* Some MinGW define strtok_r macro thread-safe but not reentrant but we\n- 65 need both so avoid using the macro */\n- 66#undef strtok_r\n- 67#if defined(_WIN32) && HAVE_STRTOK_S\n- 68#define strtok_r strtok_s\n- 69#else\n- 70char *tds_strtok_r(char *str, const char *sep, char **lasts);\n- 71#define strtok_r tds_strtok_r\n- 72#endif\n- 73#endif /* !HAVE_STRTOK_R */\n- 74\n- 75#if !HAVE_STRSEP\n- 76#undef strsep\n- 77char *tds_strsep(char **stringp, const char *delim);\n- 78#define strsep tds_strsep\n- 79#endif /* !HAVE_STRSEP */\n- 80\n- 81#if !HAVE_STRLCPY\n- 82size_t tds_strlcpy(char *dest, const char *src, size_t len);\n- 83#undef strlcpy\n- 84#define strlcpy(d,s,l) tds_strlcpy(d,s,l)\n- 85#endif\n- 86\n- 87#if !HAVE_GETADDRINFO\n-88typedef struct tds_addrinfo {\n- 89 int ai_flags;\n- 90 int ai_family;\n- 91 int ai_socktype;\n- 92 int ai_protocol;\n- 93 size_t ai_addrlen;\n- 94 struct sockaddr *ai_addr;\n- 95 char *ai_canonname;\n- 96 struct tds_addrinfo *ai_next;\n- 97} tds_addrinfo;\n- 98\n- 99int tds_getaddrinfo(const char *node, const char *service, const struct\n-tds_addrinfo *hints, struct tds_addrinfo **res);\n- 100int tds_getnameinfo(const struct sockaddr *sa, size_t salen, char *host,\n-size_t hostlen, char *serv, size_t servlen, int flags);\n- 101void tds_freeaddrinfo(struct tds_addrinfo *addr);\n- 102#define addrinfo tds_addrinfo\n- 103#define getaddrinfo(n,s,h,r) tds_getaddrinfo(n,s,h,r)\n- 104#define getnameinfo(a,b,c,d,e,f,g) tds_getnameinfo(a,b,c,d,e,f,g)\n- 105#define freeaddrinfo(a) tds_freeaddrinfo(a)\n- 106#endif\n- 107\n- 108#ifndef AI_FQDN\n- 109#define AI_FQDN 0\n- 110#endif\n- 111\n- 112#if !HAVE_STRLCAT\n- 113size_t tds_strlcat(char *dest, const char *src, size_t len);\n- 114#undef strlcat\n- 115#define strlcat(d,s,l) tds_strlcat(d,s,l)\n- 116#endif\n- 117\n- 118#if !HAVE_BASENAME\n- 119char *tds_basename(char *path);\n- 120#define basename(path) tds_basename(path)\n- 121#endif\n- 122\n- 123/*\n- 124 * Microsoft's C Runtime library is missing strcasecmp and strncasecmp.\n- 125 * Other Win32 C runtime libraries, notably MinGW, may define it.\n- 126 * There is no symbol uniquely defined in Microsoft's header files that\n- 127 * can be used by the preprocessor to know whether we're compiling for\n- 128 * Microsoft's library or not (or which version). Thus there's no\n- 129 * way to automatically decide whether or not to define strcasecmp\n- 130 * in terms of stricmp.\n- 131 *\n- 132 * The Microsoft *compiler* defines _MSC_VER. On the assumption that\n- 133 * anyone using their compiler is also using their library, the below\n- 134 * tests check _MSC_VER as a proxy.\n- 135 */\n- 136#if defined(_WIN32)\n- 137# if !defined(strcasecmp) && defined(_MSC_VER)\n- 138# define strcasecmp(A, B) stricmp((A), (B))\n- 139# endif\n- 140# if !defined(strncasecmp) && defined(_MSC_VER)\n- 141# define strncasecmp(x,y,z) strnicmp((x),(y),(z))\n- 142# endif\n- 143\n- 144#undef gettimeofday\n- 145int tds_gettimeofday (struct timeval *tv, void *tz);\n- 146#define gettimeofday tds_gettimeofday\n- 147\n- 148/* Older MinGW-w64 versions don't define these flags. */\n- 149#if defined(__MINGW32__) && !defined(AI_ADDRCONFIG)\n- 150# define AI_ADDRCONFIG 0x00000400\n- 151#endif\n- 152#if defined(__MINGW32__) && !defined(AI_V4MAPPED)\n- 153# define AI_V4MAPPED 0x00000800\n- 154#endif\n- 155\n- 156#endif\n- 157\n- 158#if defined(_WIN32) && defined(_MSC_VER)\n- 159#define tds_strtoll _strtoi64\n- 160#else\n- 161#define tds_strtoll strtoll\n- 162#endif\n- 163\n- 164#if !HAVE_GETOPT\n- 165#undef getopt\n- 166int tds_getopt(int argc, char * const argv[], const char *optstring);\n- 167#define getopt tds_getopt\n- 168\n- 169extern char *optarg;\n- 170extern int optind, offset, opterr, optreset;\n- 171#endif\n- 172\n- 173#if !HAVE_SOCKETPAIR\n- 174int tds_socketpair(int domain, int type, int protocol, TDS_SYS_SOCKET sv\n-[2]);\n- 175#define socketpair(d,t,p,s) tds_socketpair(d,t,p,s)\n- 176#endif\n- 177\n- 178#if !HAVE_DAEMON\n- 179int tds_daemon(int no_chdir, int no_close);\n- 180#define daemon(d,c) tds_daemon(d,c)\n- 181#endif\n- 182\n- 183#if !HAVE_SETENV\n- 184int tds_setenv(const char *name, const char *value, int overwrite);\n- 185#define setenv(n,v,o) tds_setenv(n,v,o)\n- 186int tds_unsetenv(const char *name);\n- 187#define unsetenv(n) tds_unsetenv(n)\n- 188#endif\n- 189\n- 190#ifdef __cplusplus\n- 191}\n- 192#endif\n- 193\n- 194#include \n- 195\n- 196#endif\n-poll.h\n-Provide poll call where missing.\n-tds_addrinfo\n-Definition replacements.h:88\n+ 52static inline void\n+53tds_dstr_init(DSTR * s)\n+ 54{\n+ 55 *(s) = DSTR_INITIALIZER;\n+ 56}\n+ 57\n+ 59static inline int\n+60tds_dstr_isempty(const DSTR * s)\n+ 61{\n+ 62 return (*s)->dstr_size == 0;\n+ 63}\n+ 64\n+ 70static inline char *\n+71tds_dstr_buf(DSTR * s)\n+ 72{\n+ 73 return (*s)->dstr_s;\n+ 74}\n+ 75\n+ 77static inline const char *\n+78tds_dstr_cstr(const DSTR * s)\n+ 79{\n+ 80 return (*s)->dstr_s;\n+ 81}\n+ 82\n+ 84static inline size_t\n+85tds_dstr_len(const DSTR * s)\n+ 86{\n+ 87 return (*s)->dstr_size;\n+ 88}\n+ 89\n+91#define tds_dstr_empty(s) \\\n+ 92 tds_dstr_free(s)\n+ 93\n+ 94void tds_dstr_zero(DSTR * s);\n+ 95void tds_dstr_free(DSTR * s);\n+ 96\n+ 97DSTR* tds_dstr_dup(DSTR * s, const DSTR * src) TDS_WUR;\n+ 98DSTR* tds_dstr_copy(DSTR * s, const char *src) TDS_WUR;\n+ 99DSTR* tds_dstr_copyn(DSTR * s, const char *src, size_t length) TDS_WUR;\n+ 100DSTR* tds_dstr_set(DSTR * s, char *src) TDS_WUR;\n+ 101\n+ 102DSTR* tds_dstr_setlen(DSTR *s, size_t length);\n+ 103DSTR* tds_dstr_alloc(DSTR *s, size_t length) TDS_WUR;\n+ 104\n+ 107#include \n+ 108\n+ 109#endif /* _tdsstring_h_ */\n+tds_dstr_setlen\n+DSTR * tds_dstr_setlen(DSTR *s, size_t length)\n+limit length of string, MUST be <= current length\n+Definition tdsstring.c:145\n+tds_dstr_isempty\n+static int tds_dstr_isempty(const DSTR *s)\n+test if string is empty\n+Definition string.h:60\n+tds_dstr_zero\n+void tds_dstr_zero(DSTR *s)\n+clear all string filling with zeroes (mainly for security reason)\n+Definition tdsstring.c:55\n+tds_dstr_len\n+static size_t tds_dstr_len(const DSTR *s)\n+Returns the length of the string in bytes.\n+Definition string.h:85\n+tds_dstr_dup\n+DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)\n+Duplicate a string from another dynamic string.\n+Definition tdsstring.c:134\n+DSTR_INITIALIZER\n+#define DSTR_INITIALIZER\n+Initializer, used to initialize string like in the following example.\n+Definition string.h:49\n+tds_dstr_copyn\n+DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)\n+Set string to a given buffer of characters.\n+Definition tdsstring.c:77\n+tds_str_empty\n+const struct tds_dstr tds_str_empty\n+Internal representation for an empty string.\n+Definition tdsstring.c:45\n+tds_dstr_alloc\n+DSTR * tds_dstr_alloc(DSTR *s, size_t length)\n+allocate space for length char\n+Definition tdsstring.c:165\n+tds_dstr_init\n+static void tds_dstr_init(DSTR *s)\n+init a string with empty\n+Definition string.h:53\n+tds_dstr_set\n+DSTR * tds_dstr_set(DSTR *s, char *src)\n+set a string from another buffer.\n+Definition tdsstring.c:107\n+tds_dstr_cstr\n+static const char * tds_dstr_cstr(const DSTR *s)\n+Returns a C version (NUL terminated string) of dstr.\n+Definition string.h:78\n+tds_dstr_free\n+void tds_dstr_free(DSTR *s)\n+free string\n+Definition tdsstring.c:62\n+tds_dstr_copy\n+DSTR * tds_dstr_copy(DSTR *s, const char *src)\n+copy a string from another\n+Definition tdsstring.c:122\n+tds_dstr_buf\n+static char * tds_dstr_buf(DSTR *s)\n+Returns a buffer to edit the string.\n+Definition string.h:71\n+DSTR\n+struct tds_dstr * DSTR\n+Structure to hold a string.\n+tds_dstr\n+Structure to hold a string.\n+Definition string.h:36\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00449_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00449_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/tls.h Source File\n+FreeTDS API: include/freetds/utils/hmac_md5.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n \n \n \n \n \n \n \n
    \n-
    tls.h
    \n+
    hmac_md5.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2015 Frediano Ziglio
    \n+
    2 * Copyright (C) 2008 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,122 +96,24 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _freetds_tls_h_
    \n-
    21#define _freetds_tls_h_
    \n+
    20#ifndef _hmac_md5_h_
    \n+
    21#define _hmac_md5_h_
    \n
    22
    \n-
    23#ifndef _tds_h_
    \n-
    24#error tds.h must be included before tls.h
    \n-
    25#endif
    \n-
    26
    \n-
    27#ifdef HAVE_GNUTLS
    \n-
    28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
    \n-
    29# include <freetds/thread.h>
    \n-
    30# ifndef GNUTLS_USE_NETTLE
    \n-
    31# include <gcrypt.h>
    \n-
    32# endif
    \n-
    33# endif
    \n-
    34# include <gnutls/gnutls.h>
    \n-
    35# include <gnutls/x509.h>
    \n-
    36#elif defined(HAVE_OPENSSL)
    \n-
    37# include <openssl/ssl.h>
    \n-
    38# include <openssl/x509v3.h>
    \n-
    39# include <openssl/err.h>
    \n-
    40#endif
    \n-
    41
    \n-
    42#include <freetds/pushvis.h>
    \n-
    43
    \n-
    44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
    \n-
    45TDSRET tds_ssl_init(TDSSOCKET *tds);
    \n-
    46void tds_ssl_deinit(TDSCONNECTION *conn);
    \n-
    47
    \n-
    48# ifdef HAVE_GNUTLS
    \n-
    49
    \n-
    50static inline int
    \n-
    51tds_ssl_pending(TDSCONNECTION *conn)
    \n-
    52{
    \n-
    53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);
    \n-
    54}
    \n-
    55
    \n-
    56static inline int
    \n-
    57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n-
    58{
    \n-
    59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, buflen);
    \n-
    60}
    \n-
    61
    \n-
    62static inline int
    \n-
    63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n-
    64{
    \n-
    65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, buflen);
    \n-
    66}
    \n-
    67# else
    \n-
    68
    \n-
    69/* compatibility for LibreSSL 2.7 */
    \n-
    70#ifdef LIBRESSL_VERSION_NUMBER
    \n-
    71#define TLS_ST_OK SSL_ST_OK
    \n-
    72#endif
    \n-
    73
    \n-
    74static inline int
    \n-
    75tds_ssl_pending(TDSCONNECTION *conn)
    \n-
    76{
    \n-
    77 return SSL_pending((SSL *) conn->tls_session);
    \n-
    78}
    \n-
    79
    \n-
    80static inline int
    \n-
    81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n-
    82{
    \n-
    83 return SSL_read((SSL *) conn->tls_session, buf, buflen);
    \n-
    84}
    \n-
    85
    \n-
    86static inline int
    \n-
    87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n-
    88{
    \n-
    89 return SSL_write((SSL *) conn->tls_session, buf, buflen);
    \n-
    90}
    \n-
    91# endif
    \n-
    92#else
    \n-
    93static inline TDSRET
    \n-
    94tds_ssl_init(TDSSOCKET *tds)
    \n-
    95{
    \n-
    96 return TDS_FAIL;
    \n-
    97}
    \n-
    98
    \n-
    99static inline void
    \n-
    100tds_ssl_deinit(TDSCONNECTION *conn)
    \n-
    101{
    \n-
    102}
    \n-
    103
    \n-
    104static inline int
    \n-
    105tds_ssl_pending(TDSCONNECTION *conn)
    \n-
    106{
    \n-
    107 return 0;
    \n-
    108}
    \n-
    109
    \n-
    110static inline int
    \n-
    111tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)
    \n-
    112{
    \n-
    113 return -1;
    \n-
    114}
    \n-
    115
    \n-
    116static inline int
    \n-
    117tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)
    \n-
    118{
    \n-
    119 return -1;
    \n-
    120}
    \n-
    121#endif
    \n-
    122
    \n-
    123#include <freetds/popvis.h>
    \n-
    124
    \n-
    125#endif /* _freetds_tls_h_ */
    \n-
    Definition tds.h:1091
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n+
    23#include <freetds/pushvis.h>
    \n+
    24void hmac_md5(const unsigned char key[16],
    \n+
    25 const unsigned char* data, size_t data_len,
    \n+
    26 unsigned char* digest);
    \n+
    27#include <freetds/popvis.h>
    \n+
    28
    \n+
    29#endif
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,18 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-tls.h\n+ * utils\n+hmac_md5.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2015 Frediano Ziglio\n+ 2 * Copyright (C) 2008 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,123 +28,20 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _freetds_tls_h_\n- 21#define _freetds_tls_h_\n+ 20#ifndef _hmac_md5_h_\n+ 21#define _hmac_md5_h_\n 22\n- 23#ifndef _tds_h_\n- 24#error tds.h must be included before tls.h\n- 25#endif\n- 26\n- 27#ifdef HAVE_GNUTLS\n- 28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)\n- 29# include \n- 30# ifndef GNUTLS_USE_NETTLE\n- 31# include \n- 32# endif\n- 33# endif\n- 34# include \n- 35# include \n- 36#elif defined(HAVE_OPENSSL)\n- 37# include \n- 38# include \n- 39# include \n- 40#endif\n- 41\n- 42#include \n- 43\n- 44#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)\n- 45TDSRET tds_ssl_init(TDSSOCKET *tds);\n- 46void tds_ssl_deinit(TDSCONNECTION *conn);\n- 47\n- 48# ifdef HAVE_GNUTLS\n- 49\n- 50static inline int\n- 51tds_ssl_pending(TDSCONNECTION *conn)\n- 52{\n- 53 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);\n- 54}\n- 55\n- 56static inline int\n- 57tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n- 58{\n- 59 return gnutls_record_recv((gnutls_session_t) conn->tls_session, buf,\n-buflen);\n- 60}\n- 61\n- 62static inline int\n- 63tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n- 64{\n- 65 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf,\n-buflen);\n- 66}\n- 67# else\n- 68\n- 69/* compatibility for LibreSSL 2.7 */\n- 70#ifdef LIBRESSL_VERSION_NUMBER\n- 71#define TLS_ST_OK SSL_ST_OK\n- 72#endif\n- 73\n- 74static inline int\n- 75tds_ssl_pending(TDSCONNECTION *conn)\n- 76{\n- 77 return SSL_pending((SSL *) conn->tls_session);\n- 78}\n- 79\n- 80static inline int\n- 81tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n- 82{\n- 83 return SSL_read((SSL *) conn->tls_session, buf, buflen);\n- 84}\n- 85\n- 86static inline int\n- 87tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n- 88{\n- 89 return SSL_write((SSL *) conn->tls_session, buf, buflen);\n- 90}\n- 91# endif\n- 92#else\n- 93static inline TDSRET\n- 94tds_ssl_init(TDSSOCKET *tds)\n- 95{\n- 96 return TDS_FAIL;\n- 97}\n- 98\n- 99static inline void\n- 100tds_ssl_deinit(TDSCONNECTION *conn)\n- 101{\n- 102}\n- 103\n- 104static inline int\n- 105tds_ssl_pending(TDSCONNECTION *conn)\n- 106{\n- 107 return 0;\n- 108}\n- 109\n- 110static inline int\n- 111tds_ssl_read(TDSCONNECTION *conn, unsigned char *buf, int buflen)\n- 112{\n- 113 return -1;\n- 114}\n- 115\n- 116static inline int\n- 117tds_ssl_write(TDSCONNECTION *conn, const unsigned char *buf, int buflen)\n- 118{\n- 119 return -1;\n- 120}\n- 121#endif\n- 122\n- 123#include \n- 124\n- 125#endif /* _freetds_tls_h_ */\n-tds_connection\n-Definition tds.h:1091\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n+ 23#include \n+ 24void hmac_md5(const unsigned char key[16],\n+ 25 const unsigned char* data, size_t data_len,\n+ 26 unsigned char* digest);\n+ 27#include \n+ 28\n+ 29#endif\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00452_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00452_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/macros.h Source File\n+FreeTDS API: include/freetds/utils/bjoern-utf8.h Source File\n \n \n \n \n \n \n \n@@ -70,99 +70,52 @@\n \n \n \n \n \n \n \n
    \n-
    macros.h
    \n+
    bjoern-utf8.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns
    \n-
    3 * Copyright (C) 2010-2017 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    1/*
    \n+
    2 * Copyright (c) 2008-2010 Bjoern Hoehrmann <bjoern@hoehrmann.de>
    \n+
    3 *
    \n+
    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:
    \n+
    5 *
    \n+
    6 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    \n+
    7 *
    \n+
    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.
    \n
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    21#ifndef _freetds_macros_h_
    \n-
    22#define _freetds_macros_h_
    \n-
    23
    \n-
    24#ifndef _freetds_config_h_
    \n-
    25#error should include config.h before
    \n-
    26#endif
    \n-
    27
    \n-
    28#if HAVE_STDDEF_H
    \n-
    29#include <stddef.h>
    \n-
    30#endif /* HAVE_STDDEF_H */
    \n-
    31
    \n-
    32#include "tds_sysdep_public.h"
    \n-
    33
    \n-
    34#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)
    \n-
    35#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))
    \n-
    36
    \n-
    37#ifdef offsetof
    \n-
    38#define TDS_OFFSET(type, field) offsetof(type, field)
    \n-
    39#else
    \n-
    40#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))
    \n-
    41#endif
    \n-
    42
    \n-
    43#if ENABLE_EXTRA_CHECKS
    \n-
    44# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
    \n-
    45# define TDS_COMPILE_CHECK(name,check) \\
    \n-
    46 _Static_assert(check,#name)
    \n-
    47# elif defined(__GNUC__) && __GNUC__ >= 2
    \n-
    48# define TDS_COMPILE_CHECK(name,check) \\
    \n-
    49 extern int name[(check)?1:-1] __attribute__ ((unused))
    \n-
    50# else
    \n-
    51# define TDS_COMPILE_CHECK(name,check) \\
    \n-
    52 extern int name[(check)?1:-1]
    \n-
    53# endif
    \n-
    54# define TDS_EXTRA_CHECK(stmt) stmt
    \n-
    55#else
    \n-
    56# define TDS_COMPILE_CHECK(name,check) \\
    \n-
    57 extern int disabled_check_##name
    \n-
    58# define TDS_EXTRA_CHECK(stmt)
    \n-
    59#endif
    \n-
    60
    \n-
    61#if defined(__GNUC__) && __GNUC__ >= 3
    \n-
    62# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)
    \n-
    63# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)
    \n-
    64#else
    \n-
    65# define TDS_LIKELY(x) (x)
    \n-
    66# define TDS_UNLIKELY(x) (x)
    \n-
    67#endif
    \n-
    68
    \n-
    69#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4
    \n-
    70#define TDS_WUR __attribute__ ((__warn_unused_result__))
    \n-
    71#else
    \n-
    72#define TDS_WUR
    \n-
    73#endif
    \n-
    74
    \n-
    75#define TDS_INT2PTR(i) ((void*)(((char*)0)+((intptr_t)(i))))
    \n-
    76#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))
    \n-
    77
    \n-
    78#endif
    \n+
    10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.
    \n+
    11 */
    \n+
    12
    \n+
    13#include <tds_sysdep_public.h>
    \n+
    14
    \n+
    15#define UTF8_ACCEPT 0
    \n+
    16#define UTF8_REJECT 12
    \n+
    17
    \n+
    18extern const uint8_t utf8_table[];
    \n+
    19
    \n+
    20static inline uint32_t
    \n+
    21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)
    \n+
    22{
    \n+
    23 uint32_t type = utf8_table[byte];
    \n+
    24
    \n+
    25 *codep = (*state != UTF8_ACCEPT) ?
    \n+
    26 (byte & 0x3fu) | (*codep << 6) :
    \n+
    27 (0xff >> type) & (byte);
    \n+
    28
    \n+
    29 *state = utf8_table[256 + *state + type];
    \n+
    30 return *state;
    \n+
    31}
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,90 +7,55 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-macros.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns\n- 3 * Copyright (C) 2010-2017 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n+ * utils\n+bjoern-utf8.h\n+ 1/*\n+ 2 * Copyright (c) 2008-2010 Bjoern Hoehrmann \n+ 3 *\n+ 4 * Permission is hereby granted, free of charge, to any person obtaining a\n+copy of this software and associated documentation files (the \"Software\"), to\n+deal in the Software without restriction, including without limitation the\n+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n+sell copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+ 5 *\n+ 6 * The above copyright notice and this permission notice shall be included in\n+all copies or substantial portions of the Software.\n+ 7 *\n+ 8 * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 21#ifndef _freetds_macros_h_\n- 22#define _freetds_macros_h_\n- 23\n- 24#ifndef _freetds_config_h_\n- 25#error should include config.h before\n- 26#endif\n- 27\n- 28#if HAVE_STDDEF_H\n- 29#include \n- 30#endif /* HAVE_STDDEF_H */\n- 31\n- 32#include \"tds_sysdep_public.h\"\n- 33\n- 34#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0)\n- 35#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0]))\n- 36\n- 37#ifdef offsetof\n- 38#define TDS_OFFSET(type, field) offsetof(type, field)\n- 39#else\n- 40#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0))\n- 41#endif\n- 42\n- 43#if ENABLE_EXTRA_CHECKS\n- 44# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__\n-== 4 && __GNUC_MINOR__ >= 6)))\n- 45# define TDS_COMPILE_CHECK(name,check) \\\n- 46 _Static_assert(check,#name)\n- 47# elif defined(__GNUC__) && __GNUC__ >= 2\n- 48# define TDS_COMPILE_CHECK(name,check) \\\n- 49 extern int name[(check)?1:-1] __attribute__ ((unused))\n- 50# else\n- 51# define TDS_COMPILE_CHECK(name,check) \\\n- 52 extern int name[(check)?1:-1]\n- 53# endif\n- 54# define TDS_EXTRA_CHECK(stmt) stmt\n- 55#else\n- 56# define TDS_COMPILE_CHECK(name,check) \\\n- 57 extern int disabled_check_##name\n- 58# define TDS_EXTRA_CHECK(stmt)\n- 59#endif\n- 60\n- 61#if defined(__GNUC__) && __GNUC__ >= 3\n- 62# define TDS_LIKELY(x) __builtin_expect(!!(x), 1)\n- 63# define TDS_UNLIKELY(x) __builtin_expect(!!(x), 0)\n- 64#else\n- 65# define TDS_LIKELY(x) (x)\n- 66# define TDS_UNLIKELY(x) (x)\n- 67#endif\n- 68\n- 69#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4\n- 70#define TDS_WUR __attribute__ ((__warn_unused_result__))\n- 71#else\n- 72#define TDS_WUR\n- 73#endif\n- 74\n- 75#define TDS_INT2PTR(i) ((void*)(((char*)0)+((intptr_t)(i))))\n- 76#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))\n- 77\n- 78#endif\n+ 10 * See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.\n+ 11 */\n+ 12\n+ 13#include \n+ 14\n+ 15#define UTF8_ACCEPT 0\n+ 16#define UTF8_REJECT 12\n+ 17\n+ 18extern const uint8_t utf8_table[];\n+ 19\n+ 20static inline uint32_t\n+ 21decode_utf8(uint32_t* state, uint32_t* codep, uint32_t byte)\n+ 22{\n+ 23 uint32_t type = utf8_table[byte];\n+ 24\n+ 25 *codep = (*state != UTF8_ACCEPT) ?\n+ 26 (byte & 0x3fu) | (*codep << 6) :\n+ 27 (0xff >> type) & (byte);\n+ 28\n+ 29 *state = utf8_table[256 + *state + type];\n+ 30 return *state;\n+ 31}\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00455_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00455_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/sysdep_private.h Source File\n+FreeTDS API: include/freetds/utils/dlist.tmpl.h Source File\n \n \n \n \n \n \n \n@@ -70,295 +70,143 @@\n
    \n \n \n \n \n \n \n
    \n-
    sysdep_private.h
    \n+
    dlist.tmpl.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n-
    3 * Copyright (C) 2010 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n-
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    21#ifndef _tds_sysdep_private_h_
    \n-
    22#define _tds_sysdep_private_h_
    \n+
    1/* Dlist - dynamic list
    \n+
    2 * Copyright (C) 2016 Frediano Ziglio
    \n+
    3 *
    \n+
    4 * This program is free software; you can redistribute it and/or modify
    \n+
    5 * it under the terms of the GNU General Public License as published by
    \n+
    6 * the Free Software Foundation; either version 2 of the License, or
    \n+
    7 * (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This program is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    \n+
    12 * GNU General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU General Public License
    \n+
    15 * along with this program; if not, write to the Free Software
    \n+
    16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    \n+
    17 *
    \n+
    18 */
    \n+
    19
    \n+
    20#include <freetds/bool.h>
    \n+
    21#include <freetds/utils.h>
    \n+
    22#include <freetds/macros.h>
    \n
    23
    \n-
    24#define TDS_ADDITIONAL_SPACE 16
    \n-
    25
    \n-
    26#ifdef MSG_NOSIGNAL
    \n-
    27# define TDS_NOSIGNAL MSG_NOSIGNAL
    \n-
    28#else
    \n-
    29# define TDS_NOSIGNAL 0L
    \n-
    30#endif
    \n-
    31
    \n-
    32#ifdef __cplusplus
    \n-
    33extern "C"
    \n+
    24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined(DLIST_LIST_TYPE)
    \n+
    25#error Required defines for dlist missing!
    \n+
    26#endif
    \n+
    27
    \n+
    28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \\
    \n+
    29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)
    \n+
    30#error Some internal dlist macros already defined
    \n+
    31#endif
    \n+
    32
    \n+
    \n+
    33typedef struct
    \n
    34{
    \n-
    35#if 0
    \n-
    36}
    \n-
    37#endif
    \n-
    38#endif
    \n-
    39
    \n-
    40#ifdef __INCvxWorksh
    \n-
    41#include <ioLib.h> /* for FIONBIO */
    \n-
    42#endif /* __INCvxWorksh */
    \n+
    35 dlist_ring ring;
    \n+\n+
    \n+
    37
    \n+
    38#define DLIST_PASTER(x,y) x ## _ ## y
    \n+
    39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)
    \n+
    40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)
    \n+
    41#define DLIST_ITEM(ring) \\
    \n+
    42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE, DLIST_NAME(item))))
    \n
    43
    \n-
    44#if defined(DOS32X)
    \n-
    45#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
    \n-
    46#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
    \n-
    47#define CLOSESOCKET(a) closesocket((a))
    \n-
    48#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
    \n-
    49#define SOCKLEN_T int
    \n-
    50#define select select_s
    \n-
    51typedef int pid_t;
    \n-
    52#define strcasecmp stricmp
    \n-
    53#define strncasecmp strnicmp
    \n-
    54/* TODO this has nothing to do with ip ... */
    \n-
    55#define getpid() _gethostid()
    \n-
    56#endif /* defined(DOS32X) */
    \n+
    44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list)
    \n+
    45{
    \n+
    46#if ENABLE_EXTRA_CHECKS
    \n+
    47 assert(list != NULL);
    \n+
    48 dlist_ring_check(&list->ring);
    \n+
    49#endif
    \n+
    50}
    \n+
    51
    \n+
    52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)
    \n+
    53{
    \n+
    54 list->ring.next = list->ring.prev = &list->ring;
    \n+
    55 DLIST_NAME(check)(list);
    \n+
    56}
    \n
    57
    \n-
    58#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
    \n-
    59#include <freetds/windows.h>
    \n-
    60#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
    \n-
    61#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
    \n-
    62#define CLOSESOCKET(a) closesocket((a))
    \n-
    63#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
    \n-
    64#define SOCKLEN_T int
    \n-
    65int tds_socket_init(void);
    \n-
    66#define INITSOCKET() tds_socket_init()
    \n-
    67void tds_socket_done(void);
    \n-
    68#define DONESOCKET() tds_socket_done()
    \n-
    69#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */
    \n-
    70
    \n-
    71#define TDSSOCK_EINTR WSAEINTR
    \n-
    72#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
    \n-
    73#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
    \n-
    74#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
    \n-
    75#define TDSSOCK_ECONNRESET WSAECONNRESET
    \n-
    76#define sock_errno WSAGetLastError()
    \n-
    77#define set_sock_errno(err) WSASetLastError(err)
    \n-
    78#define sock_strerror(n) tds_prwsaerror(n)
    \n-
    79#define sock_strerror_free(s) tds_prwsaerror_free(s)
    \n-
    80#ifndef __MINGW32__
    \n-
    81typedef DWORD pid_t;
    \n-
    82#endif
    \n-
    83#undef strcasecmp
    \n-
    84#define strcasecmp stricmp
    \n-
    85#undef strncasecmp
    \n-
    86#define strncasecmp strnicmp
    \n-
    87#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
    \n-
    88#define snprintf _snprintf
    \n-
    89#endif
    \n-
    90
    \n-
    91#ifndef WIN32
    \n-
    92#define WIN32 1
    \n-
    93#endif
    \n-
    94
    \n-
    95#if defined(_WIN64) && !defined(WIN64)
    \n-
    96#define WIN64 1
    \n-
    97#endif
    \n-
    98
    \n-
    99#define TDS_SDIR_SEPARATOR "\\\\"
    \n-
    100
    \n-
    101/* use macros to use new style names */
    \n-
    102#if defined(__MSVCRT__) || defined(_MSC_VER)
    \n-
    103/* Use API as always present and not causing problems */
    \n-
    104#undef getpid
    \n-
    105#define getpid() GetCurrentProcessId()
    \n-
    106#define strdup(s) _strdup(s)
    \n-
    107#define unlink(f) _unlink(f)
    \n-
    108#define putenv(s) _putenv(s)
    \n-
    109#undef fileno
    \n-
    110#define fileno(f) _fileno(f)
    \n-
    111#undef close
    \n-
    112#define close(f) _close(f)
    \n-
    113#undef open
    \n-
    114#define open(fn,...) _open(fn,__VA_ARGS__)
    \n-
    115#undef dup2
    \n-
    116#define dup2(o,n) _dup2(o,n)
    \n-
    117#define stricmp(s1,s2) _stricmp(s1,s2)
    \n-
    118#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
    \n-
    119#endif
    \n-
    120
    \n-
    121#endif /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
    \n-
    122
    \n-
    123#ifndef sock_errno
    \n-
    124#define sock_errno errno
    \n-
    125#endif
    \n-
    126
    \n-
    127#ifndef set_sock_errno
    \n-
    128#define set_sock_errno(err) do { errno = (err); } while(0)
    \n-
    129#endif
    \n-
    130
    \n-
    131#ifndef sock_strerror
    \n-
    132#define sock_strerror(n) strerror(n)
    \n-
    133#define sock_strerror_free(s) do {} while(0)
    \n-
    134#endif
    \n-
    135
    \n-
    136#ifndef TDSSOCK_EINTR
    \n-
    137#define TDSSOCK_EINTR EINTR
    \n-
    138#endif
    \n-
    139
    \n-
    140#ifndef TDSSOCK_EINPROGRESS
    \n-
    141#define TDSSOCK_EINPROGRESS EINPROGRESS
    \n-
    142#endif
    \n-
    143
    \n-
    144#ifndef TDSSOCK_ETIMEDOUT
    \n-
    145#define TDSSOCK_ETIMEDOUT ETIMEDOUT
    \n-
    146#endif
    \n-
    147
    \n-
    148#ifndef TDSSOCK_WOULDBLOCK
    \n-
    149# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
    \n-
    150# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
    \n-
    151# else
    \n-
    152# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
    \n-
    153# endif
    \n-
    154#endif
    \n-
    155
    \n-
    156#ifndef TDSSOCK_ECONNRESET
    \n-
    157#define TDSSOCK_ECONNRESET ECONNRESET
    \n-
    158#endif
    \n-
    159
    \n-
    160#ifndef INITSOCKET
    \n-
    161#define INITSOCKET() 0
    \n-
    162#endif /* !INITSOCKET */
    \n-
    163
    \n-
    164#ifndef DONESOCKET
    \n-
    165#define DONESOCKET() do { } while(0)
    \n-
    166#endif /* !DONESOCKET */
    \n-
    167
    \n-
    168#ifndef READSOCKET
    \n-
    169# ifdef MSG_NOSIGNAL
    \n-
    170# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
    \n-
    171# else
    \n-
    172# define READSOCKET(s,b,l) read((s), (b), (l))
    \n-
    173# endif
    \n-
    174#endif /* !READSOCKET */
    \n-
    175
    \n-
    176#ifndef WRITESOCKET
    \n-
    177# ifdef MSG_NOSIGNAL
    \n-
    178# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
    \n-
    179# else
    \n-
    180# define WRITESOCKET(s,b,l) write((s), (b), (l))
    \n-
    181# endif
    \n-
    182#endif /* !WRITESOCKET */
    \n-
    183
    \n-
    184#ifndef CLOSESOCKET
    \n-
    185#define CLOSESOCKET(s) close((s))
    \n-
    186#endif /* !CLOSESOCKET */
    \n-
    187
    \n-
    188#ifndef IOCTLSOCKET
    \n-
    189#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
    \n-
    190#endif /* !IOCTLSOCKET */
    \n-
    191
    \n-
    192#ifndef SOCKLEN_T
    \n-
    193# define SOCKLEN_T socklen_t
    \n-
    194#endif
    \n-
    195
    \n-
    196#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
    \n-
    197typedef int TDS_SYS_SOCKET;
    \n-
    198#define INVALID_SOCKET -1
    \n-
    199#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
    \n-
    200#else
    \n-
    201typedef SOCKET TDS_SYS_SOCKET;
    \n-
    202#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
    \n-
    203#endif
    \n-
    204
    \n-
    205#define tds_accept accept
    \n-
    206#define tds_getpeername getpeername
    \n-
    207#define tds_getsockopt getsockopt
    \n-
    208#define tds_getsockname getsockname
    \n-
    209#define tds_recvfrom recvfrom
    \n-
    210
    \n-
    211#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
    \n-
    212# if HAVE__XPG_ACCEPT
    \n-
    213# undef tds_accept
    \n-
    214# define tds_accept _xpg_accept
    \n-
    215# elif HAVE___ACCEPT
    \n-
    216# undef tds_accept
    \n-
    217# define tds_accept __accept
    \n-
    218# endif
    \n-
    219# if HAVE__XPG_GETPEERNAME
    \n-
    220# undef tds_getpeername
    \n-
    221# define tds_getpeername _xpg_getpeername
    \n-
    222# elif HAVE___GETPEERNAME
    \n-
    223# undef tds_getpeername
    \n-
    224# define tds_getpeername __getpeername
    \n-
    225# endif
    \n-
    226# if HAVE__XPG_GETSOCKOPT
    \n-
    227# undef tds_getsockopt
    \n-
    228# define tds_getsockopt _xpg_getsockopt
    \n-
    229# elif HAVE___GETSOCKOPT
    \n-
    230# undef tds_getsockopt
    \n-
    231# define tds_getsockopt __getsockopt
    \n-
    232# endif
    \n-
    233# if HAVE__XPG_GETSOCKNAME
    \n-
    234# undef tds_getsockname
    \n-
    235# define tds_getsockname _xpg_getsockname
    \n-
    236# elif HAVE___GETSOCKNAME
    \n-
    237# undef tds_getsockname
    \n-
    238# define tds_getsockname __getsockname
    \n-
    239# endif
    \n-
    240# if HAVE__XPG_RECVFROM
    \n-
    241# undef tds_recvfrom
    \n-
    242# define tds_recvfrom _xpg_recvfrom
    \n-
    243# elif HAVE___RECVFROM
    \n-
    244# undef tds_recvfrom
    \n-
    245# define tds_recvfrom __recvfrom
    \n-
    246# endif
    \n-
    247#endif
    \n-
    248
    \n-
    249#ifndef TDS_SDIR_SEPARATOR
    \n-
    250#define TDS_SDIR_SEPARATOR "/"
    \n-
    251#endif /* !TDS_SDIR_SEPARATOR */
    \n-
    252
    \n-
    253#ifdef HAVE_INTTYPES_H
    \n-
    254#include <inttypes.h>
    \n-
    255#endif
    \n-
    256
    \n-
    257#ifndef PRId64
    \n-
    258#define PRId64 TDS_I64_PREFIX "d"
    \n-
    259#endif
    \n-
    260#ifndef PRIu64
    \n-
    261#define PRIu64 TDS_I64_PREFIX "u"
    \n-
    262#endif
    \n-
    263#ifndef PRIx64
    \n-
    264#define PRIx64 TDS_I64_PREFIX "x"
    \n-
    265#endif
    \n-
    266
    \n-
    267#ifdef __cplusplus
    \n-
    268#if 0
    \n-
    269{
    \n-
    270#endif
    \n-
    271}
    \n-
    272#endif
    \n-
    273
    \n-
    274#endif /* _tds_sysdep_private_h_ */
    \n+
    58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)
    \n+
    59{
    \n+
    60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);
    \n+
    61}
    \n+
    62
    \n+
    63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)
    \n+
    64{
    \n+
    65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);
    \n+
    66}
    \n+
    67
    \n+
    68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    69{
    \n+
    70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).next);
    \n+
    71}
    \n+
    72
    \n+
    73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    74{
    \n+
    75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item->DLIST_NAME(item).prev);
    \n+
    76}
    \n+
    77
    \n+
    78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    79{
    \n+
    80 DLIST_NAME(check)(list);
    \n+
    81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));
    \n+
    82 DLIST_NAME(check)(list);
    \n+
    83}
    \n+
    84
    \n+
    85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    86{
    \n+
    87 DLIST_NAME(check)(list);
    \n+
    88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));
    \n+
    89 DLIST_NAME(check)(list);
    \n+
    90}
    \n+
    91
    \n+
    92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    93{
    \n+
    94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME(item).next;
    \n+
    95 DLIST_NAME(check)(list);
    \n+
    96 if (prev) {
    \n+
    97 prev->next = next;
    \n+
    98 next->prev = prev;
    \n+
    99 }
    \n+
    100 item->DLIST_NAME(item).prev = NULL;
    \n+
    101 item->DLIST_NAME(item).next = NULL;
    \n+
    102 DLIST_NAME(check)(list);
    \n+
    103}
    \n+
    104
    \n+
    105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE *item)
    \n+
    106{
    \n+
    107 DLIST_NAME(check)(list);
    \n+
    108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next != NULL;
    \n+
    109}
    \n+
    110
    \n+
    111#undef DLIST_ITEM
    \n+
    112#undef DLIST_NAME
    \n+
    113#undef DLIST_ITEM_TYPE
    \n+
    114#undef DLIST_LIST_TYPE
    \n+
    115#undef DLIST_PREFIX
    \n+
    116#undef DLIST_PASTER
    \n+
    117#undef DLIST_EVALUATOR
    \n+
    118
    \n+
    Definition dlist.h:23
    \n+
    Definition dlist.tmpl.h:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,286 +7,146 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-sysdep_private.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n- 3 * Copyright (C) 2010 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n- 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 21#ifndef _tds_sysdep_private_h_\n- 22#define _tds_sysdep_private_h_\n+ * utils\n+dlist.tmpl.h\n+ 1/* Dlist - dynamic list\n+ 2 * Copyright (C) 2016 Frediano Ziglio\n+ 3 *\n+ 4 * This program is free software; you can redistribute it and/or modify\n+ 5 * it under the terms of the GNU General Public License as published by\n+ 6 * the Free Software Foundation; either version 2 of the License, or\n+ 7 * (at your option) any later version.\n+ 8 *\n+ 9 * This program is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ 12 * GNU General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU General Public License\n+ 15 * along with this program; if not, write to the Free Software\n+ 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n+ 17 *\n+ 18 */\n+ 19\n+ 20#include \n+ 21#include \n+ 22#include \n 23\n- 24#define TDS_ADDITIONAL_SPACE 16\n- 25\n- 26#ifdef MSG_NOSIGNAL\n- 27# define TDS_NOSIGNAL MSG_NOSIGNAL\n- 28#else\n- 29# define TDS_NOSIGNAL 0L\n- 30#endif\n- 31\n- 32#ifdef __cplusplus\n- 33extern \"C\"\n+ 24#if !defined(DLIST_PREFIX) || !defined(DLIST_ITEM_TYPE) || !defined\n+(DLIST_LIST_TYPE)\n+ 25#error Required defines for dlist missing!\n+ 26#endif\n+ 27\n+ 28#if defined(DLIST_NAME) || defined(DLIST_PASTER) || \\\n+ 29 defined(DLIST_EVALUATOR) || defined(DLIST_ITEM)\n+ 30#error Some internal dlist macros already defined\n+ 31#endif\n+ 32\n+33typedef struct\n 34{\n- 35#if 0\n- 36}\n- 37#endif\n- 38#endif\n- 39\n- 40#ifdef __INCvxWorksh\n- 41#include /* for FIONBIO */\n- 42#endif /* __INCvxWorksh */\n+ 35 dlist_ring ring;\n+ 36} DLIST_LIST_TYPE;\n+ 37\n+ 38#define DLIST_PASTER(x,y) x ## _ ## y\n+ 39#define DLIST_EVALUATOR(x,y) DLIST_PASTER(x,y)\n+ 40#define DLIST_NAME(suffix) DLIST_EVALUATOR(DLIST_PREFIX, suffix)\n+ 41#define DLIST_ITEM(ring) \\\n+ 42 ((DLIST_ITEM_TYPE *) (((char *) (ring)) - TDS_OFFSET(DLIST_ITEM_TYPE,\n+DLIST_NAME(item))))\n 43\n- 44#if defined(DOS32X)\n- 45#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)\n- 46#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)\n- 47#define CLOSESOCKET(a) closesocket((a))\n- 48#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))\n- 49#define SOCKLEN_T int\n- 50#define select select_s\n- 51typedef int pid_t;\n- 52#define strcasecmp stricmp\n- 53#define strncasecmp strnicmp\n- 54/* TODO this has nothing to do with ip ... */\n- 55#define getpid() _gethostid()\n- 56#endif /* defined(DOS32X) */\n+ 44static inline void DLIST_NAME(check)(DLIST_LIST_TYPE *list)\n+ 45{\n+ 46#if ENABLE_EXTRA_CHECKS\n+ 47 assert(list != NULL);\n+ 48 dlist_ring_check(&list->ring);\n+ 49#endif\n+ 50}\n+ 51\n+ 52static inline void DLIST_NAME(init)(DLIST_LIST_TYPE *list)\n+ 53{\n+ 54 list->ring.next = list->ring.prev = &list->ring;\n+ 55 DLIST_NAME(check)(list);\n+ 56}\n 57\n- 58#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined\n-(_WIN64)\n- 59#include \n- 60#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)\n- 61#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)\n- 62#define CLOSESOCKET(a) closesocket((a))\n- 63#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))\n- 64#define SOCKLEN_T int\n- 65int tds_socket_init(void);\n- 66#define INITSOCKET() tds_socket_init()\n- 67void tds_socket_done(void);\n- 68#define DONESOCKET() tds_socket_done()\n- 69#define NETDB_REENTRANT 1 /* BSD-style netdb interface is reentrant */\n- 70\n- 71#define TDSSOCK_EINTR WSAEINTR\n- 72#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK\n- 73#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT\n- 74#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)\n- 75#define TDSSOCK_ECONNRESET WSAECONNRESET\n- 76#define sock_errno WSAGetLastError()\n- 77#define set_sock_errno(err) WSASetLastError(err)\n- 78#define sock_strerror(n) tds_prwsaerror(n)\n- 79#define sock_strerror_free(s) tds_prwsaerror_free(s)\n- 80#ifndef __MINGW32__\n- 81typedef DWORD pid_t;\n- 82#endif\n- 83#undef strcasecmp\n- 84#define strcasecmp stricmp\n- 85#undef strncasecmp\n- 86#define strncasecmp strnicmp\n- 87#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)\n- 88#define snprintf _snprintf\n- 89#endif\n- 90\n- 91#ifndef WIN32\n- 92#define WIN32 1\n- 93#endif\n- 94\n- 95#if defined(_WIN64) && !defined(WIN64)\n- 96#define WIN64 1\n- 97#endif\n- 98\n- 99#define TDS_SDIR_SEPARATOR \"\\\\\"\n- 100\n- 101/* use macros to use new style names */\n- 102#if defined(__MSVCRT__) || defined(_MSC_VER)\n- 103/* Use API as always present and not causing problems */\n- 104#undef getpid\n- 105#define getpid() GetCurrentProcessId()\n- 106#define strdup(s) _strdup(s)\n- 107#define unlink(f) _unlink(f)\n- 108#define putenv(s) _putenv(s)\n- 109#undef fileno\n- 110#define fileno(f) _fileno(f)\n- 111#undef close\n- 112#define close(f) _close(f)\n- 113#undef open\n- 114#define open(fn,...) _open(fn,__VA_ARGS__)\n- 115#undef dup2\n- 116#define dup2(o,n) _dup2(o,n)\n- 117#define stricmp(s1,s2) _stricmp(s1,s2)\n- 118#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)\n- 119#endif\n- 120\n- 121#endif /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */\n- 122\n- 123#ifndef sock_errno\n- 124#define sock_errno errno\n- 125#endif\n- 126\n- 127#ifndef set_sock_errno\n- 128#define set_sock_errno(err) do { errno = (err); } while(0)\n- 129#endif\n- 130\n- 131#ifndef sock_strerror\n- 132#define sock_strerror(n) strerror(n)\n- 133#define sock_strerror_free(s) do {} while(0)\n- 134#endif\n- 135\n- 136#ifndef TDSSOCK_EINTR\n- 137#define TDSSOCK_EINTR EINTR\n- 138#endif\n- 139\n- 140#ifndef TDSSOCK_EINPROGRESS\n- 141#define TDSSOCK_EINPROGRESS EINPROGRESS\n- 142#endif\n- 143\n- 144#ifndef TDSSOCK_ETIMEDOUT\n- 145#define TDSSOCK_ETIMEDOUT ETIMEDOUT\n- 146#endif\n- 147\n- 148#ifndef TDSSOCK_WOULDBLOCK\n- 149# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK\n- 150# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)\n- 151# else\n- 152# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)\n- 153# endif\n- 154#endif\n- 155\n- 156#ifndef TDSSOCK_ECONNRESET\n- 157#define TDSSOCK_ECONNRESET ECONNRESET\n- 158#endif\n- 159\n- 160#ifndef INITSOCKET\n- 161#define INITSOCKET() 0\n- 162#endif /* !INITSOCKET */\n- 163\n- 164#ifndef DONESOCKET\n- 165#define DONESOCKET() do { } while(0)\n- 166#endif /* !DONESOCKET */\n- 167\n- 168#ifndef READSOCKET\n- 169# ifdef MSG_NOSIGNAL\n- 170# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)\n- 171# else\n- 172# define READSOCKET(s,b,l) read((s), (b), (l))\n- 173# endif\n- 174#endif /* !READSOCKET */\n- 175\n- 176#ifndef WRITESOCKET\n- 177# ifdef MSG_NOSIGNAL\n- 178# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)\n- 179# else\n- 180# define WRITESOCKET(s,b,l) write((s), (b), (l))\n- 181# endif\n- 182#endif /* !WRITESOCKET */\n- 183\n- 184#ifndef CLOSESOCKET\n- 185#define CLOSESOCKET(s) close((s))\n- 186#endif /* !CLOSESOCKET */\n- 187\n- 188#ifndef IOCTLSOCKET\n- 189#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))\n- 190#endif /* !IOCTLSOCKET */\n- 191\n- 192#ifndef SOCKLEN_T\n- 193# define SOCKLEN_T socklen_t\n- 194#endif\n- 195\n- 196#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)\n- 197typedef int TDS_SYS_SOCKET;\n- 198#define INVALID_SOCKET -1\n- 199#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)\n- 200#else\n- 201typedef SOCKET TDS_SYS_SOCKET;\n- 202#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)\n- 203#endif\n- 204\n- 205#define tds_accept accept\n- 206#define tds_getpeername getpeername\n- 207#define tds_getsockopt getsockopt\n- 208#define tds_getsockname getsockname\n- 209#define tds_recvfrom recvfrom\n- 210\n- 211#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4\n- 212# if HAVE__XPG_ACCEPT\n- 213# undef tds_accept\n- 214# define tds_accept _xpg_accept\n- 215# elif HAVE___ACCEPT\n- 216# undef tds_accept\n- 217# define tds_accept __accept\n- 218# endif\n- 219# if HAVE__XPG_GETPEERNAME\n- 220# undef tds_getpeername\n- 221# define tds_getpeername _xpg_getpeername\n- 222# elif HAVE___GETPEERNAME\n- 223# undef tds_getpeername\n- 224# define tds_getpeername __getpeername\n- 225# endif\n- 226# if HAVE__XPG_GETSOCKOPT\n- 227# undef tds_getsockopt\n- 228# define tds_getsockopt _xpg_getsockopt\n- 229# elif HAVE___GETSOCKOPT\n- 230# undef tds_getsockopt\n- 231# define tds_getsockopt __getsockopt\n- 232# endif\n- 233# if HAVE__XPG_GETSOCKNAME\n- 234# undef tds_getsockname\n- 235# define tds_getsockname _xpg_getsockname\n- 236# elif HAVE___GETSOCKNAME\n- 237# undef tds_getsockname\n- 238# define tds_getsockname __getsockname\n- 239# endif\n- 240# if HAVE__XPG_RECVFROM\n- 241# undef tds_recvfrom\n- 242# define tds_recvfrom _xpg_recvfrom\n- 243# elif HAVE___RECVFROM\n- 244# undef tds_recvfrom\n- 245# define tds_recvfrom __recvfrom\n- 246# endif\n- 247#endif\n- 248\n- 249#ifndef TDS_SDIR_SEPARATOR\n- 250#define TDS_SDIR_SEPARATOR \"/\"\n- 251#endif /* !TDS_SDIR_SEPARATOR */\n- 252\n- 253#ifdef HAVE_INTTYPES_H\n- 254#include \n- 255#endif\n- 256\n- 257#ifndef PRId64\n- 258#define PRId64 TDS_I64_PREFIX \"d\"\n- 259#endif\n- 260#ifndef PRIu64\n- 261#define PRIu64 TDS_I64_PREFIX \"u\"\n- 262#endif\n- 263#ifndef PRIx64\n- 264#define PRIx64 TDS_I64_PREFIX \"x\"\n- 265#endif\n- 266\n- 267#ifdef __cplusplus\n- 268#if 0\n- 269{\n- 270#endif\n- 271}\n- 272#endif\n- 273\n- 274#endif /* _tds_sysdep_private_h_ */\n+ 58static inline DLIST_ITEM_TYPE *DLIST_NAME(first)(DLIST_LIST_TYPE *list)\n+ 59{\n+ 60 return list->ring.next == &list->ring ? NULL : DLIST_ITEM(list->ring.next);\n+ 61}\n+ 62\n+ 63static inline DLIST_ITEM_TYPE *DLIST_NAME(last)(DLIST_LIST_TYPE *list)\n+ 64{\n+ 65 return list->ring.prev == &list->ring ? NULL : DLIST_ITEM(list->ring.prev);\n+ 66}\n+ 67\n+ 68static inline DLIST_ITEM_TYPE *DLIST_NAME(next)(DLIST_LIST_TYPE *list,\n+DLIST_ITEM_TYPE *item)\n+ 69{\n+ 70 return item->DLIST_NAME(item).next == &list->ring ? NULL : DLIST_ITEM(item-\n+>DLIST_NAME(item).next);\n+ 71}\n+ 72\n+ 73static inline DLIST_ITEM_TYPE *DLIST_NAME(prev)(DLIST_LIST_TYPE *list,\n+DLIST_ITEM_TYPE *item)\n+ 74{\n+ 75 return item->DLIST_NAME(item).prev == &list->ring ? NULL : DLIST_ITEM(item-\n+>DLIST_NAME(item).prev);\n+ 76}\n+ 77\n+ 78static inline void DLIST_NAME(prepend)(DLIST_LIST_TYPE *list,\n+DLIST_ITEM_TYPE *item)\n+ 79{\n+ 80 DLIST_NAME(check)(list);\n+ 81 dlist_insert_after(&list->ring, &item->DLIST_NAME(item));\n+ 82 DLIST_NAME(check)(list);\n+ 83}\n+ 84\n+ 85static inline void DLIST_NAME(append)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE\n+*item)\n+ 86{\n+ 87 DLIST_NAME(check)(list);\n+ 88 dlist_insert_after(list->ring.prev, &item->DLIST_NAME(item));\n+ 89 DLIST_NAME(check)(list);\n+ 90}\n+ 91\n+ 92static inline void DLIST_NAME(remove)(DLIST_LIST_TYPE *list, DLIST_ITEM_TYPE\n+*item)\n+ 93{\n+ 94 dlist_ring *prev = item->DLIST_NAME(item).prev, *next = item->DLIST_NAME\n+(item).next;\n+ 95 DLIST_NAME(check)(list);\n+ 96 if (prev) {\n+ 97 prev->next = next;\n+ 98 next->prev = prev;\n+ 99 }\n+ 100 item->DLIST_NAME(item).prev = NULL;\n+ 101 item->DLIST_NAME(item).next = NULL;\n+ 102 DLIST_NAME(check)(list);\n+ 103}\n+ 104\n+ 105static inline bool DLIST_NAME(in_list)(DLIST_LIST_TYPE *list,\n+DLIST_ITEM_TYPE *item)\n+ 106{\n+ 107 DLIST_NAME(check)(list);\n+ 108 return item->DLIST_NAME(item).prev != NULL || item->DLIST_NAME(item).next\n+!= NULL;\n+ 109}\n+ 110\n+ 111#undef DLIST_ITEM\n+ 112#undef DLIST_NAME\n+ 113#undef DLIST_ITEM_TYPE\n+ 114#undef DLIST_LIST_TYPE\n+ 115#undef DLIST_PREFIX\n+ 116#undef DLIST_PASTER\n+ 117#undef DLIST_EVALUATOR\n+ 118\n+dlist_ring\n+Definition dlist.h:23\n+DLIST_LIST_TYPE\n+Definition dlist.tmpl.h:34\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00458_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00458_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/popvis.h Source File\n+FreeTDS API: include/freetds/utils/dlist.h Source File\n \n \n \n \n \n \n \n@@ -70,24 +70,72 @@\n
    \n \n \n \n \n \n \n
    \n-
    popvis.h
    \n+
    dlist.h
    \n
    \n
    \n-
    1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
    \n-
    2#pragma GCC visibility pop
    \n-
    3#endif
    \n+
    1/* Dlist - dynamic list
    \n+
    2 * Copyright (C) 2016 Frediano Ziglio
    \n+
    3 *
    \n+
    4 * This program is free software; you can redistribute it and/or modify
    \n+
    5 * it under the terms of the GNU General Public License as published by
    \n+
    6 * the Free Software Foundation; either version 2 of the License, or
    \n+
    7 * (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This program is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    \n+
    12 * GNU General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU General Public License
    \n+
    15 * along with this program; if not, write to the Free Software
    \n+
    16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    \n+
    17 *
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef TDS_DLIST_H
    \n+
    21#define TDS_DLIST_H
    \n+
    22
    \n+
    \n+
    23typedef struct dlist_ring {
    \n+
    24 struct dlist_ring *next;
    \n+
    25 struct dlist_ring *prev;
    \n+\n+
    \n+
    27
    \n+
    28#if ENABLE_EXTRA_CHECKS
    \n+
    29void dlist_ring_check(dlist_ring *ring);
    \n+
    30#endif
    \n+
    31
    \n+
    32#define DLIST_FIELDS(name) \\
    \n+
    33 dlist_ring name
    \n+
    34
    \n+
    35#define DLIST_FOREACH(prefix, list, p) \\
    \n+
    36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next(list, p))
    \n+
    37
    \n+
    38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_item)
    \n+
    39{
    \n+
    40 assert(!ring_item->next && !ring_item->prev);
    \n+
    41 ring_pos->next->prev = ring_item;
    \n+
    42 ring_item->prev = ring_pos;
    \n+
    43 ring_item->next = ring_pos->next;
    \n+
    44 ring_pos->next = ring_item;
    \n+
    45 assert(ring_item->next && ring_item->prev);
    \n+
    46}
    \n+
    47
    \n+
    48#endif /* TDS_DLIST_H */
    \n+
    Definition dlist.h:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,14 +7,64 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-popvis.h\n- 1#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)\n- 2#pragma GCC visibility pop\n- 3#endif\n+ * utils\n+dlist.h\n+ 1/* Dlist - dynamic list\n+ 2 * Copyright (C) 2016 Frediano Ziglio\n+ 3 *\n+ 4 * This program is free software; you can redistribute it and/or modify\n+ 5 * it under the terms of the GNU General Public License as published by\n+ 6 * the Free Software Foundation; either version 2 of the License, or\n+ 7 * (at your option) any later version.\n+ 8 *\n+ 9 * This program is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ 12 * GNU General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU General Public License\n+ 15 * along with this program; if not, write to the Free Software\n+ 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n+ 17 *\n+ 18 */\n+ 19\n+ 20#ifndef TDS_DLIST_H\n+ 21#define TDS_DLIST_H\n+ 22\n+23typedef struct dlist_ring {\n+ 24 struct dlist_ring *next;\n+ 25 struct dlist_ring *prev;\n+ 26} dlist_ring;\n+ 27\n+ 28#if ENABLE_EXTRA_CHECKS\n+ 29void dlist_ring_check(dlist_ring *ring);\n+ 30#endif\n+ 31\n+ 32#define DLIST_FIELDS(name) \\\n+ 33 dlist_ring name\n+ 34\n+ 35#define DLIST_FOREACH(prefix, list, p) \\\n+ 36 for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next\n+(list, p))\n+ 37\n+ 38static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring\n+*ring_item)\n+ 39{\n+ 40 assert(!ring_item->next && !ring_item->prev);\n+ 41 ring_pos->next->prev = ring_item;\n+ 42 ring_item->prev = ring_pos;\n+ 43 ring_item->next = ring_pos->next;\n+ 44 ring_pos->next = ring_item;\n+ 45 assert(ring_item->next && ring_item->prev);\n+ 46}\n+ 47\n+ 48#endif /* TDS_DLIST_H */\n+dlist_ring\n+Definition dlist.h:23\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00461_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00461_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/version.h Source File\n+FreeTDS API: include/freetds/utils/des.h Source File\n \n \n \n \n \n \n \n@@ -70,53 +70,68 @@\n
    \n \n \n \n \n \n \n
    \n-
    version.h
    \n+
    des.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _tdsversion_h_
    \n-
    21#define _tdsversion_h_
    \n+
    1#ifndef DES_H
    \n+
    2#define DES_H
    \n+
    3
    \n+
    4#ifdef HAVE_NETTLE
    \n+
    5#include <nettle/des.h>
    \n+
    6
    \n+
    7typedef struct des_ctx DES_KEY;
    \n+
    8#endif
    \n+
    9
    \n+
    10#include <freetds/pushvis.h>
    \n+
    11
    \n+
    12typedef uint8_t des_cblock[8];
    \n+
    13
    \n+
    14#ifndef HAVE_NETTLE
    \n+
    \n+
    15typedef struct des_key
    \n+
    16{
    \n+
    17 uint8_t kn[16][8];
    \n+
    18 uint32_t sp[8][64];
    \n+
    19 uint8_t iperm[16][16][8];
    \n+
    20 uint8_t fperm[16][16][8];
    \n+
    21} DES_KEY;
    \n+
    \n
    22
    \n-
    23/* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */
    \n-
    24
    \n-
    25#define TDS_VERSION_NO "freetds v1.3.17"
    \n+
    23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len);
    \n+
    24void tds_des_encrypt(const DES_KEY * key, des_cblock block);
    \n+
    25#endif
    \n
    26
    \n-
    27#define TDS_VERSION_MAJOR 1
    \n-
    28#define TDS_VERSION_MINOR 3
    \n-
    29#define TDS_VERSION_SUBVERSION 17
    \n-
    30#define TDS_VERSION_BUILD_NUMBER 1202
    \n+
    27void tds_des_set_odd_parity(des_cblock key);
    \n+
    28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey, uint8_t *output);
    \n+
    29
    \n+
    30#include <freetds/popvis.h>
    \n
    31
    \n-
    32#endif
    \n+
    32#ifdef HAVE_NETTLE
    \n+
    33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)
    \n+
    34{
    \n+
    35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);
    \n+
    36}
    \n+
    37
    \n+
    38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len)
    \n+
    39{
    \n+
    40 return nettle_des_set_key(dkey, user_key);
    \n+
    41}
    \n+
    42#endif
    \n+
    43
    \n+
    44#endif /* !DES_H */
    \n+
    Definition des.h:16
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,43 +7,60 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-version.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _tdsversion_h_\n- 21#define _tdsversion_h_\n+ * utils\n+des.h\n+ 1#ifndef DES_H\n+ 2#define DES_H\n+ 3\n+ 4#ifdef HAVE_NETTLE\n+ 5#include \n+ 6\n+ 7typedef struct des_ctx DES_KEY;\n+ 8#endif\n+ 9\n+ 10#include \n+ 11\n+ 12typedef uint8_t des_cblock[8];\n+ 13\n+ 14#ifndef HAVE_NETTLE\n+15typedef struct des_key\n+ 16{\n+ 17 uint8_t kn[16][8];\n+ 18 uint32_t sp[8][64];\n+ 19 uint8_t iperm[16][16][8];\n+ 20 uint8_t fperm[16][16][8];\n+ 21} DES_KEY;\n 22\n- 23/* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */\n- 24\n- 25#define TDS_VERSION_NO \"freetds v1.3.17\"\n+ 23int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key, int len);\n+ 24void tds_des_encrypt(const DES_KEY * key, des_cblock block);\n+ 25#endif\n 26\n- 27#define TDS_VERSION_MAJOR 1\n- 28#define TDS_VERSION_MINOR 3\n- 29#define TDS_VERSION_SUBVERSION 17\n- 30#define TDS_VERSION_BUILD_NUMBER 1202\n+ 27void tds_des_set_odd_parity(des_cblock key);\n+ 28int tds_des_ecb_encrypt(const void *plaintext, int len, DES_KEY * akey,\n+uint8_t *output);\n+ 29\n+ 30#include \n 31\n- 32#endif\n+ 32#ifdef HAVE_NETTLE\n+ 33static inline void tds_des_encrypt(const DES_KEY * key, des_cblock block)\n+ 34{\n+ 35 nettle_des_encrypt(key, sizeof(des_cblock), block, block);\n+ 36}\n+ 37\n+ 38static inline int tds_des_set_key(DES_KEY * dkey, const des_cblock user_key,\n+int len)\n+ 39{\n+ 40 return nettle_des_set_key(dkey, user_key);\n+ 41}\n+ 42#endif\n+ 43\n+ 44#endif /* !DES_H */\n+des_key\n+Definition des.h:16\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00464_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00464_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/enum_cap.h Source File\n+FreeTDS API: include/freetds/utils/md5.h Source File\n \n \n \n \n \n \n \n@@ -70,179 +70,72 @@\n
    \n \n \n \n \n \n \n
    \n-
    enum_cap.h
    \n+
    md5.h
    \n
    \n
    \n-
    1typedef enum tds_request_capability
    \n-
    2 { TDS_REQ_LANG = 1
    \n-
    3 , TDS_REQ_RPC = 2
    \n-
    4 , TDS_REQ_EVT = 3
    \n-
    5 , TDS_REQ_MSTMT = 4
    \n-
    6 , TDS_REQ_BCP = 5
    \n-
    7 , TDS_REQ_CURSOR = 6
    \n-
    8 , TDS_REQ_DYNF = 7
    \n-
    9 , TDS_REQ_MSG = 8
    \n-
    10 , TDS_REQ_PARAM = 9
    \n-
    11 , TDS_REQ_DATA_INT1 = 10
    \n-
    12 , TDS_REQ_DATA_INT2 = 11
    \n-
    13 , TDS_REQ_DATA_INT4 = 12
    \n-
    14 , TDS_REQ_DATA_BIT = 13
    \n-
    15 , TDS_REQ_DATA_CHAR = 14
    \n-
    16 , TDS_REQ_DATA_VCHAR = 15
    \n-
    17 , TDS_REQ_DATA_BIN = 16
    \n-
    18 , TDS_REQ_DATA_VBIN = 17
    \n-
    19 , TDS_REQ_DATA_MNY8 = 18
    \n-
    20 , TDS_REQ_DATA_MNY4 = 19
    \n-
    21 , TDS_REQ_DATA_DATE8 = 20
    \n-
    22 , TDS_REQ_DATA_DATE4 = 21
    \n-
    23 , TDS_REQ_DATA_FLT4 = 22
    \n-
    24 , TDS_REQ_DATA_FLT8 = 23
    \n-
    25 , TDS_REQ_DATA_NUM = 24
    \n-
    26 , TDS_REQ_DATA_TEXT = 25
    \n-
    27 , TDS_REQ_DATA_IMAGE = 26
    \n-
    28 , TDS_REQ_DATA_DEC = 27
    \n-
    29 , TDS_REQ_DATA_LCHAR = 28
    \n-
    30 , TDS_REQ_DATA_LBIN = 29
    \n-
    31 , TDS_REQ_DATA_INTN = 30
    \n-
    32 , TDS_REQ_DATA_DATETIMEN = 31
    \n-
    33 , TDS_REQ_DATA_MONEYN = 32
    \n-
    34 , TDS_REQ_CSR_PREV = 33
    \n-
    35 , TDS_REQ_CSR_FIRST = 34
    \n-
    36 , TDS_REQ_CSR_LAST = 35
    \n-
    37 , TDS_REQ_CSR_ABS = 36
    \n-
    38 , TDS_REQ_CSR_REL = 37
    \n-
    39 , TDS_REQ_CSR_MULTI = 38
    \n-
    40 , TDS_REQ_CON_OOB = 39
    \n-
    41 , TDS_REQ_CON_INBAND = 40
    \n-
    42 , TDS_REQ_CON_LOGICAL = 41
    \n-
    43 , TDS_REQ_PROTO_TEXT = 42
    \n-
    44 , TDS_REQ_PROTO_BULK = 43
    \n-
    45 , TDS_REQ_URGEVT = 44
    \n-
    46 , TDS_REQ_DATA_SENSITIVITY = 45
    \n-
    47 , TDS_REQ_DATA_BOUNDARY = 46
    \n-
    48 , TDS_REQ_PROTO_DYNAMIC = 47
    \n-
    49 , TDS_REQ_PROTO_DYNPROC = 48
    \n-
    50 , TDS_REQ_DATA_FLTN = 49
    \n-
    51 , TDS_REQ_DATA_BITN = 50
    \n-
    52 , TDS_REQ_DATA_INT8 = 51
    \n-
    53 , TDS_REQ_DATA_VOID = 52
    \n-
    54 , TDS_REQ_DOL_BULK = 53
    \n-
    55 , TDS_REQ_OBJECT_JAVA1 = 54
    \n-
    56 , TDS_REQ_OBJECT_CHAR = 55
    \n-
    57 , TDS_REQ_OBJECT_BINARY = 57
    \n-
    58 , TDS_REQ_DATA_COLUMNSTATUS = 58
    \n-
    59 , TDS_REQ_WIDETABLE = 59
    \n-
    60 , TDS_REQ_DATA_UINT2 = 61
    \n-
    61 , TDS_REQ_DATA_UINT4 = 62
    \n-
    62 , TDS_REQ_DATA_UINT8 = 63
    \n-
    63 , TDS_REQ_DATA_UINTN = 64
    \n-
    64 , TDS_REQ_CUR_IMPLICIT = 65
    \n-
    65 , TDS_REQ_DATA_NLBIN = 66
    \n-
    66 , TDS_REQ_IMAGE_NCHAR = 67
    \n-
    67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */
    \n-
    68 , TDS_REQ_BLOB_NCHAR_8 = 69
    \n-
    69 , TDS_REQ_BLOB_NCHAR_SCSU = 70
    \n-
    70 , TDS_REQ_DATA_DATE = 71
    \n-
    71 , TDS_REQ_DATA_TIME = 72
    \n-
    72 , TDS_REQ_DATA_INTERVAL = 73
    \n-
    73 , TDS_REQ_CSR_SCROLL = 74
    \n-
    74 , TDS_REQ_CSR_SENSITIVE = 75
    \n-
    75 , TDS_REQ_CSR_INSENSITIVE = 76
    \n-
    76 , TDS_REQ_CSR_SEMISENSITIVE = 77
    \n-
    77 , TDS_REQ_CSR_KEYSETDRIVEN = 78
    \n-
    78 , TDS_REQ_SRVPKTSIZE = 79
    \n-
    79 , TDS_REQ_DATA_UNITEXT = 80
    \n-
    80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81
    \n-
    81 , TDS_REQ_DATA_SINT1 = 82
    \n-
    82 , TDS_REQ_LARGEIDENT = 83
    \n-
    83 , TDS_REQ_BLOB_NCHAR_16 = 84
    \n-
    84 , TDS_REQ_DATA_XML = 85
    \n-
    85 , TDS_REQ_CURINFO3 = 86
    \n-
    86 , TDS_REQ_DBRPC2 = 87
    \n-
    87 , TDS_REQ_MIGRATE = 89
    \n-
    88 , TDS_REQ_DATA_BIGDATETIME = 93
    \n-
    89 , TDS_REQ_DATA_BIGTIME = 94
    \n-
    90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */
    \n-
    91 } TDS_REQUEST_CAPABILITY;
    \n-
    92
    \n-
    93typedef enum tds_response_capability
    \n-
    94 { TDS_RES_NOMSG = 1
    \n-
    95 , TDS_RES_NOEED = 2
    \n-
    96 , TDS_RES_NOPARAM = 3
    \n-
    97 , TDS_RES_DATA_NOINT1 = 4
    \n-
    98 , TDS_RES_DATA_NOINT2 = 5
    \n-
    99 , TDS_RES_DATA_NOINT4 = 6
    \n-
    100 , TDS_RES_DATA_NOBIT = 7
    \n-
    101 , TDS_RES_DATA_NOCHAR = 8
    \n-
    102 , TDS_RES_DATA_NOVCHAR = 9
    \n-
    103 , TDS_RES_DATA_NOBIN = 10
    \n-
    104 , TDS_RES_DATA_NOVBIN = 11
    \n-
    105 , TDS_RES_DATA_NOMNY8 = 12
    \n-
    106 , TDS_RES_DATA_NOMNY4 = 13
    \n-
    107 , TDS_RES_DATA_NODATE8 = 14
    \n-
    108 , TDS_RES_DATA_NODATE4 = 15
    \n-
    109 , TDS_RES_DATA_NOFLT4 = 16
    \n-
    110 , TDS_RES_DATA_NOFLT8 = 17
    \n-
    111 , TDS_RES_DATA_NONUM = 18
    \n-
    112 , TDS_RES_DATA_NOTEXT = 19
    \n-
    113 , TDS_RES_DATA_NOIMAGE = 20
    \n-
    114 , TDS_RES_DATA_NODEC = 21
    \n-
    115 , TDS_RES_DATA_NOLCHAR = 22
    \n-
    116 , TDS_RES_DATA_NOLBIN = 23
    \n-
    117 , TDS_RES_DATA_INTN = 24
    \n-
    118 , TDS_RES_DATA_NODATETIMEN = 25
    \n-
    119 , TDS_RES_DATA_NOMONEYN = 26
    \n-
    120 , TDS_RES_CON_NOOOB = 27
    \n-
    121 , TDS_RES_CON_NOINBAND = 28
    \n-
    122 , TDS_RES_PROTO_NOTEXT = 29
    \n-
    123 , TDS_RES_PROTO_NOBULK = 30
    \n-
    124 , TDS_RES_DATA_NOSENSITIVITY = 31
    \n-
    125 , TDS_RES_DATA_NOBOUNDARY = 32
    \n-
    126 , TDS_RES_NOTDSDEBUG = 33
    \n-
    127 , TDS_RES_NOSTRIPBLANKS = 34
    \n-
    128 , TDS_RES_DATA_NOINT8 = 35
    \n-
    129 , TDS_RES_OBJECT_NOJAVA1 = 36
    \n-
    130 , TDS_RES_OBJECT_NOCHAR = 37
    \n-
    131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38
    \n-
    132 , TDS_RES_OBJECT_NOBINARY = 39
    \n-
    133 , TDS_RES_DATA_NOUINT2 = 41
    \n-
    134 , TDS_RES_DATA_NOUINT4 = 42
    \n-
    135 , TDS_RES_DATA_NOUINT8 = 43
    \n-
    136 , TDS_RES_DATA_NOUINTN = 44
    \n-
    137 , TDS_RES_NO_WIDETABLES = 45
    \n-
    138 , TDS_RES_DATA_NONLBIN = 46
    \n-
    139 , TDS_RES_IMAGE_NONCHAR = 47
    \n-
    140 , TDS_RES_BLOB_NONCHAR_16 = 48
    \n-
    141 , TDS_RES_BLOB_NONCHAR_8 = 49
    \n-
    142 , TDS_RES_BLOB_NONCHAR_SCSU = 50
    \n-
    143 , TDS_RES_DATA_NODATE = 51
    \n-
    144 , TDS_RES_DATA_NOTIME = 52
    \n-
    145 , TDS_RES_DATA_NOINTERVAL = 53
    \n-
    146 , TDS_RES_DATA_NOUNITEXT = 54
    \n-
    147 , TDS_RES_DATA_NOSINT1 = 55
    \n-
    148 , TDS_RES_NO_LARGEIDENT = 56
    \n-
    149 , TDS_RES_NO_BLOB_NCHAR_16 = 57
    \n-
    150 , TDS_RES_NO_SRVPKTSIZE = 58
    \n-
    151 , TDS_RES_DATA_NOXML = 59
    \n-
    152 , TDS_RES_NONINT_RETURN_VALUE = 60
    \n-
    153 , TDS_RES_NOXNLDATA = 61
    \n-
    154 , TDS_RES_SUPPRESS_FMT = 62
    \n-
    155 , TDS_RES_SUPPRESS_DONEINPROC = 63
    \n-
    156 , TDS_RES_FORCE_ROWFMT2 = 64
    \n-
    157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */
    \n-
    158 } TDS_RESPONSE_CAPABILITY;
    \n+
    1#ifndef MD5_H
    \n+
    2#define MD5_H
    \n+
    3
    \n+
    4#ifndef HAVE_NETTLE
    \n+
    5
    \n+
    6#include <freetds/pushvis.h>
    \n+
    7
    \n+
    \n+
    8struct MD5Context {
    \n+
    9 uint32_t buf[4];
    \n+
    10 uint64_t bytes;
    \n+
    11 uint32_t in[16];
    \n+
    12};
    \n+
    \n+
    13
    \n+
    14void MD5Init(struct MD5Context *context);
    \n+
    15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);
    \n+
    16void MD5Final(struct MD5Context *context, uint8_t *digest);
    \n+
    17
    \n+
    18/*
    \n+
    19 * This is needed to make RSAREF happy on some MS-DOS compilers.
    \n+
    20 */
    \n+
    21typedef struct MD5Context MD5_CTX;
    \n+
    22
    \n+
    23#include <freetds/popvis.h>
    \n+
    24
    \n+
    25#else
    \n+
    26
    \n+
    27#include <nettle/md5.h>
    \n+
    28
    \n+
    29typedef struct md5_ctx MD5_CTX;
    \n+
    30
    \n+
    31static inline void MD5Init(MD5_CTX *ctx)
    \n+
    32{
    \n+
    33 nettle_md5_init(ctx);
    \n+
    34}
    \n+
    35
    \n+
    36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)
    \n+
    37{
    \n+
    38 nettle_md5_update(ctx, len, buf);
    \n+
    39}
    \n+
    40
    \n+
    41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)
    \n+
    42{
    \n+
    43 nettle_md5_digest(ctx, 16, digest);
    \n+
    44}
    \n+
    45
    \n+
    46#endif
    \n+
    47
    \n+
    48#endif /* !MD5_H */
    \n+
    Definition md5.h:8
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,169 +7,62 @@\n \n \n Loading...\n Searching...\n No Matches\n * include\n * freetds\n-enum_cap.h\n- 1typedef enum tds_request_capability\n- 2 { TDS_REQ_LANG = 1\n- 3 , TDS_REQ_RPC = 2\n- 4 , TDS_REQ_EVT = 3\n- 5 , TDS_REQ_MSTMT = 4\n- 6 , TDS_REQ_BCP = 5\n- 7 , TDS_REQ_CURSOR = 6\n- 8 , TDS_REQ_DYNF = 7\n- 9 , TDS_REQ_MSG = 8\n- 10 , TDS_REQ_PARAM = 9\n- 11 , TDS_REQ_DATA_INT1 = 10\n- 12 , TDS_REQ_DATA_INT2 = 11\n- 13 , TDS_REQ_DATA_INT4 = 12\n- 14 , TDS_REQ_DATA_BIT = 13\n- 15 , TDS_REQ_DATA_CHAR = 14\n- 16 , TDS_REQ_DATA_VCHAR = 15\n- 17 , TDS_REQ_DATA_BIN = 16\n- 18 , TDS_REQ_DATA_VBIN = 17\n- 19 , TDS_REQ_DATA_MNY8 = 18\n- 20 , TDS_REQ_DATA_MNY4 = 19\n- 21 , TDS_REQ_DATA_DATE8 = 20\n- 22 , TDS_REQ_DATA_DATE4 = 21\n- 23 , TDS_REQ_DATA_FLT4 = 22\n- 24 , TDS_REQ_DATA_FLT8 = 23\n- 25 , TDS_REQ_DATA_NUM = 24\n- 26 , TDS_REQ_DATA_TEXT = 25\n- 27 , TDS_REQ_DATA_IMAGE = 26\n- 28 , TDS_REQ_DATA_DEC = 27\n- 29 , TDS_REQ_DATA_LCHAR = 28\n- 30 , TDS_REQ_DATA_LBIN = 29\n- 31 , TDS_REQ_DATA_INTN = 30\n- 32 , TDS_REQ_DATA_DATETIMEN = 31\n- 33 , TDS_REQ_DATA_MONEYN = 32\n- 34 , TDS_REQ_CSR_PREV = 33\n- 35 , TDS_REQ_CSR_FIRST = 34\n- 36 , TDS_REQ_CSR_LAST = 35\n- 37 , TDS_REQ_CSR_ABS = 36\n- 38 , TDS_REQ_CSR_REL = 37\n- 39 , TDS_REQ_CSR_MULTI = 38\n- 40 , TDS_REQ_CON_OOB = 39\n- 41 , TDS_REQ_CON_INBAND = 40\n- 42 , TDS_REQ_CON_LOGICAL = 41\n- 43 , TDS_REQ_PROTO_TEXT = 42\n- 44 , TDS_REQ_PROTO_BULK = 43\n- 45 , TDS_REQ_URGEVT = 44\n- 46 , TDS_REQ_DATA_SENSITIVITY = 45\n- 47 , TDS_REQ_DATA_BOUNDARY = 46\n- 48 , TDS_REQ_PROTO_DYNAMIC = 47\n- 49 , TDS_REQ_PROTO_DYNPROC = 48\n- 50 , TDS_REQ_DATA_FLTN = 49\n- 51 , TDS_REQ_DATA_BITN = 50\n- 52 , TDS_REQ_DATA_INT8 = 51\n- 53 , TDS_REQ_DATA_VOID = 52\n- 54 , TDS_REQ_DOL_BULK = 53\n- 55 , TDS_REQ_OBJECT_JAVA1 = 54\n- 56 , TDS_REQ_OBJECT_CHAR = 55\n- 57 , TDS_REQ_OBJECT_BINARY = 57\n- 58 , TDS_REQ_DATA_COLUMNSTATUS = 58\n- 59 , TDS_REQ_WIDETABLE = 59\n- 60 , TDS_REQ_DATA_UINT2 = 61\n- 61 , TDS_REQ_DATA_UINT4 = 62\n- 62 , TDS_REQ_DATA_UINT8 = 63\n- 63 , TDS_REQ_DATA_UINTN = 64\n- 64 , TDS_REQ_CUR_IMPLICIT = 65\n- 65 , TDS_REQ_DATA_NLBIN = 66\n- 66 , TDS_REQ_IMAGE_NCHAR = 67\n- 67 , TDS_OBS_BLOB_NCHAR_16 = 68 /* obsolete */\n- 68 , TDS_REQ_BLOB_NCHAR_8 = 69\n- 69 , TDS_REQ_BLOB_NCHAR_SCSU = 70\n- 70 , TDS_REQ_DATA_DATE = 71\n- 71 , TDS_REQ_DATA_TIME = 72\n- 72 , TDS_REQ_DATA_INTERVAL = 73\n- 73 , TDS_REQ_CSR_SCROLL = 74\n- 74 , TDS_REQ_CSR_SENSITIVE = 75\n- 75 , TDS_REQ_CSR_INSENSITIVE = 76\n- 76 , TDS_REQ_CSR_SEMISENSITIVE = 77\n- 77 , TDS_REQ_CSR_KEYSETDRIVEN = 78\n- 78 , TDS_REQ_SRVPKTSIZE = 79\n- 79 , TDS_REQ_DATA_UNITEXT = 80\n- 80 , TDS_REQ_CAP_CLUSTERFAILOVER = 81\n- 81 , TDS_REQ_DATA_SINT1 = 82\n- 82 , TDS_REQ_LARGEIDENT = 83\n- 83 , TDS_REQ_BLOB_NCHAR_16 = 84\n- 84 , TDS_REQ_DATA_XML = 85\n- 85 , TDS_REQ_CURINFO3 = 86\n- 86 , TDS_REQ_DBRPC2 = 87\n- 87 , TDS_REQ_MIGRATE = 89\n- 88 , TDS_REQ_DATA_BIGDATETIME = 93\n- 89 , TDS_REQ_DATA_BIGTIME = 94\n- 90 , TDS_REQ_CAP_MAX = 94 /* repeats last enum */\n- 91 } TDS_REQUEST_CAPABILITY;\n- 92\n- 93typedef enum tds_response_capability\n- 94 { TDS_RES_NOMSG = 1\n- 95 , TDS_RES_NOEED = 2\n- 96 , TDS_RES_NOPARAM = 3\n- 97 , TDS_RES_DATA_NOINT1 = 4\n- 98 , TDS_RES_DATA_NOINT2 = 5\n- 99 , TDS_RES_DATA_NOINT4 = 6\n- 100 , TDS_RES_DATA_NOBIT = 7\n- 101 , TDS_RES_DATA_NOCHAR = 8\n- 102 , TDS_RES_DATA_NOVCHAR = 9\n- 103 , TDS_RES_DATA_NOBIN = 10\n- 104 , TDS_RES_DATA_NOVBIN = 11\n- 105 , TDS_RES_DATA_NOMNY8 = 12\n- 106 , TDS_RES_DATA_NOMNY4 = 13\n- 107 , TDS_RES_DATA_NODATE8 = 14\n- 108 , TDS_RES_DATA_NODATE4 = 15\n- 109 , TDS_RES_DATA_NOFLT4 = 16\n- 110 , TDS_RES_DATA_NOFLT8 = 17\n- 111 , TDS_RES_DATA_NONUM = 18\n- 112 , TDS_RES_DATA_NOTEXT = 19\n- 113 , TDS_RES_DATA_NOIMAGE = 20\n- 114 , TDS_RES_DATA_NODEC = 21\n- 115 , TDS_RES_DATA_NOLCHAR = 22\n- 116 , TDS_RES_DATA_NOLBIN = 23\n- 117 , TDS_RES_DATA_INTN = 24\n- 118 , TDS_RES_DATA_NODATETIMEN = 25\n- 119 , TDS_RES_DATA_NOMONEYN = 26\n- 120 , TDS_RES_CON_NOOOB = 27\n- 121 , TDS_RES_CON_NOINBAND = 28\n- 122 , TDS_RES_PROTO_NOTEXT = 29\n- 123 , TDS_RES_PROTO_NOBULK = 30\n- 124 , TDS_RES_DATA_NOSENSITIVITY = 31\n- 125 , TDS_RES_DATA_NOBOUNDARY = 32\n- 126 , TDS_RES_NOTDSDEBUG = 33\n- 127 , TDS_RES_NOSTRIPBLANKS = 34\n- 128 , TDS_RES_DATA_NOINT8 = 35\n- 129 , TDS_RES_OBJECT_NOJAVA1 = 36\n- 130 , TDS_RES_OBJECT_NOCHAR = 37\n- 131 , TDS_RES_DATA_NOCOLUMNSTATUS = 38\n- 132 , TDS_RES_OBJECT_NOBINARY = 39\n- 133 , TDS_RES_DATA_NOUINT2 = 41\n- 134 , TDS_RES_DATA_NOUINT4 = 42\n- 135 , TDS_RES_DATA_NOUINT8 = 43\n- 136 , TDS_RES_DATA_NOUINTN = 44\n- 137 , TDS_RES_NO_WIDETABLES = 45\n- 138 , TDS_RES_DATA_NONLBIN = 46\n- 139 , TDS_RES_IMAGE_NONCHAR = 47\n- 140 , TDS_RES_BLOB_NONCHAR_16 = 48\n- 141 , TDS_RES_BLOB_NONCHAR_8 = 49\n- 142 , TDS_RES_BLOB_NONCHAR_SCSU = 50\n- 143 , TDS_RES_DATA_NODATE = 51\n- 144 , TDS_RES_DATA_NOTIME = 52\n- 145 , TDS_RES_DATA_NOINTERVAL = 53\n- 146 , TDS_RES_DATA_NOUNITEXT = 54\n- 147 , TDS_RES_DATA_NOSINT1 = 55\n- 148 , TDS_RES_NO_LARGEIDENT = 56\n- 149 , TDS_RES_NO_BLOB_NCHAR_16 = 57\n- 150 , TDS_RES_NO_SRVPKTSIZE = 58\n- 151 , TDS_RES_DATA_NOXML = 59\n- 152 , TDS_RES_NONINT_RETURN_VALUE = 60\n- 153 , TDS_RES_NOXNLDATA = 61\n- 154 , TDS_RES_SUPPRESS_FMT = 62\n- 155 , TDS_RES_SUPPRESS_DONEINPROC = 63\n- 156 , TDS_RES_FORCE_ROWFMT2 = 64\n- 157 , TDS_RES_CAP_MAX = 64 /* repeats last enum */\n- 158 } TDS_RESPONSE_CAPABILITY;\n+ * utils\n+md5.h\n+ 1#ifndef MD5_H\n+ 2#define MD5_H\n+ 3\n+ 4#ifndef HAVE_NETTLE\n+ 5\n+ 6#include \n+ 7\n+8struct MD5Context {\n+ 9 uint32_t buf[4];\n+ 10 uint64_t bytes;\n+ 11 uint32_t in[16];\n+ 12};\n+ 13\n+ 14void MD5Init(struct MD5Context *context);\n+ 15void MD5Update(struct MD5Context *context, const uint8_t *buf, size_t len);\n+ 16void MD5Final(struct MD5Context *context, uint8_t *digest);\n+ 17\n+ 18/*\n+ 19 * This is needed to make RSAREF happy on some MS-DOS compilers.\n+ 20 */\n+ 21typedef struct MD5Context MD5_CTX;\n+ 22\n+ 23#include \n+ 24\n+ 25#else\n+ 26\n+ 27#include \n+ 28\n+ 29typedef struct md5_ctx MD5_CTX;\n+ 30\n+ 31static inline void MD5Init(MD5_CTX *ctx)\n+ 32{\n+ 33 nettle_md5_init(ctx);\n+ 34}\n+ 35\n+ 36static inline void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)\n+ 37{\n+ 38 nettle_md5_update(ctx, len, buf);\n+ 39}\n+ 40\n+ 41static inline void MD5Final(MD5_CTX *ctx, uint8_t *digest)\n+ 42{\n+ 43 nettle_md5_digest(ctx, 16, digest);\n+ 44}\n+ 45\n+ 46#endif\n+ 47\n+ 48#endif /* !MD5_H */\n+MD5Context\n+Definition md5.h:8\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00467_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00467_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/ctpublic.h Source File\n+FreeTDS API: include/freetds/windows.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n
    \n \n \n \n \n
    \n \n+
  • include
  • freetds
  • \n
    \n \n
    \n-
    ctpublic.h
    \n+
    windows.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 2018 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,140 +96,24 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _ctpublic_h_
    \n-
    21#define _ctpublic_h_
    \n+
    20#ifndef freetds_windows_h_
    \n+
    21#define freetds_windows_h_
    \n
    22
    \n-
    23#include <cspublic.h>
    \n-
    24
    \n-
    25#undef TDS_STATIC_CAST
    \n-
    26#ifdef __cplusplus
    \n-
    27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n-
    28extern "C"
    \n-
    29{
    \n-
    30#if 0
    \n-
    31}
    \n-
    32#endif
    \n-
    33#else
    \n-
    34#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n-
    35#endif
    \n-
    36
    \n-
    37/*
    \n-
    38** define for each CT-Lib API
    \n-
    39*/
    \n-
    40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)
    \n-
    41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)
    \n-
    42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)
    \n-
    43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)
    \n-
    44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)
    \n-
    45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)
    \n-
    46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)
    \n-
    47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)
    \n-
    48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)
    \n-
    49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)
    \n-
    50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)
    \n-
    51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)
    \n-
    52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)
    \n-
    53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)
    \n-
    54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)
    \n-
    55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)
    \n-
    56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)
    \n-
    57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)
    \n-
    58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)
    \n-
    59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)
    \n-
    60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)
    \n-
    61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)
    \n-
    62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)
    \n-
    63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)
    \n-
    64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)
    \n-
    65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)
    \n-
    66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)
    \n-
    67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)
    \n-
    68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)
    \n-
    69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)
    \n-
    70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)
    \n-
    71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)
    \n-
    72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)
    \n-
    73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)
    \n-
    74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)
    \n-
    75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)
    \n-
    76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)
    \n-
    77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)
    \n-
    78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)
    \n-
    79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)
    \n-
    80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)
    \n-
    81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)
    \n-
    82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)
    \n-
    83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)
    \n-
    84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)
    \n-
    85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)
    \n-
    86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)
    \n-
    87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)
    \n-
    88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)
    \n-
    89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)
    \n-
    90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)
    \n-
    91
    \n-
    92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10:48:26 freddy77 Exp $";
    \n-
    93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, no_unused_ctpublic_h_warn };
    \n-
    94
    \n-
    95
    \n-
    96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);
    \n-
    97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);
    \n-
    98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n-
    99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT snamelen);
    \n-
    100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);
    \n-
    101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);
    \n-
    102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);
    \n-
    103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);
    \n-
    104CS_RETCODE ct_con_drop(CS_CONNECTION * con);
    \n-
    105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);
    \n-
    106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, CS_INT buflen, CS_INT option);
    \n-
    107CS_RETCODE ct_send(CS_COMMAND * cmd);
    \n-
    108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);
    \n-
    109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);
    \n-
    110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read);
    \n-
    111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n-
    112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n-
    113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt);
    \n-
    114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, CS_INT type, CS_VOID * func);
    \n-
    115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);
    \n-
    116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);
    \n-
    117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);
    \n-
    122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_IODESC * iodesc);
    \n-
    123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, CS_INT capability, CS_VOID * value);
    \n-
    124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT idlen, CS_CHAR * buffer, CS_INT buflen);
    \n-
    125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT datalen, CS_SMALLINT indicator);
    \n-
    126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT * datalen, CS_SMALLINT * indicator);
    \n-
    127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_VOID * param, CS_INT paramlen, CS_INT * outlen);
    \n-
    128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT milliseconds, CS_CONNECTION ** compconn,
    \n-
    129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);
    \n-
    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);
    \n-
    131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
    \n-
    132
    \n-
    133#ifdef __cplusplus
    \n-
    134#if 0
    \n-
    135{
    \n-
    136#endif
    \n-
    137}
    \n-
    138#endif
    \n-
    139
    \n-
    140#endif
    \n-
    Definition cstypes.h:97
    \n-
    Definition cstypes.h:114
    \n-
    Definition ctlib.h:75
    \n-
    Definition ctlib.h:117
    \n-
    Definition ctlib.h:212
    \n+
    23#ifdef _WIN32
    \n+
    24#include <winsock2.h>
    \n+
    25#include <ws2tcpip.h>
    \n+
    26#include <windows.h>
    \n+
    27#endif
    \n+
    28
    \n+
    29#endif /* freetds_windows_h_ */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,18 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-ctpublic.h\n+ * freetds\n+windows.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 2018 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,165 +27,20 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _ctpublic_h_\n- 21#define _ctpublic_h_\n+ 20#ifndef freetds_windows_h_\n+ 21#define freetds_windows_h_\n 22\n- 23#include \n- 24\n- 25#undef TDS_STATIC_CAST\n- 26#ifdef __cplusplus\n- 27#define TDS_STATIC_CAST(type, a) static_cast(a)\n- 28extern \"C\"\n- 29{\n- 30#if 0\n- 31}\n- 32#endif\n- 33#else\n- 34#define TDS_STATIC_CAST(type, a) ((type)(a))\n- 35#endif\n- 36\n- 37/*\n- 38** define for each CT-Lib API\n- 39*/\n- 40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)\n- 41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)\n- 42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)\n- 43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)\n- 44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)\n- 45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)\n- 46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)\n- 47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)\n- 48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)\n- 49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)\n- 50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)\n- 51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)\n- 52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)\n- 53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)\n- 54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)\n- 55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)\n- 56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)\n- 57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)\n- 58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)\n- 59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)\n- 60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)\n- 61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)\n- 62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)\n- 63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)\n- 64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)\n- 65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)\n- 66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)\n- 67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)\n- 68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)\n- 69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)\n- 70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)\n- 71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)\n- 72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)\n- 73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)\n- 74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)\n- 75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)\n- 76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)\n- 77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)\n- 78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)\n- 79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)\n- 80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)\n- 81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)\n- 82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)\n- 83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)\n- 84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)\n- 85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)\n- 86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)\n- 87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)\n- 88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)\n- 89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)\n- 90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)\n- 91\n- 92static const char rcsid_ctpublic_h[] = \"$Id: ctpublic.h,v 1.14 2005-05-28\n-10:48:26 freddy77 Exp $\";\n- 93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h,\n-no_unused_ctpublic_h_warn };\n- 94\n- 95\n- 96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);\n- 97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);\n- 98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);\n- 99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT\n-snamelen);\n- 100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);\n- 101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);\n- 102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);\n- 103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);\n- 104CS_RETCODE ct_con_drop(CS_CONNECTION * con);\n- 105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);\n- 106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID *\n-buffer, CS_INT buflen, CS_INT option);\n- 107CS_RETCODE ct_send(CS_COMMAND * cmd);\n- 108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);\n- 109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt,\n-CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);\n- 110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT\n-option, CS_INT * rows_read);\n- 111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer,\n-CS_INT buflen, CS_INT * out_len);\n- 112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer,\n-CS_INT buflen, CS_INT * out_len);\n- 113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT *\n-datafmt);\n- 114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT\n-action, CS_INT type, CS_VOID * func);\n- 115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);\n- 116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);\n- 117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n- 118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n- 119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n- 120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer,\n-CS_INT buflen, CS_INT * outlen);\n- 121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);\n- 122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum,\n-CS_IODESC * iodesc);\n- 123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type,\n-CS_INT capability, CS_VOID * value);\n- 124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT\n-idlen, CS_CHAR * buffer, CS_INT buflen);\n- 125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data,\n-CS_INT datalen, CS_SMALLINT indicator);\n- 126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID *\n-data, CS_INT * datalen, CS_SMALLINT * indicator);\n- 127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option,\n-CS_VOID * param, CS_INT paramlen, CS_INT * outlen);\n- 128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT\n-milliseconds, CS_CONNECTION ** compconn,\n- 129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);\n- 130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT\n-namelen, CS_CHAR * text, CS_INT tlen, CS_INT option);\n- 131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type,\n-CS_INT idx, CS_VOID * buffer);\n- 132\n- 133#ifdef __cplusplus\n- 134#if 0\n- 135{\n- 136#endif\n- 137}\n- 138#endif\n- 139\n- 140#endif\n-_cs_iodesc\n-Definition cstypes.h:97\n-_cs_datafmt\n-Definition cstypes.h:114\n-_cs_context\n-Definition ctlib.h:75\n-_cs_connection\n-Definition ctlib.h:117\n-_cs_command\n-Definition ctlib.h:212\n+ 23#ifdef _WIN32\n+ 24#include \n+ 25#include \n+ 26#include \n+ 27#endif\n+ 28\n+ 29#endif /* freetds_windows_h_ */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00470_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00470_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/sybfront.h Source File\n+FreeTDS API: include/ctpublic.h Source File\n \n \n \n \n \n \n \n@@ -74,15 +74,15 @@\n \n
    \n \n
    \n \n
    \n-
    sybfront.h
    \n+
    ctpublic.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n@@ -96,42 +96,140 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef SYBFRONT_h
    \n-
    21#define SYBFRONT_h
    \n+
    20#ifndef _ctpublic_h_
    \n+
    21#define _ctpublic_h_
    \n
    22
    \n-
    23#include "sybdb.h"
    \n+
    23#include <cspublic.h>
    \n
    24
    \n-
    25#ifdef __cplusplus
    \n-
    26extern "C"
    \n-
    27{
    \n-
    28#if 0
    \n-
    29}
    \n-
    30#endif
    \n-
    31#endif
    \n-
    32
    \n-
    33static const char rcsid_sybfront_h[] = "$Id: sybfront.h,v 1.3 2004-10-28 12:42:12 freddy77 Exp $";
    \n-
    34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h, no_unused_sybfront_h_warn };
    \n-
    35
    \n+
    25#undef TDS_STATIC_CAST
    \n+
    26#ifdef __cplusplus
    \n+
    27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n+
    28extern "C"
    \n+
    29{
    \n+
    30#if 0
    \n+
    31}
    \n+
    32#endif
    \n+
    33#else
    \n+
    34#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n+
    35#endif
    \n
    36
    \n-
    37
    \n-
    38#ifdef __cplusplus
    \n-
    39#if 0
    \n-
    40{
    \n-
    41#endif
    \n-
    42}
    \n-
    43#endif
    \n-
    44
    \n-
    45
    \n-
    46#endif
    \n-
    Primary include file for db-lib applications.
    \n+
    37/*
    \n+
    38** define for each CT-Lib API
    \n+
    39*/
    \n+
    40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)
    \n+
    41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)
    \n+
    42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)
    \n+
    43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)
    \n+
    44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)
    \n+
    45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)
    \n+
    46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)
    \n+
    47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)
    \n+
    48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)
    \n+
    49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)
    \n+
    50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)
    \n+
    51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)
    \n+
    52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)
    \n+
    53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)
    \n+
    54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)
    \n+
    55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)
    \n+
    56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)
    \n+
    57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)
    \n+
    58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)
    \n+
    59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)
    \n+
    60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)
    \n+
    61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)
    \n+
    62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)
    \n+
    63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)
    \n+
    64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)
    \n+
    65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)
    \n+
    66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)
    \n+
    67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)
    \n+
    68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)
    \n+
    69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)
    \n+
    70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)
    \n+
    71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)
    \n+
    72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)
    \n+
    73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)
    \n+
    74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)
    \n+
    75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)
    \n+
    76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)
    \n+
    77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)
    \n+
    78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)
    \n+
    79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)
    \n+
    80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)
    \n+
    81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)
    \n+
    82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)
    \n+
    83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)
    \n+
    84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)
    \n+
    85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)
    \n+
    86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)
    \n+
    87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)
    \n+
    88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)
    \n+
    89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)
    \n+
    90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)
    \n+
    91
    \n+
    92static const char rcsid_ctpublic_h[] = "$Id: ctpublic.h,v 1.14 2005-05-28 10:48:26 freddy77 Exp $";
    \n+
    93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h, no_unused_ctpublic_h_warn };
    \n+
    94
    \n+
    95
    \n+
    96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);
    \n+
    97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);
    \n+
    98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n+
    99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT snamelen);
    \n+
    100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);
    \n+
    101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);
    \n+
    102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);
    \n+
    103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);
    \n+
    104CS_RETCODE ct_con_drop(CS_CONNECTION * con);
    \n+
    105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);
    \n+
    106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID * buffer, CS_INT buflen, CS_INT option);
    \n+
    107CS_RETCODE ct_send(CS_COMMAND * cmd);
    \n+
    108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);
    \n+
    109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);
    \n+
    110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read);
    \n+
    111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n+
    112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);
    \n+
    113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt);
    \n+
    114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT action, CS_INT type, CS_VOID * func);
    \n+
    115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);
    \n+
    116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);
    \n+
    117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);
    \n+
    122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum, CS_IODESC * iodesc);
    \n+
    123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type, CS_INT capability, CS_VOID * value);
    \n+
    124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT idlen, CS_CHAR * buffer, CS_INT buflen);
    \n+
    125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT datalen, CS_SMALLINT indicator);
    \n+
    126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data, CS_INT * datalen, CS_SMALLINT * indicator);
    \n+
    127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option, CS_VOID * param, CS_INT paramlen, CS_INT * outlen);
    \n+
    128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT milliseconds, CS_CONNECTION ** compconn,
    \n+
    129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);
    \n+
    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);
    \n+
    131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
    \n+
    132
    \n+
    133#ifdef __cplusplus
    \n+
    134#if 0
    \n+
    135{
    \n+
    136#endif
    \n+
    137}
    \n+
    138#endif
    \n+
    139
    \n+
    140#endif
    \n+
    Definition cstypes.h:97
    \n+
    Definition cstypes.h:114
    \n+
    Definition ctlib.h:75
    \n+
    Definition ctlib.h:117
    \n+
    Definition ctlib.h:212
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,15 +6,15 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-sybfront.h\n+ctpublic.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n 2 * Copyright (C) 1998-1999 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n@@ -26,41 +26,165 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef SYBFRONT_h\n- 21#define SYBFRONT_h\n+ 20#ifndef _ctpublic_h_\n+ 21#define _ctpublic_h_\n 22\n- 23#include \"sybdb.h\"\n+ 23#include \n 24\n- 25#ifdef __cplusplus\n- 26extern \"C\"\n- 27{\n- 28#if 0\n- 29}\n- 30#endif\n- 31#endif\n- 32\n- 33static const char rcsid_sybfront_h[] = \"$Id: sybfront.h,v 1.3 2004-10-28 12:\n-42:12 freddy77 Exp $\";\n- 34static const void *const no_unused_sybfront_h_warn[] = { rcsid_sybfront_h,\n-no_unused_sybfront_h_warn };\n- 35\n+ 25#undef TDS_STATIC_CAST\n+ 26#ifdef __cplusplus\n+ 27#define TDS_STATIC_CAST(type, a) static_cast(a)\n+ 28extern \"C\"\n+ 29{\n+ 30#if 0\n+ 31}\n+ 32#endif\n+ 33#else\n+ 34#define TDS_STATIC_CAST(type, a) ((type)(a))\n+ 35#endif\n 36\n- 37\n- 38#ifdef __cplusplus\n- 39#if 0\n- 40{\n- 41#endif\n- 42}\n- 43#endif\n- 44\n- 45\n- 46#endif\n-sybdb.h\n-Primary include file for db-lib applications.\n+ 37/*\n+ 38** define for each CT-Lib API\n+ 39*/\n+ 40#define CT_BIND TDS_STATIC_CAST(CS_INT, 0)\n+ 41#define CT_BR_COLUMN TDS_STATIC_CAST(CS_INT, 1)\n+ 42#define CT_BR_TABLE TDS_STATIC_CAST(CS_INT, 2)\n+ 43#define CT_CALLBACK TDS_STATIC_CAST(CS_INT, 3)\n+ 44#define CT_CANCEL TDS_STATIC_CAST(CS_INT, 4)\n+ 45#define CT_CAPABILITY TDS_STATIC_CAST(CS_INT, 5)\n+ 46#define CT_CLOSE TDS_STATIC_CAST(CS_INT, 6)\n+ 47#define CT_CMD_ALLOC TDS_STATIC_CAST(CS_INT, 7)\n+ 48#define CT_CMD_DROP TDS_STATIC_CAST(CS_INT, 8)\n+ 49#define CT_CMD_PROPS TDS_STATIC_CAST(CS_INT, 9)\n+ 50#define CT_COMMAND TDS_STATIC_CAST(CS_INT, 10)\n+ 51#define CT_COMPUTE_INFO TDS_STATIC_CAST(CS_INT, 11)\n+ 52#define CT_CON_ALLOC TDS_STATIC_CAST(CS_INT, 12)\n+ 53#define CT_CON_DROP TDS_STATIC_CAST(CS_INT, 13)\n+ 54#define CT_CON_PROPS TDS_STATIC_CAST(CS_INT, 14)\n+ 55#define CT_CON_XFER TDS_STATIC_CAST(CS_INT, 15)\n+ 56#define CT_CONFIG TDS_STATIC_CAST(CS_INT, 16)\n+ 57#define CT_CONNECT TDS_STATIC_CAST(CS_INT, 17)\n+ 58#define CT_CURSOR TDS_STATIC_CAST(CS_INT, 18)\n+ 59#define CT_DATA_INFO TDS_STATIC_CAST(CS_INT, 19)\n+ 60#define CT_DEBUG TDS_STATIC_CAST(CS_INT, 20)\n+ 61#define CT_DESCRIBE TDS_STATIC_CAST(CS_INT, 21)\n+ 62#define CT_DIAG TDS_STATIC_CAST(CS_INT, 22)\n+ 63#define CT_DYNAMIC TDS_STATIC_CAST(CS_INT, 23)\n+ 64#define CT_DYNDESC TDS_STATIC_CAST(CS_INT, 24)\n+ 65#define CT_EXIT TDS_STATIC_CAST(CS_INT, 25)\n+ 66#define CT_FETCH TDS_STATIC_CAST(CS_INT, 26)\n+ 67#define CT_GET_DATA TDS_STATIC_CAST(CS_INT, 27)\n+ 68#define CT_GETFORMAT TDS_STATIC_CAST(CS_INT, 28)\n+ 69#define CT_GETLOGINFO TDS_STATIC_CAST(CS_INT, 29)\n+ 70#define CT_INIT TDS_STATIC_CAST(CS_INT, 30)\n+ 71#define CT_KEYDATA TDS_STATIC_CAST(CS_INT, 31)\n+ 72#define CT_OPTIONS TDS_STATIC_CAST(CS_INT, 32)\n+ 73#define CT_PARAM TDS_STATIC_CAST(CS_INT, 33)\n+ 74#define CT_POLL TDS_STATIC_CAST(CS_INT, 34)\n+ 75#define CT_RECVPASSTHRU TDS_STATIC_CAST(CS_INT, 35)\n+ 76#define CT_REMOTE_PWD TDS_STATIC_CAST(CS_INT, 36)\n+ 77#define CT_RES_INFO TDS_STATIC_CAST(CS_INT, 37)\n+ 78#define CT_RESULTS TDS_STATIC_CAST(CS_INT, 38)\n+ 79#define CT_SEND TDS_STATIC_CAST(CS_INT, 39)\n+ 80#define CT_SEND_DATA TDS_STATIC_CAST(CS_INT, 40)\n+ 81#define CT_SENDPASSTHRU TDS_STATIC_CAST(CS_INT, 41)\n+ 82#define CT_SETLOGINFO TDS_STATIC_CAST(CS_INT, 42)\n+ 83#define CT_WAKEUP TDS_STATIC_CAST(CS_INT, 43)\n+ 84#define CT_LABELS TDS_STATIC_CAST(CS_INT, 44)\n+ 85#define CT_DS_LOOKUP TDS_STATIC_CAST(CS_INT, 45)\n+ 86#define CT_DS_DROP TDS_STATIC_CAST(CS_INT, 46)\n+ 87#define CT_DS_OBJINFO TDS_STATIC_CAST(CS_INT, 47)\n+ 88#define CT_SETPARAM TDS_STATIC_CAST(CS_INT, 48)\n+ 89#define CT_DYNSQLDA TDS_STATIC_CAST(CS_INT, 49)\n+ 90#define CT_NOTIFICATION TDS_STATIC_CAST(CS_INT, 1000)\n+ 91\n+ 92static const char rcsid_ctpublic_h[] = \"$Id: ctpublic.h,v 1.14 2005-05-28\n+10:48:26 freddy77 Exp $\";\n+ 93static const void *const no_unused_ctpublic_h_warn[] = { rcsid_ctpublic_h,\n+no_unused_ctpublic_h_warn };\n+ 94\n+ 95\n+ 96CS_RETCODE ct_init(CS_CONTEXT * ctx, CS_INT version);\n+ 97CS_RETCODE ct_con_alloc(CS_CONTEXT * ctx, CS_CONNECTION ** con);\n+ 98CS_RETCODE ct_con_props(CS_CONNECTION * con, CS_INT action, CS_INT property,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * out_len);\n+ 99CS_RETCODE ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT\n+snamelen);\n+ 100CS_RETCODE ct_cmd_alloc(CS_CONNECTION * con, CS_COMMAND ** cmd);\n+ 101CS_RETCODE ct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type);\n+ 102CS_RETCODE ct_cmd_drop(CS_COMMAND * cmd);\n+ 103CS_RETCODE ct_close(CS_CONNECTION * con, CS_INT option);\n+ 104CS_RETCODE ct_con_drop(CS_CONNECTION * con);\n+ 105CS_RETCODE ct_exit(CS_CONTEXT * ctx, CS_INT unused);\n+ 106CS_RETCODE ct_command(CS_COMMAND * cmd, CS_INT type, const CS_VOID *\n+buffer, CS_INT buflen, CS_INT option);\n+ 107CS_RETCODE ct_send(CS_COMMAND * cmd);\n+ 108CS_RETCODE ct_results(CS_COMMAND * cmd, CS_INT * result_type);\n+ 109CS_RETCODE ct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt,\n+CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator);\n+ 110CS_RETCODE ct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT\n+option, CS_INT * rows_read);\n+ 111CS_RETCODE ct_res_info_dyn(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer,\n+CS_INT buflen, CS_INT * out_len);\n+ 112CS_RETCODE ct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer,\n+CS_INT buflen, CS_INT * out_len);\n+ 113CS_RETCODE ct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT *\n+datafmt);\n+ 114CS_RETCODE ct_callback(CS_CONTEXT * ctx, CS_CONNECTION * con, CS_INT\n+action, CS_INT type, CS_VOID * func);\n+ 115CS_RETCODE ct_send_dyn(CS_COMMAND * cmd);\n+ 116CS_RETCODE ct_results_dyn(CS_COMMAND * cmd, CS_INT * result_type);\n+ 117CS_RETCODE ct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n+ 118CS_RETCODE ct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n+ 119CS_RETCODE ct_compute_info(CS_COMMAND * cmd, CS_INT type, CS_INT colnum,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n+ 120CS_RETCODE ct_get_data(CS_COMMAND * cmd, CS_INT item, CS_VOID * buffer,\n+CS_INT buflen, CS_INT * outlen);\n+ 121CS_RETCODE ct_send_data(CS_COMMAND * cmd, CS_VOID * buffer, CS_INT buflen);\n+ 122CS_RETCODE ct_data_info(CS_COMMAND * cmd, CS_INT action, CS_INT colnum,\n+CS_IODESC * iodesc);\n+ 123CS_RETCODE ct_capability(CS_CONNECTION * con, CS_INT action, CS_INT type,\n+CS_INT capability, CS_VOID * value);\n+ 124CS_RETCODE ct_dynamic(CS_COMMAND * cmd, CS_INT type, CS_CHAR * id, CS_INT\n+idlen, CS_CHAR * buffer, CS_INT buflen);\n+ 125CS_RETCODE ct_param(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID * data,\n+CS_INT datalen, CS_SMALLINT indicator);\n+ 126CS_RETCODE ct_setparam(CS_COMMAND * cmd, CS_DATAFMT * datafmt, CS_VOID *\n+data, CS_INT * datalen, CS_SMALLINT * indicator);\n+ 127CS_RETCODE ct_options(CS_CONNECTION * con, CS_INT action, CS_INT option,\n+CS_VOID * param, CS_INT paramlen, CS_INT * outlen);\n+ 128CS_RETCODE ct_poll(CS_CONTEXT * ctx, CS_CONNECTION * connection, CS_INT\n+milliseconds, CS_CONNECTION ** compconn,\n+ 129 CS_COMMAND ** compcmd, CS_INT * compid, CS_INT * compstatus);\n+ 130CS_RETCODE ct_cursor(CS_COMMAND * cmd, CS_INT type, CS_CHAR * name, CS_INT\n+namelen, CS_CHAR * text, CS_INT tlen, CS_INT option);\n+ 131CS_RETCODE ct_diag(CS_CONNECTION * conn, CS_INT operation, CS_INT type,\n+CS_INT idx, CS_VOID * buffer);\n+ 132\n+ 133#ifdef __cplusplus\n+ 134#if 0\n+ 135{\n+ 136#endif\n+ 137}\n+ 138#endif\n+ 139\n+ 140#endif\n+_cs_iodesc\n+Definition cstypes.h:97\n+_cs_datafmt\n+Definition cstypes.h:114\n+_cs_context\n+Definition ctlib.h:75\n+_cs_connection\n+Definition ctlib.h:117\n+_cs_command\n+Definition ctlib.h:212\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00473_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00473_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/cstypes.h Source File\n+FreeTDS API: include/cspublic.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n \n
    \n-
    cstypes.h
    \n+
    cspublic.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,249 +96,796 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _cstypes_h_
    \n-
    21#define _cstypes_h_
    \n+
    20#ifndef _cspublic_h_
    \n+
    21#define _cspublic_h_
    \n
    22
    \n-
    23#include "tds_sysdep_public.h"
    \n+
    23#include <cstypes.h>
    \n
    24
    \n-
    25#ifdef __cplusplus
    \n-
    26extern "C"
    \n-
    27{
    \n-
    28#if 0
    \n-
    29}
    \n-
    30#endif
    \n-
    31#endif
    \n-
    32
    \n-
    33typedef int32_t CS_INT;
    \n-
    34typedef uint32_t CS_UINT;
    \n-
    35typedef int64_t CS_BIGINT;
    \n-
    36typedef uint64_t CS_UBIGINT;
    \n-
    37typedef int16_t CS_SMALLINT;
    \n-
    38typedef uint16_t CS_USMALLINT;
    \n-
    39typedef unsigned char CS_TINYINT;
    \n-
    40typedef char CS_CHAR;
    \n-
    41typedef unsigned char CS_BYTE;
    \n-
    42typedef tds_sysdep_real32_type CS_REAL;
    \n-
    43typedef tds_sysdep_real64_type CS_FLOAT;
    \n-
    44typedef int32_t CS_BOOL;
    \n-
    45typedef void CS_VOID;
    \n-
    46typedef unsigned char CS_IMAGE;
    \n-
    47typedef unsigned char CS_TEXT;
    \n-
    48typedef unsigned char CS_LONGBINARY;
    \n-
    49typedef unsigned char CS_LONGCHAR;
    \n-
    50typedef long CS_LONG;
    \n-
    51typedef unsigned char CS_BINARY;
    \n-
    52typedef uint16_t CS_USHORT;
    \n-
    53typedef unsigned char CS_BIT;
    \n-
    54
    \n-
    55typedef CS_INT CS_RETCODE;
    \n-
    56
    \n-
    57#define CS_MAX_NAME 132
    \n-
    58#define CS_MAX_SCALE 77
    \n-
    59#define CS_MAX_PREC 77 /* used by php */
    \n-
    60#define CS_MAX_NUMLEN 33 /* used by roguewave */
    \n-
    61#define CS_MAX_MSG 1024
    \n-
    62#define CS_SQLSTATE_SIZE 8
    \n-
    63#define CS_OBJ_NAME 400
    \n-
    64#define CS_TP_SIZE 16 /* text pointer */
    \n-
    65#define CS_TS_SIZE 8 /* length of timestamp */
    \n-
    66
    \n+
    25#undef TDS_STATIC_CAST
    \n+
    26#ifdef __cplusplus
    \n+
    27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n+
    28extern "C"
    \n+
    29{
    \n+
    30#if 0
    \n+
    31}
    \n+
    32#endif
    \n+
    33#else
    \n+
    34#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n+
    35#endif
    \n+
    36
    \n+
    37#define CS_PUBLIC
    \n+
    38#define CS_STATIC static
    \n+
    39
    \n+
    40#define CS_SUCCEED 1
    \n+
    41#define CS_FAIL 0
    \n+
    42#define CS_MEM_ERROR -1
    \n+
    43#define CS_PENDING -2
    \n+
    44#define CS_QUIET -3
    \n+
    45#define CS_BUSY -4
    \n+
    46#define CS_INTERRUPT -5
    \n+
    47#define CS_BLK_HAS_TEXT -6
    \n+
    48#define CS_CONTINUE -7
    \n+
    49#define CS_FATAL -8
    \n+
    50#define CS_RET_HAFAILOVER -9
    \n+
    51#define CS_UNSUPPORTED -10
    \n+
    52
    \n+
    53#define CS_CANCELED -202
    \n+
    54#define CS_ROW_FAIL -203
    \n+
    55#define CS_END_DATA -204
    \n+
    56#define CS_END_RESULTS -205
    \n+
    57#define CS_END_ITEM -206
    \n+
    58#define CS_NOMSG -207
    \n+
    59#define CS_TIMED_OUT -208
    \n+
    60
    \n+
    61#define CS_SIZEOF(x) sizeof(x)
    \n+
    62
    \n+
    63#define CS_LAYER(x) (((x) >> 24) & 0xFF)
    \n+
    64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)
    \n+
    65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)
    \n+
    66#define CS_NUMBER(x) ((x) & 0xFF)
    \n
    67
    \n-
    \n-
    68typedef struct _cs_numeric
    \n-
    69{
    \n-
    70 unsigned char precision;
    \n-
    71 unsigned char scale;
    \n-
    72 unsigned char array[CS_MAX_NUMLEN];
    \n-\n-
    \n-
    74
    \n-\n+
    68/* forward declarations */
    \n+
    69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
    \n+
    70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
    \n+
    71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
    \n+
    72
    \n+
    73
    \n+
    74#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
    \n+
    75#define CS_SRC_VALUE -2562
    \n
    76
    \n-
    \n-
    77typedef struct _cs_varbinary
    \n-
    78{
    \n-
    79 CS_SMALLINT len;
    \n-
    80 CS_CHAR array[256];
    \n-\n-
    \n-
    82
    \n-
    \n-
    83typedef struct _cs_varchar
    \n-
    84{
    \n-
    85 CS_SMALLINT len; /* length of the string */
    \n-
    86 CS_CHAR str[256]; /* string, no NULL terminator */
    \n-\n-
    \n-
    88
    \n-
    89typedef struct _cs_config CS_CONFIG;
    \n-
    90typedef struct _cs_context CS_CONTEXT;
    \n-
    91typedef struct _cs_connection CS_CONNECTION;
    \n-
    92typedef struct _cs_locale CS_LOCALE;
    \n-
    93typedef struct _cs_command CS_COMMAND;
    \n-
    94typedef struct _cs_blk_row CS_BLK_ROW;
    \n-
    95
    \n-
    \n-
    96typedef struct _cs_iodesc
    \n-
    97{
    \n-
    98 CS_INT iotype;
    \n-
    99 CS_INT datatype;
    \n-
    100 CS_LOCALE *locale;
    \n-
    101 CS_INT usertype;
    \n-
    102 CS_INT total_txtlen;
    \n-
    103 CS_INT offset;
    \n-
    104 CS_BOOL log_on_update;
    \n-
    105 CS_CHAR name[CS_OBJ_NAME];
    \n-
    106 CS_INT namelen;
    \n-
    107 CS_BYTE timestamp[CS_TS_SIZE];
    \n-
    108 CS_INT timestamplen;
    \n-
    109 CS_BYTE textptr[CS_TP_SIZE];
    \n-
    110 CS_INT textptrlen;
    \n-
    111} CS_IODESC;
    \n-
    \n-
    112
    \n-
    \n-
    113typedef struct _cs_datafmt
    \n-
    114{
    \n-
    115 CS_CHAR name[CS_MAX_NAME];
    \n-
    116 CS_INT namelen;
    \n-
    117 CS_INT datatype;
    \n-
    118 CS_INT format;
    \n-
    119 CS_INT maxlength;
    \n-
    120 CS_INT scale;
    \n-
    121 CS_INT precision;
    \n-
    122 CS_INT status;
    \n-
    123 CS_INT count;
    \n-
    124 CS_INT usertype;
    \n-
    125 CS_LOCALE *locale;
    \n-
    126} CS_DATAFMT;
    \n-
    \n-
    127
    \n-
    \n-
    128typedef struct _cs_money
    \n-
    129{
    \n-
    130 CS_INT mnyhigh;
    \n-
    131 CS_UINT mnylow;
    \n-
    132} CS_MONEY;
    \n-
    \n-
    133
    \n-
    \n-
    134typedef struct _cs_money4
    \n-
    135{
    \n-
    136 CS_INT mny4;
    \n-
    137} CS_MONEY4;
    \n-
    \n+
    77
    \n+
    78
    \n+
    79/* status bits for CS_SERVERMSG */
    \n+
    80#define CS_HASEED 0x01
    \n+
    81
    \n+
    82typedef struct _cs_blkdesc CS_BLKDESC;
    \n+
    83
    \n+
    84/* CS_CAP_REQUEST values */
    \n+
    85#define CS_REQ_LANG 1
    \n+
    86#define CS_REQ_RPC 2
    \n+
    87#define CS_REQ_NOTIF 3
    \n+
    88#define CS_REQ_MSTMT 4
    \n+
    89#define CS_REQ_BCP 5
    \n+
    90#define CS_REQ_CURSOR 6
    \n+
    91#define CS_REQ_DYN 7
    \n+
    92#define CS_REQ_MSG 8
    \n+
    93#define CS_REQ_PARAM 9
    \n+
    94#define CS_DATA_INT1 10
    \n+
    95#define CS_DATA_INT2 11
    \n+
    96#define CS_DATA_INT4 12
    \n+
    97#define CS_DATA_BIT 13
    \n+
    98#define CS_DATA_CHAR 14
    \n+
    99#define CS_DATA_VCHAR 15
    \n+
    100#define CS_DATA_BIN 16
    \n+
    101#define CS_DATA_VBIN 17
    \n+
    102#define CS_DATA_MNY8 18
    \n+
    103#define CS_DATA_MNY4 19
    \n+
    104#define CS_DATA_DATE8 20
    \n+
    105#define CS_DATA_DATE4 21
    \n+
    106#define CS_DATA_FLT4 22
    \n+
    107#define CS_DATA_FLT8 23
    \n+
    108#define CS_DATA_NUM 24
    \n+
    109#define CS_DATA_TEXT 25
    \n+
    110#define CS_DATA_IMAGE 26
    \n+
    111#define CS_DATA_DEC 27
    \n+
    112#define CS_DATA_LCHAR 28
    \n+
    113#define CS_DATA_LBIN 29
    \n+
    114#define CS_DATA_INTN 30
    \n+
    115#define CS_DATA_DATETIMEN 31
    \n+
    116#define CS_DATA_MONEYN 32
    \n+
    117#define CS_CSR_PREV 33
    \n+
    118#define CS_CSR_FIRST 34
    \n+
    119#define CS_CSR_LAST 35
    \n+
    120#define CS_CSR_ABS 36
    \n+
    121#define CS_CSR_REL 37
    \n+
    122#define CS_CSR_MULTI 38
    \n+
    123#define CS_CON_OOB 39
    \n+
    124#define CS_CON_INBAND 40
    \n+
    125#define CS_CON_LOGICAL 41
    \n+
    126#define CS_PROTO_TEXT 42
    \n+
    127#define CS_PROTO_BULK 43
    \n+
    128#define CS_REQ_URGNOTIF 44
    \n+
    129#define CS_DATA_SENSITIVITY 45
    \n+
    130#define CS_DATA_BOUNDARY 46
    \n+
    131#define CS_PROTO_DYNAMIC 47
    \n+
    132#define CS_PROTO_DYNPROC 48
    \n+
    133#define CS_DATA_FLTN 49
    \n+
    134#define CS_DATA_BITN 50
    \n+
    135#define CS_OPTION_GET 51
    \n+
    136#define CS_DATA_INT8 52
    \n+
    137#define CS_DATA_VOID 53
    \n
    138
    \n-
    139typedef CS_INT CS_DATE;
    \n-
    140
    \n-
    141typedef CS_INT CS_TIME;
    \n-
    142
    \n-
    143typedef CS_UBIGINT CS_BIGDATETIME;
    \n-
    144typedef CS_UBIGINT CS_BIGTIME;
    \n-
    145
    \n-
    \n-
    146typedef struct _cs_datetime
    \n-
    147{
    \n-
    148 CS_INT dtdays;
    \n-
    149 CS_INT dttime;
    \n-\n-
    \n-
    151
    \n-
    \n-
    152typedef struct _cs_datetime4
    \n-
    153{
    \n-
    154 CS_USHORT days;
    \n-
    155 CS_USHORT minutes;
    \n-\n-
    \n-
    157
    \n-
    \n-
    158typedef struct _cs_daterec
    \n-
    159{
    \n-
    160 CS_INT dateyear;
    \n-
    161 CS_INT datemonth;
    \n-
    162 CS_INT datedmonth;
    \n-
    163 CS_INT datedyear;
    \n-
    164 CS_INT datedweek;
    \n-
    165 CS_INT datehour;
    \n-
    166 CS_INT dateminute;
    \n-
    167 CS_INT datesecond;
    \n-
    168 CS_INT datemsecond;
    \n-
    169 CS_INT datetzone;
    \n-
    170 CS_INT datesecfrac;
    \n-
    171 CS_INT datesecprec;
    \n-
    172} CS_DATEREC;
    \n-
    \n-
    173
    \n-
    174typedef CS_INT CS_MSGNUM;
    \n+
    139/* CS_CAP_RESPONSE values */
    \n+
    140#define CS_RES_NOMSG 1
    \n+
    141#define CS_RES_NOEED 2
    \n+
    142#define CS_RES_NOPARAM 3
    \n+
    143#define CS_DATA_NOINT1 4
    \n+
    144#define CS_DATA_NOINT2 5
    \n+
    145#define CS_DATA_NOINT4 6
    \n+
    146#define CS_DATA_NOBIT 7
    \n+
    147#define CS_DATA_NOCHAR 8
    \n+
    148#define CS_DATA_NOVCHAR 9
    \n+
    149#define CS_DATA_NOBIN 10
    \n+
    150#define CS_DATA_NOVBIN 11
    \n+
    151#define CS_DATA_NOMNY8 12
    \n+
    152#define CS_DATA_NOMNY4 13
    \n+
    153#define CS_DATA_NODATE8 14
    \n+
    154#define CS_DATA_NODATE4 15
    \n+
    155#define CS_DATA_NOFLT4 16
    \n+
    156#define CS_DATA_NOFLT8 17
    \n+
    157#define CS_DATA_NONUM 18
    \n+
    158#define CS_DATA_NOTEXT 19
    \n+
    159#define CS_DATA_NOIMAGE 20
    \n+
    160#define CS_DATA_NODEC 21
    \n+
    161#define CS_DATA_NOLCHAR 22
    \n+
    162#define CS_DATA_NOLBIN 23
    \n+
    163#define CS_DATA_NOINTN 24
    \n+
    164#define CS_DATA_NODATETIMEN 25
    \n+
    165#define CS_DATA_NOMONEYN 26
    \n+
    166#define CS_CON_NOOOB 27
    \n+
    167#define CS_CON_NOINBAND 28
    \n+
    168#define CS_PROTO_NOTEXT 29
    \n+
    169#define CS_PROTO_NOBULK 30
    \n+
    170#define CS_DATA_NOSENSITIVITY 31
    \n+
    171#define CS_DATA_NOBOUNDARY 32
    \n+
    172#define CS_RES_NOTDSDEBUG 33
    \n+
    173#define CS_RES_NOSTRIPBLANKS 34
    \n+
    174#define CS_DATA_NOINT8 35
    \n
    175
    \n-
    \n-
    176typedef struct _cs_clientmsg
    \n-
    177{
    \n-
    178 CS_INT severity;
    \n-
    179 CS_MSGNUM msgnumber;
    \n-
    180 CS_CHAR msgstring[CS_MAX_MSG];
    \n-
    181 CS_INT msgstringlen;
    \n-
    182 CS_INT osnumber;
    \n-
    183 CS_CHAR osstring[CS_MAX_MSG];
    \n-
    184 CS_INT osstringlen;
    \n-
    185 CS_INT status;
    \n-
    186 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
    \n-
    187 CS_INT sqlstatelen;
    \n-\n-
    \n-
    189
    \n-
    \n-
    190typedef struct _cs_servermsg
    \n-
    191{
    \n-
    192 CS_MSGNUM msgnumber;
    \n-
    193 CS_INT state;
    \n-
    194 CS_INT severity;
    \n-
    195 CS_CHAR text[CS_MAX_MSG];
    \n-
    196 CS_INT textlen;
    \n-
    197 CS_CHAR svrname[CS_MAX_NAME];
    \n-
    198 CS_INT svrnlen;
    \n-
    199 CS_CHAR proc[CS_MAX_NAME];
    \n-
    200 CS_INT proclen;
    \n-
    201 CS_INT line;
    \n-
    202 CS_INT status;
    \n-
    203 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
    \n-
    204 CS_INT sqlstatelen;
    \n-\n-
    \n-
    206
    \n-
    207#ifdef __cplusplus
    \n-
    208#if 0
    \n-
    209{
    \n-
    210#endif
    \n-
    211}
    \n-
    212#endif
    \n-
    213
    \n-
    214#endif
    \n-
    Definition cstypes.h:69
    \n-
    Definition cstypes.h:78
    \n-
    Definition cstypes.h:84
    \n-
    Definition cstypes.h:97
    \n+
    176/* Properties */
    \n+
    177enum
    \n+
    178{
    \n+
    179/*
    \n+
    180 * These defines looks weird but programs can test support for defines,
    \n+
    181 * compiler can check enum and there are no define side effecs
    \n+
    182 */
    \n+
    183 CS_USERNAME = 9100,
    \n+
    184#define CS_USERNAME CS_USERNAME
    \n+
    185 CS_PASSWORD = 9101,
    \n+
    186#define CS_PASSWORD CS_PASSWORD
    \n+
    187 CS_APPNAME = 9102,
    \n+
    188#define CS_APPNAME CS_APPNAME
    \n+
    189 CS_HOSTNAME = 9103,
    \n+
    190#define CS_HOSTNAME CS_HOSTNAME
    \n+
    191 CS_LOGIN_STATUS = 9104,
    \n+
    192#define CS_LOGIN_STATUS CS_LOGIN_STATUS
    \n+
    193 CS_TDS_VERSION = 9105,
    \n+
    194#define CS_TDS_VERSION CS_TDS_VERSION
    \n+
    195 CS_CHARSETCNV = 9106,
    \n+
    196#define CS_CHARSETCNV CS_CHARSETCNV
    \n+
    197 CS_PACKETSIZE = 9107,
    \n+
    198#define CS_PACKETSIZE CS_PACKETSIZE
    \n+
    199 CS_USERDATA = 9108,
    \n+
    200#define CS_USERDATA CS_USERDATA
    \n+
    201 CS_NETIO = 9110,
    \n+
    202#define CS_NETIO CS_NETIO
    \n+
    203 CS_TEXTLIMIT = 9112,
    \n+
    204#define CS_TEXTLIMIT CS_TEXTLIMIT
    \n+
    205 CS_HIDDEN_KEYS = 9113,
    \n+
    206#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
    \n+
    207 CS_VERSION = 9114,
    \n+
    208#define CS_VERSION CS_VERSION
    \n+
    209 CS_IFILE = 9115,
    \n+
    210#define CS_IFILE CS_IFILE
    \n+
    211 CS_LOGIN_TIMEOUT = 9116,
    \n+
    212#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
    \n+
    213 CS_TIMEOUT = 9117,
    \n+
    214#define CS_TIMEOUT CS_TIMEOUT
    \n+
    215 CS_MAX_CONNECT = 9118,
    \n+
    216#define CS_MAX_CONNECT CS_MAX_CONNECT
    \n+
    217 CS_EXPOSE_FMTS = 9120,
    \n+
    218#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
    \n+
    219 CS_EXTRA_INF = 9121,
    \n+
    220#define CS_EXTRA_INF CS_EXTRA_INF
    \n+
    221 CS_ANSI_BINDS = 9123,
    \n+
    222#define CS_ANSI_BINDS CS_ANSI_BINDS
    \n+
    223 CS_BULK_LOGIN = 9124,
    \n+
    224#define CS_BULK_LOGIN CS_BULK_LOGIN
    \n+
    225 CS_LOC_PROP = 9125,
    \n+
    226#define CS_LOC_PROP CS_LOC_PROP
    \n+
    227 CS_PARENT_HANDLE = 9130,
    \n+
    228#define CS_PARENT_HANDLE CS_PARENT_HANDLE
    \n+
    229 CS_EED_CMD = 9131,
    \n+
    230#define CS_EED_CMD CS_EED_CMD
    \n+
    231 CS_DIAG_TIMEOUT = 9132,
    \n+
    232#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
    \n+
    233 CS_DISABLE_POLL = 9133,
    \n+
    234#define CS_DISABLE_POLL CS_DISABLE_POLL
    \n+
    235 CS_SEC_ENCRYPTION = 9135,
    \n+
    236#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
    \n+
    237 CS_SEC_CHALLENGE = 9136,
    \n+
    238#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
    \n+
    239 CS_SEC_NEGOTIATE = 9137,
    \n+
    240#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
    \n+
    241 CS_CON_STATUS = 9143,
    \n+
    242#define CS_CON_STATUS CS_CON_STATUS
    \n+
    243 CS_VER_STRING = 9144,
    \n+
    244#define CS_VER_STRING CS_VER_STRING
    \n+
    245 CS_SERVERNAME = 9146,
    \n+
    246#define CS_SERVERNAME CS_SERVERNAME
    \n+
    247 CS_SEC_APPDEFINED = 9149,
    \n+
    248#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
    \n+
    249 CS_STICKY_BINDS = 9151,
    \n+
    250#define CS_STICKY_BINDS CS_STICKY_BINDS
    \n+
    251 CS_SEC_NETWORKAUTH = 9175,
    \n+
    252#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
    \n+
    253 CS_SEC_DELEGATION = 9176,
    \n+
    254#define CS_SEC_DELEGATION CS_SEC_DELEGATION
    \n+
    255 CS_SEC_MUTUALAUTH = 9177,
    \n+
    256#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
    \n+
    257 CS_SEC_SERVERPRINCIPAL = 9188,
    \n+
    258#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
    \n+
    259 CS_SERVERADDR = 9206,
    \n+
    260#define CS_SERVERADDR CS_SERVERADDR
    \n+
    261 CS_PORT = 9300,
    \n+
    262#define CS_PORT CS_PORT
    \n+
    263 CS_CLIENTCHARSET = 9301,
    \n+
    264#define CS_CLIENTCHARSET CS_CLIENTCHARSET
    \n+
    265 CS_DATABASE = 9302
    \n+
    266#define CS_DATABASE CS_DATABASE
    \n+
    267};
    \n+
    268
    \n+
    269/* Arbitrary precision math operators */
    \n+
    270enum
    \n+
    271{
    \n+
    272 CS_ADD = 1,
    \n+
    273 CS_SUB,
    \n+
    274 CS_MULT,
    \n+
    275 CS_DIV
    \n+
    276};
    \n+
    277
    \n+
    278enum
    \n+
    279{
    \n+
    280#define CS_TDS_AUTO CS_TDS_AUTO
    \n+
    281 CS_TDS_AUTO = 0,
    \n+
    282 CS_TDS_40 = 7360,
    \n+
    283 CS_TDS_42,
    \n+
    284 CS_TDS_46,
    \n+
    285 CS_TDS_495,
    \n+
    286 CS_TDS_50,
    \n+
    287 CS_TDS_70,
    \n+
    288 CS_TDS_71,
    \n+
    289#define CS_TDS_71 CS_TDS_71
    \n+
    290 CS_TDS_72,
    \n+
    291#define CS_TDS_72 CS_TDS_72
    \n+
    292 CS_TDS_73,
    \n+
    293#define CS_TDS_73 CS_TDS_73
    \n+
    294 CS_TDS_74,
    \n+
    295#define CS_TDS_74 CS_TDS_74
    \n+
    296};
    \n+
    297
    \n+
    298/* bit mask values used by CS_DATAFMT.status */
    \n+
    299#define CS_HIDDEN (1 << 0)
    \n+
    300#define CS_KEY (1 << 1)
    \n+
    301#define CS_VERSION_KEY (1 << 2)
    \n+
    302#define CS_NODATA (1 << 3)
    \n+
    303#define CS_UPDATABLE (1 << 4)
    \n+
    304#define CS_CANBENULL (1 << 5)
    \n+
    305#define CS_DESCIN (1 << 6)
    \n+
    306#define CS_DESCOUT (1 << 7)
    \n+
    307#define CS_INPUTVALUE (1 << 8)
    \n+
    308#define CS_UPDATECOL (1 << 9)
    \n+
    309#define CS_RETURN (1 << 10)
    \n+
    310#define CS_TIMESTAMP (1 << 13)
    \n+
    311#define CS_NODEFAULT (1 << 14)
    \n+
    312#define CS_IDENTITY (1 << 15)
    \n+
    313
    \n+
    314/*
    \n+
    315 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
    \n+
    316 * (the documentation states -1)
    \n+
    317 */
    \n+
    318#define CS_GOODDATA 0
    \n+
    319#define CS_NULLDATA (-1)
    \n+
    320
    \n+
    321/* CS_CON_STATUS read-only property bit mask values */
    \n+
    322#define CS_CONSTAT_CONNECTED 0x01
    \n+
    323#define CS_CONSTAT_DEAD 0x02
    \n+
    324
    \n+
    325/*
    \n+
    326 * Code added for CURSOR support
    \n+
    327 * types accepted by ct_cursor
    \n+
    328 */
    \n+
    329#define CS_CURSOR_DECLARE 700
    \n+
    330#define CS_CURSOR_OPEN 701
    \n+
    331#define CS_CURSOR_ROWS 703
    \n+
    332#define CS_CURSOR_UPDATE 704
    \n+
    333#define CS_CURSOR_DELETE 705
    \n+
    334#define CS_CURSOR_CLOSE 706
    \n+
    335#define CS_CURSOR_DEALLOC 707
    \n+
    336#define CS_CURSOR_OPTION 725
    \n+
    337
    \n+
    338#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
    \n+
    339#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
    \n+
    340#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
    \n+
    341#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
    \n+
    342
    \n+
    343
    \n+
    344#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
    \n+
    345#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
    \n+
    346#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
    \n+
    347#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
    \n+
    348#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
    \n+
    349#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
    \n+
    350#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
    \n+
    351#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
    \n+
    352
    \n+
    353#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
    \n+
    354#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
    \n+
    355#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
    \n+
    356#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
    \n+
    357
    \n+
    358/* options accepted by ct_options() */
    \n+
    359#define CS_OPT_DATEFIRST 5001
    \n+
    360#define CS_OPT_TEXTSIZE 5002
    \n+
    361#define CS_OPT_STATS_TIME 5003
    \n+
    362#define CS_OPT_STATS_IO 5004
    \n+
    363#define CS_OPT_ROWCOUNT 5005
    \n+
    364#define CS_OPT_DATEFORMAT 5007
    \n+
    365#define CS_OPT_ISOLATION 5008
    \n+
    366#define CS_OPT_AUTHON 5009
    \n+
    367#define CS_OPT_SHOWPLAN 5013
    \n+
    368#define CS_OPT_NOEXEC 5014
    \n+
    369#define CS_OPT_ARITHIGNORE 5015
    \n+
    370#define CS_OPT_TRUNCIGNORE 5016
    \n+
    371#define CS_OPT_ARITHABORT 5017
    \n+
    372#define CS_OPT_PARSEONLY 5018
    \n+
    373#define CS_OPT_GETDATA 5020
    \n+
    374#define CS_OPT_NOCOUNT 5021
    \n+
    375#define CS_OPT_FORCEPLAN 5023
    \n+
    376#define CS_OPT_FORMATONLY 5024
    \n+
    377#define CS_OPT_CHAINXACTS 5025
    \n+
    378#define CS_OPT_CURCLOSEONXACT 5026
    \n+
    379#define CS_OPT_FIPSFLAG 5027
    \n+
    380#define CS_OPT_RESTREES 5028
    \n+
    381#define CS_OPT_IDENTITYON 5029
    \n+
    382#define CS_OPT_CURREAD 5030
    \n+
    383#define CS_OPT_CURWRITE 5031
    \n+
    384#define CS_OPT_IDENTITYOFF 5032
    \n+
    385#define CS_OPT_AUTHOFF 5033
    \n+
    386#define CS_OPT_ANSINULL 5034
    \n+
    387#define CS_OPT_QUOTED_IDENT 5035
    \n+
    388#define CS_OPT_ANSIPERM 5036
    \n+
    389#define CS_OPT_STR_RTRUNC 5037
    \n+
    390
    \n+
    391/* options accepted by ct_command() */
    \n+
    392enum ct_command_options
    \n+
    393{
    \n+
    394 CS_MORE = 16,
    \n+
    395 CS_END = 32,
    \n+
    396 CS_RECOMPILE = 188,
    \n+
    397 CS_NO_RECOMPILE,
    \n+
    398 CS_BULK_INIT,
    \n+
    399 CS_BULK_CONT,
    \n+
    400 CS_BULK_DATA,
    \n+
    401 CS_COLUMN_DATA
    \n+
    402};
    \n+
    403
    \n+
    404
    \n+
    405/*
    \n+
    406 * bind formats, should be mapped to TDS types
    \n+
    407 * can be a combination of bit
    \n+
    408 */
    \n+
    409enum
    \n+
    410{
    \n+
    411 CS_FMT_UNUSED = 0,
    \n+
    412#define CS_FMT_UNUSED CS_FMT_UNUSED
    \n+
    413 CS_FMT_NULLTERM = 1,
    \n+
    414#define CS_FMT_NULLTERM CS_FMT_NULLTERM
    \n+
    415 CS_FMT_PADNULL = 2,
    \n+
    416#define CS_FMT_PADBLANK CS_FMT_PADBLANK
    \n+
    417 CS_FMT_PADBLANK = 4,
    \n+
    418#define CS_FMT_PADNULL CS_FMT_PADNULL
    \n+
    419 CS_FMT_JUSTIFY_RT = 8
    \n+
    420#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
    \n+
    421};
    \n+
    422
    \n+
    423/* callbacks */
    \n+
    424#define CS_COMPLETION_CB 1
    \n+
    425#define CS_SERVERMSG_CB 2
    \n+
    426#define CS_CLIENTMSG_CB 3
    \n+
    427#define CS_NOTIF_CB 4
    \n+
    428#define CS_ENCRYPT_CB 5
    \n+
    429#define CS_CHALLENGE_CB 6
    \n+
    430#define CS_DS_LOOKUP_CB 7
    \n+
    431#define CS_SECSESSION_CB 8
    \n+
    432#define CS_SIGNAL_CB 100
    \n+
    433#define CS_MESSAGE_CB 9119
    \n+
    434
    \n+
    435/* string types */
    \n+
    436#define CS_NULLTERM -9
    \n+
    437#define CS_WILDCARD -99
    \n+
    438#define CS_NO_LIMIT -9999
    \n+
    439#define CS_UNUSED -99999
    \n+
    440
    \n+
    441/* other */
    \n+
    442#define CS_GET 33
    \n+
    443#define CS_SET 34
    \n+
    444#define CS_CLEAR 35
    \n+
    445#define CS_INIT 36
    \n+
    446#define CS_STATUS 37
    \n+
    447#define CS_MSGLIMIT 38
    \n+
    448#define CS_SUPPORTED 40
    \n+
    449
    \n+
    450#define CS_CMD_DONE 4046
    \n+
    451#define CS_CMD_SUCCEED 4047
    \n+
    452#define CS_CMD_FAIL 4048
    \n+
    453
    \n+
    454/* commands */
    \n+
    455#define CS_LANG_CMD 148
    \n+
    456#define CS_RPC_CMD 149
    \n+
    457#define CS_SEND_DATA_CMD 151
    \n+
    458#define CS_SEND_BULK_CMD 153
    \n+
    459
    \n+
    460#define CS_VERSION_100 112
    \n+
    461#define CS_VERSION_110 1100
    \n+
    462#define CS_VERSION_120 1100
    \n+
    463#define CS_VERSION_125 12500
    \n+
    464#define CS_VERSION_150 15000
    \n+
    465
    \n+
    466#define BLK_VERSION_100 CS_VERSION_100
    \n+
    467#define BLK_VERSION_110 CS_VERSION_110
    \n+
    468#define BLK_VERSION_120 CS_VERSION_120
    \n+
    469#define BLK_VERSION_125 CS_VERSION_125
    \n+
    470#define BLK_VERSION_150 CS_VERSION_150
    \n+
    471
    \n+
    472#define CS_FORCE_EXIT 300
    \n+
    473#define CS_FORCE_CLOSE 301
    \n+
    474
    \n+
    475#define CS_SYNC_IO 8111
    \n+
    476#define CS_ASYNC_IO 8112
    \n+
    477#define CS_DEFER_IO 8113
    \n+
    478
    \n+
    479#define CS_CANCEL_CURRENT 6000
    \n+
    480#define CS_CANCEL_ALL 6001
    \n+
    481#define CS_CANCEL_ATTN 6002
    \n+
    482
    \n+
    483#define CS_ROW_COUNT 800
    \n+
    484#define CS_CMD_NUMBER 801
    \n+
    485#define CS_NUM_COMPUTES 802
    \n+
    486#define CS_NUMDATA 803
    \n+
    487#define CS_NUMORDERCOLS 805
    \n+
    488#define CS_MSGTYPE 806
    \n+
    489#define CS_BROWSE_INFO 807
    \n+
    490#define CS_TRANS_STATE 808
    \n+
    491
    \n+
    492#define CS_TRAN_UNDEFINED 0
    \n+
    493#define CS_TRAN_IN_PROGRESS 1
    \n+
    494#define CS_TRAN_COMPLETED 2
    \n+
    495#define CS_TRAN_FAIL 3
    \n+
    496#define CS_TRAN_STMT_FAIL 4
    \n+
    497
    \n+
    498#define CS_COMP_OP 5350
    \n+
    499#define CS_COMP_ID 5351
    \n+
    500#define CS_COMP_COLID 5352
    \n+
    501#define CS_COMP_BYLIST 5353
    \n+
    502#define CS_BYLIST_LEN 5354
    \n+
    503
    \n+
    504#define CS_NO_COUNT -1
    \n+
    505
    \n+
    506#define CS_OP_SUM 5370
    \n+
    507#define CS_OP_AVG 5371
    \n+
    508#define CS_OP_COUNT 5372
    \n+
    509#define CS_OP_MIN 5373
    \n+
    510#define CS_OP_MAX 5374
    \n+
    511
    \n+
    512#define CS_CAP_REQUEST 1
    \n+
    513#define CS_CAP_RESPONSE 2
    \n+
    514
    \n+
    515#define CS_PREPARE 717
    \n+
    516#define CS_EXECUTE 718
    \n+
    517#define CS_DESCRIBE_INPUT 720
    \n+
    518#define CS_DESCRIBE_OUTPUT 721
    \n+
    519
    \n+
    520#define CS_DEALLOC 711
    \n+
    521
    \n+
    522#define CS_LC_ALL 7
    \n+
    523#define CS_SYB_LANG 8
    \n+
    524#define CS_SYB_CHARSET 9
    \n+
    525#define CS_SYB_SORTORDER 10
    \n+
    526#define CS_SYB_COLLATE CS_SYB_SORTORDER
    \n+
    527#define CS_SYB_LANG_CHARSET 11
    \n+
    528
    \n+
    529#define CS_BLK_IN 1
    \n+
    530#define CS_BLK_OUT 2
    \n+
    531
    \n+
    532#define CS_BLK_BATCH 1
    \n+
    533#define CS_BLK_ALL 2
    \n+
    534#define CS_BLK_CANCEL 3
    \n+
    535
    \n+
    536/* to do support these */
    \n+
    537
    \n+
    538#define CS_BLK_ARRAY_MAXLEN 0x1000
    \n+
    539#define CS_DEF_PREC 18
    \n+
    540
    \n+
    541/* Error Severities */
    \n+
    542#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
    \n+
    543#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
    \n+
    544#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
    \n+
    545#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
    \n+
    546#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
    \n+
    547#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
    \n+
    548#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
    \n+
    549#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
    \n+
    550
    \n+
    551/* result_types */
    \n+
    552#define CS_COMPUTE_RESULT 4045
    \n+
    553#define CS_CURSOR_RESULT 4041
    \n+
    554#define CS_PARAM_RESULT 4042
    \n+
    555#define CS_ROW_RESULT 4040
    \n+
    556#define CS_STATUS_RESULT 4043
    \n+
    557#define CS_COMPUTEFMT_RESULT 4050
    \n+
    558#define CS_ROWFMT_RESULT 4049
    \n+
    559#define CS_MSG_RESULT 4044
    \n+
    560#define CS_DESCRIBE_RESULT 4051
    \n+
    561
    \n+
    562/* bind types */
    \n+
    563#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
    \n+
    564#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
    \n+
    565#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
    \n+
    566#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
    \n+
    567#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
    \n+
    568#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
    \n+
    569#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
    \n+
    570#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
    \n+
    571#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
    \n+
    572#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
    \n+
    573#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
    \n+
    574#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
    \n+
    575#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
    \n+
    576#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
    \n+
    577#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
    \n+
    578#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
    \n+
    579#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
    \n+
    580#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
    \n+
    581#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
    \n+
    582#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
    \n+
    583#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
    \n+
    584#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
    \n+
    585#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
    \n+
    586#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
    \n+
    587#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
    \n+
    588#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
    \n+
    589#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
    \n+
    590#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
    \n+
    591#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
    \n+
    592#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
    \n+
    593#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
    \n+
    594#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
    \n+
    595#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
    \n+
    596#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
    \n+
    597#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
    \n+
    598#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
    \n+
    599#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
    \n+
    600#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
    \n+
    601#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
    \n+
    602
    \n+
    603#define CS_MIN_SYBTYPE CS_CHAR_TYPE
    \n+
    604#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
    \n+
    605
    \n+
    606#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
    \n+
    607/* cs_dt_info type values */
    \n+
    608enum
    \n+
    609{
    \n+
    610 CS_MONTH = 7340,
    \n+
    611#define CS_MONTH CS_MONTH
    \n+
    612 CS_SHORTMONTH,
    \n+
    613#define CS_SHORTMONTH CS_SHORTMONTH
    \n+
    614 CS_DAYNAME,
    \n+
    615#define CS_DAYNAME CS_DAYNAME
    \n+
    616 CS_DATEORDER,
    \n+
    617#define CS_DATEORDER CS_DATEORDER
    \n+
    618 CS_12HOUR,
    \n+
    619#define CS_12HOUR CS_12HOUR
    \n+
    620 CS_DT_CONVFMT
    \n+
    621#define CS_DT_CONVFMT CS_DT_CONVFMT
    \n+
    622};
    \n+
    623
    \n+
    624/* DT_CONVFMT types */
    \n+
    625enum
    \n+
    626{
    \n+
    627 CS_DATES_SHORT = 0,
    \n+
    628#define CS_DATES_SHORT CS_DATES_SHORT
    \n+
    629 CS_DATES_MDY1,
    \n+
    630#define CS_DATES_MDY1 CS_DATES_MDY1
    \n+
    631 CS_DATES_YMD1,
    \n+
    632#define CS_DATES_YMD1 CS_DATES_YMD1
    \n+
    633 CS_DATES_DMY1,
    \n+
    634#define CS_DATES_DMY1 CS_DATES_DMY1
    \n+
    635 CS_DATES_DMY2,
    \n+
    636#define CS_DATES_DMY2 CS_DATES_DMY2
    \n+
    637 CS_DATES_DMY3,
    \n+
    638#define CS_DATES_DMY3 CS_DATES_DMY3
    \n+
    639 CS_DATES_DMY4,
    \n+
    640#define CS_DATES_DMY4 CS_DATES_DMY4
    \n+
    641 CS_DATES_MDY2,
    \n+
    642#define CS_DATES_MDY2 CS_DATES_MDY2
    \n+
    643 CS_DATES_HMS,
    \n+
    644#define CS_DATES_HMS CS_DATES_HMS
    \n+
    645 CS_DATES_LONG,
    \n+
    646#define CS_DATES_LONG CS_DATES_LONG
    \n+
    647 CS_DATES_MDY3,
    \n+
    648#define CS_DATES_MDY3 CS_DATES_MDY3
    \n+
    649 CS_DATES_YMD2,
    \n+
    650#define CS_DATES_YMD2 CS_DATES_YMD2
    \n+
    651 CS_DATES_YMD3,
    \n+
    652#define CS_DATES_YMD3 CS_DATES_YMD3
    \n+
    653 CS_DATES_YDM1,
    \n+
    654#define CS_DATES_YDM1 CS_DATES_YDM1
    \n+
    655 CS_DATES_MYD1,
    \n+
    656#define CS_DATES_MYD1 CS_DATES_MYD1
    \n+
    657 CS_DATES_DYM1,
    \n+
    658#define CS_DATES_DYM1 CS_DATES_DYM1
    \n+
    659 CS_DATES_MDY1_YYYY = 101,
    \n+
    660#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
    \n+
    661 CS_DATES_YMD1_YYYY,
    \n+
    662#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
    \n+
    663 CS_DATES_DMY1_YYYY,
    \n+
    664#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
    \n+
    665 CS_DATES_DMY2_YYYY,
    \n+
    666#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
    \n+
    667 CS_DATES_DMY3_YYYY,
    \n+
    668#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
    \n+
    669 CS_DATES_DMY4_YYYY,
    \n+
    670#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
    \n+
    671 CS_DATES_MDY2_YYYY,
    \n+
    672#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
    \n+
    673 CS_DATES_MDY3_YYYY = 110,
    \n+
    674#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
    \n+
    675 CS_DATES_YMD2_YYYY,
    \n+
    676#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
    \n+
    677 CS_DATES_YMD3_YYYY
    \n+
    678#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
    \n+
    679};
    \n+
    680
    \n+
    681typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
    \n+
    682 CS_INT * destlen);
    \n+
    683
    \n+
    \n+
    684typedef struct _cs_objname
    \n+
    685{
    \n+
    686 CS_BOOL thinkexists;
    \n+
    687 CS_INT object_type;
    \n+
    688 CS_CHAR last_name[CS_MAX_NAME];
    \n+
    689 CS_INT lnlen;
    \n+
    690 CS_CHAR first_name[CS_MAX_NAME];
    \n+
    691 CS_INT fnlen;
    \n+
    692 CS_VOID *scope;
    \n+
    693 CS_INT scopelen;
    \n+
    694 CS_VOID *thread;
    \n+
    695 CS_INT threadlen;
    \n+
    696} CS_OBJNAME;
    \n+
    \n+
    697
    \n+
    \n+
    698typedef struct _cs_objdata
    \n+
    699{
    \n+
    700 CS_BOOL actuallyexists;
    \n+
    701 CS_CONNECTION *connection;
    \n+
    702 CS_COMMAND *command;
    \n+
    703 CS_VOID *buffer;
    \n+
    704 CS_INT buflen;
    \n+
    705} CS_OBJDATA;
    \n+
    \n+
    706
    \n+
    707/* Eventually, these should be in terms of TDS values */
    \n+
    708enum
    \n+
    709{
    \n+
    710 CS_OPT_MONDAY = 1,
    \n+
    711 CS_OPT_TUESDAY,
    \n+
    712 CS_OPT_WEDNESDAY,
    \n+
    713 CS_OPT_THURSDAY,
    \n+
    714 CS_OPT_FRIDAY,
    \n+
    715 CS_OPT_SATURDAY,
    \n+
    716 CS_OPT_SUNDAY
    \n+
    717};
    \n+
    718enum
    \n+
    719{
    \n+
    720 CS_OPT_FMTMDY = 1,
    \n+
    721 CS_OPT_FMTDMY,
    \n+
    722 CS_OPT_FMTYMD,
    \n+
    723 CS_OPT_FMTYDM,
    \n+
    724 CS_OPT_FMTMYD,
    \n+
    725 CS_OPT_FMTDYM
    \n+
    726};
    \n+
    727enum
    \n+
    728{
    \n+
    729 CS_OPT_LEVEL0 = 0,
    \n+
    730 CS_OPT_LEVEL1,
    \n+
    731 CS_OPT_LEVEL2,
    \n+
    732 CS_OPT_LEVEL3
    \n+
    733};
    \n+
    734
    \n+
    735#define CS_FALSE 0
    \n+
    736#define CS_TRUE 1
    \n+
    737
    \n+
    738#define SRV_PROC CS_VOID
    \n+
    739
    \n+
    740/* constants required for ct_diag (not jet implemented) */
    \n+
    741#define CS_CLIENTMSG_TYPE 4700
    \n+
    742#define CS_SERVERMSG_TYPE 4701
    \n+
    743#define CS_ALLMSG_TYPE 4702
    \n+
    744
    \n+
    745CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
    \n+
    746 CS_INT * resultlen);
    \n+
    747CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
    \n+
    748CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
    \n+
    749CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
    \n+
    750CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    751CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
    \n+
    752 CS_CHAR * formats, CS_INT formatlen, ...);
    \n+
    753#undef cs_dt_crack
    \n+
    754CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
    \n+
    755CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
    \n+
    756#define cs_dt_crack cs_dt_crack_v2
    \n+
    757CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
    \n+
    758CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
    \n+
    759CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
    \n+
    760 CS_INT * outlen);
    \n+
    761CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
    \n+
    762 CS_INT buflen, CS_INT * outlen);
    \n+
    763
    \n+
    764CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
    \n+
    765CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
    \n+
    766CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
    \n+
    767CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
    \n+
    768CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
    \n+
    769 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
    \n+
    770CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
    \n+
    771CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
    \n+
    772CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
    \n+
    773CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
    \n+
    774 CS_INT * result);
    \n+
    775CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
    \n+
    776CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
    \n+
    777
    \n+
    778const char * cs_prretcode(int retcode);
    \n+
    779
    \n+
    780#ifdef __cplusplus
    \n+
    781#if 0
    \n+
    782{
    \n+
    783#endif
    \n+
    784}
    \n+
    785#endif
    \n+
    786
    \n+
    787#endif
    \n+
    Definition cspublic.h:685
    \n+
    Definition cspublic.h:699
    \n
    Definition cstypes.h:114
    \n-
    Definition cstypes.h:129
    \n-
    Definition cstypes.h:135
    \n-
    Definition cstypes.h:147
    \n-
    Definition cstypes.h:153
    \n
    Definition cstypes.h:159
    \n
    Definition cstypes.h:177
    \n
    Definition cstypes.h:191
    \n-
    Definition ctlib.h:45
    \n
    Definition ctlib.h:75
    \n
    Definition ctlib.h:117
    \n
    Definition ctlib.h:212
    \n+
    Definition ctlib.h:239
    \n
    Definition ctlib.h:248
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-cstypes.h\n+cspublic.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,239 +26,822 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _cstypes_h_\n- 21#define _cstypes_h_\n+ 20#ifndef _cspublic_h_\n+ 21#define _cspublic_h_\n 22\n- 23#include \"tds_sysdep_public.h\"\n+ 23#include \n 24\n- 25#ifdef __cplusplus\n- 26extern \"C\"\n- 27{\n- 28#if 0\n- 29}\n- 30#endif\n- 31#endif\n- 32\n- 33typedef int32_t CS_INT;\n- 34typedef uint32_t CS_UINT;\n- 35typedef int64_t CS_BIGINT;\n- 36typedef uint64_t CS_UBIGINT;\n- 37typedef int16_t CS_SMALLINT;\n- 38typedef uint16_t CS_USMALLINT;\n- 39typedef unsigned char CS_TINYINT;\n- 40typedef char CS_CHAR;\n- 41typedef unsigned char CS_BYTE;\n- 42typedef tds_sysdep_real32_type CS_REAL;\n- 43typedef tds_sysdep_real64_type CS_FLOAT;\n- 44typedef int32_t CS_BOOL;\n- 45typedef void CS_VOID;\n- 46typedef unsigned char CS_IMAGE;\n- 47typedef unsigned char CS_TEXT;\n- 48typedef unsigned char CS_LONGBINARY;\n- 49typedef unsigned char CS_LONGCHAR;\n- 50typedef long CS_LONG;\n- 51typedef unsigned char CS_BINARY;\n- 52typedef uint16_t CS_USHORT;\n- 53typedef unsigned char CS_BIT;\n- 54\n- 55typedef CS_INT CS_RETCODE;\n- 56\n- 57#define CS_MAX_NAME 132\n- 58#define CS_MAX_SCALE 77\n- 59#define CS_MAX_PREC 77 /* used by php */\n- 60#define CS_MAX_NUMLEN 33 /* used by roguewave */\n- 61#define CS_MAX_MSG 1024\n- 62#define CS_SQLSTATE_SIZE 8\n- 63#define CS_OBJ_NAME 400\n- 64#define CS_TP_SIZE 16 /* text pointer */\n- 65#define CS_TS_SIZE 8 /* length of timestamp */\n- 66\n+ 25#undef TDS_STATIC_CAST\n+ 26#ifdef __cplusplus\n+ 27#define TDS_STATIC_CAST(type, a) static_cast(a)\n+ 28extern \"C\"\n+ 29{\n+ 30#if 0\n+ 31}\n+ 32#endif\n+ 33#else\n+ 34#define TDS_STATIC_CAST(type, a) ((type)(a))\n+ 35#endif\n+ 36\n+ 37#define CS_PUBLIC\n+ 38#define CS_STATIC static\n+ 39\n+ 40#define CS_SUCCEED 1\n+ 41#define CS_FAIL 0\n+ 42#define CS_MEM_ERROR -1\n+ 43#define CS_PENDING -2\n+ 44#define CS_QUIET -3\n+ 45#define CS_BUSY -4\n+ 46#define CS_INTERRUPT -5\n+ 47#define CS_BLK_HAS_TEXT -6\n+ 48#define CS_CONTINUE -7\n+ 49#define CS_FATAL -8\n+ 50#define CS_RET_HAFAILOVER -9\n+ 51#define CS_UNSUPPORTED -10\n+ 52\n+ 53#define CS_CANCELED -202\n+ 54#define CS_ROW_FAIL -203\n+ 55#define CS_END_DATA -204\n+ 56#define CS_END_RESULTS -205\n+ 57#define CS_END_ITEM -206\n+ 58#define CS_NOMSG -207\n+ 59#define CS_TIMED_OUT -208\n+ 60\n+ 61#define CS_SIZEOF(x) sizeof(x)\n+ 62\n+ 63#define CS_LAYER(x) (((x) >> 24) & 0xFF)\n+ 64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)\n+ 65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)\n+ 66#define CS_NUMBER(x) ((x) & 0xFF)\n 67\n-68typedef struct _cs_numeric\n- 69{\n- 70 unsigned char precision;\n- 71 unsigned char scale;\n- 72 unsigned char array[CS_MAX_NUMLEN];\n- 73} CS_NUMERIC;\n- 74\n- 75typedef CS_NUMERIC CS_DECIMAL;\n+ 68/* forward declarations */\n+ 69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);\n+ 70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *,\n+CS_CLIENTMSG *);\n+ 71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *,\n+CS_SERVERMSG *);\n+ 72\n+ 73\n+ 74#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)\n+ 75#define CS_SRC_VALUE -2562\n 76\n-77typedef struct _cs_varbinary\n- 78{\n- 79 CS_SMALLINT len;\n- 80 CS_CHAR array[256];\n- 81} CS_VARBINARY;\n- 82\n-83typedef struct _cs_varchar\n- 84{\n- 85 CS_SMALLINT len; /* length of the string */\n- 86 CS_CHAR str[256]; /* string, no NULL terminator */\n- 87} CS_VARCHAR;\n- 88\n- 89typedef struct _cs_config CS_CONFIG;\n- 90typedef struct _cs_context CS_CONTEXT;\n- 91typedef struct _cs_connection CS_CONNECTION;\n- 92typedef struct _cs_locale CS_LOCALE;\n- 93typedef struct _cs_command CS_COMMAND;\n- 94typedef struct _cs_blk_row CS_BLK_ROW;\n- 95\n-96typedef struct _cs_iodesc\n- 97{\n- 98 CS_INT iotype;\n- 99 CS_INT datatype;\n- 100 CS_LOCALE *locale;\n- 101 CS_INT usertype;\n- 102 CS_INT total_txtlen;\n- 103 CS_INT offset;\n- 104 CS_BOOL log_on_update;\n- 105 CS_CHAR name[CS_OBJ_NAME];\n- 106 CS_INT namelen;\n- 107 CS_BYTE timestamp[CS_TS_SIZE];\n- 108 CS_INT timestamplen;\n- 109 CS_BYTE textptr[CS_TP_SIZE];\n- 110 CS_INT textptrlen;\n- 111} CS_IODESC;\n- 112\n-113typedef struct _cs_datafmt\n- 114{\n- 115 CS_CHAR name[CS_MAX_NAME];\n- 116 CS_INT namelen;\n- 117 CS_INT datatype;\n- 118 CS_INT format;\n- 119 CS_INT maxlength;\n- 120 CS_INT scale;\n- 121 CS_INT precision;\n- 122 CS_INT status;\n- 123 CS_INT count;\n- 124 CS_INT usertype;\n- 125 CS_LOCALE *locale;\n- 126} CS_DATAFMT;\n- 127\n-128typedef struct _cs_money\n- 129{\n- 130 CS_INT mnyhigh;\n- 131 CS_UINT mnylow;\n- 132} CS_MONEY;\n- 133\n-134typedef struct _cs_money4\n- 135{\n- 136 CS_INT mny4;\n- 137} CS_MONEY4;\n+ 77\n+ 78\n+ 79/* status bits for CS_SERVERMSG */\n+ 80#define CS_HASEED 0x01\n+ 81\n+ 82typedef struct _cs_blkdesc CS_BLKDESC;\n+ 83\n+ 84/* CS_CAP_REQUEST values */\n+ 85#define CS_REQ_LANG 1\n+ 86#define CS_REQ_RPC 2\n+ 87#define CS_REQ_NOTIF 3\n+ 88#define CS_REQ_MSTMT 4\n+ 89#define CS_REQ_BCP 5\n+ 90#define CS_REQ_CURSOR 6\n+ 91#define CS_REQ_DYN 7\n+ 92#define CS_REQ_MSG 8\n+ 93#define CS_REQ_PARAM 9\n+ 94#define CS_DATA_INT1 10\n+ 95#define CS_DATA_INT2 11\n+ 96#define CS_DATA_INT4 12\n+ 97#define CS_DATA_BIT 13\n+ 98#define CS_DATA_CHAR 14\n+ 99#define CS_DATA_VCHAR 15\n+ 100#define CS_DATA_BIN 16\n+ 101#define CS_DATA_VBIN 17\n+ 102#define CS_DATA_MNY8 18\n+ 103#define CS_DATA_MNY4 19\n+ 104#define CS_DATA_DATE8 20\n+ 105#define CS_DATA_DATE4 21\n+ 106#define CS_DATA_FLT4 22\n+ 107#define CS_DATA_FLT8 23\n+ 108#define CS_DATA_NUM 24\n+ 109#define CS_DATA_TEXT 25\n+ 110#define CS_DATA_IMAGE 26\n+ 111#define CS_DATA_DEC 27\n+ 112#define CS_DATA_LCHAR 28\n+ 113#define CS_DATA_LBIN 29\n+ 114#define CS_DATA_INTN 30\n+ 115#define CS_DATA_DATETIMEN 31\n+ 116#define CS_DATA_MONEYN 32\n+ 117#define CS_CSR_PREV 33\n+ 118#define CS_CSR_FIRST 34\n+ 119#define CS_CSR_LAST 35\n+ 120#define CS_CSR_ABS 36\n+ 121#define CS_CSR_REL 37\n+ 122#define CS_CSR_MULTI 38\n+ 123#define CS_CON_OOB 39\n+ 124#define CS_CON_INBAND 40\n+ 125#define CS_CON_LOGICAL 41\n+ 126#define CS_PROTO_TEXT 42\n+ 127#define CS_PROTO_BULK 43\n+ 128#define CS_REQ_URGNOTIF 44\n+ 129#define CS_DATA_SENSITIVITY 45\n+ 130#define CS_DATA_BOUNDARY 46\n+ 131#define CS_PROTO_DYNAMIC 47\n+ 132#define CS_PROTO_DYNPROC 48\n+ 133#define CS_DATA_FLTN 49\n+ 134#define CS_DATA_BITN 50\n+ 135#define CS_OPTION_GET 51\n+ 136#define CS_DATA_INT8 52\n+ 137#define CS_DATA_VOID 53\n 138\n- 139typedef CS_INT CS_DATE;\n- 140\n- 141typedef CS_INT CS_TIME;\n- 142\n- 143typedef CS_UBIGINT CS_BIGDATETIME;\n- 144typedef CS_UBIGINT CS_BIGTIME;\n- 145\n-146typedef struct _cs_datetime\n- 147{\n- 148 CS_INT dtdays;\n- 149 CS_INT dttime;\n- 150} CS_DATETIME;\n- 151\n-152typedef struct _cs_datetime4\n- 153{\n- 154 CS_USHORT days;\n- 155 CS_USHORT minutes;\n- 156} CS_DATETIME4;\n- 157\n-158typedef struct _cs_daterec\n- 159{\n- 160 CS_INT dateyear;\n- 161 CS_INT datemonth;\n- 162 CS_INT datedmonth;\n- 163 CS_INT datedyear;\n- 164 CS_INT datedweek;\n- 165 CS_INT datehour;\n- 166 CS_INT dateminute;\n- 167 CS_INT datesecond;\n- 168 CS_INT datemsecond;\n- 169 CS_INT datetzone;\n- 170 CS_INT datesecfrac;\n- 171 CS_INT datesecprec;\n- 172} CS_DATEREC;\n- 173\n- 174typedef CS_INT CS_MSGNUM;\n+ 139/* CS_CAP_RESPONSE values */\n+ 140#define CS_RES_NOMSG 1\n+ 141#define CS_RES_NOEED 2\n+ 142#define CS_RES_NOPARAM 3\n+ 143#define CS_DATA_NOINT1 4\n+ 144#define CS_DATA_NOINT2 5\n+ 145#define CS_DATA_NOINT4 6\n+ 146#define CS_DATA_NOBIT 7\n+ 147#define CS_DATA_NOCHAR 8\n+ 148#define CS_DATA_NOVCHAR 9\n+ 149#define CS_DATA_NOBIN 10\n+ 150#define CS_DATA_NOVBIN 11\n+ 151#define CS_DATA_NOMNY8 12\n+ 152#define CS_DATA_NOMNY4 13\n+ 153#define CS_DATA_NODATE8 14\n+ 154#define CS_DATA_NODATE4 15\n+ 155#define CS_DATA_NOFLT4 16\n+ 156#define CS_DATA_NOFLT8 17\n+ 157#define CS_DATA_NONUM 18\n+ 158#define CS_DATA_NOTEXT 19\n+ 159#define CS_DATA_NOIMAGE 20\n+ 160#define CS_DATA_NODEC 21\n+ 161#define CS_DATA_NOLCHAR 22\n+ 162#define CS_DATA_NOLBIN 23\n+ 163#define CS_DATA_NOINTN 24\n+ 164#define CS_DATA_NODATETIMEN 25\n+ 165#define CS_DATA_NOMONEYN 26\n+ 166#define CS_CON_NOOOB 27\n+ 167#define CS_CON_NOINBAND 28\n+ 168#define CS_PROTO_NOTEXT 29\n+ 169#define CS_PROTO_NOBULK 30\n+ 170#define CS_DATA_NOSENSITIVITY 31\n+ 171#define CS_DATA_NOBOUNDARY 32\n+ 172#define CS_RES_NOTDSDEBUG 33\n+ 173#define CS_RES_NOSTRIPBLANKS 34\n+ 174#define CS_DATA_NOINT8 35\n 175\n-176typedef struct _cs_clientmsg\n- 177{\n- 178 CS_INT severity;\n- 179 CS_MSGNUM msgnumber;\n- 180 CS_CHAR msgstring[CS_MAX_MSG];\n- 181 CS_INT msgstringlen;\n- 182 CS_INT osnumber;\n- 183 CS_CHAR osstring[CS_MAX_MSG];\n- 184 CS_INT osstringlen;\n- 185 CS_INT status;\n- 186 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];\n- 187 CS_INT sqlstatelen;\n- 188} CS_CLIENTMSG;\n- 189\n-190typedef struct _cs_servermsg\n- 191{\n- 192 CS_MSGNUM msgnumber;\n- 193 CS_INT state;\n- 194 CS_INT severity;\n- 195 CS_CHAR text[CS_MAX_MSG];\n- 196 CS_INT textlen;\n- 197 CS_CHAR svrname[CS_MAX_NAME];\n- 198 CS_INT svrnlen;\n- 199 CS_CHAR proc[CS_MAX_NAME];\n- 200 CS_INT proclen;\n- 201 CS_INT line;\n- 202 CS_INT status;\n- 203 CS_BYTE sqlstate[CS_SQLSTATE_SIZE];\n- 204 CS_INT sqlstatelen;\n- 205} CS_SERVERMSG;\n- 206\n- 207#ifdef __cplusplus\n- 208#if 0\n- 209{\n- 210#endif\n- 211}\n- 212#endif\n- 213\n- 214#endif\n-_cs_numeric\n-Definition cstypes.h:69\n-_cs_varbinary\n-Definition cstypes.h:78\n-_cs_varchar\n-Definition cstypes.h:84\n-_cs_iodesc\n-Definition cstypes.h:97\n+ 176/* Properties */\n+ 177enum\n+ 178{\n+ 179/*\n+ 180 * These defines looks weird but programs can test support for defines,\n+ 181 * compiler can check enum and there are no define side effecs\n+ 182 */\n+ 183 CS_USERNAME = 9100,\n+ 184#define CS_USERNAME CS_USERNAME\n+ 185 CS_PASSWORD = 9101,\n+ 186#define CS_PASSWORD CS_PASSWORD\n+ 187 CS_APPNAME = 9102,\n+ 188#define CS_APPNAME CS_APPNAME\n+ 189 CS_HOSTNAME = 9103,\n+ 190#define CS_HOSTNAME CS_HOSTNAME\n+ 191 CS_LOGIN_STATUS = 9104,\n+ 192#define CS_LOGIN_STATUS CS_LOGIN_STATUS\n+ 193 CS_TDS_VERSION = 9105,\n+ 194#define CS_TDS_VERSION CS_TDS_VERSION\n+ 195 CS_CHARSETCNV = 9106,\n+ 196#define CS_CHARSETCNV CS_CHARSETCNV\n+ 197 CS_PACKETSIZE = 9107,\n+ 198#define CS_PACKETSIZE CS_PACKETSIZE\n+ 199 CS_USERDATA = 9108,\n+ 200#define CS_USERDATA CS_USERDATA\n+ 201 CS_NETIO = 9110,\n+ 202#define CS_NETIO CS_NETIO\n+ 203 CS_TEXTLIMIT = 9112,\n+ 204#define CS_TEXTLIMIT CS_TEXTLIMIT\n+ 205 CS_HIDDEN_KEYS = 9113,\n+ 206#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS\n+ 207 CS_VERSION = 9114,\n+ 208#define CS_VERSION CS_VERSION\n+ 209 CS_IFILE = 9115,\n+ 210#define CS_IFILE CS_IFILE\n+ 211 CS_LOGIN_TIMEOUT = 9116,\n+ 212#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT\n+ 213 CS_TIMEOUT = 9117,\n+ 214#define CS_TIMEOUT CS_TIMEOUT\n+ 215 CS_MAX_CONNECT = 9118,\n+ 216#define CS_MAX_CONNECT CS_MAX_CONNECT\n+ 217 CS_EXPOSE_FMTS = 9120,\n+ 218#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS\n+ 219 CS_EXTRA_INF = 9121,\n+ 220#define CS_EXTRA_INF CS_EXTRA_INF\n+ 221 CS_ANSI_BINDS = 9123,\n+ 222#define CS_ANSI_BINDS CS_ANSI_BINDS\n+ 223 CS_BULK_LOGIN = 9124,\n+ 224#define CS_BULK_LOGIN CS_BULK_LOGIN\n+ 225 CS_LOC_PROP = 9125,\n+ 226#define CS_LOC_PROP CS_LOC_PROP\n+ 227 CS_PARENT_HANDLE = 9130,\n+ 228#define CS_PARENT_HANDLE CS_PARENT_HANDLE\n+ 229 CS_EED_CMD = 9131,\n+ 230#define CS_EED_CMD CS_EED_CMD\n+ 231 CS_DIAG_TIMEOUT = 9132,\n+ 232#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT\n+ 233 CS_DISABLE_POLL = 9133,\n+ 234#define CS_DISABLE_POLL CS_DISABLE_POLL\n+ 235 CS_SEC_ENCRYPTION = 9135,\n+ 236#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION\n+ 237 CS_SEC_CHALLENGE = 9136,\n+ 238#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE\n+ 239 CS_SEC_NEGOTIATE = 9137,\n+ 240#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE\n+ 241 CS_CON_STATUS = 9143,\n+ 242#define CS_CON_STATUS CS_CON_STATUS\n+ 243 CS_VER_STRING = 9144,\n+ 244#define CS_VER_STRING CS_VER_STRING\n+ 245 CS_SERVERNAME = 9146,\n+ 246#define CS_SERVERNAME CS_SERVERNAME\n+ 247 CS_SEC_APPDEFINED = 9149,\n+ 248#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED\n+ 249 CS_STICKY_BINDS = 9151,\n+ 250#define CS_STICKY_BINDS CS_STICKY_BINDS\n+ 251 CS_SEC_NETWORKAUTH = 9175,\n+ 252#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH\n+ 253 CS_SEC_DELEGATION = 9176,\n+ 254#define CS_SEC_DELEGATION CS_SEC_DELEGATION\n+ 255 CS_SEC_MUTUALAUTH = 9177,\n+ 256#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH\n+ 257 CS_SEC_SERVERPRINCIPAL = 9188,\n+ 258#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL\n+ 259 CS_SERVERADDR = 9206,\n+ 260#define CS_SERVERADDR CS_SERVERADDR\n+ 261 CS_PORT = 9300,\n+ 262#define CS_PORT CS_PORT\n+ 263 CS_CLIENTCHARSET = 9301,\n+ 264#define CS_CLIENTCHARSET CS_CLIENTCHARSET\n+ 265 CS_DATABASE = 9302\n+ 266#define CS_DATABASE CS_DATABASE\n+ 267};\n+ 268\n+ 269/* Arbitrary precision math operators */\n+ 270enum\n+ 271{\n+ 272 CS_ADD = 1,\n+ 273 CS_SUB,\n+ 274 CS_MULT,\n+ 275 CS_DIV\n+ 276};\n+ 277\n+ 278enum\n+ 279{\n+ 280#define CS_TDS_AUTO CS_TDS_AUTO\n+ 281 CS_TDS_AUTO = 0,\n+ 282 CS_TDS_40 = 7360,\n+ 283 CS_TDS_42,\n+ 284 CS_TDS_46,\n+ 285 CS_TDS_495,\n+ 286 CS_TDS_50,\n+ 287 CS_TDS_70,\n+ 288 CS_TDS_71,\n+ 289#define CS_TDS_71 CS_TDS_71\n+ 290 CS_TDS_72,\n+ 291#define CS_TDS_72 CS_TDS_72\n+ 292 CS_TDS_73,\n+ 293#define CS_TDS_73 CS_TDS_73\n+ 294 CS_TDS_74,\n+ 295#define CS_TDS_74 CS_TDS_74\n+ 296};\n+ 297\n+ 298/* bit mask values used by CS_DATAFMT.status */\n+ 299#define CS_HIDDEN (1 << 0)\n+ 300#define CS_KEY (1 << 1)\n+ 301#define CS_VERSION_KEY (1 << 2)\n+ 302#define CS_NODATA (1 << 3)\n+ 303#define CS_UPDATABLE (1 << 4)\n+ 304#define CS_CANBENULL (1 << 5)\n+ 305#define CS_DESCIN (1 << 6)\n+ 306#define CS_DESCOUT (1 << 7)\n+ 307#define CS_INPUTVALUE (1 << 8)\n+ 308#define CS_UPDATECOL (1 << 9)\n+ 309#define CS_RETURN (1 << 10)\n+ 310#define CS_TIMESTAMP (1 << 13)\n+ 311#define CS_NODEFAULT (1 << 14)\n+ 312#define CS_IDENTITY (1 << 15)\n+ 313\n+ 314/*\n+ 315 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1\n+ 316 * (the documentation states -1)\n+ 317 */\n+ 318#define CS_GOODDATA 0\n+ 319#define CS_NULLDATA (-1)\n+ 320\n+ 321/* CS_CON_STATUS read-only property bit mask values */\n+ 322#define CS_CONSTAT_CONNECTED 0x01\n+ 323#define CS_CONSTAT_DEAD 0x02\n+ 324\n+ 325/*\n+ 326 * Code added for CURSOR support\n+ 327 * types accepted by ct_cursor\n+ 328 */\n+ 329#define CS_CURSOR_DECLARE 700\n+ 330#define CS_CURSOR_OPEN 701\n+ 331#define CS_CURSOR_ROWS 703\n+ 332#define CS_CURSOR_UPDATE 704\n+ 333#define CS_CURSOR_DELETE 705\n+ 334#define CS_CURSOR_CLOSE 706\n+ 335#define CS_CURSOR_DEALLOC 707\n+ 336#define CS_CURSOR_OPTION 725\n+ 337\n+ 338#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)\n+ 339#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)\n+ 340#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)\n+ 341#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)\n+ 342\n+ 343\n+ 344#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)\n+ 345#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)\n+ 346#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)\n+ 347#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)\n+ 348#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)\n+ 349#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)\n+ 350#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)\n+ 351#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)\n+ 352\n+ 353#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)\n+ 354#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)\n+ 355#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)\n+ 356#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)\n+ 357\n+ 358/* options accepted by ct_options() */\n+ 359#define CS_OPT_DATEFIRST 5001\n+ 360#define CS_OPT_TEXTSIZE 5002\n+ 361#define CS_OPT_STATS_TIME 5003\n+ 362#define CS_OPT_STATS_IO 5004\n+ 363#define CS_OPT_ROWCOUNT 5005\n+ 364#define CS_OPT_DATEFORMAT 5007\n+ 365#define CS_OPT_ISOLATION 5008\n+ 366#define CS_OPT_AUTHON 5009\n+ 367#define CS_OPT_SHOWPLAN 5013\n+ 368#define CS_OPT_NOEXEC 5014\n+ 369#define CS_OPT_ARITHIGNORE 5015\n+ 370#define CS_OPT_TRUNCIGNORE 5016\n+ 371#define CS_OPT_ARITHABORT 5017\n+ 372#define CS_OPT_PARSEONLY 5018\n+ 373#define CS_OPT_GETDATA 5020\n+ 374#define CS_OPT_NOCOUNT 5021\n+ 375#define CS_OPT_FORCEPLAN 5023\n+ 376#define CS_OPT_FORMATONLY 5024\n+ 377#define CS_OPT_CHAINXACTS 5025\n+ 378#define CS_OPT_CURCLOSEONXACT 5026\n+ 379#define CS_OPT_FIPSFLAG 5027\n+ 380#define CS_OPT_RESTREES 5028\n+ 381#define CS_OPT_IDENTITYON 5029\n+ 382#define CS_OPT_CURREAD 5030\n+ 383#define CS_OPT_CURWRITE 5031\n+ 384#define CS_OPT_IDENTITYOFF 5032\n+ 385#define CS_OPT_AUTHOFF 5033\n+ 386#define CS_OPT_ANSINULL 5034\n+ 387#define CS_OPT_QUOTED_IDENT 5035\n+ 388#define CS_OPT_ANSIPERM 5036\n+ 389#define CS_OPT_STR_RTRUNC 5037\n+ 390\n+ 391/* options accepted by ct_command() */\n+ 392enum ct_command_options\n+ 393{\n+ 394 CS_MORE = 16,\n+ 395 CS_END = 32,\n+ 396 CS_RECOMPILE = 188,\n+ 397 CS_NO_RECOMPILE,\n+ 398 CS_BULK_INIT,\n+ 399 CS_BULK_CONT,\n+ 400 CS_BULK_DATA,\n+ 401 CS_COLUMN_DATA\n+ 402};\n+ 403\n+ 404\n+ 405/*\n+ 406 * bind formats, should be mapped to TDS types\n+ 407 * can be a combination of bit\n+ 408 */\n+ 409enum\n+ 410{\n+ 411 CS_FMT_UNUSED = 0,\n+ 412#define CS_FMT_UNUSED CS_FMT_UNUSED\n+ 413 CS_FMT_NULLTERM = 1,\n+ 414#define CS_FMT_NULLTERM CS_FMT_NULLTERM\n+ 415 CS_FMT_PADNULL = 2,\n+ 416#define CS_FMT_PADBLANK CS_FMT_PADBLANK\n+ 417 CS_FMT_PADBLANK = 4,\n+ 418#define CS_FMT_PADNULL CS_FMT_PADNULL\n+ 419 CS_FMT_JUSTIFY_RT = 8\n+ 420#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT\n+ 421};\n+ 422\n+ 423/* callbacks */\n+ 424#define CS_COMPLETION_CB 1\n+ 425#define CS_SERVERMSG_CB 2\n+ 426#define CS_CLIENTMSG_CB 3\n+ 427#define CS_NOTIF_CB 4\n+ 428#define CS_ENCRYPT_CB 5\n+ 429#define CS_CHALLENGE_CB 6\n+ 430#define CS_DS_LOOKUP_CB 7\n+ 431#define CS_SECSESSION_CB 8\n+ 432#define CS_SIGNAL_CB 100\n+ 433#define CS_MESSAGE_CB 9119\n+ 434\n+ 435/* string types */\n+ 436#define CS_NULLTERM -9\n+ 437#define CS_WILDCARD -99\n+ 438#define CS_NO_LIMIT -9999\n+ 439#define CS_UNUSED -99999\n+ 440\n+ 441/* other */\n+ 442#define CS_GET 33\n+ 443#define CS_SET 34\n+ 444#define CS_CLEAR 35\n+ 445#define CS_INIT 36\n+ 446#define CS_STATUS 37\n+ 447#define CS_MSGLIMIT 38\n+ 448#define CS_SUPPORTED 40\n+ 449\n+ 450#define CS_CMD_DONE 4046\n+ 451#define CS_CMD_SUCCEED 4047\n+ 452#define CS_CMD_FAIL 4048\n+ 453\n+ 454/* commands */\n+ 455#define CS_LANG_CMD 148\n+ 456#define CS_RPC_CMD 149\n+ 457#define CS_SEND_DATA_CMD 151\n+ 458#define CS_SEND_BULK_CMD 153\n+ 459\n+ 460#define CS_VERSION_100 112\n+ 461#define CS_VERSION_110 1100\n+ 462#define CS_VERSION_120 1100\n+ 463#define CS_VERSION_125 12500\n+ 464#define CS_VERSION_150 15000\n+ 465\n+ 466#define BLK_VERSION_100 CS_VERSION_100\n+ 467#define BLK_VERSION_110 CS_VERSION_110\n+ 468#define BLK_VERSION_120 CS_VERSION_120\n+ 469#define BLK_VERSION_125 CS_VERSION_125\n+ 470#define BLK_VERSION_150 CS_VERSION_150\n+ 471\n+ 472#define CS_FORCE_EXIT 300\n+ 473#define CS_FORCE_CLOSE 301\n+ 474\n+ 475#define CS_SYNC_IO 8111\n+ 476#define CS_ASYNC_IO 8112\n+ 477#define CS_DEFER_IO 8113\n+ 478\n+ 479#define CS_CANCEL_CURRENT 6000\n+ 480#define CS_CANCEL_ALL 6001\n+ 481#define CS_CANCEL_ATTN 6002\n+ 482\n+ 483#define CS_ROW_COUNT 800\n+ 484#define CS_CMD_NUMBER 801\n+ 485#define CS_NUM_COMPUTES 802\n+ 486#define CS_NUMDATA 803\n+ 487#define CS_NUMORDERCOLS 805\n+ 488#define CS_MSGTYPE 806\n+ 489#define CS_BROWSE_INFO 807\n+ 490#define CS_TRANS_STATE 808\n+ 491\n+ 492#define CS_TRAN_UNDEFINED 0\n+ 493#define CS_TRAN_IN_PROGRESS 1\n+ 494#define CS_TRAN_COMPLETED 2\n+ 495#define CS_TRAN_FAIL 3\n+ 496#define CS_TRAN_STMT_FAIL 4\n+ 497\n+ 498#define CS_COMP_OP 5350\n+ 499#define CS_COMP_ID 5351\n+ 500#define CS_COMP_COLID 5352\n+ 501#define CS_COMP_BYLIST 5353\n+ 502#define CS_BYLIST_LEN 5354\n+ 503\n+ 504#define CS_NO_COUNT -1\n+ 505\n+ 506#define CS_OP_SUM 5370\n+ 507#define CS_OP_AVG 5371\n+ 508#define CS_OP_COUNT 5372\n+ 509#define CS_OP_MIN 5373\n+ 510#define CS_OP_MAX 5374\n+ 511\n+ 512#define CS_CAP_REQUEST 1\n+ 513#define CS_CAP_RESPONSE 2\n+ 514\n+ 515#define CS_PREPARE 717\n+ 516#define CS_EXECUTE 718\n+ 517#define CS_DESCRIBE_INPUT 720\n+ 518#define CS_DESCRIBE_OUTPUT 721\n+ 519\n+ 520#define CS_DEALLOC 711\n+ 521\n+ 522#define CS_LC_ALL 7\n+ 523#define CS_SYB_LANG 8\n+ 524#define CS_SYB_CHARSET 9\n+ 525#define CS_SYB_SORTORDER 10\n+ 526#define CS_SYB_COLLATE CS_SYB_SORTORDER\n+ 527#define CS_SYB_LANG_CHARSET 11\n+ 528\n+ 529#define CS_BLK_IN 1\n+ 530#define CS_BLK_OUT 2\n+ 531\n+ 532#define CS_BLK_BATCH 1\n+ 533#define CS_BLK_ALL 2\n+ 534#define CS_BLK_CANCEL 3\n+ 535\n+ 536/* to do support these */\n+ 537\n+ 538#define CS_BLK_ARRAY_MAXLEN 0x1000\n+ 539#define CS_DEF_PREC 18\n+ 540\n+ 541/* Error Severities */\n+ 542#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)\n+ 543#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)\n+ 544#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)\n+ 545#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)\n+ 546#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)\n+ 547#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)\n+ 548#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)\n+ 549#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)\n+ 550\n+ 551/* result_types */\n+ 552#define CS_COMPUTE_RESULT 4045\n+ 553#define CS_CURSOR_RESULT 4041\n+ 554#define CS_PARAM_RESULT 4042\n+ 555#define CS_ROW_RESULT 4040\n+ 556#define CS_STATUS_RESULT 4043\n+ 557#define CS_COMPUTEFMT_RESULT 4050\n+ 558#define CS_ROWFMT_RESULT 4049\n+ 559#define CS_MSG_RESULT 4044\n+ 560#define CS_DESCRIBE_RESULT 4051\n+ 561\n+ 562/* bind types */\n+ 563#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)\n+ 564#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)\n+ 565#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)\n+ 566#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)\n+ 567#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)\n+ 568#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)\n+ 569#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)\n+ 570#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)\n+ 571#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)\n+ 572#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)\n+ 573#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)\n+ 574#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)\n+ 575#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)\n+ 576#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)\n+ 577#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)\n+ 578#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)\n+ 579#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)\n+ 580#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)\n+ 581#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)\n+ 582#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)\n+ 583#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)\n+ 584#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)\n+ 585#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)\n+ 586#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)\n+ 587#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)\n+ 588#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)\n+ 589#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)\n+ 590#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)\n+ 591#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)\n+ 592#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)\n+ 593#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)\n+ 594#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)\n+ 595#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)\n+ 596#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)\n+ 597#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)\n+ 598#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)\n+ 599#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)\n+ 600#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)\n+ 601#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)\n+ 602\n+ 603#define CS_MIN_SYBTYPE CS_CHAR_TYPE\n+ 604#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE\n+ 605\n+ 606#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)\n+ 607/* cs_dt_info type values */\n+ 608enum\n+ 609{\n+ 610 CS_MONTH = 7340,\n+ 611#define CS_MONTH CS_MONTH\n+ 612 CS_SHORTMONTH,\n+ 613#define CS_SHORTMONTH CS_SHORTMONTH\n+ 614 CS_DAYNAME,\n+ 615#define CS_DAYNAME CS_DAYNAME\n+ 616 CS_DATEORDER,\n+ 617#define CS_DATEORDER CS_DATEORDER\n+ 618 CS_12HOUR,\n+ 619#define CS_12HOUR CS_12HOUR\n+ 620 CS_DT_CONVFMT\n+ 621#define CS_DT_CONVFMT CS_DT_CONVFMT\n+ 622};\n+ 623\n+ 624/* DT_CONVFMT types */\n+ 625enum\n+ 626{\n+ 627 CS_DATES_SHORT = 0,\n+ 628#define CS_DATES_SHORT CS_DATES_SHORT\n+ 629 CS_DATES_MDY1,\n+ 630#define CS_DATES_MDY1 CS_DATES_MDY1\n+ 631 CS_DATES_YMD1,\n+ 632#define CS_DATES_YMD1 CS_DATES_YMD1\n+ 633 CS_DATES_DMY1,\n+ 634#define CS_DATES_DMY1 CS_DATES_DMY1\n+ 635 CS_DATES_DMY2,\n+ 636#define CS_DATES_DMY2 CS_DATES_DMY2\n+ 637 CS_DATES_DMY3,\n+ 638#define CS_DATES_DMY3 CS_DATES_DMY3\n+ 639 CS_DATES_DMY4,\n+ 640#define CS_DATES_DMY4 CS_DATES_DMY4\n+ 641 CS_DATES_MDY2,\n+ 642#define CS_DATES_MDY2 CS_DATES_MDY2\n+ 643 CS_DATES_HMS,\n+ 644#define CS_DATES_HMS CS_DATES_HMS\n+ 645 CS_DATES_LONG,\n+ 646#define CS_DATES_LONG CS_DATES_LONG\n+ 647 CS_DATES_MDY3,\n+ 648#define CS_DATES_MDY3 CS_DATES_MDY3\n+ 649 CS_DATES_YMD2,\n+ 650#define CS_DATES_YMD2 CS_DATES_YMD2\n+ 651 CS_DATES_YMD3,\n+ 652#define CS_DATES_YMD3 CS_DATES_YMD3\n+ 653 CS_DATES_YDM1,\n+ 654#define CS_DATES_YDM1 CS_DATES_YDM1\n+ 655 CS_DATES_MYD1,\n+ 656#define CS_DATES_MYD1 CS_DATES_MYD1\n+ 657 CS_DATES_DYM1,\n+ 658#define CS_DATES_DYM1 CS_DATES_DYM1\n+ 659 CS_DATES_MDY1_YYYY = 101,\n+ 660#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY\n+ 661 CS_DATES_YMD1_YYYY,\n+ 662#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY\n+ 663 CS_DATES_DMY1_YYYY,\n+ 664#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY\n+ 665 CS_DATES_DMY2_YYYY,\n+ 666#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY\n+ 667 CS_DATES_DMY3_YYYY,\n+ 668#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY\n+ 669 CS_DATES_DMY4_YYYY,\n+ 670#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY\n+ 671 CS_DATES_MDY2_YYYY,\n+ 672#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY\n+ 673 CS_DATES_MDY3_YYYY = 110,\n+ 674#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY\n+ 675 CS_DATES_YMD2_YYYY,\n+ 676#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY\n+ 677 CS_DATES_YMD3_YYYY\n+ 678#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY\n+ 679};\n+ 680\n+ 681typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT *\n+srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,\n+ 682 CS_INT * destlen);\n+ 683\n+684typedef struct _cs_objname\n+ 685{\n+ 686 CS_BOOL thinkexists;\n+ 687 CS_INT object_type;\n+ 688 CS_CHAR last_name[CS_MAX_NAME];\n+ 689 CS_INT lnlen;\n+ 690 CS_CHAR first_name[CS_MAX_NAME];\n+ 691 CS_INT fnlen;\n+ 692 CS_VOID *scope;\n+ 693 CS_INT scopelen;\n+ 694 CS_VOID *thread;\n+ 695 CS_INT threadlen;\n+ 696} CS_OBJNAME;\n+ 697\n+698typedef struct _cs_objdata\n+ 699{\n+ 700 CS_BOOL actuallyexists;\n+ 701 CS_CONNECTION *connection;\n+ 702 CS_COMMAND *command;\n+ 703 CS_VOID *buffer;\n+ 704 CS_INT buflen;\n+ 705} CS_OBJDATA;\n+ 706\n+ 707/* Eventually, these should be in terms of TDS values */\n+ 708enum\n+ 709{\n+ 710 CS_OPT_MONDAY = 1,\n+ 711 CS_OPT_TUESDAY,\n+ 712 CS_OPT_WEDNESDAY,\n+ 713 CS_OPT_THURSDAY,\n+ 714 CS_OPT_FRIDAY,\n+ 715 CS_OPT_SATURDAY,\n+ 716 CS_OPT_SUNDAY\n+ 717};\n+ 718enum\n+ 719{\n+ 720 CS_OPT_FMTMDY = 1,\n+ 721 CS_OPT_FMTDMY,\n+ 722 CS_OPT_FMTYMD,\n+ 723 CS_OPT_FMTYDM,\n+ 724 CS_OPT_FMTMYD,\n+ 725 CS_OPT_FMTDYM\n+ 726};\n+ 727enum\n+ 728{\n+ 729 CS_OPT_LEVEL0 = 0,\n+ 730 CS_OPT_LEVEL1,\n+ 731 CS_OPT_LEVEL2,\n+ 732 CS_OPT_LEVEL3\n+ 733};\n+ 734\n+ 735#define CS_FALSE 0\n+ 736#define CS_TRUE 1\n+ 737\n+ 738#define SRV_PROC CS_VOID\n+ 739\n+ 740/* constants required for ct_diag (not jet implemented) */\n+ 741#define CS_CLIENTMSG_TYPE 4700\n+ 742#define CS_SERVERMSG_TYPE 4701\n+ 743#define CS_ALLMSG_TYPE 4702\n+ 744\n+ 745CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID *\n+srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,\n+ 746 CS_INT * resultlen);\n+ 747CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);\n+ 748CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);\n+ 749CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);\n+ 750CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n+ 751CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen,\n+CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,\n+ 752 CS_CHAR * formats, CS_INT formatlen, ...);\n+ 753#undef cs_dt_crack\n+ 754CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID *\n+dateval, CS_DATEREC * daterec);\n+ 755CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID *\n+dateval, CS_DATEREC * daterec);\n+ 756#define cs_dt_crack cs_dt_crack_v2\n+ 757CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);\n+ 758CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);\n+ 759CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale,\n+CS_INT type, CS_VOID * buffer, CS_INT buflen,\n+ 760 CS_INT * outlen);\n+ 761CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale,\n+CS_INT type, CS_INT item, CS_VOID * buffer,\n+ 762 CS_INT buflen, CS_INT * outlen);\n+ 763\n+ 764CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID *\n+var1, CS_VOID * var2, CS_VOID * dest);\n+ 765CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1,\n+CS_VOID * var2, CS_INT * result);\n+ 766CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE *\n+destloc, CS_INT * conv_multiplier);\n+ 767CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT\n+idx, CS_VOID * buffer);\n+ 768CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT\n+srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,\n+ 769 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier,\n+CS_CONV_FUNC * func);\n+ 770CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME *\n+objname, CS_OBJDATA * objdata);\n+ 771CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype,\n+CS_INT desttype, CS_CONV_FUNC * func);\n+ 772CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID *\n+buffer, CS_INT buflen);\n+ 773CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type,\n+CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,\n+ 774 CS_INT * result);\n+ 775CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer,\n+CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);\n+ 776CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT\n+desttype, CS_BOOL * result);\n+ 777\n+ 778const char * cs_prretcode(int retcode);\n+ 779\n+ 780#ifdef __cplusplus\n+ 781#if 0\n+ 782{\n+ 783#endif\n+ 784}\n+ 785#endif\n+ 786\n+ 787#endif\n+_cs_objname\n+Definition cspublic.h:685\n+_cs_objdata\n+Definition cspublic.h:699\n _cs_datafmt\n Definition cstypes.h:114\n-_cs_money\n-Definition cstypes.h:129\n-_cs_money4\n-Definition cstypes.h:135\n-_cs_datetime\n-Definition cstypes.h:147\n-_cs_datetime4\n-Definition cstypes.h:153\n _cs_daterec\n Definition cstypes.h:159\n _cs_clientmsg\n Definition cstypes.h:177\n _cs_servermsg\n Definition cstypes.h:191\n-_cs_config\n-Definition ctlib.h:45\n _cs_context\n Definition ctlib.h:75\n _cs_connection\n Definition ctlib.h:117\n _cs_command\n Definition ctlib.h:212\n+_cs_blkdesc\n+Definition ctlib.h:239\n _cs_locale\n Definition ctlib.h:248\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00476_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00476_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/tds_sysdep_public.h Source File\n+FreeTDS API: include/bkpublic.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n \n
    \n-
    tds_sysdep_public.h
    \n+
    bkpublic.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-2011 Brian Bruns
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,117 +96,67 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _tds_sysdep_public_h_
    \n-
    21#define _tds_sysdep_public_h_
    \n+
    20#ifndef _bkpublic_h_
    \n+
    21#define _bkpublic_h_
    \n
    22
    \n-
    23/*
    \n-
    24 * This file is publicly installed.
    \n-
    25 * MUST not include config.h
    \n-
    26 */
    \n-
    27
    \n-
    28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L) || \\
    \n-
    29 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
    \n-
    30# include <stdint.h>
    \n-
    31#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)
    \n-
    32# include <inttypes.h>
    \n-
    33#else
    \n-
    34typedef signed char int8_t; /* 8-bit int */
    \n-
    35typedef unsigned char uint8_t; /* 8-bit int */
    \n-
    36/*
    \n-
    37 * This is where platform-specific changes need to be made.
    \n-
    38 */
    \n-
    39# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
    \n-
    40# include <winsock2.h>
    \n-
    41# include <ws2tcpip.h>
    \n-
    42# include <windows.h>
    \n-
    43 typedef signed short int16_t; /* 16-bit int */
    \n-
    44 typedef unsigned short uint16_t; /* 16-bit int */
    \n-
    45 typedef signed int int32_t; /* 32-bit int */
    \n-
    46 typedef unsigned int uint32_t; /* 32-bit int */
    \n-
    47 typedef signed __int64 int64_t; /* 64-bit int */
    \n-
    48 typedef unsigned __int64 uint64_t; /* 64-bit int */
    \n-
    49# if !defined(WIN64) && !defined(_WIN64)
    \n-
    50 typedef signed int intptr_t; /* 32-bit int */
    \n-
    51 typedef unsigned int uintptr_t; /* 32-bit int */
    \n-
    52# else
    \n-
    53 typedef signed __int64 intptr_t; /* 64-bit int */
    \n-
    54 typedef unsigned __int64 uintptr_t; /* 64-bit int */
    \n-
    55# endif
    \n-
    56# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */
    \n-
    57 typedef signed short int16_t; /* 16-bit int */
    \n-
    58 typedef unsigned short uint16_t; /* 16-bit int */
    \n-
    59 typedef signed int int32_t; /* 32-bit int */
    \n-
    60 typedef unsigned int uint32_t; /* 32-bit int */
    \n-
    61 typedef signed long long int64_t; /* 64-bit int */
    \n-
    62 typedef unsigned long long uint64_t; /* 64-bit int */
    \n-
    63 typedef signed int intptr_t;
    \n-
    64 typedef unsigned int uintptr_t;
    \n-
    65# endif
    \n-
    66#endif
    \n-
    67
    \n-
    68#include <float.h>
    \n-
    69
    \n-
    70/* try to understand float sizes using float.h constants */
    \n-
    71#if FLT_RADIX == 2
    \n-
    72# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128
    \n-
    73# define tds_sysdep_real32_type float /* 32-bit real */
    \n-
    74# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128
    \n-
    75# define tds_sysdep_real32_type double /* 32-bit real */
    \n-
    76# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128
    \n-
    77# define tds_sysdep_real32_type long double /* 32-bit real */
    \n-
    78# endif
    \n-
    79# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024
    \n-
    80# define tds_sysdep_real64_type float /* 64-bit real */
    \n-
    81# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024
    \n-
    82# define tds_sysdep_real64_type double /* 64-bit real */
    \n-
    83# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
    \n-
    84# define tds_sysdep_real64_type long double /* 64-bit real */
    \n-
    85# endif
    \n-
    86# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)
    \n-
    87# error Some float type was not found!
    \n-
    88# endif
    \n-
    89#else
    \n-
    90# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38
    \n-
    91# define tds_sysdep_real32_type float /* 32-bit real */
    \n-
    92# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38
    \n-
    93# define tds_sysdep_real32_type double /* 32-bit real */
    \n-
    94# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38
    \n-
    95# define tds_sysdep_real32_type long double /* 32-bit real */
    \n-
    96# endif
    \n-
    97# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308
    \n-
    98# define tds_sysdep_real64_type float /* 64-bit real */
    \n-
    99# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308
    \n-
    100# define tds_sysdep_real64_type double /* 64-bit real */
    \n-
    101# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308
    \n-
    102# define tds_sysdep_real64_type long double /* 64-bit real */
    \n-
    103# endif
    \n-
    104#endif
    \n-
    105
    \n-
    106/* fall back to configure.ac types */
    \n-
    107#ifndef tds_sysdep_real32_type
    \n-
    108#define tds_sysdep_real32_type float /* 32-bit real */
    \n-
    109#endif /* !tds_sysdep_real32_type */
    \n-
    110
    \n-
    111#ifndef tds_sysdep_real64_type
    \n-
    112#define tds_sysdep_real64_type double /* 64-bit real */
    \n-
    113#endif /* !tds_sysdep_real64_type */
    \n-
    114
    \n-
    115#if !defined(MSDBLIB) && !defined(SYBDBLIB)
    \n-
    116#define SYBDBLIB 1
    \n-
    117#endif
    \n-
    118#if defined(MSDBLIB) && defined(SYBDBLIB)
    \n-
    119#error MSDBLIB and SYBDBLIB cannot both be defined
    \n-
    120#endif
    \n-
    121
    \n-
    122#endif /* _tds_sysdep_public_h_ */
    \n+
    23static const char rcsid_bkpublic_h[] = "$Id: bkpublic.h,v 1.5 2004-10-28 12:42:11 freddy77 Exp $";
    \n+
    24static const void *const no_unused_bkpublic_h_warn[] = { rcsid_bkpublic_h, no_unused_bkpublic_h_warn };
    \n+
    25
    \n+
    26/* seperate this stuff out later */
    \n+
    27#include <cspublic.h>
    \n+
    28
    \n+
    29#ifdef __cplusplus
    \n+
    30extern "C"
    \n+
    31{
    \n+
    32#if 0
    \n+
    33}
    \n+
    34#endif
    \n+
    35#endif
    \n+
    36
    \n+
    37/* buld properties start with 1 i guess */
    \n+
    38#define BLK_IDENTITY 1
    \n+
    39
    \n+
    40CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC ** blk_pointer);
    \n+
    41CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * datalen,
    \n+
    42 CS_SMALLINT * indicator);
    \n+
    43CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT colnum, CS_VOID * valuep,
    \n+
    44 CS_INT valuelen, CS_INT * outlenp);
    \n+
    45CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    46CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt);
    \n+
    47CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);
    \n+
    48CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);
    \n+
    49CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp);
    \n+
    50CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT bufsize, CS_INT * outlenp);
    \n+
    51CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * tablename, CS_INT tnamelen);
    \n+
    52CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    53CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);
    \n+
    54CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);
    \n+
    55CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);
    \n+
    56CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);
    \n+
    57CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);
    \n+
    58CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * buffer, CS_INT buflen);
    \n+
    59CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);
    \n+
    60CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT buflen, CS_INT * outlen);
    \n+
    61
    \n+
    62#ifdef __cplusplus
    \n+
    63#if 0
    \n+
    64{
    \n+
    65#endif
    \n+
    66}
    \n+
    67#endif
    \n+
    68
    \n+
    69#endif
    \n+
    Definition cstypes.h:114
    \n+
    Definition ctlib.h:117
    \n+
    Definition ctlib.h:239
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-tds_sysdep_public.h\n+bkpublic.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-2011 Brian Bruns\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,114 +26,79 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _tds_sysdep_public_h_\n- 21#define _tds_sysdep_public_h_\n+ 20#ifndef _bkpublic_h_\n+ 21#define _bkpublic_h_\n 22\n- 23/*\n- 24 * This file is publicly installed.\n- 25 * MUST not include config.h\n- 26 */\n- 27\n- 28#if (!defined(_MSC_VER) && defined(__cplusplus) && __cplusplus >= 201103L)\n-|| \\\n- 29 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)\n- 30# include \n- 31#elif (defined(__sun) && defined(__SVR4)) || defined(__hpux)\n- 32# include \n- 33#else\n- 34typedef signed char int8_t; /* 8-bit int */\n- 35typedef unsigned char uint8_t; /* 8-bit int */\n- 36/*\n- 37 * This is where platform-specific changes need to be made.\n- 38 */\n- 39# if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)\n- 40# include \n- 41# include \n- 42# include \n- 43 typedef signed short int16_t; /* 16-bit int */\n- 44 typedef unsigned short uint16_t; /* 16-bit int */\n- 45 typedef signed int int32_t; /* 32-bit int */\n- 46 typedef unsigned int uint32_t; /* 32-bit int */\n- 47 typedef signed __int64 int64_t; /* 64-bit int */\n- 48 typedef unsigned __int64 uint64_t; /* 64-bit int */\n- 49# if !defined(WIN64) && !defined(_WIN64)\n- 50 typedef signed int intptr_t; /* 32-bit int */\n- 51 typedef unsigned int uintptr_t; /* 32-bit int */\n- 52# else\n- 53 typedef signed __int64 intptr_t; /* 64-bit int */\n- 54 typedef unsigned __int64 uintptr_t; /* 64-bit int */\n- 55# endif\n- 56# else /* defined(WIN32) || defined(_WIN32) || defined(__WIN32__) */\n- 57 typedef signed short int16_t; /* 16-bit int */\n- 58 typedef unsigned short uint16_t; /* 16-bit int */\n- 59 typedef signed int int32_t; /* 32-bit int */\n- 60 typedef unsigned int uint32_t; /* 32-bit int */\n- 61 typedef signed long long int64_t; /* 64-bit int */\n- 62 typedef unsigned long long uint64_t; /* 64-bit int */\n- 63 typedef signed int intptr_t;\n- 64 typedef unsigned int uintptr_t;\n- 65# endif\n- 66#endif\n- 67\n- 68#include \n- 69\n- 70/* try to understand float sizes using float.h constants */\n- 71#if FLT_RADIX == 2\n- 72# if FLT_MANT_DIG == 24 && FLT_MAX_EXP == 128\n- 73# define tds_sysdep_real32_type float /* 32-bit real */\n- 74# elif DBL_MANT_DIG == 24 && DBL_MAX_EXP == 128\n- 75# define tds_sysdep_real32_type double /* 32-bit real */\n- 76# elif LDBL_MANT_DIG == 24 && LDBL_MAX_EXP == 128\n- 77# define tds_sysdep_real32_type long double /* 32-bit real */\n- 78# endif\n- 79# if FLT_MANT_DIG == 53 && FLT_MAX_EXP == 1024\n- 80# define tds_sysdep_real64_type float /* 64-bit real */\n- 81# elif DBL_MANT_DIG == 53 && DBL_MAX_EXP == 1024\n- 82# define tds_sysdep_real64_type double /* 64-bit real */\n- 83# elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024\n- 84# define tds_sysdep_real64_type long double /* 64-bit real */\n- 85# endif\n- 86# if !defined(tds_sysdep_real32_type) || !defined(tds_sysdep_real64_type)\n- 87# error Some float type was not found!\n- 88# endif\n- 89#else\n- 90# if FLT_DIG == 6 && FLT_MAX_10_EXP == 38\n- 91# define tds_sysdep_real32_type float /* 32-bit real */\n- 92# elif DBL_DIG == 6 && DBL_MAX_10_EXP == 38\n- 93# define tds_sysdep_real32_type double /* 32-bit real */\n- 94# elif LDBL_DIG == 6 && LDBL_MAX_10_EXP == 38\n- 95# define tds_sysdep_real32_type long double /* 32-bit real */\n- 96# endif\n- 97# if FLT_DIG == 15 && FLT_MAX_10_EXP == 308\n- 98# define tds_sysdep_real64_type float /* 64-bit real */\n- 99# elif DBL_DIG == 15 && DBL_MAX_10_EXP == 308\n- 100# define tds_sysdep_real64_type double /* 64-bit real */\n- 101# elif LDBL_DIG == 15 && LDBL_MAX_10_EXP == 308\n- 102# define tds_sysdep_real64_type long double /* 64-bit real */\n- 103# endif\n- 104#endif\n- 105\n- 106/* fall back to configure.ac types */\n- 107#ifndef tds_sysdep_real32_type\n- 108#define tds_sysdep_real32_type float /* 32-bit real */\n- 109#endif /* !tds_sysdep_real32_type */\n- 110\n- 111#ifndef tds_sysdep_real64_type\n- 112#define tds_sysdep_real64_type double /* 64-bit real */\n- 113#endif /* !tds_sysdep_real64_type */\n- 114\n- 115#if !defined(MSDBLIB) && !defined(SYBDBLIB)\n- 116#define SYBDBLIB 1\n- 117#endif\n- 118#if defined(MSDBLIB) && defined(SYBDBLIB)\n- 119#error MSDBLIB and SYBDBLIB cannot both be defined\n- 120#endif\n- 121\n- 122#endif /* _tds_sysdep_public_h_ */\n+ 23static const char rcsid_bkpublic_h[] = \"$Id: bkpublic.h,v 1.5 2004-10-28 12:\n+42:11 freddy77 Exp $\";\n+ 24static const void *const no_unused_bkpublic_h_warn[] = { rcsid_bkpublic_h,\n+no_unused_bkpublic_h_warn };\n+ 25\n+ 26/* seperate this stuff out later */\n+ 27#include \n+ 28\n+ 29#ifdef __cplusplus\n+ 30extern \"C\"\n+ 31{\n+ 32#if 0\n+ 33}\n+ 34#endif\n+ 35#endif\n+ 36\n+ 37/* buld properties start with 1 i guess */\n+ 38#define BLK_IDENTITY 1\n+ 39\n+ 40CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC\n+** blk_pointer);\n+ 41CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT *\n+datafmt, CS_VOID * buffer, CS_INT * datalen,\n+ 42 CS_SMALLINT * indicator);\n+ 43CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n+* rowp, CS_INT colnum, CS_VOID * valuep,\n+ 44 CS_INT valuelen, CS_INT * outlenp);\n+ 45CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID *\n+buffer, CS_INT buflen, CS_INT * outlen);\n+ 46CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT *\n+datafmt);\n+ 47CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);\n+ 48CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);\n+ 49CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n+* rowp);\n+ 50CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n+* rowp, CS_INT bufsize, CS_INT * outlenp);\n+ 51CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR *\n+tablename, CS_INT tnamelen);\n+ 52CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property,\n+CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n+ 53CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);\n+ 54CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);\n+ 55CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);\n+ 56CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);\n+ 57CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);\n+ 58CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE *\n+buffer, CS_INT buflen);\n+ 59CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);\n+ 60CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT\n+buflen, CS_INT * outlen);\n+ 61\n+ 62#ifdef __cplusplus\n+ 63#if 0\n+ 64{\n+ 65#endif\n+ 66}\n+ 67#endif\n+ 68\n+ 69#endif\n+_cs_datafmt\n+Definition cstypes.h:114\n+_cs_connection\n+Definition ctlib.h:117\n+_cs_blkdesc\n+Definition ctlib.h:239\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00479_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00479_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/sybdb.h Source File\n+FreeTDS API: include/sqldb.h Source File\n \n \n \n \n \n \n \n@@ -74,1544 +74,198 @@\n \n
    \n \n
    \n \n
    \n-
    sybdb.h
    \n+
    sqldb.h
    \n
    \n
    \n-Go to the documentation of this file.
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n-
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n-
    4 *
    \n-
    5 * This library is free software; you can redistribute it and/or
    \n-
    6 * modify it under the terms of the GNU Library General Public
    \n-
    7 * License as published by the Free Software Foundation; either
    \n-
    8 * version 2 of the License, or (at your option) any later version.
    \n-
    9 *
    \n-
    10 * This library is distributed in the hope that it will be useful,
    \n-
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    13 * Library General Public License for more details.
    \n-
    14 *
    \n-
    15 * You should have received a copy of the GNU Library General Public
    \n-
    16 * License along with this library; if not, write to the
    \n-
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    18 * Boston, MA 02111-1307, USA.
    \n-
    19 */
    \n-
    20
    \n-
    28#ifndef _sybdb_h_
    \n-
    29#define _sybdb_h_
    \n-
    30
    \n-
    31#include "tds_sysdep_public.h"
    \n-
    32
    \n-
    33#undef TDS_STATIC_CAST
    \n-
    34#ifdef __cplusplus
    \n-
    35#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n-
    36extern "C"
    \n-
    37{
    \n-
    38#if 0
    \n-
    39}
    \n-
    40#endif
    \n-
    41#else
    \n-
    42#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n-
    43#endif
    \n-
    44
    \n-
    45#ifdef FALSE
    \n-
    46#undef FALSE
    \n-
    47#endif
    \n-
    48#ifdef TRUE
    \n-
    49#undef TRUE
    \n-
    50#endif
    \n-
    51#define FALSE 0
    \n-
    52#define TRUE 1
    \n-
    53
    \n-
    54#define DBSAVE 1
    \n-
    55#define DBNOSAVE 0
    \n-
    56#define DBNOERR -1
    \n-
    57
    \n-
    58#define INT_EXIT 0
    \n-
    59#define INT_CONTINUE 1
    \n-
    60#define INT_CANCEL 2
    \n-
    61#define INT_TIMEOUT 3
    \n-
    62
    \n-
    63#define DBMAXNUMLEN 33
    \n-
    64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */
    \n-
    65#define DBMAXNAME 128
    \n-
    66
    \n-
    70#define DBVERSION_UNKNOWN 0
    \n-
    71#define DBVERSION_46 1
    \n-
    72#define DBVERSION_100 2
    \n-
    73#define DBVERSION_42 3
    \n-
    74#define DBVERSION_70 4
    \n-
    75#define DBVERSION_71 5
    \n-
    76#define DBVERSION_72 6
    \n-
    77#define DBVERSION_73 7
    \n-
    78#define DBVERSION_74 8
    \n-
    79
    \n-
    80/* these two are defined by Microsoft for dbsetlversion() */
    \n-
    81#define DBVER42 DBVERSION_42
    \n-
    82#define DBVER60 DBVERSION_70 /* our best approximation */
    \n-
    83
    \n-
    88#define DBTDS_UNKNOWN 0
    \n-
    89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */
    \n-
    90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */
    \n-
    91#define DBTDS_4_0 3 /* 4.0 SQL Server */
    \n-
    92#define DBTDS_4_2 4 /* 4.2 SQL Server */
    \n-
    93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */
    \n-
    94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */
    \n-
    95#define DBTDS_5_0 7 /* 5.0 SQL Server */
    \n-
    96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */
    \n-
    97#define DBTDS_8_0 9 /* Microsoft SQL Server 2000 */
    \n-
    98#define DBTDS_9_0 10 /* Microsoft SQL Server 2005 */
    \n-
    99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */
    \n-
    100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */
    \n-
    101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */
    \n-
    102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */
    \n-
    103
    \n-
    104#define DBTXPLEN 16
    \n-
    105
    \n-
    106#define BCPMAXERRS 1
    \n-
    107#define BCPFIRST 2
    \n-
    108#define BCPLAST 3
    \n-
    109#define BCPBATCH 4
    \n-
    110#define BCPKEEPIDENTITY 8
    \n-
    111
    \n-
    112#define BCPLABELED 5
    \n-
    113#define BCPHINTS 6
    \n-
    114
    \n-
    115#define DBCMDNONE 0
    \n-
    116#define DBCMDPEND 1
    \n-
    117#define DBCMDSENT 2
    \n-
    118
    \n-
    119typedef int RETCODE;
    \n-
    120
    \n-
    121typedef void DBCURSOR;
    \n-
    122typedef void DBXLATE;
    \n-
    123typedef void DBSORTORDER;
    \n-
    124typedef void DBLOGINFO;
    \n-
    125typedef void *DBVOIDPTR;
    \n-
    126typedef short SHORT;
    \n-
    127typedef unsigned short USHORT;
    \n-
    128typedef int (*INTFUNCPTR) (void *, ...);
    \n-
    129typedef int (*DBWAITFUNC) (void);
    \n-
    130typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);
    \n-
    131typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);
    \n-
    132typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);
    \n-
    133typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);
    \n-
    134
    \n-
    135#ifndef __INCvxWorksh
    \n-
    136/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you
    \n-
    137** redefine them. */
    \n-
    138/* __INCvxWorksh will get #defined by std. include files included from tds.h
    \n-
    139*/
    \n-
    140#ifdef STATUS
    \n-
    141/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h
    \n-
    142 when _REENTRANT is defined.
    \n-
    143*/
    \n-
    144#undef STATUS
    \n-
    145#endif
    \n-
    146typedef int STATUS;
    \n-
    147#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)
    \n-
    148typedef int BOOL;
    \n-
    149#endif
    \n-
    150#endif
    \n-
    151
    \n-
    152#ifndef _tds_h_
    \n-
    153/* copied from tds.h */
    \n-
    154/* TODO find a best way... */
    \n-
    155enum
    \n-
    156{
    \n-
    157 SYBCHAR = 47, /* 0x2F */
    \n-
    158#define SYBCHAR SYBCHAR
    \n-
    159 SYBVARCHAR = 39, /* 0x27 */
    \n-
    160#define SYBVARCHAR SYBVARCHAR
    \n-
    161 SYBINTN = 38, /* 0x26 */
    \n-
    162#define SYBINTN SYBINTN
    \n-
    163 SYBINT1 = 48, /* 0x30 */
    \n-
    164#define SYBINT1 SYBINT1
    \n-
    165 SYBINT2 = 52, /* 0x34 */
    \n-
    166#define SYBINT2 SYBINT2
    \n-
    167 SYBINT4 = 56, /* 0x38 */
    \n-
    168#define SYBINT4 SYBINT4
    \n-
    169 SYBINT8 = 127, /* 0x7F */
    \n-
    170#define SYBINT8 SYBINT8
    \n-
    171 SYBFLT8 = 62, /* 0x3E */
    \n-
    172#define SYBFLT8 SYBFLT8
    \n-
    173 SYBDATETIME = 61, /* 0x3D */
    \n-
    174#define SYBDATETIME SYBDATETIME
    \n-
    175 SYBBIT = 50, /* 0x32 */
    \n-
    176#define SYBBIT SYBBIT
    \n-
    177 SYBBITN = 104, /* 0x68 */
    \n-
    178#define SYBBITN SYBBITN
    \n-
    179 SYBTEXT = 35, /* 0x23 */
    \n-
    180#define SYBTEXT SYBTEXT
    \n-
    181 SYBNTEXT = 99, /* 0x63 */
    \n-
    182#define SYBNTEXT SYBNTEXT
    \n-
    183 SYBIMAGE = 34, /* 0x22 */
    \n-
    184#define SYBIMAGE SYBIMAGE
    \n-
    185 SYBMONEY4 = 122, /* 0x7A */
    \n-
    186#define SYBMONEY4 SYBMONEY4
    \n-
    187 SYBMONEY = 60, /* 0x3C */
    \n-
    188#define SYBMONEY SYBMONEY
    \n-
    189 SYBDATETIME4 = 58, /* 0x3A */
    \n-
    190#define SYBDATETIME4 SYBDATETIME4
    \n-
    191 SYBREAL = 59, /* 0x3B */
    \n-
    192#define SYBREAL SYBREAL
    \n-
    193 SYBBINARY = 45, /* 0x2D */
    \n-
    194#define SYBBINARY SYBBINARY
    \n-
    195 SYBVOID = 31, /* 0x1F */
    \n-
    196#define SYBVOID SYBVOID
    \n-
    197 SYBVARBINARY = 37, /* 0x25 */
    \n-
    198#define SYBVARBINARY SYBVARBINARY
    \n-
    199 SYBNUMERIC = 108, /* 0x6C */
    \n-
    200#define SYBNUMERIC SYBNUMERIC
    \n-
    201 SYBDECIMAL = 106, /* 0x6A */
    \n-
    202#define SYBDECIMAL SYBDECIMAL
    \n-
    203 SYBFLTN = 109, /* 0x6D */
    \n-
    204#define SYBFLTN SYBFLTN
    \n-
    205 SYBMONEYN = 110, /* 0x6E */
    \n-
    206#define SYBMONEYN SYBMONEYN
    \n-
    207 SYBDATETIMN = 111, /* 0x6F */
    \n-
    208#define SYBDATETIMN SYBDATETIMN
    \n-
    209 SYBNVARCHAR = 103, /* 0x67 */
    \n-
    210#define SYBNVARCHAR SYBNVARCHAR
    \n-
    211 SYBDATE = 49, /* 0x31 */
    \n-
    212#define SYBDATE SYBDATE
    \n-
    213 SYBTIME = 51, /* 0x33 */
    \n-
    214#define SYBTIME SYBTIME
    \n-
    215 SYBBIGDATETIME = 187, /* 0xBB */
    \n-
    216#define SYBBIGDATETIME SYBBIGDATETIME
    \n-
    217 SYBBIGTIME = 188, /* 0xBC */
    \n-
    218#define SYBBIGTIME SYBBIGTIME
    \n-
    219 SYBMSDATE = 40, /* 0x28 */
    \n-
    220#define SYBMSDATE SYBMSDATE
    \n-
    221 SYBMSTIME = 41, /* 0x29 */
    \n-
    222#define SYBMSTIME SYBMSTIME
    \n-
    223 SYBMSDATETIME2 = 42, /* 0x2A */
    \n-
    224#define SYBMSDATETIME2 SYBMSDATETIME2
    \n-
    225 SYBMSDATETIMEOFFSET = 43, /* 0x2B */
    \n-
    226#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET
    \n-
    227};
    \n-
    228
    \n-
    229#define SYBAOPCNT 0x4b
    \n-
    230#define SYBAOPCNTU 0x4c
    \n-
    231#define SYBAOPSUM 0x4d
    \n-
    232#define SYBAOPSUMU 0x4e
    \n-
    233#define SYBAOPAVG 0x4f
    \n-
    234#define SYBAOPAVGU 0x50
    \n-
    235#define SYBAOPMIN 0x51
    \n-
    236#define SYBAOPMAX 0x52
    \n-
    237
    \n-
    238/* mssql2k compute operator */
    \n-
    239#define SYBAOPCNT_BIG 0x09
    \n-
    240#define SYBAOPSTDEV 0x30
    \n-
    241#define SYBAOPSTDEVP 0x31
    \n-
    242#define SYBAOPVAR 0x32
    \n-
    243#define SYBAOPVARP 0x33
    \n-
    244#define SYBAOPCHECKSUM_AGG 0x72
    \n-
    245
    \n-
    246#endif
    \n-
    247
    \n-
    248typedef unsigned char DBBOOL;
    \n-
    249typedef char DBCHAR;
    \n-
    250typedef unsigned char DBBIT;
    \n-
    251typedef unsigned char DBTINYINT;
    \n-
    252typedef int16_t DBSMALLINT;
    \n-
    253typedef int32_t DBINT;
    \n-
    254typedef int64_t DBBIGINT;
    \n-
    255typedef unsigned char DBBINARY;
    \n-
    256typedef tds_sysdep_real32_type DBREAL;
    \n-
    257typedef tds_sysdep_real64_type DBFLT8;
    \n-
    258typedef uint16_t DBUSMALLINT;
    \n-
    259typedef uint32_t DBUINT;
    \n-
    260typedef uint64_t DBUBIGINT;
    \n-
    261
    \n-
    \n-
    262typedef struct
    \n-
    263{
    \n-
    264 DBSMALLINT len;
    \n-
    265 char str[256];
    \n-
    266} DBVARYCHAR;
    \n-
    \n-
    267
    \n-
    \n-
    268typedef struct
    \n-
    269{
    \n-
    270 DBSMALLINT len;
    \n-
    271 unsigned char array[256];
    \n-
    272} DBVARYBIN;
    \n-
    \n-
    273
    \n-
    \n-
    274typedef struct
    \n-
    275{
    \n-
    276 unsigned char precision;
    \n-
    277 unsigned char scale;
    \n-
    278 unsigned char array[33];
    \n-
    279} DBNUMERIC;
    \n-
    \n-
    280
    \n-
    281typedef DBNUMERIC DBDECIMAL;
    \n-
    282
    \n-
    \n-
    283typedef struct
    \n-
    284{
    \n-
    285 DBINT mnyhigh;
    \n-
    286 DBUINT mnylow;
    \n-
    287} DBMONEY;
    \n-
    \n-
    288
    \n-
    \n-
    289typedef struct
    \n-
    290{
    \n-
    291 DBINT mny4;
    \n-
    292} DBMONEY4;
    \n-
    \n-
    293
    \n-
    \n-
    294typedef struct
    \n-
    295{
    \n-
    296 DBINT dtdays;
    \n-
    297 DBINT dttime;
    \n-
    298} DBDATETIME;
    \n-
    \n-
    299
    \n-
    \n-
    300typedef struct
    \n-
    301{
    \n-
    302 DBUSMALLINT days; /* days since Jan-1-1900 */
    \n-
    303 DBUSMALLINT minutes; /* minutes since midnight */
    \n-\n-
    \n-
    305
    \n-
    \n-
    306typedef struct
    \n-
    307{
    \n-
    308 DBUBIGINT time;
    \n-
    309 DBINT date;
    \n-
    310 DBSMALLINT offset;
    \n-
    311 DBUSMALLINT time_prec:3;
    \n-
    312/* fix a problem with some public headers defining _res */
    \n-
    313#undef _res
    \n-
    314 DBUSMALLINT _res:10;
    \n-
    315 DBUSMALLINT has_time:1;
    \n-
    316 DBUSMALLINT has_date:1;
    \n-
    317 DBUSMALLINT has_offset:1;
    \n-\n-
    \n-
    319
    \n-
    320#ifdef MSDBLIB
    \n-
    321# define SQLCHAR SYBCHAR
    \n-
    322 typedef struct
    \n-
    323 {
    \n-
    324 DBUSMALLINT numdays;
    \n-
    325 DBUSMALLINT nummins;
    \n-
    326 } DBDATETIM4;
    \n-
    327#endif
    \n-
    328
    \n-
    329typedef struct tds_dblib_loginrec LOGINREC;
    \n-
    330
    \n-
    331#ifndef DOS32X
    \n-
    332typedef unsigned char BYTE;
    \n-
    333#endif
    \n-
    334
    \n-
    \n-
    335typedef struct dbtypeinfo
    \n-
    336{
    \n-
    337 DBINT precision;
    \n-
    338 DBINT scale;
    \n-
    339} DBTYPEINFO;
    \n-
    \n-
    340
    \n-
    \n-\n-
    342{
    \n-
    343 BYTE *strtext;
    \n-
    344 DBINT strtotlen;
    \n-
    345 struct dbstring *strnext;
    \n-
    346};
    \n-
    \n-
    347typedef struct dbstring DBSTRING;
    \n-
    348
    \n-
    349/* Used by dbcolinfo */
    \n-
    350enum
    \n-
    351{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */
    \n-
    352typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;
    \n-
    353
    \n-
    \n-
    354typedef struct
    \n-
    355{
    \n-
    356 DBINT SizeOfStruct;
    \n-
    357 DBCHAR Name[MAXCOLNAMELEN+2];
    \n-
    358 DBCHAR ActualName[MAXCOLNAMELEN+2];
    \n-
    359 DBCHAR TableName[MAXCOLNAMELEN+2];
    \n-
    360 SHORT Type;
    \n-
    361 DBINT UserType;
    \n-
    362 DBINT MaxLength;
    \n-
    363 BYTE Precision;
    \n-
    364 BYTE Scale;
    \n-
    365 BOOL VarLength;
    \n-
    366 BYTE Null;
    \n-
    367 BYTE CaseSensitive;
    \n-
    368 BYTE Updatable;
    \n-
    369 BOOL Identity;
    \n-
    370
    \n-
    371} DBCOL;
    \n-
    \n-
    372
    \n-
    \n-
    373typedef struct
    \n-
    374{
    \n-
    375 DBINT SizeOfStruct;
    \n-
    376 DBCHAR Name[MAXCOLNAMELEN+2];
    \n-
    377 DBCHAR ActualName[MAXCOLNAMELEN+2];
    \n-
    378 DBCHAR TableName[MAXCOLNAMELEN+2];
    \n-
    379 SHORT Type;
    \n-
    380 DBINT UserType;
    \n-
    381 DBINT MaxLength;
    \n-
    382 BYTE Precision;
    \n-
    383 BYTE Scale;
    \n-
    384 BOOL VarLength;
    \n-
    385 BYTE Null;
    \n-
    386 BYTE CaseSensitive;
    \n-
    387 BYTE Updatable;
    \n-
    388 BOOL Identity;
    \n-
    389 SHORT ServerType;
    \n-
    390 DBINT ServerMaxLength;
    \n-
    391 DBCHAR ServerTypeDeclaration[256];
    \n-
    392} DBCOL2;
    \n-
    \n-
    393/* end dbcolinfo stuff */
    \n-
    394
    \n-
    395
    \n-
    396
    \n-
    397/* a large list of options, DBTEXTSIZE is needed by sybtcl */
    \n-
    398#define DBPARSEONLY 0
    \n-
    399#define DBESTIMATE 1
    \n-
    400#define DBSHOWPLAN 2
    \n-
    401#define DBNOEXEC 3
    \n-
    402#define DBARITHIGNORE 4
    \n-
    403#define DBNOCOUNT 5
    \n-
    404#define DBARITHABORT 6
    \n-
    405#define DBTEXTLIMIT 7
    \n-
    406#define DBBROWSE 8
    \n-
    407#define DBOFFSET 9
    \n-
    408#define DBSTAT 10
    \n-
    409#define DBERRLVL 11
    \n-
    410#define DBCONFIRM 12
    \n-
    411#define DBSTORPROCID 13
    \n-
    412#define DBBUFFER 14
    \n-
    413#define DBNOAUTOFREE 15
    \n-
    414#define DBROWCOUNT 16
    \n-
    415#define DBTEXTSIZE 17
    \n-
    416#define DBNATLANG 18
    \n-
    417#define DBDATEFORMAT 19
    \n-
    418#define DBPRPAD 20
    \n-
    419#define DBPRCOLSEP 21
    \n-
    420#define DBPRLINELEN 22
    \n-
    421#define DBPRLINESEP 23
    \n-
    422#define DBLFCONVERT 24
    \n-
    423#define DBDATEFIRST 25
    \n-
    424#define DBCHAINXACTS 26
    \n-
    425#define DBFIPSFLAG 27
    \n-
    426#define DBISOLATION 28
    \n-
    427#define DBAUTH 29
    \n-
    428#define DBIDENTITY 30
    \n-
    429#define DBNOIDCOL 31
    \n-
    430#define DBDATESHORT 32
    \n-
    431#define DBCLIENTCURSORS 33
    \n-
    432#define DBSETTIME 34
    \n-
    433#define DBQUOTEDIDENT 35
    \n-
    434
    \n-
    435#define DBNUMOPTIONS 36
    \n-
    436
    \n-
    437#define DBPADOFF 0
    \n-
    438#define DBPADON 1
    \n-
    439
    \n-
    440#define OFF 0
    \n-
    441#define ON 1
    \n-
    442
    \n-
    443#define NOSUCHOPTION 2
    \n-
    444
    \n-
    445#define MAXOPTTEXT 32
    \n-
    446
    \n-
    447typedef struct tds_dblib_dbprocess DBPROCESS;
    \n-
    448
    \n-
    449/*
    \n-
    450 * Sybase & Microsoft use different names for the dbdaterec members.
    \n-
    451 * Keep these two structures physically identical in memory.
    \n-
    452 * dbdatecrack() casts one to the other for ease of implementation.
    \n-
    453 *
    \n-
    454 * Giving credit where credit is due, we can acknowledge that
    \n-
    455 * Microsoft chose the better names here, hands down. ("datedmonth"?!)
    \n-
    456 */
    \n-
    \n-\n-
    458{
    \n-
    459 DBINT year; /* 1753 - 9999 */
    \n-
    460 DBINT quarter; /* 1 - 4 */
    \n-
    461 DBINT month; /* 1 - 12 */
    \n-
    462 DBINT day; /* 1 - 31 */
    \n-
    463 DBINT dayofyear; /* 1 - 366 */
    \n-
    464 DBINT week; /* 1 - 54 (for leap years) */
    \n-
    465 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
    \n-
    466 DBINT hour; /* 0 - 23 */
    \n-
    467 DBINT minute; /* 0 - 59 */
    \n-
    468 DBINT second; /* 0 - 59 */
    \n-
    469 DBINT millisecond; /* 0 - 999 */
    \n-
    470 DBINT tzone; /* -840 - 840 */
    \n-
    471};
    \n-
    \n-
    472
    \n-
    \n-\n-
    474{
    \n-
    475 DBINT dateyear; /* 1900 and counting */
    \n-
    476 DBINT quarter; /* 0 - 3 (Microsoft only) */
    \n-
    477 DBINT datemonth; /* 0 - 11 */
    \n-
    478 DBINT datedmonth; /* 1 - 31 */
    \n-
    479 DBINT datedyear; /* 1 - 366 */
    \n-
    480 DBINT week; /* 1 - 54 (Microsoft only) */
    \n-
    481 DBINT datedweek; /* 0 - 6 */
    \n-
    482 DBINT datehour; /* 0 - 23 */
    \n-
    483 DBINT dateminute; /* 0 - 59 */
    \n-
    484 DBINT datesecond; /* 0 - 59 */
    \n-
    485 DBINT datemsecond; /* 0 - 999 */
    \n-
    486 DBINT datetzone; /* -840 - 840 */
    \n-
    487};
    \n-
    \n-
    488
    \n-
    \n-\n-
    490{
    \n-
    491 DBINT year; /* 1753 - 9999 */
    \n-
    492 DBINT quarter; /* 1 - 4 */
    \n-
    493 DBINT month; /* 1 - 12 */
    \n-
    494 DBINT day; /* 1 - 31 */
    \n-
    495 DBINT dayofyear; /* 1 - 366 */
    \n-
    496 DBINT week; /* 1 - 54 (for leap years) */
    \n-
    497 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
    \n-
    498 DBINT hour; /* 0 - 23 */
    \n-
    499 DBINT minute; /* 0 - 59 */
    \n-
    500 DBINT second; /* 0 - 59 */
    \n-
    501 DBINT nanosecond; /* 0 - 999999999 */
    \n-
    502 DBINT tzone; /* 0 - 127 (Sybase only) */
    \n-
    503};
    \n-
    \n-
    504
    \n-
    \n-\n-
    506{
    \n-
    507 DBINT dateyear; /* 1900 and counting */
    \n-
    508 DBINT quarter; /* 0 - 3 (Microsoft only) */
    \n-
    509 DBINT datemonth; /* 0 - 11 */
    \n-
    510 DBINT datedmonth; /* 1 - 31 */
    \n-
    511 DBINT datedyear; /* 1 - 366 */
    \n-
    512 DBINT week; /* 1 - 54 (Microsoft only) */
    \n-
    513 DBINT datedweek; /* 0 - 6 */
    \n-
    514 DBINT datehour; /* 0 - 23 */
    \n-
    515 DBINT dateminute; /* 0 - 59 */
    \n-
    516 DBINT datesecond; /* 0 - 59 */
    \n-
    517 DBINT datensecond; /* 0 - 999999999 */
    \n-
    518 DBINT datetzone; /* 0 - 127 */
    \n-
    519};
    \n-
    \n-
    520
    \n-
    521
    \n-
    522#ifdef MSDBLIB
    \n-\n-\n-
    525#else
    \n-
    526typedef struct tds_sybase_dbdaterec DBDATEREC;
    \n-
    527typedef struct tds_sybase_dbdaterec2 DBDATEREC2;
    \n-
    528#endif
    \n-
    529
    \n-
    530typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    \n-
    531
    \n-
    532typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname,
    \n-
    533 char *proc, int line);
    \n-
    534
    \n-
    535/* dbpoll() result codes, sybtcl needs DBRESULT */
    \n-
    536#define DBRESULT 1
    \n-
    537#define DBNOTIFICATION 2
    \n-
    538#define DBTIMEOUT 3
    \n-
    539#define DBINTERRUPT 4
    \n-
    540
    \n-
    541/* more sybtcl needs: */
    \n-
    542#define DBTXTSLEN 8
    \n-
    543
    \n-
    544/* bind types */
    \n-
    545#define CHARBIND 0
    \n-
    546#define STRINGBIND 1
    \n-
    547#define NTBSTRINGBIND 2
    \n-
    548#define VARYCHARBIND 3
    \n-
    549#define VARYBINBIND 4
    \n-
    550#define TINYBIND 6
    \n-
    551#define SMALLBIND 7
    \n-
    552#define INTBIND 8
    \n-
    553#define FLT8BIND 9
    \n-
    554#define REALBIND 10
    \n-
    555#define DATETIMEBIND 11
    \n-
    556#define SMALLDATETIMEBIND 12
    \n-
    557#define MONEYBIND 13
    \n-
    558#define SMALLMONEYBIND 14
    \n-
    559#define BINARYBIND 15
    \n-
    560#define BITBIND 16
    \n-
    561#define NUMERICBIND 17
    \n-
    562#define DECIMALBIND 18
    \n-
    563#define SRCNUMERICBIND 19
    \n-
    564#define SRCDECIMALBIND 20
    \n-
    565#define DATEBIND 21
    \n-
    566#define TIMEBIND 22
    \n-
    567#define BIGDATETIMEBIND 23
    \n-
    568#define BIGTIMEBIND 24
    \n-
    569#define BIGINTBIND 30
    \n-
    570#define DATETIME2BIND 31
    \n-
    571#define MAXBINDTYPES 32 /* keep last */
    \n-
    572
    \n-
    573#define DBPRCOLSEP 21
    \n-
    574#define DBPRLINELEN 22
    \n-
    575#define DBRPCNORETURN 0
    \n-
    576#define DBRPCRETURN 1
    \n-
    577#define DBRPCDEFAULT 2
    \n-
    578
    \n-
    579#define REG_ROW -1
    \n-
    580#define MORE_ROWS -1
    \n-
    581#define NO_MORE_ROWS -2
    \n-
    582#define BUF_FULL -3
    \n-
    583#define NO_MORE_RESULTS 2
    \n-
    584#define SUCCEED 1
    \n-
    585#define FAIL 0
    \n-
    586
    \n-
    587#define DB_IN 1
    \n-
    588#define DB_OUT 2
    \n-
    589#define DB_QUERYOUT 3
    \n-
    590
    \n-
    591#define DBSINGLE 0
    \n-
    592#define DBDOUBLE 1
    \n-
    593#define DBBOTH 2
    \n-
    594
    \n-
    595/* remote procedure call (rpc) options */
    \n-
    596#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)
    \n-
    597#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)
    \n-
    598#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)
    \n-
    599
    \n-
    600#if defined(DBLIB_UNIMPLEMENTED)
    \n-
    601DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);
    \n-
    602
    \n-
    603DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);
    \n-
    604
    \n-
    605RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, BYTE * values);
    \n-
    606RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);
    \n-
    607void dbcursorclose(DBCURSOR * hc);
    \n-
    608RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT * coltype, DBINT * collen, DBINT * usertype);
    \n-
    609RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);
    \n-
    610RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);
    \n-
    611DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, SHORT concuropt, USHORT nrows, DBINT * pstatus);
    \n-
    612
    \n-
    613int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);
    \n-
    614RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);
    \n-
    615RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int value);
    \n-
    616int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * datetime);
    \n-
    617char *dateorder(DBPROCESS * dbprocess, char *language);
    \n-
    618DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * datetime);
    \n-
    619RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);
    \n-
    620char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);
    \n-
    621
    \n-
    622int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);
    \n-
    623
    \n-
    624char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);
    \n-
    625void dbfreequal(char *qualptr);
    \n-
    626
    \n-
    627DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);
    \n-
    628RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);
    \n-
    629
    \n-
    630RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);
    \n-
    631
    \n-
    632RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * quotient);
    \n-
    633RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * prod);
    \n-
    634RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * sum);
    \n-
    635RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * quotient);
    \n-
    636RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int *remainder);
    \n-
    637RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * negative);
    \n-
    638RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, DBBOOL * zero);
    \n-
    639RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * prod);
    \n-
    640RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, DBBOOL * zero);
    \n-
    641RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int addend);
    \n-
    642
    \n-
    643
    \n-
    644RETCODE dbnpcreate(DBPROCESS * dbprocess);
    \n-
    645RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, DBSMALLINT namelen);
    \n-
    646
    \n-
    647int DBNUMORDERS(DBPROCESS * dbprocess);
    \n-
    648
    \n-
    649RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_dbproc, int *return_reason);
    \n-
    650int dbordercol(DBPROCESS * dbprocess, int order);
    \n-
    651
    \n-
    652RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
    \n-
    653RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);
    \n-
    654RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, INTFUNCPTR handler);
    \n-
    655RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT namelen);
    \n-
    656RETCODE dbreglist(DBPROCESS * dbproc);
    \n-
    657RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
    \n-
    658RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT datalen, BYTE * data);
    \n-
    659RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, DBUSMALLINT options);
    \n-
    660RETCODE dbregwatchlist(DBPROCESS * dbprocess);
    \n-
    661
    \n-
    662void dbrpwclr(LOGINREC * login);
    \n-
    663RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int pwlen);
    \n-
    664
    \n-
    665DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * buf);
    \n-
    666RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, DBINT size, BYTE * buf);
    \n-
    667
    \n-
    668RETCODE dbsetdeflang(char *language);
    \n-
    669
    \n-
    670int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
    \n-
    671int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
    \n-
    672
    \n-
    673DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);
    \n-
    674int dbtabcount(DBPROCESS * dbprocess);
    \n-
    675char *dbtabname(DBPROCESS * dbprocess, int tabnum);
    \n-
    676char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);
    \n-
    677
    \n-
    678RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);
    \n-
    679RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);
    \n-
    680
    \n-
    681RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);
    \n-
    682RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);
    \n-
    683
    \n-
    684int dbtsnewlen(DBPROCESS * dbprocess);
    \n-
    685DBBINARY *dbtsnewval(DBPROCESS * dbprocess);
    \n-
    686RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int tabnum, char *tabname);
    \n-
    687
    \n-
    688RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * clt_todisp);
    \n-
    689int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int destlen, DBXLATE * xlt, int *srcbytes_used,
    \n-
    690 DBBOOL srcend, int status);
    \n-
    691
    \n-
    692RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);
    \n-
    693RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);
    \n-
    694
    \n-
    695void build_xact_string(char *xact_name, char *service_name, DBINT commid, char *result);
    \n-
    696RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);
    \n-
    697RETCODE abort_xact(DBPROCESS * connect, DBINT commid);
    \n-
    698void close_commit(DBPROCESS * connect);
    \n-
    699RETCODE commit_xact(DBPROCESS * connect, DBINT commid);
    \n-
    700DBPROCESS *open_commit(LOGINREC * login, char *servername);
    \n-
    701RETCODE scan_xact(DBPROCESS * connect, DBINT commid);
    \n-
    702DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_name, int site_count);
    \n-
    703DBINT stat_xact(DBPROCESS * connect, DBINT commid);
    \n-
    704
    \n-
    705#endif /* define unimplemented */
    \n-
    706
    \n-
    707BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);
    \n-
    708DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);
    \n-
    709RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr);
    \n-
    710RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr,
    \n-
    711 DBTYPEINFO * typeinfo);
    \n-
    712int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);
    \n-
    713DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);
    \n-
    714int dbaltop(DBPROCESS * dbproc, int computeid, int column);
    \n-
    715int dbalttype(DBPROCESS * dbproc, int computeid, int column);
    \n-
    716DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);
    \n-
    717RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT * indicator);
    \n-
    718RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, BYTE * varaddr);
    \n-
    719RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);
    \n-
    720int dbbufsize(DBPROCESS * dbprocess);
    \n-
    721BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);
    \n-
    722RETCODE dbcancel(DBPROCESS * dbproc);
    \n-
    723RETCODE dbcanquery(DBPROCESS * dbproc);
    \n-
    724char *dbchange(DBPROCESS * dbprocess);
    \n-
    725DBBOOL dbcharsetconv(DBPROCESS * dbprocess);
    \n-
    726void dbclose(DBPROCESS * dbproc);
    \n-
    727void dbclrbuf(DBPROCESS * dbproc, DBINT n);
    \n-
    728RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);
    \n-
    729RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);
    \n-
    730RETCODE dbcmdrow(DBPROCESS * dbproc);
    \n-
    731
    \n-
    732#define DBCMDROW(x) dbcmdrow((x))
    \n-
    733RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );
    \n-
    734RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol);
    \n-
    735DBINT dbcollen(DBPROCESS * dbproc, int column);
    \n-
    736char *dbcolname(DBPROCESS * dbproc, int column);
    \n-
    737const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);
    \n-
    738char *dbcolsource(DBPROCESS * dbproc, int colnum);
    \n-
    739int dbcoltype(DBPROCESS * dbproc, int column);
    \n-
    740DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);
    \n-
    741DBINT dbcolutype(DBPROCESS * dbprocess, int column);
    \n-
    742DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen);
    \n-
    743DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen,
    \n-
    744 DBTYPEINFO * typeinfo);
    \n-
    745BOOL dbiscount(DBPROCESS * dbproc);
    \n-
    746DBINT dbcount(DBPROCESS * dbproc);
    \n-
    747
    \n-
    748#define DBCOUNT(x) dbcount((x))
    \n-
    749int dbcurcmd(DBPROCESS * dbproc);
    \n-
    750
    \n-
    751#define DBCURCMD(x) dbcurcmd((x))
    \n-
    752DBINT dbcurrow(DBPROCESS * dbproc);
    \n-
    753
    \n-
    754#define DBCURROW(x) dbcurrow((x))
    \n-
    755BYTE *dbdata(DBPROCESS * dbproc, int column);
    \n-
    756int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);
    \n-
    757RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);
    \n-
    758RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const void *data);
    \n-
    759DBINT dbdatlen(DBPROCESS * dbproc, int column);
    \n-
    760DBBOOL dbdead(DBPROCESS * dbproc);
    \n-
    761
    \n-
    762#define DBDEAD(x) dbdead((x))
    \n-
    763EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);
    \n-
    764void dbexit(void);
    \n-
    765RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);
    \n-
    766DBINT dbfirstrow(DBPROCESS * dbproc);
    \n-
    767
    \n-
    768#define DBFIRSTROW(x) dbfirstrow((x))
    \n-
    769void dbfreebuf(DBPROCESS * dbproc);
    \n-
    770char *dbgetchar(DBPROCESS * dbprocess, int n);
    \n-
    771char *dbgetcharset(DBPROCESS * dbprocess);
    \n-
    772int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);
    \n-
    773int dbgetmaxprocs(void);
    \n-
    774char *dbgetnatlanf(DBPROCESS * dbprocess);
    \n-
    775int dbgetpacket(DBPROCESS * dbproc);
    \n-
    776RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);
    \n-
    777int dbgettime(void);
    \n-
    778#define DBGETTIME dbgettime
    \n-
    779BYTE *dbgetuserdata(DBPROCESS * dbproc);
    \n-
    780DBBOOL dbhasretstat(DBPROCESS * dbproc);
    \n-
    781RETCODE dbinit(void);
    \n-
    782int dbiordesc(DBPROCESS * dbproc);
    \n-
    783
    \n-
    784#define DBIORDESC(x) dbiordesc((x))
    \n-
    785int dbiowdesc(DBPROCESS * dbproc);
    \n-
    786
    \n-
    787#define DBIOWDESC(x) dbiowdesc((x))
    \n-
    788DBBOOL dbisavail(DBPROCESS * dbprocess);
    \n-
    789
    \n-
    790#define DBISAVAIL(x) dbisavail((x))
    \n-
    791DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);
    \n-
    792DBINT dblastrow(DBPROCESS * dbproc);
    \n-
    793
    \n-
    794#define DBLASTROW(x) dblastrow((x))
    \n-
    795LOGINREC *dblogin(void);
    \n-
    796void dbloginfree(LOGINREC * login);
    \n-
    797
    \n-
    798int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);
    \n-
    799int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);
    \n-
    800
    \n-
    801RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * sum);
    \n-
    802RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);
    \n-
    803RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);
    \n-
    804RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);
    \n-
    805RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);
    \n-
    806RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);
    \n-
    807RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
    \n-
    808RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * diff);
    \n-
    809RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * diff);
    \n-
    810
    \n-
    811RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);
    \n-
    812RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
    \n-
    813
    \n-
    814RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);
    \n-
    815RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);
    \n-
    816
    \n-
    817const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, DBBOOL shortform);
    \n-
    818RETCODE dbmorecmds(DBPROCESS * dbproc);
    \n-
    819
    \n-
    820#define DBMORECMDS(x) dbmorecmds((x))
    \n-
    821RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);
    \n-
    822MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);
    \n-
    823char *dbname(DBPROCESS * dbproc);
    \n-
    824STATUS dbnextrow(DBPROCESS * dbproc);
    \n-
    825RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);
    \n-
    826int dbnumalts(DBPROCESS * dbproc, int computeid);
    \n-
    827int dbnumcols(DBPROCESS * dbproc);
    \n-
    828int dbnumcompute(DBPROCESS * dbprocess);
    \n-
    829int dbnumrets(DBPROCESS * dbproc);
    \n-
    830DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);
    \n-
    831DBPROCESS *dbopen(LOGINREC * login, const char *server);
    \n-
    832
    \n-
    833/* pivot functions */
    \n-
    834struct col_t;
    \n-
    835void dbpivot_count (struct col_t *output, const struct col_t *input);
    \n-
    836void dbpivot_sum (struct col_t *output, const struct col_t *input);
    \n-
    837void dbpivot_min (struct col_t *output, const struct col_t *input);
    \n-
    838void dbpivot_max (struct col_t *output, const struct col_t *input);
    \n-
    839
    \n-
    840struct pivot_t;
    \n-
    841typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t *input);
    \n-
    842struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);
    \n-
    843STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);
    \n-
    844RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val);
    \n-
    845
    \n-
    846DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );
    \n-
    847
    \n-
    848#ifdef MSDBLIB
    \n-
    849#define dbopen(x,y) tdsdbopen((x),(y), 1)
    \n-
    850#else
    \n-
    851#define dbopen(x,y) tdsdbopen((x),(y), 0)
    \n-
    852#endif
    \n-
    853
    \n-
    854/* fix PHP problem */
    \n-
    855#ifdef PHP_SYBASE_DBOPEN
    \n-
    856#undef PHP_SYBASE_DBOPEN
    \n-
    857#define PHP_SYBASE_DBOPEN dbopen
    \n-
    858#endif
    \n-
    859
    \n-
    860void dbprhead(DBPROCESS * dbproc);
    \n-
    861DBINT dbprcollen(DBPROCESS * dbproc, int column);
    \n-
    862RETCODE dbprrow(DBPROCESS * dbproc);
    \n-
    863const char *dbprtype(int token);
    \n-
    864DBBOOL DRBUF(DBPROCESS * dbprocess);
    \n-
    865STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);
    \n-
    866void dbrecftos(const char filename[]);
    \n-
    867RETCODE dbresults(DBPROCESS * dbproc);
    \n-
    868RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);
    \n-
    869BYTE *dbretdata(DBPROCESS * dbproc, int retnum);
    \n-
    870int dbretlen(DBPROCESS * dbproc, int retnum);
    \n-
    871char *dbretname(DBPROCESS * dbproc, int retnum);
    \n-
    872DBINT dbretstatus(DBPROCESS * dbproc);
    \n-
    873int dbrettype(DBPROCESS * dbproc, int retnum);
    \n-
    874RETCODE dbrows(DBPROCESS * dbproc);
    \n-
    875
    \n-
    876#define DBROWS(x) dbrows((x))
    \n-
    877STATUS dbrowtype(DBPROCESS * dbprocess);
    \n-
    878
    \n-
    879#define DBROWTYPE(x) dbrowtype((x))
    \n-
    880RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT options);
    \n-
    881RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE * value);
    \n-
    882RETCODE dbrpcsend(DBPROCESS * dbproc);
    \n-
    883RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype);
    \n-
    884RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);
    \n-
    885char *dbservcharset(DBPROCESS * dbprocess);
    \n-
    886void dbsetavail(DBPROCESS * dbprocess);
    \n-
    887void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);
    \n-
    888RETCODE dbsetdefcharset(char *charset);
    \n-
    889void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);
    \n-
    890void dbsetifile(char *filename);
    \n-
    891void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr);
    \n-
    892RETCODE dbsetlogintime(int seconds);
    \n-
    893RETCODE dbsetmaxprocs(int maxprocs);
    \n-
    894RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * bindval);
    \n-
    895RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int int_param);
    \n-
    896STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);
    \n-
    897RETCODE dbsettime(int seconds);
    \n-
    898void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);
    \n-
    899RETCODE dbsetversion(DBINT version);
    \n-
    900
    \n-
    901int dbspid(DBPROCESS * dbproc);
    \n-
    902RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
    \n-
    903DBINT dbspr1rowlen(DBPROCESS * dbproc);
    \n-
    904RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
    \n-
    905RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR line_char);
    \n-
    906RETCODE dbsqlexec(DBPROCESS * dbproc);
    \n-
    907RETCODE dbsqlok(DBPROCESS * dbproc);
    \n-
    908RETCODE dbsqlsend(DBPROCESS * dbproc);
    \n-
    909int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, char *formats, ...);
    \n-
    910RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);
    \n-
    911int dbstrlen(DBPROCESS * dbproc);
    \n-
    912DBINT dbvarylen(DBPROCESS * dbproc, int column);
    \n-
    913
    \n-
    914#define SYBEVERDOWN 100 /* TDS version downgraded . */
    \n-
    915#define SYBEICONVIU 2400 /* Some character(s) could not be converted into client's character set. */
    \n-
    916#define SYBEICONVAVAIL 2401 /* Character set conversion is not available between client character set '%.*s' and server character set '%.*s'.*/
    \n-
    917#define SYBEICONVO 2402 /* Error converting characters into server's character set. Some character(s) could not be converted.*/
    \n-
    918#define SYBEICONVI 2403 /* Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').*/
    \n-
    919#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from client into server's character set.*/
    \n-
    920 /* cf. doc/dblib_errors.txt for more iconv error values. */
    \n-
    921 /* Reserve a few slots for other iconv-related issues. */
    \n-
    922#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */
    \n-
    923#define SYBEPORT 2500 /* Both port and instance specified */
    \n-
    924#define SYBESYNC 20001 /* Read attempted while out of synchronization with SQL Server. */
    \n-
    925#define SYBEFCON 20002 /* SQL Server connection failed. */
    \n-
    926#define SYBETIME 20003 /* SQL Server connection timed out. */
    \n-
    927#define SYBEREAD 20004 /* Read from SQL Server failed. */
    \n-
    928#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length corrupted. */
    \n-
    929#define SYBEWRIT 20006 /* Write to SQL Server failed. */
    \n-
    930#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */
    \n-
    931#define SYBESOCK 20008 /* Unable to open socket */
    \n-
    932#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is unavailable or does not exist. */
    \n-
    933#define SYBEMEM 20010 /* Unable to allocate sufficient memory */
    \n-
    934#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. */
    \n-
    935#define SYBEINTF 20012 /* Server name not found in interface file */
    \n-
    936#define SYBEUHST 20013 /* Unknown host machine name */
    \n-
    937#define SYBEPWD 20014 /* Incorrect password. */
    \n-
    938#define SYBEOPIN 20015 /* Could not open interface file. */
    \n-
    939#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */
    \n-
    940#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */
    \n-
    941#define SYBESMSG 20018 /* General SQL Server error: Check messages from the SQL Server. */
    \n-
    942#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation with results pending. */
    \n-
    943#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing out of sync. */
    \n-
    944#define SYBEITIM 20021 /* Illegal timeout value specified. */
    \n-
    945#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */
    \n-
    946#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. */
    \n-
    947#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent compute row. */
    \n-
    948#define SYBEIICL 20025 /* Illegal integer column length returned by SQL Server. Legal integer lengths are 1, 2, and 4 bytes. */
    \n-
    949#define SYBECNOR 20026 /* Column number out of range. */
    \n-
    950#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */
    \n-
    951#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */
    \n-
    952#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */
    \n-
    953#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following ALTNAME has wrong id. */
    \n-
    954#define SYBECDNS 20031 /* Datastream indicates that a compute column is derived from a non-existent select-list member. */
    \n-
    955#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */
    \n-
    956#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column and variable types. */
    \n-
    957#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */
    \n-
    958#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched column and variable types. */
    \n-
    959#define SYBENXID 20036 /* The Server did not grant us a distributed-transaction ID. */
    \n-
    960#define SYBERXID 20037 /* The Server did not recognize our distributed-transaction ID. */
    \n-
    961#define SYBEICN 20038 /* Invalid computeid or compute column number. */
    \n-
    962#define SYBENMOB 20039 /* No such member of 'order by' clause. */
    \n-
    963#define SYBEAPUT 20040 /* Attempt to print unknown token. */
    \n-
    964#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */
    \n-
    965#define SYBENTLL 20042 /* Name too long for loginrec field. */
    \n-
    966#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */
    \n-
    967#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. */
    \n-
    968#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */
    \n-
    969#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */
    \n-
    970#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */
    \n-
    971#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */
    \n-
    972#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */
    \n-
    973#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in source field. */
    \n-
    974#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */
    \n-
    975#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in overflow. */
    \n-
    976#define SYBERDCN 20053 /* Requested data-conversion does not exist. */
    \n-
    977#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */
    \n-
    978#define SYBEUNT 20055 /* Unknown network type found in interface file. */
    \n-
    979#define SYBECLOS 20056 /* Error in closing network connection. */
    \n-
    980#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */
    \n-
    981#define SYBEUSCT 20058 /* Unable to set communications timer. */
    \n-
    982#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */
    \n-
    983#define SYBEUDTY 20060 /* Unknown datatype encountered. */
    \n-
    984#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid timestamp. */
    \n-
    985#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which has no timestamp column. */
    \n-
    986#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. */
    \n-
    987#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent Server table. */
    \n-
    988#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */
    \n-
    989#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. */
    \n-
    990#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. */
    \n-
    991#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */
    \n-
    992#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */
    \n-
    993#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */
    \n-
    994#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in table names. */
    \n-
    995#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */
    \n-
    996#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server column %d, which does not accept NULL values. */
    \n-
    997#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL Server. */
    \n-
    998#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column value to the SQL Server. */
    \n-
    999#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp routines. */
    \n-
    1000#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. */
    \n-
    1001#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. */
    \n-
    1002#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have either a length-prefix or a terminator specified. */
    \n-
    1003#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. */
    \n-
    1004#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() and bcp_colfmt_ps(). */
    \n-
    1005#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. */
    \n-
    1006#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() has been passed a valid host file. */
    \n-
    1007#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */
    \n-
    1008#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */
    \n-
    1009#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */
    \n-
    1010#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */
    \n-
    1011#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */
    \n-
    1012#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */
    \n-
    1013#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */
    \n-
    1014#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the SQL Server. */
    \n-
    1015#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the dbmoretext() call. */
    \n-
    1016#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-timestamp into a non-existent data row. */
    \n-
    1017#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */
    \n-
    1018#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_moretext() call. */
    \n-
    1019#define SYBEORPF 20096 /* Attempt to set remote password would overflow the login-record's remote-password field. */
    \n-
    1020#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format-file. */
    \n-
    1021#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */
    \n-
    1022#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */
    \n-
    1023#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */
    \n-
    1024#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */
    \n-
    1025#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. */
    \n-
    1026#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format-file. */
    \n-
    1027#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */
    \n-
    1028#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */
    \n-
    1029#define SYBEBCSI 20106 /* Host-file columns may be skipped only when copying INto the Server. */
    \n-
    1030#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */
    \n-
    1031#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. Skipping all of these rows is not allowed. */
    \n-
    1032#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */
    \n-
    1033#define SYBEUNAM 20110 /* Unable to get current username from operating system. */
    \n-
    1034#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It was impossible to read the requested %ld rows. */
    \n-
    1035#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes lower than 1. */
    \n-
    1036#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. */
    \n-
    1037#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. */
    \n-
    1038#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */
    \n-
    1039#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. */
    \n-
    1040#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the results of a query which contains a COMPUTE clause. */
    \n-
    1041#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the results of a query which contains a single result column. */
    \n-
    1042#define SYBEUCRR 20119 /* Internal software error: Unknown connection result reported by * dbpasswd(). */
    \n-
    1043#define SYBERPNA 20120 /* The RPC facility is available only when using a SQL Server whose version number is 4.0 or greater. */
    \n-
    1044#define SYBEOPNA 20121 /* The text/image facility is available only when using a SQL Server whose version number is 4.0 or greater. */
    \n-
    1045#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. */
    \n-
    1046#define SYBECWLL 20123 /* Attempt to set column width less than 1. */
    \n-
    1047#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). */
    \n-
    1048#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type encountered in dbstrbuild(). */
    \n-
    1049#define SYBETMCF 20126 /* Attempt to install too many custom formats via dbfmtinstall(). */
    \n-
    1050#define SYBEAICF 20127 /* Error in attempting to install custom format. */
    \n-
    1051#define SYBEADST 20128 /* Error in attempting to determine the size of a pair of translation tables. */
    \n-
    1052#define SYBEALTT 20129 /* Error in attempting to load a pair of translation tables. */
    \n-
    1053#define SYBEAPCT 20130 /* Error in attempting to perform a character-set translation. */
    \n-
    1054#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. */
    \n-
    1055#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home directory. */
    \n-
    1056#define SYBEAOLF 20133 /* Error in attempting to open a localization file. */
    \n-
    1057#define SYBEARDI 20134 /* Error in attempting to read datetime information from a localization file. */
    \n-
    1058#define SYBEURCI 20135 /* Unable to read copyright information from the dblib localization file. */
    \n-
    1059#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc localization file. */
    \n-
    1060#define SYBEURMI 20137 /* Unable to read money-format information from the dblib localization file. */
    \n-
    1061#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib localization file. */
    \n-
    1062#define SYBEURES 20139 /* Unable to read error string from the dblib localization file. */
    \n-
    1063#define SYBEUREI 20140 /* Unable to read error information from the dblib localization file. */
    \n-
    1064#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. */
    \n-
    1065#define SYBEISOI 20142 /* Invalid sort-order information found. */
    \n-
    1066#define SYBEIDCL 20143 /* Illegal datetime column length returned by DataServer. Legal datetime lengths are 4 and 8 bytes. */
    \n-
    1067#define SYBEIMCL 20144 /* Illegal money column length returned by DataServer. Legal money lengths are 4 and 8 bytes. */
    \n-
    1068#define SYBEIFCL 20145 /* Illegal floating-point column length returned by DataServer. Legal floating-point lengths are 4 and 8 bytes. */
    \n-
    1069#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL Server. */
    \n-
    1070#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */
    \n-
    1071#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination variable. */
    \n-
    1072#define SYBEDPOR 20149 /* Out-of-range datepart constant. */
    \n-
    1073#define SYBENDC 20150 /* Cannot have negative component in date in numeric form. */
    \n-
    1074#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */
    \n-
    1075#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */
    \n-
    1076#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. */
    \n-
    1077#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */
    \n-
    1078#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime parameter. */
    \n-
    1079#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_xlate() were NULL. */
    \n-
    1080#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has been freed. */
    \n-
    1081#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate() was NULL. The space associated with the xlt_todisp parameter has been freed. */
    \n-
    1082#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. */
    \n-
    1083#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */
    \n-
    1084#define SYBEGENOS 20161 /* General Operating System Error. */
    \n-
    1085#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() operation. */
    \n-
    1086#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */
    \n-
    1087#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or IMAGE data via dbmoretext(). */
    \n-
    1088#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */
    \n-
    1089#define SYBERFILE 20166 /* "Can not open resource file." */
    \n-
    1090#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */
    \n-
    1091#define SYBESLCT 20168 /* Could not select or copy field specified */
    \n-
    1092#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to dataserver via dbwritetext(). */
    \n-
    1093#define SYBENTST 20170 /* The file being opened must be a stream_lf. */
    \n-
    1094#define SYBEOSSL 20171 /* Operating system login level not in range of Secure SQL Server */
    \n-
    1095#define SYBEESSL 20172 /* Login security level entered does not agree with operating system level */
    \n-
    1096#define SYBENLNL 20173 /* Program not linked with specified network library. */
    \n-
    1097#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler parameter. */
    \n-
    1098#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. */
    \n-
    1099#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */
    \n-
    1100#define SYBENOTI 20177 /* No event handler installed. */
    \n-
    1101#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. */
    \n-
    1102#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler parameter. */
    \n-
    1103#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. */
    \n-
    1104#define SYBEEVST 20181 /* Must initiate a transaction before calling dbregparam(). */
    \n-
    1105#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */
    \n-
    1106#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */
    \n-
    1107#define SYBEECAN 20184 /* Attempted to cancel unrequested event notification. */
    \n-
    1108#define SYBEEUNR 20185 /* Unsolicited event notification received. */
    \n-
    1109#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */
    \n-
    1110#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. */
    \n-
    1111#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */
    \n-
    1112#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not on. */
    \n-
    1113#define SYBETRAS 20190 /* DB-Library internal error - trace structure not found. */
    \n-
    1114#define SYBEPRTF 20191 /* dbtracestring() may only be called from a printfunc(). */
    \n-
    1115#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). */
    \n-
    1116#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must be between 0 and 999999. */
    \n-
    1117#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of %3!. */
    \n-
    1118#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function %1!. */
    \n-
    1119#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */
    \n-
    1120#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */
    \n-
    1121#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are present. */
    \n-
    1122#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */
    \n-
    1123#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure notifications have been disabled. */
    \n-
    1124#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! used instead. */
    \n-
    1125#define SYBESECURE 20202 /* Secure Server function not supported in this version. */
    \n-
    1126#define SYBECAP 20203 /* DB-Library capabilities not accepted by the Server. */
    \n-
    1127#define SYBEFUNC 20204 /* Functionality not supported at the specified version level. */
    \n-
    1128#define SYBERESP 20205 /* Response function address passed to dbresponse() must be non-NULL. */
    \n-
    1129#define SYBEIVERS 20206 /* Illegal version level specified. */
    \n-
    1130#define SYBEONCE 20207 /* Function can be called only once. */
    \n-
    1131#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, only if the datalen parameter is 0 */
    \n-
    1132#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. */
    \n-
    1133#define SYBENEG 20210 /* Negotiated login attempt failed. */
    \n-
    1134#define SYBELBLEN 20211 /* Security labels should be less than 256 characters long. */
    \n-
    1135#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */
    \n-
    1136#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY datastream. */
    \n-
    1137#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */
    \n-
    1138#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */
    \n-
    1139#define SYBEBPREC 20216 /* Illegal precision specified */
    \n-
    1140#define SYBEBSCALE 20217 /* Illegal scale specified */
    \n-
    1141#define SYBECDOMAIN 20218 /* Source field value is not within the domain of legal values. */
    \n-
    1142#define SYBECINTERNAL 20219 /* Internal Conversion error. */
    \n-
    1143#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */
    \n-
    1144#define SYBEBCSET 20221 /* Unknown character-set encountered." */
    \n-
    1145#define SYBEFENC 20222 /* Password Encryption failed." */
    \n-
    1146#define SYBEFRES 20223 /* Challenge-Response function failed.", */
    \n-
    1147#define SYBEISRVPREC 20224 /* Illegal precision value returned by the server. */
    \n-
    1148#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */
    \n-
    1149#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the server. */
    \n-
    1150#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the server. */
    \n-
    1151#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is at least one text or image column in the server table. */
    \n-
    1152#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value encountered. */
    \n-
    1153#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must be 0 and no terminator should be specified. */
    \n-
    1154#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. */
    \n-
    1155#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. */
    \n-
    1156#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type cannot be 0. */
    \n-
    1157#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. */
    \n-
    1158#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to -1. */
    \n-
    1159#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, 2 or 4. */
    \n-
    1160#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, 1, 2 or 4. */
    \n-
    1161#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. */
    \n-
    1162#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */
    \n-
    1163#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all text data for the previous row has been sent using bcp_moretext(). */
    \n-
    1164#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count differs from the actual number of columns received. */
    \n-
    1165#define SYBEBPRODEF 20242 /* bcp protocol error: expected default information and got none. */
    \n-
    1166#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of defaults differs from the actual number of defaults received. */
    \n-
    1167#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and actual column id are not same */
    \n-
    1168#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received for column that does not have default. */
    \n-
    1169#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype differs from column datatype. */
    \n-
    1170#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of default information received. */
    \n-
    1171#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of results received. */
    \n-
    1172#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column id received. */
    \n-
    1173#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column datatype. */
    \n-
    1174#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length received. */
    \n-
    1175#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision value received. */
    \n-
    1176#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value received. */
    \n-
    1177#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. */
    \n-
    1178#define SYBECRSNORES 20255 /* Cursor statement generated no results. */
    \n-
    1179#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor statement does not have a unique index. */
    \n-
    1180#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or a view in a cursor statement. */
    \n-
    1181#define SYBECRSVIIND 20258 /* The view used in the cursor statement does not include all the unique index columns of the underlying tables. */
    \n-
    1182#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have 'order by', ' group by', or 'having' phrases. */
    \n-
    1183#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when using cursor APIs. */
    \n-
    1184#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned on when using cursor APIs. */
    \n-
    1185#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */
    \n-
    1186#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor statement. */
    \n-
    1187#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be used within the keyset of keyset driven cursors. */
    \n-
    1188#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven cursors. */
    \n-
    1189#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward scrolling cursor. */
    \n-
    1190#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid range. */
    \n-
    1191#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed cursors with a previous fetch type. */
    \n-
    1192#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in a READONLY cursor. */
    \n-
    1193#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned on when doing updates or deletes with dbcursor(). */
    \n-
    1194#define SYBECRSTAB 20271 /* Table name must be determined in operations involving data locking or modifications. */
    \n-
    1195#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind variables when binding type is NOBIND. */
    \n-
    1196#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor update or insert. */
    \n-
    1197#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or insert. */
    \n-
    1198#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind variables require single table cursors. */
    \n-
    1199#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any rows. */
    \n-
    1200#define SYBECRSINV 20277 /* Invalid cursor statement. */
    \n-
    1201#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET cursors. */
    \n-
    1202#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating cursor */
    \n-
    1203#define SYBECRSFTYPE 20280 /* Unknown fetch type. */
    \n-
    1204#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */
    \n-
    1205#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is expected. */
    \n-
    1206#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. */
    \n-
    1207#define SYBECRSNOLEN 20284 /* No unique index found. */
    \n-
    1208#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */
    \n-
    1209#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, and order by. */
    \n-
    1210#define SYBECRSNOTABLE 20287 /* Table name is NULL. */
    \n-
    1211#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. */
    \n-
    1212#define SYBECRSVAR 20289 /* There is no valid address associated with this bind. */
    \n-
    1213#define SYBENOVALUE 20290 /* Security labels require both a name and a value */
    \n-
    1214#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return parameter. */
    \n-
    1215#define SYBECLOSEIN 20292 /* Unable to close interface file. */
    \n-
    1216#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */
    \n-
    1217#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy operation is progress. */
    \n-
    1218#define SYBEERRLABEL 20295 /* An illegal value was returned from the security label handler. */
    \n-
    1219#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge attention." */
    \n-
    1220#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */
    \n-
    1221#define SYBEDCL 20298 /* -004- DCL Error */
    \n-
    1222#define SYBECS 20299 /* -004- cs context Error */
    \n-
    1223#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */
    \n-
    1224#define SYBECOLSIZE 22000 /* Invalid column information structure size */
    \n-
    1225
    \n-
    1226int dbtds(DBPROCESS * dbprocess);
    \n-
    1227
    \n-
    1228#define DBTDS(a) dbtds(a)
    \n-
    1229DBINT dbtextsize(DBPROCESS * dbprocess);
    \n-
    1230DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);
    \n-
    1231DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);
    \n-
    1232DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);
    \n-
    1233RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);
    \n-
    1234RETCODE dbuse(DBPROCESS * dbproc, const char *name);
    \n-
    1235const char *dbversion(void);
    \n-
    1236DBBOOL dbwillconvert(int srctype, int desttype);
    \n-
    1237RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, DBTINYINT textptrlen, DBBINARY * timestamp,
    \n-
    1238 DBBOOL log, DBINT size, BYTE * text);
    \n-
    1239
    \n-
    1240/* LOGINREC manipulation */
    \n-
    1241RETCODE dbsetlname(LOGINREC * login, const char *value, int which);
    \n-
    1242RETCODE dbsetlbool(LOGINREC * login, int value, int which);
    \n-
    1243RETCODE dbsetlshort(LOGINREC * login, int value, int which);
    \n-
    1244RETCODE dbsetllong(LOGINREC * login, long value, int which);
    \n-
    1245RETCODE dbsetlversion (LOGINREC * login, BYTE version);
    \n-
    1246
    \n-
    1247#define DBSETHOST 1
    \n-
    1248#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)
    \n-
    1249#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)
    \n-
    1250#define DBSETUSER 2
    \n-
    1251#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)
    \n-
    1252#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)
    \n-
    1253#define DBSETPWD 3
    \n-
    1254#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)
    \n-
    1255#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)
    \n-
    1256#if defined(DBLIB_UNIMPLEMENTED)
    \n-
    1257# define DBSETHID 4 /* not implemented */
    \n-
    1258# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)
    \n-
    1259#endif
    \n-
    1260#define DBSETAPP 5
    \n-
    1261#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)
    \n-
    1262#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)
    \n-
    1263#define DBSETBCP 6
    \n-
    1264#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)
    \n-
    1265#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)
    \n-
    1266#define DBSETNATLANG 7
    \n-
    1267#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)
    \n-
    1268#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)
    \n-
    1269#if defined(DBLIB_UNIMPLEMENTED)
    \n-
    1270# define DBSETNOSHORT 8 /* not implemented */
    \n-
    1271# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)
    \n-
    1272# define DBSETHIER 9 /* not implemented */
    \n-
    1273# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)
    \n-
    1274#endif
    \n-
    1275#define DBSETCHARSET 10
    \n-
    1276#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)
    \n-
    1277#define DBSETPACKET 11
    \n-
    1278#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)
    \n-
    1279#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)
    \n-
    1280#define DBSETENCRYPT 12
    \n-
    1281#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)
    \n-
    1282#define DBSETLABELED 13
    \n-
    1283#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
    \n-
    1284#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
    \n-
    1285#define DBSETDBNAME 14
    \n-
    1286#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)
    \n-
    1287#define DBSETLVERSION(login, version) dbsetlversion((login), (version))
    \n-
    1288#define DBSETNETWORKAUTH 101
    \n-
    1289#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)
    \n-
    1290#define DBSETMUTUALAUTH 102
    \n-
    1291#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)
    \n-
    1292#define DBSETSERVERPRINCIPAL 103
    \n-
    1293#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), DBSETSERVERPRINCIPAL)
    \n-
    1294/* settings from here are purely FreeTDS extensions */
    \n-
    1295#define DBSETUTF16 1001
    \n-
    1296#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)
    \n-
    1297#define DBSETNTLMV2 1002
    \n-
    1298#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)
    \n-
    1299#define DBSETREADONLY 1003
    \n-
    1300#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)
    \n-
    1301#define DBSETDELEGATION 1004
    \n-
    1302#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)
    \n-
    1303
    \n-
    1304RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char *hfile, const char *errfile, int direction);
    \n-
    1305DBINT bcp_done(DBPROCESS * dbproc);
    \n-
    1306
    \n-
    1307DBINT bcp_batch(DBPROCESS * dbproc);
    \n-
    1308RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT varlen, BYTE * terminator, int termlen, int type,
    \n-
    1309 int table_column);
    \n-
    1310RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);
    \n-
    1311RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);
    \n-
    1312RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
    \n-
    1313 const BYTE * host_term, int host_termlen, int colnum);
    \n-
    1314RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
    \n-
    1315 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);
    \n-
    1316RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);
    \n-
    1317RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);
    \n-
    1318int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */
    \n-
    1319RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);
    \n-
    1320DBBOOL bcp_getl(LOGINREC * login);
    \n-
    1321RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int valuelen);
    \n-
    1322RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);
    \n-
    1323RETCODE bcp_sendrow(DBPROCESS * dbproc);
    \n-
    1324
    \n-
    1325#ifdef __cplusplus
    \n-
    1326#if 0
    \n-
    1327{
    \n-
    1328#endif
    \n-
    1329}
    \n-
    1330#endif
    \n-
    1331
    \n-
    1332#endif
    \n-
    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:3045
    \n-
    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:914
    \n-
    void dbclrbuf(DBPROCESS *dbproc, DBINT n)
    Clear n rows from the row buffer.
    Definition dblib.c:2844
    \n-
    DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)
    Get precision and scale information for a regular result column.
    Definition dblib.c:3016
    \n-
    LOGINREC * dblogin(void)
    Allocate a LOGINREC structure.
    Definition dblib.c:705
    \n-
    void dbfreebuf(DBPROCESS *dbproc)
    Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
    Definition dblib.c:6081
    \n-
    BYTE * dbdata(DBPROCESS *dbproc, int column)
    Get address of data in a regular result column.
    Definition dblib.c:3352
    \n-
    int dbstrlen(DBPROCESS *dbproc)
    Get size of the command buffer, in bytes.
    Definition dblib.c:6312
    \n-
    BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)
    Get address of compute column data.
    Definition dblib.c:4436
    \n-
    int dbspid(DBPROCESS *dbproc)
    Get server process ID for a DBPROCESS.
    Definition dblib.c:5941
    \n-
    DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)
    Get text timestamp for a column in the current row.
    Definition dblib.c:6548
    \n-
    BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)
    Get bylist for a compute row.
    Definition dblib.c:5020
    \n-
    char * dbservcharset(DBPROCESS *dbprocess)
    Get syscharset name of the server character set.
    Definition dblib.c:7044
    \n-
    DBINT dbspr1rowlen(DBPROCESS *dbproc)
    Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(),...
    Definition dblib.c:3419
    \n-
    DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
    cf.
    Definition dblib.c:2593
    \n-
    DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)
    Get size of data in a compute column.
    Definition dblib.c:4331
    \n-
    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:4652
    \n-
    RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE *bindval)
    Define substitution values to be used when binding null values.
    Definition dblib.c:1962
    \n-
    char * dbcolname(DBPROCESS *dbproc, int column)
    Return name of a regular result column.
    Definition dblib.c:1872
    \n-
    RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)
    printf-like way to form SQL to send to the server.
    Definition dblib.c:1334
    \n-
    RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)
    Break a DBDATETIME value into useful pieces.
    Definition dblib.c:5868
    \n-
    RETCODE dbresults(DBPROCESS *dbproc)
    Set up query results.
    Definition dblib.c:1694
    \n-
    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:6615
    \n-
    RETCODE dbcanquery(DBPROCESS *dbproc)
    Cancel the query currently being retrieved, discarding all pending rows.
    Definition dblib.c:6052
    \n-
    RETCODE dbinit(void)
    Initialize db-lib.
    Definition dblib.c:660
    \n-
    DBINT dbvarylen(DBPROCESS *dbproc, int column)
    Determine whether a column can vary in size.
    Definition dblib.c:3218
    \n-
    RETCODE dbcancel(DBPROCESS *dbproc)
    Cancel the current command batch.
    Definition dblib.c:3394
    \n-
    RETCODE dbsetlogintime(int seconds)
    Set maximum seconds db-lib waits for a server response to a login attempt.
    Definition dblib.c:4260
    \n-
    RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)
    Read a row from the row buffer.
    Definition dblib.c:1930
    \n-
    int dbcoltype(DBPROCESS *dbproc, int column)
    Get the datatype of a regular result set column.
    Definition dblib.c:2970
    \n-
    void dbsetifile(char *filename)
    set name and location of the interfaces file FreeTDS should use to look up a servername.
    Definition dblib.c:2711
    \n-
    RETCODE dbuse(DBPROCESS *dbproc, const char *name)
    Change current database.
    Definition dblib.c:1445
    \n-
    int dbnumalts(DBPROCESS *dbproc, int computeid)
    Get count of columns in a compute row.
    Definition dblib.c:4961
    \n-
    BOOL dbiscount(DBPROCESS *dbproc)
    Indicates whether or not the count returned by dbcount is real (Microsoft-compatibility feature).
    Definition dblib.c:2804
    \n-
    int dbgettime(void)
    Get maximum seconds db-lib waits for a server response to query.
    Definition dblib.c:4244
    \n-
    RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])
    Send chunk of a text/image value to the server.
    Definition dblib.c:6753
    \n-
    const char * dbprtype(int token)
    Print a token value's name to a buffer.
    Definition dblib.c:6468
    \n-
    char * dbcolsource(DBPROCESS *dbproc, int colnum)
    Get base database column name for a result set column.
    Definition dblib.c:3144
    \n-
    char * dbchange(DBPROCESS *dbprocess)
    See if a command caused the current database to change.
    Definition dblib.c:7008
    \n-
    const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)
    Return name of a computed result column.
    Definition dblib.c:1898
    \n-
    RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)
    Tie a null-indicator to a regular result column.
    Definition dblib.c:2740
    \n-
    RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
    Tie a host variable to a resultset column.
    Definition dblib.c:2634
    \n-
    const char * dbversion(void)
    See which version of db-lib is in use.
    Definition dblib.c:6861
    \n-
    RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])
    Append SQL to the command buffer.
    Definition dblib.c:1373
    \n-
    DBINT dbcollen(DBPROCESS *dbproc, int column)
    Get size of a regular result column.
    Definition dblib.c:3169
    \n-
    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:2300
    \n-
    char * dbgetchar(DBPROCESS *dbprocess, int n)
    Get address of a position in the command buffer.
    Definition dblib.c:6331
    \n-
    RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT *indicator)
    Tie a null-indicator to a compute result column.
    Definition dblib.c:2776
    \n-
    RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])
    Reset an option.
    Definition dblib.c:6116
    \n-
    DBINT dbcount(DBPROCESS *dbproc)
    Get count of rows processed.
    Definition dblib.c:2824
    \n-
    int dbaltop(DBPROCESS *dbproc, int computeid, int column)
    Get aggregation operator for a compute column.
    Definition dblib.c:4465
    \n-
    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:6485
    \n-
    DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)
    Get size of data in compute column.
    Definition dblib.c:7158
    \n-
    RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int int_param)
    Set db-lib or server option.
    Definition dblib.c:4492
    \n-
    void dbprhead(DBPROCESS *dbproc)
    Print result set headings to stdout.
    Definition dblib.c:3980
    \n-
    RETCODE dbsetlversion(LOGINREC *login, BYTE version)
    Set TDS version for future connections.
    Definition dblib.c:947
    \n-
    RETCODE dbprrow(DBPROCESS *dbproc)
    Print a result set to stdout.
    Definition dblib.c:3540
    \n-
    char * dbname(DBPROCESS *dbproc)
    Get name of current database.
    Definition dblib.c:7028
    \n-
    int dbalttype(DBPROCESS *dbproc, int computeid, int column)
    Get datatype for a compute column.
    Definition dblib.c:4361
    \n-
    RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
    Print result set headings to a buffer.
    Definition dblib.c:3916
    \n-
    RETCODE dbsqlexec(DBPROCESS *dbproc)
    send the SQL command to the server and wait for an answer.
    Definition dblib.c:1419
    \n-
    DBBOOL dbwillconvert(int srctype, int desttype)
    Test whether or not a datatype can be converted to another datatype.
    Definition dblib.c:2874
    \n-
    DBINT dbcolutype(DBPROCESS *dbprocess, int column)
    Get user-defined datatype of a regular result column.
    Definition dblib.c:2993
    \n-
    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:7321
    \n-
    EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)
    Set an error handler, for messages from db-lib.
    Definition dblib.c:5142
    \n-
    RETCODE dbsetversion(DBINT version)
    Specify a db-lib version level.
    Definition dblib.c:5997
    \n-
    int dbgetpacket(DBPROCESS *dbproc)
    Get TDS packet size for the connection.
    Definition dblib.c:4096
    \n-
    void dbrecftos(const char filename[])
    Record to a file all SQL commands sent to the server.
    Definition dblib.c:6788
    \n-
    BYTE * dbgetuserdata(DBPROCESS *dbproc)
    Get address of user-allocated data from a DBPROCESS.
    Definition dblib.c:5979
    \n-
    void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)
    Associate client-allocated (and defined) data with a DBPROCESS.
    Definition dblib.c:5961
    \n-
    DBINT dbprcollen(DBPROCESS *dbproc, int column)
    Get size of a result column needed to print column.
    Definition dblib.c:3192
    \n-
    void dbloginfree(LOGINREC *login)
    free the LOGINREC
    Definition dblib.c:737
    \n-
    RETCODE dbmorecmds(DBPROCESS *dbproc)
    See if more commands are to be processed.
    Definition dblib.c:6258
    \n-
    DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])
    Get value of an option.
    Definition dblib.c:6184
    \n-
    int dbnumcompute(DBPROCESS *dbprocess)
    Get count of COMPUTE clauses for a result set.
    Definition dblib.c:4994
    \n-
    RETCODE dbsqlsend(DBPROCESS *dbproc)
    Transmit the command buffer to the server.
    Definition dblib.c:7064
    \n-
    RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
    Get formatted string for underlining dbsprhead() column names.
    Definition dblib.c:3858
    \n-
    void dbexit(void)
    Close server connections and free all related structures.
    Definition dblib.c:1552
    \n-
    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:6407
    \n-
    int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)
    Get column ID of a compute column.
    Definition dblib.c:4305
    \n-
    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:5889
    \n-
    RETCODE dbsettime(int seconds)
    Set maximum seconds db-lib waits for a server response to query.
    Definition dblib.c:4213
    \n-
    int dbnumcols(DBPROCESS *dbproc)
    Return number of regular columns in a result set.
    Definition dblib.c:1848
    \n-
    int dbgetmaxprocs(void)
    get maximum simultaneous connections db-lib will open to the server.
    Definition dblib.c:4192
    \n-
    DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)
    Get text pointer for a column in the current row.
    Definition dblib.c:6578
    \n-
    MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)
    Set a message handler, for messages from the server.
    Definition dblib.c:5161
    \n-
    STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)
    Fetch part of a text or image value from the server.
    Definition dblib.c:6684
    \n-
    RETCODE dbsqlok(DBPROCESS *dbproc)
    Wait for results of a query from the server.
    Definition dblib.c:4835
    \n-
    DBINT dbdatlen(DBPROCESS *dbproc, int column)
    Get size of current row's data in a regular result column.
    Definition dblib.c:3324
    \n-
    STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)
    Make a buffered row "current" without fetching it into bound variables.
    Definition dblib.c:2045
    \n-
    void dbclose(DBPROCESS *dbproc)
    Close a connection to the server and free associated resources.
    Definition dblib.c:1485
    \n-
    RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)
    Get a copy of a chunk of the command buffer.
    Definition dblib.c:6363
    \n-
    DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)
    Get user-defined datatype of a compute column.
    Definition dblib.c:7135
    \n-
    RETCODE dbsetmaxprocs(int maxprocs)
    Set maximum simultaneous connections db-lib will open to the server.
    Definition dblib.c:4120
    \n-
    RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
    Print a regular result row to a buffer.
    Definition dblib.c:3457
    \n-
    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:4390
    \n-
    DBINT dbretstatus(DBPROCESS *dbproc)
    Fetch status value returned by query or remote procedure call.
    Definition dblib.c:4695
    \n-
    RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)
    Initialize a remote procedure call.
    Definition rpc.c:72
    \n-
    BYTE * dbretdata(DBPROCESS *dbproc, int retnum)
    Get value of an output parameter filled by a stored procedure.
    Definition dblib.c:4774
    \n-
    char * dbretname(DBPROCESS *dbproc, int retnum)
    Get name of an output parameter filled by a stored procedure.
    Definition dblib.c:4745
    \n-
    DBBOOL dbhasretstat(DBPROCESS *dbproc)
    Determine if query generated a return status number.
    Definition dblib.c:4671
    \n-
    int dbrettype(DBPROCESS *dbproc, int retnum)
    Get datatype of a stored procedure's return parameter.
    Definition dblib.c:6287
    \n-
    int dbretlen(DBPROCESS *dbproc, int retnum)
    Get size of an output parameter filled by a stored procedure.
    Definition dblib.c:4800
    \n-
    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
    \n-
    RETCODE dbrpcsend(DBPROCESS *dbproc)
    Execute the procedure and free associated memory.
    Definition rpc.c:281
    \n-
    int dbnumrets(DBPROCESS *dbproc)
    Get count of output parameters filled by a stored procedure.
    Definition dblib.c:4713
    \n-
    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
    \n-
    DBBOOL bcp_getl(LOGINREC *login)
    See if BCP_SETL() was used to set the LOGINREC for BCP work.
    Definition bcp.c:707
    \n-
    RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
    Set BCP options for uploading a datafile.
    Definition bcp.c:544
    \n-
    RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)
    Indicate how many columns are to be found in the datafile.
    Definition bcp.c:301
    \n-
    RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
    Override bcp_bind() by pointing to a different host variable.
    Definition bcp.c:671
    \n-
    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:2079
    \n-
    RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)
    Write a datafile to a table.
    Definition bcp.c:1617
    \n-
    DBINT bcp_done(DBPROCESS *dbproc)
    Conclude the transfer of data from program variables.
    Definition bcp.c:2037
    \n-
    RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])
    Read a format definition file.
    Definition bcp.c:1678
    \n-
    DBINT bcp_batch(DBPROCESS *dbproc)
    Commit a set of rows to the table.
    Definition bcp.c:2010
    \n-
    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
    \n-
    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
    \n-
    RETCODE bcp_sendrow(DBPROCESS *dbproc)
    Write data in host variables to the table.
    Definition bcp.c:1381
    \n-
    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
    \n-
    RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
    Set "hints" for uploading a file.
    Definition bcp.c:622
    \n-
    RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)
    Zero a DBMONEY4 value.
    Definition dblib.c:5591
    \n-
    RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
    Add two DBMONEY4 values.
    Definition dblib.c:5614
    \n-
    int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
    Compare two DBMONEY4 values.
    Definition dblib.c:5733
    \n-
    RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)
    Get maximum positive DBMONEY value supported.
    Definition dblib.c:5366
    \n-
    RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
    Negate a DBMONEY4 value.
    Definition dblib.c:5567
    \n-
    RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
    Negate a DBMONEY value.
    Definition dblib.c:5540
    \n-
    RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
    Subtract two DBMONEY4 values.
    Definition dblib.c:5645
    \n-
    RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)
    Set a DBMONEY value to zero.
    Definition dblib.c:5345
    \n-
    RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
    Copy a DBMONEY value.
    Definition dblib.c:6031
    \n-
    RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)
    Copy a DBMONEY4 value.
    Definition dblib.c:5761
    \n-
    RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)
    Get maximum negative DBMONEY value supported.
    Definition dblib.c:5387
    \n-
    RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)
    Subtract $0.0001 from a DBMONEY value.
    Definition dblib.c:5512
    \n-
    RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)
    Add $0.0001 to a DBMONEY value.
    Definition dblib.c:5484
    \n-
    int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
    Compare two DBMONEY values.
    Definition dblib.c:5287
    \n-
    int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
    Compare DBDATETIME values, similar to strcmp(3).
    Definition dblib.c:5786
    \n-
    const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
    Get name of a month, in some human language.
    Definition dblib.c:6979
    \n-
    int dbcurcmd(DBPROCESS *dbproc)
    Get number of the row just returned.
    Definition dblib.c:6241
    \n-
    RETCODE dbsetlbool(LOGINREC *login, int value, int which)
    Set a boolean value in a LOGINREC structure.
    Definition dblib.c:896
    \n-
    DBINT dblastrow(DBPROCESS *dbproc)
    Get number of the last row in the row buffer.
    Definition dblib.c:7228
    \n-
    RETCODE dbcmdrow(DBPROCESS *dbproc)
    See if the current command can return rows.
    Definition dblib.c:4281
    \n-
    RETCODE dbrows(DBPROCESS *dbproc)
    Indicate whether a query returned rows.
    Definition dblib.c:4055
    \n-
    void dbsetavail(DBPROCESS *dbprocess)
    Mark a DBPROCESS as "available".
    Definition dblib.c:7296
    \n-
    int dbiowdesc(DBPROCESS *dbproc)
    Get file descriptor of the socket used by a DBPROCESS to write data coming to the server....
    Definition dblib.c:7268
    \n-
    int dbtds(DBPROCESS *dbprocess)
    Get the TDS version in use for dbproc.
    Definition dblib.c:6822
    \n-
    DBINT dbcurrow(DBPROCESS *dbproc)
    Get number of the row currently being read.
    Definition dblib.c:6207
    \n-
    STATUS dbrowtype(DBPROCESS *dbprocess)
    Get returned row's type.
    Definition dblib.c:6224
    \n-
    int dbiordesc(DBPROCESS *dbproc)
    Get file descriptor of the socket used by a DBPROCESS to read data coming from the server....
    Definition dblib.c:7252
    \n-
    RETCODE dbsetllong(LOGINREC *login, long value, int which)
    Set an integer value in a LOGINREC structure.
    Definition dblib.c:825
    \n-
    RETCODE dbsetlname(LOGINREC *login, const char *value, int which)
    Set the value of a string in a LOGINREC structure.
    Definition dblib.c:759
    \n-
    DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)
    Form a connection with the server.
    Definition dblib.c:1179
    \n-
    DBBOOL dbdead(DBPROCESS *dbproc)
    Check if dbproc is an ex-parrot.
    Definition dblib.c:5079
    \n-
    DBINT dbfirstrow(DBPROCESS *dbproc)
    See if a server response has arrived.
    Definition dblib.c:7213
    \n-
    Definition bsqlodbc.c:100
    \n-
    Definition dbpivot.c:77
    \n-
    Definition dbpivot.c:772
    \n-
    Definition dblib.h:44
    \n-
    Definition dblib.h:123
    \n-
    Definition sybdb.h:263
    \n-
    Definition sybdb.h:269
    \n-
    Definition sybdb.h:275
    \n-
    Definition sybdb.h:284
    \n-
    Definition sybdb.h:290
    \n-
    Definition sybdb.h:295
    \n-
    Definition sybdb.h:301
    \n-
    Definition sybdb.h:307
    \n-
    DBSMALLINT offset
    time offset
    Definition sybdb.h:310
    \n-
    DBUBIGINT time
    time, 7 digit precision
    Definition sybdb.h:308
    \n-
    DBINT date
    date, 0 = 1900-01-01
    Definition sybdb.h:309
    \n-
    Definition sybdb.h:336
    \n-
    Definition sybdb.h:342
    \n-
    Definition sybdb.h:355
    \n-
    Definition sybdb.h:374
    \n-
    Definition sybdb.h:458
    \n-
    Definition sybdb.h:474
    \n-
    Definition sybdb.h:490
    \n-
    Definition sybdb.h:506
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18 */
    \n+
    19
    \n+
    20#ifndef SQLDB_h
    \n+
    21#define SQLDB_h
    \n+
    22
    \n+
    23#include "./sybdb.h"
    \n+
    24
    \n+
    25#define SQLCHAR SYBCHAR
    \n+
    26#define SQLVARCHAR SYBVARCHAR
    \n+
    27#define SQLINTN SYBINTN
    \n+
    28#define SQLINT1 SYBINT1
    \n+
    29#define SQLINT2 SYBINT2
    \n+
    30#define SQLINT4 SYBINT4
    \n+
    31#define SQLINT8 SYBINT8
    \n+
    32#define SQLFLT8 SYBFLT8
    \n+
    33#define SQLDATETIME SYBDATETIME
    \n+
    34#define SQLBIT SYBBIT
    \n+
    35#define SQLTEXT SYBTEXT
    \n+
    36#define SQLIMAGE SYBIMAGE
    \n+
    37#define SQLMONEY4 SYBMONEY4
    \n+
    38#define SQLMONEY SYBMONEY
    \n+
    39#define SQLDATETIM4 SYBDATETIME4
    \n+
    40#define SQLFLT4 SYBREAL
    \n+
    41#define SQLBINARY SYBBINARY
    \n+
    42#define SQLVARBINARY SYBVARBINARY
    \n+
    43#define SQLNUMERIC SYBNUMERIC
    \n+
    44#define SQLDECIMAL SYBDECIMAL
    \n+
    45#define SQLFLTN SYBFLTN
    \n+
    46#define SQLMONEYN SYBMONEYN
    \n+
    47#define SQLDATETIMN SYBDATETIMN
    \n+
    48#define SQLVOID SYBVOID
    \n+
    49
    \n+
    50#define SMALLDATETIBIND SMALLDATETIMEBIND
    \n+
    51
    \n+
    52#define DBERRHANDLE_PROC EHANDLEFUNC
    \n+
    53#define DBMSGHANDLE_PROC MHANDLEFUNC
    \n+
    54
    \n+
    55/* DB-Library errors as defined by Microsoft */
    \n+
    56#define SQLEMEM SYBEMEM
    \n+
    57#define SQLENULL SYBENULL
    \n+
    58#define SQLENLOG SYBENLOG
    \n+
    59#define SQLEPWD SYBEPWD
    \n+
    60#define SQLECONN SYBECONN
    \n+
    61#define SQLEDDNE SYBEDDNE
    \n+
    62#define SQLENULLO SYBENULLO
    \n+
    63#define SQLESMSG SYBESMSG
    \n+
    64#define SQLEBTOK SYBEBTOK
    \n+
    65#define SQLENSPE SYBENSPE
    \n+
    66#define SQLEREAD SYBEREAD
    \n+
    67#define SQLECNOR SYBECNOR
    \n+
    68#define SQLETSIT SYBETSIT
    \n+
    69#define SQLEPARM SYBEPARM
    \n+
    70#define SQLEAUTN SYBEAUTN
    \n+
    71#define SQLECOFL SYBECOFL
    \n+
    72#define SQLERDCN SYBERDCN
    \n+
    73#define SQLEICN SYBEICN
    \n+
    74#define SQLECLOS SYBECLOS
    \n+
    75#define SQLENTXT SYBENTXT
    \n+
    76#define SQLEDNTI SYBEDNTI
    \n+
    77#define SQLETMTD SYBETMTD
    \n+
    78#define SQLEASEC SYBEASEC
    \n+
    79#define SQLENTLL SYBENTLL
    \n+
    80#define SQLETIME SYBETIME
    \n+
    81#define SQLEWRIT SYBEWRIT
    \n+
    82#define SQLEMODE SYBEMODE
    \n+
    83#define SQLEOOB SYBEOOB
    \n+
    84#define SQLEITIM SYBEITIM
    \n+
    85#define SQLEDBPS SYBEDBPS
    \n+
    86#define SQLEIOPT SYBEIOPT
    \n+
    87#define SQLEASNL SYBEASNL
    \n+
    88#define SQLEASUL SYBEASUL
    \n+
    89#define SQLENPRM SYBENPRM
    \n+
    90#define SQLEDBOP SYBEDBOP
    \n+
    91#define SQLENSIP SYBENSIP
    \n+
    92#define SQLECNULL SYBECNULL
    \n+
    93#define SQLESEOF SYBESEOF
    \n+
    94#define SQLERPND SYBERPND
    \n+
    95#define SQLECSYN SYBECSYN
    \n+
    96#define SQLENONET SYBENONET
    \n+
    97#define SQLEBTYP SYBEBTYP
    \n+
    98#define SQLEABNC SYBEABNC
    \n+
    99#define SQLEABMT SYBEABMT
    \n+
    100#define SQLEABNP SYBEABNP
    \n+
    101#define SQLEBNCR SYBEBNCR
    \n+
    102#define SQLEAAMT SYBEAAMT
    \n+
    103#define SQLENXID SYBENXID
    \n+
    104#define SQLEIFNB SYBEIFNB
    \n+
    105#define SQLEKBCO SYBEKBCO
    \n+
    106#define SQLEBBCI SYBEBBCI
    \n+
    107#define SQLEKBCI SYBEKBCI
    \n+
    108#define SQLEBCWE SYBEBCWE
    \n+
    109#define SQLEBCNN SYBEBCNN
    \n+
    110#define SQLEBCOR SYBEBCOR
    \n+
    111#define SQLEBCPI SYBEBCPI
    \n+
    112#define SQLEBCPN SYBEBCPN
    \n+
    113#define SQLEBCPB SYBEBCPB
    \n+
    114#define SQLEVDPT SYBEVDPT
    \n+
    115#define SQLEBIVI SYBEBIVI
    \n+
    116#define SQLEBCBC SYBEBCBC
    \n+
    117#define SQLEBCFO SYBEBCFO
    \n+
    118#define SQLEBCVH SYBEBCVH
    \n+
    119#define SQLEBCUO SYBEBCUO
    \n+
    120#define SQLEBUOE SYBEBUOE
    \n+
    121#define SQLEBWEF SYBEBWEF
    \n+
    122#define SQLEBTMT SYBEBTMT
    \n+
    123#define SQLEBEOF SYBEBEOF
    \n+
    124#define SQLEBCSI SYBEBCSI
    \n+
    125#define SQLEPNUL SYBEPNUL
    \n+
    126#define SQLEBSKERR SYBEBSKERR
    \n+
    127#define SQLEBDIO SYBEBDIO
    \n+
    128#define SQLEBCNT SYBEBCNT
    \n+
    129#define SQLEMDBP SYBEMDBP
    \n+
    130#define SQLINIT SYBINIT
    \n+
    131#define SQLCRSINV SYBCRSINV
    \n+
    132#define SQLCRSCMD SYBCRSCMD
    \n+
    133#define SQLCRSNOIND SYBCRSNOIND
    \n+
    134#define SQLCRSDIS SYBCRSDIS
    \n+
    135#define SQLCRSAGR SYBCRSAGR
    \n+
    136#define SQLCRSORD SYBCRSORD
    \n+
    137#define SQLCRSMEM SYBCRSMEM
    \n+
    138#define SQLCRSBSKEY SYBCRSBSKEY
    \n+
    139#define SQLCRSNORES SYBCRSNORES
    \n+
    140#define SQLCRSVIEW SYBCRSVIEW
    \n+
    141#define SQLCRSBUFR SYBCRSBUFR
    \n+
    142#define SQLCRSFROWN SYBCRSFROWN
    \n+
    143#define SQLCRSBROL SYBCRSBROL
    \n+
    144#define SQLCRSFRAND SYBCRSFRAND
    \n+
    145#define SQLCRSFLAST SYBCRSFLAST
    \n+
    146#define SQLCRSRO SYBCRSRO
    \n+
    147#define SQLCRSTAB SYBCRSTAB
    \n+
    148#define SQLCRSUPDTAB SYBCRSUPDTAB
    \n+
    149#define SQLCRSUPDNB SYBCRSUPDNB
    \n+
    150#define SQLCRSVIIND SYBCRSVIIND
    \n+
    151#define SQLCRSNOUPD SYBCRSNOUPD
    \n+
    152#define SQLCRSOS SYBCRSOS
    \n+
    153#define SQLEBCSA SYBEBCSA
    \n+
    154#define SQLEBCRO SYBEBCRO
    \n+
    155#define SQLEBCNE SYBEBCNE
    \n+
    156#define SQLEBCSK SYBEBCSK
    \n+
    157#define SQLEUVBF SYBEUVBF
    \n+
    158#define SQLEBIHC SYBEBIHC
    \n+
    159#define SQLEBWFF SYBEBWFF
    \n+
    160#define SQLNUMVAL SYBNUMVAL
    \n+
    161#define SQLEOLDVR SYBEOLDVR
    \n+
    162#define SQLEBCPS SYBEBCPS
    \n+
    163#define SQLEDTC SYBEDTC
    \n+
    164#define SQLENOTIMPL SYBENOTIMPL
    \n+
    165#define SQLENONFLOAT SYBENONFLOAT
    \n+
    166#define SQLECONNFB SYBECONNFB
    \n+
    167
    \n+
    168
    \n+
    169#define dbfreelogin(x) dbloginfree((x))
    \n+
    170
    \n+
    171#define dbprocerrhandle(p, h) dberrhandle((h))
    \n+
    172#define dbprocmsghandle(p, h) dbmsghandle((h))
    \n+
    173
    \n+
    174#define dbwinexit()
    \n+
    175
    \n+
    176static const char rcsid_sqldb_h[] = "$Id: sqldb.h,v 1.6 2009-12-02 22:35:18 jklowden Exp $";
    \n+
    177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h, no_unused_sqldb_h_warn };
    \n+
    178
    \n+
    179
    \n+
    180#endif
    \n+
    Primary include file for db-lib applications.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,2305 +6,195 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-sybdb.h\n-Go_to_the_documentation_of_this_file.\n+sqldb.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n- 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n- 4 *\n- 5 * This library is free software; you can redistribute it and/or\n- 6 * modify it under the terms of the GNU Library General Public\n- 7 * License as published by the Free Software Foundation; either\n- 8 * version 2 of the License, or (at your option) any later version.\n- 9 *\n- 10 * This library is distributed in the hope that it will be useful,\n- 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 13 * Library General Public License for more details.\n- 14 *\n- 15 * You should have received a copy of the GNU Library General Public\n- 16 * License along with this library; if not, write to the\n- 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 18 * Boston, MA 02111-1307, USA.\n- 19 */\n- 20\n- 28#ifndef _sybdb_h_\n- 29#define _sybdb_h_\n- 30\n- 31#include \"tds_sysdep_public.h\"\n- 32\n- 33#undef TDS_STATIC_CAST\n- 34#ifdef __cplusplus\n- 35#define TDS_STATIC_CAST(type, a) static_cast(a)\n- 36extern \"C\"\n- 37{\n- 38#if 0\n- 39}\n- 40#endif\n- 41#else\n- 42#define TDS_STATIC_CAST(type, a) ((type)(a))\n- 43#endif\n- 44\n- 45#ifdef FALSE\n- 46#undef FALSE\n- 47#endif\n- 48#ifdef TRUE\n- 49#undef TRUE\n- 50#endif\n- 51#define FALSE 0\n- 52#define TRUE 1\n- 53\n- 54#define DBSAVE 1\n- 55#define DBNOSAVE 0\n- 56#define DBNOERR -1\n- 57\n- 58#define INT_EXIT 0\n- 59#define INT_CONTINUE 1\n- 60#define INT_CANCEL 2\n- 61#define INT_TIMEOUT 3\n- 62\n- 63#define DBMAXNUMLEN 33\n- 64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */\n- 65#define DBMAXNAME 128\n- 66\n-70#define DBVERSION_UNKNOWN 0\n- 71#define DBVERSION_46 1\n- 72#define DBVERSION_100 2\n- 73#define DBVERSION_42 3\n- 74#define DBVERSION_70 4\n- 75#define DBVERSION_71 5\n- 76#define DBVERSION_72 6\n- 77#define DBVERSION_73 7\n- 78#define DBVERSION_74 8\n- 79\n- 80/* these two are defined by Microsoft for dbsetlversion() */\n- 81#define DBVER42 DBVERSION_42\n- 82#define DBVER60 DBVERSION_70 /* our best approximation */\n- 83\n-88#define DBTDS_UNKNOWN 0\n- 89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */\n- 90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */\n- 91#define DBTDS_4_0 3 /* 4.0 SQL Server */\n- 92#define DBTDS_4_2 4 /* 4.2 SQL Server */\n- 93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */\n- 94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */\n- 95#define DBTDS_5_0 7 /* 5.0 SQL Server */\n- 96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */\n- 97#define DBTDS_8_0 9 /* Microsoft SQL Server 2000 */\n- 98#define DBTDS_9_0 10 /* Microsoft SQL Server 2005 */\n- 99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */\n- 100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */\n- 101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */\n- 102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */\n- 103\n- 104#define DBTXPLEN 16\n- 105\n- 106#define BCPMAXERRS 1\n- 107#define BCPFIRST 2\n- 108#define BCPLAST 3\n- 109#define BCPBATCH 4\n- 110#define BCPKEEPIDENTITY 8\n- 111\n- 112#define BCPLABELED 5\n- 113#define BCPHINTS 6\n- 114\n- 115#define DBCMDNONE 0\n- 116#define DBCMDPEND 1\n- 117#define DBCMDSENT 2\n- 118\n- 119typedef int RETCODE;\n- 120\n- 121typedef void DBCURSOR;\n- 122typedef void DBXLATE;\n- 123typedef void DBSORTORDER;\n- 124typedef void DBLOGINFO;\n- 125typedef void *DBVOIDPTR;\n- 126typedef short SHORT;\n- 127typedef unsigned short USHORT;\n- 128typedef int (*INTFUNCPTR) (void *, ...);\n- 129typedef int (*DBWAITFUNC) (void);\n- 130typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);\n- 131typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);\n- 132typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);\n- 133typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);\n- 134\n- 135#ifndef __INCvxWorksh\n- 136/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you\n- 137** redefine them. */\n- 138/* __INCvxWorksh will get #defined by std. include files included from\n-tds.h\n- 139*/\n- 140#ifdef STATUS\n- 141/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h\n- 142 when _REENTRANT is defined.\n- 143*/\n- 144#undef STATUS\n- 145#endif\n- 146typedef int STATUS;\n- 147#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)\n- 148typedef int BOOL;\n- 149#endif\n- 150#endif\n- 151\n- 152#ifndef _tds_h_\n- 153/* copied from tds.h */\n- 154/* TODO find a best way... */\n- 155enum\n- 156{\n- 157 SYBCHAR = 47, /* 0x2F */\n- 158#define SYBCHAR SYBCHAR\n- 159 SYBVARCHAR = 39, /* 0x27 */\n- 160#define SYBVARCHAR SYBVARCHAR\n- 161 SYBINTN = 38, /* 0x26 */\n- 162#define SYBINTN SYBINTN\n- 163 SYBINT1 = 48, /* 0x30 */\n- 164#define SYBINT1 SYBINT1\n- 165 SYBINT2 = 52, /* 0x34 */\n- 166#define SYBINT2 SYBINT2\n- 167 SYBINT4 = 56, /* 0x38 */\n- 168#define SYBINT4 SYBINT4\n- 169 SYBINT8 = 127, /* 0x7F */\n- 170#define SYBINT8 SYBINT8\n- 171 SYBFLT8 = 62, /* 0x3E */\n- 172#define SYBFLT8 SYBFLT8\n- 173 SYBDATETIME = 61, /* 0x3D */\n- 174#define SYBDATETIME SYBDATETIME\n- 175 SYBBIT = 50, /* 0x32 */\n- 176#define SYBBIT SYBBIT\n- 177 SYBBITN = 104, /* 0x68 */\n- 178#define SYBBITN SYBBITN\n- 179 SYBTEXT = 35, /* 0x23 */\n- 180#define SYBTEXT SYBTEXT\n- 181 SYBNTEXT = 99, /* 0x63 */\n- 182#define SYBNTEXT SYBNTEXT\n- 183 SYBIMAGE = 34, /* 0x22 */\n- 184#define SYBIMAGE SYBIMAGE\n- 185 SYBMONEY4 = 122, /* 0x7A */\n- 186#define SYBMONEY4 SYBMONEY4\n- 187 SYBMONEY = 60, /* 0x3C */\n- 188#define SYBMONEY SYBMONEY\n- 189 SYBDATETIME4 = 58, /* 0x3A */\n- 190#define SYBDATETIME4 SYBDATETIME4\n- 191 SYBREAL = 59, /* 0x3B */\n- 192#define SYBREAL SYBREAL\n- 193 SYBBINARY = 45, /* 0x2D */\n- 194#define SYBBINARY SYBBINARY\n- 195 SYBVOID = 31, /* 0x1F */\n- 196#define SYBVOID SYBVOID\n- 197 SYBVARBINARY = 37, /* 0x25 */\n- 198#define SYBVARBINARY SYBVARBINARY\n- 199 SYBNUMERIC = 108, /* 0x6C */\n- 200#define SYBNUMERIC SYBNUMERIC\n- 201 SYBDECIMAL = 106, /* 0x6A */\n- 202#define SYBDECIMAL SYBDECIMAL\n- 203 SYBFLTN = 109, /* 0x6D */\n- 204#define SYBFLTN SYBFLTN\n- 205 SYBMONEYN = 110, /* 0x6E */\n- 206#define SYBMONEYN SYBMONEYN\n- 207 SYBDATETIMN = 111, /* 0x6F */\n- 208#define SYBDATETIMN SYBDATETIMN\n- 209 SYBNVARCHAR = 103, /* 0x67 */\n- 210#define SYBNVARCHAR SYBNVARCHAR\n- 211 SYBDATE = 49, /* 0x31 */\n- 212#define SYBDATE SYBDATE\n- 213 SYBTIME = 51, /* 0x33 */\n- 214#define SYBTIME SYBTIME\n- 215 SYBBIGDATETIME = 187, /* 0xBB */\n- 216#define SYBBIGDATETIME SYBBIGDATETIME\n- 217 SYBBIGTIME = 188, /* 0xBC */\n- 218#define SYBBIGTIME SYBBIGTIME\n- 219 SYBMSDATE = 40, /* 0x28 */\n- 220#define SYBMSDATE SYBMSDATE\n- 221 SYBMSTIME = 41, /* 0x29 */\n- 222#define SYBMSTIME SYBMSTIME\n- 223 SYBMSDATETIME2 = 42, /* 0x2A */\n- 224#define SYBMSDATETIME2 SYBMSDATETIME2\n- 225 SYBMSDATETIMEOFFSET = 43, /* 0x2B */\n- 226#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET\n- 227};\n- 228\n- 229#define SYBAOPCNT 0x4b\n- 230#define SYBAOPCNTU 0x4c\n- 231#define SYBAOPSUM 0x4d\n- 232#define SYBAOPSUMU 0x4e\n- 233#define SYBAOPAVG 0x4f\n- 234#define SYBAOPAVGU 0x50\n- 235#define SYBAOPMIN 0x51\n- 236#define SYBAOPMAX 0x52\n- 237\n- 238/* mssql2k compute operator */\n- 239#define SYBAOPCNT_BIG 0x09\n- 240#define SYBAOPSTDEV 0x30\n- 241#define SYBAOPSTDEVP 0x31\n- 242#define SYBAOPVAR 0x32\n- 243#define SYBAOPVARP 0x33\n- 244#define SYBAOPCHECKSUM_AGG 0x72\n- 245\n- 246#endif\n- 247\n- 248typedef unsigned char DBBOOL;\n- 249typedef char DBCHAR;\n- 250typedef unsigned char DBBIT;\n- 251typedef unsigned char DBTINYINT;\n- 252typedef int16_t DBSMALLINT;\n- 253typedef int32_t DBINT;\n- 254typedef int64_t DBBIGINT;\n- 255typedef unsigned char DBBINARY;\n- 256typedef tds_sysdep_real32_type DBREAL;\n- 257typedef tds_sysdep_real64_type DBFLT8;\n- 258typedef uint16_t DBUSMALLINT;\n- 259typedef uint32_t DBUINT;\n- 260typedef uint64_t DBUBIGINT;\n- 261\n-262typedef struct\n- 263{\n- 264 DBSMALLINT len;\n- 265 char str[256];\n- 266} DBVARYCHAR;\n- 267\n-268typedef struct\n- 269{\n- 270 DBSMALLINT len;\n- 271 unsigned char array[256];\n- 272} DBVARYBIN;\n- 273\n-274typedef struct\n- 275{\n- 276 unsigned char precision;\n- 277 unsigned char scale;\n- 278 unsigned char array[33];\n- 279} DBNUMERIC;\n- 280\n- 281typedef DBNUMERIC DBDECIMAL;\n- 282\n-283typedef struct\n- 284{\n- 285 DBINT mnyhigh;\n- 286 DBUINT mnylow;\n- 287} DBMONEY;\n- 288\n-289typedef struct\n- 290{\n- 291 DBINT mny4;\n- 292} DBMONEY4;\n- 293\n-294typedef struct\n- 295{\n- 296 DBINT dtdays;\n- 297 DBINT dttime;\n- 298} DBDATETIME;\n- 299\n-300typedef struct\n- 301{\n- 302 DBUSMALLINT days; /* days since Jan-1-1900 */\n- 303 DBUSMALLINT minutes; /* minutes since midnight */\n- 304} DBDATETIME4;\n- 305\n-306typedef struct\n- 307{\n-308 DBUBIGINT time;\n-309 DBINT date;\n-310 DBSMALLINT offset;\n- 311 DBUSMALLINT time_prec:3;\n- 312/* fix a problem with some public headers defining _res */\n- 313#undef _res\n- 314 DBUSMALLINT _res:10;\n- 315 DBUSMALLINT has_time:1;\n- 316 DBUSMALLINT has_date:1;\n- 317 DBUSMALLINT has_offset:1;\n- 318} DBDATETIMEALL;\n- 319\n- 320#ifdef MSDBLIB\n- 321# define SQLCHAR SYBCHAR\n- 322 typedef struct\n- 323 {\n- 324 DBUSMALLINT numdays;\n- 325 DBUSMALLINT nummins;\n- 326 } DBDATETIM4;\n- 327#endif\n- 328\n- 329typedef struct tds_dblib_loginrec LOGINREC;\n- 330\n- 331#ifndef DOS32X\n- 332typedef unsigned char BYTE;\n- 333#endif\n- 334\n-335typedef struct dbtypeinfo\n- 336{\n- 337 DBINT precision;\n- 338 DBINT scale;\n- 339} DBTYPEINFO;\n- 340\n-341struct dbstring\n- 342{\n- 343 BYTE *strtext;\n- 344 DBINT strtotlen;\n- 345 struct dbstring *strnext;\n- 346};\n- 347typedef struct dbstring DBSTRING;\n- 348\n- 349/* Used by dbcolinfo */\n- 350enum\n- 351{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */\n- 352typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;\n- 353\n-354typedef struct\n- 355{\n- 356 DBINT SizeOfStruct;\n- 357 DBCHAR Name[MAXCOLNAMELEN+2];\n- 358 DBCHAR ActualName[MAXCOLNAMELEN+2];\n- 359 DBCHAR TableName[MAXCOLNAMELEN+2];\n- 360 SHORT Type;\n- 361 DBINT UserType;\n- 362 DBINT MaxLength;\n- 363 BYTE Precision;\n- 364 BYTE Scale;\n- 365 BOOL VarLength;\n- 366 BYTE Null;\n- 367 BYTE CaseSensitive;\n- 368 BYTE Updatable;\n- 369 BOOL Identity;\n- 370\n- 371} DBCOL;\n- 372\n-373typedef struct\n- 374{\n- 375 DBINT SizeOfStruct;\n- 376 DBCHAR Name[MAXCOLNAMELEN+2];\n- 377 DBCHAR ActualName[MAXCOLNAMELEN+2];\n- 378 DBCHAR TableName[MAXCOLNAMELEN+2];\n- 379 SHORT Type;\n- 380 DBINT UserType;\n- 381 DBINT MaxLength;\n- 382 BYTE Precision;\n- 383 BYTE Scale;\n- 384 BOOL VarLength;\n- 385 BYTE Null;\n- 386 BYTE CaseSensitive;\n- 387 BYTE Updatable;\n- 388 BOOL Identity;\n- 389 SHORT ServerType;\n- 390 DBINT ServerMaxLength;\n- 391 DBCHAR ServerTypeDeclaration[256];\n- 392} DBCOL2;\n- 393/* end dbcolinfo stuff */\n- 394\n- 395\n- 396\n- 397/* a large list of options, DBTEXTSIZE is needed by sybtcl */\n- 398#define DBPARSEONLY 0\n- 399#define DBESTIMATE 1\n- 400#define DBSHOWPLAN 2\n- 401#define DBNOEXEC 3\n- 402#define DBARITHIGNORE 4\n- 403#define DBNOCOUNT 5\n- 404#define DBARITHABORT 6\n- 405#define DBTEXTLIMIT 7\n- 406#define DBBROWSE 8\n- 407#define DBOFFSET 9\n- 408#define DBSTAT 10\n- 409#define DBERRLVL 11\n- 410#define DBCONFIRM 12\n- 411#define DBSTORPROCID 13\n- 412#define DBBUFFER 14\n- 413#define DBNOAUTOFREE 15\n- 414#define DBROWCOUNT 16\n- 415#define DBTEXTSIZE 17\n- 416#define DBNATLANG 18\n- 417#define DBDATEFORMAT 19\n- 418#define DBPRPAD 20\n- 419#define DBPRCOLSEP 21\n- 420#define DBPRLINELEN 22\n- 421#define DBPRLINESEP 23\n- 422#define DBLFCONVERT 24\n- 423#define DBDATEFIRST 25\n- 424#define DBCHAINXACTS 26\n- 425#define DBFIPSFLAG 27\n- 426#define DBISOLATION 28\n- 427#define DBAUTH 29\n- 428#define DBIDENTITY 30\n- 429#define DBNOIDCOL 31\n- 430#define DBDATESHORT 32\n- 431#define DBCLIENTCURSORS 33\n- 432#define DBSETTIME 34\n- 433#define DBQUOTEDIDENT 35\n- 434\n- 435#define DBNUMOPTIONS 36\n- 436\n- 437#define DBPADOFF 0\n- 438#define DBPADON 1\n- 439\n- 440#define OFF 0\n- 441#define ON 1\n- 442\n- 443#define NOSUCHOPTION 2\n- 444\n- 445#define MAXOPTTEXT 32\n- 446\n- 447typedef struct tds_dblib_dbprocess DBPROCESS;\n- 448\n- 449/*\n- 450 * Sybase & Microsoft use different names for the dbdaterec members.\n- 451 * Keep these two structures physically identical in memory.\n- 452 * dbdatecrack() casts one to the other for ease of implementation.\n- 453 *\n- 454 * Giving credit where credit is due, we can acknowledge that\n- 455 * Microsoft chose the better names here, hands down. (\"datedmonth\"?!)\n- 456 */\n-457struct tds_microsoft_dbdaterec\n- 458{\n- 459 DBINT year; /* 1753 - 9999 */\n- 460 DBINT quarter; /* 1 - 4 */\n- 461 DBINT month; /* 1 - 12 */\n- 462 DBINT day; /* 1 - 31 */\n- 463 DBINT dayofyear; /* 1 - 366 */\n- 464 DBINT week; /* 1 - 54 (for leap years) */\n- 465 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */\n- 466 DBINT hour; /* 0 - 23 */\n- 467 DBINT minute; /* 0 - 59 */\n- 468 DBINT second; /* 0 - 59 */\n- 469 DBINT millisecond; /* 0 - 999 */\n- 470 DBINT tzone; /* -840 - 840 */\n- 471};\n- 472\n-473struct tds_sybase_dbdaterec\n- 474{\n- 475 DBINT dateyear; /* 1900 and counting */\n- 476 DBINT quarter; /* 0 - 3 (Microsoft only) */\n- 477 DBINT datemonth; /* 0 - 11 */\n- 478 DBINT datedmonth; /* 1 - 31 */\n- 479 DBINT datedyear; /* 1 - 366 */\n- 480 DBINT week; /* 1 - 54 (Microsoft only) */\n- 481 DBINT datedweek; /* 0 - 6 */\n- 482 DBINT datehour; /* 0 - 23 */\n- 483 DBINT dateminute; /* 0 - 59 */\n- 484 DBINT datesecond; /* 0 - 59 */\n- 485 DBINT datemsecond; /* 0 - 999 */\n- 486 DBINT datetzone; /* -840 - 840 */\n- 487};\n- 488\n-489struct tds_microsoft_dbdaterec2\n- 490{\n- 491 DBINT year; /* 1753 - 9999 */\n- 492 DBINT quarter; /* 1 - 4 */\n- 493 DBINT month; /* 1 - 12 */\n- 494 DBINT day; /* 1 - 31 */\n- 495 DBINT dayofyear; /* 1 - 366 */\n- 496 DBINT week; /* 1 - 54 (for leap years) */\n- 497 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */\n- 498 DBINT hour; /* 0 - 23 */\n- 499 DBINT minute; /* 0 - 59 */\n- 500 DBINT second; /* 0 - 59 */\n- 501 DBINT nanosecond; /* 0 - 999999999 */\n- 502 DBINT tzone; /* 0 - 127 (Sybase only) */\n- 503};\n- 504\n-505struct tds_sybase_dbdaterec2\n- 506{\n- 507 DBINT dateyear; /* 1900 and counting */\n- 508 DBINT quarter; /* 0 - 3 (Microsoft only) */\n- 509 DBINT datemonth; /* 0 - 11 */\n- 510 DBINT datedmonth; /* 1 - 31 */\n- 511 DBINT datedyear; /* 1 - 366 */\n- 512 DBINT week; /* 1 - 54 (Microsoft only) */\n- 513 DBINT datedweek; /* 0 - 6 */\n- 514 DBINT datehour; /* 0 - 23 */\n- 515 DBINT dateminute; /* 0 - 59 */\n- 516 DBINT datesecond; /* 0 - 59 */\n- 517 DBINT datensecond; /* 0 - 999999999 */\n- 518 DBINT datetzone; /* 0 - 127 */\n- 519};\n- 520\n- 521\n- 522#ifdef MSDBLIB\n- 523typedef struct tds_microsoft_dbdaterec DBDATEREC;\n- 524typedef struct tds_microsoft_dbdaterec2 DBDATEREC2;\n- 525#else\n- 526typedef struct tds_sybase_dbdaterec DBDATEREC;\n- 527typedef struct tds_sybase_dbdaterec2 DBDATEREC2;\n- 528#endif\n- 529\n- 530typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr,\n-int oserr, char *dberrstr, char *oserrstr);\n- 531\n- 532typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate,\n-int severity, char *msgtext, char *srvname,\n- 533 char *proc, int line);\n- 534\n- 535/* dbpoll() result codes, sybtcl needs DBRESULT */\n- 536#define DBRESULT 1\n- 537#define DBNOTIFICATION 2\n- 538#define DBTIMEOUT 3\n- 539#define DBINTERRUPT 4\n- 540\n- 541/* more sybtcl needs: */\n- 542#define DBTXTSLEN 8\n- 543\n- 544/* bind types */\n- 545#define CHARBIND 0\n- 546#define STRINGBIND 1\n- 547#define NTBSTRINGBIND 2\n- 548#define VARYCHARBIND 3\n- 549#define VARYBINBIND 4\n- 550#define TINYBIND 6\n- 551#define SMALLBIND 7\n- 552#define INTBIND 8\n- 553#define FLT8BIND 9\n- 554#define REALBIND 10\n- 555#define DATETIMEBIND 11\n- 556#define SMALLDATETIMEBIND 12\n- 557#define MONEYBIND 13\n- 558#define SMALLMONEYBIND 14\n- 559#define BINARYBIND 15\n- 560#define BITBIND 16\n- 561#define NUMERICBIND 17\n- 562#define DECIMALBIND 18\n- 563#define SRCNUMERICBIND 19\n- 564#define SRCDECIMALBIND 20\n- 565#define DATEBIND 21\n- 566#define TIMEBIND 22\n- 567#define BIGDATETIMEBIND 23\n- 568#define BIGTIMEBIND 24\n- 569#define BIGINTBIND 30\n- 570#define DATETIME2BIND 31\n- 571#define MAXBINDTYPES 32 /* keep last */\n- 572\n- 573#define DBPRCOLSEP 21\n- 574#define DBPRLINELEN 22\n- 575#define DBRPCNORETURN 0\n- 576#define DBRPCRETURN 1\n- 577#define DBRPCDEFAULT 2\n- 578\n- 579#define REG_ROW -1\n- 580#define MORE_ROWS -1\n- 581#define NO_MORE_ROWS -2\n- 582#define BUF_FULL -3\n- 583#define NO_MORE_RESULTS 2\n- 584#define SUCCEED 1\n- 585#define FAIL 0\n- 586\n- 587#define DB_IN 1\n- 588#define DB_OUT 2\n- 589#define DB_QUERYOUT 3\n- 590\n- 591#define DBSINGLE 0\n- 592#define DBDOUBLE 1\n- 593#define DBBOTH 2\n- 594\n- 595/* remote procedure call (rpc) options */\n- 596#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)\n- 597#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)\n- 598#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)\n- 599\n- 600#if defined(DBLIB_UNIMPLEMENTED)\n- 601DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);\n- 602\n- 603DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);\n- 604\n- 605RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table,\n-BYTE * values);\n- 606RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen,\n-DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);\n- 607void dbcursorclose(DBCURSOR * hc);\n- 608RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname,\n-DBINT * coltype, DBINT * collen, DBINT * usertype);\n- 609RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);\n- 610RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);\n- 611DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt,\n-SHORT concuropt, USHORT nrows, DBINT * pstatus);\n- 612\n- 613int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);\n- 614RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);\n- 615RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int\n-value);\n- 616int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME *\n-datetime);\n- 617char *dateorder(DBPROCESS * dbprocess, char *language);\n- 618DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME *\n-datetime);\n- 619RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);\n- 620char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);\n- 621\n- 622int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);\n- 623\n- 624char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);\n- 625void dbfreequal(char *qualptr);\n- 626\n- 627DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);\n- 628RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);\n- 629\n- 630RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char\n-*clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);\n- 631\n- 632RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n-DBMONEY4 * quotient);\n- 633RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n-DBMONEY4 * prod);\n- 634RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n-sum);\n- 635RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY\n-* quotient);\n- 636RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int\n-*remainder);\n- 637RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL *\n-negative);\n- 638RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value,\n-DBBOOL * zero);\n- 639RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n-prod);\n- 640RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value,\n-DBBOOL * zero);\n- 641RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int\n-addend);\n- 642\n- 643\n- 644RETCODE dbnpcreate(DBPROCESS * dbprocess);\n- 645RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name,\n-DBSMALLINT namelen);\n- 646\n- 647int DBNUMORDERS(DBPROCESS * dbprocess);\n- 648\n- 649RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS **\n-ready_dbproc, int *return_reason);\n- 650int dbordercol(DBPROCESS * dbprocess, int order);\n- 651\n- 652RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n-namelen);\n- 653RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);\n- 654RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n-namelen, INTFUNCPTR handler);\n- 655RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT\n-namelen);\n- 656RETCODE dbreglist(DBPROCESS * dbproc);\n- 657RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n-namelen);\n- 658RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT\n-datalen, BYTE * data);\n- 659RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n-namelen, DBUSMALLINT options);\n- 660RETCODE dbregwatchlist(DBPROCESS * dbprocess);\n- 661\n- 662void dbrpwclr(LOGINREC * login);\n- 663RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int\n-pwlen);\n- 664\n- 665DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE\n-* buf);\n- 666RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno,\n-DBINT size, BYTE * buf);\n- 667\n- 668RETCODE dbsetdeflang(char *language);\n- 669\n- 670int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2,\n-DBSORTORDER * sort);\n- 671int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2,\n-DBSORTORDER * sort);\n- 672\n- 673DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);\n- 674int dbtabcount(DBPROCESS * dbprocess);\n- 675char *dbtabname(DBPROCESS * dbprocess, int tabnum);\n- 676char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);\n- 677\n- 678RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);\n- 679RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);\n- 680\n- 681RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);\n- 682RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);\n- 683\n- 684int dbtsnewlen(DBPROCESS * dbprocess);\n- 685DBBINARY *dbtsnewval(DBPROCESS * dbprocess);\n- 686RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int\n-tabnum, char *tabname);\n- 687\n- 688RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE *\n-clt_todisp);\n- 689int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int\n-destlen, DBXLATE * xlt, int *srcbytes_used,\n- 690 DBBOOL srcend, int status);\n- 691\n- 692RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);\n- 693RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);\n- 694\n- 695void build_xact_string(char *xact_name, char *service_name, DBINT commid,\n-char *result);\n- 696RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);\n- 697RETCODE abort_xact(DBPROCESS * connect, DBINT commid);\n- 698void close_commit(DBPROCESS * connect);\n- 699RETCODE commit_xact(DBPROCESS * connect, DBINT commid);\n- 700DBPROCESS *open_commit(LOGINREC * login, char *servername);\n- 701RETCODE scan_xact(DBPROCESS * connect, DBINT commid);\n- 702DBINT start_xact(DBPROCESS * connect, char *application_name, char\n-*xact_name, int site_count);\n- 703DBINT stat_xact(DBPROCESS * connect, DBINT commid);\n- 704\n- 705#endif /* define unimplemented */\n- 706\n- 707BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);\n- 708DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);\n- 709RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int\n-vartype, DBINT varlen, BYTE * varaddr);\n- 710RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int\n-vartype, DBINT varlen, BYTE * varaddr,\n- 711 DBTYPEINFO * typeinfo);\n- 712int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);\n- 713DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);\n- 714int dbaltop(DBPROCESS * dbproc, int computeid, int column);\n- 715int dbalttype(DBPROCESS * dbproc, int computeid, int column);\n- 716DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);\n- 717RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT\n-* indicator);\n- 718RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen,\n-BYTE * varaddr);\n- 719RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT\n-varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);\n- 720int dbbufsize(DBPROCESS * dbprocess);\n- 721BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);\n- 722RETCODE dbcancel(DBPROCESS * dbproc);\n- 723RETCODE dbcanquery(DBPROCESS * dbproc);\n- 724char *dbchange(DBPROCESS * dbprocess);\n- 725DBBOOL dbcharsetconv(DBPROCESS * dbprocess);\n- 726void dbclose(DBPROCESS * dbproc);\n- 727void dbclrbuf(DBPROCESS * dbproc, DBINT n);\n- 728RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);\n- 729RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);\n- 730RETCODE dbcmdrow(DBPROCESS * dbproc);\n- 731\n- 732#define DBCMDROW(x) dbcmdrow((x))\n- 733RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );\n- 734RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT\n-computeid, DBCOL *pdbcol);\n- 735DBINT dbcollen(DBPROCESS * dbproc, int column);\n- 736char *dbcolname(DBPROCESS * dbproc, int column);\n- 737const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);\n- 738char *dbcolsource(DBPROCESS * dbproc, int colnum);\n- 739int dbcoltype(DBPROCESS * dbproc, int column);\n- 740DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);\n- 741DBINT dbcolutype(DBPROCESS * dbprocess, int column);\n- 742DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT\n-srclen, int desttype, BYTE * dest, DBINT destlen);\n- 743DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src,\n-DBINT srclen, int desttype, BYTE * dest, DBINT destlen,\n- 744 DBTYPEINFO * typeinfo);\n- 745BOOL dbiscount(DBPROCESS * dbproc);\n- 746DBINT dbcount(DBPROCESS * dbproc);\n- 747\n- 748#define DBCOUNT(x) dbcount((x))\n- 749int dbcurcmd(DBPROCESS * dbproc);\n- 750\n- 751#define DBCURCMD(x) dbcurcmd((x))\n- 752DBINT dbcurrow(DBPROCESS * dbproc);\n- 753\n- 754#define DBCURROW(x) dbcurrow((x))\n- 755BYTE *dbdata(DBPROCESS * dbproc, int column);\n- 756int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);\n- 757RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);\n- 758RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const\n-void *data);\n- 759DBINT dbdatlen(DBPROCESS * dbproc, int column);\n- 760DBBOOL dbdead(DBPROCESS * dbproc);\n- 761\n- 762#define DBDEAD(x) dbdead((x))\n- 763EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);\n- 764void dbexit(void);\n- 765RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);\n- 766DBINT dbfirstrow(DBPROCESS * dbproc);\n- 767\n- 768#define DBFIRSTROW(x) dbfirstrow((x))\n- 769void dbfreebuf(DBPROCESS * dbproc);\n- 770char *dbgetchar(DBPROCESS * dbprocess, int n);\n- 771char *dbgetcharset(DBPROCESS * dbprocess);\n- 772int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);\n- 773int dbgetmaxprocs(void);\n- 774char *dbgetnatlanf(DBPROCESS * dbprocess);\n- 775int dbgetpacket(DBPROCESS * dbproc);\n- 776RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);\n- 777int dbgettime(void);\n- 778#define DBGETTIME dbgettime\n- 779BYTE *dbgetuserdata(DBPROCESS * dbproc);\n- 780DBBOOL dbhasretstat(DBPROCESS * dbproc);\n- 781RETCODE dbinit(void);\n- 782int dbiordesc(DBPROCESS * dbproc);\n- 783\n- 784#define DBIORDESC(x) dbiordesc((x))\n- 785int dbiowdesc(DBPROCESS * dbproc);\n- 786\n- 787#define DBIOWDESC(x) dbiowdesc((x))\n- 788DBBOOL dbisavail(DBPROCESS * dbprocess);\n- 789\n- 790#define DBISAVAIL(x) dbisavail((x))\n- 791DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);\n- 792DBINT dblastrow(DBPROCESS * dbproc);\n- 793\n- 794#define DBLASTROW(x) dblastrow((x))\n- 795LOGINREC *dblogin(void);\n- 796void dbloginfree(LOGINREC * login);\n- 797\n- 798int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);\n- 799int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);\n- 800\n- 801RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n-DBMONEY4 * sum);\n- 802RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);\n- 803RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);\n- 804RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);\n- 805RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);\n- 806RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);\n- 807RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);\n- 808RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n-DBMONEY4 * diff);\n- 809RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n-diff);\n- 810\n- 811RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);\n- 812RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);\n- 813\n- 814RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);\n- 815RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);\n- 816\n- 817const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum,\n-DBBOOL shortform);\n- 818RETCODE dbmorecmds(DBPROCESS * dbproc);\n- 819\n- 820#define DBMORECMDS(x) dbmorecmds((x))\n- 821RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);\n- 822MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);\n- 823char *dbname(DBPROCESS * dbproc);\n- 824STATUS dbnextrow(DBPROCESS * dbproc);\n- 825RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);\n- 826int dbnumalts(DBPROCESS * dbproc, int computeid);\n- 827int dbnumcols(DBPROCESS * dbproc);\n- 828int dbnumcompute(DBPROCESS * dbprocess);\n- 829int dbnumrets(DBPROCESS * dbproc);\n- 830DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);\n- 831DBPROCESS *dbopen(LOGINREC * login, const char *server);\n- 832\n- 833/* pivot functions */\n- 834struct col_t;\n- 835void dbpivot_count (struct col_t *output, const struct col_t *input);\n- 836void dbpivot_sum (struct col_t *output, const struct col_t *input);\n- 837void dbpivot_min (struct col_t *output, const struct col_t *input);\n- 838void dbpivot_max (struct col_t *output, const struct col_t *input);\n- 839\n- 840struct pivot_t;\n- 841typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t\n-*input);\n- 842struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);\n- 843STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);\n- 844RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int\n-*cols, DBPIVOT_FUNC func, int val);\n- 845\n- 846DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );\n- 847\n- 848#ifdef MSDBLIB\n- 849#define dbopen(x,y) tdsdbopen((x),(y), 1)\n- 850#else\n- 851#define dbopen(x,y) tdsdbopen((x),(y), 0)\n- 852#endif\n- 853\n- 854/* fix PHP problem */\n- 855#ifdef PHP_SYBASE_DBOPEN\n- 856#undef PHP_SYBASE_DBOPEN\n- 857#define PHP_SYBASE_DBOPEN dbopen\n- 858#endif\n- 859\n- 860void dbprhead(DBPROCESS * dbproc);\n- 861DBINT dbprcollen(DBPROCESS * dbproc, int column);\n- 862RETCODE dbprrow(DBPROCESS * dbproc);\n- 863const char *dbprtype(int token);\n- 864DBBOOL DRBUF(DBPROCESS * dbprocess);\n- 865STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);\n- 866void dbrecftos(const char filename[]);\n- 867RETCODE dbresults(DBPROCESS * dbproc);\n- 868RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);\n- 869BYTE *dbretdata(DBPROCESS * dbproc, int retnum);\n- 870int dbretlen(DBPROCESS * dbproc, int retnum);\n- 871char *dbretname(DBPROCESS * dbproc, int retnum);\n- 872DBINT dbretstatus(DBPROCESS * dbproc);\n- 873int dbrettype(DBPROCESS * dbproc, int retnum);\n- 874RETCODE dbrows(DBPROCESS * dbproc);\n- 875\n- 876#define DBROWS(x) dbrows((x))\n- 877STATUS dbrowtype(DBPROCESS * dbprocess);\n- 878\n- 879#define DBROWTYPE(x) dbrowtype((x))\n- 880RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT\n-options);\n- 881RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status,\n-int type, DBINT maxlen, DBINT datalen, BYTE * value);\n- 882RETCODE dbrpcsend(DBPROCESS * dbproc);\n- 883RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char\n-*dest, DBINT destlen, int quotetype);\n- 884RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);\n- 885char *dbservcharset(DBPROCESS * dbprocess);\n- 886void dbsetavail(DBPROCESS * dbprocess);\n- 887void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);\n- 888RETCODE dbsetdefcharset(char *charset);\n- 889void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);\n- 890void dbsetifile(char *filename);\n- 891void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr,\n-DB_DBHNDLINTR_FUNC hndlintr);\n- 892RETCODE dbsetlogintime(int seconds);\n- 893RETCODE dbsetmaxprocs(int maxprocs);\n- 894RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE *\n-bindval);\n- 895RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param,\n-int int_param);\n- 896STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);\n- 897RETCODE dbsettime(int seconds);\n- 898void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);\n- 899RETCODE dbsetversion(DBINT version);\n- 900\n- 901int dbspid(DBPROCESS * dbproc);\n- 902RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);\n- 903DBINT dbspr1rowlen(DBPROCESS * dbproc);\n- 904RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);\n- 905RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR\n-line_char);\n- 906RETCODE dbsqlexec(DBPROCESS * dbproc);\n- 907RETCODE dbsqlok(DBPROCESS * dbproc);\n- 908RETCODE dbsqlsend(DBPROCESS * dbproc);\n- 909int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text,\n-char *formats, ...);\n- 910RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);\n- 911int dbstrlen(DBPROCESS * dbproc);\n- 912DBINT dbvarylen(DBPROCESS * dbproc, int column);\n- 913\n- 914#define SYBEVERDOWN 100 /* TDS version downgraded . */\n- 915#define SYBEICONVIU 2400 /* Some character(s) could not be converted into\n-client's character set. */\n- 916#define SYBEICONVAVAIL 2401 /* Character set conversion is not available\n-between client character set '%.*s' and server character set '%.*s'.*/\n- 917#define SYBEICONVO 2402 /* Error converting characters into server's\n-character set. Some character(s) could not be converted.*/\n- 918#define SYBEICONVI 2403 /* Some character(s) could not be converted into\n-client's character set. Unconverted bytes were changed to question marks\n-('?').*/\n- 919#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from\n-client into server's character set.*/\n- 920 /* cf. doc/dblib_errors.txt for more iconv error values. */\n- 921 /* Reserve a few slots for other iconv-related issues. */\n- 922#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */\n- 923#define SYBEPORT 2500 /* Both port and instance specified */\n- 924#define SYBESYNC 20001 /* Read attempted while out of synchronization with\n-SQL Server. */\n- 925#define SYBEFCON 20002 /* SQL Server connection failed. */\n- 926#define SYBETIME 20003 /* SQL Server connection timed out. */\n- 927#define SYBEREAD 20004 /* Read from SQL Server failed. */\n- 928#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length\n-corrupted. */\n- 929#define SYBEWRIT 20006 /* Write to SQL Server failed. */\n- 930#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */\n- 931#define SYBESOCK 20008 /* Unable to open socket */\n- 932#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is\n-unavailable or does not exist. */\n- 933#define SYBEMEM 20010 /* Unable to allocate sufficient memory */\n- 934#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated.\n-*/\n- 935#define SYBEINTF 20012 /* Server name not found in interface file */\n- 936#define SYBEUHST 20013 /* Unknown host machine name */\n- 937#define SYBEPWD 20014 /* Incorrect password. */\n- 938#define SYBEOPIN 20015 /* Could not open interface file. */\n- 939#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */\n- 940#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */\n- 941#define SYBESMSG 20018 /* General SQL Server error: Check messages from the\n-SQL Server. */\n- 942#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation\n-with results pending. */\n- 943#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing\n-out of sync. */\n- 944#define SYBEITIM 20021 /* Illegal timeout value specified. */\n- 945#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server.\n-*/\n- 946#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function.\n-*/\n- 947#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent\n-compute row. */\n- 948#define SYBEIICL 20025 /* Illegal integer column length returned by SQL\n-Server. Legal integer lengths are 1, 2, and 4 bytes. */\n- 949#define SYBECNOR 20026 /* Column number out of range. */\n- 950#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */\n- 951#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */\n- 952#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */\n- 953#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following\n-ALTNAME has wrong id. */\n- 954#define SYBECDNS 20031 /* Datastream indicates that a compute column is\n-derived from a non-existent select-list member. */\n- 955#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */\n- 956#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column\n-and variable types. */\n- 957#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */\n- 958#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched\n-column and variable types. */\n- 959#define SYBENXID 20036 /* The Server did not grant us a distributed-\n-transaction ID. */\n- 960#define SYBERXID 20037 /* The Server did not recognize our distributed-\n-transaction ID. */\n- 961#define SYBEICN 20038 /* Invalid computeid or compute column number. */\n- 962#define SYBENMOB 20039 /* No such member of 'order by' clause. */\n- 963#define SYBEAPUT 20040 /* Attempt to print unknown token. */\n- 964#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */\n- 965#define SYBENTLL 20042 /* Name too long for loginrec field. */\n- 966#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */\n- 967#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row.\n-*/\n- 968#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */\n- 969#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */\n- 970#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */\n- 971#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */\n- 972#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */\n- 973#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error\n-in source field. */\n- 974#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */\n- 975#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in\n-overflow. */\n- 976#define SYBERDCN 20053 /* Requested data-conversion does not exist. */\n- 977#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */\n- 978#define SYBEUNT 20055 /* Unknown network type found in interface file. */\n- 979#define SYBECLOS 20056 /* Error in closing network connection. */\n- 980#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */\n- 981#define SYBEUSCT 20058 /* Unable to set communications timer. */\n- 982#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */\n- 983#define SYBEUDTY 20060 /* Unknown datatype encountered. */\n- 984#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid\n-timestamp. */\n- 985#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which\n-has no timestamp column. */\n- 986#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or\n-OUT. */\n- 987#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent\n-Server table. */\n- 988#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */\n- 989#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to\n-a host-file is shorter than the number of rows which bulk-copy was instructed\n-to skip. */\n- 990#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file.\n-*/\n- 991#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */\n- 992#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */\n- 993#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */\n- 994#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in\n-table names. */\n- 995#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */\n- 996#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server\n-column %d, which does not accept NULL values. */\n- 997#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL\n-Server. */\n- 998#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column\n-value to the SQL Server. */\n- 999#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp\n-routines. */\n- 1000#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(),\n-bcp_moretext() and bcp_sendrow() may be used only after bcp_init() has been\n-called with the copy direction set to DB_IN. */\n- 1001#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may\n-NOT be used after bcp_init() has been passed a non-NULL input file name. */\n- 1002#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must\n-have either a length-prefix or a terminator specified. */\n- 1003#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps()\n-may be used only after bcp_init() has been passed a valid input file. */\n- 1004#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt()\n-and bcp_colfmt_ps(). */\n- 1005#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column.\n-*/\n- 1006#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init()\n-has been passed a valid host file. */\n- 1007#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */\n- 1008#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */\n- 1009#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */\n- 1010#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */\n- 1011#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */\n- 1012#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */\n- 1013#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */\n- 1014#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the\n-SQL Server. */\n- 1015#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the\n-dbmoretext() call. */\n- 1016#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-\n-timestamp into a non-existent data row. */\n- 1017#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-\n-timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */\n- 1018#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the\n-bcp_moretext() call. */\n- 1019#define SYBEORPF 20096 /* Attempt to set remote password would overflow\n-the login-record's remote-password field. */\n- 1020#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP\n-format-file. */\n- 1021#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */\n- 1022#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */\n- 1023#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */\n- 1024#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */\n- 1025#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file.\n-*/\n- 1026#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp\n-format-file. */\n- 1027#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */\n- 1028#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file.\n-*/\n- 1029#define SYBEBCSI 20106 /* Host-file columns may be skipped only when\n-copying INto the Server. */\n- 1030#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program\n-variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */\n- 1031#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows.\n-Skipping all of these rows is not allowed. */\n- 1032#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */\n- 1033#define SYBEUNAM 20110 /* Unable to get current username from operating\n-system. */\n- 1034#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It\n-was impossible to read the requested %ld rows. */\n- 1035#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes\n-lower than 1. */\n- 1036#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the\n-datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or\n-SYBVARBINARY. */\n- 1037#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN,\n-or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the\n-parameter's maximum or actual length, so that DB-Library can recognize it as a\n-SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */\n- 1038#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */\n- 1039#define SYBECRNC 20116 /* The current row is not a result of compute\n-clause %d, so it is illegal to attempt to extract that data from this row. */\n- 1040#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the\n-results of a query which contains a COMPUTE clause. */\n- 1041#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the\n-results of a query which contains a single result column. */\n- 1042#define SYBEUCRR 20119 /* Internal software error: Unknown connection\n-result reported by * dbpasswd(). */\n- 1043#define SYBERPNA 20120 /* The RPC facility is available only when using a\n-SQL Server whose version number is 4.0 or greater. */\n- 1044#define SYBEOPNA 20121 /* The text/image facility is available only when\n-using a SQL Server whose version number is 4.0 or greater. */\n- 1045#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied\n-cannot be greater than the row number for the last row to be copied. */\n- 1046#define SYBECWLL 20123 /* Attempt to set column width less than 1. */\n- 1047#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild().\n-*/\n- 1048#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type\n-encountered in dbstrbuild(). */\n- 1049#define SYBETMCF 20126 /* Attempt to install too many custom formats via\n-dbfmtinstall(). */\n- 1050#define SYBEAICF 20127 /* Error in attempting to install custom format. */\n- 1051#define SYBEADST 20128 /* Error in attempting to determine the size of a\n-pair of translation tables. */\n- 1052#define SYBEALTT 20129 /* Error in attempting to load a pair of\n-translation tables. */\n- 1053#define SYBEAPCT 20130 /* Error in attempting to perform a character-set\n-translation. */\n- 1054#define SYBEXOCI 20131 /* A character-set translation overflowed its\n-destination buffer while using bcp to copy data from a host-file to the SQL\n-Server. */\n- 1055#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home\n-directory. */\n- 1056#define SYBEAOLF 20133 /* Error in attempting to open a localization file.\n-*/\n- 1057#define SYBEARDI 20134 /* Error in attempting to read datetime information\n-from a localization file. */\n- 1058#define SYBEURCI 20135 /* Unable to read copyright information from the\n-dblib localization file. */\n- 1059#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc\n-localization file. */\n- 1060#define SYBEURMI 20137 /* Unable to read money-format information from the\n-dblib localization file. */\n- 1061#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib\n-localization file. */\n- 1062#define SYBEURES 20139 /* Unable to read error string from the dblib\n-localization file. */\n- 1063#define SYBEUREI 20140 /* Unable to read error information from the dblib\n-localization file. */\n- 1064#define SYBEOREN 20141 /* Warning: an out-of-range error-number was\n-encountered in dblib.loc. The maximum permissible error-number is defined as\n-DBERRCOUNT in sybdb.h. */\n- 1065#define SYBEISOI 20142 /* Invalid sort-order information found. */\n- 1066#define SYBEIDCL 20143 /* Illegal datetime column length returned by\n-DataServer. Legal datetime lengths are 4 and 8 bytes. */\n- 1067#define SYBEIMCL 20144 /* Illegal money column length returned by\n-DataServer. Legal money lengths are 4 and 8 bytes. */\n- 1068#define SYBEIFCL 20145 /* Illegal floating-point column length returned by\n-DataServer. Legal floating-point lengths are 4 and 8 bytes. */\n- 1069#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL\n-Server. */\n- 1070#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */\n- 1071#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination\n-variable. */\n- 1072#define SYBEDPOR 20149 /* Out-of-range datepart constant. */\n- 1073#define SYBENDC 20150 /* Cannot have negative component in date in numeric\n-form. */\n- 1074#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */\n- 1075#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */\n- 1076#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer.\n-*/\n- 1077#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */\n- 1078#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime\n-parameter. */\n- 1079#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to\n-dbfree_xlate() were NULL. */\n- 1080#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to\n-dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has\n-been freed. */\n- 1081#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate\n-() was NULL. The space associated with the xlt_todisp parameter has been freed.\n-*/\n- 1082#define SYBENUM 20159 /* Incorrect number of arguments given to DB-\n-Library. */\n- 1083#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */\n- 1084#define SYBEGENOS 20161 /* General Operating System Error. */\n- 1085#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage()\n-operation. */\n- 1086#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */\n- 1087#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or\n-IMAGE data via dbmoretext(). */\n- 1088#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */\n- 1089#define SYBERFILE 20166 /* \"Can not open resource file.\" */\n- 1090#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */\n- 1091#define SYBESLCT 20168 /* Could not select or copy field specified */\n- 1092#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to\n-dataserver via dbwritetext(). */\n- 1093#define SYBENTST 20170 /* The file being opened must be a stream_lf. */\n- 1094#define SYBEOSSL 20171 /* Operating system login level not in range of\n-Secure SQL Server */\n- 1095#define SYBEESSL 20172 /* Login security level entered does not agree with\n-operating system level */\n- 1096#define SYBENLNL 20173 /* Program not linked with specified network\n-library. */\n- 1097#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler\n-parameter. */\n- 1098#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer.\n-*/\n- 1099#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */\n- 1100#define SYBENOTI 20177 /* No event handler installed. */\n- 1101#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options\n-parameter. */\n- 1102#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler\n-parameter. */\n- 1103#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction.\n-*/\n- 1104#define SYBEEVST 20181 /* Must initiate a transaction before calling\n-dbregparam(). */\n- 1105#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */\n- 1106#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */\n- 1107#define SYBEECAN 20184 /* Attempted to cancel unrequested event\n-notification. */\n- 1108#define SYBEEUNR 20185 /* Unsolicited event notification received. */\n- 1109#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */\n- 1110#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined.\n-*/\n- 1111#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter.\n-*/\n- 1112#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not\n-on. */\n- 1113#define SYBETRAS 20190 /* DB-Library internal error - trace structure not\n-found. */\n- 1114#define SYBEPRTF 20191 /* dbtracestring() may only be called from a\n-printfunc(). */\n- 1115#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring\n-(). */\n- 1116#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter\n-must be between 0 and 999999. */\n- 1117#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of\n-%3!. */\n- 1118#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function\n-%1!. */\n- 1119#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */\n- 1120#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */\n- 1121#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are\n-present. */\n- 1122#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */\n- 1123#define SYBENOEV 20200 /* dbpoll() cannot be called if registered\n-procedure notifications have been disabled. */\n- 1124#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of\n-%2! used instead. */\n- 1125#define SYBESECURE 20202 /* Secure Server function not supported in this\n-version. */\n- 1126#define SYBECAP 20203 /* DB-Library capabilities not accepted by the\n-Server. */\n- 1127#define SYBEFUNC 20204 /* Functionality not supported at the specified\n-version level. */\n- 1128#define SYBERESP 20205 /* Response function address passed to dbresponse()\n-must be non-NULL. */\n- 1129#define SYBEIVERS 20206 /* Illegal version level specified. */\n- 1130#define SYBEONCE 20207 /* Function can be called only once. */\n- 1131#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL,\n-only if the datalen parameter is 0 */\n- 1132#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image.\n-*/\n- 1133#define SYBENEG 20210 /* Negotiated login attempt failed. */\n- 1134#define SYBELBLEN 20211 /* Security labels should be less than 256\n-characters long. */\n- 1135#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */\n- 1136#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY\n-datastream. */\n- 1137#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */\n- 1138#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */\n- 1139#define SYBEBPREC 20216 /* Illegal precision specified */\n- 1140#define SYBEBSCALE 20217 /* Illegal scale specified */\n- 1141#define SYBECDOMAIN 20218 /* Source field value is not within the domain\n-of legal values. */\n- 1142#define SYBECINTERNAL 20219 /* Internal Conversion error. */\n- 1143#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */\n- 1144#define SYBEBCSET 20221 /* Unknown character-set encountered.\" */\n- 1145#define SYBEFENC 20222 /* Password Encryption failed.\" */\n- 1146#define SYBEFRES 20223 /* Challenge-Response function failed.\", */\n- 1147#define SYBEISRVPREC 20224 /* Illegal precision value returned by the\n-server. */\n- 1148#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server.\n-*/\n- 1149#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the\n-server. */\n- 1150#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the\n-server. */\n- 1151#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is\n-at least one text or image column in the server table. */\n- 1152#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value\n-encountered. */\n- 1153#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must\n-be 0 and no terminator should be specified. */\n- 1154#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen\n-greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the\n-program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */\n- 1155#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and\n-varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and\n-the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */\n- 1156#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type\n-cannot be 0. */\n- 1157#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1.\n-*/\n- 1158#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to\n--1. */\n- 1159#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1,\n-2 or 4. */\n- 1160#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0,\n-1, 2 or 4. */\n- 1161#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL.\n-*/\n- 1162#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long.\n-*/\n- 1163#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all\n-text data for the previous row has been sent using bcp_moretext(). */\n- 1164#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count\n-differs from the actual number of columns received. */\n- 1165#define SYBEBPRODEF 20242 /* bcp protocol error: expected default\n-information and got none. */\n- 1166#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of\n-defaults differs from the actual number of defaults received. */\n- 1167#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and\n-actual column id are not same */\n- 1168#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received\n-for column that does not have default. */\n- 1169#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype\n-differs from column datatype. */\n- 1170#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of\n-default information received. */\n- 1171#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of\n-results received. */\n- 1172#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column\n-id received. */\n- 1173#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column\n-datatype. */\n- 1174#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype\n-length received. */\n- 1175#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision\n-value received. */\n- 1176#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value\n-received. */\n- 1177#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to\n-%1!. */\n- 1178#define SYBECRSNORES 20255 /* Cursor statement generated no results. */\n- 1179#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor\n-statement does not have a unique index. */\n- 1180#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or\n-a view in a cursor statement. */\n- 1181#define SYBECRSVIIND 20258 /* The view used in the cursor statement does\n-not include all the unique index columns of the underlying tables. */\n- 1182#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have\n-'order by', ' group by', or 'having' phrases. */\n- 1183#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when\n-using cursor APIs. */\n- 1184#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be\n-turned on when using cursor APIs. */\n- 1185#define SYBECRSDIS 20262 /* Cursor statement contains one of the\n-disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */\n- 1186#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a\n-cursor statement. */\n- 1187#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be\n-used within the keyset of keyset driven cursors. */\n- 1188#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven\n-cursors. */\n- 1189#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a\n-forward scrolling cursor. */\n- 1190#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid\n-range. */\n- 1191#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed\n-cursors with a previous fetch type. */\n- 1192#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in\n-a READONLY cursor. */\n- 1193#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned\n-on when doing updates or deletes with dbcursor(). */\n- 1194#define SYBECRSTAB 20271 /* Table name must be determined in operations\n-involving data locking or modifications. */\n- 1195#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind\n-variables when binding type is NOBIND. */\n- 1196#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor\n-update or insert. */\n- 1197#define SYBECRSSET 20274 /* A SET clause is required for a cursor update\n-or insert. */\n- 1198#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind\n-variables require single table cursors. */\n- 1199#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect\n-any rows. */\n- 1200#define SYBECRSINV 20277 /* Invalid cursor statement. */\n- 1201#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for\n-KEYSET cursors. */\n- 1202#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to\n-updating cursor */\n- 1203#define SYBECRSFTYPE 20280 /* Unknown fetch type. */\n- 1204#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */\n- 1205#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is\n-expected. */\n- 1206#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected.\n-*/\n- 1207#define SYBECRSNOLEN 20284 /* No unique index found. */\n- 1208#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */\n- 1209#define SYBECRSNORDER 20286 /* The order of clauses must be from, where,\n-and order by. */\n- 1210#define SYBECRSNOTABLE 20287 /* Table name is NULL. */\n- 1211#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view.\n-*/\n- 1212#define SYBECRSVAR 20289 /* There is no valid address associated with this\n-bind. */\n- 1213#define SYBENOVALUE 20290 /* Security labels require both a name and a\n-value */\n- 1214#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return\n-parameter. */\n- 1215#define SYBECLOSEIN 20292 /* Unable to close interface file. */\n- 1216#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */\n- 1217#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy\n-operation is progress. */\n- 1218#define SYBEERRLABEL 20295 /* An illegal value was returned from the\n-security label handler. */\n- 1219#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge\n-attention.\" */\n- 1220#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */\n- 1221#define SYBEDCL 20298 /* -004- DCL Error */\n- 1222#define SYBECS 20299 /* -004- cs context Error */\n- 1223#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */\n- 1224#define SYBECOLSIZE 22000 /* Invalid column information structure size */\n- 1225\n- 1226int dbtds(DBPROCESS * dbprocess);\n- 1227\n- 1228#define DBTDS(a) dbtds(a)\n- 1229DBINT dbtextsize(DBPROCESS * dbprocess);\n- 1230DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);\n- 1231DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);\n- 1232DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);\n- 1233RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);\n- 1234RETCODE dbuse(DBPROCESS * dbproc, const char *name);\n- 1235const char *dbversion(void);\n- 1236DBBOOL dbwillconvert(int srctype, int desttype);\n- 1237RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr,\n-DBTINYINT textptrlen, DBBINARY * timestamp,\n- 1238 DBBOOL log, DBINT size, BYTE * text);\n- 1239\n- 1240/* LOGINREC manipulation */\n- 1241RETCODE dbsetlname(LOGINREC * login, const char *value, int which);\n- 1242RETCODE dbsetlbool(LOGINREC * login, int value, int which);\n- 1243RETCODE dbsetlshort(LOGINREC * login, int value, int which);\n- 1244RETCODE dbsetllong(LOGINREC * login, long value, int which);\n- 1245RETCODE dbsetlversion (LOGINREC * login, BYTE version);\n- 1246\n- 1247#define DBSETHOST 1\n- 1248#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)\n- 1249#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)\n- 1250#define DBSETUSER 2\n- 1251#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)\n- 1252#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)\n- 1253#define DBSETPWD 3\n- 1254#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)\n- 1255#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)\n- 1256#if defined(DBLIB_UNIMPLEMENTED)\n- 1257# define DBSETHID 4 /* not implemented */\n- 1258# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)\n- 1259#endif\n- 1260#define DBSETAPP 5\n- 1261#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)\n- 1262#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)\n- 1263#define DBSETBCP 6\n- 1264#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)\n- 1265#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)\n- 1266#define DBSETNATLANG 7\n- 1267#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)\n- 1268#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)\n- 1269#if defined(DBLIB_UNIMPLEMENTED)\n- 1270# define DBSETNOSHORT 8 /* not implemented */\n- 1271# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)\n- 1272# define DBSETHIER 9 /* not implemented */\n- 1273# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)\n- 1274#endif\n- 1275#define DBSETCHARSET 10\n- 1276#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)\n- 1277#define DBSETPACKET 11\n- 1278#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)\n- 1279#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)\n- 1280#define DBSETENCRYPT 12\n- 1281#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)\n- 1282#define DBSETLABELED 13\n- 1283#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)\n- 1284#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)\n- 1285#define DBSETDBNAME 14\n- 1286#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)\n- 1287#define DBSETLVERSION(login, version) dbsetlversion((login), (version))\n- 1288#define DBSETNETWORKAUTH 101\n- 1289#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)\n- 1290#define DBSETMUTUALAUTH 102\n- 1291#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)\n- 1292#define DBSETSERVERPRINCIPAL 103\n- 1293#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y),\n-DBSETSERVERPRINCIPAL)\n- 1294/* settings from here are purely FreeTDS extensions */\n- 1295#define DBSETUTF16 1001\n- 1296#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)\n- 1297#define DBSETNTLMV2 1002\n- 1298#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)\n- 1299#define DBSETREADONLY 1003\n- 1300#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)\n- 1301#define DBSETDELEGATION 1004\n- 1302#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)\n- 1303\n- 1304RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char\n-*hfile, const char *errfile, int direction);\n- 1305DBINT bcp_done(DBPROCESS * dbproc);\n- 1306\n- 1307DBINT bcp_batch(DBPROCESS * dbproc);\n- 1308RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT\n-varlen, BYTE * terminator, int termlen, int type,\n- 1309 int table_column);\n- 1310RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);\n- 1311RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);\n- 1312RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int\n-host_prefixlen, DBINT host_collen,\n- 1313 const BYTE * host_term, int host_termlen, int colnum);\n- 1314RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type,\n-int host_prefixlen, DBINT host_collen,\n- 1315 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);\n- 1316RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);\n- 1317RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);\n- 1318int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */\n- 1319RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);\n- 1320DBBOOL bcp_getl(LOGINREC * login);\n- 1321RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int\n-valuelen);\n- 1322RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);\n- 1323RETCODE bcp_sendrow(DBPROCESS * dbproc);\n- 1324\n- 1325#ifdef __cplusplus\n- 1326#if 0\n- 1327{\n- 1328#endif\n- 1329}\n- 1330#endif\n- 1331\n- 1332#endif\n-dbcolinfo\n-RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT\n-computeid, DBCOL *pdbcol)\n-Get a bunch of column attributes with a single call (Microsoft-compatibility\n-feature).\n-Definition dblib.c:3045\n-dbpivot\n-RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols,\n-DBPIVOT_FUNC func, int val)\n-Pivot the rows, creating a new resultset.\n-Definition dbpivot.c:914\n-dbclrbuf\n-void dbclrbuf(DBPROCESS *dbproc, DBINT n)\n-Clear n rows from the row buffer.\n-Definition dblib.c:2844\n-dbcoltypeinfo\n-DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)\n-Get precision and scale information for a regular result column.\n-Definition dblib.c:3016\n-dblogin\n-LOGINREC * dblogin(void)\n-Allocate a LOGINREC structure.\n-Definition dblib.c:705\n-dbfreebuf\n-void dbfreebuf(DBPROCESS *dbproc)\n-Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().\n-Definition dblib.c:6081\n-dbdata\n-BYTE * dbdata(DBPROCESS *dbproc, int column)\n-Get address of data in a regular result column.\n-Definition dblib.c:3352\n-dbstrlen\n-int dbstrlen(DBPROCESS *dbproc)\n-Get size of the command buffer, in bytes.\n-Definition dblib.c:6312\n-dbadata\n-BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)\n-Get address of compute column data.\n-Definition dblib.c:4436\n-dbspid\n-int dbspid(DBPROCESS *dbproc)\n-Get server process ID for a DBPROCESS.\n-Definition dblib.c:5941\n-dbtxtimestamp\n-DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)\n-Get text timestamp for a column in the current row.\n-Definition dblib.c:6548\n-dbbylist\n-BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)\n-Get bylist for a compute row.\n-Definition dblib.c:5020\n-dbservcharset\n-char * dbservcharset(DBPROCESS *dbprocess)\n-Get syscharset name of the server character set.\n-Definition dblib.c:7044\n-dbspr1rowlen\n-DBINT dbspr1rowlen(DBPROCESS *dbproc)\n-Determine size buffer required to hold the results returned by dbsprhead(),\n-dbsprline(),...\n-Definition dblib.c:3419\n-dbconvert\n-DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen,\n-int desttype, BYTE *dest, DBINT destlen)\n-cf.\n-Definition dblib.c:2593\n-dbadlen\n-DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)\n-Get size of data in a compute column.\n-Definition dblib.c:4331\n-dbsetinterrupt\n-void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr,\n-DB_DBHNDLINTR_FUNC hndlintr)\n-Set interrupt handler for db-lib to use while blocked against a read from the\n-server.\n-Definition dblib.c:4652\n-dbsetnull\n-RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE\n-*bindval)\n-Define substitution values to be used when binding null values.\n-Definition dblib.c:1962\n-dbcolname\n-char * dbcolname(DBPROCESS *dbproc, int column)\n-Return name of a regular result column.\n-Definition dblib.c:1872\n-dbfcmd\n-RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)\n-printf-like way to form SQL to send to the server.\n-Definition dblib.c:1334\n-dbdatecrack\n-RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)\n-Break a DBDATETIME value into useful pieces.\n-Definition dblib.c:5868\n-dbresults\n-RETCODE dbresults(DBPROCESS *dbproc)\n-Set up query results.\n-Definition dblib.c:1694\n-dbwritetext\n-RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr,\n-DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)\n-Send text or image data to the server.\n-Definition dblib.c:6615\n-dbcanquery\n-RETCODE dbcanquery(DBPROCESS *dbproc)\n-Cancel the query currently being retrieved, discarding all pending rows.\n-Definition dblib.c:6052\n-dbinit\n-RETCODE dbinit(void)\n-Initialize db-lib.\n-Definition dblib.c:660\n-dbvarylen\n-DBINT dbvarylen(DBPROCESS *dbproc, int column)\n-Determine whether a column can vary in size.\n-Definition dblib.c:3218\n-dbcancel\n-RETCODE dbcancel(DBPROCESS *dbproc)\n-Cancel the current command batch.\n-Definition dblib.c:3394\n-dbsetlogintime\n-RETCODE dbsetlogintime(int seconds)\n-Set maximum seconds db-lib waits for a server response to a login attempt.\n-Definition dblib.c:4260\n-dbgetrow\n-RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)\n-Read a row from the row buffer.\n-Definition dblib.c:1930\n-dbcoltype\n-int dbcoltype(DBPROCESS *dbproc, int column)\n-Get the datatype of a regular result set column.\n-Definition dblib.c:2970\n-dbsetifile\n-void dbsetifile(char *filename)\n-set name and location of the interfaces file FreeTDS should use to look up a\n-servername.\n-Definition dblib.c:2711\n-dbuse\n-RETCODE dbuse(DBPROCESS *dbproc, const char *name)\n-Change current database.\n-Definition dblib.c:1445\n-dbnumalts\n-int dbnumalts(DBPROCESS *dbproc, int computeid)\n-Get count of columns in a compute row.\n-Definition dblib.c:4961\n-dbiscount\n-BOOL dbiscount(DBPROCESS *dbproc)\n-Indicates whether or not the count returned by dbcount is real (Microsoft-\n-compatibility feature).\n-Definition dblib.c:2804\n-dbgettime\n-int dbgettime(void)\n-Get maximum seconds db-lib waits for a server response to query.\n-Definition dblib.c:4244\n-dbmoretext\n-RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])\n-Send chunk of a text/image value to the server.\n-Definition dblib.c:6753\n-dbprtype\n-const char * dbprtype(int token)\n-Print a token value's name to a buffer.\n-Definition dblib.c:6468\n-dbcolsource\n-char * dbcolsource(DBPROCESS *dbproc, int colnum)\n-Get base database column name for a result set column.\n-Definition dblib.c:3144\n-dbchange\n-char * dbchange(DBPROCESS *dbprocess)\n-See if a command caused the current database to change.\n-Definition dblib.c:7008\n-dbacolname\n-const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)\n-Return name of a computed result column.\n-Definition dblib.c:1898\n-dbnullbind\n-RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)\n-Tie a null-indicator to a regular result column.\n-Definition dblib.c:2740\n-dbbind\n-RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE\n-*varaddr)\n-Tie a host variable to a resultset column.\n-Definition dblib.c:2634\n-dbversion\n-const char * dbversion(void)\n-See which version of db-lib is in use.\n-Definition dblib.c:6861\n-dbcmd\n-RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])\n-Append SQL to the command buffer.\n-Definition dblib.c:1373\n-dbcollen\n-DBINT dbcollen(DBPROCESS *dbproc, int column)\n-Get size of a regular result column.\n-Definition dblib.c:3169\n-dbconvert_ps\n-DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT\n-srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)\n-Convert one datatype to another.\n-Definition dblib.c:2300\n-dbgetchar\n-char * dbgetchar(DBPROCESS *dbprocess, int n)\n-Get address of a position in the command buffer.\n-Definition dblib.c:6331\n-dbanullbind\n-RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT\n-*indicator)\n-Tie a null-indicator to a compute result column.\n-Definition dblib.c:2776\n-dbclropt\n-RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])\n-Reset an option.\n-Definition dblib.c:6116\n-dbcount\n-DBINT dbcount(DBPROCESS *dbproc)\n-Get count of rows processed.\n-Definition dblib.c:2824\n-dbaltop\n-int dbaltop(DBPROCESS *dbproc, int computeid, int column)\n-Get aggregation operator for a compute column.\n-Definition dblib.c:4465\n-dbtablecolinfo\n-RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)\n-describe table column attributes with a single call (Freetds-only API function\n-modelled on dbcolinfo)\n-Definition dblib.c:6485\n-dbaltlen\n-DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)\n-Get size of data in compute column.\n-Definition dblib.c:7158\n-dbsetopt\n-RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int\n-int_param)\n-Set db-lib or server option.\n-Definition dblib.c:4492\n-dbprhead\n-void dbprhead(DBPROCESS *dbproc)\n-Print result set headings to stdout.\n-Definition dblib.c:3980\n-dbsetlversion\n-RETCODE dbsetlversion(LOGINREC *login, BYTE version)\n-Set TDS version for future connections.\n-Definition dblib.c:947\n-dbprrow\n-RETCODE dbprrow(DBPROCESS *dbproc)\n-Print a result set to stdout.\n-Definition dblib.c:3540\n-dbname\n-char * dbname(DBPROCESS *dbproc)\n-Get name of current database.\n-Definition dblib.c:7028\n-dbalttype\n-int dbalttype(DBPROCESS *dbproc, int computeid, int column)\n-Get datatype for a compute column.\n-Definition dblib.c:4361\n-dbsprhead\n-RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)\n-Print result set headings to a buffer.\n-Definition dblib.c:3916\n-dbsqlexec\n-RETCODE dbsqlexec(DBPROCESS *dbproc)\n-send the SQL command to the server and wait for an answer.\n-Definition dblib.c:1419\n-dbwillconvert\n-DBBOOL dbwillconvert(int srctype, int desttype)\n-Test whether or not a datatype can be converted to another datatype.\n-Definition dblib.c:2874\n-dbcolutype\n-DBINT dbcolutype(DBPROCESS *dbprocess, int column)\n-Get user-defined datatype of a regular result column.\n-Definition dblib.c:2993\n-dbstrbuild\n-int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char\n-*formats,...)\n-Build a printable string from text containing placeholders for variables.\n-Definition dblib.c:7321\n-dberrhandle\n-EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)\n-Set an error handler, for messages from db-lib.\n-Definition dblib.c:5142\n-dbsetversion\n-RETCODE dbsetversion(DBINT version)\n-Specify a db-lib version level.\n-Definition dblib.c:5997\n-dbgetpacket\n-int dbgetpacket(DBPROCESS *dbproc)\n-Get TDS packet size for the connection.\n-Definition dblib.c:4096\n-dbrecftos\n-void dbrecftos(const char filename[])\n-Record to a file all SQL commands sent to the server.\n-Definition dblib.c:6788\n-dbgetuserdata\n-BYTE * dbgetuserdata(DBPROCESS *dbproc)\n-Get address of user-allocated data from a DBPROCESS.\n-Definition dblib.c:5979\n-dbsetuserdata\n-void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)\n-Associate client-allocated (and defined) data with a DBPROCESS.\n-Definition dblib.c:5961\n-dbprcollen\n-DBINT dbprcollen(DBPROCESS *dbproc, int column)\n-Get size of a result column needed to print column.\n-Definition dblib.c:3192\n-dbloginfree\n-void dbloginfree(LOGINREC *login)\n-free the LOGINREC\n-Definition dblib.c:737\n-dbmorecmds\n-RETCODE dbmorecmds(DBPROCESS *dbproc)\n-See if more commands are to be processed.\n-Definition dblib.c:6258\n-dbisopt\n-DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])\n-Get value of an option.\n-Definition dblib.c:6184\n-dbnumcompute\n-int dbnumcompute(DBPROCESS *dbprocess)\n-Get count of COMPUTE clauses for a result set.\n-Definition dblib.c:4994\n-dbsqlsend\n-RETCODE dbsqlsend(DBPROCESS *dbproc)\n-Transmit the command buffer to the server.\n-Definition dblib.c:7064\n-dbsprline\n-RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR\n-line_char)\n-Get formatted string for underlining dbsprhead() column names.\n-Definition dblib.c:3858\n-dbexit\n-void dbexit(void)\n-Close server connections and free all related structures.\n-Definition dblib.c:1552\n-dbsafestr\n-RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest,\n-DBINT destlen, int quotetype)\n-safely quotes character values in SQL text.\n-Definition dblib.c:6407\n-dbaltcolid\n-int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)\n-Get column ID of a compute column.\n-Definition dblib.c:4305\n-dbanydatecrack\n-RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void\n-*data)\n-Break any kind of date or time value into useful pieces.\n-Definition dblib.c:5889\n-dbsettime\n-RETCODE dbsettime(int seconds)\n-Set maximum seconds db-lib waits for a server response to query.\n-Definition dblib.c:4213\n-dbnumcols\n-int dbnumcols(DBPROCESS *dbproc)\n-Return number of regular columns in a result set.\n-Definition dblib.c:1848\n-dbgetmaxprocs\n-int dbgetmaxprocs(void)\n-get maximum simultaneous connections db-lib will open to the server.\n-Definition dblib.c:4192\n-dbtxptr\n-DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)\n-Get text pointer for a column in the current row.\n-Definition dblib.c:6578\n-dbmsghandle\n-MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)\n-Set a message handler, for messages from the server.\n-Definition dblib.c:5161\n-dbreadtext\n-STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)\n-Fetch part of a text or image value from the server.\n-Definition dblib.c:6684\n-dbsqlok\n-RETCODE dbsqlok(DBPROCESS *dbproc)\n-Wait for results of a query from the server.\n-Definition dblib.c:4835\n-dbdatlen\n-DBINT dbdatlen(DBPROCESS *dbproc, int column)\n-Get size of current row's data in a regular result column.\n-Definition dblib.c:3324\n-dbsetrow\n-STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)\n-Make a buffered row \"current\" without fetching it into bound variables.\n-Definition dblib.c:2045\n-dbclose\n-void dbclose(DBPROCESS *dbproc)\n-Close a connection to the server and free associated resources.\n-Definition dblib.c:1485\n-dbstrcpy\n-RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)\n-Get a copy of a chunk of the command buffer.\n-Definition dblib.c:6363\n-dbaltutype\n-DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)\n-Get user-defined datatype of a compute column.\n-Definition dblib.c:7135\n-dbsetmaxprocs\n-RETCODE dbsetmaxprocs(int maxprocs)\n-Set maximum simultaneous connections db-lib will open to the server.\n-Definition dblib.c:4120\n-dbspr1row\n-RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)\n-Print a regular result row to a buffer.\n-Definition dblib.c:3457\n-dbaltbind\n-RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype,\n-DBINT varlen, BYTE *varaddr)\n-Bind a compute column to a program variable.\n-Definition dblib.c:4390\n-dbretstatus\n-DBINT dbretstatus(DBPROCESS *dbproc)\n-Fetch status value returned by query or remote procedure call.\n-Definition dblib.c:4695\n-dbrpcinit\n-RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)\n-Initialize a remote procedure call.\n-Definition rpc.c:72\n-dbretdata\n-BYTE * dbretdata(DBPROCESS *dbproc, int retnum)\n-Get value of an output parameter filled by a stored procedure.\n-Definition dblib.c:4774\n-dbretname\n-char * dbretname(DBPROCESS *dbproc, int retnum)\n-Get name of an output parameter filled by a stored procedure.\n-Definition dblib.c:4745\n-dbhasretstat\n-DBBOOL dbhasretstat(DBPROCESS *dbproc)\n-Determine if query generated a return status number.\n-Definition dblib.c:4671\n-dbrettype\n-int dbrettype(DBPROCESS *dbproc, int retnum)\n-Get datatype of a stored procedure's return parameter.\n-Definition dblib.c:6287\n-dbretlen\n-int dbretlen(DBPROCESS *dbproc, int retnum)\n-Get size of an output parameter filled by a stored procedure.\n-Definition dblib.c:4800\n-dbrpcparam\n-RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int\n-type, DBINT maxlen, DBINT datalen, BYTE *value)\n-Add a parameter to a remote procedure call.\n-Definition rpc.c:155\n-dbrpcsend\n-RETCODE dbrpcsend(DBPROCESS *dbproc)\n-Execute the procedure and free associated memory.\n-Definition rpc.c:281\n-dbnumrets\n-int dbnumrets(DBPROCESS *dbproc)\n-Get count of output parameters filled by a stored procedure.\n-Definition dblib.c:4713\n-bcp_colfmt\n-RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int\n-host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int\n-colnum)\n-Specify the format of a datafile prior to writing to a table.\n-Definition bcp.c:377\n-bcp_getl\n-DBBOOL bcp_getl(LOGINREC *login)\n-See if BCP_SETL() was used to set the LOGINREC for BCP work.\n-Definition bcp.c:707\n-bcp_control\n-RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)\n-Set BCP options for uploading a datafile.\n-Definition bcp.c:544\n-bcp_columns\n-RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)\n-Indicate how many columns are to be found in the datafile.\n-Definition bcp.c:301\n-bcp_colptr\n-RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)\n-Override bcp_bind() by pointing to a different host variable.\n-Definition bcp.c:671\n-bcp_bind\n-RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen,\n-BYTE *terminator, int termlen, int type, int table_column)\n-Bind a program host variable to a database column.\n-Definition bcp.c:2079\n-bcp_exec\n-RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)\n-Write a datafile to a table.\n-Definition bcp.c:1617\n-bcp_done\n-DBINT bcp_done(DBPROCESS *dbproc)\n-Conclude the transfer of data from program variables.\n-Definition bcp.c:2037\n-bcp_readfmt\n-RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])\n-Read a format definition file.\n-Definition bcp.c:1678\n-bcp_batch\n-DBINT bcp_batch(DBPROCESS *dbproc)\n-Commit a set of rows to the table.\n-Definition bcp.c:2010\n-bcp_init\n-RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile,\n-const char *errfile, int direction)\n-Prepare for bulk copy operation on a table.\n-Definition bcp.c:167\n-bcp_collen\n-RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column)\n-Set the length of a host variable to be written to a table.\n-Definition bcp.c:267\n-bcp_sendrow\n-RETCODE bcp_sendrow(DBPROCESS *dbproc)\n-Write data in host variables to the table.\n-Definition bcp.c:1381\n-bcp_colfmt_ps\n-RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int\n-host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int\n-colnum, DBTYPEINFO *typeinfo)\n-Specify the format of a host file for bulk copy purposes, with precision and\n-scale support for numeri...\n-Definition bcp.c:509\n-bcp_options\n-RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)\n-Set \"hints\" for uploading a file.\n-Definition bcp.c:622\n-dbmny4zero\n-RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)\n-Zero a DBMONEY4 value.\n-Definition dblib.c:5591\n-dbmny4add\n-RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)\n-Add two DBMONEY4 values.\n-Definition dblib.c:5614\n-dbmny4cmp\n-int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)\n-Compare two DBMONEY4 values.\n-Definition dblib.c:5733\n-dbmnymaxpos\n-RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)\n-Get maximum positive DBMONEY value supported.\n-Definition dblib.c:5366\n-dbmny4minus\n-RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)\n-Negate a DBMONEY4 value.\n-Definition dblib.c:5567\n-dbmnyminus\n-RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)\n-Negate a DBMONEY value.\n-Definition dblib.c:5540\n-dbmny4sub\n-RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4\n-*diff)\n-Subtract two DBMONEY4 values.\n-Definition dblib.c:5645\n-dbmnyzero\n-RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)\n-Set a DBMONEY value to zero.\n-Definition dblib.c:5345\n-dbmnycopy\n-RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)\n-Copy a DBMONEY value.\n-Definition dblib.c:6031\n-dbmny4copy\n-RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)\n-Copy a DBMONEY4 value.\n-Definition dblib.c:5761\n-dbmnymaxneg\n-RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)\n-Get maximum negative DBMONEY value supported.\n-Definition dblib.c:5387\n-dbmnydec\n-RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)\n-Subtract $0.0001 from a DBMONEY value.\n-Definition dblib.c:5512\n-dbmnyinc\n-RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)\n-Add $0.0001 to a DBMONEY value.\n-Definition dblib.c:5484\n-dbmnycmp\n-int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)\n-Compare two DBMONEY values.\n-Definition dblib.c:5287\n-dbdatecmp\n-int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)\n-Compare DBDATETIME values, similar to strcmp(3).\n-Definition dblib.c:5786\n-dbmonthname\n-const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum,\n-DBBOOL shortform)\n-Get name of a month, in some human language.\n-Definition dblib.c:6979\n-dbcurcmd\n-int dbcurcmd(DBPROCESS *dbproc)\n-Get number of the row just returned.\n-Definition dblib.c:6241\n-dbsetlbool\n-RETCODE dbsetlbool(LOGINREC *login, int value, int which)\n-Set a boolean value in a LOGINREC structure.\n-Definition dblib.c:896\n-dblastrow\n-DBINT dblastrow(DBPROCESS *dbproc)\n-Get number of the last row in the row buffer.\n-Definition dblib.c:7228\n-dbcmdrow\n-RETCODE dbcmdrow(DBPROCESS *dbproc)\n-See if the current command can return rows.\n-Definition dblib.c:4281\n-dbrows\n-RETCODE dbrows(DBPROCESS *dbproc)\n-Indicate whether a query returned rows.\n-Definition dblib.c:4055\n-dbsetavail\n-void dbsetavail(DBPROCESS *dbprocess)\n-Mark a DBPROCESS as \"available\".\n-Definition dblib.c:7296\n-dbiowdesc\n-int dbiowdesc(DBPROCESS *dbproc)\n-Get file descriptor of the socket used by a DBPROCESS to write data coming to\n-the server....\n-Definition dblib.c:7268\n-dbtds\n-int dbtds(DBPROCESS *dbprocess)\n-Get the TDS version in use for dbproc.\n-Definition dblib.c:6822\n-dbcurrow\n-DBINT dbcurrow(DBPROCESS *dbproc)\n-Get number of the row currently being read.\n-Definition dblib.c:6207\n-dbrowtype\n-STATUS dbrowtype(DBPROCESS *dbprocess)\n-Get returned row's type.\n-Definition dblib.c:6224\n-dbiordesc\n-int dbiordesc(DBPROCESS *dbproc)\n-Get file descriptor of the socket used by a DBPROCESS to read data coming from\n-the server....\n-Definition dblib.c:7252\n-dbsetllong\n-RETCODE dbsetllong(LOGINREC *login, long value, int which)\n-Set an integer value in a LOGINREC structure.\n-Definition dblib.c:825\n-dbsetlname\n-RETCODE dbsetlname(LOGINREC *login, const char *value, int which)\n-Set the value of a string in a LOGINREC structure.\n-Definition dblib.c:759\n-tdsdbopen\n-DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)\n-Form a connection with the server.\n-Definition dblib.c:1179\n-dbdead\n-DBBOOL dbdead(DBPROCESS *dbproc)\n-Check if dbproc is an ex-parrot.\n-Definition dblib.c:5079\n-dbfirstrow\n-DBINT dbfirstrow(DBPROCESS *dbproc)\n-See if a server response has arrived.\n-Definition dblib.c:7213\n-LOGINREC\n-Definition bsqlodbc.c:100\n-col_t\n-Definition dbpivot.c:77\n-pivot_t\n-Definition dbpivot.c:772\n-tds_dblib_loginrec\n-Definition dblib.h:44\n-tds_dblib_dbprocess\n-Definition dblib.h:123\n-DBVARYCHAR\n-Definition sybdb.h:263\n-DBVARYBIN\n-Definition sybdb.h:269\n-DBNUMERIC\n-Definition sybdb.h:275\n-DBMONEY\n-Definition sybdb.h:284\n-DBMONEY4\n-Definition sybdb.h:290\n-DBDATETIME\n-Definition sybdb.h:295\n-DBDATETIME4\n-Definition sybdb.h:301\n-DBDATETIMEALL\n-Definition sybdb.h:307\n-DBDATETIMEALL::offset\n-DBSMALLINT offset\n-time offset\n-Definition sybdb.h:310\n-DBDATETIMEALL::time\n-DBUBIGINT time\n-time, 7 digit precision\n-Definition sybdb.h:308\n-DBDATETIMEALL::date\n-DBINT date\n-date, 0 = 1900-01-01\n-Definition sybdb.h:309\n-dbtypeinfo\n-Definition sybdb.h:336\n-dbstring\n-Definition sybdb.h:342\n-DBCOL\n-Definition sybdb.h:355\n-DBCOL2\n-Definition sybdb.h:374\n-tds_microsoft_dbdaterec\n-Definition sybdb.h:458\n-tds_sybase_dbdaterec\n-Definition sybdb.h:474\n-tds_microsoft_dbdaterec2\n-Definition sybdb.h:490\n-tds_sybase_dbdaterec2\n-Definition sybdb.h:506\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18 */\n+ 19\n+ 20#ifndef SQLDB_h\n+ 21#define SQLDB_h\n+ 22\n+ 23#include \"./sybdb.h\"\n+ 24\n+ 25#define SQLCHAR SYBCHAR\n+ 26#define SQLVARCHAR SYBVARCHAR\n+ 27#define SQLINTN SYBINTN\n+ 28#define SQLINT1 SYBINT1\n+ 29#define SQLINT2 SYBINT2\n+ 30#define SQLINT4 SYBINT4\n+ 31#define SQLINT8 SYBINT8\n+ 32#define SQLFLT8 SYBFLT8\n+ 33#define SQLDATETIME SYBDATETIME\n+ 34#define SQLBIT SYBBIT\n+ 35#define SQLTEXT SYBTEXT\n+ 36#define SQLIMAGE SYBIMAGE\n+ 37#define SQLMONEY4 SYBMONEY4\n+ 38#define SQLMONEY SYBMONEY\n+ 39#define SQLDATETIM4 SYBDATETIME4\n+ 40#define SQLFLT4 SYBREAL\n+ 41#define SQLBINARY SYBBINARY\n+ 42#define SQLVARBINARY SYBVARBINARY\n+ 43#define SQLNUMERIC SYBNUMERIC\n+ 44#define SQLDECIMAL SYBDECIMAL\n+ 45#define SQLFLTN SYBFLTN\n+ 46#define SQLMONEYN SYBMONEYN\n+ 47#define SQLDATETIMN SYBDATETIMN\n+ 48#define SQLVOID SYBVOID\n+ 49\n+ 50#define SMALLDATETIBIND SMALLDATETIMEBIND\n+ 51\n+ 52#define DBERRHANDLE_PROC EHANDLEFUNC\n+ 53#define DBMSGHANDLE_PROC MHANDLEFUNC\n+ 54\n+ 55/* DB-Library errors as defined by Microsoft */\n+ 56#define SQLEMEM SYBEMEM\n+ 57#define SQLENULL SYBENULL\n+ 58#define SQLENLOG SYBENLOG\n+ 59#define SQLEPWD SYBEPWD\n+ 60#define SQLECONN SYBECONN\n+ 61#define SQLEDDNE SYBEDDNE\n+ 62#define SQLENULLO SYBENULLO\n+ 63#define SQLESMSG SYBESMSG\n+ 64#define SQLEBTOK SYBEBTOK\n+ 65#define SQLENSPE SYBENSPE\n+ 66#define SQLEREAD SYBEREAD\n+ 67#define SQLECNOR SYBECNOR\n+ 68#define SQLETSIT SYBETSIT\n+ 69#define SQLEPARM SYBEPARM\n+ 70#define SQLEAUTN SYBEAUTN\n+ 71#define SQLECOFL SYBECOFL\n+ 72#define SQLERDCN SYBERDCN\n+ 73#define SQLEICN SYBEICN\n+ 74#define SQLECLOS SYBECLOS\n+ 75#define SQLENTXT SYBENTXT\n+ 76#define SQLEDNTI SYBEDNTI\n+ 77#define SQLETMTD SYBETMTD\n+ 78#define SQLEASEC SYBEASEC\n+ 79#define SQLENTLL SYBENTLL\n+ 80#define SQLETIME SYBETIME\n+ 81#define SQLEWRIT SYBEWRIT\n+ 82#define SQLEMODE SYBEMODE\n+ 83#define SQLEOOB SYBEOOB\n+ 84#define SQLEITIM SYBEITIM\n+ 85#define SQLEDBPS SYBEDBPS\n+ 86#define SQLEIOPT SYBEIOPT\n+ 87#define SQLEASNL SYBEASNL\n+ 88#define SQLEASUL SYBEASUL\n+ 89#define SQLENPRM SYBENPRM\n+ 90#define SQLEDBOP SYBEDBOP\n+ 91#define SQLENSIP SYBENSIP\n+ 92#define SQLECNULL SYBECNULL\n+ 93#define SQLESEOF SYBESEOF\n+ 94#define SQLERPND SYBERPND\n+ 95#define SQLECSYN SYBECSYN\n+ 96#define SQLENONET SYBENONET\n+ 97#define SQLEBTYP SYBEBTYP\n+ 98#define SQLEABNC SYBEABNC\n+ 99#define SQLEABMT SYBEABMT\n+ 100#define SQLEABNP SYBEABNP\n+ 101#define SQLEBNCR SYBEBNCR\n+ 102#define SQLEAAMT SYBEAAMT\n+ 103#define SQLENXID SYBENXID\n+ 104#define SQLEIFNB SYBEIFNB\n+ 105#define SQLEKBCO SYBEKBCO\n+ 106#define SQLEBBCI SYBEBBCI\n+ 107#define SQLEKBCI SYBEKBCI\n+ 108#define SQLEBCWE SYBEBCWE\n+ 109#define SQLEBCNN SYBEBCNN\n+ 110#define SQLEBCOR SYBEBCOR\n+ 111#define SQLEBCPI SYBEBCPI\n+ 112#define SQLEBCPN SYBEBCPN\n+ 113#define SQLEBCPB SYBEBCPB\n+ 114#define SQLEVDPT SYBEVDPT\n+ 115#define SQLEBIVI SYBEBIVI\n+ 116#define SQLEBCBC SYBEBCBC\n+ 117#define SQLEBCFO SYBEBCFO\n+ 118#define SQLEBCVH SYBEBCVH\n+ 119#define SQLEBCUO SYBEBCUO\n+ 120#define SQLEBUOE SYBEBUOE\n+ 121#define SQLEBWEF SYBEBWEF\n+ 122#define SQLEBTMT SYBEBTMT\n+ 123#define SQLEBEOF SYBEBEOF\n+ 124#define SQLEBCSI SYBEBCSI\n+ 125#define SQLEPNUL SYBEPNUL\n+ 126#define SQLEBSKERR SYBEBSKERR\n+ 127#define SQLEBDIO SYBEBDIO\n+ 128#define SQLEBCNT SYBEBCNT\n+ 129#define SQLEMDBP SYBEMDBP\n+ 130#define SQLINIT SYBINIT\n+ 131#define SQLCRSINV SYBCRSINV\n+ 132#define SQLCRSCMD SYBCRSCMD\n+ 133#define SQLCRSNOIND SYBCRSNOIND\n+ 134#define SQLCRSDIS SYBCRSDIS\n+ 135#define SQLCRSAGR SYBCRSAGR\n+ 136#define SQLCRSORD SYBCRSORD\n+ 137#define SQLCRSMEM SYBCRSMEM\n+ 138#define SQLCRSBSKEY SYBCRSBSKEY\n+ 139#define SQLCRSNORES SYBCRSNORES\n+ 140#define SQLCRSVIEW SYBCRSVIEW\n+ 141#define SQLCRSBUFR SYBCRSBUFR\n+ 142#define SQLCRSFROWN SYBCRSFROWN\n+ 143#define SQLCRSBROL SYBCRSBROL\n+ 144#define SQLCRSFRAND SYBCRSFRAND\n+ 145#define SQLCRSFLAST SYBCRSFLAST\n+ 146#define SQLCRSRO SYBCRSRO\n+ 147#define SQLCRSTAB SYBCRSTAB\n+ 148#define SQLCRSUPDTAB SYBCRSUPDTAB\n+ 149#define SQLCRSUPDNB SYBCRSUPDNB\n+ 150#define SQLCRSVIIND SYBCRSVIIND\n+ 151#define SQLCRSNOUPD SYBCRSNOUPD\n+ 152#define SQLCRSOS SYBCRSOS\n+ 153#define SQLEBCSA SYBEBCSA\n+ 154#define SQLEBCRO SYBEBCRO\n+ 155#define SQLEBCNE SYBEBCNE\n+ 156#define SQLEBCSK SYBEBCSK\n+ 157#define SQLEUVBF SYBEUVBF\n+ 158#define SQLEBIHC SYBEBIHC\n+ 159#define SQLEBWFF SYBEBWFF\n+ 160#define SQLNUMVAL SYBNUMVAL\n+ 161#define SQLEOLDVR SYBEOLDVR\n+ 162#define SQLEBCPS SYBEBCPS\n+ 163#define SQLEDTC SYBEDTC\n+ 164#define SQLENOTIMPL SYBENOTIMPL\n+ 165#define SQLENONFLOAT SYBENONFLOAT\n+ 166#define SQLECONNFB SYBECONNFB\n+ 167\n+ 168\n+ 169#define dbfreelogin(x) dbloginfree((x))\n+ 170\n+ 171#define dbprocerrhandle(p, h) dberrhandle((h))\n+ 172#define dbprocmsghandle(p, h) dbmsghandle((h))\n+ 173\n+ 174#define dbwinexit()\n+ 175\n+ 176static const char rcsid_sqldb_h[] = \"$Id: sqldb.h,v 1.6 2009-12-02 22:35:18\n+jklowden Exp $\";\n+ 177static const void *const no_unused_sqldb_h_warn[] = { rcsid_sqldb_h,\n+no_unused_sqldb_h_warn };\n+ 178\n+ 179\n+ 180#endif\n+sybdb.h\n+Primary include file for db-lib applications.\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00482_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00482_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/odbcss.h Source File\n+FreeTDS API: include/sqlfront.h Source File\n \n \n \n \n \n \n \n@@ -74,403 +74,78 @@\n \n
    \n \n
    \n
    \n
    \n-
    odbcss.h
    \n+
    sqlfront.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2008 Frediano Ziglio
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _odbcss_h_
    \n-
    21#define _odbcss_h_
    \n-
    22
    \n-
    23#ifdef TDSODBC_BCP
    \n-
    24#include <sql.h>
    \n-
    25#endif
    \n-
    26
    \n-
    27#ifdef __cplusplus
    \n-
    28extern "C" {
    \n-
    29#endif
    \n-
    30
    \n-
    31#define SQL_DIAG_SS_MSGSTATE (-1150)
    \n-
    32#define SQL_DIAG_SS_LINE (-1154)
    \n-
    33
    \n-
    34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233
    \n-
    35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234
    \n-
    36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235
    \n-
    37
    \n-
    38#ifndef SQL_SS_LENGTH_UNLIMITED
    \n-
    39#define SQL_SS_LENGTH_UNLIMITED 0
    \n-
    40#endif
    \n-
    41
    \n-
    42#ifndef SQL_COPT_SS_BASE
    \n-
    43#define SQL_COPT_SS_BASE 1200
    \n-
    44#endif
    \n-
    45
    \n-
    46#ifndef SQL_COPT_SS_MARS_ENABLED
    \n-
    47#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
    \n-
    48#endif
    \n-
    49
    \n-
    50#ifndef SQL_COPT_SS_OLDPWD
    \n-
    51#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
    \n-
    52#endif
    \n-
    53
    \n-
    54#define SQL_INFO_FREETDS_TDS_VERSION 1300
    \n-
    55#define SQL_INFO_FREETDS_SOCKET 1301
    \n+
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    3 * Copyright (C) 2011 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    21#ifndef SQLFRONT_h
    \n+
    22#define SQLFRONT_h
    \n+
    23
    \n+
    24#include "./sybfront.h"
    \n+
    25
    \n+
    26static const char rcsid_sqlfront_h[] = "$Id: sqlfront.h,v 1.10 2011-07-13 11:06:31 freddy77 Exp $";
    \n+
    27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h, no_unused_sqlfront_h_warn };
    \n+
    28
    \n+
    29typedef DBPROCESS * PDBPROCESS;
    \n+
    30typedef LOGINREC * PLOGINREC;
    \n+
    31typedef DBCURSOR * PDBCURSOR;
    \n+
    32
    \n+
    33typedef int * LPINT;
    \n+
    34typedef char * LPSTR;
    \n+
    35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)
    \n+
    36typedef BYTE * LPBYTE;
    \n+
    37#endif
    \n+
    38typedef void * LPVOID;
    \n+
    39typedef const char * LPCSTR;
    \n+
    40
    \n+
    41typedef const LPINT LPCINT;
    \n+
    42#ifndef _LPCBYTE_DEFINED
    \n+
    43#define _LPCBYTE_DEFINED
    \n+
    44typedef const BYTE * LPCBYTE;
    \n+
    45#endif
    \n+
    46typedef USHORT * LPUSHORT;
    \n+
    47typedef const LPUSHORT LPCUSHORT;
    \n+
    48typedef DBINT * LPDBINT;
    \n+
    49typedef const LPDBINT LPCDBINT;
    \n+
    50typedef DBBINARY * LPDBBINARY;
    \n+
    51typedef const LPDBBINARY LPCDBBINARY;
    \n+
    52typedef DBDATEREC * LPDBDATEREC;
    \n+
    53typedef const LPDBDATEREC LPCDBDATEREC;
    \n+
    54typedef DBDATETIME * LPDBDATETIME;
    \n+
    55typedef const LPDBDATETIME LPCDBDATETIME;
    \n
    56
    \n-
    57#ifndef SQL_MARS_ENABLED_NO
    \n-
    58#define SQL_MARS_ENABLED_NO 0
    \n-
    59#endif
    \n-
    60
    \n-
    61#ifndef SQL_MARS_ENABLED_YES
    \n-
    62#define SQL_MARS_ENABLED_YES 1
    \n-
    63#endif
    \n-
    64
    \n-
    65#ifndef SQL_SS_VARIANT
    \n-
    66#define SQL_SS_VARIANT (-150)
    \n-
    67#endif
    \n-
    68
    \n-
    69#ifndef SQL_SS_UDT
    \n-
    70#define SQL_SS_UDT (-151)
    \n-
    71#endif
    \n-
    72
    \n-
    73#ifndef SQL_SS_XML
    \n-
    74#define SQL_SS_XML (-152)
    \n-
    75#endif
    \n-
    76
    \n-
    77#ifndef SQL_SS_TABLE
    \n-
    78#define SQL_SS_TABLE (-153)
    \n-
    79#endif
    \n-
    80
    \n-
    81#ifndef SQL_SS_TIME2
    \n-
    82#define SQL_SS_TIME2 (-154)
    \n-
    83#endif
    \n-
    84
    \n-
    85#ifndef SQL_SS_TIMESTAMPOFFSET
    \n-
    86#define SQL_SS_TIMESTAMPOFFSET (-155)
    \n-
    87#endif
    \n-
    88
    \n-
    89/*
    \n-
    90 * these types are used from conversion from client to server
    \n-
    91 */
    \n-
    92#ifndef SQL_C_SS_TIME2
    \n-
    93#define SQL_C_SS_TIME2 (0x4000)
    \n-
    94#endif
    \n-
    95
    \n-
    96#ifndef SQL_C_SS_TIMESTAMPOFFSET
    \n-
    97#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
    \n-
    98#endif
    \n-
    99
    \n-
    100#ifndef SQL_CA_SS_BASE
    \n-
    101#define SQL_CA_SS_BASE 1200
    \n-
    102#endif
    \n-
    103
    \n-
    104#ifndef SQL_CA_SS_UDT_CATALOG_NAME
    \n-
    105#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
    \n-
    106#endif
    \n-
    107
    \n-
    108#ifndef SQL_CA_SS_UDT_SCHEMA_NAME
    \n-
    109#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
    \n-
    110#endif
    \n-
    111
    \n-
    112#ifndef SQL_CA_SS_UDT_TYPE_NAME
    \n-
    113#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
    \n-
    114#endif
    \n-
    115
    \n-
    116#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
    \n-
    117#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
    \n-
    118#endif
    \n-
    119
    \n-
    120#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
    \n-
    121#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
    \n-
    122#endif
    \n-
    123
    \n-
    124#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
    \n-
    125#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
    \n-
    126#endif
    \n-
    127
    \n-
    128#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
    \n-
    129#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
    \n-
    130#endif
    \n-
    131
    \n-
    \n-
    132typedef struct tagSS_TIME2_STRUCT {
    \n-
    133 SQLUSMALLINT hour;
    \n-
    134 SQLUSMALLINT minute;
    \n-
    135 SQLUSMALLINT second;
    \n-
    136 SQLUINTEGER fraction;
    \n-\n-
    \n-
    138
    \n-
    \n-\n-
    140 SQLSMALLINT year;
    \n-
    141 SQLUSMALLINT month;
    \n-
    142 SQLUSMALLINT day;
    \n-
    143 SQLUSMALLINT hour;
    \n-
    144 SQLUSMALLINT minute;
    \n-
    145 SQLUSMALLINT second;
    \n-
    146 SQLUINTEGER fraction;
    \n-
    147 SQLSMALLINT timezone_hour;
    \n-
    148 SQLSMALLINT timezone_minute;
    \n-\n-
    \n-
    150
    \n-
    151
    \n-
    152#ifdef TDSODBC_BCP
    \n-
    153
    \n-
    154#ifndef SUCCEED
    \n-
    155#define SUCCEED 1
    \n-
    156#endif
    \n-
    157#ifndef FAIL
    \n-
    158#define FAIL 0
    \n-
    159#endif
    \n-
    160
    \n-
    161#ifndef BCPKEEPIDENTITY
    \n-
    162#define BCPKEEPIDENTITY 8
    \n-
    163#endif
    \n-
    164#ifndef BCPHINTS
    \n-
    165#define BCPHINTS 6
    \n-
    166#endif
    \n-
    167
    \n-
    168#define BCP_DIRECTION_IN 1
    \n-
    169
    \n-
    170#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
    \n-
    171#define SQL_BCP_OFF 0
    \n-
    172#define SQL_BCP_ON 1
    \n-
    173
    \n-
    174#define SQL_COPT_TDSODBC_IMPL_BASE 1500
    \n-
    175#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
    \n-
    176#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)
    \n-
    177#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
    \n-
    178#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
    \n-
    179#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
    \n-
    180#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
    \n-
    181#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
    \n-
    182#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
    \n-
    183
    \n-
    184#define SQL_VARLEN_DATA -10
    \n-
    185
    \n-
    186/* copied from sybdb.h which was copied from tds.h */
    \n-
    187/* TODO find a much better way... */
    \n-
    188enum
    \n-
    189{
    \n-
    190 BCP_TYPE_SQLCHAR = 47, /* 0x2F */
    \n-
    191#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
    \n-
    192 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */
    \n-
    193#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
    \n-
    194 BCP_TYPE_SQLINTN = 38, /* 0x26 */
    \n-
    195#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
    \n-
    196 BCP_TYPE_SQLINT1 = 48, /* 0x30 */
    \n-
    197#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
    \n-
    198 BCP_TYPE_SQLINT2 = 52, /* 0x34 */
    \n-
    199#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
    \n-
    200 BCP_TYPE_SQLINT4 = 56, /* 0x38 */
    \n-
    201#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
    \n-
    202 BCP_TYPE_SQLINT8 = 127, /* 0x7F */
    \n-
    203#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
    \n-
    204 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */
    \n-
    205#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
    \n-
    206 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */
    \n-
    207#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
    \n-
    208 BCP_TYPE_SQLBIT = 50, /* 0x32 */
    \n-
    209#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
    \n-
    210 BCP_TYPE_SQLBITN = 104, /* 0x68 */
    \n-
    211#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
    \n-
    212 BCP_TYPE_SQLTEXT = 35, /* 0x23 */
    \n-
    213#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
    \n-
    214 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */
    \n-
    215#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
    \n-
    216 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */
    \n-
    217#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
    \n-
    218 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */
    \n-
    219#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
    \n-
    220 BCP_TYPE_SQLMONEY = 60, /* 0x3C */
    \n-
    221#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
    \n-
    222 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */
    \n-
    223#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
    \n-
    224 BCP_TYPE_SQLREAL = 59, /* 0x3B */
    \n-
    225 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */
    \n-
    226#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
    \n-
    227#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
    \n-
    228 BCP_TYPE_SQLBINARY = 45, /* 0x2D */
    \n-
    229#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
    \n-
    230 BCP_TYPE_SQLVOID = 31, /* 0x1F */
    \n-
    231#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
    \n-
    232 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */
    \n-
    233#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
    \n-
    234 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */
    \n-
    235#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
    \n-
    236 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */
    \n-
    237#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
    \n-
    238 BCP_TYPE_SQLFLTN = 109, /* 0x6D */
    \n-
    239#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
    \n-
    240 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */
    \n-
    241#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
    \n-
    242 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */
    \n-
    243#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
    \n-
    244 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */
    \n-
    245#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
    \n-
    246 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */
    \n-
    247#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
    \n-
    248 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */
    \n-
    249#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
    \n-
    250};
    \n-
    251
    \n-
    252typedef struct
    \n-
    253{
    \n-
    254 int dtdays;
    \n-
    255 int dttime;
    \n-
    256} DBDATETIME;
    \n-
    257
    \n-
    258#ifdef _MSC_VER
    \n-
    259#define TDSODBC_INLINE __inline
    \n-
    260#else
    \n-
    261#define TDSODBC_INLINE __inline__
    \n-
    262#endif
    \n-
    263
    \n-
    264struct tdsodbc_impl_bcp_init_params
    \n-
    265{
    \n-
    266 const void *tblname;
    \n-
    267 const void *hfile;
    \n-
    268 const void *errfile;
    \n-
    269 int direction;
    \n-
    270};
    \n-
    271
    \n-
    272static TDSODBC_INLINE RETCODE SQL_API
    \n-
    273bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char *errfile, int direction)
    \n-
    274{
    \n-
    275 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
    \n-
    276 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    277}
    \n-
    278
    \n-
    279static TDSODBC_INLINE RETCODE SQL_API
    \n-
    280bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const SQLWCHAR *errfile, int direction)
    \n-
    281{
    \n-
    282 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
    \n-
    283 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    284}
    \n-
    285
    \n-
    286struct tdsodbc_impl_bcp_control_params
    \n-
    287{
    \n-
    288 int field;
    \n-
    289 void *value;
    \n-
    290};
    \n-
    291
    \n-
    292static TDSODBC_INLINE RETCODE SQL_API
    \n-
    293bcp_control(HDBC hdbc, int field, void *value)
    \n-
    294{
    \n-
    295 struct tdsodbc_impl_bcp_control_params params = {field, value};
    \n-
    296 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    297}
    \n-
    298
    \n-
    299struct tdsodbc_impl_bcp_colptr_params
    \n-
    300{
    \n-
    301 const unsigned char * colptr;
    \n-
    302 int table_column;
    \n-
    303};
    \n-
    304
    \n-
    305static TDSODBC_INLINE RETCODE SQL_API
    \n-
    306bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)
    \n-
    307{
    \n-
    308 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
    \n-
    309 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    310}
    \n-
    311
    \n-
    312static TDSODBC_INLINE RETCODE SQL_API
    \n-
    313bcp_sendrow(HDBC hdbc)
    \n-
    314{
    \n-
    315 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    316}
    \n-
    317
    \n-
    318struct tdsodbc_impl_bcp_batch_params
    \n-
    319{
    \n-
    320 int rows;
    \n-
    321};
    \n-
    322
    \n-
    323static TDSODBC_INLINE int SQL_API
    \n-
    324bcp_batch(HDBC hdbc)
    \n-
    325{
    \n-
    326 struct tdsodbc_impl_bcp_batch_params params = {-1};
    \n-
    327 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, &params, SQL_IS_POINTER)) ? params.rows : -1;
    \n-
    328}
    \n-
    329
    \n-
    330struct tdsodbc_impl_bcp_done_params
    \n-
    331{
    \n-
    332 int rows;
    \n-
    333};
    \n-
    334
    \n-
    335static TDSODBC_INLINE int SQL_API
    \n-
    336bcp_done(HDBC hdbc)
    \n-
    337{
    \n-
    338 struct tdsodbc_impl_bcp_done_params params = {-1};
    \n-
    339 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, &params, SQL_IS_POINTER)) ? params.rows : -1;
    \n-
    340}
    \n-
    341
    \n-
    342struct tdsodbc_impl_bcp_bind_params
    \n-
    343{
    \n-
    344 const unsigned char * varaddr;
    \n-
    345 int prefixlen;
    \n-
    346 int varlen;
    \n-
    347 const unsigned char * terminator;
    \n-
    348 int termlen;
    \n-
    349 int vartype;
    \n-
    350 int table_column;
    \n-
    351};
    \n-
    352
    \n-
    353static TDSODBC_INLINE RETCODE SQL_API
    \n-
    354bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int varlen,
    \n-
    355 const unsigned char * terminator, int termlen, int vartype, int table_column)
    \n-
    356{
    \n-
    357 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
    \n-
    358 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n-
    359}
    \n-
    360
    \n-
    361#ifdef UNICODE
    \n-
    362#define bcp_init bcp_initW
    \n-
    363#else
    \n-
    364#define bcp_init bcp_initA
    \n-
    365#endif
    \n-
    366
    \n-
    367#endif /* TDSODBC_BCP */
    \n-
    368
    \n-
    369#ifdef __cplusplus
    \n-
    370}
    \n-
    371#endif
    \n-
    372
    \n-
    373#endif /* _odbcss_h_ */
    \n-
    RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
    Set BCP options for uploading a datafile.
    Definition bcp.c:544
    \n-
    RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
    Override bcp_bind() by pointing to a different host variable.
    Definition bcp.c:671
    \n-
    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:2079
    \n-
    DBINT bcp_done(DBPROCESS *dbproc)
    Conclude the transfer of data from program variables.
    Definition bcp.c:2037
    \n-
    DBINT bcp_batch(DBPROCESS *dbproc)
    Commit a set of rows to the table.
    Definition bcp.c:2010
    \n-
    RETCODE bcp_sendrow(DBPROCESS *dbproc)
    Write data in host variables to the table.
    Definition bcp.c:1381
    \n-
    Definition odbcss.h:132
    \n-
    Definition odbcss.h:139
    \n+
    57#endif
    \n+
    Definition bsqlodbc.c:100
    \n+
    Definition dblib.h:123
    \n
    Definition sybdb.h:295
    \n+
    Definition sybdb.h:474
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,430 +6,78 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-odbcss.h\n+sqlfront.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2008 Frediano Ziglio\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _odbcss_h_\n- 21#define _odbcss_h_\n- 22\n- 23#ifdef TDSODBC_BCP\n- 24#include \n- 25#endif\n- 26\n- 27#ifdef __cplusplus\n- 28extern \"C\" {\n- 29#endif\n- 30\n- 31#define SQL_DIAG_SS_MSGSTATE (-1150)\n- 32#define SQL_DIAG_SS_LINE (-1154)\n- 33\n- 34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233\n- 35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234\n- 36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235\n- 37\n- 38#ifndef SQL_SS_LENGTH_UNLIMITED\n- 39#define SQL_SS_LENGTH_UNLIMITED 0\n- 40#endif\n- 41\n- 42#ifndef SQL_COPT_SS_BASE\n- 43#define SQL_COPT_SS_BASE 1200\n- 44#endif\n- 45\n- 46#ifndef SQL_COPT_SS_MARS_ENABLED\n- 47#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)\n- 48#endif\n- 49\n- 50#ifndef SQL_COPT_SS_OLDPWD\n- 51#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)\n- 52#endif\n- 53\n- 54#define SQL_INFO_FREETDS_TDS_VERSION 1300\n- 55#define SQL_INFO_FREETDS_SOCKET 1301\n+ 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 3 * Copyright (C) 2011 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 21#ifndef SQLFRONT_h\n+ 22#define SQLFRONT_h\n+ 23\n+ 24#include \"./sybfront.h\"\n+ 25\n+ 26static const char rcsid_sqlfront_h[] = \"$Id: sqlfront.h,v 1.10 2011-07-13\n+11:06:31 freddy77 Exp $\";\n+ 27static const void *const no_unused_sqlfront_h_warn[] = { rcsid_sqlfront_h,\n+no_unused_sqlfront_h_warn };\n+ 28\n+ 29typedef DBPROCESS * PDBPROCESS;\n+ 30typedef LOGINREC * PLOGINREC;\n+ 31typedef DBCURSOR * PDBCURSOR;\n+ 32\n+ 33typedef int * LPINT;\n+ 34typedef char * LPSTR;\n+ 35#if !defined(PHP_MSSQL_H) || !defined(PHP_MSSQL_API)\n+ 36typedef BYTE * LPBYTE;\n+ 37#endif\n+ 38typedef void * LPVOID;\n+ 39typedef const char * LPCSTR;\n+ 40\n+ 41typedef const LPINT LPCINT;\n+ 42#ifndef _LPCBYTE_DEFINED\n+ 43#define _LPCBYTE_DEFINED\n+ 44typedef const BYTE * LPCBYTE;\n+ 45#endif\n+ 46typedef USHORT * LPUSHORT;\n+ 47typedef const LPUSHORT LPCUSHORT;\n+ 48typedef DBINT * LPDBINT;\n+ 49typedef const LPDBINT LPCDBINT;\n+ 50typedef DBBINARY * LPDBBINARY;\n+ 51typedef const LPDBBINARY LPCDBBINARY;\n+ 52typedef DBDATEREC * LPDBDATEREC;\n+ 53typedef const LPDBDATEREC LPCDBDATEREC;\n+ 54typedef DBDATETIME * LPDBDATETIME;\n+ 55typedef const LPDBDATETIME LPCDBDATETIME;\n 56\n- 57#ifndef SQL_MARS_ENABLED_NO\n- 58#define SQL_MARS_ENABLED_NO 0\n- 59#endif\n- 60\n- 61#ifndef SQL_MARS_ENABLED_YES\n- 62#define SQL_MARS_ENABLED_YES 1\n- 63#endif\n- 64\n- 65#ifndef SQL_SS_VARIANT\n- 66#define SQL_SS_VARIANT (-150)\n- 67#endif\n- 68\n- 69#ifndef SQL_SS_UDT\n- 70#define SQL_SS_UDT (-151)\n- 71#endif\n- 72\n- 73#ifndef SQL_SS_XML\n- 74#define SQL_SS_XML (-152)\n- 75#endif\n- 76\n- 77#ifndef SQL_SS_TABLE\n- 78#define SQL_SS_TABLE (-153)\n- 79#endif\n- 80\n- 81#ifndef SQL_SS_TIME2\n- 82#define SQL_SS_TIME2 (-154)\n- 83#endif\n- 84\n- 85#ifndef SQL_SS_TIMESTAMPOFFSET\n- 86#define SQL_SS_TIMESTAMPOFFSET (-155)\n- 87#endif\n- 88\n- 89/*\n- 90 * these types are used from conversion from client to server\n- 91 */\n- 92#ifndef SQL_C_SS_TIME2\n- 93#define SQL_C_SS_TIME2 (0x4000)\n- 94#endif\n- 95\n- 96#ifndef SQL_C_SS_TIMESTAMPOFFSET\n- 97#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)\n- 98#endif\n- 99\n- 100#ifndef SQL_CA_SS_BASE\n- 101#define SQL_CA_SS_BASE 1200\n- 102#endif\n- 103\n- 104#ifndef SQL_CA_SS_UDT_CATALOG_NAME\n- 105#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)\n- 106#endif\n- 107\n- 108#ifndef SQL_CA_SS_UDT_SCHEMA_NAME\n- 109#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)\n- 110#endif\n- 111\n- 112#ifndef SQL_CA_SS_UDT_TYPE_NAME\n- 113#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)\n- 114#endif\n- 115\n- 116#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME\n- 117#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)\n- 118#endif\n- 119\n- 120#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME\n- 121#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)\n- 122#endif\n- 123\n- 124#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME\n- 125#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)\n- 126#endif\n- 127\n- 128#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME\n- 129#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)\n- 130#endif\n- 131\n-132typedef struct tagSS_TIME2_STRUCT {\n- 133 SQLUSMALLINT hour;\n- 134 SQLUSMALLINT minute;\n- 135 SQLUSMALLINT second;\n- 136 SQLUINTEGER fraction;\n- 137} SQL_SS_TIME2_STRUCT;\n- 138\n-139typedef struct tagSS_TIMESTAMPOFFSET_STRUCT {\n- 140 SQLSMALLINT year;\n- 141 SQLUSMALLINT month;\n- 142 SQLUSMALLINT day;\n- 143 SQLUSMALLINT hour;\n- 144 SQLUSMALLINT minute;\n- 145 SQLUSMALLINT second;\n- 146 SQLUINTEGER fraction;\n- 147 SQLSMALLINT timezone_hour;\n- 148 SQLSMALLINT timezone_minute;\n- 149} SQL_SS_TIMESTAMPOFFSET_STRUCT;\n- 150\n- 151\n- 152#ifdef TDSODBC_BCP\n- 153\n- 154#ifndef SUCCEED\n- 155#define SUCCEED 1\n- 156#endif\n- 157#ifndef FAIL\n- 158#define FAIL 0\n- 159#endif\n- 160\n- 161#ifndef BCPKEEPIDENTITY\n- 162#define BCPKEEPIDENTITY 8\n- 163#endif\n- 164#ifndef BCPHINTS\n- 165#define BCPHINTS 6\n- 166#endif\n- 167\n- 168#define BCP_DIRECTION_IN 1\n- 169\n- 170#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)\n- 171#define SQL_BCP_OFF 0\n- 172#define SQL_BCP_ON 1\n- 173\n- 174#define SQL_COPT_TDSODBC_IMPL_BASE 1500\n- 175#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)\n- 176#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)\n- 177#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)\n- 178#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)\n- 179#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)\n- 180#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)\n- 181#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)\n- 182#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)\n- 183\n- 184#define SQL_VARLEN_DATA -10\n- 185\n- 186/* copied from sybdb.h which was copied from tds.h */\n- 187/* TODO find a much better way... */\n- 188enum\n- 189{\n- 190 BCP_TYPE_SQLCHAR = 47, /* 0x2F */\n- 191#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR\n- 192 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */\n- 193#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR\n- 194 BCP_TYPE_SQLINTN = 38, /* 0x26 */\n- 195#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN\n- 196 BCP_TYPE_SQLINT1 = 48, /* 0x30 */\n- 197#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1\n- 198 BCP_TYPE_SQLINT2 = 52, /* 0x34 */\n- 199#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2\n- 200 BCP_TYPE_SQLINT4 = 56, /* 0x38 */\n- 201#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4\n- 202 BCP_TYPE_SQLINT8 = 127, /* 0x7F */\n- 203#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8\n- 204 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */\n- 205#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8\n- 206 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */\n- 207#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME\n- 208 BCP_TYPE_SQLBIT = 50, /* 0x32 */\n- 209#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT\n- 210 BCP_TYPE_SQLBITN = 104, /* 0x68 */\n- 211#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN\n- 212 BCP_TYPE_SQLTEXT = 35, /* 0x23 */\n- 213#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT\n- 214 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */\n- 215#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT\n- 216 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */\n- 217#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE\n- 218 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */\n- 219#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4\n- 220 BCP_TYPE_SQLMONEY = 60, /* 0x3C */\n- 221#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY\n- 222 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */\n- 223#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4\n- 224 BCP_TYPE_SQLREAL = 59, /* 0x3B */\n- 225 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */\n- 226#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL\n- 227#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4\n- 228 BCP_TYPE_SQLBINARY = 45, /* 0x2D */\n- 229#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY\n- 230 BCP_TYPE_SQLVOID = 31, /* 0x1F */\n- 231#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID\n- 232 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */\n- 233#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY\n- 234 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */\n- 235#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC\n- 236 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */\n- 237#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL\n- 238 BCP_TYPE_SQLFLTN = 109, /* 0x6D */\n- 239#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN\n- 240 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */\n- 241#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN\n- 242 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */\n- 243#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN\n- 244 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */\n- 245#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR\n- 246 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */\n- 247#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID\n- 248 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */\n- 249#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2\n- 250};\n- 251\n- 252typedef struct\n- 253{\n- 254 int dtdays;\n- 255 int dttime;\n- 256} DBDATETIME;\n- 257\n- 258#ifdef _MSC_VER\n- 259#define TDSODBC_INLINE __inline\n- 260#else\n- 261#define TDSODBC_INLINE __inline__\n- 262#endif\n- 263\n- 264struct tdsodbc_impl_bcp_init_params\n- 265{\n- 266 const void *tblname;\n- 267 const void *hfile;\n- 268 const void *errfile;\n- 269 int direction;\n- 270};\n- 271\n- 272static TDSODBC_INLINE RETCODE SQL_API\n- 273bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char\n-*errfile, int direction)\n- 274{\n- 275 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile,\n-direction};\n- 276 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 277}\n- 278\n- 279static TDSODBC_INLINE RETCODE SQL_API\n- 280bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const\n-SQLWCHAR *errfile, int direction)\n- 281{\n- 282 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile,\n-direction};\n- 283 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 284}\n- 285\n- 286struct tdsodbc_impl_bcp_control_params\n- 287{\n- 288 int field;\n- 289 void *value;\n- 290};\n- 291\n- 292static TDSODBC_INLINE RETCODE SQL_API\n- 293bcp_control(HDBC hdbc, int field, void *value)\n- 294{\n- 295 struct tdsodbc_impl_bcp_control_params params = {field, value};\n- 296 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 297}\n- 298\n- 299struct tdsodbc_impl_bcp_colptr_params\n- 300{\n- 301 const unsigned char * colptr;\n- 302 int table_column;\n- 303};\n- 304\n- 305static TDSODBC_INLINE RETCODE SQL_API\n- 306bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)\n- 307{\n- 308 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};\n- 309 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 310}\n- 311\n- 312static TDSODBC_INLINE RETCODE SQL_API\n- 313bcp_sendrow(HDBC hdbc)\n- 314{\n- 315 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 316}\n- 317\n- 318struct tdsodbc_impl_bcp_batch_params\n- 319{\n- 320 int rows;\n- 321};\n- 322\n- 323static TDSODBC_INLINE int SQL_API\n- 324bcp_batch(HDBC hdbc)\n- 325{\n- 326 struct tdsodbc_impl_bcp_batch_params params = {-1};\n- 327 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;\n- 328}\n- 329\n- 330struct tdsodbc_impl_bcp_done_params\n- 331{\n- 332 int rows;\n- 333};\n- 334\n- 335static TDSODBC_INLINE int SQL_API\n- 336bcp_done(HDBC hdbc)\n- 337{\n- 338 struct tdsodbc_impl_bcp_done_params params = {-1};\n- 339 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;\n- 340}\n- 341\n- 342struct tdsodbc_impl_bcp_bind_params\n- 343{\n- 344 const unsigned char * varaddr;\n- 345 int prefixlen;\n- 346 int varlen;\n- 347 const unsigned char * terminator;\n- 348 int termlen;\n- 349 int vartype;\n- 350 int table_column;\n- 351};\n- 352\n- 353static TDSODBC_INLINE RETCODE SQL_API\n- 354bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int\n-varlen,\n- 355 const unsigned char * terminator, int termlen, int vartype, int\n-table_column)\n- 356{\n- 357 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen,\n-terminator, termlen, vartype, table_column};\n- 358 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n-SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n- 359}\n- 360\n- 361#ifdef UNICODE\n- 362#define bcp_init bcp_initW\n- 363#else\n- 364#define bcp_init bcp_initA\n- 365#endif\n- 366\n- 367#endif /* TDSODBC_BCP */\n- 368\n- 369#ifdef __cplusplus\n- 370}\n- 371#endif\n- 372\n- 373#endif /* _odbcss_h_ */\n-bcp_control\n-RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)\n-Set BCP options for uploading a datafile.\n-Definition bcp.c:544\n-bcp_colptr\n-RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)\n-Override bcp_bind() by pointing to a different host variable.\n-Definition bcp.c:671\n-bcp_bind\n-RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen,\n-BYTE *terminator, int termlen, int db_vartype, int table_column)\n-Bind a program host variable to a database column.\n-Definition bcp.c:2079\n-bcp_done\n-DBINT bcp_done(DBPROCESS *dbproc)\n-Conclude the transfer of data from program variables.\n-Definition bcp.c:2037\n-bcp_batch\n-DBINT bcp_batch(DBPROCESS *dbproc)\n-Commit a set of rows to the table.\n-Definition bcp.c:2010\n-bcp_sendrow\n-RETCODE bcp_sendrow(DBPROCESS *dbproc)\n-Write data in host variables to the table.\n-Definition bcp.c:1381\n-tagSS_TIME2_STRUCT\n-Definition odbcss.h:132\n-tagSS_TIMESTAMPOFFSET_STRUCT\n-Definition odbcss.h:139\n+ 57#endif\n+LOGINREC\n+Definition bsqlodbc.c:100\n+tds_dblib_dbprocess\n+Definition dblib.h:123\n DBDATETIME\n Definition sybdb.h:295\n+tds_sybase_dbdaterec\n+Definition sybdb.h:474\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00485_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00485_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/ctlib.h Source File\n+FreeTDS API: include/config.h Source File\n \n \n \n \n \n \n \n@@ -74,359 +74,796 @@\n \n
    \n \n
    \n \n
    \n-
    ctlib.h
    \n+
    config.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _ctlib_h_
    \n-
    21#define _ctlib_h_
    \n-
    22
    \n-
    23#include <freetds/tds.h>
    \n-
    24#include <freetds/convert.h>
    \n-
    25#include <freetds/utils/string.h>
    \n+
    1/* include/config.h. Generated from config.h.in by configure. */
    \n+
    2/* include/config.h.in. Generated from configure.ac by autoheader. */
    \n+
    3
    \n+
    4#define _freetds_config_h_
    \n+
    5
    \n+
    6/* Define if building universal (internal helper macro) */
    \n+
    7/* #undef AC_APPLE_UNIVERSAL_BUILD */
    \n+
    8
    \n+
    9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */
    \n+
    10/* #undef BSD_COMP */
    \n+
    11
    \n+
    12/* Define to 1 if using 'alloca.c'. */
    \n+
    13/* #undef C_ALLOCA */
    \n+
    14
    \n+
    15/* Define to enable work in progress code */
    \n+
    16/* #undef ENABLE_DEVELOPING */
    \n+
    17
    \n+
    18/* Define to enable extra checks on code */
    \n+
    19/* #undef ENABLE_EXTRA_CHECKS */
    \n+
    20
    \n+
    21/* Defined if --enable-krb5 used and library detected */
    \n+
    22#define ENABLE_KRB5 1
    \n+
    23
    \n+
    24/* Define to enable MARS support */
    \n+
    25#define ENABLE_ODBC_MARS 1
    \n
    26
    \n-
    27/*
    \n-
    28 * Internal (not part of the exposed API) prototypes and such.
    \n-
    29 */
    \n-
    30
    \n-
    31#include <freetds/pushvis.h>
    \n+
    27/* Define to enable ODBC wide string support */
    \n+
    28#define ENABLE_ODBC_WIDE 1
    \n+
    29
    \n+
    30/* Define to 1 if GNU tls use nettle as backend. */
    \n+
    31#define GNUTLS_USE_NETTLE 1
    \n
    32
    \n-
    33#ifdef __cplusplus
    \n-
    34extern "C"
    \n-
    35{
    \n-
    36#if 0
    \n-
    37}
    \n-
    38#endif
    \n-
    39#endif
    \n-
    40
    \n-
    41/*
    \n-
    42 * internal types
    \n-
    43 */
    \n-
    \n-\n-
    45{
    \n-
    46 short cs_expose_formats;
    \n-
    47};
    \n-
    \n-
    48
    \n-
    49/* Code changed for error handling */
    \n-
    50/* Code changes starts here - CT_DIAG - 01 */
    \n-
    51
    \n-
    52/* This structure is used in CT_DIAG */
    \n+
    33/* Define to 1 if you have the `alarm' function. */
    \n+
    34#define HAVE_ALARM 1
    \n+
    35
    \n+
    36/* Define to 1 if you have 'alloca', as a function or macro. */
    \n+
    37#define HAVE_ALLOCA 1
    \n+
    38
    \n+
    39/* Define to 1 if <alloca.h> works. */
    \n+
    40#define HAVE_ALLOCA_H 1
    \n+
    41
    \n+
    42/* Define to 1 if you have the <arpa/inet.h> header file. */
    \n+
    43#define HAVE_ARPA_INET_H 1
    \n+
    44
    \n+
    45/* Define to 1 if you have the `ASN1_STRING_get0_data' function. */
    \n+
    46/* #undef HAVE_ASN1_STRING_GET0_DATA */
    \n+
    47
    \n+
    48/* Define to 1 if you have the `asprintf' function. */
    \n+
    49#define HAVE_ASPRINTF 1
    \n+
    50
    \n+
    51/* Define to 1 if you have the `basename' function. */
    \n+
    52#define HAVE_BASENAME 1
    \n
    53
    \n-
    \n-\n-
    55{
    \n-
    56 CS_CLIENTMSG *clientmsg;
    \n-
    57 struct cs_diag_msg_client *next;
    \n-
    58};
    \n-
    \n+
    54/* Define to 1 if you have the `BIO_get_data' function. */
    \n+
    55/* #undef HAVE_BIO_GET_DATA */
    \n+
    56
    \n+
    57/* Define if you have the clock_gettime function. */
    \n+
    58#define HAVE_CLOCK_GETTIME 1
    \n
    59
    \n-
    \n-\n-
    61{
    \n-
    62 CS_SERVERMSG *servermsg;
    \n-
    63 struct cs_diag_msg_svr *next;
    \n-
    64};
    \n-
    \n+
    60/* Define to 1 if you have the <com_err.h> header file. */
    \n+
    61#define HAVE_COM_ERR_H 1
    \n+
    62
    \n+
    63/* Define to 1 if you have the `daemon' function. */
    \n+
    64#define HAVE_DAEMON 1
    \n
    65
    \n-
    66/* Code changes ends here - CT_DIAG - 01 */
    \n-
    67
    \n-
    \n-\n-
    69{
    \n-
    70 CS_CLIENTMSG *msg;
    \n-
    71 struct cs_diag_msg *next;
    \n-
    72};
    \n-
    \n-
    73
    \n-
    \n-\n-
    75{
    \n-
    76 CS_INT date_convert_fmt;
    \n-
    77 CS_INT cs_errhandletype;
    \n-
    78 CS_INT cs_diag_msglimit;
    \n-
    79
    \n-
    80 /* added for storing the maximum messages limit CT_DIAG */
    \n-
    81 /* code changes starts here - CT_DIAG - 02 */
    \n-
    82
    \n-
    83 CS_INT cs_diag_msglimit_client;
    \n-
    84 CS_INT cs_diag_msglimit_server;
    \n-
    85 CS_INT cs_diag_msglimit_total;
    \n-
    86 struct cs_diag_msg_client *clientstore;
    \n-
    87 struct cs_diag_msg_svr *svrstore;
    \n-
    88
    \n-
    89 /* code changes ends here - CT_DIAG - 02 */
    \n+
    66/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
    \n+
    67 */
    \n+
    68/* #undef HAVE_DECL_TZNAME */
    \n+
    69
    \n+
    70/* Define to 1 if you have the <dirent.h> header file. */
    \n+
    71#define HAVE_DIRENT_H 1
    \n+
    72
    \n+
    73/* Define to 1 if you have the <dlfcn.h> header file. */
    \n+
    74#define HAVE_DLFCN_H 1
    \n+
    75
    \n+
    76/* Define to 1 if you have the <errno.h> header file. */
    \n+
    77#define HAVE_ERRNO_H 1
    \n+
    78
    \n+
    79/* Define to 1 if you have the `error_message' function. */
    \n+
    80/* #undef HAVE_ERROR_MESSAGE */
    \n+
    81
    \n+
    82/* Define to 1 if you have the `eventfd' function. */
    \n+
    83#define HAVE_EVENTFD 1
    \n+
    84
    \n+
    85/* Define to 1 if you have the <fcntl.h> header file. */
    \n+
    86#define HAVE_FCNTL_H 1
    \n+
    87
    \n+
    88/* Define to 1 if you have the `fork' function. */
    \n+
    89#define HAVE_FORK 1
    \n
    90
    \n-
    91 struct cs_diag_msg *msgstore;
    \n-
    92 CS_CSLIBMSG_FUNC _cslibmsg_cb;
    \n-
    93 CS_CLIENTMSG_FUNC _clientmsg_cb;
    \n-
    94 CS_SERVERMSG_FUNC _servermsg_cb;
    \n-
    95 /* code changes start here - CS_CONFIG - 01*/
    \n-
    96 void *userdata;
    \n-
    97 int userdata_len;
    \n-
    98 /* code changes end here - CS_CONFIG - 01*/
    \n-
    99 TDSCONTEXT *tds_ctx;
    \n-
    100 CS_CONFIG config;
    \n-\n-\n-
    103};
    \n-
    \n+
    91/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
    \n+
    92#define HAVE_FSEEKO 1
    \n+
    93
    \n+
    94/* Define to 1 if you have the `fstat' function. */
    \n+
    95#define HAVE_FSTAT 1
    \n+
    96
    \n+
    97/* Define to 1 if your system provides the 5-parameter version of
    \n+
    98 gethostbyaddr_r(). */
    \n+
    99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */
    \n+
    100
    \n+
    101/* Define to 1 if your system provides the 7-parameter version of
    \n+
    102 gethostbyaddr_r(). */
    \n+
    103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */
    \n
    104
    \n-
    105/*
    \n-
    106 * internal typedefs
    \n-
    107 */
    \n-
    \n-
    108typedef struct _ct_colinfo
    \n-
    109{
    \n-
    110 TDS_SMALLINT *indicator;
    \n-
    111}
    \n-
    \n-\n-
    113
    \n-
    114typedef struct _cs_dynamic CS_DYNAMIC;
    \n-
    115
    \n-
    \n-\n-
    117{
    \n-
    118 CS_CONTEXT *ctx;
    \n-\n-\n-
    121 CS_CLIENTMSG_FUNC _clientmsg_cb;
    \n-
    122 CS_SERVERMSG_FUNC _servermsg_cb;
    \n-
    123 void *userdata;
    \n-
    124 int userdata_len;
    \n-
    125 CS_LOCALE *locale;
    \n-
    126 CS_COMMAND *cmds;
    \n-
    127 CS_DYNAMIC *dynlist;
    \n-
    128 char *server_addr;
    \n-
    129 bool network_auth;
    \n-
    130};
    \n-
    \n-
    131
    \n-
    132/*
    \n-
    133 * Formerly CSREMOTE_PROC_PARAM, this structure can be used in other
    \n-
    134 * places, too.
    \n-
    135 */
    \n+
    105/* Define to 1 if your system provides the 8-parameter version of
    \n+
    106 gethostbyaddr_r(). */
    \n+
    107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1
    \n+
    108
    \n+
    109/* Define to 1 if your system provides the 3-parameter version of
    \n+
    110 gethostbyname_r(). */
    \n+
    111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */
    \n+
    112
    \n+
    113/* Define to 1 if your system provides the 5-parameter version of
    \n+
    114 gethostbyname_r(). */
    \n+
    115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */
    \n+
    116
    \n+
    117/* Define to 1 if your system provides the 6-parameter version of
    \n+
    118 gethostbyname_r(). */
    \n+
    119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1
    \n+
    120
    \n+
    121/* Define to 1 if your system provides the 4-parameter version of
    \n+
    122 getpwuid_r(). */
    \n+
    123/* #undef HAVE_FUNC_GETPWUID_R_4 */
    \n+
    124
    \n+
    125/* Define to 1 if your system getpwuid_r() have 4 parameters and return struct
    \n+
    126 passwd*. */
    \n+
    127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */
    \n+
    128
    \n+
    129/* Define to 1 if your system provides the 5-parameter version of
    \n+
    130 getpwuid_r(). */
    \n+
    131#define HAVE_FUNC_GETPWUID_R_5 1
    \n+
    132
    \n+
    133/* Define to 1 if your system provides the 4-parameter version of
    \n+
    134 getservbyname_r(). */
    \n+
    135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */
    \n
    136
    \n-
    \n-
    137typedef struct _cs_param
    \n-
    138{
    \n-
    139 struct _cs_param *next;
    \n-
    140 char *name;
    \n-
    141 int status;
    \n-
    142 int datatype;
    \n-
    143 CS_INT maxlen;
    \n-
    144 CS_INT scale;
    \n-
    145 CS_INT precision;
    \n-
    146 CS_INT *datalen;
    \n-
    147 CS_SMALLINT *ind;
    \n-
    148 CS_BYTE *value;
    \n-
    149 int param_by_value;
    \n-
    150 CS_INT datalen_value;
    \n-
    151 CS_SMALLINT indicator_value;
    \n-
    152} CS_PARAM;
    \n-
    \n+
    137/* Define to 1 if your system provides the 5-parameter version of
    \n+
    138 getservbyname_r(). */
    \n+
    139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */
    \n+
    140
    \n+
    141/* Define to 1 if your system provides the 6-parameter version of
    \n+
    142 getservbyname_r(). */
    \n+
    143#define HAVE_FUNC_GETSERVBYNAME_R_6 1
    \n+
    144
    \n+
    145/* Define to 1 if your localtime_r return a int. */
    \n+
    146/* #undef HAVE_FUNC_LOCALTIME_R_INT */
    \n+
    147
    \n+
    148/* Define to 1 if your localtime_r return a struct tm*. */
    \n+
    149#define HAVE_FUNC_LOCALTIME_R_TM 1
    \n+
    150
    \n+
    151/* Define if you have getaddrinfo function */
    \n+
    152#define HAVE_GETADDRINFO 1
    \n
    153
    \n-
    154/*
    \n-
    155 * Code added for RPC functionality - SUHA
    \n-
    156 * RPC Code changes starts here
    \n-
    157 */
    \n-
    158
    \n-\n-
    160
    \n-
    \n-
    161typedef struct _csremote_proc
    \n-
    162{
    \n-
    163 char *name;
    \n-
    164 CS_SMALLINT options;
    \n-
    165 CSREMOTE_PROC_PARAM *param_list;
    \n-\n-
    \n-
    167
    \n-
    168/*
    \n-
    169 * Structure CS_COMMAND changed for RPC functionality -SUHA
    \n-
    170 * Added CSREMOTE_PROC *rpc to CS_COMMAND structure
    \n-
    171 */
    \n-
    172
    \n-\n+
    154/* Define to 1 if you have the `gethostname' function. */
    \n+
    155#define HAVE_GETHOSTNAME 1
    \n+
    156
    \n+
    157/* Define to 1 if you have the `gethrtime' function. */
    \n+
    158/* #undef HAVE_GETHRTIME */
    \n+
    159
    \n+
    160/* Define to 1 if you have the `getipnodebyaddr' function. */
    \n+
    161/* #undef HAVE_GETIPNODEBYADDR */
    \n+
    162
    \n+
    163/* Define to 1 if you have the `getipnodebyname' function. */
    \n+
    164/* #undef HAVE_GETIPNODEBYNAME */
    \n+
    165
    \n+
    166/* Define to 1 if you have the `getopt' function. */
    \n+
    167#define HAVE_GETOPT 1
    \n+
    168
    \n+
    169/* Define to 1 if you have the <getopt.h> header file. */
    \n+
    170#define HAVE_GETOPT_H 1
    \n+
    171
    \n+
    172/* Define if your getopt(3) defines and uses optreset */
    \n+
    173/* #undef HAVE_GETOPT_OPTRESET */
    \n
    174
    \n-
    \n-\n-
    176{
    \n-
    177 struct _cs_dynamic *next;
    \n-
    178 char *id;
    \n-
    179 char *stmt;
    \n-
    180 CS_DYNAMIC_PARAM *param_list;
    \n-
    181 TDSDYNAMIC *tdsdyn;
    \n-
    182};
    \n-
    \n+
    175/* Define to 1 if you have the `getpwuid' function. */
    \n+
    176#define HAVE_GETPWUID 1
    \n+
    177
    \n+
    178/* Define to 1 if you have the `getpwuid_r' function. */
    \n+
    179#define HAVE_GETPWUID_R 1
    \n+
    180
    \n+
    181/* Define to 1 if you have the `gettimeofday' function. */
    \n+
    182#define HAVE_GETTIMEOFDAY 1
    \n
    183
    \n-
    184/* specific FreeTDS commands */
    \n-
    185#define CS_DYNAMIC_CMD 160
    \n-
    186#define CS_CUR_CMD 161
    \n-
    187
    \n-
    188/* values for cs_command.results_state */
    \n+
    184/* Define to 1 if you have the `getuid' function. */
    \n+
    185#define HAVE_GETUID 1
    \n+
    186
    \n+
    187/* Define if you have GMP library */
    \n+
    188#define HAVE_GMP 1
    \n
    189
    \n-
    190#define _CS_RES_NONE -1
    \n-
    191#define _CS_RES_INIT 0
    \n-
    192#define _CS_RES_RESULTSET_EMPTY 1
    \n-
    193#define _CS_RES_RESULTSET_ROWS 2
    \n-
    194#define _CS_RES_STATUS 3
    \n-
    195#define _CS_RES_CMD_DONE 4
    \n-
    196#define _CS_RES_CMD_SUCCEED 5
    \n-
    197#define _CS_RES_END_RESULTS 6
    \n-
    198#define _CS_RES_DESCRIBE_RESULT 7
    \n+
    190/* Define to 1 if you have GnuTLS. */
    \n+
    191#define HAVE_GNUTLS 1
    \n+
    192
    \n+
    193/* Define to 1 if you have the <gnutls/abstract.h> header file. */
    \n+
    194#define HAVE_GNUTLS_ABSTRACT_H 1
    \n+
    195
    \n+
    196/* Define to 1 if you have the `gnutls_certificate_set_verify_function'
    \n+
    197 function. */
    \n+
    198#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1
    \n
    199
    \n-
    200/* values for cs_command.command_state */
    \n-
    201
    \n-
    202#define _CS_COMMAND_IDLE 0
    \n-
    203#define _CS_COMMAND_BUILDING 1
    \n-
    204#define _CS_COMMAND_READY 2
    \n-
    205#define _CS_COMMAND_SENT 3
    \n-
    206
    \n-
    207/* values for cs_command.cancel_state */
    \n-
    208#define _CS_CANCEL_NOCANCEL 0
    \n-
    209#define _CS_CANCEL_PENDING 1
    \n-
    210
    \n-
    \n-\n-
    212{
    \n-
    213 struct _cs_command *next;
    \n-
    214 CS_INT command_state;
    \n-
    215 CS_INT results_state;
    \n-
    216 CS_INT cancel_state;
    \n-
    217 CS_INT cursor_state;
    \n-
    218 CS_CONNECTION *con;
    \n-
    219 CS_INT command_type;
    \n-
    220 CS_CHAR *query;
    \n-
    221 short dynamic_cmd;
    \n-
    222 CS_DYNAMIC *dyn;
    \n-
    223 int row_prefetched;
    \n-
    224 int curr_result_type;
    \n-
    225 int bind_count;
    \n-
    226 int get_data_item;
    \n-
    227 int get_data_bytes_returned;
    \n-
    228 CS_IODESC *iodesc;
    \n-
    229 CS_INT send_data_started;
    \n-
    230 CSREMOTE_PROC *rpc;
    \n-
    231 CS_PARAM *input_params;
    \n-
    232 CS_INT client_cursor_id;
    \n-
    233 TDSCURSOR *cursor;
    \n-
    234 void *userdata;
    \n-
    235 int userdata_len;
    \n-
    236};
    \n-
    \n-
    237
    \n-
    \n-\n-
    239{
    \n-
    240 TDSBCPINFO bcpinfo;
    \n-
    241};
    \n-
    \n-
    242
    \n-
    243
    \n-
    244#define _CS_ERRHAND_INLINE 1
    \n-
    245#define _CS_ERRHAND_CB 2
    \n-
    246
    \n-
    \n-\n-
    248{
    \n-
    249 char *language;
    \n-
    250 char *charset;
    \n-
    251 char *time;
    \n-
    252 char *collate;
    \n-
    253};
    \n-
    \n-
    254
    \n-
    255/* internal defines for cursor processing */
    \n+
    200/* Define to 1 if you have the `gnutls_record_disable_padding' function. */
    \n+
    201#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1
    \n+
    202
    \n+
    203/* Define to 1 if you have the `gnutls_rnd' function. */
    \n+
    204#define HAVE_GNUTLS_RND 1
    \n+
    205
    \n+
    206/* Define if you have the iconv() function and it works. */
    \n+
    207#define HAVE_ICONV 1
    \n+
    208
    \n+
    209/* Define to 1 if you have the `inet_ntoa_r' function. */
    \n+
    210/* #undef HAVE_INET_NTOA_R */
    \n+
    211
    \n+
    212/* Define to 1 if you have the `inet_ntop' function. */
    \n+
    213#define HAVE_INET_NTOP 1
    \n+
    214
    \n+
    215/* Define to 1 if you have the <inttypes.h> header file. */
    \n+
    216#define HAVE_INTTYPES_H 1
    \n+
    217
    \n+
    218/* Define to 1 if you have the <iodbcinst.h> header file. */
    \n+
    219/* #undef HAVE_IODBCINST_H */
    \n+
    220
    \n+
    221/* Define to 1 if you have the <langinfo.h> header file. */
    \n+
    222#define HAVE_LANGINFO_H 1
    \n+
    223
    \n+
    224/* Define to 1 if you have the <libgen.h> header file. */
    \n+
    225#define HAVE_LIBGEN_H 1
    \n+
    226
    \n+
    227/* Define to 1 if you have the <limits.h> header file. */
    \n+
    228#define HAVE_LIMITS_H 1
    \n+
    229
    \n+
    230/* Define to 1 if you have the <localcharset.h> header file. */
    \n+
    231/* #undef HAVE_LOCALCHARSET_H */
    \n+
    232
    \n+
    233/* Define to 1 if you have the `locale_charset' function. */
    \n+
    234/* #undef HAVE_LOCALE_CHARSET */
    \n+
    235
    \n+
    236/* Define to 1 if you have the <locale.h> header file. */
    \n+
    237#define HAVE_LOCALE_H 1
    \n+
    238
    \n+
    239/* Define to 1 if you have the `localtime_r' function. */
    \n+
    240#define HAVE_LOCALTIME_R 1
    \n+
    241
    \n+
    242/* Define to 1 if you have the <malloc.h> header file. */
    \n+
    243#define HAVE_MALLOC_H 1
    \n+
    244
    \n+
    245/* Define to 1 if your system provides the malloc_options variable. */
    \n+
    246/* #undef HAVE_MALLOC_OPTIONS */
    \n+
    247
    \n+
    248/* Define to 1 if you have the <minix/config.h> header file. */
    \n+
    249/* #undef HAVE_MINIX_CONFIG_H */
    \n+
    250
    \n+
    251/* Define to 1 if you have the `nanosleep' function. */
    \n+
    252#define HAVE_NANOSLEEP 1
    \n+
    253
    \n+
    254/* Define to 1 if you have the <netdb.h> header file. */
    \n+
    255#define HAVE_NETDB_H 1
    \n
    256
    \n-
    257#define _CS_CURS_TYPE_UNACTIONED 0
    \n-
    258#define _CS_CURS_TYPE_REQUESTED 1
    \n-
    259#define _CS_CURS_TYPE_SENT 2
    \n-
    260
    \n-
    261/*
    \n-
    262 * internal prototypes
    \n-
    263 */
    \n-
    264TDSRET _ct_handle_server_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
    \n-
    265int _ct_handle_client_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
    \n-
    266TDS_SERVER_TYPE _ct_get_server_type(TDSSOCKET *tds, int datatype);
    \n-
    267int _ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO *bindinfo, CS_INT offset);
    \n-
    268int _ct_get_client_type(const TDSCOLUMN *col, bool describe);
    \n-
    269void _ctclient_msg(CS_CONNECTION * con, const char *funcname, int layer, int origin, int severity, int number,
    \n-
    270 const char *fmt, ...);
    \n-
    271CS_INT _ct_diag_clearmsg(CS_CONTEXT * context, CS_INT type);
    \n-
    272void _cs_locale_free(CS_LOCALE *locale);
    \n-
    273CS_LOCALE *_cs_locale_copy(CS_LOCALE *orig);
    \n-
    274int _cs_locale_copy_inplace(CS_LOCALE *new_locale, CS_LOCALE *orig);
    \n-
    275
    \n-
    276int _cs_convert_not_client(CS_CONTEXT *ctx, const TDSCOLUMN *curcol, CONV_RESULT *convert_buffer, unsigned char **p_src);
    \n+
    257/* Define to 1 if you have the <netinet/in.h> header file. */
    \n+
    258#define HAVE_NETINET_IN_H 1
    \n+
    259
    \n+
    260/* Define to 1 if you have the <netinet/tcp.h> header file. */
    \n+
    261#define HAVE_NETINET_TCP_H 1
    \n+
    262
    \n+
    263/* Define to 1 if nettle is present. */
    \n+
    264#define HAVE_NETTLE 1
    \n+
    265
    \n+
    266/* Define to 1 if you have the `nl_langinfo' function. */
    \n+
    267#define HAVE_NL_LANGINFO 1
    \n+
    268
    \n+
    269/* Define to 1 if you have the <odbcss.h> header file. */
    \n+
    270/* #undef HAVE_ODBCSS_H */
    \n+
    271
    \n+
    272/* Define if you have the OpenSSL. */
    \n+
    273/* #undef HAVE_OPENSSL */
    \n+
    274
    \n+
    275/* Define to 1 if you have the <paths.h> header file. */
    \n+
    276#define HAVE_PATHS_H 1
    \n
    277
    \n-
    278#ifdef __cplusplus
    \n-
    279#if 0
    \n-
    280{
    \n-
    281#endif
    \n-
    282}
    \n-
    283#endif
    \n-
    284
    \n-
    285#include <freetds/popvis.h>
    \n+
    278/* Define to 1 if you have the `poll' function. */
    \n+
    279#define HAVE_POLL 1
    \n+
    280
    \n+
    281/* Define to 1 if you have the <poll.h> header file. */
    \n+
    282#define HAVE_POLL_H 1
    \n+
    283
    \n+
    284/* Define if you have POSIX threads libraries and header files. */
    \n+
    285#define HAVE_PTHREAD 1
    \n
    286
    \n-
    287#endif
    \n-
    Main include file for libtds.
    \n-
    Definition cstypes.h:97
    \n-
    Definition cstypes.h:177
    \n-
    Definition cstypes.h:191
    \n-
    Definition ctlib.h:45
    \n-
    Definition ctlib.h:55
    \n-
    Definition ctlib.h:61
    \n-
    Definition ctlib.h:69
    \n-
    Definition ctlib.h:75
    \n-
    int login_timeout
    not used unless positive
    Definition ctlib.h:101
    \n-
    int query_timeout
    not used unless positive
    Definition ctlib.h:102
    \n-
    Definition ctlib.h:109
    \n-
    Definition ctlib.h:117
    \n-
    Definition ctlib.h:138
    \n-
    Definition ctlib.h:162
    \n-
    Definition ctlib.h:176
    \n-
    Definition ctlib.h:212
    \n-
    Definition ctlib.h:239
    \n-
    Definition ctlib.h:248
    \n-
    Definition convert.h:34
    \n-
    Definition tds.h:517
    \n-
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n-
    Hold information for any results.
    Definition tds.h:769
    \n-
    Definition tds.h:876
    \n-
    Holds informations about a cursor.
    Definition tds.h:937
    \n-
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n-
    Definition tds.h:1029
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n-
    Definition tds.h:1661
    \n+
    287/* Define to 1 if you have the `pthread_condattr_setclock' function. */
    \n+
    288#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
    \n+
    289
    \n+
    290/* Define to 1 if you have the `pthread_cond_timedwait' function. */
    \n+
    291#define HAVE_PTHREAD_COND_TIMEDWAIT 1
    \n+
    292
    \n+
    293/* Define to 1 if you have the `pthread_cond_timedwait_relative_np' function.
    \n+
    294 */
    \n+
    295/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */
    \n+
    296
    \n+
    297/* Define to 1 if you have the `putenv' function. */
    \n+
    298#define HAVE_PUTENV 1
    \n+
    299
    \n+
    300/* Define to 1 if you have the `readdir_r' function. */
    \n+
    301#define HAVE_READDIR_R 1
    \n+
    302
    \n+
    303/* Define to 1 if you have the GNU Readline library. */
    \n+
    304#define HAVE_READLINE 1
    \n+
    305
    \n+
    306/* Define to 1 if you have the `readpassphrase' function. */
    \n+
    307/* #undef HAVE_READPASSPHRASE */
    \n+
    308
    \n+
    309/* Define to 1 if you have rl_inhibit_completion. */
    \n+
    310#define HAVE_RL_INHIBIT_COMPLETION 1
    \n+
    311
    \n+
    312/* Define to 1 if you have the `rl_on_new_line' function. */
    \n+
    313#define HAVE_RL_ON_NEW_LINE 1
    \n+
    314
    \n+
    315/* Define to 1 if you have the `rl_reset_line_state' function. */
    \n+
    316#define HAVE_RL_RESET_LINE_STATE 1
    \n+
    317
    \n+
    318/* Define to 1 if you have the <roken.h> header file. */
    \n+
    319/* #undef HAVE_ROKEN_H */
    \n+
    320
    \n+
    321/* Define to 1 if you have the `RSA_get0_key' function. */
    \n+
    322/* #undef HAVE_RSA_GET0_KEY */
    \n+
    323
    \n+
    324/* Define to 1 if you have the `setenv' function. */
    \n+
    325#define HAVE_SETENV 1
    \n+
    326
    \n+
    327/* Define to 1 if you have the `setitimer' function. */
    \n+
    328#define HAVE_SETITIMER 1
    \n+
    329
    \n+
    330/* Define to 1 if you have the `setrlimit' function. */
    \n+
    331#define HAVE_SETRLIMIT 1
    \n+
    332
    \n+
    333/* Define to 1 if you have the <signal.h> header file. */
    \n+
    334#define HAVE_SIGNAL_H 1
    \n+
    335
    \n+
    336/* Define to 1 if you have the `socketpair' function. */
    \n+
    337#define HAVE_SOCKETPAIR 1
    \n+
    338
    \n+
    339/* Define to 1 if you have the SQLGetPrivateProfileString function. */
    \n+
    340#define HAVE_SQLGETPRIVATEPROFILESTRING 1
    \n+
    341
    \n+
    342/* Define if sqltypes.h define SQLLEN */
    \n+
    343#define HAVE_SQLLEN 1
    \n+
    344
    \n+
    345/* Define to 1 if the system has the type `SQLROWOFFSET'. */
    \n+
    346#define HAVE_SQLROWOFFSET 1
    \n+
    347
    \n+
    348/* Define to 1 if the system has the type `SQLROWSETSIZE'. */
    \n+
    349#define HAVE_SQLROWSETSIZE 1
    \n+
    350
    \n+
    351/* Define to 1 if the system has the type `SQLSETPOSIROW'. */
    \n+
    352#define HAVE_SQLSETPOSIROW 1
    \n+
    353
    \n+
    354/* Define to 1 if you have the <sql.h> header file. */
    \n+
    355#define HAVE_SQL_H 1
    \n+
    356
    \n+
    357/* Defined if not --disable-sspi and SSPI detected */
    \n+
    358/* #undef HAVE_SSPI */
    \n+
    359
    \n+
    360/* Define to 1 if you have the <stdbool.h> header file. */
    \n+
    361#define HAVE_STDBOOL_H 1
    \n+
    362
    \n+
    363/* Define to 1 if you have the <stddef.h> header file. */
    \n+
    364#define HAVE_STDDEF_H 1
    \n+
    365
    \n+
    366/* Define to 1 if you have the <stdint.h> header file. */
    \n+
    367#define HAVE_STDINT_H 1
    \n+
    368
    \n+
    369/* Define to 1 if you have the <stdio.h> header file. */
    \n+
    370#define HAVE_STDIO_H 1
    \n+
    371
    \n+
    372/* Define to 1 if you have the <stdlib.h> header file. */
    \n+
    373#define HAVE_STDLIB_H 1
    \n+
    374
    \n+
    375/* Define to 1 if you have the <strings.h> header file. */
    \n+
    376#define HAVE_STRINGS_H 1
    \n+
    377
    \n+
    378/* Define to 1 if you have the <string.h> header file. */
    \n+
    379#define HAVE_STRING_H 1
    \n+
    380
    \n+
    381/* Define to 1 if you have the `strlcat' function. */
    \n+
    382/* #undef HAVE_STRLCAT */
    \n+
    383
    \n+
    384/* Define to 1 if you have the `strlcpy' function. */
    \n+
    385/* #undef HAVE_STRLCPY */
    \n+
    386
    \n+
    387/* Define to 1 if you have the `strsep' function. */
    \n+
    388#define HAVE_STRSEP 1
    \n+
    389
    \n+
    390/* Define to 1 if you have the `strtok_r' function. */
    \n+
    391#define HAVE_STRTOK_R 1
    \n+
    392
    \n+
    393/* Define to 1 if you have the `strtok_s' function. */
    \n+
    394/* #undef HAVE_STRTOK_S */
    \n+
    395
    \n+
    396/* Define to 1 if `tm_zone' is a member of `struct tm'. */
    \n+
    397#define HAVE_STRUCT_TM_TM_ZONE 1
    \n+
    398
    \n+
    399/* Define to 1 if `__tm_zone' is a member of `struct tm'. */
    \n+
    400/* #undef HAVE_STRUCT_TM___TM_ZONE */
    \n+
    401
    \n+
    402/* Define to 1 if you have the 'system' function */
    \n+
    403#define HAVE_SYSTEM 1
    \n+
    404
    \n+
    405/* Define to 1 if you have the <sys/eventfd.h> header file. */
    \n+
    406#define HAVE_SYS_EVENTFD_H 1
    \n+
    407
    \n+
    408/* Define to 1 if you have the <sys/ioctl.h> header file. */
    \n+
    409#define HAVE_SYS_IOCTL_H 1
    \n+
    410
    \n+
    411/* Define to 1 if you have the <sys/param.h> header file. */
    \n+
    412#define HAVE_SYS_PARAM_H 1
    \n+
    413
    \n+
    414/* Define to 1 if you have the <sys/resource.h> header file. */
    \n+
    415#define HAVE_SYS_RESOURCE_H 1
    \n+
    416
    \n+
    417/* Define to 1 if you have the <sys/select.h> header file. */
    \n+
    418#define HAVE_SYS_SELECT_H 1
    \n+
    419
    \n+
    420/* Define to 1 if you have the <sys/socket.h> header file. */
    \n+
    421#define HAVE_SYS_SOCKET_H 1
    \n+
    422
    \n+
    423/* Define to 1 if you have the <sys/stat.h> header file. */
    \n+
    424#define HAVE_SYS_STAT_H 1
    \n+
    425
    \n+
    426/* Define to 1 if you have the <sys/time.h> header file. */
    \n+
    427#define HAVE_SYS_TIME_H 1
    \n+
    428
    \n+
    429/* Define to 1 if you have the <sys/types.h> header file. */
    \n+
    430#define HAVE_SYS_TYPES_H 1
    \n+
    431
    \n+
    432/* Define to 1 if you have the <sys/wait.h> header file. */
    \n+
    433#define HAVE_SYS_WAIT_H 1
    \n+
    434
    \n+
    435/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
    \n+
    436 `HAVE_STRUCT_TM_TM_ZONE' instead. */
    \n+
    437#define HAVE_TM_ZONE 1
    \n+
    438
    \n+
    439/* Define to 1 if you don't have `tm_zone' but do have the external array
    \n+
    440 `tzname'. */
    \n+
    441/* #undef HAVE_TZNAME */
    \n+
    442
    \n+
    443/* Define to 1 if you have the <unistd.h> header file. */
    \n+
    444#define HAVE_UNISTD_H 1
    \n+
    445
    \n+
    446/* Define to 1 if you have the `usleep' function. */
    \n+
    447#define HAVE_USLEEP 1
    \n+
    448
    \n+
    449/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
    \n+
    450/* #undef HAVE_VALGRIND_MEMCHECK_H */
    \n+
    451
    \n+
    452/* Define to 1 if you have the `vasprintf' function. */
    \n+
    453#define HAVE_VASPRINTF 1
    \n+
    454
    \n+
    455/* Define to 1 if you have the `vsnprintf' function. */
    \n+
    456#define HAVE_VSNPRINTF 1
    \n+
    457
    \n+
    458/* Define to 1 if you have the <wchar.h> header file. */
    \n+
    459#define HAVE_WCHAR_H 1
    \n+
    460
    \n+
    461/* Define to 1 if you have the <windows.h> header file. */
    \n+
    462/* #undef HAVE_WINDOWS_H */
    \n+
    463
    \n+
    464/* Define to 1 if you have the <winsock2.h> header file. */
    \n+
    465/* #undef HAVE_WINSOCK2_H */
    \n+
    466
    \n+
    467/* Define to 1 if you have the `_fseeki64' function. */
    \n+
    468/* #undef HAVE__FSEEKI64 */
    \n+
    469
    \n+
    470/* Define to 1 if you have the `_ftelli64' function. */
    \n+
    471/* #undef HAVE__FTELLI64 */
    \n+
    472
    \n+
    473/* Define to 1 if you have the `_lock_file' function. */
    \n+
    474/* #undef HAVE__LOCK_FILE */
    \n+
    475
    \n+
    476/* Define to 1 if you have the `_unlock_file' function. */
    \n+
    477/* #undef HAVE__UNLOCK_FILE */
    \n+
    478
    \n+
    479/* Define to 1 if you have the `_vscprintf' function. */
    \n+
    480/* #undef HAVE__VSCPRINTF */
    \n+
    481
    \n+
    482/* Define to 1 if you have the `_vsnprintf' function. */
    \n+
    483/* #undef HAVE__VSNPRINTF */
    \n+
    484
    \n+
    485/* Define to 1 if you have the `_xpg_accept' function. */
    \n+
    486/* #undef HAVE__XPG_ACCEPT */
    \n+
    487
    \n+
    488/* Define to 1 if you have the `_xpg_getpeername' function. */
    \n+
    489/* #undef HAVE__XPG_GETPEERNAME */
    \n+
    490
    \n+
    491/* Define to 1 if you have the `_xpg_getsockname' function. */
    \n+
    492/* #undef HAVE__XPG_GETSOCKNAME */
    \n+
    493
    \n+
    494/* Define to 1 if you have the `_xpg_getsockopt' function. */
    \n+
    495/* #undef HAVE__XPG_GETSOCKOPT */
    \n+
    496
    \n+
    497/* Define to 1 if you have the `_xpg_recvfrom' function. */
    \n+
    498/* #undef HAVE__XPG_RECVFROM */
    \n+
    499
    \n+
    500/* Define to 1 if you have the `__accept' function. */
    \n+
    501/* #undef HAVE___ACCEPT */
    \n+
    502
    \n+
    503/* Define to 1 if you have the `__getpeername' function. */
    \n+
    504/* #undef HAVE___GETPEERNAME */
    \n+
    505
    \n+
    506/* Define to 1 if you have the `__getsockname' function. */
    \n+
    507/* #undef HAVE___GETSOCKNAME */
    \n+
    508
    \n+
    509/* Define to 1 if you have the `__getsockopt' function. */
    \n+
    510/* #undef HAVE___GETSOCKOPT */
    \n+
    511
    \n+
    512/* Define to 1 if you have the `__recvfrom' function. */
    \n+
    513/* #undef HAVE___RECVFROM */
    \n+
    514
    \n+
    515/* Define as const if the declaration of iconv() needs const. */
    \n+
    516#define ICONV_CONST
    \n+
    517
    \n+
    518/* Define to value of INADDR_NONE if not provided by your system header files.
    \n+
    519 */
    \n+
    520/* #undef INADDR_NONE */
    \n+
    521
    \n+
    522/* Define to the sub-directory where libtool stores uninstalled libraries. */
    \n+
    523#define LT_OBJDIR ".libs/"
    \n+
    524
    \n+
    525/* Define to 1 if the BSD-style netdb interface is reentrant. */
    \n+
    526/* #undef NETDB_REENTRANT */
    \n+
    527
    \n+
    528/* Define to 1 if memset(0) sets pointers to NULL. */
    \n+
    529#define NULL_REP_IS_ZERO_BYTES 1
    \n+
    530
    \n+
    531/* Name of package */
    \n+
    532#define PACKAGE "freetds"
    \n+
    533
    \n+
    534/* Define to the address where bug reports for this package should be sent. */
    \n+
    535#define PACKAGE_BUGREPORT ""
    \n+
    536
    \n+
    537/* Define to the full name of this package. */
    \n+
    538#define PACKAGE_NAME "FreeTDS"
    \n+
    539
    \n+
    540/* Define to the full name and version of this package. */
    \n+
    541#define PACKAGE_STRING "FreeTDS 1.3.17"
    \n+
    542
    \n+
    543/* Define to the one symbol short name of this package. */
    \n+
    544#define PACKAGE_TARNAME "freetds"
    \n+
    545
    \n+
    546/* Define to the home page for this package. */
    \n+
    547#define PACKAGE_URL ""
    \n+
    548
    \n+
    549/* Define to the version of this package. */
    \n+
    550#define PACKAGE_VERSION "1.3.17"
    \n+
    551
    \n+
    552/* Define to necessary symbol if this constant uses a non-standard name on
    \n+
    553 your system. */
    \n+
    554/* #undef PTHREAD_CREATE_JOINABLE */
    \n+
    555
    \n+
    556/* The size of `char', as computed by sizeof. */
    \n+
    557#define SIZEOF_CHAR 1
    \n+
    558
    \n+
    559/* The size of `double', as computed by sizeof. */
    \n+
    560#define SIZEOF_DOUBLE 8
    \n+
    561
    \n+
    562/* The size of `float', as computed by sizeof. */
    \n+
    563#define SIZEOF_FLOAT 4
    \n+
    564
    \n+
    565/* The size of `int', as computed by sizeof. */
    \n+
    566#define SIZEOF_INT 4
    \n+
    567
    \n+
    568/* The size of `long', as computed by sizeof. */
    \n+
    569#define SIZEOF_LONG 4
    \n+
    570
    \n+
    571/* The size of `long double', as computed by sizeof. */
    \n+
    572#define SIZEOF_LONG_DOUBLE 8
    \n+
    573
    \n+
    574/* The size of `long long', as computed by sizeof. */
    \n+
    575#define SIZEOF_LONG_LONG 8
    \n+
    576
    \n+
    577/* The size of `short', as computed by sizeof. */
    \n+
    578#define SIZEOF_SHORT 2
    \n+
    579
    \n+
    580/* The size of `SQLWCHAR', as computed by sizeof. */
    \n+
    581#define SIZEOF_SQLWCHAR 2
    \n+
    582
    \n+
    583/* The size of `void *', as computed by sizeof. */
    \n+
    584#define SIZEOF_VOID_P 4
    \n+
    585
    \n+
    586/* The size of `wchar_t', as computed by sizeof. */
    \n+
    587#define SIZEOF_WCHAR_T 4
    \n+
    588
    \n+
    589/* The size of `__int64', as computed by sizeof. */
    \n+
    590#define SIZEOF___INT64 0
    \n+
    591
    \n+
    592/* If using the C implementation of alloca, define if you know the
    \n+
    593 direction of stack growth for your system; otherwise it will be
    \n+
    594 automatically deduced at runtime.
    \n+
    595 STACK_DIRECTION > 0 => grows toward higher addresses
    \n+
    596 STACK_DIRECTION < 0 => grows toward lower addresses
    \n+
    597 STACK_DIRECTION = 0 => direction of growth unknown */
    \n+
    598/* #undef STACK_DIRECTION */
    \n+
    599
    \n+
    600/* Define to 1 if all of the C90 standard headers exist (not just the ones
    \n+
    601 required in a freestanding environment). This macro is provided for
    \n+
    602 backward compatibility; new code need not use it. */
    \n+
    603#define STDC_HEADERS 1
    \n+
    604
    \n+
    605/* Define to use TDS 5.0 by default */
    \n+
    606/* #undef TDS50 */
    \n+
    607
    \n+
    608/* Define to use TDS 7.1 by default */
    \n+
    609/* #undef TDS71 */
    \n+
    610
    \n+
    611/* Define to use TDS 7.2 by default */
    \n+
    612/* #undef TDS72 */
    \n+
    613
    \n+
    614/* Define to use TDS 7.3 by default */
    \n+
    615/* #undef TDS73 */
    \n+
    616
    \n+
    617/* Define to use TDS 7.4 by default */
    \n+
    618/* #undef TDS74 */
    \n+
    619
    \n+
    620/* Define to 1 if your compiler supports __attribute__((destructor)). */
    \n+
    621#define TDS_ATTRIBUTE_DESTRUCTOR 1
    \n+
    622
    \n+
    623/* define to constant to use for clock_gettime */
    \n+
    624#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC
    \n+
    625
    \n+
    626/* Define if you have pthread with mutex support */
    \n+
    627#define TDS_HAVE_PTHREAD_MUTEX 1
    \n+
    628
    \n+
    629/* Define if stdio support locking */
    \n+
    630#define TDS_HAVE_STDIO_LOCKED 1
    \n+
    631
    \n+
    632/* define to prefix format string used for 64bit integers */
    \n+
    633#define TDS_I64_PREFIX "ll"
    \n+
    634
    \n+
    635/* Define if you don't care about thread safety */
    \n+
    636/* #undef TDS_NO_THREADSAFE */
    \n+
    637
    \n+
    638/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */
    \n+
    639#define TDS_SQLCOLATTRIBUTE_SQLLEN 1
    \n+
    640
    \n+
    641/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */
    \n+
    642#define TDS_SQLPARAMOPTIONS_SQLLEN 1
    \n+
    643
    \n+
    644/* Defined if --enable-sybase-compat used */
    \n+
    645#define TDS_SYBASE_COMPAT 1
    \n+
    646
    \n+
    647/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. This
    \n+
    648 macro is obsolete. */
    \n+
    649#define TIME_WITH_SYS_TIME 1
    \n+
    650
    \n+
    651/* Define to 1 if your <sys/time.h> declares `struct tm'. */
    \n+
    652/* #undef TM_IN_SYS_TIME */
    \n+
    653
    \n+
    654/* Enable extensions on AIX 3, Interix. */
    \n+
    655#ifndef _ALL_SOURCE
    \n+
    656# define _ALL_SOURCE 1
    \n+
    657#endif
    \n+
    658/* Enable general extensions on macOS. */
    \n+
    659#ifndef _DARWIN_C_SOURCE
    \n+
    660# define _DARWIN_C_SOURCE 1
    \n+
    661#endif
    \n+
    662/* Enable general extensions on Solaris. */
    \n+
    663#ifndef __EXTENSIONS__
    \n+
    664# define __EXTENSIONS__ 1
    \n+
    665#endif
    \n+
    666/* Enable GNU extensions on systems that have them. */
    \n+
    667#ifndef _GNU_SOURCE
    \n+
    668# define _GNU_SOURCE 1
    \n+
    669#endif
    \n+
    670/* Enable X/Open compliant socket functions that do not require linking
    \n+
    671 with -lxnet on HP-UX 11.11. */
    \n+
    672#ifndef _HPUX_ALT_XOPEN_SOCKET_API
    \n+
    673# define _HPUX_ALT_XOPEN_SOCKET_API 1
    \n+
    674#endif
    \n+
    675/* Identify the host operating system as Minix.
    \n+
    676 This macro does not affect the system headers' behavior.
    \n+
    677 A future release of Autoconf may stop defining this macro. */
    \n+
    678#ifndef _MINIX
    \n+
    679/* # undef _MINIX */
    \n+
    680#endif
    \n+
    681/* Enable general extensions on NetBSD.
    \n+
    682 Enable NetBSD compatibility extensions on Minix. */
    \n+
    683#ifndef _NETBSD_SOURCE
    \n+
    684# define _NETBSD_SOURCE 1
    \n+
    685#endif
    \n+
    686/* Enable OpenBSD compatibility extensions on NetBSD.
    \n+
    687 Oddly enough, this does nothing on OpenBSD. */
    \n+
    688#ifndef _OPENBSD_SOURCE
    \n+
    689# define _OPENBSD_SOURCE 1
    \n+
    690#endif
    \n+
    691/* Define to 1 if needed for POSIX-compatible behavior. */
    \n+
    692#ifndef _POSIX_SOURCE
    \n+
    693/* # undef _POSIX_SOURCE */
    \n+
    694#endif
    \n+
    695/* Define to 2 if needed for POSIX-compatible behavior. */
    \n+
    696#ifndef _POSIX_1_SOURCE
    \n+
    697/* # undef _POSIX_1_SOURCE */
    \n+
    698#endif
    \n+
    699/* Enable POSIX-compatible threading on Solaris. */
    \n+
    700#ifndef _POSIX_PTHREAD_SEMANTICS
    \n+
    701# define _POSIX_PTHREAD_SEMANTICS 1
    \n+
    702#endif
    \n+
    703/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
    \n+
    704#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
    \n+
    705# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
    \n+
    706#endif
    \n+
    707/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
    \n+
    708#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
    \n+
    709# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
    \n+
    710#endif
    \n+
    711/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
    \n+
    712#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
    \n+
    713# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
    \n+
    714#endif
    \n+
    715/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
    \n+
    716#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
    \n+
    717# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
    \n+
    718#endif
    \n+
    719/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
    \n+
    720#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
    \n+
    721# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
    \n+
    722#endif
    \n+
    723/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
    \n+
    724#ifndef __STDC_WANT_LIB_EXT2__
    \n+
    725# define __STDC_WANT_LIB_EXT2__ 1
    \n+
    726#endif
    \n+
    727/* Enable extensions specified by ISO/IEC 24747:2009. */
    \n+
    728#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
    \n+
    729# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
    \n+
    730#endif
    \n+
    731/* Enable extensions on HP NonStop. */
    \n+
    732#ifndef _TANDEM_SOURCE
    \n+
    733# define _TANDEM_SOURCE 1
    \n+
    734#endif
    \n+
    735/* Enable X/Open extensions. Define to 500 only if necessary
    \n+
    736 to make mbstate_t available. */
    \n+
    737#ifndef _XOPEN_SOURCE
    \n+
    738/* # undef _XOPEN_SOURCE */
    \n+
    739#endif
    \n+
    740
    \n+
    741
    \n+
    742/* Version number of package */
    \n+
    743#define VERSION "1.3.17"
    \n+
    744
    \n+
    745/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    \n+
    746 significant byte first (like Motorola and SPARC, unlike Intel). */
    \n+
    747#if defined AC_APPLE_UNIVERSAL_BUILD
    \n+
    748# if defined __BIG_ENDIAN__
    \n+
    749# define WORDS_BIGENDIAN 1
    \n+
    750# endif
    \n+
    751#else
    \n+
    752# ifndef WORDS_BIGENDIAN
    \n+
    753/* # undef WORDS_BIGENDIAN */
    \n+
    754# endif
    \n+
    755#endif
    \n+
    756
    \n+
    757/* Number of bits in a file offset, on hosts where this is settable. */
    \n+
    758#define _FILE_OFFSET_BITS 64
    \n+
    759
    \n+
    760/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
    \n+
    761/* #undef _LARGEFILE_SOURCE */
    \n+
    762
    \n+
    763/* Define for large files, on AIX-style hosts. */
    \n+
    764/* #undef _LARGE_FILES */
    \n+
    765
    \n+
    766/* Define to empty if `const' does not conform to ANSI C. */
    \n+
    767/* #undef const */
    \n+
    768
    \n+
    769/* Define to `__inline__' or `__inline' if that's what the C compiler
    \n+
    770 calls it, or to nothing if 'inline' is not supported under any name. */
    \n+
    771#ifndef __cplusplus
    \n+
    772/* #undef inline */
    \n+
    773#endif
    \n+
    774
    \n+
    775/* Define to `unsigned int' if <sys/types.h> does not define. */
    \n+
    776/* #undef size_t */
    \n+
    777
    \n+
    778/* type to use in place of socklen_t if not defined */
    \n+
    779/* #undef socklen_t */
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,370 +6,797 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-ctlib.h\n- 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _ctlib_h_\n- 21#define _ctlib_h_\n- 22\n- 23#include \n- 24#include \n- 25#include \n+config.h\n+ 1/* include/config.h. Generated from config.h.in by configure. */\n+ 2/* include/config.h.in. Generated from configure.ac by autoheader. */\n+ 3\n+ 4#define _freetds_config_h_\n+ 5\n+ 6/* Define if building universal (internal helper macro) */\n+ 7/* #undef AC_APPLE_UNIVERSAL_BUILD */\n+ 8\n+ 9/* Define to 1 if you need BSD_COMP defined to get FIONBIO defined. */\n+ 10/* #undef BSD_COMP */\n+ 11\n+ 12/* Define to 1 if using 'alloca.c'. */\n+ 13/* #undef C_ALLOCA */\n+ 14\n+ 15/* Define to enable work in progress code */\n+ 16/* #undef ENABLE_DEVELOPING */\n+ 17\n+ 18/* Define to enable extra checks on code */\n+ 19/* #undef ENABLE_EXTRA_CHECKS */\n+ 20\n+ 21/* Defined if --enable-krb5 used and library detected */\n+ 22#define ENABLE_KRB5 1\n+ 23\n+ 24/* Define to enable MARS support */\n+ 25#define ENABLE_ODBC_MARS 1\n 26\n- 27/*\n- 28 * Internal (not part of the exposed API) prototypes and such.\n- 29 */\n- 30\n- 31#include \n+ 27/* Define to enable ODBC wide string support */\n+ 28#define ENABLE_ODBC_WIDE 1\n+ 29\n+ 30/* Define to 1 if GNU tls use nettle as backend. */\n+ 31#define GNUTLS_USE_NETTLE 1\n 32\n- 33#ifdef __cplusplus\n- 34extern \"C\"\n- 35{\n- 36#if 0\n- 37}\n- 38#endif\n- 39#endif\n- 40\n- 41/*\n- 42 * internal types\n- 43 */\n-44struct _cs_config\n- 45{\n- 46 short cs_expose_formats;\n- 47};\n- 48\n- 49/* Code changed for error handling */\n- 50/* Code changes starts here - CT_DIAG - 01 */\n- 51\n- 52/* This structure is used in CT_DIAG */\n+ 33/* Define to 1 if you have the `alarm' function. */\n+ 34#define HAVE_ALARM 1\n+ 35\n+ 36/* Define to 1 if you have 'alloca', as a function or macro. */\n+ 37#define HAVE_ALLOCA 1\n+ 38\n+ 39/* Define to 1 if works. */\n+ 40#define HAVE_ALLOCA_H 1\n+ 41\n+ 42/* Define to 1 if you have the header file. */\n+ 43#define HAVE_ARPA_INET_H 1\n+ 44\n+ 45/* Define to 1 if you have the `ASN1_STRING_get0_data' function. */\n+ 46/* #undef HAVE_ASN1_STRING_GET0_DATA */\n+ 47\n+ 48/* Define to 1 if you have the `asprintf' function. */\n+ 49#define HAVE_ASPRINTF 1\n+ 50\n+ 51/* Define to 1 if you have the `basename' function. */\n+ 52#define HAVE_BASENAME 1\n 53\n-54struct cs_diag_msg_client\n- 55{\n- 56 CS_CLIENTMSG *clientmsg;\n- 57 struct cs_diag_msg_client *next;\n- 58};\n+ 54/* Define to 1 if you have the `BIO_get_data' function. */\n+ 55/* #undef HAVE_BIO_GET_DATA */\n+ 56\n+ 57/* Define if you have the clock_gettime function. */\n+ 58#define HAVE_CLOCK_GETTIME 1\n 59\n-60struct cs_diag_msg_svr\n- 61{\n- 62 CS_SERVERMSG *servermsg;\n- 63 struct cs_diag_msg_svr *next;\n- 64};\n+ 60/* Define to 1 if you have the header file. */\n+ 61#define HAVE_COM_ERR_H 1\n+ 62\n+ 63/* Define to 1 if you have the `daemon' function. */\n+ 64#define HAVE_DAEMON 1\n 65\n- 66/* Code changes ends here - CT_DIAG - 01 */\n- 67\n-68struct cs_diag_msg\n- 69{\n- 70 CS_CLIENTMSG *msg;\n- 71 struct cs_diag_msg *next;\n- 72};\n- 73\n-74struct _cs_context\n- 75{\n- 76 CS_INT date_convert_fmt;\n- 77 CS_INT cs_errhandletype;\n- 78 CS_INT cs_diag_msglimit;\n- 79\n- 80 /* added for storing the maximum messages limit CT_DIAG */\n- 81 /* code changes starts here - CT_DIAG - 02 */\n- 82\n- 83 CS_INT cs_diag_msglimit_client;\n- 84 CS_INT cs_diag_msglimit_server;\n- 85 CS_INT cs_diag_msglimit_total;\n- 86 struct cs_diag_msg_client *clientstore;\n- 87 struct cs_diag_msg_svr *svrstore;\n- 88\n- 89 /* code changes ends here - CT_DIAG - 02 */\n+ 66/* Define to 1 if you have the declaration of `tzname', and to 0 if you\n+don't.\n+ 67 */\n+ 68/* #undef HAVE_DECL_TZNAME */\n+ 69\n+ 70/* Define to 1 if you have the header file. */\n+ 71#define HAVE_DIRENT_H 1\n+ 72\n+ 73/* Define to 1 if you have the header file. */\n+ 74#define HAVE_DLFCN_H 1\n+ 75\n+ 76/* Define to 1 if you have the header file. */\n+ 77#define HAVE_ERRNO_H 1\n+ 78\n+ 79/* Define to 1 if you have the `error_message' function. */\n+ 80/* #undef HAVE_ERROR_MESSAGE */\n+ 81\n+ 82/* Define to 1 if you have the `eventfd' function. */\n+ 83#define HAVE_EVENTFD 1\n+ 84\n+ 85/* Define to 1 if you have the header file. */\n+ 86#define HAVE_FCNTL_H 1\n+ 87\n+ 88/* Define to 1 if you have the `fork' function. */\n+ 89#define HAVE_FORK 1\n 90\n- 91 struct cs_diag_msg *msgstore;\n- 92 CS_CSLIBMSG_FUNC _cslibmsg_cb;\n- 93 CS_CLIENTMSG_FUNC _clientmsg_cb;\n- 94 CS_SERVERMSG_FUNC _servermsg_cb;\n- 95 /* code changes start here - CS_CONFIG - 01*/\n- 96 void *userdata;\n- 97 int userdata_len;\n- 98 /* code changes end here - CS_CONFIG - 01*/\n- 99 TDSCONTEXT *tds_ctx;\n- 100 CS_CONFIG config;\n-101 int login_timeout;\n-102 int query_timeout;\n- 103};\n+ 91/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */\n+ 92#define HAVE_FSEEKO 1\n+ 93\n+ 94/* Define to 1 if you have the `fstat' function. */\n+ 95#define HAVE_FSTAT 1\n+ 96\n+ 97/* Define to 1 if your system provides the 5-parameter version of\n+ 98 gethostbyaddr_r(). */\n+ 99/* #undef HAVE_FUNC_GETHOSTBYADDR_R_5 */\n+ 100\n+ 101/* Define to 1 if your system provides the 7-parameter version of\n+ 102 gethostbyaddr_r(). */\n+ 103/* #undef HAVE_FUNC_GETHOSTBYADDR_R_7 */\n 104\n- 105/*\n- 106 * internal typedefs\n- 107 */\n-108typedef struct _ct_colinfo\n- 109{\n- 110 TDS_SMALLINT *indicator;\n- 111}\n- 112CT_COLINFO;\n- 113\n- 114typedef struct _cs_dynamic CS_DYNAMIC;\n- 115\n-116struct _cs_connection\n- 117{\n- 118 CS_CONTEXT *ctx;\n- 119 TDSLOGIN *tds_login;\n- 120 TDSSOCKET *tds_socket;\n- 121 CS_CLIENTMSG_FUNC _clientmsg_cb;\n- 122 CS_SERVERMSG_FUNC _servermsg_cb;\n- 123 void *userdata;\n- 124 int userdata_len;\n- 125 CS_LOCALE *locale;\n- 126 CS_COMMAND *cmds;\n- 127 CS_DYNAMIC *dynlist;\n- 128 char *server_addr;\n- 129 bool network_auth;\n- 130};\n- 131\n- 132/*\n- 133 * Formerly CSREMOTE_PROC_PARAM, this structure can be used in other\n- 134 * places, too.\n- 135 */\n+ 105/* Define to 1 if your system provides the 8-parameter version of\n+ 106 gethostbyaddr_r(). */\n+ 107#define HAVE_FUNC_GETHOSTBYADDR_R_8 1\n+ 108\n+ 109/* Define to 1 if your system provides the 3-parameter version of\n+ 110 gethostbyname_r(). */\n+ 111/* #undef HAVE_FUNC_GETHOSTBYNAME_R_3 */\n+ 112\n+ 113/* Define to 1 if your system provides the 5-parameter version of\n+ 114 gethostbyname_r(). */\n+ 115/* #undef HAVE_FUNC_GETHOSTBYNAME_R_5 */\n+ 116\n+ 117/* Define to 1 if your system provides the 6-parameter version of\n+ 118 gethostbyname_r(). */\n+ 119#define HAVE_FUNC_GETHOSTBYNAME_R_6 1\n+ 120\n+ 121/* Define to 1 if your system provides the 4-parameter version of\n+ 122 getpwuid_r(). */\n+ 123/* #undef HAVE_FUNC_GETPWUID_R_4 */\n+ 124\n+ 125/* Define to 1 if your system getpwuid_r() have 4 parameters and return\n+struct\n+ 126 passwd*. */\n+ 127/* #undef HAVE_FUNC_GETPWUID_R_4_PW */\n+ 128\n+ 129/* Define to 1 if your system provides the 5-parameter version of\n+ 130 getpwuid_r(). */\n+ 131#define HAVE_FUNC_GETPWUID_R_5 1\n+ 132\n+ 133/* Define to 1 if your system provides the 4-parameter version of\n+ 134 getservbyname_r(). */\n+ 135/* #undef HAVE_FUNC_GETSERVBYNAME_R_4 */\n 136\n-137typedef struct _cs_param\n- 138{\n- 139 struct _cs_param *next;\n- 140 char *name;\n- 141 int status;\n- 142 int datatype;\n- 143 CS_INT maxlen;\n- 144 CS_INT scale;\n- 145 CS_INT precision;\n- 146 CS_INT *datalen;\n- 147 CS_SMALLINT *ind;\n- 148 CS_BYTE *value;\n- 149 int param_by_value;\n- 150 CS_INT datalen_value;\n- 151 CS_SMALLINT indicator_value;\n- 152} CS_PARAM;\n+ 137/* Define to 1 if your system provides the 5-parameter version of\n+ 138 getservbyname_r(). */\n+ 139/* #undef HAVE_FUNC_GETSERVBYNAME_R_5 */\n+ 140\n+ 141/* Define to 1 if your system provides the 6-parameter version of\n+ 142 getservbyname_r(). */\n+ 143#define HAVE_FUNC_GETSERVBYNAME_R_6 1\n+ 144\n+ 145/* Define to 1 if your localtime_r return a int. */\n+ 146/* #undef HAVE_FUNC_LOCALTIME_R_INT */\n+ 147\n+ 148/* Define to 1 if your localtime_r return a struct tm*. */\n+ 149#define HAVE_FUNC_LOCALTIME_R_TM 1\n+ 150\n+ 151/* Define if you have getaddrinfo function */\n+ 152#define HAVE_GETADDRINFO 1\n 153\n- 154/*\n- 155 * Code added for RPC functionality - SUHA\n- 156 * RPC Code changes starts here\n- 157 */\n- 158\n- 159typedef CS_PARAM CSREMOTE_PROC_PARAM;\n- 160\n-161typedef struct _csremote_proc\n- 162{\n- 163 char *name;\n- 164 CS_SMALLINT options;\n- 165 CSREMOTE_PROC_PARAM *param_list;\n- 166} CSREMOTE_PROC;\n- 167\n- 168/*\n- 169 * Structure CS_COMMAND changed for RPC functionality -SUHA\n- 170 * Added CSREMOTE_PROC *rpc to CS_COMMAND structure\n- 171 */\n- 172\n- 173typedef CS_PARAM CS_DYNAMIC_PARAM;\n+ 154/* Define to 1 if you have the `gethostname' function. */\n+ 155#define HAVE_GETHOSTNAME 1\n+ 156\n+ 157/* Define to 1 if you have the `gethrtime' function. */\n+ 158/* #undef HAVE_GETHRTIME */\n+ 159\n+ 160/* Define to 1 if you have the `getipnodebyaddr' function. */\n+ 161/* #undef HAVE_GETIPNODEBYADDR */\n+ 162\n+ 163/* Define to 1 if you have the `getipnodebyname' function. */\n+ 164/* #undef HAVE_GETIPNODEBYNAME */\n+ 165\n+ 166/* Define to 1 if you have the `getopt' function. */\n+ 167#define HAVE_GETOPT 1\n+ 168\n+ 169/* Define to 1 if you have the header file. */\n+ 170#define HAVE_GETOPT_H 1\n+ 171\n+ 172/* Define if your getopt(3) defines and uses optreset */\n+ 173/* #undef HAVE_GETOPT_OPTRESET */\n 174\n-175struct _cs_dynamic\n- 176{\n- 177 struct _cs_dynamic *next;\n- 178 char *id;\n- 179 char *stmt;\n- 180 CS_DYNAMIC_PARAM *param_list;\n- 181 TDSDYNAMIC *tdsdyn;\n- 182};\n+ 175/* Define to 1 if you have the `getpwuid' function. */\n+ 176#define HAVE_GETPWUID 1\n+ 177\n+ 178/* Define to 1 if you have the `getpwuid_r' function. */\n+ 179#define HAVE_GETPWUID_R 1\n+ 180\n+ 181/* Define to 1 if you have the `gettimeofday' function. */\n+ 182#define HAVE_GETTIMEOFDAY 1\n 183\n- 184/* specific FreeTDS commands */\n- 185#define CS_DYNAMIC_CMD 160\n- 186#define CS_CUR_CMD 161\n- 187\n- 188/* values for cs_command.results_state */\n+ 184/* Define to 1 if you have the `getuid' function. */\n+ 185#define HAVE_GETUID 1\n+ 186\n+ 187/* Define if you have GMP library */\n+ 188#define HAVE_GMP 1\n 189\n- 190#define _CS_RES_NONE -1\n- 191#define _CS_RES_INIT 0\n- 192#define _CS_RES_RESULTSET_EMPTY 1\n- 193#define _CS_RES_RESULTSET_ROWS 2\n- 194#define _CS_RES_STATUS 3\n- 195#define _CS_RES_CMD_DONE 4\n- 196#define _CS_RES_CMD_SUCCEED 5\n- 197#define _CS_RES_END_RESULTS 6\n- 198#define _CS_RES_DESCRIBE_RESULT 7\n+ 190/* Define to 1 if you have GnuTLS. */\n+ 191#define HAVE_GNUTLS 1\n+ 192\n+ 193/* Define to 1 if you have the header file. */\n+ 194#define HAVE_GNUTLS_ABSTRACT_H 1\n+ 195\n+ 196/* Define to 1 if you have the `gnutls_certificate_set_verify_function'\n+ 197 function. */\n+ 198#define HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION 1\n 199\n- 200/* values for cs_command.command_state */\n- 201\n- 202#define _CS_COMMAND_IDLE 0\n- 203#define _CS_COMMAND_BUILDING 1\n- 204#define _CS_COMMAND_READY 2\n- 205#define _CS_COMMAND_SENT 3\n- 206\n- 207/* values for cs_command.cancel_state */\n- 208#define _CS_CANCEL_NOCANCEL 0\n- 209#define _CS_CANCEL_PENDING 1\n- 210\n-211struct _cs_command\n- 212{\n- 213 struct _cs_command *next;\n- 214 CS_INT command_state;\n- 215 CS_INT results_state;\n- 216 CS_INT cancel_state;\n- 217 CS_INT cursor_state;\n- 218 CS_CONNECTION *con;\n- 219 CS_INT command_type;\n- 220 CS_CHAR *query;\n- 221 short dynamic_cmd;\n- 222 CS_DYNAMIC *dyn;\n- 223 int row_prefetched;\n- 224 int curr_result_type;\n- 225 int bind_count;\n- 226 int get_data_item;\n- 227 int get_data_bytes_returned;\n- 228 CS_IODESC *iodesc;\n- 229 CS_INT send_data_started;\n- 230 CSREMOTE_PROC *rpc;\n- 231 CS_PARAM *input_params;\n- 232 CS_INT client_cursor_id;\n- 233 TDSCURSOR *cursor;\n- 234 void *userdata;\n- 235 int userdata_len;\n- 236};\n- 237\n-238struct _cs_blkdesc\n- 239{\n- 240 TDSBCPINFO bcpinfo;\n- 241};\n- 242\n- 243\n- 244#define _CS_ERRHAND_INLINE 1\n- 245#define _CS_ERRHAND_CB 2\n- 246\n-247struct _cs_locale\n- 248{\n- 249 char *language;\n- 250 char *charset;\n- 251 char *time;\n- 252 char *collate;\n- 253};\n- 254\n- 255/* internal defines for cursor processing */\n+ 200/* Define to 1 if you have the `gnutls_record_disable_padding' function. */\n+ 201#define HAVE_GNUTLS_RECORD_DISABLE_PADDING 1\n+ 202\n+ 203/* Define to 1 if you have the `gnutls_rnd' function. */\n+ 204#define HAVE_GNUTLS_RND 1\n+ 205\n+ 206/* Define if you have the iconv() function and it works. */\n+ 207#define HAVE_ICONV 1\n+ 208\n+ 209/* Define to 1 if you have the `inet_ntoa_r' function. */\n+ 210/* #undef HAVE_INET_NTOA_R */\n+ 211\n+ 212/* Define to 1 if you have the `inet_ntop' function. */\n+ 213#define HAVE_INET_NTOP 1\n+ 214\n+ 215/* Define to 1 if you have the header file. */\n+ 216#define HAVE_INTTYPES_H 1\n+ 217\n+ 218/* Define to 1 if you have the header file. */\n+ 219/* #undef HAVE_IODBCINST_H */\n+ 220\n+ 221/* Define to 1 if you have the header file. */\n+ 222#define HAVE_LANGINFO_H 1\n+ 223\n+ 224/* Define to 1 if you have the header file. */\n+ 225#define HAVE_LIBGEN_H 1\n+ 226\n+ 227/* Define to 1 if you have the header file. */\n+ 228#define HAVE_LIMITS_H 1\n+ 229\n+ 230/* Define to 1 if you have the header file. */\n+ 231/* #undef HAVE_LOCALCHARSET_H */\n+ 232\n+ 233/* Define to 1 if you have the `locale_charset' function. */\n+ 234/* #undef HAVE_LOCALE_CHARSET */\n+ 235\n+ 236/* Define to 1 if you have the header file. */\n+ 237#define HAVE_LOCALE_H 1\n+ 238\n+ 239/* Define to 1 if you have the `localtime_r' function. */\n+ 240#define HAVE_LOCALTIME_R 1\n+ 241\n+ 242/* Define to 1 if you have the header file. */\n+ 243#define HAVE_MALLOC_H 1\n+ 244\n+ 245/* Define to 1 if your system provides the malloc_options variable. */\n+ 246/* #undef HAVE_MALLOC_OPTIONS */\n+ 247\n+ 248/* Define to 1 if you have the header file. */\n+ 249/* #undef HAVE_MINIX_CONFIG_H */\n+ 250\n+ 251/* Define to 1 if you have the `nanosleep' function. */\n+ 252#define HAVE_NANOSLEEP 1\n+ 253\n+ 254/* Define to 1 if you have the header file. */\n+ 255#define HAVE_NETDB_H 1\n 256\n- 257#define _CS_CURS_TYPE_UNACTIONED 0\n- 258#define _CS_CURS_TYPE_REQUESTED 1\n- 259#define _CS_CURS_TYPE_SENT 2\n- 260\n- 261/*\n- 262 * internal prototypes\n- 263 */\n- 264TDSRET _ct_handle_server_message(const TDSCONTEXT * ctxptr, TDSSOCKET *\n-tdsptr, TDSMESSAGE * msgptr);\n- 265int _ct_handle_client_message(const TDSCONTEXT * ctxptr, TDSSOCKET *\n-tdsptr, TDSMESSAGE * msgptr);\n- 266TDS_SERVER_TYPE _ct_get_server_type(TDSSOCKET *tds, int datatype);\n- 267int _ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO\n-*bindinfo, CS_INT offset);\n- 268int _ct_get_client_type(const TDSCOLUMN *col, bool describe);\n- 269void _ctclient_msg(CS_CONNECTION * con, const char *funcname, int layer,\n-int origin, int severity, int number,\n- 270 const char *fmt, ...);\n- 271CS_INT _ct_diag_clearmsg(CS_CONTEXT * context, CS_INT type);\n- 272void _cs_locale_free(CS_LOCALE *locale);\n- 273CS_LOCALE *_cs_locale_copy(CS_LOCALE *orig);\n- 274int _cs_locale_copy_inplace(CS_LOCALE *new_locale, CS_LOCALE *orig);\n- 275\n- 276int _cs_convert_not_client(CS_CONTEXT *ctx, const TDSCOLUMN *curcol,\n-CONV_RESULT *convert_buffer, unsigned char **p_src);\n+ 257/* Define to 1 if you have the header file. */\n+ 258#define HAVE_NETINET_IN_H 1\n+ 259\n+ 260/* Define to 1 if you have the header file. */\n+ 261#define HAVE_NETINET_TCP_H 1\n+ 262\n+ 263/* Define to 1 if nettle is present. */\n+ 264#define HAVE_NETTLE 1\n+ 265\n+ 266/* Define to 1 if you have the `nl_langinfo' function. */\n+ 267#define HAVE_NL_LANGINFO 1\n+ 268\n+ 269/* Define to 1 if you have the header file. */\n+ 270/* #undef HAVE_ODBCSS_H */\n+ 271\n+ 272/* Define if you have the OpenSSL. */\n+ 273/* #undef HAVE_OPENSSL */\n+ 274\n+ 275/* Define to 1 if you have the header file. */\n+ 276#define HAVE_PATHS_H 1\n 277\n- 278#ifdef __cplusplus\n- 279#if 0\n- 280{\n- 281#endif\n- 282}\n- 283#endif\n- 284\n- 285#include \n+ 278/* Define to 1 if you have the `poll' function. */\n+ 279#define HAVE_POLL 1\n+ 280\n+ 281/* Define to 1 if you have the header file. */\n+ 282#define HAVE_POLL_H 1\n+ 283\n+ 284/* Define if you have POSIX threads libraries and header files. */\n+ 285#define HAVE_PTHREAD 1\n 286\n- 287#endif\n-tds.h\n-Main include file for libtds.\n-_cs_iodesc\n-Definition cstypes.h:97\n-_cs_clientmsg\n-Definition cstypes.h:177\n-_cs_servermsg\n-Definition cstypes.h:191\n-_cs_config\n-Definition ctlib.h:45\n-cs_diag_msg_client\n-Definition ctlib.h:55\n-cs_diag_msg_svr\n-Definition ctlib.h:61\n-cs_diag_msg\n-Definition ctlib.h:69\n-_cs_context\n-Definition ctlib.h:75\n-_cs_context::login_timeout\n-int login_timeout\n-not used unless positive\n-Definition ctlib.h:101\n-_cs_context::query_timeout\n-int query_timeout\n-not used unless positive\n-Definition ctlib.h:102\n-_ct_colinfo\n-Definition ctlib.h:109\n-_cs_connection\n-Definition ctlib.h:117\n-_cs_param\n-Definition ctlib.h:138\n-_csremote_proc\n-Definition ctlib.h:162\n-_cs_dynamic\n-Definition ctlib.h:176\n-_cs_command\n-Definition ctlib.h:212\n-_cs_blkdesc\n-Definition ctlib.h:239\n-_cs_locale\n-Definition ctlib.h:248\n-conv_result\n-Definition convert.h:34\n-tds_login\n-Definition tds.h:517\n-tds_column\n-Metadata about columns in regular and compute rows.\n-Definition tds.h:689\n-tds_result_info\n-Hold information for any results.\n-Definition tds.h:769\n-tds_message\n-Definition tds.h:876\n-tds_cursor\n-Holds informations about a cursor.\n-Definition tds.h:937\n-tds_dynamic\n-Holds information for a dynamic (also called prepared) query.\n-Definition tds.h:977\n-tds_context\n-Definition tds.h:1029\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n-tds_bcpinfo\n-Definition tds.h:1661\n+ 287/* Define to 1 if you have the `pthread_condattr_setclock' function. */\n+ 288#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1\n+ 289\n+ 290/* Define to 1 if you have the `pthread_cond_timedwait' function. */\n+ 291#define HAVE_PTHREAD_COND_TIMEDWAIT 1\n+ 292\n+ 293/* Define to 1 if you have the `pthread_cond_timedwait_relative_np'\n+function.\n+ 294 */\n+ 295/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */\n+ 296\n+ 297/* Define to 1 if you have the `putenv' function. */\n+ 298#define HAVE_PUTENV 1\n+ 299\n+ 300/* Define to 1 if you have the `readdir_r' function. */\n+ 301#define HAVE_READDIR_R 1\n+ 302\n+ 303/* Define to 1 if you have the GNU Readline library. */\n+ 304#define HAVE_READLINE 1\n+ 305\n+ 306/* Define to 1 if you have the `readpassphrase' function. */\n+ 307/* #undef HAVE_READPASSPHRASE */\n+ 308\n+ 309/* Define to 1 if you have rl_inhibit_completion. */\n+ 310#define HAVE_RL_INHIBIT_COMPLETION 1\n+ 311\n+ 312/* Define to 1 if you have the `rl_on_new_line' function. */\n+ 313#define HAVE_RL_ON_NEW_LINE 1\n+ 314\n+ 315/* Define to 1 if you have the `rl_reset_line_state' function. */\n+ 316#define HAVE_RL_RESET_LINE_STATE 1\n+ 317\n+ 318/* Define to 1 if you have the header file. */\n+ 319/* #undef HAVE_ROKEN_H */\n+ 320\n+ 321/* Define to 1 if you have the `RSA_get0_key' function. */\n+ 322/* #undef HAVE_RSA_GET0_KEY */\n+ 323\n+ 324/* Define to 1 if you have the `setenv' function. */\n+ 325#define HAVE_SETENV 1\n+ 326\n+ 327/* Define to 1 if you have the `setitimer' function. */\n+ 328#define HAVE_SETITIMER 1\n+ 329\n+ 330/* Define to 1 if you have the `setrlimit' function. */\n+ 331#define HAVE_SETRLIMIT 1\n+ 332\n+ 333/* Define to 1 if you have the header file. */\n+ 334#define HAVE_SIGNAL_H 1\n+ 335\n+ 336/* Define to 1 if you have the `socketpair' function. */\n+ 337#define HAVE_SOCKETPAIR 1\n+ 338\n+ 339/* Define to 1 if you have the SQLGetPrivateProfileString function. */\n+ 340#define HAVE_SQLGETPRIVATEPROFILESTRING 1\n+ 341\n+ 342/* Define if sqltypes.h define SQLLEN */\n+ 343#define HAVE_SQLLEN 1\n+ 344\n+ 345/* Define to 1 if the system has the type `SQLROWOFFSET'. */\n+ 346#define HAVE_SQLROWOFFSET 1\n+ 347\n+ 348/* Define to 1 if the system has the type `SQLROWSETSIZE'. */\n+ 349#define HAVE_SQLROWSETSIZE 1\n+ 350\n+ 351/* Define to 1 if the system has the type `SQLSETPOSIROW'. */\n+ 352#define HAVE_SQLSETPOSIROW 1\n+ 353\n+ 354/* Define to 1 if you have the header file. */\n+ 355#define HAVE_SQL_H 1\n+ 356\n+ 357/* Defined if not --disable-sspi and SSPI detected */\n+ 358/* #undef HAVE_SSPI */\n+ 359\n+ 360/* Define to 1 if you have the header file. */\n+ 361#define HAVE_STDBOOL_H 1\n+ 362\n+ 363/* Define to 1 if you have the header file. */\n+ 364#define HAVE_STDDEF_H 1\n+ 365\n+ 366/* Define to 1 if you have the header file. */\n+ 367#define HAVE_STDINT_H 1\n+ 368\n+ 369/* Define to 1 if you have the header file. */\n+ 370#define HAVE_STDIO_H 1\n+ 371\n+ 372/* Define to 1 if you have the header file. */\n+ 373#define HAVE_STDLIB_H 1\n+ 374\n+ 375/* Define to 1 if you have the header file. */\n+ 376#define HAVE_STRINGS_H 1\n+ 377\n+ 378/* Define to 1 if you have the header file. */\n+ 379#define HAVE_STRING_H 1\n+ 380\n+ 381/* Define to 1 if you have the `strlcat' function. */\n+ 382/* #undef HAVE_STRLCAT */\n+ 383\n+ 384/* Define to 1 if you have the `strlcpy' function. */\n+ 385/* #undef HAVE_STRLCPY */\n+ 386\n+ 387/* Define to 1 if you have the `strsep' function. */\n+ 388#define HAVE_STRSEP 1\n+ 389\n+ 390/* Define to 1 if you have the `strtok_r' function. */\n+ 391#define HAVE_STRTOK_R 1\n+ 392\n+ 393/* Define to 1 if you have the `strtok_s' function. */\n+ 394/* #undef HAVE_STRTOK_S */\n+ 395\n+ 396/* Define to 1 if `tm_zone' is a member of `struct tm'. */\n+ 397#define HAVE_STRUCT_TM_TM_ZONE 1\n+ 398\n+ 399/* Define to 1 if `__tm_zone' is a member of `struct tm'. */\n+ 400/* #undef HAVE_STRUCT_TM___TM_ZONE */\n+ 401\n+ 402/* Define to 1 if you have the 'system' function */\n+ 403#define HAVE_SYSTEM 1\n+ 404\n+ 405/* Define to 1 if you have the header file. */\n+ 406#define HAVE_SYS_EVENTFD_H 1\n+ 407\n+ 408/* Define to 1 if you have the header file. */\n+ 409#define HAVE_SYS_IOCTL_H 1\n+ 410\n+ 411/* Define to 1 if you have the header file. */\n+ 412#define HAVE_SYS_PARAM_H 1\n+ 413\n+ 414/* Define to 1 if you have the header file. */\n+ 415#define HAVE_SYS_RESOURCE_H 1\n+ 416\n+ 417/* Define to 1 if you have the header file. */\n+ 418#define HAVE_SYS_SELECT_H 1\n+ 419\n+ 420/* Define to 1 if you have the header file. */\n+ 421#define HAVE_SYS_SOCKET_H 1\n+ 422\n+ 423/* Define to 1 if you have the header file. */\n+ 424#define HAVE_SYS_STAT_H 1\n+ 425\n+ 426/* Define to 1 if you have the header file. */\n+ 427#define HAVE_SYS_TIME_H 1\n+ 428\n+ 429/* Define to 1 if you have the header file. */\n+ 430#define HAVE_SYS_TYPES_H 1\n+ 431\n+ 432/* Define to 1 if you have the header file. */\n+ 433#define HAVE_SYS_WAIT_H 1\n+ 434\n+ 435/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use\n+ 436 `HAVE_STRUCT_TM_TM_ZONE' instead. */\n+ 437#define HAVE_TM_ZONE 1\n+ 438\n+ 439/* Define to 1 if you don't have `tm_zone' but do have the external array\n+ 440 `tzname'. */\n+ 441/* #undef HAVE_TZNAME */\n+ 442\n+ 443/* Define to 1 if you have the header file. */\n+ 444#define HAVE_UNISTD_H 1\n+ 445\n+ 446/* Define to 1 if you have the `usleep' function. */\n+ 447#define HAVE_USLEEP 1\n+ 448\n+ 449/* Define to 1 if you have the header file. */\n+ 450/* #undef HAVE_VALGRIND_MEMCHECK_H */\n+ 451\n+ 452/* Define to 1 if you have the `vasprintf' function. */\n+ 453#define HAVE_VASPRINTF 1\n+ 454\n+ 455/* Define to 1 if you have the `vsnprintf' function. */\n+ 456#define HAVE_VSNPRINTF 1\n+ 457\n+ 458/* Define to 1 if you have the header file. */\n+ 459#define HAVE_WCHAR_H 1\n+ 460\n+ 461/* Define to 1 if you have the header file. */\n+ 462/* #undef HAVE_WINDOWS_H */\n+ 463\n+ 464/* Define to 1 if you have the header file. */\n+ 465/* #undef HAVE_WINSOCK2_H */\n+ 466\n+ 467/* Define to 1 if you have the `_fseeki64' function. */\n+ 468/* #undef HAVE__FSEEKI64 */\n+ 469\n+ 470/* Define to 1 if you have the `_ftelli64' function. */\n+ 471/* #undef HAVE__FTELLI64 */\n+ 472\n+ 473/* Define to 1 if you have the `_lock_file' function. */\n+ 474/* #undef HAVE__LOCK_FILE */\n+ 475\n+ 476/* Define to 1 if you have the `_unlock_file' function. */\n+ 477/* #undef HAVE__UNLOCK_FILE */\n+ 478\n+ 479/* Define to 1 if you have the `_vscprintf' function. */\n+ 480/* #undef HAVE__VSCPRINTF */\n+ 481\n+ 482/* Define to 1 if you have the `_vsnprintf' function. */\n+ 483/* #undef HAVE__VSNPRINTF */\n+ 484\n+ 485/* Define to 1 if you have the `_xpg_accept' function. */\n+ 486/* #undef HAVE__XPG_ACCEPT */\n+ 487\n+ 488/* Define to 1 if you have the `_xpg_getpeername' function. */\n+ 489/* #undef HAVE__XPG_GETPEERNAME */\n+ 490\n+ 491/* Define to 1 if you have the `_xpg_getsockname' function. */\n+ 492/* #undef HAVE__XPG_GETSOCKNAME */\n+ 493\n+ 494/* Define to 1 if you have the `_xpg_getsockopt' function. */\n+ 495/* #undef HAVE__XPG_GETSOCKOPT */\n+ 496\n+ 497/* Define to 1 if you have the `_xpg_recvfrom' function. */\n+ 498/* #undef HAVE__XPG_RECVFROM */\n+ 499\n+ 500/* Define to 1 if you have the `__accept' function. */\n+ 501/* #undef HAVE___ACCEPT */\n+ 502\n+ 503/* Define to 1 if you have the `__getpeername' function. */\n+ 504/* #undef HAVE___GETPEERNAME */\n+ 505\n+ 506/* Define to 1 if you have the `__getsockname' function. */\n+ 507/* #undef HAVE___GETSOCKNAME */\n+ 508\n+ 509/* Define to 1 if you have the `__getsockopt' function. */\n+ 510/* #undef HAVE___GETSOCKOPT */\n+ 511\n+ 512/* Define to 1 if you have the `__recvfrom' function. */\n+ 513/* #undef HAVE___RECVFROM */\n+ 514\n+ 515/* Define as const if the declaration of iconv() needs const. */\n+ 516#define ICONV_CONST\n+ 517\n+ 518/* Define to value of INADDR_NONE if not provided by your system header\n+files.\n+ 519 */\n+ 520/* #undef INADDR_NONE */\n+ 521\n+ 522/* Define to the sub-directory where libtool stores uninstalled libraries.\n+*/\n+ 523#define LT_OBJDIR \".libs/\"\n+ 524\n+ 525/* Define to 1 if the BSD-style netdb interface is reentrant. */\n+ 526/* #undef NETDB_REENTRANT */\n+ 527\n+ 528/* Define to 1 if memset(0) sets pointers to NULL. */\n+ 529#define NULL_REP_IS_ZERO_BYTES 1\n+ 530\n+ 531/* Name of package */\n+ 532#define PACKAGE \"freetds\"\n+ 533\n+ 534/* Define to the address where bug reports for this package should be sent.\n+*/\n+ 535#define PACKAGE_BUGREPORT \"\"\n+ 536\n+ 537/* Define to the full name of this package. */\n+ 538#define PACKAGE_NAME \"FreeTDS\"\n+ 539\n+ 540/* Define to the full name and version of this package. */\n+ 541#define PACKAGE_STRING \"FreeTDS 1.3.17\"\n+ 542\n+ 543/* Define to the one symbol short name of this package. */\n+ 544#define PACKAGE_TARNAME \"freetds\"\n+ 545\n+ 546/* Define to the home page for this package. */\n+ 547#define PACKAGE_URL \"\"\n+ 548\n+ 549/* Define to the version of this package. */\n+ 550#define PACKAGE_VERSION \"1.3.17\"\n+ 551\n+ 552/* Define to necessary symbol if this constant uses a non-standard name on\n+ 553 your system. */\n+ 554/* #undef PTHREAD_CREATE_JOINABLE */\n+ 555\n+ 556/* The size of `char', as computed by sizeof. */\n+ 557#define SIZEOF_CHAR 1\n+ 558\n+ 559/* The size of `double', as computed by sizeof. */\n+ 560#define SIZEOF_DOUBLE 8\n+ 561\n+ 562/* The size of `float', as computed by sizeof. */\n+ 563#define SIZEOF_FLOAT 4\n+ 564\n+ 565/* The size of `int', as computed by sizeof. */\n+ 566#define SIZEOF_INT 4\n+ 567\n+ 568/* The size of `long', as computed by sizeof. */\n+ 569#define SIZEOF_LONG 4\n+ 570\n+ 571/* The size of `long double', as computed by sizeof. */\n+ 572#define SIZEOF_LONG_DOUBLE 8\n+ 573\n+ 574/* The size of `long long', as computed by sizeof. */\n+ 575#define SIZEOF_LONG_LONG 8\n+ 576\n+ 577/* The size of `short', as computed by sizeof. */\n+ 578#define SIZEOF_SHORT 2\n+ 579\n+ 580/* The size of `SQLWCHAR', as computed by sizeof. */\n+ 581#define SIZEOF_SQLWCHAR 2\n+ 582\n+ 583/* The size of `void *', as computed by sizeof. */\n+ 584#define SIZEOF_VOID_P 4\n+ 585\n+ 586/* The size of `wchar_t', as computed by sizeof. */\n+ 587#define SIZEOF_WCHAR_T 4\n+ 588\n+ 589/* The size of `__int64', as computed by sizeof. */\n+ 590#define SIZEOF___INT64 0\n+ 591\n+ 592/* If using the C implementation of alloca, define if you know the\n+ 593 direction of stack growth for your system; otherwise it will be\n+ 594 automatically deduced at runtime.\n+ 595 STACK_DIRECTION > 0 => grows toward higher addresses\n+ 596 STACK_DIRECTION < 0 => grows toward lower addresses\n+ 597 STACK_DIRECTION = 0 => direction of growth unknown */\n+ 598/* #undef STACK_DIRECTION */\n+ 599\n+ 600/* Define to 1 if all of the C90 standard headers exist (not just the ones\n+ 601 required in a freestanding environment). This macro is provided for\n+ 602 backward compatibility; new code need not use it. */\n+ 603#define STDC_HEADERS 1\n+ 604\n+ 605/* Define to use TDS 5.0 by default */\n+ 606/* #undef TDS50 */\n+ 607\n+ 608/* Define to use TDS 7.1 by default */\n+ 609/* #undef TDS71 */\n+ 610\n+ 611/* Define to use TDS 7.2 by default */\n+ 612/* #undef TDS72 */\n+ 613\n+ 614/* Define to use TDS 7.3 by default */\n+ 615/* #undef TDS73 */\n+ 616\n+ 617/* Define to use TDS 7.4 by default */\n+ 618/* #undef TDS74 */\n+ 619\n+ 620/* Define to 1 if your compiler supports __attribute__((destructor)). */\n+ 621#define TDS_ATTRIBUTE_DESTRUCTOR 1\n+ 622\n+ 623/* define to constant to use for clock_gettime */\n+ 624#define TDS_GETTIMEMILLI_CONST CLOCK_MONOTONIC\n+ 625\n+ 626/* Define if you have pthread with mutex support */\n+ 627#define TDS_HAVE_PTHREAD_MUTEX 1\n+ 628\n+ 629/* Define if stdio support locking */\n+ 630#define TDS_HAVE_STDIO_LOCKED 1\n+ 631\n+ 632/* define to prefix format string used for 64bit integers */\n+ 633#define TDS_I64_PREFIX \"ll\"\n+ 634\n+ 635/* Define if you don't care about thread safety */\n+ 636/* #undef TDS_NO_THREADSAFE */\n+ 637\n+ 638/* Define to 1 if last argument of SQLColAttribute it's SQLLEN * */\n+ 639#define TDS_SQLCOLATTRIBUTE_SQLLEN 1\n+ 640\n+ 641/* Define to 1 if SQLParamOptions accept SQLULEN as arguments */\n+ 642#define TDS_SQLPARAMOPTIONS_SQLLEN 1\n+ 643\n+ 644/* Defined if --enable-sybase-compat used */\n+ 645#define TDS_SYBASE_COMPAT 1\n+ 646\n+ 647/* Define to 1 if you can safely include both and .\n+This\n+ 648 macro is obsolete. */\n+ 649#define TIME_WITH_SYS_TIME 1\n+ 650\n+ 651/* Define to 1 if your declares `struct tm'. */\n+ 652/* #undef TM_IN_SYS_TIME */\n+ 653\n+ 654/* Enable extensions on AIX 3, Interix. */\n+ 655#ifndef _ALL_SOURCE\n+ 656# define _ALL_SOURCE 1\n+ 657#endif\n+ 658/* Enable general extensions on macOS. */\n+ 659#ifndef _DARWIN_C_SOURCE\n+ 660# define _DARWIN_C_SOURCE 1\n+ 661#endif\n+ 662/* Enable general extensions on Solaris. */\n+ 663#ifndef __EXTENSIONS__\n+ 664# define __EXTENSIONS__ 1\n+ 665#endif\n+ 666/* Enable GNU extensions on systems that have them. */\n+ 667#ifndef _GNU_SOURCE\n+ 668# define _GNU_SOURCE 1\n+ 669#endif\n+ 670/* Enable X/Open compliant socket functions that do not require linking\n+ 671 with -lxnet on HP-UX 11.11. */\n+ 672#ifndef _HPUX_ALT_XOPEN_SOCKET_API\n+ 673# define _HPUX_ALT_XOPEN_SOCKET_API 1\n+ 674#endif\n+ 675/* Identify the host operating system as Minix.\n+ 676 This macro does not affect the system headers' behavior.\n+ 677 A future release of Autoconf may stop defining this macro. */\n+ 678#ifndef _MINIX\n+ 679/* # undef _MINIX */\n+ 680#endif\n+ 681/* Enable general extensions on NetBSD.\n+ 682 Enable NetBSD compatibility extensions on Minix. */\n+ 683#ifndef _NETBSD_SOURCE\n+ 684# define _NETBSD_SOURCE 1\n+ 685#endif\n+ 686/* Enable OpenBSD compatibility extensions on NetBSD.\n+ 687 Oddly enough, this does nothing on OpenBSD. */\n+ 688#ifndef _OPENBSD_SOURCE\n+ 689# define _OPENBSD_SOURCE 1\n+ 690#endif\n+ 691/* Define to 1 if needed for POSIX-compatible behavior. */\n+ 692#ifndef _POSIX_SOURCE\n+ 693/* # undef _POSIX_SOURCE */\n+ 694#endif\n+ 695/* Define to 2 if needed for POSIX-compatible behavior. */\n+ 696#ifndef _POSIX_1_SOURCE\n+ 697/* # undef _POSIX_1_SOURCE */\n+ 698#endif\n+ 699/* Enable POSIX-compatible threading on Solaris. */\n+ 700#ifndef _POSIX_PTHREAD_SEMANTICS\n+ 701# define _POSIX_PTHREAD_SEMANTICS 1\n+ 702#endif\n+ 703/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */\n+ 704#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__\n+ 705# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1\n+ 706#endif\n+ 707/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */\n+ 708#ifndef __STDC_WANT_IEC_60559_BFP_EXT__\n+ 709# define __STDC_WANT_IEC_60559_BFP_EXT__ 1\n+ 710#endif\n+ 711/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */\n+ 712#ifndef __STDC_WANT_IEC_60559_DFP_EXT__\n+ 713# define __STDC_WANT_IEC_60559_DFP_EXT__ 1\n+ 714#endif\n+ 715/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */\n+ 716#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__\n+ 717# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1\n+ 718#endif\n+ 719/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */\n+ 720#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__\n+ 721# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1\n+ 722#endif\n+ 723/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */\n+ 724#ifndef __STDC_WANT_LIB_EXT2__\n+ 725# define __STDC_WANT_LIB_EXT2__ 1\n+ 726#endif\n+ 727/* Enable extensions specified by ISO/IEC 24747:2009. */\n+ 728#ifndef __STDC_WANT_MATH_SPEC_FUNCS__\n+ 729# define __STDC_WANT_MATH_SPEC_FUNCS__ 1\n+ 730#endif\n+ 731/* Enable extensions on HP NonStop. */\n+ 732#ifndef _TANDEM_SOURCE\n+ 733# define _TANDEM_SOURCE 1\n+ 734#endif\n+ 735/* Enable X/Open extensions. Define to 500 only if necessary\n+ 736 to make mbstate_t available. */\n+ 737#ifndef _XOPEN_SOURCE\n+ 738/* # undef _XOPEN_SOURCE */\n+ 739#endif\n+ 740\n+ 741\n+ 742/* Version number of package */\n+ 743#define VERSION \"1.3.17\"\n+ 744\n+ 745/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most\n+ 746 significant byte first (like Motorola and SPARC, unlike Intel). */\n+ 747#if defined AC_APPLE_UNIVERSAL_BUILD\n+ 748# if defined __BIG_ENDIAN__\n+ 749# define WORDS_BIGENDIAN 1\n+ 750# endif\n+ 751#else\n+ 752# ifndef WORDS_BIGENDIAN\n+ 753/* # undef WORDS_BIGENDIAN */\n+ 754# endif\n+ 755#endif\n+ 756\n+ 757/* Number of bits in a file offset, on hosts where this is settable. */\n+ 758#define _FILE_OFFSET_BITS 64\n+ 759\n+ 760/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */\n+ 761/* #undef _LARGEFILE_SOURCE */\n+ 762\n+ 763/* Define for large files, on AIX-style hosts. */\n+ 764/* #undef _LARGE_FILES */\n+ 765\n+ 766/* Define to empty if `const' does not conform to ANSI C. */\n+ 767/* #undef const */\n+ 768\n+ 769/* Define to `__inline__' or `__inline' if that's what the C compiler\n+ 770 calls it, or to nothing if 'inline' is not supported under any name. */\n+ 771#ifndef __cplusplus\n+ 772/* #undef inline */\n+ 773#endif\n+ 774\n+ 775/* Define to `unsigned int' if does not define. */\n+ 776/* #undef size_t */\n+ 777\n+ 778/* type to use in place of socklen_t if not defined */\n+ 779/* #undef socklen_t */\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00488_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00488_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/bkpublic.h Source File\n+FreeTDS API: include/ctlib.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n
    \n
    \n-
    bkpublic.h
    \n+
    ctlib.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,67 +96,337 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _bkpublic_h_
    \n-
    21#define _bkpublic_h_
    \n+
    20#ifndef _ctlib_h_
    \n+
    21#define _ctlib_h_
    \n
    22
    \n-
    23static const char rcsid_bkpublic_h[] = "$Id: bkpublic.h,v 1.5 2004-10-28 12:42:11 freddy77 Exp $";
    \n-
    24static const void *const no_unused_bkpublic_h_warn[] = { rcsid_bkpublic_h, no_unused_bkpublic_h_warn };
    \n-
    25
    \n-
    26/* seperate this stuff out later */
    \n-
    27#include <cspublic.h>
    \n-
    28
    \n-
    29#ifdef __cplusplus
    \n-
    30extern "C"
    \n-
    31{
    \n-
    32#if 0
    \n-
    33}
    \n-
    34#endif
    \n-
    35#endif
    \n-
    36
    \n-
    37/* buld properties start with 1 i guess */
    \n-
    38#define BLK_IDENTITY 1
    \n-
    39
    \n-
    40CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC ** blk_pointer);
    \n-
    41CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * datalen,
    \n-
    42 CS_SMALLINT * indicator);
    \n-
    43CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT colnum, CS_VOID * valuep,
    \n-
    44 CS_INT valuelen, CS_INT * outlenp);
    \n-
    45CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    46CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT * datafmt);
    \n-
    47CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);
    \n-
    48CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);
    \n-
    49CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp);
    \n-
    50CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW * rowp, CS_INT bufsize, CS_INT * outlenp);
    \n-
    51CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR * tablename, CS_INT tnamelen);
    \n-
    52CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    53CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);
    \n-
    54CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);
    \n-
    55CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);
    \n-
    56CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);
    \n-
    57CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);
    \n-
    58CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE * buffer, CS_INT buflen);
    \n-
    59CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);
    \n-
    60CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    61
    \n-
    62#ifdef __cplusplus
    \n-
    63#if 0
    \n-
    64{
    \n-
    65#endif
    \n-
    66}
    \n-
    67#endif
    \n-
    68
    \n-
    69#endif
    \n-
    Definition cstypes.h:114
    \n+
    23#include <freetds/tds.h>
    \n+
    24#include <freetds/convert.h>
    \n+
    25#include <freetds/utils/string.h>
    \n+
    26
    \n+
    27/*
    \n+
    28 * Internal (not part of the exposed API) prototypes and such.
    \n+
    29 */
    \n+
    30
    \n+
    31#include <freetds/pushvis.h>
    \n+
    32
    \n+
    33#ifdef __cplusplus
    \n+
    34extern "C"
    \n+
    35{
    \n+
    36#if 0
    \n+
    37}
    \n+
    38#endif
    \n+
    39#endif
    \n+
    40
    \n+
    41/*
    \n+
    42 * internal types
    \n+
    43 */
    \n+
    \n+\n+
    45{
    \n+
    46 short cs_expose_formats;
    \n+
    47};
    \n+
    \n+
    48
    \n+
    49/* Code changed for error handling */
    \n+
    50/* Code changes starts here - CT_DIAG - 01 */
    \n+
    51
    \n+
    52/* This structure is used in CT_DIAG */
    \n+
    53
    \n+
    \n+\n+
    55{
    \n+
    56 CS_CLIENTMSG *clientmsg;
    \n+
    57 struct cs_diag_msg_client *next;
    \n+
    58};
    \n+
    \n+
    59
    \n+
    \n+\n+
    61{
    \n+
    62 CS_SERVERMSG *servermsg;
    \n+
    63 struct cs_diag_msg_svr *next;
    \n+
    64};
    \n+
    \n+
    65
    \n+
    66/* Code changes ends here - CT_DIAG - 01 */
    \n+
    67
    \n+
    \n+\n+
    69{
    \n+
    70 CS_CLIENTMSG *msg;
    \n+
    71 struct cs_diag_msg *next;
    \n+
    72};
    \n+
    \n+
    73
    \n+
    \n+\n+
    75{
    \n+
    76 CS_INT date_convert_fmt;
    \n+
    77 CS_INT cs_errhandletype;
    \n+
    78 CS_INT cs_diag_msglimit;
    \n+
    79
    \n+
    80 /* added for storing the maximum messages limit CT_DIAG */
    \n+
    81 /* code changes starts here - CT_DIAG - 02 */
    \n+
    82
    \n+
    83 CS_INT cs_diag_msglimit_client;
    \n+
    84 CS_INT cs_diag_msglimit_server;
    \n+
    85 CS_INT cs_diag_msglimit_total;
    \n+
    86 struct cs_diag_msg_client *clientstore;
    \n+
    87 struct cs_diag_msg_svr *svrstore;
    \n+
    88
    \n+
    89 /* code changes ends here - CT_DIAG - 02 */
    \n+
    90
    \n+
    91 struct cs_diag_msg *msgstore;
    \n+
    92 CS_CSLIBMSG_FUNC _cslibmsg_cb;
    \n+
    93 CS_CLIENTMSG_FUNC _clientmsg_cb;
    \n+
    94 CS_SERVERMSG_FUNC _servermsg_cb;
    \n+
    95 /* code changes start here - CS_CONFIG - 01*/
    \n+
    96 void *userdata;
    \n+
    97 int userdata_len;
    \n+
    98 /* code changes end here - CS_CONFIG - 01*/
    \n+
    99 TDSCONTEXT *tds_ctx;
    \n+
    100 CS_CONFIG config;
    \n+\n+\n+
    103};
    \n+
    \n+
    104
    \n+
    105/*
    \n+
    106 * internal typedefs
    \n+
    107 */
    \n+
    \n+
    108typedef struct _ct_colinfo
    \n+
    109{
    \n+
    110 TDS_SMALLINT *indicator;
    \n+
    111}
    \n+
    \n+\n+
    113
    \n+
    114typedef struct _cs_dynamic CS_DYNAMIC;
    \n+
    115
    \n+
    \n+\n+
    117{
    \n+
    118 CS_CONTEXT *ctx;
    \n+\n+\n+
    121 CS_CLIENTMSG_FUNC _clientmsg_cb;
    \n+
    122 CS_SERVERMSG_FUNC _servermsg_cb;
    \n+
    123 void *userdata;
    \n+
    124 int userdata_len;
    \n+
    125 CS_LOCALE *locale;
    \n+
    126 CS_COMMAND *cmds;
    \n+
    127 CS_DYNAMIC *dynlist;
    \n+
    128 char *server_addr;
    \n+
    129 bool network_auth;
    \n+
    130};
    \n+
    \n+
    131
    \n+
    132/*
    \n+
    133 * Formerly CSREMOTE_PROC_PARAM, this structure can be used in other
    \n+
    134 * places, too.
    \n+
    135 */
    \n+
    136
    \n+
    \n+
    137typedef struct _cs_param
    \n+
    138{
    \n+
    139 struct _cs_param *next;
    \n+
    140 char *name;
    \n+
    141 int status;
    \n+
    142 int datatype;
    \n+
    143 CS_INT maxlen;
    \n+
    144 CS_INT scale;
    \n+
    145 CS_INT precision;
    \n+
    146 CS_INT *datalen;
    \n+
    147 CS_SMALLINT *ind;
    \n+
    148 CS_BYTE *value;
    \n+
    149 int param_by_value;
    \n+
    150 CS_INT datalen_value;
    \n+
    151 CS_SMALLINT indicator_value;
    \n+
    152} CS_PARAM;
    \n+
    \n+
    153
    \n+
    154/*
    \n+
    155 * Code added for RPC functionality - SUHA
    \n+
    156 * RPC Code changes starts here
    \n+
    157 */
    \n+
    158
    \n+\n+
    160
    \n+
    \n+
    161typedef struct _csremote_proc
    \n+
    162{
    \n+
    163 char *name;
    \n+
    164 CS_SMALLINT options;
    \n+
    165 CSREMOTE_PROC_PARAM *param_list;
    \n+\n+
    \n+
    167
    \n+
    168/*
    \n+
    169 * Structure CS_COMMAND changed for RPC functionality -SUHA
    \n+
    170 * Added CSREMOTE_PROC *rpc to CS_COMMAND structure
    \n+
    171 */
    \n+
    172
    \n+\n+
    174
    \n+
    \n+\n+
    176{
    \n+
    177 struct _cs_dynamic *next;
    \n+
    178 char *id;
    \n+
    179 char *stmt;
    \n+
    180 CS_DYNAMIC_PARAM *param_list;
    \n+
    181 TDSDYNAMIC *tdsdyn;
    \n+
    182};
    \n+
    \n+
    183
    \n+
    184/* specific FreeTDS commands */
    \n+
    185#define CS_DYNAMIC_CMD 160
    \n+
    186#define CS_CUR_CMD 161
    \n+
    187
    \n+
    188/* values for cs_command.results_state */
    \n+
    189
    \n+
    190#define _CS_RES_NONE -1
    \n+
    191#define _CS_RES_INIT 0
    \n+
    192#define _CS_RES_RESULTSET_EMPTY 1
    \n+
    193#define _CS_RES_RESULTSET_ROWS 2
    \n+
    194#define _CS_RES_STATUS 3
    \n+
    195#define _CS_RES_CMD_DONE 4
    \n+
    196#define _CS_RES_CMD_SUCCEED 5
    \n+
    197#define _CS_RES_END_RESULTS 6
    \n+
    198#define _CS_RES_DESCRIBE_RESULT 7
    \n+
    199
    \n+
    200/* values for cs_command.command_state */
    \n+
    201
    \n+
    202#define _CS_COMMAND_IDLE 0
    \n+
    203#define _CS_COMMAND_BUILDING 1
    \n+
    204#define _CS_COMMAND_READY 2
    \n+
    205#define _CS_COMMAND_SENT 3
    \n+
    206
    \n+
    207/* values for cs_command.cancel_state */
    \n+
    208#define _CS_CANCEL_NOCANCEL 0
    \n+
    209#define _CS_CANCEL_PENDING 1
    \n+
    210
    \n+
    \n+\n+
    212{
    \n+
    213 struct _cs_command *next;
    \n+
    214 CS_INT command_state;
    \n+
    215 CS_INT results_state;
    \n+
    216 CS_INT cancel_state;
    \n+
    217 CS_INT cursor_state;
    \n+
    218 CS_CONNECTION *con;
    \n+
    219 CS_INT command_type;
    \n+
    220 CS_CHAR *query;
    \n+
    221 short dynamic_cmd;
    \n+
    222 CS_DYNAMIC *dyn;
    \n+
    223 int row_prefetched;
    \n+
    224 int curr_result_type;
    \n+
    225 int bind_count;
    \n+
    226 int get_data_item;
    \n+
    227 int get_data_bytes_returned;
    \n+
    228 CS_IODESC *iodesc;
    \n+
    229 CS_INT send_data_started;
    \n+
    230 CSREMOTE_PROC *rpc;
    \n+
    231 CS_PARAM *input_params;
    \n+
    232 CS_INT client_cursor_id;
    \n+
    233 TDSCURSOR *cursor;
    \n+
    234 void *userdata;
    \n+
    235 int userdata_len;
    \n+
    236};
    \n+
    \n+
    237
    \n+
    \n+\n+
    239{
    \n+
    240 TDSBCPINFO bcpinfo;
    \n+
    241};
    \n+
    \n+
    242
    \n+
    243
    \n+
    244#define _CS_ERRHAND_INLINE 1
    \n+
    245#define _CS_ERRHAND_CB 2
    \n+
    246
    \n+
    \n+\n+
    248{
    \n+
    249 char *language;
    \n+
    250 char *charset;
    \n+
    251 char *time;
    \n+
    252 char *collate;
    \n+
    253};
    \n+
    \n+
    254
    \n+
    255/* internal defines for cursor processing */
    \n+
    256
    \n+
    257#define _CS_CURS_TYPE_UNACTIONED 0
    \n+
    258#define _CS_CURS_TYPE_REQUESTED 1
    \n+
    259#define _CS_CURS_TYPE_SENT 2
    \n+
    260
    \n+
    261/*
    \n+
    262 * internal prototypes
    \n+
    263 */
    \n+
    264TDSRET _ct_handle_server_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
    \n+
    265int _ct_handle_client_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
    \n+
    266TDS_SERVER_TYPE _ct_get_server_type(TDSSOCKET *tds, int datatype);
    \n+
    267int _ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO *bindinfo, CS_INT offset);
    \n+
    268int _ct_get_client_type(const TDSCOLUMN *col, bool describe);
    \n+
    269void _ctclient_msg(CS_CONNECTION * con, const char *funcname, int layer, int origin, int severity, int number,
    \n+
    270 const char *fmt, ...);
    \n+
    271CS_INT _ct_diag_clearmsg(CS_CONTEXT * context, CS_INT type);
    \n+
    272void _cs_locale_free(CS_LOCALE *locale);
    \n+
    273CS_LOCALE *_cs_locale_copy(CS_LOCALE *orig);
    \n+
    274int _cs_locale_copy_inplace(CS_LOCALE *new_locale, CS_LOCALE *orig);
    \n+
    275
    \n+
    276int _cs_convert_not_client(CS_CONTEXT *ctx, const TDSCOLUMN *curcol, CONV_RESULT *convert_buffer, unsigned char **p_src);
    \n+
    277
    \n+
    278#ifdef __cplusplus
    \n+
    279#if 0
    \n+
    280{
    \n+
    281#endif
    \n+
    282}
    \n+
    283#endif
    \n+
    284
    \n+
    285#include <freetds/popvis.h>
    \n+
    286
    \n+
    287#endif
    \n+
    Main include file for libtds.
    \n+
    Definition cstypes.h:97
    \n+
    Definition cstypes.h:177
    \n+
    Definition cstypes.h:191
    \n+
    Definition ctlib.h:45
    \n+
    Definition ctlib.h:55
    \n+
    Definition ctlib.h:61
    \n+
    Definition ctlib.h:69
    \n+
    Definition ctlib.h:75
    \n+
    int login_timeout
    not used unless positive
    Definition ctlib.h:101
    \n+
    int query_timeout
    not used unless positive
    Definition ctlib.h:102
    \n+
    Definition ctlib.h:109
    \n
    Definition ctlib.h:117
    \n+
    Definition ctlib.h:138
    \n+
    Definition ctlib.h:162
    \n+
    Definition ctlib.h:176
    \n+
    Definition ctlib.h:212
    \n
    Definition ctlib.h:239
    \n+
    Definition ctlib.h:248
    \n+
    Definition convert.h:34
    \n+
    Definition tds.h:517
    \n+
    Metadata about columns in regular and compute rows.
    Definition tds.h:689
    \n+
    Hold information for any results.
    Definition tds.h:769
    \n+
    Definition tds.h:876
    \n+
    Holds informations about a cursor.
    Definition tds.h:937
    \n+
    Holds information for a dynamic (also called prepared) query.
    Definition tds.h:977
    \n+
    Definition tds.h:1029
    \n+
    Information for a server connection.
    Definition tds.h:1163
    \n+
    Definition tds.h:1661
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-bkpublic.h\n+ctlib.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,79 +26,350 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _bkpublic_h_\n- 21#define _bkpublic_h_\n+ 20#ifndef _ctlib_h_\n+ 21#define _ctlib_h_\n 22\n- 23static const char rcsid_bkpublic_h[] = \"$Id: bkpublic.h,v 1.5 2004-10-28 12:\n-42:11 freddy77 Exp $\";\n- 24static const void *const no_unused_bkpublic_h_warn[] = { rcsid_bkpublic_h,\n-no_unused_bkpublic_h_warn };\n- 25\n- 26/* seperate this stuff out later */\n- 27#include \n- 28\n- 29#ifdef __cplusplus\n- 30extern \"C\"\n- 31{\n- 32#if 0\n- 33}\n- 34#endif\n- 35#endif\n- 36\n- 37/* buld properties start with 1 i guess */\n- 38#define BLK_IDENTITY 1\n- 39\n- 40CS_RETCODE blk_alloc(CS_CONNECTION * connection, CS_INT version, CS_BLKDESC\n-** blk_pointer);\n- 41CS_RETCODE blk_bind(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT *\n-datafmt, CS_VOID * buffer, CS_INT * datalen,\n- 42 CS_SMALLINT * indicator);\n- 43CS_RETCODE blk_colval(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n-* rowp, CS_INT colnum, CS_VOID * valuep,\n- 44 CS_INT valuelen, CS_INT * outlenp);\n- 45CS_RETCODE blk_default(CS_BLKDESC * blkdesc, CS_INT colnum, CS_VOID *\n-buffer, CS_INT buflen, CS_INT * outlen);\n- 46CS_RETCODE blk_describe(CS_BLKDESC * blkdesc, CS_INT colnum, CS_DATAFMT *\n-datafmt);\n- 47CS_RETCODE blk_done(CS_BLKDESC * blkdesc, CS_INT type, CS_INT * outrow);\n- 48CS_RETCODE blk_drop(CS_BLKDESC * blkdesc);\n- 49CS_RETCODE blk_getrow(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n-* rowp);\n- 50CS_RETCODE blk_gettext(SRV_PROC * srvproc, CS_BLKDESC * blkdescp, CS_BLK_ROW\n-* rowp, CS_INT bufsize, CS_INT * outlenp);\n- 51CS_RETCODE blk_init(CS_BLKDESC * blkdesc, CS_INT direction, CS_CHAR *\n-tablename, CS_INT tnamelen);\n- 52CS_RETCODE blk_props(CS_BLKDESC * blkdesc, CS_INT action, CS_INT property,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n- 53CS_RETCODE blk_rowalloc(SRV_PROC * srvproc, CS_BLK_ROW ** row);\n- 54CS_RETCODE blk_rowdrop(SRV_PROC * srvproc, CS_BLK_ROW * row);\n- 55CS_RETCODE blk_rowxfer(CS_BLKDESC * blkdesc);\n- 56CS_RETCODE blk_rowxfer_mult(CS_BLKDESC * blkdesc, CS_INT * row_count);\n- 57CS_RETCODE blk_sendrow(CS_BLKDESC * blkdesc, CS_BLK_ROW * row);\n- 58CS_RETCODE blk_sendtext(CS_BLKDESC * blkdesc, CS_BLK_ROW * row, CS_BYTE *\n-buffer, CS_INT buflen);\n- 59CS_RETCODE blk_srvinit(SRV_PROC * srvproc, CS_BLKDESC * blkdescp);\n- 60CS_RETCODE blk_textxfer(CS_BLKDESC * blkdesc, CS_BYTE * buffer, CS_INT\n-buflen, CS_INT * outlen);\n- 61\n- 62#ifdef __cplusplus\n- 63#if 0\n- 64{\n- 65#endif\n- 66}\n- 67#endif\n- 68\n- 69#endif\n-_cs_datafmt\n-Definition cstypes.h:114\n+ 23#include \n+ 24#include \n+ 25#include \n+ 26\n+ 27/*\n+ 28 * Internal (not part of the exposed API) prototypes and such.\n+ 29 */\n+ 30\n+ 31#include \n+ 32\n+ 33#ifdef __cplusplus\n+ 34extern \"C\"\n+ 35{\n+ 36#if 0\n+ 37}\n+ 38#endif\n+ 39#endif\n+ 40\n+ 41/*\n+ 42 * internal types\n+ 43 */\n+44struct _cs_config\n+ 45{\n+ 46 short cs_expose_formats;\n+ 47};\n+ 48\n+ 49/* Code changed for error handling */\n+ 50/* Code changes starts here - CT_DIAG - 01 */\n+ 51\n+ 52/* This structure is used in CT_DIAG */\n+ 53\n+54struct cs_diag_msg_client\n+ 55{\n+ 56 CS_CLIENTMSG *clientmsg;\n+ 57 struct cs_diag_msg_client *next;\n+ 58};\n+ 59\n+60struct cs_diag_msg_svr\n+ 61{\n+ 62 CS_SERVERMSG *servermsg;\n+ 63 struct cs_diag_msg_svr *next;\n+ 64};\n+ 65\n+ 66/* Code changes ends here - CT_DIAG - 01 */\n+ 67\n+68struct cs_diag_msg\n+ 69{\n+ 70 CS_CLIENTMSG *msg;\n+ 71 struct cs_diag_msg *next;\n+ 72};\n+ 73\n+74struct _cs_context\n+ 75{\n+ 76 CS_INT date_convert_fmt;\n+ 77 CS_INT cs_errhandletype;\n+ 78 CS_INT cs_diag_msglimit;\n+ 79\n+ 80 /* added for storing the maximum messages limit CT_DIAG */\n+ 81 /* code changes starts here - CT_DIAG - 02 */\n+ 82\n+ 83 CS_INT cs_diag_msglimit_client;\n+ 84 CS_INT cs_diag_msglimit_server;\n+ 85 CS_INT cs_diag_msglimit_total;\n+ 86 struct cs_diag_msg_client *clientstore;\n+ 87 struct cs_diag_msg_svr *svrstore;\n+ 88\n+ 89 /* code changes ends here - CT_DIAG - 02 */\n+ 90\n+ 91 struct cs_diag_msg *msgstore;\n+ 92 CS_CSLIBMSG_FUNC _cslibmsg_cb;\n+ 93 CS_CLIENTMSG_FUNC _clientmsg_cb;\n+ 94 CS_SERVERMSG_FUNC _servermsg_cb;\n+ 95 /* code changes start here - CS_CONFIG - 01*/\n+ 96 void *userdata;\n+ 97 int userdata_len;\n+ 98 /* code changes end here - CS_CONFIG - 01*/\n+ 99 TDSCONTEXT *tds_ctx;\n+ 100 CS_CONFIG config;\n+101 int login_timeout;\n+102 int query_timeout;\n+ 103};\n+ 104\n+ 105/*\n+ 106 * internal typedefs\n+ 107 */\n+108typedef struct _ct_colinfo\n+ 109{\n+ 110 TDS_SMALLINT *indicator;\n+ 111}\n+ 112CT_COLINFO;\n+ 113\n+ 114typedef struct _cs_dynamic CS_DYNAMIC;\n+ 115\n+116struct _cs_connection\n+ 117{\n+ 118 CS_CONTEXT *ctx;\n+ 119 TDSLOGIN *tds_login;\n+ 120 TDSSOCKET *tds_socket;\n+ 121 CS_CLIENTMSG_FUNC _clientmsg_cb;\n+ 122 CS_SERVERMSG_FUNC _servermsg_cb;\n+ 123 void *userdata;\n+ 124 int userdata_len;\n+ 125 CS_LOCALE *locale;\n+ 126 CS_COMMAND *cmds;\n+ 127 CS_DYNAMIC *dynlist;\n+ 128 char *server_addr;\n+ 129 bool network_auth;\n+ 130};\n+ 131\n+ 132/*\n+ 133 * Formerly CSREMOTE_PROC_PARAM, this structure can be used in other\n+ 134 * places, too.\n+ 135 */\n+ 136\n+137typedef struct _cs_param\n+ 138{\n+ 139 struct _cs_param *next;\n+ 140 char *name;\n+ 141 int status;\n+ 142 int datatype;\n+ 143 CS_INT maxlen;\n+ 144 CS_INT scale;\n+ 145 CS_INT precision;\n+ 146 CS_INT *datalen;\n+ 147 CS_SMALLINT *ind;\n+ 148 CS_BYTE *value;\n+ 149 int param_by_value;\n+ 150 CS_INT datalen_value;\n+ 151 CS_SMALLINT indicator_value;\n+ 152} CS_PARAM;\n+ 153\n+ 154/*\n+ 155 * Code added for RPC functionality - SUHA\n+ 156 * RPC Code changes starts here\n+ 157 */\n+ 158\n+ 159typedef CS_PARAM CSREMOTE_PROC_PARAM;\n+ 160\n+161typedef struct _csremote_proc\n+ 162{\n+ 163 char *name;\n+ 164 CS_SMALLINT options;\n+ 165 CSREMOTE_PROC_PARAM *param_list;\n+ 166} CSREMOTE_PROC;\n+ 167\n+ 168/*\n+ 169 * Structure CS_COMMAND changed for RPC functionality -SUHA\n+ 170 * Added CSREMOTE_PROC *rpc to CS_COMMAND structure\n+ 171 */\n+ 172\n+ 173typedef CS_PARAM CS_DYNAMIC_PARAM;\n+ 174\n+175struct _cs_dynamic\n+ 176{\n+ 177 struct _cs_dynamic *next;\n+ 178 char *id;\n+ 179 char *stmt;\n+ 180 CS_DYNAMIC_PARAM *param_list;\n+ 181 TDSDYNAMIC *tdsdyn;\n+ 182};\n+ 183\n+ 184/* specific FreeTDS commands */\n+ 185#define CS_DYNAMIC_CMD 160\n+ 186#define CS_CUR_CMD 161\n+ 187\n+ 188/* values for cs_command.results_state */\n+ 189\n+ 190#define _CS_RES_NONE -1\n+ 191#define _CS_RES_INIT 0\n+ 192#define _CS_RES_RESULTSET_EMPTY 1\n+ 193#define _CS_RES_RESULTSET_ROWS 2\n+ 194#define _CS_RES_STATUS 3\n+ 195#define _CS_RES_CMD_DONE 4\n+ 196#define _CS_RES_CMD_SUCCEED 5\n+ 197#define _CS_RES_END_RESULTS 6\n+ 198#define _CS_RES_DESCRIBE_RESULT 7\n+ 199\n+ 200/* values for cs_command.command_state */\n+ 201\n+ 202#define _CS_COMMAND_IDLE 0\n+ 203#define _CS_COMMAND_BUILDING 1\n+ 204#define _CS_COMMAND_READY 2\n+ 205#define _CS_COMMAND_SENT 3\n+ 206\n+ 207/* values for cs_command.cancel_state */\n+ 208#define _CS_CANCEL_NOCANCEL 0\n+ 209#define _CS_CANCEL_PENDING 1\n+ 210\n+211struct _cs_command\n+ 212{\n+ 213 struct _cs_command *next;\n+ 214 CS_INT command_state;\n+ 215 CS_INT results_state;\n+ 216 CS_INT cancel_state;\n+ 217 CS_INT cursor_state;\n+ 218 CS_CONNECTION *con;\n+ 219 CS_INT command_type;\n+ 220 CS_CHAR *query;\n+ 221 short dynamic_cmd;\n+ 222 CS_DYNAMIC *dyn;\n+ 223 int row_prefetched;\n+ 224 int curr_result_type;\n+ 225 int bind_count;\n+ 226 int get_data_item;\n+ 227 int get_data_bytes_returned;\n+ 228 CS_IODESC *iodesc;\n+ 229 CS_INT send_data_started;\n+ 230 CSREMOTE_PROC *rpc;\n+ 231 CS_PARAM *input_params;\n+ 232 CS_INT client_cursor_id;\n+ 233 TDSCURSOR *cursor;\n+ 234 void *userdata;\n+ 235 int userdata_len;\n+ 236};\n+ 237\n+238struct _cs_blkdesc\n+ 239{\n+ 240 TDSBCPINFO bcpinfo;\n+ 241};\n+ 242\n+ 243\n+ 244#define _CS_ERRHAND_INLINE 1\n+ 245#define _CS_ERRHAND_CB 2\n+ 246\n+247struct _cs_locale\n+ 248{\n+ 249 char *language;\n+ 250 char *charset;\n+ 251 char *time;\n+ 252 char *collate;\n+ 253};\n+ 254\n+ 255/* internal defines for cursor processing */\n+ 256\n+ 257#define _CS_CURS_TYPE_UNACTIONED 0\n+ 258#define _CS_CURS_TYPE_REQUESTED 1\n+ 259#define _CS_CURS_TYPE_SENT 2\n+ 260\n+ 261/*\n+ 262 * internal prototypes\n+ 263 */\n+ 264TDSRET _ct_handle_server_message(const TDSCONTEXT * ctxptr, TDSSOCKET *\n+tdsptr, TDSMESSAGE * msgptr);\n+ 265int _ct_handle_client_message(const TDSCONTEXT * ctxptr, TDSSOCKET *\n+tdsptr, TDSMESSAGE * msgptr);\n+ 266TDS_SERVER_TYPE _ct_get_server_type(TDSSOCKET *tds, int datatype);\n+ 267int _ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO\n+*bindinfo, CS_INT offset);\n+ 268int _ct_get_client_type(const TDSCOLUMN *col, bool describe);\n+ 269void _ctclient_msg(CS_CONNECTION * con, const char *funcname, int layer,\n+int origin, int severity, int number,\n+ 270 const char *fmt, ...);\n+ 271CS_INT _ct_diag_clearmsg(CS_CONTEXT * context, CS_INT type);\n+ 272void _cs_locale_free(CS_LOCALE *locale);\n+ 273CS_LOCALE *_cs_locale_copy(CS_LOCALE *orig);\n+ 274int _cs_locale_copy_inplace(CS_LOCALE *new_locale, CS_LOCALE *orig);\n+ 275\n+ 276int _cs_convert_not_client(CS_CONTEXT *ctx, const TDSCOLUMN *curcol,\n+CONV_RESULT *convert_buffer, unsigned char **p_src);\n+ 277\n+ 278#ifdef __cplusplus\n+ 279#if 0\n+ 280{\n+ 281#endif\n+ 282}\n+ 283#endif\n+ 284\n+ 285#include \n+ 286\n+ 287#endif\n+tds.h\n+Main include file for libtds.\n+_cs_iodesc\n+Definition cstypes.h:97\n+_cs_clientmsg\n+Definition cstypes.h:177\n+_cs_servermsg\n+Definition cstypes.h:191\n+_cs_config\n+Definition ctlib.h:45\n+cs_diag_msg_client\n+Definition ctlib.h:55\n+cs_diag_msg_svr\n+Definition ctlib.h:61\n+cs_diag_msg\n+Definition ctlib.h:69\n+_cs_context\n+Definition ctlib.h:75\n+_cs_context::login_timeout\n+int login_timeout\n+not used unless positive\n+Definition ctlib.h:101\n+_cs_context::query_timeout\n+int query_timeout\n+not used unless positive\n+Definition ctlib.h:102\n+_ct_colinfo\n+Definition ctlib.h:109\n _cs_connection\n Definition ctlib.h:117\n+_cs_param\n+Definition ctlib.h:138\n+_csremote_proc\n+Definition ctlib.h:162\n+_cs_dynamic\n+Definition ctlib.h:176\n+_cs_command\n+Definition ctlib.h:212\n _cs_blkdesc\n Definition ctlib.h:239\n+_cs_locale\n+Definition ctlib.h:248\n+conv_result\n+Definition convert.h:34\n+tds_login\n+Definition tds.h:517\n+tds_column\n+Metadata about columns in regular and compute rows.\n+Definition tds.h:689\n+tds_result_info\n+Hold information for any results.\n+Definition tds.h:769\n+tds_message\n+Definition tds.h:876\n+tds_cursor\n+Holds informations about a cursor.\n+Definition tds.h:937\n+tds_dynamic\n+Holds information for a dynamic (also called prepared) query.\n+Definition tds.h:977\n+tds_context\n+Definition tds.h:1029\n+tds_socket\n+Information for a server connection.\n+Definition tds.h:1163\n+tds_bcpinfo\n+Definition tds.h:1661\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00491_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00491_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/cspublic.h Source File\n+FreeTDS API: include/sybdb.h Source File\n \n \n \n \n \n \n \n@@ -74,819 +74,1544 @@\n \n
    \n \n
    \n \n
    \n-
    cspublic.h
    \n+
    sybdb.h
    \n
    \n
    \n-
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+Go to the documentation of this file.
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n
    2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
    \n-
    3 *
    \n-
    4 * This library is free software; you can redistribute it and/or
    \n-
    5 * modify it under the terms of the GNU Library General Public
    \n-
    6 * License as published by the Free Software Foundation; either
    \n-
    7 * version 2 of the License, or (at your option) any later version.
    \n-
    8 *
    \n-
    9 * This library is distributed in the hope that it will be useful,
    \n-
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n-
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n-
    12 * Library General Public License for more details.
    \n-
    13 *
    \n-
    14 * You should have received a copy of the GNU Library General Public
    \n-
    15 * License along with this library; if not, write to the
    \n-
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n-
    17 * Boston, MA 02111-1307, USA.
    \n-
    18 */
    \n-
    19
    \n-
    20#ifndef _cspublic_h_
    \n-
    21#define _cspublic_h_
    \n-
    22
    \n-
    23#include <cstypes.h>
    \n-
    24
    \n-
    25#undef TDS_STATIC_CAST
    \n-
    26#ifdef __cplusplus
    \n-
    27#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n-
    28extern "C"
    \n-
    29{
    \n-
    30#if 0
    \n-
    31}
    \n-
    32#endif
    \n-
    33#else
    \n-
    34#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n-
    35#endif
    \n-
    36
    \n-
    37#define CS_PUBLIC
    \n-
    38#define CS_STATIC static
    \n-
    39
    \n-
    40#define CS_SUCCEED 1
    \n-
    41#define CS_FAIL 0
    \n-
    42#define CS_MEM_ERROR -1
    \n-
    43#define CS_PENDING -2
    \n-
    44#define CS_QUIET -3
    \n-
    45#define CS_BUSY -4
    \n-
    46#define CS_INTERRUPT -5
    \n-
    47#define CS_BLK_HAS_TEXT -6
    \n-
    48#define CS_CONTINUE -7
    \n-
    49#define CS_FATAL -8
    \n-
    50#define CS_RET_HAFAILOVER -9
    \n-
    51#define CS_UNSUPPORTED -10
    \n-
    52
    \n-
    53#define CS_CANCELED -202
    \n-
    54#define CS_ROW_FAIL -203
    \n-
    55#define CS_END_DATA -204
    \n-
    56#define CS_END_RESULTS -205
    \n-
    57#define CS_END_ITEM -206
    \n-
    58#define CS_NOMSG -207
    \n-
    59#define CS_TIMED_OUT -208
    \n-
    60
    \n-
    61#define CS_SIZEOF(x) sizeof(x)
    \n+
    3 * Copyright (C) 2010, 2011 Frediano Ziglio
    \n+
    4 *
    \n+
    5 * This library is free software; you can redistribute it and/or
    \n+
    6 * modify it under the terms of the GNU Library General Public
    \n+
    7 * License as published by the Free Software Foundation; either
    \n+
    8 * version 2 of the License, or (at your option) any later version.
    \n+
    9 *
    \n+
    10 * This library is distributed in the hope that it will be useful,
    \n+
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    13 * Library General Public License for more details.
    \n+
    14 *
    \n+
    15 * You should have received a copy of the GNU Library General Public
    \n+
    16 * License along with this library; if not, write to the
    \n+
    17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    18 * Boston, MA 02111-1307, USA.
    \n+
    19 */
    \n+
    20
    \n+
    28#ifndef _sybdb_h_
    \n+
    29#define _sybdb_h_
    \n+
    30
    \n+
    31#include "tds_sysdep_public.h"
    \n+
    32
    \n+
    33#undef TDS_STATIC_CAST
    \n+
    34#ifdef __cplusplus
    \n+
    35#define TDS_STATIC_CAST(type, a) static_cast<type>(a)
    \n+
    36extern "C"
    \n+
    37{
    \n+
    38#if 0
    \n+
    39}
    \n+
    40#endif
    \n+
    41#else
    \n+
    42#define TDS_STATIC_CAST(type, a) ((type)(a))
    \n+
    43#endif
    \n+
    44
    \n+
    45#ifdef FALSE
    \n+
    46#undef FALSE
    \n+
    47#endif
    \n+
    48#ifdef TRUE
    \n+
    49#undef TRUE
    \n+
    50#endif
    \n+
    51#define FALSE 0
    \n+
    52#define TRUE 1
    \n+
    53
    \n+
    54#define DBSAVE 1
    \n+
    55#define DBNOSAVE 0
    \n+
    56#define DBNOERR -1
    \n+
    57
    \n+
    58#define INT_EXIT 0
    \n+
    59#define INT_CONTINUE 1
    \n+
    60#define INT_CANCEL 2
    \n+
    61#define INT_TIMEOUT 3
    \n
    62
    \n-
    63#define CS_LAYER(x) (((x) >> 24) & 0xFF)
    \n-
    64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)
    \n-
    65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)
    \n-
    66#define CS_NUMBER(x) ((x) & 0xFF)
    \n-
    67
    \n-
    68/* forward declarations */
    \n-
    69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
    \n-
    70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
    \n-
    71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
    \n-
    72
    \n-
    73
    \n-
    74#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
    \n-
    75#define CS_SRC_VALUE -2562
    \n-
    76
    \n-
    77
    \n-
    78
    \n-
    79/* status bits for CS_SERVERMSG */
    \n-
    80#define CS_HASEED 0x01
    \n-
    81
    \n-
    82typedef struct _cs_blkdesc CS_BLKDESC;
    \n+
    63#define DBMAXNUMLEN 33
    \n+
    64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */
    \n+
    65#define DBMAXNAME 128
    \n+
    66
    \n+
    70#define DBVERSION_UNKNOWN 0
    \n+
    71#define DBVERSION_46 1
    \n+
    72#define DBVERSION_100 2
    \n+
    73#define DBVERSION_42 3
    \n+
    74#define DBVERSION_70 4
    \n+
    75#define DBVERSION_71 5
    \n+
    76#define DBVERSION_72 6
    \n+
    77#define DBVERSION_73 7
    \n+
    78#define DBVERSION_74 8
    \n+
    79
    \n+
    80/* these two are defined by Microsoft for dbsetlversion() */
    \n+
    81#define DBVER42 DBVERSION_42
    \n+
    82#define DBVER60 DBVERSION_70 /* our best approximation */
    \n
    83
    \n-
    84/* CS_CAP_REQUEST values */
    \n-
    85#define CS_REQ_LANG 1
    \n-
    86#define CS_REQ_RPC 2
    \n-
    87#define CS_REQ_NOTIF 3
    \n-
    88#define CS_REQ_MSTMT 4
    \n-
    89#define CS_REQ_BCP 5
    \n-
    90#define CS_REQ_CURSOR 6
    \n-
    91#define CS_REQ_DYN 7
    \n-
    92#define CS_REQ_MSG 8
    \n-
    93#define CS_REQ_PARAM 9
    \n-
    94#define CS_DATA_INT1 10
    \n-
    95#define CS_DATA_INT2 11
    \n-
    96#define CS_DATA_INT4 12
    \n-
    97#define CS_DATA_BIT 13
    \n-
    98#define CS_DATA_CHAR 14
    \n-
    99#define CS_DATA_VCHAR 15
    \n-
    100#define CS_DATA_BIN 16
    \n-
    101#define CS_DATA_VBIN 17
    \n-
    102#define CS_DATA_MNY8 18
    \n-
    103#define CS_DATA_MNY4 19
    \n-
    104#define CS_DATA_DATE8 20
    \n-
    105#define CS_DATA_DATE4 21
    \n-
    106#define CS_DATA_FLT4 22
    \n-
    107#define CS_DATA_FLT8 23
    \n-
    108#define CS_DATA_NUM 24
    \n-
    109#define CS_DATA_TEXT 25
    \n-
    110#define CS_DATA_IMAGE 26
    \n-
    111#define CS_DATA_DEC 27
    \n-
    112#define CS_DATA_LCHAR 28
    \n-
    113#define CS_DATA_LBIN 29
    \n-
    114#define CS_DATA_INTN 30
    \n-
    115#define CS_DATA_DATETIMEN 31
    \n-
    116#define CS_DATA_MONEYN 32
    \n-
    117#define CS_CSR_PREV 33
    \n-
    118#define CS_CSR_FIRST 34
    \n-
    119#define CS_CSR_LAST 35
    \n-
    120#define CS_CSR_ABS 36
    \n-
    121#define CS_CSR_REL 37
    \n-
    122#define CS_CSR_MULTI 38
    \n-
    123#define CS_CON_OOB 39
    \n-
    124#define CS_CON_INBAND 40
    \n-
    125#define CS_CON_LOGICAL 41
    \n-
    126#define CS_PROTO_TEXT 42
    \n-
    127#define CS_PROTO_BULK 43
    \n-
    128#define CS_REQ_URGNOTIF 44
    \n-
    129#define CS_DATA_SENSITIVITY 45
    \n-
    130#define CS_DATA_BOUNDARY 46
    \n-
    131#define CS_PROTO_DYNAMIC 47
    \n-
    132#define CS_PROTO_DYNPROC 48
    \n-
    133#define CS_DATA_FLTN 49
    \n-
    134#define CS_DATA_BITN 50
    \n-
    135#define CS_OPTION_GET 51
    \n-
    136#define CS_DATA_INT8 52
    \n-
    137#define CS_DATA_VOID 53
    \n-
    138
    \n-
    139/* CS_CAP_RESPONSE values */
    \n-
    140#define CS_RES_NOMSG 1
    \n-
    141#define CS_RES_NOEED 2
    \n-
    142#define CS_RES_NOPARAM 3
    \n-
    143#define CS_DATA_NOINT1 4
    \n-
    144#define CS_DATA_NOINT2 5
    \n-
    145#define CS_DATA_NOINT4 6
    \n-
    146#define CS_DATA_NOBIT 7
    \n-
    147#define CS_DATA_NOCHAR 8
    \n-
    148#define CS_DATA_NOVCHAR 9
    \n-
    149#define CS_DATA_NOBIN 10
    \n-
    150#define CS_DATA_NOVBIN 11
    \n-
    151#define CS_DATA_NOMNY8 12
    \n-
    152#define CS_DATA_NOMNY4 13
    \n-
    153#define CS_DATA_NODATE8 14
    \n-
    154#define CS_DATA_NODATE4 15
    \n-
    155#define CS_DATA_NOFLT4 16
    \n-
    156#define CS_DATA_NOFLT8 17
    \n-
    157#define CS_DATA_NONUM 18
    \n-
    158#define CS_DATA_NOTEXT 19
    \n-
    159#define CS_DATA_NOIMAGE 20
    \n-
    160#define CS_DATA_NODEC 21
    \n-
    161#define CS_DATA_NOLCHAR 22
    \n-
    162#define CS_DATA_NOLBIN 23
    \n-
    163#define CS_DATA_NOINTN 24
    \n-
    164#define CS_DATA_NODATETIMEN 25
    \n-
    165#define CS_DATA_NOMONEYN 26
    \n-
    166#define CS_CON_NOOOB 27
    \n-
    167#define CS_CON_NOINBAND 28
    \n-
    168#define CS_PROTO_NOTEXT 29
    \n-
    169#define CS_PROTO_NOBULK 30
    \n-
    170#define CS_DATA_NOSENSITIVITY 31
    \n-
    171#define CS_DATA_NOBOUNDARY 32
    \n-
    172#define CS_RES_NOTDSDEBUG 33
    \n-
    173#define CS_RES_NOSTRIPBLANKS 34
    \n-
    174#define CS_DATA_NOINT8 35
    \n-
    175
    \n-
    176/* Properties */
    \n-
    177enum
    \n-
    178{
    \n-
    179/*
    \n-
    180 * These defines looks weird but programs can test support for defines,
    \n-
    181 * compiler can check enum and there are no define side effecs
    \n-
    182 */
    \n-
    183 CS_USERNAME = 9100,
    \n-
    184#define CS_USERNAME CS_USERNAME
    \n-
    185 CS_PASSWORD = 9101,
    \n-
    186#define CS_PASSWORD CS_PASSWORD
    \n-
    187 CS_APPNAME = 9102,
    \n-
    188#define CS_APPNAME CS_APPNAME
    \n-
    189 CS_HOSTNAME = 9103,
    \n-
    190#define CS_HOSTNAME CS_HOSTNAME
    \n-
    191 CS_LOGIN_STATUS = 9104,
    \n-
    192#define CS_LOGIN_STATUS CS_LOGIN_STATUS
    \n-
    193 CS_TDS_VERSION = 9105,
    \n-
    194#define CS_TDS_VERSION CS_TDS_VERSION
    \n-
    195 CS_CHARSETCNV = 9106,
    \n-
    196#define CS_CHARSETCNV CS_CHARSETCNV
    \n-
    197 CS_PACKETSIZE = 9107,
    \n-
    198#define CS_PACKETSIZE CS_PACKETSIZE
    \n-
    199 CS_USERDATA = 9108,
    \n-
    200#define CS_USERDATA CS_USERDATA
    \n-
    201 CS_NETIO = 9110,
    \n-
    202#define CS_NETIO CS_NETIO
    \n-
    203 CS_TEXTLIMIT = 9112,
    \n-
    204#define CS_TEXTLIMIT CS_TEXTLIMIT
    \n-
    205 CS_HIDDEN_KEYS = 9113,
    \n-
    206#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
    \n-
    207 CS_VERSION = 9114,
    \n-
    208#define CS_VERSION CS_VERSION
    \n-
    209 CS_IFILE = 9115,
    \n-
    210#define CS_IFILE CS_IFILE
    \n-
    211 CS_LOGIN_TIMEOUT = 9116,
    \n-
    212#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
    \n-
    213 CS_TIMEOUT = 9117,
    \n-
    214#define CS_TIMEOUT CS_TIMEOUT
    \n-
    215 CS_MAX_CONNECT = 9118,
    \n-
    216#define CS_MAX_CONNECT CS_MAX_CONNECT
    \n-
    217 CS_EXPOSE_FMTS = 9120,
    \n-
    218#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
    \n-
    219 CS_EXTRA_INF = 9121,
    \n-
    220#define CS_EXTRA_INF CS_EXTRA_INF
    \n-
    221 CS_ANSI_BINDS = 9123,
    \n-
    222#define CS_ANSI_BINDS CS_ANSI_BINDS
    \n-
    223 CS_BULK_LOGIN = 9124,
    \n-
    224#define CS_BULK_LOGIN CS_BULK_LOGIN
    \n-
    225 CS_LOC_PROP = 9125,
    \n-
    226#define CS_LOC_PROP CS_LOC_PROP
    \n-
    227 CS_PARENT_HANDLE = 9130,
    \n-
    228#define CS_PARENT_HANDLE CS_PARENT_HANDLE
    \n-
    229 CS_EED_CMD = 9131,
    \n-
    230#define CS_EED_CMD CS_EED_CMD
    \n-
    231 CS_DIAG_TIMEOUT = 9132,
    \n-
    232#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
    \n-
    233 CS_DISABLE_POLL = 9133,
    \n-
    234#define CS_DISABLE_POLL CS_DISABLE_POLL
    \n-
    235 CS_SEC_ENCRYPTION = 9135,
    \n-
    236#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
    \n-
    237 CS_SEC_CHALLENGE = 9136,
    \n-
    238#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
    \n-
    239 CS_SEC_NEGOTIATE = 9137,
    \n-
    240#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
    \n-
    241 CS_CON_STATUS = 9143,
    \n-
    242#define CS_CON_STATUS CS_CON_STATUS
    \n-
    243 CS_VER_STRING = 9144,
    \n-
    244#define CS_VER_STRING CS_VER_STRING
    \n-
    245 CS_SERVERNAME = 9146,
    \n-
    246#define CS_SERVERNAME CS_SERVERNAME
    \n-
    247 CS_SEC_APPDEFINED = 9149,
    \n-
    248#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
    \n-
    249 CS_STICKY_BINDS = 9151,
    \n-
    250#define CS_STICKY_BINDS CS_STICKY_BINDS
    \n-
    251 CS_SEC_NETWORKAUTH = 9175,
    \n-
    252#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
    \n-
    253 CS_SEC_DELEGATION = 9176,
    \n-
    254#define CS_SEC_DELEGATION CS_SEC_DELEGATION
    \n-
    255 CS_SEC_MUTUALAUTH = 9177,
    \n-
    256#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
    \n-
    257 CS_SEC_SERVERPRINCIPAL = 9188,
    \n-
    258#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
    \n-
    259 CS_SERVERADDR = 9206,
    \n-
    260#define CS_SERVERADDR CS_SERVERADDR
    \n-
    261 CS_PORT = 9300,
    \n-
    262#define CS_PORT CS_PORT
    \n-
    263 CS_CLIENTCHARSET = 9301,
    \n-
    264#define CS_CLIENTCHARSET CS_CLIENTCHARSET
    \n-
    265 CS_DATABASE = 9302
    \n-
    266#define CS_DATABASE CS_DATABASE
    \n-
    267};
    \n-
    268
    \n-
    269/* Arbitrary precision math operators */
    \n-
    270enum
    \n-
    271{
    \n-
    272 CS_ADD = 1,
    \n-
    273 CS_SUB,
    \n-
    274 CS_MULT,
    \n-
    275 CS_DIV
    \n-
    276};
    \n-
    277
    \n-
    278enum
    \n-
    279{
    \n-
    280#define CS_TDS_AUTO CS_TDS_AUTO
    \n-
    281 CS_TDS_AUTO = 0,
    \n-
    282 CS_TDS_40 = 7360,
    \n-
    283 CS_TDS_42,
    \n-
    284 CS_TDS_46,
    \n-
    285 CS_TDS_495,
    \n-
    286 CS_TDS_50,
    \n-
    287 CS_TDS_70,
    \n-
    288 CS_TDS_71,
    \n-
    289#define CS_TDS_71 CS_TDS_71
    \n-
    290 CS_TDS_72,
    \n-
    291#define CS_TDS_72 CS_TDS_72
    \n-
    292 CS_TDS_73,
    \n-
    293#define CS_TDS_73 CS_TDS_73
    \n-
    294 CS_TDS_74,
    \n-
    295#define CS_TDS_74 CS_TDS_74
    \n-
    296};
    \n-
    297
    \n-
    298/* bit mask values used by CS_DATAFMT.status */
    \n-
    299#define CS_HIDDEN (1 << 0)
    \n-
    300#define CS_KEY (1 << 1)
    \n-
    301#define CS_VERSION_KEY (1 << 2)
    \n-
    302#define CS_NODATA (1 << 3)
    \n-
    303#define CS_UPDATABLE (1 << 4)
    \n-
    304#define CS_CANBENULL (1 << 5)
    \n-
    305#define CS_DESCIN (1 << 6)
    \n-
    306#define CS_DESCOUT (1 << 7)
    \n-
    307#define CS_INPUTVALUE (1 << 8)
    \n-
    308#define CS_UPDATECOL (1 << 9)
    \n-
    309#define CS_RETURN (1 << 10)
    \n-
    310#define CS_TIMESTAMP (1 << 13)
    \n-
    311#define CS_NODEFAULT (1 << 14)
    \n-
    312#define CS_IDENTITY (1 << 15)
    \n-
    313
    \n-
    314/*
    \n-
    315 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
    \n-
    316 * (the documentation states -1)
    \n-
    317 */
    \n-
    318#define CS_GOODDATA 0
    \n-
    319#define CS_NULLDATA (-1)
    \n-
    320
    \n-
    321/* CS_CON_STATUS read-only property bit mask values */
    \n-
    322#define CS_CONSTAT_CONNECTED 0x01
    \n-
    323#define CS_CONSTAT_DEAD 0x02
    \n-
    324
    \n-
    325/*
    \n-
    326 * Code added for CURSOR support
    \n-
    327 * types accepted by ct_cursor
    \n-
    328 */
    \n-
    329#define CS_CURSOR_DECLARE 700
    \n-
    330#define CS_CURSOR_OPEN 701
    \n-
    331#define CS_CURSOR_ROWS 703
    \n-
    332#define CS_CURSOR_UPDATE 704
    \n-
    333#define CS_CURSOR_DELETE 705
    \n-
    334#define CS_CURSOR_CLOSE 706
    \n-
    335#define CS_CURSOR_DEALLOC 707
    \n-
    336#define CS_CURSOR_OPTION 725
    \n-
    337
    \n-
    338#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
    \n-
    339#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
    \n-
    340#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
    \n-
    341#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
    \n-
    342
    \n-
    343
    \n-
    344#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
    \n-
    345#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
    \n-
    346#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
    \n-
    347#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
    \n-
    348#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
    \n-
    349#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
    \n-
    350#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
    \n-
    351#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
    \n-
    352
    \n-
    353#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
    \n-
    354#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
    \n-
    355#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
    \n-
    356#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
    \n-
    357
    \n-
    358/* options accepted by ct_options() */
    \n-
    359#define CS_OPT_DATEFIRST 5001
    \n-
    360#define CS_OPT_TEXTSIZE 5002
    \n-
    361#define CS_OPT_STATS_TIME 5003
    \n-
    362#define CS_OPT_STATS_IO 5004
    \n-
    363#define CS_OPT_ROWCOUNT 5005
    \n-
    364#define CS_OPT_DATEFORMAT 5007
    \n-
    365#define CS_OPT_ISOLATION 5008
    \n-
    366#define CS_OPT_AUTHON 5009
    \n-
    367#define CS_OPT_SHOWPLAN 5013
    \n-
    368#define CS_OPT_NOEXEC 5014
    \n-
    369#define CS_OPT_ARITHIGNORE 5015
    \n-
    370#define CS_OPT_TRUNCIGNORE 5016
    \n-
    371#define CS_OPT_ARITHABORT 5017
    \n-
    372#define CS_OPT_PARSEONLY 5018
    \n-
    373#define CS_OPT_GETDATA 5020
    \n-
    374#define CS_OPT_NOCOUNT 5021
    \n-
    375#define CS_OPT_FORCEPLAN 5023
    \n-
    376#define CS_OPT_FORMATONLY 5024
    \n-
    377#define CS_OPT_CHAINXACTS 5025
    \n-
    378#define CS_OPT_CURCLOSEONXACT 5026
    \n-
    379#define CS_OPT_FIPSFLAG 5027
    \n-
    380#define CS_OPT_RESTREES 5028
    \n-
    381#define CS_OPT_IDENTITYON 5029
    \n-
    382#define CS_OPT_CURREAD 5030
    \n-
    383#define CS_OPT_CURWRITE 5031
    \n-
    384#define CS_OPT_IDENTITYOFF 5032
    \n-
    385#define CS_OPT_AUTHOFF 5033
    \n-
    386#define CS_OPT_ANSINULL 5034
    \n-
    387#define CS_OPT_QUOTED_IDENT 5035
    \n-
    388#define CS_OPT_ANSIPERM 5036
    \n-
    389#define CS_OPT_STR_RTRUNC 5037
    \n-
    390
    \n-
    391/* options accepted by ct_command() */
    \n-
    392enum ct_command_options
    \n-
    393{
    \n-
    394 CS_MORE = 16,
    \n-
    395 CS_END = 32,
    \n-
    396 CS_RECOMPILE = 188,
    \n-
    397 CS_NO_RECOMPILE,
    \n-
    398 CS_BULK_INIT,
    \n-
    399 CS_BULK_CONT,
    \n-
    400 CS_BULK_DATA,
    \n-
    401 CS_COLUMN_DATA
    \n-
    402};
    \n-
    403
    \n-
    404
    \n-
    405/*
    \n-
    406 * bind formats, should be mapped to TDS types
    \n-
    407 * can be a combination of bit
    \n-
    408 */
    \n-
    409enum
    \n-
    410{
    \n-
    411 CS_FMT_UNUSED = 0,
    \n-
    412#define CS_FMT_UNUSED CS_FMT_UNUSED
    \n-
    413 CS_FMT_NULLTERM = 1,
    \n-
    414#define CS_FMT_NULLTERM CS_FMT_NULLTERM
    \n-
    415 CS_FMT_PADNULL = 2,
    \n-
    416#define CS_FMT_PADBLANK CS_FMT_PADBLANK
    \n-
    417 CS_FMT_PADBLANK = 4,
    \n-
    418#define CS_FMT_PADNULL CS_FMT_PADNULL
    \n-
    419 CS_FMT_JUSTIFY_RT = 8
    \n-
    420#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
    \n-
    421};
    \n-
    422
    \n-
    423/* callbacks */
    \n-
    424#define CS_COMPLETION_CB 1
    \n-
    425#define CS_SERVERMSG_CB 2
    \n-
    426#define CS_CLIENTMSG_CB 3
    \n-
    427#define CS_NOTIF_CB 4
    \n-
    428#define CS_ENCRYPT_CB 5
    \n-
    429#define CS_CHALLENGE_CB 6
    \n-
    430#define CS_DS_LOOKUP_CB 7
    \n-
    431#define CS_SECSESSION_CB 8
    \n-
    432#define CS_SIGNAL_CB 100
    \n-
    433#define CS_MESSAGE_CB 9119
    \n+
    88#define DBTDS_UNKNOWN 0
    \n+
    89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */
    \n+
    90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */
    \n+
    91#define DBTDS_4_0 3 /* 4.0 SQL Server */
    \n+
    92#define DBTDS_4_2 4 /* 4.2 SQL Server */
    \n+
    93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */
    \n+
    94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */
    \n+
    95#define DBTDS_5_0 7 /* 5.0 SQL Server */
    \n+
    96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */
    \n+
    97#define DBTDS_8_0 9 /* Microsoft SQL Server 2000 */
    \n+
    98#define DBTDS_9_0 10 /* Microsoft SQL Server 2005 */
    \n+
    99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */
    \n+
    100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */
    \n+
    101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */
    \n+
    102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */
    \n+
    103
    \n+
    104#define DBTXPLEN 16
    \n+
    105
    \n+
    106#define BCPMAXERRS 1
    \n+
    107#define BCPFIRST 2
    \n+
    108#define BCPLAST 3
    \n+
    109#define BCPBATCH 4
    \n+
    110#define BCPKEEPIDENTITY 8
    \n+
    111
    \n+
    112#define BCPLABELED 5
    \n+
    113#define BCPHINTS 6
    \n+
    114
    \n+
    115#define DBCMDNONE 0
    \n+
    116#define DBCMDPEND 1
    \n+
    117#define DBCMDSENT 2
    \n+
    118
    \n+
    119typedef int RETCODE;
    \n+
    120
    \n+
    121typedef void DBCURSOR;
    \n+
    122typedef void DBXLATE;
    \n+
    123typedef void DBSORTORDER;
    \n+
    124typedef void DBLOGINFO;
    \n+
    125typedef void *DBVOIDPTR;
    \n+
    126typedef short SHORT;
    \n+
    127typedef unsigned short USHORT;
    \n+
    128typedef int (*INTFUNCPTR) (void *, ...);
    \n+
    129typedef int (*DBWAITFUNC) (void);
    \n+
    130typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);
    \n+
    131typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);
    \n+
    132typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);
    \n+
    133typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);
    \n+
    134
    \n+
    135#ifndef __INCvxWorksh
    \n+
    136/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you
    \n+
    137** redefine them. */
    \n+
    138/* __INCvxWorksh will get #defined by std. include files included from tds.h
    \n+
    139*/
    \n+
    140#ifdef STATUS
    \n+
    141/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h
    \n+
    142 when _REENTRANT is defined.
    \n+
    143*/
    \n+
    144#undef STATUS
    \n+
    145#endif
    \n+
    146typedef int STATUS;
    \n+
    147#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)
    \n+
    148typedef int BOOL;
    \n+
    149#endif
    \n+
    150#endif
    \n+
    151
    \n+
    152#ifndef _tds_h_
    \n+
    153/* copied from tds.h */
    \n+
    154/* TODO find a best way... */
    \n+
    155enum
    \n+
    156{
    \n+
    157 SYBCHAR = 47, /* 0x2F */
    \n+
    158#define SYBCHAR SYBCHAR
    \n+
    159 SYBVARCHAR = 39, /* 0x27 */
    \n+
    160#define SYBVARCHAR SYBVARCHAR
    \n+
    161 SYBINTN = 38, /* 0x26 */
    \n+
    162#define SYBINTN SYBINTN
    \n+
    163 SYBINT1 = 48, /* 0x30 */
    \n+
    164#define SYBINT1 SYBINT1
    \n+
    165 SYBINT2 = 52, /* 0x34 */
    \n+
    166#define SYBINT2 SYBINT2
    \n+
    167 SYBINT4 = 56, /* 0x38 */
    \n+
    168#define SYBINT4 SYBINT4
    \n+
    169 SYBINT8 = 127, /* 0x7F */
    \n+
    170#define SYBINT8 SYBINT8
    \n+
    171 SYBFLT8 = 62, /* 0x3E */
    \n+
    172#define SYBFLT8 SYBFLT8
    \n+
    173 SYBDATETIME = 61, /* 0x3D */
    \n+
    174#define SYBDATETIME SYBDATETIME
    \n+
    175 SYBBIT = 50, /* 0x32 */
    \n+
    176#define SYBBIT SYBBIT
    \n+
    177 SYBBITN = 104, /* 0x68 */
    \n+
    178#define SYBBITN SYBBITN
    \n+
    179 SYBTEXT = 35, /* 0x23 */
    \n+
    180#define SYBTEXT SYBTEXT
    \n+
    181 SYBNTEXT = 99, /* 0x63 */
    \n+
    182#define SYBNTEXT SYBNTEXT
    \n+
    183 SYBIMAGE = 34, /* 0x22 */
    \n+
    184#define SYBIMAGE SYBIMAGE
    \n+
    185 SYBMONEY4 = 122, /* 0x7A */
    \n+
    186#define SYBMONEY4 SYBMONEY4
    \n+
    187 SYBMONEY = 60, /* 0x3C */
    \n+
    188#define SYBMONEY SYBMONEY
    \n+
    189 SYBDATETIME4 = 58, /* 0x3A */
    \n+
    190#define SYBDATETIME4 SYBDATETIME4
    \n+
    191 SYBREAL = 59, /* 0x3B */
    \n+
    192#define SYBREAL SYBREAL
    \n+
    193 SYBBINARY = 45, /* 0x2D */
    \n+
    194#define SYBBINARY SYBBINARY
    \n+
    195 SYBVOID = 31, /* 0x1F */
    \n+
    196#define SYBVOID SYBVOID
    \n+
    197 SYBVARBINARY = 37, /* 0x25 */
    \n+
    198#define SYBVARBINARY SYBVARBINARY
    \n+
    199 SYBNUMERIC = 108, /* 0x6C */
    \n+
    200#define SYBNUMERIC SYBNUMERIC
    \n+
    201 SYBDECIMAL = 106, /* 0x6A */
    \n+
    202#define SYBDECIMAL SYBDECIMAL
    \n+
    203 SYBFLTN = 109, /* 0x6D */
    \n+
    204#define SYBFLTN SYBFLTN
    \n+
    205 SYBMONEYN = 110, /* 0x6E */
    \n+
    206#define SYBMONEYN SYBMONEYN
    \n+
    207 SYBDATETIMN = 111, /* 0x6F */
    \n+
    208#define SYBDATETIMN SYBDATETIMN
    \n+
    209 SYBNVARCHAR = 103, /* 0x67 */
    \n+
    210#define SYBNVARCHAR SYBNVARCHAR
    \n+
    211 SYBDATE = 49, /* 0x31 */
    \n+
    212#define SYBDATE SYBDATE
    \n+
    213 SYBTIME = 51, /* 0x33 */
    \n+
    214#define SYBTIME SYBTIME
    \n+
    215 SYBBIGDATETIME = 187, /* 0xBB */
    \n+
    216#define SYBBIGDATETIME SYBBIGDATETIME
    \n+
    217 SYBBIGTIME = 188, /* 0xBC */
    \n+
    218#define SYBBIGTIME SYBBIGTIME
    \n+
    219 SYBMSDATE = 40, /* 0x28 */
    \n+
    220#define SYBMSDATE SYBMSDATE
    \n+
    221 SYBMSTIME = 41, /* 0x29 */
    \n+
    222#define SYBMSTIME SYBMSTIME
    \n+
    223 SYBMSDATETIME2 = 42, /* 0x2A */
    \n+
    224#define SYBMSDATETIME2 SYBMSDATETIME2
    \n+
    225 SYBMSDATETIMEOFFSET = 43, /* 0x2B */
    \n+
    226#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET
    \n+
    227};
    \n+
    228
    \n+
    229#define SYBAOPCNT 0x4b
    \n+
    230#define SYBAOPCNTU 0x4c
    \n+
    231#define SYBAOPSUM 0x4d
    \n+
    232#define SYBAOPSUMU 0x4e
    \n+
    233#define SYBAOPAVG 0x4f
    \n+
    234#define SYBAOPAVGU 0x50
    \n+
    235#define SYBAOPMIN 0x51
    \n+
    236#define SYBAOPMAX 0x52
    \n+
    237
    \n+
    238/* mssql2k compute operator */
    \n+
    239#define SYBAOPCNT_BIG 0x09
    \n+
    240#define SYBAOPSTDEV 0x30
    \n+
    241#define SYBAOPSTDEVP 0x31
    \n+
    242#define SYBAOPVAR 0x32
    \n+
    243#define SYBAOPVARP 0x33
    \n+
    244#define SYBAOPCHECKSUM_AGG 0x72
    \n+
    245
    \n+
    246#endif
    \n+
    247
    \n+
    248typedef unsigned char DBBOOL;
    \n+
    249typedef char DBCHAR;
    \n+
    250typedef unsigned char DBBIT;
    \n+
    251typedef unsigned char DBTINYINT;
    \n+
    252typedef int16_t DBSMALLINT;
    \n+
    253typedef int32_t DBINT;
    \n+
    254typedef int64_t DBBIGINT;
    \n+
    255typedef unsigned char DBBINARY;
    \n+
    256typedef tds_sysdep_real32_type DBREAL;
    \n+
    257typedef tds_sysdep_real64_type DBFLT8;
    \n+
    258typedef uint16_t DBUSMALLINT;
    \n+
    259typedef uint32_t DBUINT;
    \n+
    260typedef uint64_t DBUBIGINT;
    \n+
    261
    \n+
    \n+
    262typedef struct
    \n+
    263{
    \n+
    264 DBSMALLINT len;
    \n+
    265 char str[256];
    \n+
    266} DBVARYCHAR;
    \n+
    \n+
    267
    \n+
    \n+
    268typedef struct
    \n+
    269{
    \n+
    270 DBSMALLINT len;
    \n+
    271 unsigned char array[256];
    \n+
    272} DBVARYBIN;
    \n+
    \n+
    273
    \n+
    \n+
    274typedef struct
    \n+
    275{
    \n+
    276 unsigned char precision;
    \n+
    277 unsigned char scale;
    \n+
    278 unsigned char array[33];
    \n+
    279} DBNUMERIC;
    \n+
    \n+
    280
    \n+
    281typedef DBNUMERIC DBDECIMAL;
    \n+
    282
    \n+
    \n+
    283typedef struct
    \n+
    284{
    \n+
    285 DBINT mnyhigh;
    \n+
    286 DBUINT mnylow;
    \n+
    287} DBMONEY;
    \n+
    \n+
    288
    \n+
    \n+
    289typedef struct
    \n+
    290{
    \n+
    291 DBINT mny4;
    \n+
    292} DBMONEY4;
    \n+
    \n+
    293
    \n+
    \n+
    294typedef struct
    \n+
    295{
    \n+
    296 DBINT dtdays;
    \n+
    297 DBINT dttime;
    \n+
    298} DBDATETIME;
    \n+
    \n+
    299
    \n+
    \n+
    300typedef struct
    \n+
    301{
    \n+
    302 DBUSMALLINT days; /* days since Jan-1-1900 */
    \n+
    303 DBUSMALLINT minutes; /* minutes since midnight */
    \n+\n+
    \n+
    305
    \n+
    \n+
    306typedef struct
    \n+
    307{
    \n+
    308 DBUBIGINT time;
    \n+
    309 DBINT date;
    \n+
    310 DBSMALLINT offset;
    \n+
    311 DBUSMALLINT time_prec:3;
    \n+
    312/* fix a problem with some public headers defining _res */
    \n+
    313#undef _res
    \n+
    314 DBUSMALLINT _res:10;
    \n+
    315 DBUSMALLINT has_time:1;
    \n+
    316 DBUSMALLINT has_date:1;
    \n+
    317 DBUSMALLINT has_offset:1;
    \n+\n+
    \n+
    319
    \n+
    320#ifdef MSDBLIB
    \n+
    321# define SQLCHAR SYBCHAR
    \n+
    322 typedef struct
    \n+
    323 {
    \n+
    324 DBUSMALLINT numdays;
    \n+
    325 DBUSMALLINT nummins;
    \n+
    326 } DBDATETIM4;
    \n+
    327#endif
    \n+
    328
    \n+
    329typedef struct tds_dblib_loginrec LOGINREC;
    \n+
    330
    \n+
    331#ifndef DOS32X
    \n+
    332typedef unsigned char BYTE;
    \n+
    333#endif
    \n+
    334
    \n+
    \n+
    335typedef struct dbtypeinfo
    \n+
    336{
    \n+
    337 DBINT precision;
    \n+
    338 DBINT scale;
    \n+
    339} DBTYPEINFO;
    \n+
    \n+
    340
    \n+
    \n+\n+
    342{
    \n+
    343 BYTE *strtext;
    \n+
    344 DBINT strtotlen;
    \n+
    345 struct dbstring *strnext;
    \n+
    346};
    \n+
    \n+
    347typedef struct dbstring DBSTRING;
    \n+
    348
    \n+
    349/* Used by dbcolinfo */
    \n+
    350enum
    \n+
    351{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */
    \n+
    352typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;
    \n+
    353
    \n+
    \n+
    354typedef struct
    \n+
    355{
    \n+
    356 DBINT SizeOfStruct;
    \n+
    357 DBCHAR Name[MAXCOLNAMELEN+2];
    \n+
    358 DBCHAR ActualName[MAXCOLNAMELEN+2];
    \n+
    359 DBCHAR TableName[MAXCOLNAMELEN+2];
    \n+
    360 SHORT Type;
    \n+
    361 DBINT UserType;
    \n+
    362 DBINT MaxLength;
    \n+
    363 BYTE Precision;
    \n+
    364 BYTE Scale;
    \n+
    365 BOOL VarLength;
    \n+
    366 BYTE Null;
    \n+
    367 BYTE CaseSensitive;
    \n+
    368 BYTE Updatable;
    \n+
    369 BOOL Identity;
    \n+
    370
    \n+
    371} DBCOL;
    \n+
    \n+
    372
    \n+
    \n+
    373typedef struct
    \n+
    374{
    \n+
    375 DBINT SizeOfStruct;
    \n+
    376 DBCHAR Name[MAXCOLNAMELEN+2];
    \n+
    377 DBCHAR ActualName[MAXCOLNAMELEN+2];
    \n+
    378 DBCHAR TableName[MAXCOLNAMELEN+2];
    \n+
    379 SHORT Type;
    \n+
    380 DBINT UserType;
    \n+
    381 DBINT MaxLength;
    \n+
    382 BYTE Precision;
    \n+
    383 BYTE Scale;
    \n+
    384 BOOL VarLength;
    \n+
    385 BYTE Null;
    \n+
    386 BYTE CaseSensitive;
    \n+
    387 BYTE Updatable;
    \n+
    388 BOOL Identity;
    \n+
    389 SHORT ServerType;
    \n+
    390 DBINT ServerMaxLength;
    \n+
    391 DBCHAR ServerTypeDeclaration[256];
    \n+
    392} DBCOL2;
    \n+
    \n+
    393/* end dbcolinfo stuff */
    \n+
    394
    \n+
    395
    \n+
    396
    \n+
    397/* a large list of options, DBTEXTSIZE is needed by sybtcl */
    \n+
    398#define DBPARSEONLY 0
    \n+
    399#define DBESTIMATE 1
    \n+
    400#define DBSHOWPLAN 2
    \n+
    401#define DBNOEXEC 3
    \n+
    402#define DBARITHIGNORE 4
    \n+
    403#define DBNOCOUNT 5
    \n+
    404#define DBARITHABORT 6
    \n+
    405#define DBTEXTLIMIT 7
    \n+
    406#define DBBROWSE 8
    \n+
    407#define DBOFFSET 9
    \n+
    408#define DBSTAT 10
    \n+
    409#define DBERRLVL 11
    \n+
    410#define DBCONFIRM 12
    \n+
    411#define DBSTORPROCID 13
    \n+
    412#define DBBUFFER 14
    \n+
    413#define DBNOAUTOFREE 15
    \n+
    414#define DBROWCOUNT 16
    \n+
    415#define DBTEXTSIZE 17
    \n+
    416#define DBNATLANG 18
    \n+
    417#define DBDATEFORMAT 19
    \n+
    418#define DBPRPAD 20
    \n+
    419#define DBPRCOLSEP 21
    \n+
    420#define DBPRLINELEN 22
    \n+
    421#define DBPRLINESEP 23
    \n+
    422#define DBLFCONVERT 24
    \n+
    423#define DBDATEFIRST 25
    \n+
    424#define DBCHAINXACTS 26
    \n+
    425#define DBFIPSFLAG 27
    \n+
    426#define DBISOLATION 28
    \n+
    427#define DBAUTH 29
    \n+
    428#define DBIDENTITY 30
    \n+
    429#define DBNOIDCOL 31
    \n+
    430#define DBDATESHORT 32
    \n+
    431#define DBCLIENTCURSORS 33
    \n+
    432#define DBSETTIME 34
    \n+
    433#define DBQUOTEDIDENT 35
    \n
    434
    \n-
    435/* string types */
    \n-
    436#define CS_NULLTERM -9
    \n-
    437#define CS_WILDCARD -99
    \n-
    438#define CS_NO_LIMIT -9999
    \n-
    439#define CS_UNUSED -99999
    \n-
    440
    \n-
    441/* other */
    \n-
    442#define CS_GET 33
    \n-
    443#define CS_SET 34
    \n-
    444#define CS_CLEAR 35
    \n-
    445#define CS_INIT 36
    \n-
    446#define CS_STATUS 37
    \n-
    447#define CS_MSGLIMIT 38
    \n-
    448#define CS_SUPPORTED 40
    \n-
    449
    \n-
    450#define CS_CMD_DONE 4046
    \n-
    451#define CS_CMD_SUCCEED 4047
    \n-
    452#define CS_CMD_FAIL 4048
    \n-
    453
    \n-
    454/* commands */
    \n-
    455#define CS_LANG_CMD 148
    \n-
    456#define CS_RPC_CMD 149
    \n-
    457#define CS_SEND_DATA_CMD 151
    \n-
    458#define CS_SEND_BULK_CMD 153
    \n-
    459
    \n-
    460#define CS_VERSION_100 112
    \n-
    461#define CS_VERSION_110 1100
    \n-
    462#define CS_VERSION_120 1100
    \n-
    463#define CS_VERSION_125 12500
    \n-
    464#define CS_VERSION_150 15000
    \n-
    465
    \n-
    466#define BLK_VERSION_100 CS_VERSION_100
    \n-
    467#define BLK_VERSION_110 CS_VERSION_110
    \n-
    468#define BLK_VERSION_120 CS_VERSION_120
    \n-
    469#define BLK_VERSION_125 CS_VERSION_125
    \n-
    470#define BLK_VERSION_150 CS_VERSION_150
    \n-
    471
    \n-
    472#define CS_FORCE_EXIT 300
    \n-
    473#define CS_FORCE_CLOSE 301
    \n-
    474
    \n-
    475#define CS_SYNC_IO 8111
    \n-
    476#define CS_ASYNC_IO 8112
    \n-
    477#define CS_DEFER_IO 8113
    \n-
    478
    \n-
    479#define CS_CANCEL_CURRENT 6000
    \n-
    480#define CS_CANCEL_ALL 6001
    \n-
    481#define CS_CANCEL_ATTN 6002
    \n-
    482
    \n-
    483#define CS_ROW_COUNT 800
    \n-
    484#define CS_CMD_NUMBER 801
    \n-
    485#define CS_NUM_COMPUTES 802
    \n-
    486#define CS_NUMDATA 803
    \n-
    487#define CS_NUMORDERCOLS 805
    \n-
    488#define CS_MSGTYPE 806
    \n-
    489#define CS_BROWSE_INFO 807
    \n-
    490#define CS_TRANS_STATE 808
    \n-
    491
    \n-
    492#define CS_TRAN_UNDEFINED 0
    \n-
    493#define CS_TRAN_IN_PROGRESS 1
    \n-
    494#define CS_TRAN_COMPLETED 2
    \n-
    495#define CS_TRAN_FAIL 3
    \n-
    496#define CS_TRAN_STMT_FAIL 4
    \n-
    497
    \n-
    498#define CS_COMP_OP 5350
    \n-
    499#define CS_COMP_ID 5351
    \n-
    500#define CS_COMP_COLID 5352
    \n-
    501#define CS_COMP_BYLIST 5353
    \n-
    502#define CS_BYLIST_LEN 5354
    \n-
    503
    \n-
    504#define CS_NO_COUNT -1
    \n-
    505
    \n-
    506#define CS_OP_SUM 5370
    \n-
    507#define CS_OP_AVG 5371
    \n-
    508#define CS_OP_COUNT 5372
    \n-
    509#define CS_OP_MIN 5373
    \n-
    510#define CS_OP_MAX 5374
    \n-
    511
    \n-
    512#define CS_CAP_REQUEST 1
    \n-
    513#define CS_CAP_RESPONSE 2
    \n-
    514
    \n-
    515#define CS_PREPARE 717
    \n-
    516#define CS_EXECUTE 718
    \n-
    517#define CS_DESCRIBE_INPUT 720
    \n-
    518#define CS_DESCRIBE_OUTPUT 721
    \n-
    519
    \n-
    520#define CS_DEALLOC 711
    \n+
    435#define DBNUMOPTIONS 36
    \n+
    436
    \n+
    437#define DBPADOFF 0
    \n+
    438#define DBPADON 1
    \n+
    439
    \n+
    440#define OFF 0
    \n+
    441#define ON 1
    \n+
    442
    \n+
    443#define NOSUCHOPTION 2
    \n+
    444
    \n+
    445#define MAXOPTTEXT 32
    \n+
    446
    \n+
    447typedef struct tds_dblib_dbprocess DBPROCESS;
    \n+
    448
    \n+
    449/*
    \n+
    450 * Sybase & Microsoft use different names for the dbdaterec members.
    \n+
    451 * Keep these two structures physically identical in memory.
    \n+
    452 * dbdatecrack() casts one to the other for ease of implementation.
    \n+
    453 *
    \n+
    454 * Giving credit where credit is due, we can acknowledge that
    \n+
    455 * Microsoft chose the better names here, hands down. ("datedmonth"?!)
    \n+
    456 */
    \n+
    \n+\n+
    458{
    \n+
    459 DBINT year; /* 1753 - 9999 */
    \n+
    460 DBINT quarter; /* 1 - 4 */
    \n+
    461 DBINT month; /* 1 - 12 */
    \n+
    462 DBINT day; /* 1 - 31 */
    \n+
    463 DBINT dayofyear; /* 1 - 366 */
    \n+
    464 DBINT week; /* 1 - 54 (for leap years) */
    \n+
    465 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
    \n+
    466 DBINT hour; /* 0 - 23 */
    \n+
    467 DBINT minute; /* 0 - 59 */
    \n+
    468 DBINT second; /* 0 - 59 */
    \n+
    469 DBINT millisecond; /* 0 - 999 */
    \n+
    470 DBINT tzone; /* -840 - 840 */
    \n+
    471};
    \n+
    \n+
    472
    \n+
    \n+\n+
    474{
    \n+
    475 DBINT dateyear; /* 1900 and counting */
    \n+
    476 DBINT quarter; /* 0 - 3 (Microsoft only) */
    \n+
    477 DBINT datemonth; /* 0 - 11 */
    \n+
    478 DBINT datedmonth; /* 1 - 31 */
    \n+
    479 DBINT datedyear; /* 1 - 366 */
    \n+
    480 DBINT week; /* 1 - 54 (Microsoft only) */
    \n+
    481 DBINT datedweek; /* 0 - 6 */
    \n+
    482 DBINT datehour; /* 0 - 23 */
    \n+
    483 DBINT dateminute; /* 0 - 59 */
    \n+
    484 DBINT datesecond; /* 0 - 59 */
    \n+
    485 DBINT datemsecond; /* 0 - 999 */
    \n+
    486 DBINT datetzone; /* -840 - 840 */
    \n+
    487};
    \n+
    \n+
    488
    \n+
    \n+\n+
    490{
    \n+
    491 DBINT year; /* 1753 - 9999 */
    \n+
    492 DBINT quarter; /* 1 - 4 */
    \n+
    493 DBINT month; /* 1 - 12 */
    \n+
    494 DBINT day; /* 1 - 31 */
    \n+
    495 DBINT dayofyear; /* 1 - 366 */
    \n+
    496 DBINT week; /* 1 - 54 (for leap years) */
    \n+
    497 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */
    \n+
    498 DBINT hour; /* 0 - 23 */
    \n+
    499 DBINT minute; /* 0 - 59 */
    \n+
    500 DBINT second; /* 0 - 59 */
    \n+
    501 DBINT nanosecond; /* 0 - 999999999 */
    \n+
    502 DBINT tzone; /* 0 - 127 (Sybase only) */
    \n+
    503};
    \n+
    \n+
    504
    \n+
    \n+\n+
    506{
    \n+
    507 DBINT dateyear; /* 1900 and counting */
    \n+
    508 DBINT quarter; /* 0 - 3 (Microsoft only) */
    \n+
    509 DBINT datemonth; /* 0 - 11 */
    \n+
    510 DBINT datedmonth; /* 1 - 31 */
    \n+
    511 DBINT datedyear; /* 1 - 366 */
    \n+
    512 DBINT week; /* 1 - 54 (Microsoft only) */
    \n+
    513 DBINT datedweek; /* 0 - 6 */
    \n+
    514 DBINT datehour; /* 0 - 23 */
    \n+
    515 DBINT dateminute; /* 0 - 59 */
    \n+
    516 DBINT datesecond; /* 0 - 59 */
    \n+
    517 DBINT datensecond; /* 0 - 999999999 */
    \n+
    518 DBINT datetzone; /* 0 - 127 */
    \n+
    519};
    \n+
    \n+
    520
    \n
    521
    \n-
    522#define CS_LC_ALL 7
    \n-
    523#define CS_SYB_LANG 8
    \n-
    524#define CS_SYB_CHARSET 9
    \n-
    525#define CS_SYB_SORTORDER 10
    \n-
    526#define CS_SYB_COLLATE CS_SYB_SORTORDER
    \n-
    527#define CS_SYB_LANG_CHARSET 11
    \n-
    528
    \n-
    529#define CS_BLK_IN 1
    \n-
    530#define CS_BLK_OUT 2
    \n+
    522#ifdef MSDBLIB
    \n+\n+\n+
    525#else
    \n+
    526typedef struct tds_sybase_dbdaterec DBDATEREC;
    \n+
    527typedef struct tds_sybase_dbdaterec2 DBDATEREC2;
    \n+
    528#endif
    \n+
    529
    \n+
    530typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr);
    \n
    531
    \n-
    532#define CS_BLK_BATCH 1
    \n-
    533#define CS_BLK_ALL 2
    \n-
    534#define CS_BLK_CANCEL 3
    \n-
    535
    \n-
    536/* to do support these */
    \n-
    537
    \n-
    538#define CS_BLK_ARRAY_MAXLEN 0x1000
    \n-
    539#define CS_DEF_PREC 18
    \n+
    532typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname,
    \n+
    533 char *proc, int line);
    \n+
    534
    \n+
    535/* dbpoll() result codes, sybtcl needs DBRESULT */
    \n+
    536#define DBRESULT 1
    \n+
    537#define DBNOTIFICATION 2
    \n+
    538#define DBTIMEOUT 3
    \n+
    539#define DBINTERRUPT 4
    \n
    540
    \n-
    541/* Error Severities */
    \n-
    542#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
    \n-
    543#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
    \n-
    544#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
    \n-
    545#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
    \n-
    546#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
    \n-
    547#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
    \n-
    548#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
    \n-
    549#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
    \n-
    550
    \n-
    551/* result_types */
    \n-
    552#define CS_COMPUTE_RESULT 4045
    \n-
    553#define CS_CURSOR_RESULT 4041
    \n-
    554#define CS_PARAM_RESULT 4042
    \n-
    555#define CS_ROW_RESULT 4040
    \n-
    556#define CS_STATUS_RESULT 4043
    \n-
    557#define CS_COMPUTEFMT_RESULT 4050
    \n-
    558#define CS_ROWFMT_RESULT 4049
    \n-
    559#define CS_MSG_RESULT 4044
    \n-
    560#define CS_DESCRIBE_RESULT 4051
    \n-
    561
    \n-
    562/* bind types */
    \n-
    563#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
    \n-
    564#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
    \n-
    565#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
    \n-
    566#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
    \n-
    567#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
    \n-
    568#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
    \n-
    569#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
    \n-
    570#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
    \n-
    571#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
    \n-
    572#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
    \n-
    573#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
    \n-
    574#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
    \n-
    575#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
    \n-
    576#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
    \n-
    577#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
    \n-
    578#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
    \n-
    579#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
    \n-
    580#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
    \n-
    581#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
    \n-
    582#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
    \n-
    583#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
    \n-
    584#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
    \n-
    585#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
    \n-
    586#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
    \n-
    587#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
    \n-
    588#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
    \n-
    589#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
    \n-
    590#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
    \n-
    591#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
    \n-
    592#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
    \n-
    593#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
    \n-
    594#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
    \n-
    595#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
    \n-
    596#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
    \n-
    597#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
    \n-
    598#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
    \n-
    599#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
    \n-
    600#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
    \n-
    601#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
    \n+
    541/* more sybtcl needs: */
    \n+
    542#define DBTXTSLEN 8
    \n+
    543
    \n+
    544/* bind types */
    \n+
    545#define CHARBIND 0
    \n+
    546#define STRINGBIND 1
    \n+
    547#define NTBSTRINGBIND 2
    \n+
    548#define VARYCHARBIND 3
    \n+
    549#define VARYBINBIND 4
    \n+
    550#define TINYBIND 6
    \n+
    551#define SMALLBIND 7
    \n+
    552#define INTBIND 8
    \n+
    553#define FLT8BIND 9
    \n+
    554#define REALBIND 10
    \n+
    555#define DATETIMEBIND 11
    \n+
    556#define SMALLDATETIMEBIND 12
    \n+
    557#define MONEYBIND 13
    \n+
    558#define SMALLMONEYBIND 14
    \n+
    559#define BINARYBIND 15
    \n+
    560#define BITBIND 16
    \n+
    561#define NUMERICBIND 17
    \n+
    562#define DECIMALBIND 18
    \n+
    563#define SRCNUMERICBIND 19
    \n+
    564#define SRCDECIMALBIND 20
    \n+
    565#define DATEBIND 21
    \n+
    566#define TIMEBIND 22
    \n+
    567#define BIGDATETIMEBIND 23
    \n+
    568#define BIGTIMEBIND 24
    \n+
    569#define BIGINTBIND 30
    \n+
    570#define DATETIME2BIND 31
    \n+
    571#define MAXBINDTYPES 32 /* keep last */
    \n+
    572
    \n+
    573#define DBPRCOLSEP 21
    \n+
    574#define DBPRLINELEN 22
    \n+
    575#define DBRPCNORETURN 0
    \n+
    576#define DBRPCRETURN 1
    \n+
    577#define DBRPCDEFAULT 2
    \n+
    578
    \n+
    579#define REG_ROW -1
    \n+
    580#define MORE_ROWS -1
    \n+
    581#define NO_MORE_ROWS -2
    \n+
    582#define BUF_FULL -3
    \n+
    583#define NO_MORE_RESULTS 2
    \n+
    584#define SUCCEED 1
    \n+
    585#define FAIL 0
    \n+
    586
    \n+
    587#define DB_IN 1
    \n+
    588#define DB_OUT 2
    \n+
    589#define DB_QUERYOUT 3
    \n+
    590
    \n+
    591#define DBSINGLE 0
    \n+
    592#define DBDOUBLE 1
    \n+
    593#define DBBOTH 2
    \n+
    594
    \n+
    595/* remote procedure call (rpc) options */
    \n+
    596#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)
    \n+
    597#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)
    \n+
    598#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)
    \n+
    599
    \n+
    600#if defined(DBLIB_UNIMPLEMENTED)
    \n+
    601DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);
    \n
    602
    \n-
    603#define CS_MIN_SYBTYPE CS_CHAR_TYPE
    \n-
    604#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
    \n-
    605
    \n-
    606#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
    \n-
    607/* cs_dt_info type values */
    \n-
    608enum
    \n-
    609{
    \n-
    610 CS_MONTH = 7340,
    \n-
    611#define CS_MONTH CS_MONTH
    \n-
    612 CS_SHORTMONTH,
    \n-
    613#define CS_SHORTMONTH CS_SHORTMONTH
    \n-
    614 CS_DAYNAME,
    \n-
    615#define CS_DAYNAME CS_DAYNAME
    \n-
    616 CS_DATEORDER,
    \n-
    617#define CS_DATEORDER CS_DATEORDER
    \n-
    618 CS_12HOUR,
    \n-
    619#define CS_12HOUR CS_12HOUR
    \n-
    620 CS_DT_CONVFMT
    \n-
    621#define CS_DT_CONVFMT CS_DT_CONVFMT
    \n-
    622};
    \n+
    603DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);
    \n+
    604
    \n+
    605RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table, BYTE * values);
    \n+
    606RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen, DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);
    \n+
    607void dbcursorclose(DBCURSOR * hc);
    \n+
    608RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname, DBINT * coltype, DBINT * collen, DBINT * usertype);
    \n+
    609RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);
    \n+
    610RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);
    \n+
    611DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt, SHORT concuropt, USHORT nrows, DBINT * pstatus);
    \n+
    612
    \n+
    613int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);
    \n+
    614RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);
    \n+
    615RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int value);
    \n+
    616int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME * datetime);
    \n+
    617char *dateorder(DBPROCESS * dbprocess, char *language);
    \n+
    618DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME * datetime);
    \n+
    619RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);
    \n+
    620char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);
    \n+
    621
    \n+
    622int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);
    \n
    623
    \n-
    624/* DT_CONVFMT types */
    \n-
    625enum
    \n-
    626{
    \n-
    627 CS_DATES_SHORT = 0,
    \n-
    628#define CS_DATES_SHORT CS_DATES_SHORT
    \n-
    629 CS_DATES_MDY1,
    \n-
    630#define CS_DATES_MDY1 CS_DATES_MDY1
    \n-
    631 CS_DATES_YMD1,
    \n-
    632#define CS_DATES_YMD1 CS_DATES_YMD1
    \n-
    633 CS_DATES_DMY1,
    \n-
    634#define CS_DATES_DMY1 CS_DATES_DMY1
    \n-
    635 CS_DATES_DMY2,
    \n-
    636#define CS_DATES_DMY2 CS_DATES_DMY2
    \n-
    637 CS_DATES_DMY3,
    \n-
    638#define CS_DATES_DMY3 CS_DATES_DMY3
    \n-
    639 CS_DATES_DMY4,
    \n-
    640#define CS_DATES_DMY4 CS_DATES_DMY4
    \n-
    641 CS_DATES_MDY2,
    \n-
    642#define CS_DATES_MDY2 CS_DATES_MDY2
    \n-
    643 CS_DATES_HMS,
    \n-
    644#define CS_DATES_HMS CS_DATES_HMS
    \n-
    645 CS_DATES_LONG,
    \n-
    646#define CS_DATES_LONG CS_DATES_LONG
    \n-
    647 CS_DATES_MDY3,
    \n-
    648#define CS_DATES_MDY3 CS_DATES_MDY3
    \n-
    649 CS_DATES_YMD2,
    \n-
    650#define CS_DATES_YMD2 CS_DATES_YMD2
    \n-
    651 CS_DATES_YMD3,
    \n-
    652#define CS_DATES_YMD3 CS_DATES_YMD3
    \n-
    653 CS_DATES_YDM1,
    \n-
    654#define CS_DATES_YDM1 CS_DATES_YDM1
    \n-
    655 CS_DATES_MYD1,
    \n-
    656#define CS_DATES_MYD1 CS_DATES_MYD1
    \n-
    657 CS_DATES_DYM1,
    \n-
    658#define CS_DATES_DYM1 CS_DATES_DYM1
    \n-
    659 CS_DATES_MDY1_YYYY = 101,
    \n-
    660#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
    \n-
    661 CS_DATES_YMD1_YYYY,
    \n-
    662#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
    \n-
    663 CS_DATES_DMY1_YYYY,
    \n-
    664#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
    \n-
    665 CS_DATES_DMY2_YYYY,
    \n-
    666#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
    \n-
    667 CS_DATES_DMY3_YYYY,
    \n-
    668#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
    \n-
    669 CS_DATES_DMY4_YYYY,
    \n-
    670#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
    \n-
    671 CS_DATES_MDY2_YYYY,
    \n-
    672#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
    \n-
    673 CS_DATES_MDY3_YYYY = 110,
    \n-
    674#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
    \n-
    675 CS_DATES_YMD2_YYYY,
    \n-
    676#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
    \n-
    677 CS_DATES_YMD3_YYYY
    \n-
    678#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
    \n-
    679};
    \n+
    624char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);
    \n+
    625void dbfreequal(char *qualptr);
    \n+
    626
    \n+
    627DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);
    \n+
    628RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);
    \n+
    629
    \n+
    630RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char *clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);
    \n+
    631
    \n+
    632RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * quotient);
    \n+
    633RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * prod);
    \n+
    634RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * sum);
    \n+
    635RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * quotient);
    \n+
    636RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int *remainder);
    \n+
    637RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL * negative);
    \n+
    638RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value, DBBOOL * zero);
    \n+
    639RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * prod);
    \n+
    640RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value, DBBOOL * zero);
    \n+
    641RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int addend);
    \n+
    642
    \n+
    643
    \n+
    644RETCODE dbnpcreate(DBPROCESS * dbprocess);
    \n+
    645RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name, DBSMALLINT namelen);
    \n+
    646
    \n+
    647int DBNUMORDERS(DBPROCESS * dbprocess);
    \n+
    648
    \n+
    649RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS ** ready_dbproc, int *return_reason);
    \n+
    650int dbordercol(DBPROCESS * dbprocess, int order);
    \n+
    651
    \n+
    652RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
    \n+
    653RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);
    \n+
    654RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, INTFUNCPTR handler);
    \n+
    655RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT namelen);
    \n+
    656RETCODE dbreglist(DBPROCESS * dbproc);
    \n+
    657RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen);
    \n+
    658RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT datalen, BYTE * data);
    \n+
    659RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT namelen, DBUSMALLINT options);
    \n+
    660RETCODE dbregwatchlist(DBPROCESS * dbprocess);
    \n+
    661
    \n+
    662void dbrpwclr(LOGINREC * login);
    \n+
    663RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int pwlen);
    \n+
    664
    \n+
    665DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE * buf);
    \n+
    666RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, DBINT size, BYTE * buf);
    \n+
    667
    \n+
    668RETCODE dbsetdeflang(char *language);
    \n+
    669
    \n+
    670int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
    \n+
    671int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2, DBSORTORDER * sort);
    \n+
    672
    \n+
    673DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);
    \n+
    674int dbtabcount(DBPROCESS * dbprocess);
    \n+
    675char *dbtabname(DBPROCESS * dbprocess, int tabnum);
    \n+
    676char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);
    \n+
    677
    \n+
    678RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);
    \n+
    679RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);
    \n
    680
    \n-
    681typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
    \n-
    682 CS_INT * destlen);
    \n+
    681RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);
    \n+
    682RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);
    \n
    683
    \n-
    \n-
    684typedef struct _cs_objname
    \n-
    685{
    \n-
    686 CS_BOOL thinkexists;
    \n-
    687 CS_INT object_type;
    \n-
    688 CS_CHAR last_name[CS_MAX_NAME];
    \n-
    689 CS_INT lnlen;
    \n-
    690 CS_CHAR first_name[CS_MAX_NAME];
    \n-
    691 CS_INT fnlen;
    \n-
    692 CS_VOID *scope;
    \n-
    693 CS_INT scopelen;
    \n-
    694 CS_VOID *thread;
    \n-
    695 CS_INT threadlen;
    \n-
    696} CS_OBJNAME;
    \n-
    \n-
    697
    \n-
    \n-
    698typedef struct _cs_objdata
    \n-
    699{
    \n-
    700 CS_BOOL actuallyexists;
    \n-
    701 CS_CONNECTION *connection;
    \n-
    702 CS_COMMAND *command;
    \n-
    703 CS_VOID *buffer;
    \n-
    704 CS_INT buflen;
    \n-
    705} CS_OBJDATA;
    \n-
    \n+
    684int dbtsnewlen(DBPROCESS * dbprocess);
    \n+
    685DBBINARY *dbtsnewval(DBPROCESS * dbprocess);
    \n+
    686RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int tabnum, char *tabname);
    \n+
    687
    \n+
    688RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE * clt_todisp);
    \n+
    689int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int destlen, DBXLATE * xlt, int *srcbytes_used,
    \n+
    690 DBBOOL srcend, int status);
    \n+
    691
    \n+
    692RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);
    \n+
    693RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);
    \n+
    694
    \n+
    695void build_xact_string(char *xact_name, char *service_name, DBINT commid, char *result);
    \n+
    696RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);
    \n+
    697RETCODE abort_xact(DBPROCESS * connect, DBINT commid);
    \n+
    698void close_commit(DBPROCESS * connect);
    \n+
    699RETCODE commit_xact(DBPROCESS * connect, DBINT commid);
    \n+
    700DBPROCESS *open_commit(LOGINREC * login, char *servername);
    \n+
    701RETCODE scan_xact(DBPROCESS * connect, DBINT commid);
    \n+
    702DBINT start_xact(DBPROCESS * connect, char *application_name, char *xact_name, int site_count);
    \n+
    703DBINT stat_xact(DBPROCESS * connect, DBINT commid);
    \n+
    704
    \n+
    705#endif /* define unimplemented */
    \n
    706
    \n-
    707/* Eventually, these should be in terms of TDS values */
    \n-
    708enum
    \n-
    709{
    \n-
    710 CS_OPT_MONDAY = 1,
    \n-
    711 CS_OPT_TUESDAY,
    \n-
    712 CS_OPT_WEDNESDAY,
    \n-
    713 CS_OPT_THURSDAY,
    \n-
    714 CS_OPT_FRIDAY,
    \n-
    715 CS_OPT_SATURDAY,
    \n-
    716 CS_OPT_SUNDAY
    \n-
    717};
    \n-
    718enum
    \n-
    719{
    \n-
    720 CS_OPT_FMTMDY = 1,
    \n-
    721 CS_OPT_FMTDMY,
    \n-
    722 CS_OPT_FMTYMD,
    \n-
    723 CS_OPT_FMTYDM,
    \n-
    724 CS_OPT_FMTMYD,
    \n-
    725 CS_OPT_FMTDYM
    \n-
    726};
    \n-
    727enum
    \n-
    728{
    \n-
    729 CS_OPT_LEVEL0 = 0,
    \n-
    730 CS_OPT_LEVEL1,
    \n-
    731 CS_OPT_LEVEL2,
    \n-
    732 CS_OPT_LEVEL3
    \n-
    733};
    \n-
    734
    \n-
    735#define CS_FALSE 0
    \n-
    736#define CS_TRUE 1
    \n-
    737
    \n-
    738#define SRV_PROC CS_VOID
    \n-
    739
    \n-
    740/* constants required for ct_diag (not jet implemented) */
    \n-
    741#define CS_CLIENTMSG_TYPE 4700
    \n-
    742#define CS_SERVERMSG_TYPE 4701
    \n-
    743#define CS_ALLMSG_TYPE 4702
    \n-
    744
    \n-
    745CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
    \n-
    746 CS_INT * resultlen);
    \n-
    747CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
    \n-
    748CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
    \n-
    749CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
    \n-
    750CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
    \n-
    751CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
    \n-
    752 CS_CHAR * formats, CS_INT formatlen, ...);
    \n-
    753#undef cs_dt_crack
    \n-
    754CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
    \n-
    755CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
    \n-
    756#define cs_dt_crack cs_dt_crack_v2
    \n-
    757CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
    \n-
    758CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
    \n-
    759CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
    \n-
    760 CS_INT * outlen);
    \n-
    761CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
    \n-
    762 CS_INT buflen, CS_INT * outlen);
    \n-
    763
    \n-
    764CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
    \n-
    765CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
    \n-
    766CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
    \n-
    767CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
    \n-
    768CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
    \n-
    769 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
    \n-
    770CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
    \n-
    771CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
    \n-
    772CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
    \n-
    773CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
    \n-
    774 CS_INT * result);
    \n-
    775CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
    \n-
    776CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
    \n-
    777
    \n-
    778const char * cs_prretcode(int retcode);
    \n-
    779
    \n-
    780#ifdef __cplusplus
    \n-
    781#if 0
    \n-
    782{
    \n-
    783#endif
    \n-
    784}
    \n-
    785#endif
    \n+
    707BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);
    \n+
    708DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);
    \n+
    709RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr);
    \n+
    710RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int vartype, DBINT varlen, BYTE * varaddr,
    \n+
    711 DBTYPEINFO * typeinfo);
    \n+
    712int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);
    \n+
    713DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);
    \n+
    714int dbaltop(DBPROCESS * dbproc, int computeid, int column);
    \n+
    715int dbalttype(DBPROCESS * dbproc, int computeid, int column);
    \n+
    716DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);
    \n+
    717RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT * indicator);
    \n+
    718RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen, BYTE * varaddr);
    \n+
    719RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);
    \n+
    720int dbbufsize(DBPROCESS * dbprocess);
    \n+
    721BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);
    \n+
    722RETCODE dbcancel(DBPROCESS * dbproc);
    \n+
    723RETCODE dbcanquery(DBPROCESS * dbproc);
    \n+
    724char *dbchange(DBPROCESS * dbprocess);
    \n+
    725DBBOOL dbcharsetconv(DBPROCESS * dbprocess);
    \n+
    726void dbclose(DBPROCESS * dbproc);
    \n+
    727void dbclrbuf(DBPROCESS * dbproc, DBINT n);
    \n+
    728RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);
    \n+
    729RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);
    \n+
    730RETCODE dbcmdrow(DBPROCESS * dbproc);
    \n+
    731
    \n+
    732#define DBCMDROW(x) dbcmdrow((x))
    \n+
    733RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );
    \n+
    734RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol);
    \n+
    735DBINT dbcollen(DBPROCESS * dbproc, int column);
    \n+
    736char *dbcolname(DBPROCESS * dbproc, int column);
    \n+
    737const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);
    \n+
    738char *dbcolsource(DBPROCESS * dbproc, int colnum);
    \n+
    739int dbcoltype(DBPROCESS * dbproc, int column);
    \n+
    740DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);
    \n+
    741DBINT dbcolutype(DBPROCESS * dbprocess, int column);
    \n+
    742DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen);
    \n+
    743DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src, DBINT srclen, int desttype, BYTE * dest, DBINT destlen,
    \n+
    744 DBTYPEINFO * typeinfo);
    \n+
    745BOOL dbiscount(DBPROCESS * dbproc);
    \n+
    746DBINT dbcount(DBPROCESS * dbproc);
    \n+
    747
    \n+
    748#define DBCOUNT(x) dbcount((x))
    \n+
    749int dbcurcmd(DBPROCESS * dbproc);
    \n+
    750
    \n+
    751#define DBCURCMD(x) dbcurcmd((x))
    \n+
    752DBINT dbcurrow(DBPROCESS * dbproc);
    \n+
    753
    \n+
    754#define DBCURROW(x) dbcurrow((x))
    \n+
    755BYTE *dbdata(DBPROCESS * dbproc, int column);
    \n+
    756int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);
    \n+
    757RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);
    \n+
    758RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const void *data);
    \n+
    759DBINT dbdatlen(DBPROCESS * dbproc, int column);
    \n+
    760DBBOOL dbdead(DBPROCESS * dbproc);
    \n+
    761
    \n+
    762#define DBDEAD(x) dbdead((x))
    \n+
    763EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);
    \n+
    764void dbexit(void);
    \n+
    765RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);
    \n+
    766DBINT dbfirstrow(DBPROCESS * dbproc);
    \n+
    767
    \n+
    768#define DBFIRSTROW(x) dbfirstrow((x))
    \n+
    769void dbfreebuf(DBPROCESS * dbproc);
    \n+
    770char *dbgetchar(DBPROCESS * dbprocess, int n);
    \n+
    771char *dbgetcharset(DBPROCESS * dbprocess);
    \n+
    772int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);
    \n+
    773int dbgetmaxprocs(void);
    \n+
    774char *dbgetnatlanf(DBPROCESS * dbprocess);
    \n+
    775int dbgetpacket(DBPROCESS * dbproc);
    \n+
    776RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);
    \n+
    777int dbgettime(void);
    \n+
    778#define DBGETTIME dbgettime
    \n+
    779BYTE *dbgetuserdata(DBPROCESS * dbproc);
    \n+
    780DBBOOL dbhasretstat(DBPROCESS * dbproc);
    \n+
    781RETCODE dbinit(void);
    \n+
    782int dbiordesc(DBPROCESS * dbproc);
    \n+
    783
    \n+
    784#define DBIORDESC(x) dbiordesc((x))
    \n+
    785int dbiowdesc(DBPROCESS * dbproc);
    \n
    786
    \n-
    787#endif
    \n-
    Definition cspublic.h:685
    \n-
    Definition cspublic.h:699
    \n-
    Definition cstypes.h:114
    \n-
    Definition cstypes.h:159
    \n-
    Definition cstypes.h:177
    \n-
    Definition cstypes.h:191
    \n-
    Definition ctlib.h:75
    \n-
    Definition ctlib.h:117
    \n-
    Definition ctlib.h:212
    \n-
    Definition ctlib.h:239
    \n-
    Definition ctlib.h:248
    \n+
    787#define DBIOWDESC(x) dbiowdesc((x))
    \n+
    788DBBOOL dbisavail(DBPROCESS * dbprocess);
    \n+
    789
    \n+
    790#define DBISAVAIL(x) dbisavail((x))
    \n+
    791DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);
    \n+
    792DBINT dblastrow(DBPROCESS * dbproc);
    \n+
    793
    \n+
    794#define DBLASTROW(x) dblastrow((x))
    \n+
    795LOGINREC *dblogin(void);
    \n+
    796void dbloginfree(LOGINREC * login);
    \n+
    797
    \n+
    798int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);
    \n+
    799int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);
    \n+
    800
    \n+
    801RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * sum);
    \n+
    802RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);
    \n+
    803RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);
    \n+
    804RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);
    \n+
    805RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);
    \n+
    806RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);
    \n+
    807RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
    \n+
    808RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2, DBMONEY4 * diff);
    \n+
    809RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY * diff);
    \n+
    810
    \n+
    811RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);
    \n+
    812RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);
    \n+
    813
    \n+
    814RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);
    \n+
    815RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);
    \n+
    816
    \n+
    817const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum, DBBOOL shortform);
    \n+
    818RETCODE dbmorecmds(DBPROCESS * dbproc);
    \n+
    819
    \n+
    820#define DBMORECMDS(x) dbmorecmds((x))
    \n+
    821RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);
    \n+
    822MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);
    \n+
    823char *dbname(DBPROCESS * dbproc);
    \n+
    824STATUS dbnextrow(DBPROCESS * dbproc);
    \n+
    825RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);
    \n+
    826int dbnumalts(DBPROCESS * dbproc, int computeid);
    \n+
    827int dbnumcols(DBPROCESS * dbproc);
    \n+
    828int dbnumcompute(DBPROCESS * dbprocess);
    \n+
    829int dbnumrets(DBPROCESS * dbproc);
    \n+
    830DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);
    \n+
    831DBPROCESS *dbopen(LOGINREC * login, const char *server);
    \n+
    832
    \n+
    833/* pivot functions */
    \n+
    834struct col_t;
    \n+
    835void dbpivot_count (struct col_t *output, const struct col_t *input);
    \n+
    836void dbpivot_sum (struct col_t *output, const struct col_t *input);
    \n+
    837void dbpivot_min (struct col_t *output, const struct col_t *input);
    \n+
    838void dbpivot_max (struct col_t *output, const struct col_t *input);
    \n+
    839
    \n+
    840struct pivot_t;
    \n+
    841typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t *input);
    \n+
    842struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);
    \n+
    843STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);
    \n+
    844RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val);
    \n+
    845
    \n+
    846DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );
    \n+
    847
    \n+
    848#ifdef MSDBLIB
    \n+
    849#define dbopen(x,y) tdsdbopen((x),(y), 1)
    \n+
    850#else
    \n+
    851#define dbopen(x,y) tdsdbopen((x),(y), 0)
    \n+
    852#endif
    \n+
    853
    \n+
    854/* fix PHP problem */
    \n+
    855#ifdef PHP_SYBASE_DBOPEN
    \n+
    856#undef PHP_SYBASE_DBOPEN
    \n+
    857#define PHP_SYBASE_DBOPEN dbopen
    \n+
    858#endif
    \n+
    859
    \n+
    860void dbprhead(DBPROCESS * dbproc);
    \n+
    861DBINT dbprcollen(DBPROCESS * dbproc, int column);
    \n+
    862RETCODE dbprrow(DBPROCESS * dbproc);
    \n+
    863const char *dbprtype(int token);
    \n+
    864DBBOOL DRBUF(DBPROCESS * dbprocess);
    \n+
    865STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);
    \n+
    866void dbrecftos(const char filename[]);
    \n+
    867RETCODE dbresults(DBPROCESS * dbproc);
    \n+
    868RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);
    \n+
    869BYTE *dbretdata(DBPROCESS * dbproc, int retnum);
    \n+
    870int dbretlen(DBPROCESS * dbproc, int retnum);
    \n+
    871char *dbretname(DBPROCESS * dbproc, int retnum);
    \n+
    872DBINT dbretstatus(DBPROCESS * dbproc);
    \n+
    873int dbrettype(DBPROCESS * dbproc, int retnum);
    \n+
    874RETCODE dbrows(DBPROCESS * dbproc);
    \n+
    875
    \n+
    876#define DBROWS(x) dbrows((x))
    \n+
    877STATUS dbrowtype(DBPROCESS * dbprocess);
    \n+
    878
    \n+
    879#define DBROWTYPE(x) dbrowtype((x))
    \n+
    880RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT options);
    \n+
    881RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE * value);
    \n+
    882RETCODE dbrpcsend(DBPROCESS * dbproc);
    \n+
    883RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype);
    \n+
    884RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);
    \n+
    885char *dbservcharset(DBPROCESS * dbprocess);
    \n+
    886void dbsetavail(DBPROCESS * dbprocess);
    \n+
    887void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);
    \n+
    888RETCODE dbsetdefcharset(char *charset);
    \n+
    889void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);
    \n+
    890void dbsetifile(char *filename);
    \n+
    891void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr);
    \n+
    892RETCODE dbsetlogintime(int seconds);
    \n+
    893RETCODE dbsetmaxprocs(int maxprocs);
    \n+
    894RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE * bindval);
    \n+
    895RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param, int int_param);
    \n+
    896STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);
    \n+
    897RETCODE dbsettime(int seconds);
    \n+
    898void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);
    \n+
    899RETCODE dbsetversion(DBINT version);
    \n+
    900
    \n+
    901int dbspid(DBPROCESS * dbproc);
    \n+
    902RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
    \n+
    903DBINT dbspr1rowlen(DBPROCESS * dbproc);
    \n+
    904RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);
    \n+
    905RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR line_char);
    \n+
    906RETCODE dbsqlexec(DBPROCESS * dbproc);
    \n+
    907RETCODE dbsqlok(DBPROCESS * dbproc);
    \n+
    908RETCODE dbsqlsend(DBPROCESS * dbproc);
    \n+
    909int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text, char *formats, ...);
    \n+
    910RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);
    \n+
    911int dbstrlen(DBPROCESS * dbproc);
    \n+
    912DBINT dbvarylen(DBPROCESS * dbproc, int column);
    \n+
    913
    \n+
    914#define SYBEVERDOWN 100 /* TDS version downgraded . */
    \n+
    915#define SYBEICONVIU 2400 /* Some character(s) could not be converted into client's character set. */
    \n+
    916#define SYBEICONVAVAIL 2401 /* Character set conversion is not available between client character set '%.*s' and server character set '%.*s'.*/
    \n+
    917#define SYBEICONVO 2402 /* Error converting characters into server's character set. Some character(s) could not be converted.*/
    \n+
    918#define SYBEICONVI 2403 /* Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').*/
    \n+
    919#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from client into server's character set.*/
    \n+
    920 /* cf. doc/dblib_errors.txt for more iconv error values. */
    \n+
    921 /* Reserve a few slots for other iconv-related issues. */
    \n+
    922#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */
    \n+
    923#define SYBEPORT 2500 /* Both port and instance specified */
    \n+
    924#define SYBESYNC 20001 /* Read attempted while out of synchronization with SQL Server. */
    \n+
    925#define SYBEFCON 20002 /* SQL Server connection failed. */
    \n+
    926#define SYBETIME 20003 /* SQL Server connection timed out. */
    \n+
    927#define SYBEREAD 20004 /* Read from SQL Server failed. */
    \n+
    928#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length corrupted. */
    \n+
    929#define SYBEWRIT 20006 /* Write to SQL Server failed. */
    \n+
    930#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */
    \n+
    931#define SYBESOCK 20008 /* Unable to open socket */
    \n+
    932#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is unavailable or does not exist. */
    \n+
    933#define SYBEMEM 20010 /* Unable to allocate sufficient memory */
    \n+
    934#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated. */
    \n+
    935#define SYBEINTF 20012 /* Server name not found in interface file */
    \n+
    936#define SYBEUHST 20013 /* Unknown host machine name */
    \n+
    937#define SYBEPWD 20014 /* Incorrect password. */
    \n+
    938#define SYBEOPIN 20015 /* Could not open interface file. */
    \n+
    939#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */
    \n+
    940#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */
    \n+
    941#define SYBESMSG 20018 /* General SQL Server error: Check messages from the SQL Server. */
    \n+
    942#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation with results pending. */
    \n+
    943#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing out of sync. */
    \n+
    944#define SYBEITIM 20021 /* Illegal timeout value specified. */
    \n+
    945#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server. */
    \n+
    946#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function. */
    \n+
    947#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent compute row. */
    \n+
    948#define SYBEIICL 20025 /* Illegal integer column length returned by SQL Server. Legal integer lengths are 1, 2, and 4 bytes. */
    \n+
    949#define SYBECNOR 20026 /* Column number out of range. */
    \n+
    950#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */
    \n+
    951#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */
    \n+
    952#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */
    \n+
    953#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following ALTNAME has wrong id. */
    \n+
    954#define SYBECDNS 20031 /* Datastream indicates that a compute column is derived from a non-existent select-list member. */
    \n+
    955#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */
    \n+
    956#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column and variable types. */
    \n+
    957#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */
    \n+
    958#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched column and variable types. */
    \n+
    959#define SYBENXID 20036 /* The Server did not grant us a distributed-transaction ID. */
    \n+
    960#define SYBERXID 20037 /* The Server did not recognize our distributed-transaction ID. */
    \n+
    961#define SYBEICN 20038 /* Invalid computeid or compute column number. */
    \n+
    962#define SYBENMOB 20039 /* No such member of 'order by' clause. */
    \n+
    963#define SYBEAPUT 20040 /* Attempt to print unknown token. */
    \n+
    964#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */
    \n+
    965#define SYBENTLL 20042 /* Name too long for loginrec field. */
    \n+
    966#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */
    \n+
    967#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row. */
    \n+
    968#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */
    \n+
    969#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */
    \n+
    970#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */
    \n+
    971#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */
    \n+
    972#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */
    \n+
    973#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error in source field. */
    \n+
    974#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */
    \n+
    975#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in overflow. */
    \n+
    976#define SYBERDCN 20053 /* Requested data-conversion does not exist. */
    \n+
    977#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */
    \n+
    978#define SYBEUNT 20055 /* Unknown network type found in interface file. */
    \n+
    979#define SYBECLOS 20056 /* Error in closing network connection. */
    \n+
    980#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */
    \n+
    981#define SYBEUSCT 20058 /* Unable to set communications timer. */
    \n+
    982#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */
    \n+
    983#define SYBEUDTY 20060 /* Unknown datatype encountered. */
    \n+
    984#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid timestamp. */
    \n+
    985#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which has no timestamp column. */
    \n+
    986#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or OUT. */
    \n+
    987#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent Server table. */
    \n+
    988#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */
    \n+
    989#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. */
    \n+
    990#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file. */
    \n+
    991#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */
    \n+
    992#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */
    \n+
    993#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */
    \n+
    994#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in table names. */
    \n+
    995#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */
    \n+
    996#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server column %d, which does not accept NULL values. */
    \n+
    997#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL Server. */
    \n+
    998#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column value to the SQL Server. */
    \n+
    999#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp routines. */
    \n+
    1000#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. */
    \n+
    1001#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. */
    \n+
    1002#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must have either a length-prefix or a terminator specified. */
    \n+
    1003#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. */
    \n+
    1004#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt() and bcp_colfmt_ps(). */
    \n+
    1005#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column. */
    \n+
    1006#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init() has been passed a valid host file. */
    \n+
    1007#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */
    \n+
    1008#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */
    \n+
    1009#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */
    \n+
    1010#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */
    \n+
    1011#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */
    \n+
    1012#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */
    \n+
    1013#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */
    \n+
    1014#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the SQL Server. */
    \n+
    1015#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the dbmoretext() call. */
    \n+
    1016#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-timestamp into a non-existent data row. */
    \n+
    1017#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */
    \n+
    1018#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the bcp_moretext() call. */
    \n+
    1019#define SYBEORPF 20096 /* Attempt to set remote password would overflow the login-record's remote-password field. */
    \n+
    1020#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP format-file. */
    \n+
    1021#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */
    \n+
    1022#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */
    \n+
    1023#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */
    \n+
    1024#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */
    \n+
    1025#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file. */
    \n+
    1026#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp format-file. */
    \n+
    1027#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */
    \n+
    1028#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file. */
    \n+
    1029#define SYBEBCSI 20106 /* Host-file columns may be skipped only when copying INto the Server. */
    \n+
    1030#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */
    \n+
    1031#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows. Skipping all of these rows is not allowed. */
    \n+
    1032#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */
    \n+
    1033#define SYBEUNAM 20110 /* Unable to get current username from operating system. */
    \n+
    1034#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It was impossible to read the requested %ld rows. */
    \n+
    1035#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes lower than 1. */
    \n+
    1036#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. */
    \n+
    1037#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. */
    \n+
    1038#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */
    \n+
    1039#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. */
    \n+
    1040#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the results of a query which contains a COMPUTE clause. */
    \n+
    1041#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the results of a query which contains a single result column. */
    \n+
    1042#define SYBEUCRR 20119 /* Internal software error: Unknown connection result reported by * dbpasswd(). */
    \n+
    1043#define SYBERPNA 20120 /* The RPC facility is available only when using a SQL Server whose version number is 4.0 or greater. */
    \n+
    1044#define SYBEOPNA 20121 /* The text/image facility is available only when using a SQL Server whose version number is 4.0 or greater. */
    \n+
    1045#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. */
    \n+
    1046#define SYBECWLL 20123 /* Attempt to set column width less than 1. */
    \n+
    1047#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild(). */
    \n+
    1048#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type encountered in dbstrbuild(). */
    \n+
    1049#define SYBETMCF 20126 /* Attempt to install too many custom formats via dbfmtinstall(). */
    \n+
    1050#define SYBEAICF 20127 /* Error in attempting to install custom format. */
    \n+
    1051#define SYBEADST 20128 /* Error in attempting to determine the size of a pair of translation tables. */
    \n+
    1052#define SYBEALTT 20129 /* Error in attempting to load a pair of translation tables. */
    \n+
    1053#define SYBEAPCT 20130 /* Error in attempting to perform a character-set translation. */
    \n+
    1054#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. */
    \n+
    1055#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home directory. */
    \n+
    1056#define SYBEAOLF 20133 /* Error in attempting to open a localization file. */
    \n+
    1057#define SYBEARDI 20134 /* Error in attempting to read datetime information from a localization file. */
    \n+
    1058#define SYBEURCI 20135 /* Unable to read copyright information from the dblib localization file. */
    \n+
    1059#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc localization file. */
    \n+
    1060#define SYBEURMI 20137 /* Unable to read money-format information from the dblib localization file. */
    \n+
    1061#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib localization file. */
    \n+
    1062#define SYBEURES 20139 /* Unable to read error string from the dblib localization file. */
    \n+
    1063#define SYBEUREI 20140 /* Unable to read error information from the dblib localization file. */
    \n+
    1064#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. */
    \n+
    1065#define SYBEISOI 20142 /* Invalid sort-order information found. */
    \n+
    1066#define SYBEIDCL 20143 /* Illegal datetime column length returned by DataServer. Legal datetime lengths are 4 and 8 bytes. */
    \n+
    1067#define SYBEIMCL 20144 /* Illegal money column length returned by DataServer. Legal money lengths are 4 and 8 bytes. */
    \n+
    1068#define SYBEIFCL 20145 /* Illegal floating-point column length returned by DataServer. Legal floating-point lengths are 4 and 8 bytes. */
    \n+
    1069#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL Server. */
    \n+
    1070#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */
    \n+
    1071#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination variable. */
    \n+
    1072#define SYBEDPOR 20149 /* Out-of-range datepart constant. */
    \n+
    1073#define SYBENDC 20150 /* Cannot have negative component in date in numeric form. */
    \n+
    1074#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */
    \n+
    1075#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */
    \n+
    1076#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer. */
    \n+
    1077#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */
    \n+
    1078#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime parameter. */
    \n+
    1079#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to dbfree_xlate() were NULL. */
    \n+
    1080#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has been freed. */
    \n+
    1081#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate() was NULL. The space associated with the xlt_todisp parameter has been freed. */
    \n+
    1082#define SYBENUM 20159 /* Incorrect number of arguments given to DB-Library. */
    \n+
    1083#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */
    \n+
    1084#define SYBEGENOS 20161 /* General Operating System Error. */
    \n+
    1085#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage() operation. */
    \n+
    1086#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */
    \n+
    1087#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or IMAGE data via dbmoretext(). */
    \n+
    1088#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */
    \n+
    1089#define SYBERFILE 20166 /* "Can not open resource file." */
    \n+
    1090#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */
    \n+
    1091#define SYBESLCT 20168 /* Could not select or copy field specified */
    \n+
    1092#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to dataserver via dbwritetext(). */
    \n+
    1093#define SYBENTST 20170 /* The file being opened must be a stream_lf. */
    \n+
    1094#define SYBEOSSL 20171 /* Operating system login level not in range of Secure SQL Server */
    \n+
    1095#define SYBEESSL 20172 /* Login security level entered does not agree with operating system level */
    \n+
    1096#define SYBENLNL 20173 /* Program not linked with specified network library. */
    \n+
    1097#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler parameter. */
    \n+
    1098#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer. */
    \n+
    1099#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */
    \n+
    1100#define SYBENOTI 20177 /* No event handler installed. */
    \n+
    1101#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options parameter. */
    \n+
    1102#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler parameter. */
    \n+
    1103#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction. */
    \n+
    1104#define SYBEEVST 20181 /* Must initiate a transaction before calling dbregparam(). */
    \n+
    1105#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */
    \n+
    1106#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */
    \n+
    1107#define SYBEECAN 20184 /* Attempted to cancel unrequested event notification. */
    \n+
    1108#define SYBEEUNR 20185 /* Unsolicited event notification received. */
    \n+
    1109#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */
    \n+
    1110#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined. */
    \n+
    1111#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter. */
    \n+
    1112#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not on. */
    \n+
    1113#define SYBETRAS 20190 /* DB-Library internal error - trace structure not found. */
    \n+
    1114#define SYBEPRTF 20191 /* dbtracestring() may only be called from a printfunc(). */
    \n+
    1115#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring(). */
    \n+
    1116#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter must be between 0 and 999999. */
    \n+
    1117#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of %3!. */
    \n+
    1118#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function %1!. */
    \n+
    1119#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */
    \n+
    1120#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */
    \n+
    1121#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are present. */
    \n+
    1122#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */
    \n+
    1123#define SYBENOEV 20200 /* dbpoll() cannot be called if registered procedure notifications have been disabled. */
    \n+
    1124#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of %2! used instead. */
    \n+
    1125#define SYBESECURE 20202 /* Secure Server function not supported in this version. */
    \n+
    1126#define SYBECAP 20203 /* DB-Library capabilities not accepted by the Server. */
    \n+
    1127#define SYBEFUNC 20204 /* Functionality not supported at the specified version level. */
    \n+
    1128#define SYBERESP 20205 /* Response function address passed to dbresponse() must be non-NULL. */
    \n+
    1129#define SYBEIVERS 20206 /* Illegal version level specified. */
    \n+
    1130#define SYBEONCE 20207 /* Function can be called only once. */
    \n+
    1131#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL, only if the datalen parameter is 0 */
    \n+
    1132#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image. */
    \n+
    1133#define SYBENEG 20210 /* Negotiated login attempt failed. */
    \n+
    1134#define SYBELBLEN 20211 /* Security labels should be less than 256 characters long. */
    \n+
    1135#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */
    \n+
    1136#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY datastream. */
    \n+
    1137#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */
    \n+
    1138#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */
    \n+
    1139#define SYBEBPREC 20216 /* Illegal precision specified */
    \n+
    1140#define SYBEBSCALE 20217 /* Illegal scale specified */
    \n+
    1141#define SYBECDOMAIN 20218 /* Source field value is not within the domain of legal values. */
    \n+
    1142#define SYBECINTERNAL 20219 /* Internal Conversion error. */
    \n+
    1143#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */
    \n+
    1144#define SYBEBCSET 20221 /* Unknown character-set encountered." */
    \n+
    1145#define SYBEFENC 20222 /* Password Encryption failed." */
    \n+
    1146#define SYBEFRES 20223 /* Challenge-Response function failed.", */
    \n+
    1147#define SYBEISRVPREC 20224 /* Illegal precision value returned by the server. */
    \n+
    1148#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server. */
    \n+
    1149#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the server. */
    \n+
    1150#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the server. */
    \n+
    1151#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is at least one text or image column in the server table. */
    \n+
    1152#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value encountered. */
    \n+
    1153#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must be 0 and no terminator should be specified. */
    \n+
    1154#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. */
    \n+
    1155#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. */
    \n+
    1156#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type cannot be 0. */
    \n+
    1157#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1. */
    \n+
    1158#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to -1. */
    \n+
    1159#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1, 2 or 4. */
    \n+
    1160#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0, 1, 2 or 4. */
    \n+
    1161#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL. */
    \n+
    1162#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */
    \n+
    1163#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all text data for the previous row has been sent using bcp_moretext(). */
    \n+
    1164#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count differs from the actual number of columns received. */
    \n+
    1165#define SYBEBPRODEF 20242 /* bcp protocol error: expected default information and got none. */
    \n+
    1166#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of defaults differs from the actual number of defaults received. */
    \n+
    1167#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and actual column id are not same */
    \n+
    1168#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received for column that does not have default. */
    \n+
    1169#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype differs from column datatype. */
    \n+
    1170#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of default information received. */
    \n+
    1171#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of results received. */
    \n+
    1172#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column id received. */
    \n+
    1173#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column datatype. */
    \n+
    1174#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length received. */
    \n+
    1175#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision value received. */
    \n+
    1176#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value received. */
    \n+
    1177#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to %1!. */
    \n+
    1178#define SYBECRSNORES 20255 /* Cursor statement generated no results. */
    \n+
    1179#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor statement does not have a unique index. */
    \n+
    1180#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or a view in a cursor statement. */
    \n+
    1181#define SYBECRSVIIND 20258 /* The view used in the cursor statement does not include all the unique index columns of the underlying tables. */
    \n+
    1182#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have 'order by', ' group by', or 'having' phrases. */
    \n+
    1183#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when using cursor APIs. */
    \n+
    1184#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be turned on when using cursor APIs. */
    \n+
    1185#define SYBECRSDIS 20262 /* Cursor statement contains one of the disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */
    \n+
    1186#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a cursor statement. */
    \n+
    1187#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be used within the keyset of keyset driven cursors. */
    \n+
    1188#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven cursors. */
    \n+
    1189#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a forward scrolling cursor. */
    \n+
    1190#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid range. */
    \n+
    1191#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed cursors with a previous fetch type. */
    \n+
    1192#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in a READONLY cursor. */
    \n+
    1193#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned on when doing updates or deletes with dbcursor(). */
    \n+
    1194#define SYBECRSTAB 20271 /* Table name must be determined in operations involving data locking or modifications. */
    \n+
    1195#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind variables when binding type is NOBIND. */
    \n+
    1196#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor update or insert. */
    \n+
    1197#define SYBECRSSET 20274 /* A SET clause is required for a cursor update or insert. */
    \n+
    1198#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind variables require single table cursors. */
    \n+
    1199#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect any rows. */
    \n+
    1200#define SYBECRSINV 20277 /* Invalid cursor statement. */
    \n+
    1201#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET cursors. */
    \n+
    1202#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to updating cursor */
    \n+
    1203#define SYBECRSFTYPE 20280 /* Unknown fetch type. */
    \n+
    1204#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */
    \n+
    1205#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is expected. */
    \n+
    1206#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected. */
    \n+
    1207#define SYBECRSNOLEN 20284 /* No unique index found. */
    \n+
    1208#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */
    \n+
    1209#define SYBECRSNORDER 20286 /* The order of clauses must be from, where, and order by. */
    \n+
    1210#define SYBECRSNOTABLE 20287 /* Table name is NULL. */
    \n+
    1211#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view. */
    \n+
    1212#define SYBECRSVAR 20289 /* There is no valid address associated with this bind. */
    \n+
    1213#define SYBENOVALUE 20290 /* Security labels require both a name and a value */
    \n+
    1214#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return parameter. */
    \n+
    1215#define SYBECLOSEIN 20292 /* Unable to close interface file. */
    \n+
    1216#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */
    \n+
    1217#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy operation is progress. */
    \n+
    1218#define SYBEERRLABEL 20295 /* An illegal value was returned from the security label handler. */
    \n+
    1219#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge attention." */
    \n+
    1220#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */
    \n+
    1221#define SYBEDCL 20298 /* -004- DCL Error */
    \n+
    1222#define SYBECS 20299 /* -004- cs context Error */
    \n+
    1223#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */
    \n+
    1224#define SYBECOLSIZE 22000 /* Invalid column information structure size */
    \n+
    1225
    \n+
    1226int dbtds(DBPROCESS * dbprocess);
    \n+
    1227
    \n+
    1228#define DBTDS(a) dbtds(a)
    \n+
    1229DBINT dbtextsize(DBPROCESS * dbprocess);
    \n+
    1230DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);
    \n+
    1231DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);
    \n+
    1232DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);
    \n+
    1233RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);
    \n+
    1234RETCODE dbuse(DBPROCESS * dbproc, const char *name);
    \n+
    1235const char *dbversion(void);
    \n+
    1236DBBOOL dbwillconvert(int srctype, int desttype);
    \n+
    1237RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr, DBTINYINT textptrlen, DBBINARY * timestamp,
    \n+
    1238 DBBOOL log, DBINT size, BYTE * text);
    \n+
    1239
    \n+
    1240/* LOGINREC manipulation */
    \n+
    1241RETCODE dbsetlname(LOGINREC * login, const char *value, int which);
    \n+
    1242RETCODE dbsetlbool(LOGINREC * login, int value, int which);
    \n+
    1243RETCODE dbsetlshort(LOGINREC * login, int value, int which);
    \n+
    1244RETCODE dbsetllong(LOGINREC * login, long value, int which);
    \n+
    1245RETCODE dbsetlversion (LOGINREC * login, BYTE version);
    \n+
    1246
    \n+
    1247#define DBSETHOST 1
    \n+
    1248#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)
    \n+
    1249#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)
    \n+
    1250#define DBSETUSER 2
    \n+
    1251#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)
    \n+
    1252#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)
    \n+
    1253#define DBSETPWD 3
    \n+
    1254#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)
    \n+
    1255#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)
    \n+
    1256#if defined(DBLIB_UNIMPLEMENTED)
    \n+
    1257# define DBSETHID 4 /* not implemented */
    \n+
    1258# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)
    \n+
    1259#endif
    \n+
    1260#define DBSETAPP 5
    \n+
    1261#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)
    \n+
    1262#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)
    \n+
    1263#define DBSETBCP 6
    \n+
    1264#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)
    \n+
    1265#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)
    \n+
    1266#define DBSETNATLANG 7
    \n+
    1267#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)
    \n+
    1268#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)
    \n+
    1269#if defined(DBLIB_UNIMPLEMENTED)
    \n+
    1270# define DBSETNOSHORT 8 /* not implemented */
    \n+
    1271# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)
    \n+
    1272# define DBSETHIER 9 /* not implemented */
    \n+
    1273# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)
    \n+
    1274#endif
    \n+
    1275#define DBSETCHARSET 10
    \n+
    1276#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)
    \n+
    1277#define DBSETPACKET 11
    \n+
    1278#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)
    \n+
    1279#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)
    \n+
    1280#define DBSETENCRYPT 12
    \n+
    1281#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)
    \n+
    1282#define DBSETLABELED 13
    \n+
    1283#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
    \n+
    1284#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)
    \n+
    1285#define DBSETDBNAME 14
    \n+
    1286#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)
    \n+
    1287#define DBSETLVERSION(login, version) dbsetlversion((login), (version))
    \n+
    1288#define DBSETNETWORKAUTH 101
    \n+
    1289#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)
    \n+
    1290#define DBSETMUTUALAUTH 102
    \n+
    1291#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)
    \n+
    1292#define DBSETSERVERPRINCIPAL 103
    \n+
    1293#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y), DBSETSERVERPRINCIPAL)
    \n+
    1294/* settings from here are purely FreeTDS extensions */
    \n+
    1295#define DBSETUTF16 1001
    \n+
    1296#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)
    \n+
    1297#define DBSETNTLMV2 1002
    \n+
    1298#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)
    \n+
    1299#define DBSETREADONLY 1003
    \n+
    1300#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)
    \n+
    1301#define DBSETDELEGATION 1004
    \n+
    1302#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)
    \n+
    1303
    \n+
    1304RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char *hfile, const char *errfile, int direction);
    \n+
    1305DBINT bcp_done(DBPROCESS * dbproc);
    \n+
    1306
    \n+
    1307DBINT bcp_batch(DBPROCESS * dbproc);
    \n+
    1308RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT varlen, BYTE * terminator, int termlen, int type,
    \n+
    1309 int table_column);
    \n+
    1310RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);
    \n+
    1311RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);
    \n+
    1312RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
    \n+
    1313 const BYTE * host_term, int host_termlen, int colnum);
    \n+
    1314RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type, int host_prefixlen, DBINT host_collen,
    \n+
    1315 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);
    \n+
    1316RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);
    \n+
    1317RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);
    \n+
    1318int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */
    \n+
    1319RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);
    \n+
    1320DBBOOL bcp_getl(LOGINREC * login);
    \n+
    1321RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int valuelen);
    \n+
    1322RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);
    \n+
    1323RETCODE bcp_sendrow(DBPROCESS * dbproc);
    \n+
    1324
    \n+
    1325#ifdef __cplusplus
    \n+
    1326#if 0
    \n+
    1327{
    \n+
    1328#endif
    \n+
    1329}
    \n+
    1330#endif
    \n+
    1331
    \n+
    1332#endif
    \n+
    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:3045
    \n+
    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:914
    \n+
    void dbclrbuf(DBPROCESS *dbproc, DBINT n)
    Clear n rows from the row buffer.
    Definition dblib.c:2844
    \n+
    DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)
    Get precision and scale information for a regular result column.
    Definition dblib.c:3016
    \n+
    LOGINREC * dblogin(void)
    Allocate a LOGINREC structure.
    Definition dblib.c:705
    \n+
    void dbfreebuf(DBPROCESS *dbproc)
    Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
    Definition dblib.c:6081
    \n+
    BYTE * dbdata(DBPROCESS *dbproc, int column)
    Get address of data in a regular result column.
    Definition dblib.c:3352
    \n+
    int dbstrlen(DBPROCESS *dbproc)
    Get size of the command buffer, in bytes.
    Definition dblib.c:6312
    \n+
    BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)
    Get address of compute column data.
    Definition dblib.c:4436
    \n+
    int dbspid(DBPROCESS *dbproc)
    Get server process ID for a DBPROCESS.
    Definition dblib.c:5941
    \n+
    DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)
    Get text timestamp for a column in the current row.
    Definition dblib.c:6548
    \n+
    BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)
    Get bylist for a compute row.
    Definition dblib.c:5020
    \n+
    char * dbservcharset(DBPROCESS *dbprocess)
    Get syscharset name of the server character set.
    Definition dblib.c:7044
    \n+
    DBINT dbspr1rowlen(DBPROCESS *dbproc)
    Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(),...
    Definition dblib.c:3419
    \n+
    DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
    cf.
    Definition dblib.c:2593
    \n+
    DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)
    Get size of data in a compute column.
    Definition dblib.c:4331
    \n+
    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:4652
    \n+
    RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE *bindval)
    Define substitution values to be used when binding null values.
    Definition dblib.c:1962
    \n+
    char * dbcolname(DBPROCESS *dbproc, int column)
    Return name of a regular result column.
    Definition dblib.c:1872
    \n+
    RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)
    printf-like way to form SQL to send to the server.
    Definition dblib.c:1334
    \n+
    RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)
    Break a DBDATETIME value into useful pieces.
    Definition dblib.c:5868
    \n+
    RETCODE dbresults(DBPROCESS *dbproc)
    Set up query results.
    Definition dblib.c:1694
    \n+
    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:6615
    \n+
    RETCODE dbcanquery(DBPROCESS *dbproc)
    Cancel the query currently being retrieved, discarding all pending rows.
    Definition dblib.c:6052
    \n+
    RETCODE dbinit(void)
    Initialize db-lib.
    Definition dblib.c:660
    \n+
    DBINT dbvarylen(DBPROCESS *dbproc, int column)
    Determine whether a column can vary in size.
    Definition dblib.c:3218
    \n+
    RETCODE dbcancel(DBPROCESS *dbproc)
    Cancel the current command batch.
    Definition dblib.c:3394
    \n+
    RETCODE dbsetlogintime(int seconds)
    Set maximum seconds db-lib waits for a server response to a login attempt.
    Definition dblib.c:4260
    \n+
    RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)
    Read a row from the row buffer.
    Definition dblib.c:1930
    \n+
    int dbcoltype(DBPROCESS *dbproc, int column)
    Get the datatype of a regular result set column.
    Definition dblib.c:2970
    \n+
    void dbsetifile(char *filename)
    set name and location of the interfaces file FreeTDS should use to look up a servername.
    Definition dblib.c:2711
    \n+
    RETCODE dbuse(DBPROCESS *dbproc, const char *name)
    Change current database.
    Definition dblib.c:1445
    \n+
    int dbnumalts(DBPROCESS *dbproc, int computeid)
    Get count of columns in a compute row.
    Definition dblib.c:4961
    \n+
    BOOL dbiscount(DBPROCESS *dbproc)
    Indicates whether or not the count returned by dbcount is real (Microsoft-compatibility feature).
    Definition dblib.c:2804
    \n+
    int dbgettime(void)
    Get maximum seconds db-lib waits for a server response to query.
    Definition dblib.c:4244
    \n+
    RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])
    Send chunk of a text/image value to the server.
    Definition dblib.c:6753
    \n+
    const char * dbprtype(int token)
    Print a token value's name to a buffer.
    Definition dblib.c:6468
    \n+
    char * dbcolsource(DBPROCESS *dbproc, int colnum)
    Get base database column name for a result set column.
    Definition dblib.c:3144
    \n+
    char * dbchange(DBPROCESS *dbprocess)
    See if a command caused the current database to change.
    Definition dblib.c:7008
    \n+
    const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)
    Return name of a computed result column.
    Definition dblib.c:1898
    \n+
    RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)
    Tie a null-indicator to a regular result column.
    Definition dblib.c:2740
    \n+
    RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
    Tie a host variable to a resultset column.
    Definition dblib.c:2634
    \n+
    const char * dbversion(void)
    See which version of db-lib is in use.
    Definition dblib.c:6861
    \n+
    RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])
    Append SQL to the command buffer.
    Definition dblib.c:1373
    \n+
    DBINT dbcollen(DBPROCESS *dbproc, int column)
    Get size of a regular result column.
    Definition dblib.c:3169
    \n+
    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:2300
    \n+
    char * dbgetchar(DBPROCESS *dbprocess, int n)
    Get address of a position in the command buffer.
    Definition dblib.c:6331
    \n+
    RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT *indicator)
    Tie a null-indicator to a compute result column.
    Definition dblib.c:2776
    \n+
    RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])
    Reset an option.
    Definition dblib.c:6116
    \n+
    DBINT dbcount(DBPROCESS *dbproc)
    Get count of rows processed.
    Definition dblib.c:2824
    \n+
    int dbaltop(DBPROCESS *dbproc, int computeid, int column)
    Get aggregation operator for a compute column.
    Definition dblib.c:4465
    \n+
    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:6485
    \n+
    DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)
    Get size of data in compute column.
    Definition dblib.c:7158
    \n+
    RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int int_param)
    Set db-lib or server option.
    Definition dblib.c:4492
    \n+
    void dbprhead(DBPROCESS *dbproc)
    Print result set headings to stdout.
    Definition dblib.c:3980
    \n+
    RETCODE dbsetlversion(LOGINREC *login, BYTE version)
    Set TDS version for future connections.
    Definition dblib.c:947
    \n+
    RETCODE dbprrow(DBPROCESS *dbproc)
    Print a result set to stdout.
    Definition dblib.c:3540
    \n+
    char * dbname(DBPROCESS *dbproc)
    Get name of current database.
    Definition dblib.c:7028
    \n+
    int dbalttype(DBPROCESS *dbproc, int computeid, int column)
    Get datatype for a compute column.
    Definition dblib.c:4361
    \n+
    RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
    Print result set headings to a buffer.
    Definition dblib.c:3916
    \n+
    RETCODE dbsqlexec(DBPROCESS *dbproc)
    send the SQL command to the server and wait for an answer.
    Definition dblib.c:1419
    \n+
    DBBOOL dbwillconvert(int srctype, int desttype)
    Test whether or not a datatype can be converted to another datatype.
    Definition dblib.c:2874
    \n+
    DBINT dbcolutype(DBPROCESS *dbprocess, int column)
    Get user-defined datatype of a regular result column.
    Definition dblib.c:2993
    \n+
    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:7321
    \n+
    EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)
    Set an error handler, for messages from db-lib.
    Definition dblib.c:5142
    \n+
    RETCODE dbsetversion(DBINT version)
    Specify a db-lib version level.
    Definition dblib.c:5997
    \n+
    int dbgetpacket(DBPROCESS *dbproc)
    Get TDS packet size for the connection.
    Definition dblib.c:4096
    \n+
    void dbrecftos(const char filename[])
    Record to a file all SQL commands sent to the server.
    Definition dblib.c:6788
    \n+
    BYTE * dbgetuserdata(DBPROCESS *dbproc)
    Get address of user-allocated data from a DBPROCESS.
    Definition dblib.c:5979
    \n+
    void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)
    Associate client-allocated (and defined) data with a DBPROCESS.
    Definition dblib.c:5961
    \n+
    DBINT dbprcollen(DBPROCESS *dbproc, int column)
    Get size of a result column needed to print column.
    Definition dblib.c:3192
    \n+
    void dbloginfree(LOGINREC *login)
    free the LOGINREC
    Definition dblib.c:737
    \n+
    RETCODE dbmorecmds(DBPROCESS *dbproc)
    See if more commands are to be processed.
    Definition dblib.c:6258
    \n+
    DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])
    Get value of an option.
    Definition dblib.c:6184
    \n+
    int dbnumcompute(DBPROCESS *dbprocess)
    Get count of COMPUTE clauses for a result set.
    Definition dblib.c:4994
    \n+
    RETCODE dbsqlsend(DBPROCESS *dbproc)
    Transmit the command buffer to the server.
    Definition dblib.c:7064
    \n+
    RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
    Get formatted string for underlining dbsprhead() column names.
    Definition dblib.c:3858
    \n+
    void dbexit(void)
    Close server connections and free all related structures.
    Definition dblib.c:1552
    \n+
    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:6407
    \n+
    int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)
    Get column ID of a compute column.
    Definition dblib.c:4305
    \n+
    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:5889
    \n+
    RETCODE dbsettime(int seconds)
    Set maximum seconds db-lib waits for a server response to query.
    Definition dblib.c:4213
    \n+
    int dbnumcols(DBPROCESS *dbproc)
    Return number of regular columns in a result set.
    Definition dblib.c:1848
    \n+
    int dbgetmaxprocs(void)
    get maximum simultaneous connections db-lib will open to the server.
    Definition dblib.c:4192
    \n+
    DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)
    Get text pointer for a column in the current row.
    Definition dblib.c:6578
    \n+
    MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)
    Set a message handler, for messages from the server.
    Definition dblib.c:5161
    \n+
    STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)
    Fetch part of a text or image value from the server.
    Definition dblib.c:6684
    \n+
    RETCODE dbsqlok(DBPROCESS *dbproc)
    Wait for results of a query from the server.
    Definition dblib.c:4835
    \n+
    DBINT dbdatlen(DBPROCESS *dbproc, int column)
    Get size of current row's data in a regular result column.
    Definition dblib.c:3324
    \n+
    STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)
    Make a buffered row "current" without fetching it into bound variables.
    Definition dblib.c:2045
    \n+
    void dbclose(DBPROCESS *dbproc)
    Close a connection to the server and free associated resources.
    Definition dblib.c:1485
    \n+
    RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)
    Get a copy of a chunk of the command buffer.
    Definition dblib.c:6363
    \n+
    DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)
    Get user-defined datatype of a compute column.
    Definition dblib.c:7135
    \n+
    RETCODE dbsetmaxprocs(int maxprocs)
    Set maximum simultaneous connections db-lib will open to the server.
    Definition dblib.c:4120
    \n+
    RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)
    Print a regular result row to a buffer.
    Definition dblib.c:3457
    \n+
    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:4390
    \n+
    DBINT dbretstatus(DBPROCESS *dbproc)
    Fetch status value returned by query or remote procedure call.
    Definition dblib.c:4695
    \n+
    RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)
    Initialize a remote procedure call.
    Definition rpc.c:72
    \n+
    BYTE * dbretdata(DBPROCESS *dbproc, int retnum)
    Get value of an output parameter filled by a stored procedure.
    Definition dblib.c:4774
    \n+
    char * dbretname(DBPROCESS *dbproc, int retnum)
    Get name of an output parameter filled by a stored procedure.
    Definition dblib.c:4745
    \n+
    DBBOOL dbhasretstat(DBPROCESS *dbproc)
    Determine if query generated a return status number.
    Definition dblib.c:4671
    \n+
    int dbrettype(DBPROCESS *dbproc, int retnum)
    Get datatype of a stored procedure's return parameter.
    Definition dblib.c:6287
    \n+
    int dbretlen(DBPROCESS *dbproc, int retnum)
    Get size of an output parameter filled by a stored procedure.
    Definition dblib.c:4800
    \n+
    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
    \n+
    RETCODE dbrpcsend(DBPROCESS *dbproc)
    Execute the procedure and free associated memory.
    Definition rpc.c:281
    \n+
    int dbnumrets(DBPROCESS *dbproc)
    Get count of output parameters filled by a stored procedure.
    Definition dblib.c:4713
    \n+
    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
    \n+
    DBBOOL bcp_getl(LOGINREC *login)
    See if BCP_SETL() was used to set the LOGINREC for BCP work.
    Definition bcp.c:707
    \n+
    RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
    Set BCP options for uploading a datafile.
    Definition bcp.c:544
    \n+
    RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)
    Indicate how many columns are to be found in the datafile.
    Definition bcp.c:301
    \n+
    RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
    Override bcp_bind() by pointing to a different host variable.
    Definition bcp.c:671
    \n+
    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:2079
    \n+
    RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)
    Write a datafile to a table.
    Definition bcp.c:1617
    \n+
    DBINT bcp_done(DBPROCESS *dbproc)
    Conclude the transfer of data from program variables.
    Definition bcp.c:2037
    \n+
    RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])
    Read a format definition file.
    Definition bcp.c:1678
    \n+
    DBINT bcp_batch(DBPROCESS *dbproc)
    Commit a set of rows to the table.
    Definition bcp.c:2010
    \n+
    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
    \n+
    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
    \n+
    RETCODE bcp_sendrow(DBPROCESS *dbproc)
    Write data in host variables to the table.
    Definition bcp.c:1381
    \n+
    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
    \n+
    RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
    Set "hints" for uploading a file.
    Definition bcp.c:622
    \n+
    RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)
    Zero a DBMONEY4 value.
    Definition dblib.c:5591
    \n+
    RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
    Add two DBMONEY4 values.
    Definition dblib.c:5614
    \n+
    int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
    Compare two DBMONEY4 values.
    Definition dblib.c:5733
    \n+
    RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)
    Get maximum positive DBMONEY value supported.
    Definition dblib.c:5366
    \n+
    RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
    Negate a DBMONEY4 value.
    Definition dblib.c:5567
    \n+
    RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
    Negate a DBMONEY value.
    Definition dblib.c:5540
    \n+
    RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
    Subtract two DBMONEY4 values.
    Definition dblib.c:5645
    \n+
    RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)
    Set a DBMONEY value to zero.
    Definition dblib.c:5345
    \n+
    RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
    Copy a DBMONEY value.
    Definition dblib.c:6031
    \n+
    RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)
    Copy a DBMONEY4 value.
    Definition dblib.c:5761
    \n+
    RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)
    Get maximum negative DBMONEY value supported.
    Definition dblib.c:5387
    \n+
    RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)
    Subtract $0.0001 from a DBMONEY value.
    Definition dblib.c:5512
    \n+
    RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)
    Add $0.0001 to a DBMONEY value.
    Definition dblib.c:5484
    \n+
    int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
    Compare two DBMONEY values.
    Definition dblib.c:5287
    \n+
    int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
    Compare DBDATETIME values, similar to strcmp(3).
    Definition dblib.c:5786
    \n+
    const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
    Get name of a month, in some human language.
    Definition dblib.c:6979
    \n+
    int dbcurcmd(DBPROCESS *dbproc)
    Get number of the row just returned.
    Definition dblib.c:6241
    \n+
    RETCODE dbsetlbool(LOGINREC *login, int value, int which)
    Set a boolean value in a LOGINREC structure.
    Definition dblib.c:896
    \n+
    DBINT dblastrow(DBPROCESS *dbproc)
    Get number of the last row in the row buffer.
    Definition dblib.c:7228
    \n+
    RETCODE dbcmdrow(DBPROCESS *dbproc)
    See if the current command can return rows.
    Definition dblib.c:4281
    \n+
    RETCODE dbrows(DBPROCESS *dbproc)
    Indicate whether a query returned rows.
    Definition dblib.c:4055
    \n+
    void dbsetavail(DBPROCESS *dbprocess)
    Mark a DBPROCESS as "available".
    Definition dblib.c:7296
    \n+
    int dbiowdesc(DBPROCESS *dbproc)
    Get file descriptor of the socket used by a DBPROCESS to write data coming to the server....
    Definition dblib.c:7268
    \n+
    int dbtds(DBPROCESS *dbprocess)
    Get the TDS version in use for dbproc.
    Definition dblib.c:6822
    \n+
    DBINT dbcurrow(DBPROCESS *dbproc)
    Get number of the row currently being read.
    Definition dblib.c:6207
    \n+
    STATUS dbrowtype(DBPROCESS *dbprocess)
    Get returned row's type.
    Definition dblib.c:6224
    \n+
    int dbiordesc(DBPROCESS *dbproc)
    Get file descriptor of the socket used by a DBPROCESS to read data coming from the server....
    Definition dblib.c:7252
    \n+
    RETCODE dbsetllong(LOGINREC *login, long value, int which)
    Set an integer value in a LOGINREC structure.
    Definition dblib.c:825
    \n+
    RETCODE dbsetlname(LOGINREC *login, const char *value, int which)
    Set the value of a string in a LOGINREC structure.
    Definition dblib.c:759
    \n+
    DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)
    Form a connection with the server.
    Definition dblib.c:1179
    \n+
    DBBOOL dbdead(DBPROCESS *dbproc)
    Check if dbproc is an ex-parrot.
    Definition dblib.c:5079
    \n+
    DBINT dbfirstrow(DBPROCESS *dbproc)
    See if a server response has arrived.
    Definition dblib.c:7213
    \n+
    Definition bsqlodbc.c:100
    \n+
    Definition dbpivot.c:77
    \n+
    Definition dbpivot.c:772
    \n+
    Definition dblib.h:44
    \n+
    Definition dblib.h:123
    \n+
    Definition sybdb.h:263
    \n+
    Definition sybdb.h:269
    \n+
    Definition sybdb.h:275
    \n+
    Definition sybdb.h:284
    \n+
    Definition sybdb.h:290
    \n+
    Definition sybdb.h:295
    \n+
    Definition sybdb.h:301
    \n+
    Definition sybdb.h:307
    \n+
    DBSMALLINT offset
    time offset
    Definition sybdb.h:310
    \n+
    DBUBIGINT time
    time, 7 digit precision
    Definition sybdb.h:308
    \n+
    DBINT date
    date, 0 = 1900-01-01
    Definition sybdb.h:309
    \n+
    Definition sybdb.h:336
    \n+
    Definition sybdb.h:342
    \n+
    Definition sybdb.h:355
    \n+
    Definition sybdb.h:374
    \n+
    Definition sybdb.h:458
    \n+
    Definition sybdb.h:474
    \n+
    Definition sybdb.h:490
    \n+
    Definition sybdb.h:506
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,842 +6,2305 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-cspublic.h\n+sybdb.h\n+Go_to_the_documentation_of_this_file.\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n 2 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns\n- 3 *\n- 4 * This library is free software; you can redistribute it and/or\n- 5 * modify it under the terms of the GNU Library General Public\n- 6 * License as published by the Free Software Foundation; either\n- 7 * version 2 of the License, or (at your option) any later version.\n- 8 *\n- 9 * This library is distributed in the hope that it will be useful,\n- 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n- 12 * Library General Public License for more details.\n- 13 *\n- 14 * You should have received a copy of the GNU Library General Public\n- 15 * License along with this library; if not, write to the\n- 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n- 17 * Boston, MA 02111-1307, USA.\n- 18 */\n- 19\n- 20#ifndef _cspublic_h_\n- 21#define _cspublic_h_\n- 22\n- 23#include \n- 24\n- 25#undef TDS_STATIC_CAST\n- 26#ifdef __cplusplus\n- 27#define TDS_STATIC_CAST(type, a) static_cast(a)\n- 28extern \"C\"\n- 29{\n- 30#if 0\n- 31}\n- 32#endif\n- 33#else\n- 34#define TDS_STATIC_CAST(type, a) ((type)(a))\n- 35#endif\n- 36\n- 37#define CS_PUBLIC\n- 38#define CS_STATIC static\n- 39\n- 40#define CS_SUCCEED 1\n- 41#define CS_FAIL 0\n- 42#define CS_MEM_ERROR -1\n- 43#define CS_PENDING -2\n- 44#define CS_QUIET -3\n- 45#define CS_BUSY -4\n- 46#define CS_INTERRUPT -5\n- 47#define CS_BLK_HAS_TEXT -6\n- 48#define CS_CONTINUE -7\n- 49#define CS_FATAL -8\n- 50#define CS_RET_HAFAILOVER -9\n- 51#define CS_UNSUPPORTED -10\n- 52\n- 53#define CS_CANCELED -202\n- 54#define CS_ROW_FAIL -203\n- 55#define CS_END_DATA -204\n- 56#define CS_END_RESULTS -205\n- 57#define CS_END_ITEM -206\n- 58#define CS_NOMSG -207\n- 59#define CS_TIMED_OUT -208\n- 60\n- 61#define CS_SIZEOF(x) sizeof(x)\n+ 3 * Copyright (C) 2010, 2011 Frediano Ziglio\n+ 4 *\n+ 5 * This library is free software; you can redistribute it and/or\n+ 6 * modify it under the terms of the GNU Library General Public\n+ 7 * License as published by the Free Software Foundation; either\n+ 8 * version 2 of the License, or (at your option) any later version.\n+ 9 *\n+ 10 * This library is distributed in the hope that it will be useful,\n+ 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 13 * Library General Public License for more details.\n+ 14 *\n+ 15 * You should have received a copy of the GNU Library General Public\n+ 16 * License along with this library; if not, write to the\n+ 17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 18 * Boston, MA 02111-1307, USA.\n+ 19 */\n+ 20\n+ 28#ifndef _sybdb_h_\n+ 29#define _sybdb_h_\n+ 30\n+ 31#include \"tds_sysdep_public.h\"\n+ 32\n+ 33#undef TDS_STATIC_CAST\n+ 34#ifdef __cplusplus\n+ 35#define TDS_STATIC_CAST(type, a) static_cast(a)\n+ 36extern \"C\"\n+ 37{\n+ 38#if 0\n+ 39}\n+ 40#endif\n+ 41#else\n+ 42#define TDS_STATIC_CAST(type, a) ((type)(a))\n+ 43#endif\n+ 44\n+ 45#ifdef FALSE\n+ 46#undef FALSE\n+ 47#endif\n+ 48#ifdef TRUE\n+ 49#undef TRUE\n+ 50#endif\n+ 51#define FALSE 0\n+ 52#define TRUE 1\n+ 53\n+ 54#define DBSAVE 1\n+ 55#define DBNOSAVE 0\n+ 56#define DBNOERR -1\n+ 57\n+ 58#define INT_EXIT 0\n+ 59#define INT_CONTINUE 1\n+ 60#define INT_CANCEL 2\n+ 61#define INT_TIMEOUT 3\n 62\n- 63#define CS_LAYER(x) (((x) >> 24) & 0xFF)\n- 64#define CS_ORIGIN(x) (((x) >> 16) & 0xFF)\n- 65#define CS_SEVERITY(x) (((x) >> 8) & 0xFF)\n- 66#define CS_NUMBER(x) ((x) & 0xFF)\n- 67\n- 68/* forward declarations */\n- 69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);\n- 70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *,\n-CS_CLIENTMSG *);\n- 71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *,\n-CS_SERVERMSG *);\n- 72\n- 73\n- 74#define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)\n- 75#define CS_SRC_VALUE -2562\n- 76\n- 77\n- 78\n- 79/* status bits for CS_SERVERMSG */\n- 80#define CS_HASEED 0x01\n- 81\n- 82typedef struct _cs_blkdesc CS_BLKDESC;\n+ 63#define DBMAXNUMLEN 33\n+ 64/* https://msdn.microsoft.com/en-us/library/ms176061.aspx */\n+ 65#define DBMAXNAME 128\n+ 66\n+70#define DBVERSION_UNKNOWN 0\n+ 71#define DBVERSION_46 1\n+ 72#define DBVERSION_100 2\n+ 73#define DBVERSION_42 3\n+ 74#define DBVERSION_70 4\n+ 75#define DBVERSION_71 5\n+ 76#define DBVERSION_72 6\n+ 77#define DBVERSION_73 7\n+ 78#define DBVERSION_74 8\n+ 79\n+ 80/* these two are defined by Microsoft for dbsetlversion() */\n+ 81#define DBVER42 DBVERSION_42\n+ 82#define DBVER60 DBVERSION_70 /* our best approximation */\n 83\n- 84/* CS_CAP_REQUEST values */\n- 85#define CS_REQ_LANG 1\n- 86#define CS_REQ_RPC 2\n- 87#define CS_REQ_NOTIF 3\n- 88#define CS_REQ_MSTMT 4\n- 89#define CS_REQ_BCP 5\n- 90#define CS_REQ_CURSOR 6\n- 91#define CS_REQ_DYN 7\n- 92#define CS_REQ_MSG 8\n- 93#define CS_REQ_PARAM 9\n- 94#define CS_DATA_INT1 10\n- 95#define CS_DATA_INT2 11\n- 96#define CS_DATA_INT4 12\n- 97#define CS_DATA_BIT 13\n- 98#define CS_DATA_CHAR 14\n- 99#define CS_DATA_VCHAR 15\n- 100#define CS_DATA_BIN 16\n- 101#define CS_DATA_VBIN 17\n- 102#define CS_DATA_MNY8 18\n- 103#define CS_DATA_MNY4 19\n- 104#define CS_DATA_DATE8 20\n- 105#define CS_DATA_DATE4 21\n- 106#define CS_DATA_FLT4 22\n- 107#define CS_DATA_FLT8 23\n- 108#define CS_DATA_NUM 24\n- 109#define CS_DATA_TEXT 25\n- 110#define CS_DATA_IMAGE 26\n- 111#define CS_DATA_DEC 27\n- 112#define CS_DATA_LCHAR 28\n- 113#define CS_DATA_LBIN 29\n- 114#define CS_DATA_INTN 30\n- 115#define CS_DATA_DATETIMEN 31\n- 116#define CS_DATA_MONEYN 32\n- 117#define CS_CSR_PREV 33\n- 118#define CS_CSR_FIRST 34\n- 119#define CS_CSR_LAST 35\n- 120#define CS_CSR_ABS 36\n- 121#define CS_CSR_REL 37\n- 122#define CS_CSR_MULTI 38\n- 123#define CS_CON_OOB 39\n- 124#define CS_CON_INBAND 40\n- 125#define CS_CON_LOGICAL 41\n- 126#define CS_PROTO_TEXT 42\n- 127#define CS_PROTO_BULK 43\n- 128#define CS_REQ_URGNOTIF 44\n- 129#define CS_DATA_SENSITIVITY 45\n- 130#define CS_DATA_BOUNDARY 46\n- 131#define CS_PROTO_DYNAMIC 47\n- 132#define CS_PROTO_DYNPROC 48\n- 133#define CS_DATA_FLTN 49\n- 134#define CS_DATA_BITN 50\n- 135#define CS_OPTION_GET 51\n- 136#define CS_DATA_INT8 52\n- 137#define CS_DATA_VOID 53\n- 138\n- 139/* CS_CAP_RESPONSE values */\n- 140#define CS_RES_NOMSG 1\n- 141#define CS_RES_NOEED 2\n- 142#define CS_RES_NOPARAM 3\n- 143#define CS_DATA_NOINT1 4\n- 144#define CS_DATA_NOINT2 5\n- 145#define CS_DATA_NOINT4 6\n- 146#define CS_DATA_NOBIT 7\n- 147#define CS_DATA_NOCHAR 8\n- 148#define CS_DATA_NOVCHAR 9\n- 149#define CS_DATA_NOBIN 10\n- 150#define CS_DATA_NOVBIN 11\n- 151#define CS_DATA_NOMNY8 12\n- 152#define CS_DATA_NOMNY4 13\n- 153#define CS_DATA_NODATE8 14\n- 154#define CS_DATA_NODATE4 15\n- 155#define CS_DATA_NOFLT4 16\n- 156#define CS_DATA_NOFLT8 17\n- 157#define CS_DATA_NONUM 18\n- 158#define CS_DATA_NOTEXT 19\n- 159#define CS_DATA_NOIMAGE 20\n- 160#define CS_DATA_NODEC 21\n- 161#define CS_DATA_NOLCHAR 22\n- 162#define CS_DATA_NOLBIN 23\n- 163#define CS_DATA_NOINTN 24\n- 164#define CS_DATA_NODATETIMEN 25\n- 165#define CS_DATA_NOMONEYN 26\n- 166#define CS_CON_NOOOB 27\n- 167#define CS_CON_NOINBAND 28\n- 168#define CS_PROTO_NOTEXT 29\n- 169#define CS_PROTO_NOBULK 30\n- 170#define CS_DATA_NOSENSITIVITY 31\n- 171#define CS_DATA_NOBOUNDARY 32\n- 172#define CS_RES_NOTDSDEBUG 33\n- 173#define CS_RES_NOSTRIPBLANKS 34\n- 174#define CS_DATA_NOINT8 35\n- 175\n- 176/* Properties */\n- 177enum\n- 178{\n- 179/*\n- 180 * These defines looks weird but programs can test support for defines,\n- 181 * compiler can check enum and there are no define side effecs\n- 182 */\n- 183 CS_USERNAME = 9100,\n- 184#define CS_USERNAME CS_USERNAME\n- 185 CS_PASSWORD = 9101,\n- 186#define CS_PASSWORD CS_PASSWORD\n- 187 CS_APPNAME = 9102,\n- 188#define CS_APPNAME CS_APPNAME\n- 189 CS_HOSTNAME = 9103,\n- 190#define CS_HOSTNAME CS_HOSTNAME\n- 191 CS_LOGIN_STATUS = 9104,\n- 192#define CS_LOGIN_STATUS CS_LOGIN_STATUS\n- 193 CS_TDS_VERSION = 9105,\n- 194#define CS_TDS_VERSION CS_TDS_VERSION\n- 195 CS_CHARSETCNV = 9106,\n- 196#define CS_CHARSETCNV CS_CHARSETCNV\n- 197 CS_PACKETSIZE = 9107,\n- 198#define CS_PACKETSIZE CS_PACKETSIZE\n- 199 CS_USERDATA = 9108,\n- 200#define CS_USERDATA CS_USERDATA\n- 201 CS_NETIO = 9110,\n- 202#define CS_NETIO CS_NETIO\n- 203 CS_TEXTLIMIT = 9112,\n- 204#define CS_TEXTLIMIT CS_TEXTLIMIT\n- 205 CS_HIDDEN_KEYS = 9113,\n- 206#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS\n- 207 CS_VERSION = 9114,\n- 208#define CS_VERSION CS_VERSION\n- 209 CS_IFILE = 9115,\n- 210#define CS_IFILE CS_IFILE\n- 211 CS_LOGIN_TIMEOUT = 9116,\n- 212#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT\n- 213 CS_TIMEOUT = 9117,\n- 214#define CS_TIMEOUT CS_TIMEOUT\n- 215 CS_MAX_CONNECT = 9118,\n- 216#define CS_MAX_CONNECT CS_MAX_CONNECT\n- 217 CS_EXPOSE_FMTS = 9120,\n- 218#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS\n- 219 CS_EXTRA_INF = 9121,\n- 220#define CS_EXTRA_INF CS_EXTRA_INF\n- 221 CS_ANSI_BINDS = 9123,\n- 222#define CS_ANSI_BINDS CS_ANSI_BINDS\n- 223 CS_BULK_LOGIN = 9124,\n- 224#define CS_BULK_LOGIN CS_BULK_LOGIN\n- 225 CS_LOC_PROP = 9125,\n- 226#define CS_LOC_PROP CS_LOC_PROP\n- 227 CS_PARENT_HANDLE = 9130,\n- 228#define CS_PARENT_HANDLE CS_PARENT_HANDLE\n- 229 CS_EED_CMD = 9131,\n- 230#define CS_EED_CMD CS_EED_CMD\n- 231 CS_DIAG_TIMEOUT = 9132,\n- 232#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT\n- 233 CS_DISABLE_POLL = 9133,\n- 234#define CS_DISABLE_POLL CS_DISABLE_POLL\n- 235 CS_SEC_ENCRYPTION = 9135,\n- 236#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION\n- 237 CS_SEC_CHALLENGE = 9136,\n- 238#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE\n- 239 CS_SEC_NEGOTIATE = 9137,\n- 240#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE\n- 241 CS_CON_STATUS = 9143,\n- 242#define CS_CON_STATUS CS_CON_STATUS\n- 243 CS_VER_STRING = 9144,\n- 244#define CS_VER_STRING CS_VER_STRING\n- 245 CS_SERVERNAME = 9146,\n- 246#define CS_SERVERNAME CS_SERVERNAME\n- 247 CS_SEC_APPDEFINED = 9149,\n- 248#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED\n- 249 CS_STICKY_BINDS = 9151,\n- 250#define CS_STICKY_BINDS CS_STICKY_BINDS\n- 251 CS_SEC_NETWORKAUTH = 9175,\n- 252#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH\n- 253 CS_SEC_DELEGATION = 9176,\n- 254#define CS_SEC_DELEGATION CS_SEC_DELEGATION\n- 255 CS_SEC_MUTUALAUTH = 9177,\n- 256#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH\n- 257 CS_SEC_SERVERPRINCIPAL = 9188,\n- 258#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL\n- 259 CS_SERVERADDR = 9206,\n- 260#define CS_SERVERADDR CS_SERVERADDR\n- 261 CS_PORT = 9300,\n- 262#define CS_PORT CS_PORT\n- 263 CS_CLIENTCHARSET = 9301,\n- 264#define CS_CLIENTCHARSET CS_CLIENTCHARSET\n- 265 CS_DATABASE = 9302\n- 266#define CS_DATABASE CS_DATABASE\n- 267};\n- 268\n- 269/* Arbitrary precision math operators */\n- 270enum\n- 271{\n- 272 CS_ADD = 1,\n- 273 CS_SUB,\n- 274 CS_MULT,\n- 275 CS_DIV\n- 276};\n- 277\n- 278enum\n- 279{\n- 280#define CS_TDS_AUTO CS_TDS_AUTO\n- 281 CS_TDS_AUTO = 0,\n- 282 CS_TDS_40 = 7360,\n- 283 CS_TDS_42,\n- 284 CS_TDS_46,\n- 285 CS_TDS_495,\n- 286 CS_TDS_50,\n- 287 CS_TDS_70,\n- 288 CS_TDS_71,\n- 289#define CS_TDS_71 CS_TDS_71\n- 290 CS_TDS_72,\n- 291#define CS_TDS_72 CS_TDS_72\n- 292 CS_TDS_73,\n- 293#define CS_TDS_73 CS_TDS_73\n- 294 CS_TDS_74,\n- 295#define CS_TDS_74 CS_TDS_74\n- 296};\n- 297\n- 298/* bit mask values used by CS_DATAFMT.status */\n- 299#define CS_HIDDEN (1 << 0)\n- 300#define CS_KEY (1 << 1)\n- 301#define CS_VERSION_KEY (1 << 2)\n- 302#define CS_NODATA (1 << 3)\n- 303#define CS_UPDATABLE (1 << 4)\n- 304#define CS_CANBENULL (1 << 5)\n- 305#define CS_DESCIN (1 << 6)\n- 306#define CS_DESCOUT (1 << 7)\n- 307#define CS_INPUTVALUE (1 << 8)\n- 308#define CS_UPDATECOL (1 << 9)\n- 309#define CS_RETURN (1 << 10)\n- 310#define CS_TIMESTAMP (1 << 13)\n- 311#define CS_NODEFAULT (1 << 14)\n- 312#define CS_IDENTITY (1 << 15)\n- 313\n- 314/*\n- 315 * DBD::Sybase compares indicator to CS_NULLDATA so this is -1\n- 316 * (the documentation states -1)\n- 317 */\n- 318#define CS_GOODDATA 0\n- 319#define CS_NULLDATA (-1)\n- 320\n- 321/* CS_CON_STATUS read-only property bit mask values */\n- 322#define CS_CONSTAT_CONNECTED 0x01\n- 323#define CS_CONSTAT_DEAD 0x02\n- 324\n- 325/*\n- 326 * Code added for CURSOR support\n- 327 * types accepted by ct_cursor\n- 328 */\n- 329#define CS_CURSOR_DECLARE 700\n- 330#define CS_CURSOR_OPEN 701\n- 331#define CS_CURSOR_ROWS 703\n- 332#define CS_CURSOR_UPDATE 704\n- 333#define CS_CURSOR_DELETE 705\n- 334#define CS_CURSOR_CLOSE 706\n- 335#define CS_CURSOR_DEALLOC 707\n- 336#define CS_CURSOR_OPTION 725\n- 337\n- 338#define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)\n- 339#define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)\n- 340#define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)\n- 341#define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)\n- 342\n- 343\n- 344#define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)\n- 345#define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)\n- 346#define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)\n- 347#define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)\n- 348#define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)\n- 349#define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)\n- 350#define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)\n- 351#define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)\n- 352\n- 353#define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)\n- 354#define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)\n- 355#define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)\n- 356#define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)\n- 357\n- 358/* options accepted by ct_options() */\n- 359#define CS_OPT_DATEFIRST 5001\n- 360#define CS_OPT_TEXTSIZE 5002\n- 361#define CS_OPT_STATS_TIME 5003\n- 362#define CS_OPT_STATS_IO 5004\n- 363#define CS_OPT_ROWCOUNT 5005\n- 364#define CS_OPT_DATEFORMAT 5007\n- 365#define CS_OPT_ISOLATION 5008\n- 366#define CS_OPT_AUTHON 5009\n- 367#define CS_OPT_SHOWPLAN 5013\n- 368#define CS_OPT_NOEXEC 5014\n- 369#define CS_OPT_ARITHIGNORE 5015\n- 370#define CS_OPT_TRUNCIGNORE 5016\n- 371#define CS_OPT_ARITHABORT 5017\n- 372#define CS_OPT_PARSEONLY 5018\n- 373#define CS_OPT_GETDATA 5020\n- 374#define CS_OPT_NOCOUNT 5021\n- 375#define CS_OPT_FORCEPLAN 5023\n- 376#define CS_OPT_FORMATONLY 5024\n- 377#define CS_OPT_CHAINXACTS 5025\n- 378#define CS_OPT_CURCLOSEONXACT 5026\n- 379#define CS_OPT_FIPSFLAG 5027\n- 380#define CS_OPT_RESTREES 5028\n- 381#define CS_OPT_IDENTITYON 5029\n- 382#define CS_OPT_CURREAD 5030\n- 383#define CS_OPT_CURWRITE 5031\n- 384#define CS_OPT_IDENTITYOFF 5032\n- 385#define CS_OPT_AUTHOFF 5033\n- 386#define CS_OPT_ANSINULL 5034\n- 387#define CS_OPT_QUOTED_IDENT 5035\n- 388#define CS_OPT_ANSIPERM 5036\n- 389#define CS_OPT_STR_RTRUNC 5037\n- 390\n- 391/* options accepted by ct_command() */\n- 392enum ct_command_options\n- 393{\n- 394 CS_MORE = 16,\n- 395 CS_END = 32,\n- 396 CS_RECOMPILE = 188,\n- 397 CS_NO_RECOMPILE,\n- 398 CS_BULK_INIT,\n- 399 CS_BULK_CONT,\n- 400 CS_BULK_DATA,\n- 401 CS_COLUMN_DATA\n- 402};\n- 403\n- 404\n- 405/*\n- 406 * bind formats, should be mapped to TDS types\n- 407 * can be a combination of bit\n- 408 */\n- 409enum\n- 410{\n- 411 CS_FMT_UNUSED = 0,\n- 412#define CS_FMT_UNUSED CS_FMT_UNUSED\n- 413 CS_FMT_NULLTERM = 1,\n- 414#define CS_FMT_NULLTERM CS_FMT_NULLTERM\n- 415 CS_FMT_PADNULL = 2,\n- 416#define CS_FMT_PADBLANK CS_FMT_PADBLANK\n- 417 CS_FMT_PADBLANK = 4,\n- 418#define CS_FMT_PADNULL CS_FMT_PADNULL\n- 419 CS_FMT_JUSTIFY_RT = 8\n- 420#define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT\n- 421};\n- 422\n- 423/* callbacks */\n- 424#define CS_COMPLETION_CB 1\n- 425#define CS_SERVERMSG_CB 2\n- 426#define CS_CLIENTMSG_CB 3\n- 427#define CS_NOTIF_CB 4\n- 428#define CS_ENCRYPT_CB 5\n- 429#define CS_CHALLENGE_CB 6\n- 430#define CS_DS_LOOKUP_CB 7\n- 431#define CS_SECSESSION_CB 8\n- 432#define CS_SIGNAL_CB 100\n- 433#define CS_MESSAGE_CB 9119\n+88#define DBTDS_UNKNOWN 0\n+ 89#define DBTDS_2_0 1 /* pre 4.0 SQL Server */\n+ 90#define DBTDS_3_4 2 /* Microsoft SQL Server (3.0) */\n+ 91#define DBTDS_4_0 3 /* 4.0 SQL Server */\n+ 92#define DBTDS_4_2 4 /* 4.2 SQL Server */\n+ 93#define DBTDS_4_6 5 /* 2.0 OpenServer and 4.6 SQL Server. */\n+ 94#define DBTDS_4_9_5 6 /* 4.9.5 (NCR) SQL Server */\n+ 95#define DBTDS_5_0 7 /* 5.0 SQL Server */\n+ 96#define DBTDS_7_0 8 /* Microsoft SQL Server 7.0 */\n+ 97#define DBTDS_8_0 9 /* Microsoft SQL Server 2000 */\n+ 98#define DBTDS_9_0 10 /* Microsoft SQL Server 2005 */\n+ 99#define DBTDS_7_1 9 /* Microsoft SQL Server 2000 */\n+ 100#define DBTDS_7_2 10 /* Microsoft SQL Server 2005 */\n+ 101#define DBTDS_7_3 11 /* Microsoft SQL Server 2008 */\n+ 102#define DBTDS_7_4 12 /* Microsoft SQL Server 2012/2014 */\n+ 103\n+ 104#define DBTXPLEN 16\n+ 105\n+ 106#define BCPMAXERRS 1\n+ 107#define BCPFIRST 2\n+ 108#define BCPLAST 3\n+ 109#define BCPBATCH 4\n+ 110#define BCPKEEPIDENTITY 8\n+ 111\n+ 112#define BCPLABELED 5\n+ 113#define BCPHINTS 6\n+ 114\n+ 115#define DBCMDNONE 0\n+ 116#define DBCMDPEND 1\n+ 117#define DBCMDSENT 2\n+ 118\n+ 119typedef int RETCODE;\n+ 120\n+ 121typedef void DBCURSOR;\n+ 122typedef void DBXLATE;\n+ 123typedef void DBSORTORDER;\n+ 124typedef void DBLOGINFO;\n+ 125typedef void *DBVOIDPTR;\n+ 126typedef short SHORT;\n+ 127typedef unsigned short USHORT;\n+ 128typedef int (*INTFUNCPTR) (void *, ...);\n+ 129typedef int (*DBWAITFUNC) (void);\n+ 130typedef DBWAITFUNC(*DB_DBBUSY_FUNC) (void *dbproc);\n+ 131typedef void (*DB_DBIDLE_FUNC) (DBWAITFUNC dfunc, void *dbproc);\n+ 132typedef int (*DB_DBCHKINTR_FUNC) (void *dbproc);\n+ 133typedef int (*DB_DBHNDLINTR_FUNC) (void *dbproc);\n+ 134\n+ 135#ifndef __INCvxWorksh\n+ 136/* VxWorks already defines STATUS and BOOL. Compiler gets mad if you\n+ 137** redefine them. */\n+ 138/* __INCvxWorksh will get #defined by std. include files included from\n+tds.h\n+ 139*/\n+ 140#ifdef STATUS\n+ 141/* On DU4.0d we get a conflicting STATUS definition from arpa/nameser.h\n+ 142 when _REENTRANT is defined.\n+ 143*/\n+ 144#undef STATUS\n+ 145#endif\n+ 146typedef int STATUS;\n+ 147#if !defined(_WINDEF_) && !defined(_WINDEF_H) && !defined(DOS32X)\n+ 148typedef int BOOL;\n+ 149#endif\n+ 150#endif\n+ 151\n+ 152#ifndef _tds_h_\n+ 153/* copied from tds.h */\n+ 154/* TODO find a best way... */\n+ 155enum\n+ 156{\n+ 157 SYBCHAR = 47, /* 0x2F */\n+ 158#define SYBCHAR SYBCHAR\n+ 159 SYBVARCHAR = 39, /* 0x27 */\n+ 160#define SYBVARCHAR SYBVARCHAR\n+ 161 SYBINTN = 38, /* 0x26 */\n+ 162#define SYBINTN SYBINTN\n+ 163 SYBINT1 = 48, /* 0x30 */\n+ 164#define SYBINT1 SYBINT1\n+ 165 SYBINT2 = 52, /* 0x34 */\n+ 166#define SYBINT2 SYBINT2\n+ 167 SYBINT4 = 56, /* 0x38 */\n+ 168#define SYBINT4 SYBINT4\n+ 169 SYBINT8 = 127, /* 0x7F */\n+ 170#define SYBINT8 SYBINT8\n+ 171 SYBFLT8 = 62, /* 0x3E */\n+ 172#define SYBFLT8 SYBFLT8\n+ 173 SYBDATETIME = 61, /* 0x3D */\n+ 174#define SYBDATETIME SYBDATETIME\n+ 175 SYBBIT = 50, /* 0x32 */\n+ 176#define SYBBIT SYBBIT\n+ 177 SYBBITN = 104, /* 0x68 */\n+ 178#define SYBBITN SYBBITN\n+ 179 SYBTEXT = 35, /* 0x23 */\n+ 180#define SYBTEXT SYBTEXT\n+ 181 SYBNTEXT = 99, /* 0x63 */\n+ 182#define SYBNTEXT SYBNTEXT\n+ 183 SYBIMAGE = 34, /* 0x22 */\n+ 184#define SYBIMAGE SYBIMAGE\n+ 185 SYBMONEY4 = 122, /* 0x7A */\n+ 186#define SYBMONEY4 SYBMONEY4\n+ 187 SYBMONEY = 60, /* 0x3C */\n+ 188#define SYBMONEY SYBMONEY\n+ 189 SYBDATETIME4 = 58, /* 0x3A */\n+ 190#define SYBDATETIME4 SYBDATETIME4\n+ 191 SYBREAL = 59, /* 0x3B */\n+ 192#define SYBREAL SYBREAL\n+ 193 SYBBINARY = 45, /* 0x2D */\n+ 194#define SYBBINARY SYBBINARY\n+ 195 SYBVOID = 31, /* 0x1F */\n+ 196#define SYBVOID SYBVOID\n+ 197 SYBVARBINARY = 37, /* 0x25 */\n+ 198#define SYBVARBINARY SYBVARBINARY\n+ 199 SYBNUMERIC = 108, /* 0x6C */\n+ 200#define SYBNUMERIC SYBNUMERIC\n+ 201 SYBDECIMAL = 106, /* 0x6A */\n+ 202#define SYBDECIMAL SYBDECIMAL\n+ 203 SYBFLTN = 109, /* 0x6D */\n+ 204#define SYBFLTN SYBFLTN\n+ 205 SYBMONEYN = 110, /* 0x6E */\n+ 206#define SYBMONEYN SYBMONEYN\n+ 207 SYBDATETIMN = 111, /* 0x6F */\n+ 208#define SYBDATETIMN SYBDATETIMN\n+ 209 SYBNVARCHAR = 103, /* 0x67 */\n+ 210#define SYBNVARCHAR SYBNVARCHAR\n+ 211 SYBDATE = 49, /* 0x31 */\n+ 212#define SYBDATE SYBDATE\n+ 213 SYBTIME = 51, /* 0x33 */\n+ 214#define SYBTIME SYBTIME\n+ 215 SYBBIGDATETIME = 187, /* 0xBB */\n+ 216#define SYBBIGDATETIME SYBBIGDATETIME\n+ 217 SYBBIGTIME = 188, /* 0xBC */\n+ 218#define SYBBIGTIME SYBBIGTIME\n+ 219 SYBMSDATE = 40, /* 0x28 */\n+ 220#define SYBMSDATE SYBMSDATE\n+ 221 SYBMSTIME = 41, /* 0x29 */\n+ 222#define SYBMSTIME SYBMSTIME\n+ 223 SYBMSDATETIME2 = 42, /* 0x2A */\n+ 224#define SYBMSDATETIME2 SYBMSDATETIME2\n+ 225 SYBMSDATETIMEOFFSET = 43, /* 0x2B */\n+ 226#define SYBMSDATETIMEOFFSET SYBMSDATETIMEOFFSET\n+ 227};\n+ 228\n+ 229#define SYBAOPCNT 0x4b\n+ 230#define SYBAOPCNTU 0x4c\n+ 231#define SYBAOPSUM 0x4d\n+ 232#define SYBAOPSUMU 0x4e\n+ 233#define SYBAOPAVG 0x4f\n+ 234#define SYBAOPAVGU 0x50\n+ 235#define SYBAOPMIN 0x51\n+ 236#define SYBAOPMAX 0x52\n+ 237\n+ 238/* mssql2k compute operator */\n+ 239#define SYBAOPCNT_BIG 0x09\n+ 240#define SYBAOPSTDEV 0x30\n+ 241#define SYBAOPSTDEVP 0x31\n+ 242#define SYBAOPVAR 0x32\n+ 243#define SYBAOPVARP 0x33\n+ 244#define SYBAOPCHECKSUM_AGG 0x72\n+ 245\n+ 246#endif\n+ 247\n+ 248typedef unsigned char DBBOOL;\n+ 249typedef char DBCHAR;\n+ 250typedef unsigned char DBBIT;\n+ 251typedef unsigned char DBTINYINT;\n+ 252typedef int16_t DBSMALLINT;\n+ 253typedef int32_t DBINT;\n+ 254typedef int64_t DBBIGINT;\n+ 255typedef unsigned char DBBINARY;\n+ 256typedef tds_sysdep_real32_type DBREAL;\n+ 257typedef tds_sysdep_real64_type DBFLT8;\n+ 258typedef uint16_t DBUSMALLINT;\n+ 259typedef uint32_t DBUINT;\n+ 260typedef uint64_t DBUBIGINT;\n+ 261\n+262typedef struct\n+ 263{\n+ 264 DBSMALLINT len;\n+ 265 char str[256];\n+ 266} DBVARYCHAR;\n+ 267\n+268typedef struct\n+ 269{\n+ 270 DBSMALLINT len;\n+ 271 unsigned char array[256];\n+ 272} DBVARYBIN;\n+ 273\n+274typedef struct\n+ 275{\n+ 276 unsigned char precision;\n+ 277 unsigned char scale;\n+ 278 unsigned char array[33];\n+ 279} DBNUMERIC;\n+ 280\n+ 281typedef DBNUMERIC DBDECIMAL;\n+ 282\n+283typedef struct\n+ 284{\n+ 285 DBINT mnyhigh;\n+ 286 DBUINT mnylow;\n+ 287} DBMONEY;\n+ 288\n+289typedef struct\n+ 290{\n+ 291 DBINT mny4;\n+ 292} DBMONEY4;\n+ 293\n+294typedef struct\n+ 295{\n+ 296 DBINT dtdays;\n+ 297 DBINT dttime;\n+ 298} DBDATETIME;\n+ 299\n+300typedef struct\n+ 301{\n+ 302 DBUSMALLINT days; /* days since Jan-1-1900 */\n+ 303 DBUSMALLINT minutes; /* minutes since midnight */\n+ 304} DBDATETIME4;\n+ 305\n+306typedef struct\n+ 307{\n+308 DBUBIGINT time;\n+309 DBINT date;\n+310 DBSMALLINT offset;\n+ 311 DBUSMALLINT time_prec:3;\n+ 312/* fix a problem with some public headers defining _res */\n+ 313#undef _res\n+ 314 DBUSMALLINT _res:10;\n+ 315 DBUSMALLINT has_time:1;\n+ 316 DBUSMALLINT has_date:1;\n+ 317 DBUSMALLINT has_offset:1;\n+ 318} DBDATETIMEALL;\n+ 319\n+ 320#ifdef MSDBLIB\n+ 321# define SQLCHAR SYBCHAR\n+ 322 typedef struct\n+ 323 {\n+ 324 DBUSMALLINT numdays;\n+ 325 DBUSMALLINT nummins;\n+ 326 } DBDATETIM4;\n+ 327#endif\n+ 328\n+ 329typedef struct tds_dblib_loginrec LOGINREC;\n+ 330\n+ 331#ifndef DOS32X\n+ 332typedef unsigned char BYTE;\n+ 333#endif\n+ 334\n+335typedef struct dbtypeinfo\n+ 336{\n+ 337 DBINT precision;\n+ 338 DBINT scale;\n+ 339} DBTYPEINFO;\n+ 340\n+341struct dbstring\n+ 342{\n+ 343 BYTE *strtext;\n+ 344 DBINT strtotlen;\n+ 345 struct dbstring *strnext;\n+ 346};\n+ 347typedef struct dbstring DBSTRING;\n+ 348\n+ 349/* Used by dbcolinfo */\n+ 350enum\n+ 351{ MAXCOLNAMELEN = 512 }; /* duplicates TDS_SYSNAME_SIZE */\n+ 352typedef enum { CI_REGULAR=1, CI_ALTERNATE=2, CI_CURSOR=3 } CI_TYPE;\n+ 353\n+354typedef struct\n+ 355{\n+ 356 DBINT SizeOfStruct;\n+ 357 DBCHAR Name[MAXCOLNAMELEN+2];\n+ 358 DBCHAR ActualName[MAXCOLNAMELEN+2];\n+ 359 DBCHAR TableName[MAXCOLNAMELEN+2];\n+ 360 SHORT Type;\n+ 361 DBINT UserType;\n+ 362 DBINT MaxLength;\n+ 363 BYTE Precision;\n+ 364 BYTE Scale;\n+ 365 BOOL VarLength;\n+ 366 BYTE Null;\n+ 367 BYTE CaseSensitive;\n+ 368 BYTE Updatable;\n+ 369 BOOL Identity;\n+ 370\n+ 371} DBCOL;\n+ 372\n+373typedef struct\n+ 374{\n+ 375 DBINT SizeOfStruct;\n+ 376 DBCHAR Name[MAXCOLNAMELEN+2];\n+ 377 DBCHAR ActualName[MAXCOLNAMELEN+2];\n+ 378 DBCHAR TableName[MAXCOLNAMELEN+2];\n+ 379 SHORT Type;\n+ 380 DBINT UserType;\n+ 381 DBINT MaxLength;\n+ 382 BYTE Precision;\n+ 383 BYTE Scale;\n+ 384 BOOL VarLength;\n+ 385 BYTE Null;\n+ 386 BYTE CaseSensitive;\n+ 387 BYTE Updatable;\n+ 388 BOOL Identity;\n+ 389 SHORT ServerType;\n+ 390 DBINT ServerMaxLength;\n+ 391 DBCHAR ServerTypeDeclaration[256];\n+ 392} DBCOL2;\n+ 393/* end dbcolinfo stuff */\n+ 394\n+ 395\n+ 396\n+ 397/* a large list of options, DBTEXTSIZE is needed by sybtcl */\n+ 398#define DBPARSEONLY 0\n+ 399#define DBESTIMATE 1\n+ 400#define DBSHOWPLAN 2\n+ 401#define DBNOEXEC 3\n+ 402#define DBARITHIGNORE 4\n+ 403#define DBNOCOUNT 5\n+ 404#define DBARITHABORT 6\n+ 405#define DBTEXTLIMIT 7\n+ 406#define DBBROWSE 8\n+ 407#define DBOFFSET 9\n+ 408#define DBSTAT 10\n+ 409#define DBERRLVL 11\n+ 410#define DBCONFIRM 12\n+ 411#define DBSTORPROCID 13\n+ 412#define DBBUFFER 14\n+ 413#define DBNOAUTOFREE 15\n+ 414#define DBROWCOUNT 16\n+ 415#define DBTEXTSIZE 17\n+ 416#define DBNATLANG 18\n+ 417#define DBDATEFORMAT 19\n+ 418#define DBPRPAD 20\n+ 419#define DBPRCOLSEP 21\n+ 420#define DBPRLINELEN 22\n+ 421#define DBPRLINESEP 23\n+ 422#define DBLFCONVERT 24\n+ 423#define DBDATEFIRST 25\n+ 424#define DBCHAINXACTS 26\n+ 425#define DBFIPSFLAG 27\n+ 426#define DBISOLATION 28\n+ 427#define DBAUTH 29\n+ 428#define DBIDENTITY 30\n+ 429#define DBNOIDCOL 31\n+ 430#define DBDATESHORT 32\n+ 431#define DBCLIENTCURSORS 33\n+ 432#define DBSETTIME 34\n+ 433#define DBQUOTEDIDENT 35\n 434\n- 435/* string types */\n- 436#define CS_NULLTERM -9\n- 437#define CS_WILDCARD -99\n- 438#define CS_NO_LIMIT -9999\n- 439#define CS_UNUSED -99999\n- 440\n- 441/* other */\n- 442#define CS_GET 33\n- 443#define CS_SET 34\n- 444#define CS_CLEAR 35\n- 445#define CS_INIT 36\n- 446#define CS_STATUS 37\n- 447#define CS_MSGLIMIT 38\n- 448#define CS_SUPPORTED 40\n- 449\n- 450#define CS_CMD_DONE 4046\n- 451#define CS_CMD_SUCCEED 4047\n- 452#define CS_CMD_FAIL 4048\n- 453\n- 454/* commands */\n- 455#define CS_LANG_CMD 148\n- 456#define CS_RPC_CMD 149\n- 457#define CS_SEND_DATA_CMD 151\n- 458#define CS_SEND_BULK_CMD 153\n- 459\n- 460#define CS_VERSION_100 112\n- 461#define CS_VERSION_110 1100\n- 462#define CS_VERSION_120 1100\n- 463#define CS_VERSION_125 12500\n- 464#define CS_VERSION_150 15000\n- 465\n- 466#define BLK_VERSION_100 CS_VERSION_100\n- 467#define BLK_VERSION_110 CS_VERSION_110\n- 468#define BLK_VERSION_120 CS_VERSION_120\n- 469#define BLK_VERSION_125 CS_VERSION_125\n- 470#define BLK_VERSION_150 CS_VERSION_150\n- 471\n- 472#define CS_FORCE_EXIT 300\n- 473#define CS_FORCE_CLOSE 301\n- 474\n- 475#define CS_SYNC_IO 8111\n- 476#define CS_ASYNC_IO 8112\n- 477#define CS_DEFER_IO 8113\n- 478\n- 479#define CS_CANCEL_CURRENT 6000\n- 480#define CS_CANCEL_ALL 6001\n- 481#define CS_CANCEL_ATTN 6002\n- 482\n- 483#define CS_ROW_COUNT 800\n- 484#define CS_CMD_NUMBER 801\n- 485#define CS_NUM_COMPUTES 802\n- 486#define CS_NUMDATA 803\n- 487#define CS_NUMORDERCOLS 805\n- 488#define CS_MSGTYPE 806\n- 489#define CS_BROWSE_INFO 807\n- 490#define CS_TRANS_STATE 808\n- 491\n- 492#define CS_TRAN_UNDEFINED 0\n- 493#define CS_TRAN_IN_PROGRESS 1\n- 494#define CS_TRAN_COMPLETED 2\n- 495#define CS_TRAN_FAIL 3\n- 496#define CS_TRAN_STMT_FAIL 4\n- 497\n- 498#define CS_COMP_OP 5350\n- 499#define CS_COMP_ID 5351\n- 500#define CS_COMP_COLID 5352\n- 501#define CS_COMP_BYLIST 5353\n- 502#define CS_BYLIST_LEN 5354\n- 503\n- 504#define CS_NO_COUNT -1\n- 505\n- 506#define CS_OP_SUM 5370\n- 507#define CS_OP_AVG 5371\n- 508#define CS_OP_COUNT 5372\n- 509#define CS_OP_MIN 5373\n- 510#define CS_OP_MAX 5374\n- 511\n- 512#define CS_CAP_REQUEST 1\n- 513#define CS_CAP_RESPONSE 2\n- 514\n- 515#define CS_PREPARE 717\n- 516#define CS_EXECUTE 718\n- 517#define CS_DESCRIBE_INPUT 720\n- 518#define CS_DESCRIBE_OUTPUT 721\n- 519\n- 520#define CS_DEALLOC 711\n+ 435#define DBNUMOPTIONS 36\n+ 436\n+ 437#define DBPADOFF 0\n+ 438#define DBPADON 1\n+ 439\n+ 440#define OFF 0\n+ 441#define ON 1\n+ 442\n+ 443#define NOSUCHOPTION 2\n+ 444\n+ 445#define MAXOPTTEXT 32\n+ 446\n+ 447typedef struct tds_dblib_dbprocess DBPROCESS;\n+ 448\n+ 449/*\n+ 450 * Sybase & Microsoft use different names for the dbdaterec members.\n+ 451 * Keep these two structures physically identical in memory.\n+ 452 * dbdatecrack() casts one to the other for ease of implementation.\n+ 453 *\n+ 454 * Giving credit where credit is due, we can acknowledge that\n+ 455 * Microsoft chose the better names here, hands down. (\"datedmonth\"?!)\n+ 456 */\n+457struct tds_microsoft_dbdaterec\n+ 458{\n+ 459 DBINT year; /* 1753 - 9999 */\n+ 460 DBINT quarter; /* 1 - 4 */\n+ 461 DBINT month; /* 1 - 12 */\n+ 462 DBINT day; /* 1 - 31 */\n+ 463 DBINT dayofyear; /* 1 - 366 */\n+ 464 DBINT week; /* 1 - 54 (for leap years) */\n+ 465 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */\n+ 466 DBINT hour; /* 0 - 23 */\n+ 467 DBINT minute; /* 0 - 59 */\n+ 468 DBINT second; /* 0 - 59 */\n+ 469 DBINT millisecond; /* 0 - 999 */\n+ 470 DBINT tzone; /* -840 - 840 */\n+ 471};\n+ 472\n+473struct tds_sybase_dbdaterec\n+ 474{\n+ 475 DBINT dateyear; /* 1900 and counting */\n+ 476 DBINT quarter; /* 0 - 3 (Microsoft only) */\n+ 477 DBINT datemonth; /* 0 - 11 */\n+ 478 DBINT datedmonth; /* 1 - 31 */\n+ 479 DBINT datedyear; /* 1 - 366 */\n+ 480 DBINT week; /* 1 - 54 (Microsoft only) */\n+ 481 DBINT datedweek; /* 0 - 6 */\n+ 482 DBINT datehour; /* 0 - 23 */\n+ 483 DBINT dateminute; /* 0 - 59 */\n+ 484 DBINT datesecond; /* 0 - 59 */\n+ 485 DBINT datemsecond; /* 0 - 999 */\n+ 486 DBINT datetzone; /* -840 - 840 */\n+ 487};\n+ 488\n+489struct tds_microsoft_dbdaterec2\n+ 490{\n+ 491 DBINT year; /* 1753 - 9999 */\n+ 492 DBINT quarter; /* 1 - 4 */\n+ 493 DBINT month; /* 1 - 12 */\n+ 494 DBINT day; /* 1 - 31 */\n+ 495 DBINT dayofyear; /* 1 - 366 */\n+ 496 DBINT week; /* 1 - 54 (for leap years) */\n+ 497 DBINT weekday; /* 1 - 7 (Mon. - Sun.) */\n+ 498 DBINT hour; /* 0 - 23 */\n+ 499 DBINT minute; /* 0 - 59 */\n+ 500 DBINT second; /* 0 - 59 */\n+ 501 DBINT nanosecond; /* 0 - 999999999 */\n+ 502 DBINT tzone; /* 0 - 127 (Sybase only) */\n+ 503};\n+ 504\n+505struct tds_sybase_dbdaterec2\n+ 506{\n+ 507 DBINT dateyear; /* 1900 and counting */\n+ 508 DBINT quarter; /* 0 - 3 (Microsoft only) */\n+ 509 DBINT datemonth; /* 0 - 11 */\n+ 510 DBINT datedmonth; /* 1 - 31 */\n+ 511 DBINT datedyear; /* 1 - 366 */\n+ 512 DBINT week; /* 1 - 54 (Microsoft only) */\n+ 513 DBINT datedweek; /* 0 - 6 */\n+ 514 DBINT datehour; /* 0 - 23 */\n+ 515 DBINT dateminute; /* 0 - 59 */\n+ 516 DBINT datesecond; /* 0 - 59 */\n+ 517 DBINT datensecond; /* 0 - 999999999 */\n+ 518 DBINT datetzone; /* 0 - 127 */\n+ 519};\n+ 520\n 521\n- 522#define CS_LC_ALL 7\n- 523#define CS_SYB_LANG 8\n- 524#define CS_SYB_CHARSET 9\n- 525#define CS_SYB_SORTORDER 10\n- 526#define CS_SYB_COLLATE CS_SYB_SORTORDER\n- 527#define CS_SYB_LANG_CHARSET 11\n- 528\n- 529#define CS_BLK_IN 1\n- 530#define CS_BLK_OUT 2\n+ 522#ifdef MSDBLIB\n+ 523typedef struct tds_microsoft_dbdaterec DBDATEREC;\n+ 524typedef struct tds_microsoft_dbdaterec2 DBDATEREC2;\n+ 525#else\n+ 526typedef struct tds_sybase_dbdaterec DBDATEREC;\n+ 527typedef struct tds_sybase_dbdaterec2 DBDATEREC2;\n+ 528#endif\n+ 529\n+ 530typedef int (*EHANDLEFUNC) (DBPROCESS * dbproc, int severity, int dberr,\n+int oserr, char *dberrstr, char *oserrstr);\n 531\n- 532#define CS_BLK_BATCH 1\n- 533#define CS_BLK_ALL 2\n- 534#define CS_BLK_CANCEL 3\n- 535\n- 536/* to do support these */\n- 537\n- 538#define CS_BLK_ARRAY_MAXLEN 0x1000\n- 539#define CS_DEF_PREC 18\n+ 532typedef int (*MHANDLEFUNC) (DBPROCESS * dbproc, DBINT msgno, int msgstate,\n+int severity, char *msgtext, char *srvname,\n+ 533 char *proc, int line);\n+ 534\n+ 535/* dbpoll() result codes, sybtcl needs DBRESULT */\n+ 536#define DBRESULT 1\n+ 537#define DBNOTIFICATION 2\n+ 538#define DBTIMEOUT 3\n+ 539#define DBINTERRUPT 4\n 540\n- 541/* Error Severities */\n- 542#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)\n- 543#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)\n- 544#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)\n- 545#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)\n- 546#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)\n- 547#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)\n- 548#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)\n- 549#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)\n- 550\n- 551/* result_types */\n- 552#define CS_COMPUTE_RESULT 4045\n- 553#define CS_CURSOR_RESULT 4041\n- 554#define CS_PARAM_RESULT 4042\n- 555#define CS_ROW_RESULT 4040\n- 556#define CS_STATUS_RESULT 4043\n- 557#define CS_COMPUTEFMT_RESULT 4050\n- 558#define CS_ROWFMT_RESULT 4049\n- 559#define CS_MSG_RESULT 4044\n- 560#define CS_DESCRIBE_RESULT 4051\n- 561\n- 562/* bind types */\n- 563#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)\n- 564#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)\n- 565#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)\n- 566#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)\n- 567#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)\n- 568#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)\n- 569#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)\n- 570#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)\n- 571#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)\n- 572#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)\n- 573#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)\n- 574#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)\n- 575#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)\n- 576#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)\n- 577#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)\n- 578#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)\n- 579#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)\n- 580#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)\n- 581#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)\n- 582#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)\n- 583#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)\n- 584#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)\n- 585#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)\n- 586#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)\n- 587#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)\n- 588#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)\n- 589#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)\n- 590#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)\n- 591#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)\n- 592#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)\n- 593#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)\n- 594#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)\n- 595#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)\n- 596#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)\n- 597#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)\n- 598#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)\n- 599#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)\n- 600#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)\n- 601#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)\n+ 541/* more sybtcl needs: */\n+ 542#define DBTXTSLEN 8\n+ 543\n+ 544/* bind types */\n+ 545#define CHARBIND 0\n+ 546#define STRINGBIND 1\n+ 547#define NTBSTRINGBIND 2\n+ 548#define VARYCHARBIND 3\n+ 549#define VARYBINBIND 4\n+ 550#define TINYBIND 6\n+ 551#define SMALLBIND 7\n+ 552#define INTBIND 8\n+ 553#define FLT8BIND 9\n+ 554#define REALBIND 10\n+ 555#define DATETIMEBIND 11\n+ 556#define SMALLDATETIMEBIND 12\n+ 557#define MONEYBIND 13\n+ 558#define SMALLMONEYBIND 14\n+ 559#define BINARYBIND 15\n+ 560#define BITBIND 16\n+ 561#define NUMERICBIND 17\n+ 562#define DECIMALBIND 18\n+ 563#define SRCNUMERICBIND 19\n+ 564#define SRCDECIMALBIND 20\n+ 565#define DATEBIND 21\n+ 566#define TIMEBIND 22\n+ 567#define BIGDATETIMEBIND 23\n+ 568#define BIGTIMEBIND 24\n+ 569#define BIGINTBIND 30\n+ 570#define DATETIME2BIND 31\n+ 571#define MAXBINDTYPES 32 /* keep last */\n+ 572\n+ 573#define DBPRCOLSEP 21\n+ 574#define DBPRLINELEN 22\n+ 575#define DBRPCNORETURN 0\n+ 576#define DBRPCRETURN 1\n+ 577#define DBRPCDEFAULT 2\n+ 578\n+ 579#define REG_ROW -1\n+ 580#define MORE_ROWS -1\n+ 581#define NO_MORE_ROWS -2\n+ 582#define BUF_FULL -3\n+ 583#define NO_MORE_RESULTS 2\n+ 584#define SUCCEED 1\n+ 585#define FAIL 0\n+ 586\n+ 587#define DB_IN 1\n+ 588#define DB_OUT 2\n+ 589#define DB_QUERYOUT 3\n+ 590\n+ 591#define DBSINGLE 0\n+ 592#define DBDOUBLE 1\n+ 593#define DBBOTH 2\n+ 594\n+ 595/* remote procedure call (rpc) options */\n+ 596#define DBRPCRECOMPILE TDS_STATIC_CAST(DBSMALLINT, 0x0001)\n+ 597#define DBRPCRESET TDS_STATIC_CAST(DBSMALLINT, 0x0002)\n+ 598#define DBRPCCURSOR TDS_STATIC_CAST(DBSMALLINT, 0x0008)\n+ 599\n+ 600#if defined(DBLIB_UNIMPLEMENTED)\n+ 601DBBOOL db12hour(DBPROCESS * dbprocess, const char language[]);\n 602\n- 603#define CS_MIN_SYBTYPE CS_CHAR_TYPE\n- 604#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE\n- 605\n- 606#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)\n- 607/* cs_dt_info type values */\n- 608enum\n- 609{\n- 610 CS_MONTH = 7340,\n- 611#define CS_MONTH CS_MONTH\n- 612 CS_SHORTMONTH,\n- 613#define CS_SHORTMONTH CS_SHORTMONTH\n- 614 CS_DAYNAME,\n- 615#define CS_DAYNAME CS_DAYNAME\n- 616 CS_DATEORDER,\n- 617#define CS_DATEORDER CS_DATEORDER\n- 618 CS_12HOUR,\n- 619#define CS_12HOUR CS_12HOUR\n- 620 CS_DT_CONVFMT\n- 621#define CS_DT_CONVFMT CS_DT_CONVFMT\n- 622};\n+ 603DBBOOL dbcolbrowse(DBPROCESS * dbprocess, int colnum);\n+ 604\n+ 605RETCODE dbcursor(DBCURSOR * hc, DBINT optype, DBINT bufno, BYTE * table,\n+BYTE * values);\n+ 606RETCODE dbcursorbind(DBCURSOR * hc, int col, int vartype, DBINT varlen,\n+DBINT * poutlen, BYTE * pvaraddr, DBTYPEINFO * typeinfo);\n+ 607void dbcursorclose(DBCURSOR * hc);\n+ 608RETCODE dbcursorcolinfo(DBCURSOR * hc, DBINT column, DBCHAR * colname,\n+DBINT * coltype, DBINT * collen, DBINT * usertype);\n+ 609RETCODE dbcursorfetch(DBCURSOR * hc, DBINT fetchtype, DBINT rownum);\n+ 610RETCODE dbcursorinfo(DBCURSOR * hc, DBINT * ncols, DBINT * nrows);\n+ 611DBCURSOR *dbcursoropen(DBPROCESS * dbprocess, BYTE * stmt, SHORT scollopt,\n+SHORT concuropt, USHORT nrows, DBINT * pstatus);\n+ 612\n+ 613int dbdate4cmp(DBPROCESS * dbprocess, DBDATETIME4 * d1, DBDATETIME4 * d2);\n+ 614RETCODE dbdate4zero(DBPROCESS * dbprocess, DBDATETIME4 * d1);\n+ 615RETCODE dbdatechar(DBPROCESS * dbprocess, char *buf, int datepart, int\n+value);\n+ 616int dbdatename(DBPROCESS * dbprocess, char *buf, int date, DBDATETIME *\n+datetime);\n+ 617char *dateorder(DBPROCESS * dbprocess, char *language);\n+ 618DBINT dbdatepart(DBPROCESS * dbprocess, int datepart, DBDATETIME *\n+datetime);\n+ 619RETCODE dbdatezero(DBPROCESS * dbprocess, DBDATETIME * d1);\n+ 620char *dbdayname(DBPROCESS * dbprocess, char *language, int daynum);\n+ 621\n+ 622int dbgetoff(DBPROCESS * dbprocess, DBUSMALLINT offtype, int startfrom);\n 623\n- 624/* DT_CONVFMT types */\n- 625enum\n- 626{\n- 627 CS_DATES_SHORT = 0,\n- 628#define CS_DATES_SHORT CS_DATES_SHORT\n- 629 CS_DATES_MDY1,\n- 630#define CS_DATES_MDY1 CS_DATES_MDY1\n- 631 CS_DATES_YMD1,\n- 632#define CS_DATES_YMD1 CS_DATES_YMD1\n- 633 CS_DATES_DMY1,\n- 634#define CS_DATES_DMY1 CS_DATES_DMY1\n- 635 CS_DATES_DMY2,\n- 636#define CS_DATES_DMY2 CS_DATES_DMY2\n- 637 CS_DATES_DMY3,\n- 638#define CS_DATES_DMY3 CS_DATES_DMY3\n- 639 CS_DATES_DMY4,\n- 640#define CS_DATES_DMY4 CS_DATES_DMY4\n- 641 CS_DATES_MDY2,\n- 642#define CS_DATES_MDY2 CS_DATES_MDY2\n- 643 CS_DATES_HMS,\n- 644#define CS_DATES_HMS CS_DATES_HMS\n- 645 CS_DATES_LONG,\n- 646#define CS_DATES_LONG CS_DATES_LONG\n- 647 CS_DATES_MDY3,\n- 648#define CS_DATES_MDY3 CS_DATES_MDY3\n- 649 CS_DATES_YMD2,\n- 650#define CS_DATES_YMD2 CS_DATES_YMD2\n- 651 CS_DATES_YMD3,\n- 652#define CS_DATES_YMD3 CS_DATES_YMD3\n- 653 CS_DATES_YDM1,\n- 654#define CS_DATES_YDM1 CS_DATES_YDM1\n- 655 CS_DATES_MYD1,\n- 656#define CS_DATES_MYD1 CS_DATES_MYD1\n- 657 CS_DATES_DYM1,\n- 658#define CS_DATES_DYM1 CS_DATES_DYM1\n- 659 CS_DATES_MDY1_YYYY = 101,\n- 660#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY\n- 661 CS_DATES_YMD1_YYYY,\n- 662#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY\n- 663 CS_DATES_DMY1_YYYY,\n- 664#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY\n- 665 CS_DATES_DMY2_YYYY,\n- 666#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY\n- 667 CS_DATES_DMY3_YYYY,\n- 668#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY\n- 669 CS_DATES_DMY4_YYYY,\n- 670#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY\n- 671 CS_DATES_MDY2_YYYY,\n- 672#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY\n- 673 CS_DATES_MDY3_YYYY = 110,\n- 674#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY\n- 675 CS_DATES_YMD2_YYYY,\n- 676#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY\n- 677 CS_DATES_YMD3_YYYY\n- 678#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY\n- 679};\n+ 624char *dbqual(DBPROCESS * dbprocess, int tabnum, char *tabname);\n+ 625void dbfreequal(char *qualptr);\n+ 626\n+ 627DBSORTORDER *dbloadsort(DBPROCESS * dbprocess);\n+ 628RETCODE dbfreesort(DBPROCESS * dbprocess, DBSORTORDER * sortorder);\n+ 629\n+ 630RETCODE dbload_xlate(DBPROCESS * dbprocess, char *srv_charset, char\n+*clt_name, DBXLATE ** xlt_tosrv, DBXLATE ** xlt_todisp);\n+ 631\n+ 632RETCODE dbmny4divide(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n+DBMONEY4 * quotient);\n+ 633RETCODE dbmny4mul(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n+DBMONEY4 * prod);\n+ 634RETCODE dbmnyadd(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n+sum);\n+ 635RETCODE dbmnydivide(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY\n+* quotient);\n+ 636RETCODE dbmnydown(DBPROCESS * dbproc, DBMONEY * mnyptr, int divisor, int\n+*remainder);\n+ 637RETCODE dbmnyinit(DBPROCESS * dbproc, DBMONEY * mnyptr, int trim, DBBOOL *\n+negative);\n+ 638RETCODE dbmnyndigit(DBPROCESS * dbproc, DBMONEY * mnyptr, DBCHAR * value,\n+DBBOOL * zero);\n+ 639RETCODE dbmnymul(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n+prod);\n+ 640RETCODE dbmnydigit(DBPROCESS * dbprocess, DBMONEY * m1, DBCHAR * value,\n+DBBOOL * zero);\n+ 641RETCODE dbmnyscale(DBPROCESS * dbproc, DBMONEY * dest, int multiplier, int\n+addend);\n+ 642\n+ 643\n+ 644RETCODE dbnpcreate(DBPROCESS * dbprocess);\n+ 645RETCODE dbnpdefine(DBPROCESS * dbprocess, DBCHAR * procedure_name,\n+DBSMALLINT namelen);\n+ 646\n+ 647int DBNUMORDERS(DBPROCESS * dbprocess);\n+ 648\n+ 649RETCODE dbpoll(DBPROCESS * dbproc, long milliseconds, DBPROCESS **\n+ready_dbproc, int *return_reason);\n+ 650int dbordercol(DBPROCESS * dbprocess, int order);\n+ 651\n+ 652RETCODE dbregdrop(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n+namelen);\n+ 653RETCODE dbregexec(DBPROCESS * dbproc, DBUSMALLINT options);\n+ 654RETCODE dbreghandle(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n+namelen, INTFUNCPTR handler);\n+ 655RETCODE dbreginit(DBPROCESS * dbproc, DBCHAR * procedure_name, DBSMALLINT\n+namelen);\n+ 656RETCODE dbreglist(DBPROCESS * dbproc);\n+ 657RETCODE dbregnowatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n+namelen);\n+ 658RETCODE dbregparam(DBPROCESS * dbproc, char *param_name, int type, DBINT\n+datalen, BYTE * data);\n+ 659RETCODE dbregwatch(DBPROCESS * dbprocess, DBCHAR * procnm, DBSMALLINT\n+namelen, DBUSMALLINT options);\n+ 660RETCODE dbregwatchlist(DBPROCESS * dbprocess);\n+ 661\n+ 662void dbrpwclr(LOGINREC * login);\n+ 663RETCODE dbrpwset(LOGINREC * login, char *srvname, char *password, int\n+pwlen);\n+ 664\n+ 665DBINT dbreadpage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno, BYTE\n+* buf);\n+ 666RETCODE dbwritepage(DBPROCESS * dbprocess, char *p_dbname, DBINT pageno,\n+DBINT size, BYTE * buf);\n+ 667\n+ 668RETCODE dbsetdeflang(char *language);\n+ 669\n+ 670int dbstrcmp(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2,\n+DBSORTORDER * sort);\n+ 671int dbstrsort(DBPROCESS * dbprocess, char *s1, int l1, char *s2, int l2,\n+DBSORTORDER * sort);\n+ 672\n+ 673DBBOOL dbtabbrowse(DBPROCESS * dbprocess, int tabnum);\n+ 674int dbtabcount(DBPROCESS * dbprocess);\n+ 675char *dbtabname(DBPROCESS * dbprocess, int tabnum);\n+ 676char *dbtabsource(DBPROCESS * dbprocess, int colnum, int *tabnum);\n+ 677\n+ 678RETCODE dbsendpassthru(DBPROCESS * dbprocess, DBVOIDPTR bufp);\n+ 679RETCODE dbrecvpassthru(DBPROCESS * dbprocess, DBVOIDPTR * bufp);\n 680\n- 681typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT *\n-srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,\n- 682 CS_INT * destlen);\n+ 681RETCODE dbgetloginfo(DBPROCESS * dbprocess, DBLOGINFO ** loginfo);\n+ 682RETCODE dbsetloginfo(LOGINREC * loginrec, DBLOGINFO * loginfo);\n 683\n-684typedef struct _cs_objname\n- 685{\n- 686 CS_BOOL thinkexists;\n- 687 CS_INT object_type;\n- 688 CS_CHAR last_name[CS_MAX_NAME];\n- 689 CS_INT lnlen;\n- 690 CS_CHAR first_name[CS_MAX_NAME];\n- 691 CS_INT fnlen;\n- 692 CS_VOID *scope;\n- 693 CS_INT scopelen;\n- 694 CS_VOID *thread;\n- 695 CS_INT threadlen;\n- 696} CS_OBJNAME;\n- 697\n-698typedef struct _cs_objdata\n- 699{\n- 700 CS_BOOL actuallyexists;\n- 701 CS_CONNECTION *connection;\n- 702 CS_COMMAND *command;\n- 703 CS_VOID *buffer;\n- 704 CS_INT buflen;\n- 705} CS_OBJDATA;\n+ 684int dbtsnewlen(DBPROCESS * dbprocess);\n+ 685DBBINARY *dbtsnewval(DBPROCESS * dbprocess);\n+ 686RETCODE dbtsput(DBPROCESS * dbprocess, DBBINARY * newts, int newtslen, int\n+tabnum, char *tabname);\n+ 687\n+ 688RETCODE dbfree_xlate(DBPROCESS * dbprocess, DBXLATE * xlt_tosrv, DBXLATE *\n+clt_todisp);\n+ 689int dbxlate(DBPROCESS * dbprocess, char *src, int srclen, char *dest, int\n+destlen, DBXLATE * xlt, int *srcbytes_used,\n+ 690 DBBOOL srcend, int status);\n+ 691\n+ 692RETCODE bcp_moretext(DBPROCESS * dbproc, DBINT size, BYTE * text);\n+ 693RETCODE bcp_writefmt(DBPROCESS * dbproc, const char filename[]);\n+ 694\n+ 695void build_xact_string(char *xact_name, char *service_name, DBINT commid,\n+char *result);\n+ 696RETCODE remove_xact(DBPROCESS * connect, DBINT commid, int n);\n+ 697RETCODE abort_xact(DBPROCESS * connect, DBINT commid);\n+ 698void close_commit(DBPROCESS * connect);\n+ 699RETCODE commit_xact(DBPROCESS * connect, DBINT commid);\n+ 700DBPROCESS *open_commit(LOGINREC * login, char *servername);\n+ 701RETCODE scan_xact(DBPROCESS * connect, DBINT commid);\n+ 702DBINT start_xact(DBPROCESS * connect, char *application_name, char\n+*xact_name, int site_count);\n+ 703DBINT stat_xact(DBPROCESS * connect, DBINT commid);\n+ 704\n+ 705#endif /* define unimplemented */\n 706\n- 707/* Eventually, these should be in terms of TDS values */\n- 708enum\n- 709{\n- 710 CS_OPT_MONDAY = 1,\n- 711 CS_OPT_TUESDAY,\n- 712 CS_OPT_WEDNESDAY,\n- 713 CS_OPT_THURSDAY,\n- 714 CS_OPT_FRIDAY,\n- 715 CS_OPT_SATURDAY,\n- 716 CS_OPT_SUNDAY\n- 717};\n- 718enum\n- 719{\n- 720 CS_OPT_FMTMDY = 1,\n- 721 CS_OPT_FMTDMY,\n- 722 CS_OPT_FMTYMD,\n- 723 CS_OPT_FMTYDM,\n- 724 CS_OPT_FMTMYD,\n- 725 CS_OPT_FMTDYM\n- 726};\n- 727enum\n- 728{\n- 729 CS_OPT_LEVEL0 = 0,\n- 730 CS_OPT_LEVEL1,\n- 731 CS_OPT_LEVEL2,\n- 732 CS_OPT_LEVEL3\n- 733};\n- 734\n- 735#define CS_FALSE 0\n- 736#define CS_TRUE 1\n- 737\n- 738#define SRV_PROC CS_VOID\n- 739\n- 740/* constants required for ct_diag (not jet implemented) */\n- 741#define CS_CLIENTMSG_TYPE 4700\n- 742#define CS_SERVERMSG_TYPE 4701\n- 743#define CS_ALLMSG_TYPE 4702\n- 744\n- 745CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID *\n-srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,\n- 746 CS_INT * resultlen);\n- 747CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);\n- 748CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);\n- 749CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);\n- 750CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property,\n-CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);\n- 751CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen,\n-CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,\n- 752 CS_CHAR * formats, CS_INT formatlen, ...);\n- 753#undef cs_dt_crack\n- 754CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID *\n-dateval, CS_DATEREC * daterec);\n- 755CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID *\n-dateval, CS_DATEREC * daterec);\n- 756#define cs_dt_crack cs_dt_crack_v2\n- 757CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);\n- 758CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);\n- 759CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale,\n-CS_INT type, CS_VOID * buffer, CS_INT buflen,\n- 760 CS_INT * outlen);\n- 761CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale,\n-CS_INT type, CS_INT item, CS_VOID * buffer,\n- 762 CS_INT buflen, CS_INT * outlen);\n- 763\n- 764CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID *\n-var1, CS_VOID * var2, CS_VOID * dest);\n- 765CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1,\n-CS_VOID * var2, CS_INT * result);\n- 766CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE *\n-destloc, CS_INT * conv_multiplier);\n- 767CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT\n-idx, CS_VOID * buffer);\n- 768CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT\n-srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,\n- 769 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier,\n-CS_CONV_FUNC * func);\n- 770CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME *\n-objname, CS_OBJDATA * objdata);\n- 771CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype,\n-CS_INT desttype, CS_CONV_FUNC * func);\n- 772CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID *\n-buffer, CS_INT buflen);\n- 773CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type,\n-CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,\n- 774 CS_INT * result);\n- 775CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer,\n-CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);\n- 776CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT\n-desttype, CS_BOOL * result);\n- 777\n- 778const char * cs_prretcode(int retcode);\n- 779\n- 780#ifdef __cplusplus\n- 781#if 0\n- 782{\n- 783#endif\n- 784}\n- 785#endif\n+ 707BYTE *dbadata(DBPROCESS * dbproc, int computeid, int column);\n+ 708DBINT dbadlen(DBPROCESS * dbproc, int computeid, int column);\n+ 709RETCODE dbaltbind(DBPROCESS * dbprocess, int computeid, int column, int\n+vartype, DBINT varlen, BYTE * varaddr);\n+ 710RETCODE dbaltbind_ps(DBPROCESS * dbprocess, int computeid, int column, int\n+vartype, DBINT varlen, BYTE * varaddr,\n+ 711 DBTYPEINFO * typeinfo);\n+ 712int dbaltcolid(DBPROCESS * dbproc, int computeid, int column);\n+ 713DBINT dbaltlen(DBPROCESS * dbproc, int computeid, int column);\n+ 714int dbaltop(DBPROCESS * dbproc, int computeid, int column);\n+ 715int dbalttype(DBPROCESS * dbproc, int computeid, int column);\n+ 716DBINT dbaltutype(DBPROCESS * dbproc, int computeid, int column);\n+ 717RETCODE dbanullbind(DBPROCESS * dbprocess, int computeid, int column, DBINT\n+* indicator);\n+ 718RETCODE dbbind(DBPROCESS * dbproc, int column, int vartype, DBINT varlen,\n+BYTE * varaddr);\n+ 719RETCODE dbbind_ps(DBPROCESS * dbprocess, int column, int vartype, DBINT\n+varlen, BYTE * varaddr, DBTYPEINFO * typeinfo);\n+ 720int dbbufsize(DBPROCESS * dbprocess);\n+ 721BYTE *dbbylist(DBPROCESS * dbproc, int computeid, int *size);\n+ 722RETCODE dbcancel(DBPROCESS * dbproc);\n+ 723RETCODE dbcanquery(DBPROCESS * dbproc);\n+ 724char *dbchange(DBPROCESS * dbprocess);\n+ 725DBBOOL dbcharsetconv(DBPROCESS * dbprocess);\n+ 726void dbclose(DBPROCESS * dbproc);\n+ 727void dbclrbuf(DBPROCESS * dbproc, DBINT n);\n+ 728RETCODE dbclropt(DBPROCESS * dbproc, int option, const char param[]);\n+ 729RETCODE dbcmd(DBPROCESS * dbproc, const char cmdstring[]);\n+ 730RETCODE dbcmdrow(DBPROCESS * dbproc);\n+ 731\n+ 732#define DBCMDROW(x) dbcmdrow((x))\n+ 733RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol );\n+ 734RETCODE dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT\n+computeid, DBCOL *pdbcol);\n+ 735DBINT dbcollen(DBPROCESS * dbproc, int column);\n+ 736char *dbcolname(DBPROCESS * dbproc, int column);\n+ 737const char *dbacolname(DBPROCESS * dbproc, int computeid, int column);\n+ 738char *dbcolsource(DBPROCESS * dbproc, int colnum);\n+ 739int dbcoltype(DBPROCESS * dbproc, int column);\n+ 740DBTYPEINFO *dbcoltypeinfo(DBPROCESS * dbproc, int column);\n+ 741DBINT dbcolutype(DBPROCESS * dbprocess, int column);\n+ 742DBINT dbconvert(DBPROCESS * dbproc, int srctype, const BYTE * src, DBINT\n+srclen, int desttype, BYTE * dest, DBINT destlen);\n+ 743DBINT dbconvert_ps(DBPROCESS * dbprocess, int srctype, const BYTE * src,\n+DBINT srclen, int desttype, BYTE * dest, DBINT destlen,\n+ 744 DBTYPEINFO * typeinfo);\n+ 745BOOL dbiscount(DBPROCESS * dbproc);\n+ 746DBINT dbcount(DBPROCESS * dbproc);\n+ 747\n+ 748#define DBCOUNT(x) dbcount((x))\n+ 749int dbcurcmd(DBPROCESS * dbproc);\n+ 750\n+ 751#define DBCURCMD(x) dbcurcmd((x))\n+ 752DBINT dbcurrow(DBPROCESS * dbproc);\n+ 753\n+ 754#define DBCURROW(x) dbcurrow((x))\n+ 755BYTE *dbdata(DBPROCESS * dbproc, int column);\n+ 756int dbdatecmp(DBPROCESS * dbproc, DBDATETIME * d1, DBDATETIME * d2);\n+ 757RETCODE dbdatecrack(DBPROCESS * dbproc, DBDATEREC * di, DBDATETIME * dt);\n+ 758RETCODE dbanydatecrack(DBPROCESS * dbproc, DBDATEREC2 * di, int type, const\n+void *data);\n+ 759DBINT dbdatlen(DBPROCESS * dbproc, int column);\n+ 760DBBOOL dbdead(DBPROCESS * dbproc);\n+ 761\n+ 762#define DBDEAD(x) dbdead((x))\n+ 763EHANDLEFUNC dberrhandle(EHANDLEFUNC handler);\n+ 764void dbexit(void);\n+ 765RETCODE dbfcmd(DBPROCESS * dbproc, const char *fmt, ...);\n+ 766DBINT dbfirstrow(DBPROCESS * dbproc);\n+ 767\n+ 768#define DBFIRSTROW(x) dbfirstrow((x))\n+ 769void dbfreebuf(DBPROCESS * dbproc);\n+ 770char *dbgetchar(DBPROCESS * dbprocess, int n);\n+ 771char *dbgetcharset(DBPROCESS * dbprocess);\n+ 772int dbgetlusername(LOGINREC * login, BYTE * name_buffer, int buffer_len);\n+ 773int dbgetmaxprocs(void);\n+ 774char *dbgetnatlanf(DBPROCESS * dbprocess);\n+ 775int dbgetpacket(DBPROCESS * dbproc);\n+ 776RETCODE dbgetrow(DBPROCESS * dbproc, DBINT row);\n+ 777int dbgettime(void);\n+ 778#define DBGETTIME dbgettime\n+ 779BYTE *dbgetuserdata(DBPROCESS * dbproc);\n+ 780DBBOOL dbhasretstat(DBPROCESS * dbproc);\n+ 781RETCODE dbinit(void);\n+ 782int dbiordesc(DBPROCESS * dbproc);\n+ 783\n+ 784#define DBIORDESC(x) dbiordesc((x))\n+ 785int dbiowdesc(DBPROCESS * dbproc);\n 786\n- 787#endif\n-_cs_objname\n-Definition cspublic.h:685\n-_cs_objdata\n-Definition cspublic.h:699\n-_cs_datafmt\n-Definition cstypes.h:114\n-_cs_daterec\n-Definition cstypes.h:159\n-_cs_clientmsg\n-Definition cstypes.h:177\n-_cs_servermsg\n-Definition cstypes.h:191\n-_cs_context\n-Definition ctlib.h:75\n-_cs_connection\n-Definition ctlib.h:117\n-_cs_command\n-Definition ctlib.h:212\n-_cs_blkdesc\n-Definition ctlib.h:239\n-_cs_locale\n-Definition ctlib.h:248\n+ 787#define DBIOWDESC(x) dbiowdesc((x))\n+ 788DBBOOL dbisavail(DBPROCESS * dbprocess);\n+ 789\n+ 790#define DBISAVAIL(x) dbisavail((x))\n+ 791DBBOOL dbisopt(DBPROCESS * dbproc, int option, const char param[]);\n+ 792DBINT dblastrow(DBPROCESS * dbproc);\n+ 793\n+ 794#define DBLASTROW(x) dblastrow((x))\n+ 795LOGINREC *dblogin(void);\n+ 796void dbloginfree(LOGINREC * login);\n+ 797\n+ 798int dbmny4cmp(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2);\n+ 799int dbmnycmp(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2);\n+ 800\n+ 801RETCODE dbmny4add(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n+DBMONEY4 * sum);\n+ 802RETCODE dbmnydec(DBPROCESS * dbproc, DBMONEY * mnyptr);\n+ 803RETCODE dbmnyinc(DBPROCESS * dbproc, DBMONEY * mnyptr);\n+ 804RETCODE dbmnymaxpos(DBPROCESS * dbproc, DBMONEY * dest);\n+ 805RETCODE dbmnymaxneg(DBPROCESS * dbproc, DBMONEY * dest);\n+ 806RETCODE dbmny4minus(DBPROCESS * dbproc, DBMONEY4 * src, DBMONEY4 * dest);\n+ 807RETCODE dbmnyminus(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);\n+ 808RETCODE dbmny4sub(DBPROCESS * dbproc, DBMONEY4 * m1, DBMONEY4 * m2,\n+DBMONEY4 * diff);\n+ 809RETCODE dbmnysub(DBPROCESS * dbproc, DBMONEY * m1, DBMONEY * m2, DBMONEY *\n+diff);\n+ 810\n+ 811RETCODE dbmny4copy(DBPROCESS * dbprocess, DBMONEY4 * m1, DBMONEY4 * m2);\n+ 812RETCODE dbmnycopy(DBPROCESS * dbproc, DBMONEY * src, DBMONEY * dest);\n+ 813\n+ 814RETCODE dbmny4zero(DBPROCESS * dbproc, DBMONEY4 * dest);\n+ 815RETCODE dbmnyzero(DBPROCESS * dbproc, DBMONEY * dest);\n+ 816\n+ 817const char *dbmonthname(DBPROCESS * dbproc, char *language, int monthnum,\n+DBBOOL shortform);\n+ 818RETCODE dbmorecmds(DBPROCESS * dbproc);\n+ 819\n+ 820#define DBMORECMDS(x) dbmorecmds((x))\n+ 821RETCODE dbmoretext(DBPROCESS * dbproc, DBINT size, const BYTE text[]);\n+ 822MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler);\n+ 823char *dbname(DBPROCESS * dbproc);\n+ 824STATUS dbnextrow(DBPROCESS * dbproc);\n+ 825RETCODE dbnullbind(DBPROCESS * dbproc, int column, DBINT * indicator);\n+ 826int dbnumalts(DBPROCESS * dbproc, int computeid);\n+ 827int dbnumcols(DBPROCESS * dbproc);\n+ 828int dbnumcompute(DBPROCESS * dbprocess);\n+ 829int dbnumrets(DBPROCESS * dbproc);\n+ 830DBPROCESS *tdsdbopen(LOGINREC * login, const char *server, int msdblib);\n+ 831DBPROCESS *dbopen(LOGINREC * login, const char *server);\n+ 832\n+ 833/* pivot functions */\n+ 834struct col_t;\n+ 835void dbpivot_count (struct col_t *output, const struct col_t *input);\n+ 836void dbpivot_sum (struct col_t *output, const struct col_t *input);\n+ 837void dbpivot_min (struct col_t *output, const struct col_t *input);\n+ 838void dbpivot_max (struct col_t *output, const struct col_t *input);\n+ 839\n+ 840struct pivot_t;\n+ 841typedef void (*DBPIVOT_FUNC)(struct col_t *output, const struct col_t\n+*input);\n+ 842struct pivot_t * dbrows_pivoted(DBPROCESS *dbproc);\n+ 843STATUS dbnextrow_pivoted(DBPROCESS *dbproc, struct pivot_t *pp);\n+ 844RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int\n+*cols, DBPIVOT_FUNC func, int val);\n+ 845\n+ 846DBPIVOT_FUNC dbpivot_lookup_name( const char name[] );\n+ 847\n+ 848#ifdef MSDBLIB\n+ 849#define dbopen(x,y) tdsdbopen((x),(y), 1)\n+ 850#else\n+ 851#define dbopen(x,y) tdsdbopen((x),(y), 0)\n+ 852#endif\n+ 853\n+ 854/* fix PHP problem */\n+ 855#ifdef PHP_SYBASE_DBOPEN\n+ 856#undef PHP_SYBASE_DBOPEN\n+ 857#define PHP_SYBASE_DBOPEN dbopen\n+ 858#endif\n+ 859\n+ 860void dbprhead(DBPROCESS * dbproc);\n+ 861DBINT dbprcollen(DBPROCESS * dbproc, int column);\n+ 862RETCODE dbprrow(DBPROCESS * dbproc);\n+ 863const char *dbprtype(int token);\n+ 864DBBOOL DRBUF(DBPROCESS * dbprocess);\n+ 865STATUS dbreadtext(DBPROCESS * dbproc, void *buf, DBINT bufsize);\n+ 866void dbrecftos(const char filename[]);\n+ 867RETCODE dbresults(DBPROCESS * dbproc);\n+ 868RETCODE dbresults_r(DBPROCESS * dbproc, int recursive);\n+ 869BYTE *dbretdata(DBPROCESS * dbproc, int retnum);\n+ 870int dbretlen(DBPROCESS * dbproc, int retnum);\n+ 871char *dbretname(DBPROCESS * dbproc, int retnum);\n+ 872DBINT dbretstatus(DBPROCESS * dbproc);\n+ 873int dbrettype(DBPROCESS * dbproc, int retnum);\n+ 874RETCODE dbrows(DBPROCESS * dbproc);\n+ 875\n+ 876#define DBROWS(x) dbrows((x))\n+ 877STATUS dbrowtype(DBPROCESS * dbprocess);\n+ 878\n+ 879#define DBROWTYPE(x) dbrowtype((x))\n+ 880RETCODE dbrpcinit(DBPROCESS * dbproc, const char rpcname[], DBSMALLINT\n+options);\n+ 881RETCODE dbrpcparam(DBPROCESS * dbproc, const char paramname[], BYTE status,\n+int type, DBINT maxlen, DBINT datalen, BYTE * value);\n+ 882RETCODE dbrpcsend(DBPROCESS * dbproc);\n+ 883RETCODE dbsafestr(DBPROCESS * dbproc, const char *src, DBINT srclen, char\n+*dest, DBINT destlen, int quotetype);\n+ 884RETCODE *dbsechandle(DBINT type, INTFUNCPTR handler);\n+ 885char *dbservcharset(DBPROCESS * dbprocess);\n+ 886void dbsetavail(DBPROCESS * dbprocess);\n+ 887void dbsetbusy(DBPROCESS * dbprocess, DB_DBBUSY_FUNC busyfunc);\n+ 888RETCODE dbsetdefcharset(char *charset);\n+ 889void dbsetidle(DBPROCESS * dbprocess, DB_DBIDLE_FUNC idlefunc);\n+ 890void dbsetifile(char *filename);\n+ 891void dbsetinterrupt(DBPROCESS * dbproc, DB_DBCHKINTR_FUNC chkintr,\n+DB_DBHNDLINTR_FUNC hndlintr);\n+ 892RETCODE dbsetlogintime(int seconds);\n+ 893RETCODE dbsetmaxprocs(int maxprocs);\n+ 894RETCODE dbsetnull(DBPROCESS * dbprocess, int bindtype, int bindlen, BYTE *\n+bindval);\n+ 895RETCODE dbsetopt(DBPROCESS * dbproc, int option, const char *char_param,\n+int int_param);\n+ 896STATUS dbsetrow(DBPROCESS * dbprocess, DBINT row);\n+ 897RETCODE dbsettime(int seconds);\n+ 898void dbsetuserdata(DBPROCESS * dbproc, BYTE * ptr);\n+ 899RETCODE dbsetversion(DBINT version);\n+ 900\n+ 901int dbspid(DBPROCESS * dbproc);\n+ 902RETCODE dbspr1row(DBPROCESS * dbproc, char *buffer, DBINT buf_len);\n+ 903DBINT dbspr1rowlen(DBPROCESS * dbproc);\n+ 904RETCODE dbsprhead(DBPROCESS * dbproc, char *buffer, DBINT buf_len);\n+ 905RETCODE dbsprline(DBPROCESS * dbproc, char *buffer, DBINT buf_len, DBCHAR\n+line_char);\n+ 906RETCODE dbsqlexec(DBPROCESS * dbproc);\n+ 907RETCODE dbsqlok(DBPROCESS * dbproc);\n+ 908RETCODE dbsqlsend(DBPROCESS * dbproc);\n+ 909int dbstrbuild(DBPROCESS * dbproc, char *charbuf, int bufsize, char *text,\n+char *formats, ...);\n+ 910RETCODE dbstrcpy(DBPROCESS * dbproc, int start, int numbytes, char *dest);\n+ 911int dbstrlen(DBPROCESS * dbproc);\n+ 912DBINT dbvarylen(DBPROCESS * dbproc, int column);\n+ 913\n+ 914#define SYBEVERDOWN 100 /* TDS version downgraded . */\n+ 915#define SYBEICONVIU 2400 /* Some character(s) could not be converted into\n+client's character set. */\n+ 916#define SYBEICONVAVAIL 2401 /* Character set conversion is not available\n+between client character set '%.*s' and server character set '%.*s'.*/\n+ 917#define SYBEICONVO 2402 /* Error converting characters into server's\n+character set. Some character(s) could not be converted.*/\n+ 918#define SYBEICONVI 2403 /* Some character(s) could not be converted into\n+client's character set. Unconverted bytes were changed to question marks\n+('?').*/\n+ 919#define SYBEICONV2BIG 2404 /* Buffer overflow converting characters from\n+client into server's character set.*/\n+ 920 /* cf. doc/dblib_errors.txt for more iconv error values. */\n+ 921 /* Reserve a few slots for other iconv-related issues. */\n+ 922#define SYBETDSVER 2410 /* Cannot bcp with TDSVER < 5.0 */\n+ 923#define SYBEPORT 2500 /* Both port and instance specified */\n+ 924#define SYBESYNC 20001 /* Read attempted while out of synchronization with\n+SQL Server. */\n+ 925#define SYBEFCON 20002 /* SQL Server connection failed. */\n+ 926#define SYBETIME 20003 /* SQL Server connection timed out. */\n+ 927#define SYBEREAD 20004 /* Read from SQL Server failed. */\n+ 928#define SYBEBUFL 20005 /* DB-LIBRARY internal error - send buffer length\n+corrupted. */\n+ 929#define SYBEWRIT 20006 /* Write to SQL Server failed. */\n+ 930#define SYBEVMS 20007 /* Sendflush: VMS I/O error. */\n+ 931#define SYBESOCK 20008 /* Unable to open socket */\n+ 932#define SYBECONN 20009 /* Unable to connect socket -- SQL Server is\n+unavailable or does not exist. */\n+ 933#define SYBEMEM 20010 /* Unable to allocate sufficient memory */\n+ 934#define SYBEDBPS 20011 /* Maximum number of DBPROCESSes already allocated.\n+*/\n+ 935#define SYBEINTF 20012 /* Server name not found in interface file */\n+ 936#define SYBEUHST 20013 /* Unknown host machine name */\n+ 937#define SYBEPWD 20014 /* Incorrect password. */\n+ 938#define SYBEOPIN 20015 /* Could not open interface file. */\n+ 939#define SYBEINLN 20016 /* Interface file: unexpected end-of-line. */\n+ 940#define SYBESEOF 20017 /* Unexpected EOF from SQL Server. */\n+ 941#define SYBESMSG 20018 /* General SQL Server error: Check messages from the\n+SQL Server. */\n+ 942#define SYBERPND 20019 /* Attempt to initiate a new SQL Server operation\n+with results pending. */\n+ 943#define SYBEBTOK 20020 /* Bad token from SQL Server: Data-stream processing\n+out of sync. */\n+ 944#define SYBEITIM 20021 /* Illegal timeout value specified. */\n+ 945#define SYBEOOB 20022 /* Error in sending out-of-band data to SQL Server.\n+*/\n+ 946#define SYBEBTYP 20023 /* Unknown bind type passed to DB-LIBRARY function.\n+*/\n+ 947#define SYBEBNCR 20024 /* Attempt to bind user variable to a non-existent\n+compute row. */\n+ 948#define SYBEIICL 20025 /* Illegal integer column length returned by SQL\n+Server. Legal integer lengths are 1, 2, and 4 bytes. */\n+ 949#define SYBECNOR 20026 /* Column number out of range. */\n+ 950#define SYBENPRM 20027 /* NULL parameter not allowed for this dboption. */\n+ 951#define SYBEUVDT 20028 /* Unknown variable-length datatype encountered. */\n+ 952#define SYBEUFDT 20029 /* Unknown fixed-length datatype encountered. */\n+ 953#define SYBEWAID 20030 /* DB-LIBRARY internal error: ALTFMT following\n+ALTNAME has wrong id. */\n+ 954#define SYBECDNS 20031 /* Datastream indicates that a compute column is\n+derived from a non-existent select-list member. */\n+ 955#define SYBEABNC 20032 /* Attempt to bind to a non-existent column. */\n+ 956#define SYBEABMT 20033 /* User attempted a dbbind() with mismatched column\n+and variable types. */\n+ 957#define SYBEABNP 20034 /* Attempt to bind using NULL pointers. */\n+ 958#define SYBEAAMT 20035 /* User attempted a dbaltbind() with mismatched\n+column and variable types. */\n+ 959#define SYBENXID 20036 /* The Server did not grant us a distributed-\n+transaction ID. */\n+ 960#define SYBERXID 20037 /* The Server did not recognize our distributed-\n+transaction ID. */\n+ 961#define SYBEICN 20038 /* Invalid computeid or compute column number. */\n+ 962#define SYBENMOB 20039 /* No such member of 'order by' clause. */\n+ 963#define SYBEAPUT 20040 /* Attempt to print unknown token. */\n+ 964#define SYBEASNL 20041 /* Attempt to set fields in a null loginrec. */\n+ 965#define SYBENTLL 20042 /* Name too long for loginrec field. */\n+ 966#define SYBEASUL 20043 /* Attempt to set unknown loginrec field. */\n+ 967#define SYBERDNR 20044 /* Attempt to retrieve data from a non-existent row.\n+*/\n+ 968#define SYBENSIP 20045 /* Negative starting index passed to dbstrcpy(). */\n+ 969#define SYBEABNV 20046 /* Attempt to bind to a NULL program variable. */\n+ 970#define SYBEDDNE 20047 /* DBPROCESS is dead or not enabled. */\n+ 971#define SYBECUFL 20048 /* Data-conversion resulted in underflow. */\n+ 972#define SYBECOFL 20049 /* Data-conversion resulted in overflow. */\n+ 973#define SYBECSYN 20050 /* Attempt to convert data stopped by syntax error\n+in source field. */\n+ 974#define SYBECLPR 20051 /* Data-conversion resulted in loss of precision. */\n+ 975#define SYBECNOV 20052 /* Attempt to set variable to NULL resulted in\n+overflow. */\n+ 976#define SYBERDCN 20053 /* Requested data-conversion does not exist. */\n+ 977#define SYBESFOV 20054 /* dbsafestr() overflowed its destination buffer. */\n+ 978#define SYBEUNT 20055 /* Unknown network type found in interface file. */\n+ 979#define SYBECLOS 20056 /* Error in closing network connection. */\n+ 980#define SYBEUAVE 20057 /* Unable to allocate VMS event flag. */\n+ 981#define SYBEUSCT 20058 /* Unable to set communications timer. */\n+ 982#define SYBEEQVA 20059 /* Error in queueing VMS AST routine. */\n+ 983#define SYBEUDTY 20060 /* Unknown datatype encountered. */\n+ 984#define SYBETSIT 20061 /* Attempt to call dbtsput() with an invalid\n+timestamp. */\n+ 985#define SYBEAUTN 20062 /* Attempt to update the timestamp of a table which\n+has no timestamp column. */\n+ 986#define SYBEBDIO 20063 /* Bad bulk-copy direction. Must be either IN or\n+OUT. */\n+ 987#define SYBEBCNT 20064 /* Attempt to use Bulk Copy with a non-existent\n+Server table. */\n+ 988#define SYBEIFNB 20065 /* Illegal field number passed to bcp_control(). */\n+ 989#define SYBETTS 20066 /* The table which bulk-copy is attempting to copy to\n+a host-file is shorter than the number of rows which bulk-copy was instructed\n+to skip. */\n+ 990#define SYBEKBCO 20067 /* 1000 rows successfully bulk-copied to host-file.\n+*/\n+ 991#define SYBEBBCI 20068 /* Batch successfully bulk-copied to SQL Server. */\n+ 992#define SYBEKBCI 20069 /* Bcp: 1000 rows sent to SQL Server. */\n+ 993#define SYBEBCRE 20070 /* I/O error while reading bcp data-file. */\n+ 994#define SYBETPTN 20071 /* Syntax error: only two periods are permitted in\n+table names. */\n+ 995#define SYBEBCWE 20072 /* I/O error while writing bcp data-file. */\n+ 996#define SYBEBCNN 20073 /* Attempt to bulk-copy a NULL value into Server\n+column %d, which does not accept NULL values. */\n+ 997#define SYBEBCOR 20074 /* Attempt to bulk-copy an oversized row to the SQL\n+Server. */\n+ 998#define SYBEBCIS 20075 /* Attempt to bulk-copy an illegally-sized column\n+value to the SQL Server. */\n+ 999#define SYBEBCPI 20076 /* bcp_init() must be called before any other bcp\n+routines. */\n+ 1000#define SYBEBCPN 20077 /* bcp_bind(), bcp_collen(), bcp_colptr(),\n+bcp_moretext() and bcp_sendrow() may be used only after bcp_init() has been\n+called with the copy direction set to DB_IN. */\n+ 1001#define SYBEBCPB 20078 /* bcp_bind(), bcp_moretext() and bcp_sendrow() may\n+NOT be used after bcp_init() has been passed a non-NULL input file name. */\n+ 1002#define SYBEVDPT 20079 /* For bulk copy, all variable-length data must\n+have either a length-prefix or a terminator specified. */\n+ 1003#define SYBEBIVI 20080 /* bcp_columns(), bcp_colfmt() and bcp_colfmt_ps()\n+may be used only after bcp_init() has been passed a valid input file. */\n+ 1004#define SYBEBCBC 20081 /* bcp_columns() must be called before bcp_colfmt()\n+and bcp_colfmt_ps(). */\n+ 1005#define SYBEBCFO 20082 /* Bcp host-files must contain at least one column.\n+*/\n+ 1006#define SYBEBCVH 20083 /* bcp_exec() may be called only after bcp_init()\n+has been passed a valid host file. */\n+ 1007#define SYBEBCUO 20084 /* Bcp: Unable to open host data-file. */\n+ 1008#define SYBEBCUC 20085 /* Bcp: Unable to close host data-file. */\n+ 1009#define SYBEBUOE 20086 /* Bcp: Unable to open error-file. */\n+ 1010#define SYBEBUCE 20087 /* Bcp: Unable to close error-file. */\n+ 1011#define SYBEBWEF 20088 /* I/O error while writing bcp error-file. */\n+ 1012#define SYBEASTF 20089 /* VMS: Unable to setmode for control_c ast. */\n+ 1013#define SYBEUACS 20090 /* VMS: Unable to assign channel to sys$command. */\n+ 1014#define SYBEASEC 20091 /* Attempt to send an empty command buffer to the\n+SQL Server. */\n+ 1015#define SYBETMTD 20092 /* Attempt to send too much TEXT data via the\n+dbmoretext() call. */\n+ 1016#define SYBENTTN 20093 /* Attempt to use dbtxtsput() to put a new text-\n+timestamp into a non-existent data row. */\n+ 1017#define SYBEDNTI 20094 /* Attempt to use dbtxtsput() to put a new text-\n+timestamp into a column whose datatype is neither SYBTEXT nor SYBIMAGE. */\n+ 1018#define SYBEBTMT 20095 /* Attempt to send too much TEXT data via the\n+bcp_moretext() call. */\n+ 1019#define SYBEORPF 20096 /* Attempt to set remote password would overflow\n+the login-record's remote-password field. */\n+ 1020#define SYBEUVBF 20097 /* Attempt to read an unknown version of BCP\n+format-file. */\n+ 1021#define SYBEBUOF 20098 /* Bcp: Unable to open format-file. */\n+ 1022#define SYBEBUCF 20099 /* Bcp: Unable to close format-file. */\n+ 1023#define SYBEBRFF 20100 /* I/O error while reading bcp format-file. */\n+ 1024#define SYBEBWFF 20101 /* I/O error while writing bcp format-file. */\n+ 1025#define SYBEBUDF 20102 /* Bcp: Unrecognized datatype found in format-file.\n+*/\n+ 1026#define SYBEBIHC 20103 /* Incorrect host-column number found in bcp\n+format-file. */\n+ 1027#define SYBEBEOF 20104 /* Unexpected EOF encountered in BCP data-file. */\n+ 1028#define SYBEBCNL 20105 /* Negative length-prefix found in BCP data-file.\n+*/\n+ 1029#define SYBEBCSI 20106 /* Host-file columns may be skipped only when\n+copying INto the Server. */\n+ 1030#define SYBEBCIT 20107 /* It's illegal to use BCP terminators with program\n+variables other than SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE. */\n+ 1031#define SYBEBCSA 20108 /* The BCP hostfile '%s' contains only %ld rows.\n+Skipping all of these rows is not allowed. */\n+ 1032#define SYBENULL 20109 /* NULL DBPROCESS pointer passed to DB-Library. */\n+ 1033#define SYBEUNAM 20110 /* Unable to get current username from operating\n+system. */\n+ 1034#define SYBEBCRO 20111 /* The BCP hostfile '%s' contains only %ld rows. It\n+was impossible to read the requested %ld rows. */\n+ 1035#define SYBEMPLL 20112 /* Attempt to set maximum number of DBPROCESSes\n+lower than 1. */\n+ 1036#define SYBERPIL 20113 /* It is illegal to pass -1 to dbrpcparam() for the\n+datalen of parameters which are of type SYBCHAR, SYBVARCHAR, SYBBINARY, or\n+SYBVARBINARY. */\n+ 1037#define SYBERPUL 20114 /* When passing a SYBINTN, SYBDATETIMN, SYBMONEYN,\n+or SYBFLTN parameter via dbrpcparam(), it's necessary to specify the\n+parameter's maximum or actual length, so that DB-Library can recognize it as a\n+SYBINT1, SYBINT2, SYBINT4, SYBMONEY, or SYBMONEY4, etc. */\n+ 1038#define SYBEUNOP 20115 /* Unknown option passed to dbsetopt(). */\n+ 1039#define SYBECRNC 20116 /* The current row is not a result of compute\n+clause %d, so it is illegal to attempt to extract that data from this row. */\n+ 1040#define SYBERTCC 20117 /* dbreadtext() may not be used to receive the\n+results of a query which contains a COMPUTE clause. */\n+ 1041#define SYBERTSC 20118 /* dbreadtext() may only be used to receive the\n+results of a query which contains a single result column. */\n+ 1042#define SYBEUCRR 20119 /* Internal software error: Unknown connection\n+result reported by * dbpasswd(). */\n+ 1043#define SYBERPNA 20120 /* The RPC facility is available only when using a\n+SQL Server whose version number is 4.0 or greater. */\n+ 1044#define SYBEOPNA 20121 /* The text/image facility is available only when\n+using a SQL Server whose version number is 4.0 or greater. */\n+ 1045#define SYBEFGTL 20122 /* Bcp: Row number of the first row to be copied\n+cannot be greater than the row number for the last row to be copied. */\n+ 1046#define SYBECWLL 20123 /* Attempt to set column width less than 1. */\n+ 1047#define SYBEUFDS 20124 /* Unrecognized format encountered in dbstrbuild().\n+*/\n+ 1048#define SYBEUCPT 20125 /* Unrecognized custom-format parameter-type\n+encountered in dbstrbuild(). */\n+ 1049#define SYBETMCF 20126 /* Attempt to install too many custom formats via\n+dbfmtinstall(). */\n+ 1050#define SYBEAICF 20127 /* Error in attempting to install custom format. */\n+ 1051#define SYBEADST 20128 /* Error in attempting to determine the size of a\n+pair of translation tables. */\n+ 1052#define SYBEALTT 20129 /* Error in attempting to load a pair of\n+translation tables. */\n+ 1053#define SYBEAPCT 20130 /* Error in attempting to perform a character-set\n+translation. */\n+ 1054#define SYBEXOCI 20131 /* A character-set translation overflowed its\n+destination buffer while using bcp to copy data from a host-file to the SQL\n+Server. */\n+ 1055#define SYBEFSHD 20132 /* Error in attempting to find the Sybase home\n+directory. */\n+ 1056#define SYBEAOLF 20133 /* Error in attempting to open a localization file.\n+*/\n+ 1057#define SYBEARDI 20134 /* Error in attempting to read datetime information\n+from a localization file. */\n+ 1058#define SYBEURCI 20135 /* Unable to read copyright information from the\n+dblib localization file. */\n+ 1059#define SYBEARDL 20136 /* Error in attempting to read the dblib.loc\n+localization file. */\n+ 1060#define SYBEURMI 20137 /* Unable to read money-format information from the\n+dblib localization file. */\n+ 1061#define SYBEUREM 20138 /* Unable to read error mnemonic from the dblib\n+localization file. */\n+ 1062#define SYBEURES 20139 /* Unable to read error string from the dblib\n+localization file. */\n+ 1063#define SYBEUREI 20140 /* Unable to read error information from the dblib\n+localization file. */\n+ 1064#define SYBEOREN 20141 /* Warning: an out-of-range error-number was\n+encountered in dblib.loc. The maximum permissible error-number is defined as\n+DBERRCOUNT in sybdb.h. */\n+ 1065#define SYBEISOI 20142 /* Invalid sort-order information found. */\n+ 1066#define SYBEIDCL 20143 /* Illegal datetime column length returned by\n+DataServer. Legal datetime lengths are 4 and 8 bytes. */\n+ 1067#define SYBEIMCL 20144 /* Illegal money column length returned by\n+DataServer. Legal money lengths are 4 and 8 bytes. */\n+ 1068#define SYBEIFCL 20145 /* Illegal floating-point column length returned by\n+DataServer. Legal floating-point lengths are 4 and 8 bytes. */\n+ 1069#define SYBEUTDS 20146 /* Unrecognized TDS version received from SQL\n+Server. */\n+ 1070#define SYBEBUFF 20147 /* Bcp: Unable to create format-file. */\n+ 1071#define SYBEACNV 20148 /* Attemp to do conversion with NULL destination\n+variable. */\n+ 1072#define SYBEDPOR 20149 /* Out-of-range datepart constant. */\n+ 1073#define SYBENDC 20150 /* Cannot have negative component in date in numeric\n+form. */\n+ 1074#define SYBEMVOR 20151 /* Month values must be between 1 and 12. */\n+ 1075#define SYBEDVOR 20152 /* Day values must be between 1 and 7. */\n+ 1076#define SYBENBVP 20153 /* Cannot pass dbsetnull() a NULL bindval pointer.\n+*/\n+ 1077#define SYBESPID 20154 /* Called dbspid() with a NULL dbproc. */\n+ 1078#define SYBENDTP 20155 /* Called dbdatecrack() with a NULL datetime\n+parameter. */\n+ 1079#define SYBEXTN 20156 /* The xlt_todisp and xlt_tosrv parameters to\n+dbfree_xlate() were NULL. */\n+ 1080#define SYBEXTDN 20157 /* Warning: the xlt_todisp parameter to\n+dbfree_xlate() was NULL. The space associated with the xlt_tosrv parameter has\n+been freed. */\n+ 1081#define SYBEXTSN 20158 /* Warning: the xlt_tosrv parameter to dbfree_xlate\n+() was NULL. The space associated with the xlt_todisp parameter has been freed.\n+*/\n+ 1082#define SYBENUM 20159 /* Incorrect number of arguments given to DB-\n+Library. */\n+ 1083#define SYBETYPE 20160 /* Invalid argument type given to DB-Library. */\n+ 1084#define SYBEGENOS 20161 /* General Operating System Error. */\n+ 1085#define SYBEPAGE 20162 /* wrong resource type or length given for dbpage()\n+operation. */\n+ 1086#define SYBEOPTNO 20163 /* Option is not allowed or is unreconized */\n+ 1087#define SYBEETD 20164 /* Failure to send the expected amount of TEXT or\n+IMAGE data via dbmoretext(). */\n+ 1088#define SYBERTYPE 20165 /* Invalid resource type given to DB-Library. */\n+ 1089#define SYBERFILE 20166 /* \"Can not open resource file.\" */\n+ 1090#define SYBEFMODE 20167 /* Read/Write/Append mode denied on file. */\n+ 1091#define SYBESLCT 20168 /* Could not select or copy field specified */\n+ 1092#define SYBEZTXT 20169 /* Attempt to send zero length TEXT or IMAGE to\n+dataserver via dbwritetext(). */\n+ 1093#define SYBENTST 20170 /* The file being opened must be a stream_lf. */\n+ 1094#define SYBEOSSL 20171 /* Operating system login level not in range of\n+Secure SQL Server */\n+ 1095#define SYBEESSL 20172 /* Login security level entered does not agree with\n+operating system level */\n+ 1096#define SYBENLNL 20173 /* Program not linked with specified network\n+library. */\n+ 1097#define SYBENHAN 20174 /* called dbrecvpassthru() with a NULL handler\n+parameter. */\n+ 1098#define SYBENBUF 20175 /* called dbsendpassthru() with a NULL buf pointer.\n+*/\n+ 1099#define SYBENULP 20176 /* Called %s with a NULL %s parameter. */\n+ 1100#define SYBENOTI 20177 /* No event handler installed. */\n+ 1101#define SYBEEVOP 20178 /* Called dbregwatch() with a bad options\n+parameter. */\n+ 1102#define SYBENEHA 20179 /* Called dbreghandle() with a NULL handler\n+parameter. */\n+ 1103#define SYBETRAN 20180 /* DBPROCESS is being used for another transaction.\n+*/\n+ 1104#define SYBEEVST 20181 /* Must initiate a transaction before calling\n+dbregparam(). */\n+ 1105#define SYBEEINI 20182 /* Must call dbreginit() before dbregraise(). */\n+ 1106#define SYBEECRT 20183 /* Must call dbregdefine() before dbregcreate(). */\n+ 1107#define SYBEECAN 20184 /* Attempted to cancel unrequested event\n+notification. */\n+ 1108#define SYBEEUNR 20185 /* Unsolicited event notification received. */\n+ 1109#define SYBERPCS 20186 /* Must call dbrpcinit() before dbrpcparam(). */\n+ 1110#define SYBETPAR 20187 /* No SYBTEXT or SYBIMAGE parameters were defined.\n+*/\n+ 1111#define SYBETEXS 20188 /* Called dbmoretext() with a bad size parameter.\n+*/\n+ 1112#define SYBETRAC 20189 /* Attempted to turn off a trace flag that was not\n+on. */\n+ 1113#define SYBETRAS 20190 /* DB-Library internal error - trace structure not\n+found. */\n+ 1114#define SYBEPRTF 20191 /* dbtracestring() may only be called from a\n+printfunc(). */\n+ 1115#define SYBETRSN 20192 /* Bad numbytes parameter passed to dbtracestring\n+(). */\n+ 1116#define SYBEBPKS 20193 /* In DBSETLPACKET(), the packet size parameter\n+must be between 0 and 999999. */\n+ 1117#define SYBEIPV 20194 /* %1! is an illegal value for the %2! parameter of\n+%3!. */\n+ 1118#define SYBEMOV 20195 /* Money arithmetic resulted in overflow in function\n+%1!. */\n+ 1119#define SYBEDIVZ 20196 /* Attempt to divide by $0.00 in function %1!. */\n+ 1120#define SYBEASTL 20197 /* Synchronous I/O attempted at AST level. */\n+ 1121#define SYBESEFA 20198 /* DBSETNOTIFS cannot be called if connections are\n+present. */\n+ 1122#define SYBEPOLL 20199 /* Only one dbpoll() can be active at a time. */\n+ 1123#define SYBENOEV 20200 /* dbpoll() cannot be called if registered\n+procedure notifications have been disabled. */\n+ 1124#define SYBEBADPK 20201 /* Packet size of %1! not supported. -- size of\n+%2! used instead. */\n+ 1125#define SYBESECURE 20202 /* Secure Server function not supported in this\n+version. */\n+ 1126#define SYBECAP 20203 /* DB-Library capabilities not accepted by the\n+Server. */\n+ 1127#define SYBEFUNC 20204 /* Functionality not supported at the specified\n+version level. */\n+ 1128#define SYBERESP 20205 /* Response function address passed to dbresponse()\n+must be non-NULL. */\n+ 1129#define SYBEIVERS 20206 /* Illegal version level specified. */\n+ 1130#define SYBEONCE 20207 /* Function can be called only once. */\n+ 1131#define SYBERPNULL 20208 /* value parameter for dbprcparam() can be NULL,\n+only if the datalen parameter is 0 */\n+ 1132#define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image.\n+*/\n+ 1133#define SYBENEG 20210 /* Negotiated login attempt failed. */\n+ 1134#define SYBELBLEN 20211 /* Security labels should be less than 256\n+characters long. */\n+ 1135#define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */\n+ 1136#define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY\n+datastream. */\n+ 1137#define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy() */\n+ 1138#define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull() */\n+ 1139#define SYBEBPREC 20216 /* Illegal precision specified */\n+ 1140#define SYBEBSCALE 20217 /* Illegal scale specified */\n+ 1141#define SYBECDOMAIN 20218 /* Source field value is not within the domain\n+of legal values. */\n+ 1142#define SYBECINTERNAL 20219 /* Internal Conversion error. */\n+ 1143#define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */\n+ 1144#define SYBEBCSET 20221 /* Unknown character-set encountered.\" */\n+ 1145#define SYBEFENC 20222 /* Password Encryption failed.\" */\n+ 1146#define SYBEFRES 20223 /* Challenge-Response function failed.\", */\n+ 1147#define SYBEISRVPREC 20224 /* Illegal precision value returned by the\n+server. */\n+ 1148#define SYBEISRVSCL 20225 /* Illegal scale value returned by the server.\n+*/\n+ 1149#define SYBEINUMCL 20226 /* Invalid numeric column length returned by the\n+server. */\n+ 1150#define SYBEIDECCL 20227 /* Invalid decimal column length returned by the\n+server. */\n+ 1151#define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there is\n+at least one text or image column in the server table. */\n+ 1152#define SYBEBCPREC 20229 /* Column %1!: Illegal precision value\n+encountered. */\n+ 1153#define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen must\n+be 0 and no terminator should be specified. */\n+ 1154#define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen\n+greater than 0, the table column type must be SYBTEXT or SYBIMAGE and the\n+program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */\n+ 1155#define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and\n+varlen greater than 0, the table column type must be SYBTEXT or SYBIMAGE and\n+the program variable type must be SYBTEXT, SYBCHAR, SYBIMAGE or SYBBINARY. */\n+ 1156#define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0, host_type\n+cannot be 0. */\n+ 1157#define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1.\n+*/\n+ 1158#define SYBEBCHLEN 20235 /* host_collen should be greater than or equal to\n+-1. */\n+ 1159#define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1,\n+2 or 4. */\n+ 1160#define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1, 0,\n+1, 2 or 4. */\n+ 1161#define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL.\n+*/\n+ 1162#define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long.\n+*/\n+ 1163#define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all\n+text data for the previous row has been sent using bcp_moretext(). */\n+ 1164#define SYBEBPROCOL 20241 /* bcp protocol error: returned column count\n+differs from the actual number of columns received. */\n+ 1165#define SYBEBPRODEF 20242 /* bcp protocol error: expected default\n+information and got none. */\n+ 1166#define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of\n+defaults differs from the actual number of defaults received. */\n+ 1167#define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and\n+actual column id are not same */\n+ 1168#define SYBEBPRONODEF 20245 /* bcp protocol error: default value received\n+for column that does not have default. */\n+ 1169#define SYBEBPRODEFTYP 20246 /* bcp protocol error: default value datatype\n+differs from column datatype. */\n+ 1170#define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of\n+default information received. */\n+ 1171#define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of\n+results received. */\n+ 1172#define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column\n+id received. */\n+ 1173#define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column\n+datatype. */\n+ 1174#define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype\n+length received. */\n+ 1175#define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision\n+value received. */\n+ 1176#define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value\n+received. */\n+ 1177#define SYBEBADTYPE 20254 /* Illegal value for type parameter given to\n+%1!. */\n+ 1178#define SYBECRSNORES 20255 /* Cursor statement generated no results. */\n+ 1179#define SYBECRSNOIND 20256 /* One of the tables involved in the cursor\n+statement does not have a unique index. */\n+ 1180#define SYBECRSVIEW 20257 /* A view cannot be joined with another table or\n+a view in a cursor statement. */\n+ 1181#define SYBECRSVIIND 20258 /* The view used in the cursor statement does\n+not include all the unique index columns of the underlying tables. */\n+ 1182#define SYBECRSORD 20259 /* Only fully keyset driven cursors can have\n+'order by', ' group by', or 'having' phrases. */\n+ 1183#define SYBECRSBUFR 20260 /* Row buffering should not be turned on when\n+using cursor APIs. */\n+ 1184#define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be\n+turned on when using cursor APIs. */\n+ 1185#define SYBECRSDIS 20262 /* Cursor statement contains one of the\n+disallowed phrases 'compute', 'union', 'for browse', or 'select into'. */\n+ 1186#define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a\n+cursor statement. */\n+ 1187#define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be\n+used within the keyset of keyset driven cursors. */\n+ 1188#define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset driven\n+cursors. */\n+ 1189#define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a\n+forward scrolling cursor. */\n+ 1190#define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid\n+range. */\n+ 1191#define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed\n+cursors with a previous fetch type. */\n+ 1192#define SYBECRSRO 20269 /* Data locking or modifications cannot be made in\n+a READONLY cursor. */\n+ 1193#define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be turned\n+on when doing updates or deletes with dbcursor(). */\n+ 1194#define SYBECRSTAB 20271 /* Table name must be determined in operations\n+involving data locking or modifications. */\n+ 1195#define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind\n+variables when binding type is NOBIND. */\n+ 1196#define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor\n+update or insert. */\n+ 1197#define SYBECRSSET 20274 /* A SET clause is required for a cursor update\n+or insert. */\n+ 1198#define SYBECRSUPDTAB 20275 /* Update or insert operations using bind\n+variables require single table cursors. */\n+ 1199#define SYBECRSNOUPD 20276 /* Update or delete operation did not affect\n+any rows. */\n+ 1200#define SYBECRSINV 20277 /* Invalid cursor statement. */\n+ 1201#define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for\n+KEYSET cursors. */\n+ 1202#define SYBECRSNOBIND 20279 /* Cursor bind must be called prior to\n+updating cursor */\n+ 1203#define SYBECRSFTYPE 20280 /* Unknown fetch type. */\n+ 1204#define SYBECRSINVALID 20281 /* The cursor handle is invalid. */\n+ 1205#define SYBECRSMROWS 20282 /* Multiple rows are returned, only one is\n+expected. */\n+ 1206#define SYBECRSNROWS 20283 /* No rows returned, at least one is expected.\n+*/\n+ 1207#define SYBECRSNOLEN 20284 /* No unique index found. */\n+ 1208#define SYBECRSNOPTCC 20285 /* No OPTCC was found. */\n+ 1209#define SYBECRSNORDER 20286 /* The order of clauses must be from, where,\n+and order by. */\n+ 1210#define SYBECRSNOTABLE 20287 /* Table name is NULL. */\n+ 1211#define SYBECRSNUNIQUE 20288 /* No unique keys associated with this view.\n+*/\n+ 1212#define SYBECRSVAR 20289 /* There is no valid address associated with this\n+bind. */\n+ 1213#define SYBENOVALUE 20290 /* Security labels require both a name and a\n+value */\n+ 1214#define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot be a return\n+parameter. */\n+ 1215#define SYBECLOSEIN 20292 /* Unable to close interface file. */\n+ 1216#define SYBEBOOL 20293 /* Boolean parameters must be TRUE or FALSE. */\n+ 1217#define SYBEBCPOPT 20294 /* The option cannot be called while a bulk copy\n+operation is progress. */\n+ 1218#define SYBEERRLABEL 20295 /* An illegal value was returned from the\n+security label handler. */\n+ 1219#define SYBEATTNACK 20296 /* Timed out waiting for server to acknowledge\n+attention.\" */\n+ 1220#define SYBEBBFL 20297 /* -001- Batch failed in bulk-copy to SQL Server */\n+ 1221#define SYBEDCL 20298 /* -004- DCL Error */\n+ 1222#define SYBECS 20299 /* -004- cs context Error */\n+ 1223#define SYBEBULKINSERT 20599 /* cannot build bulk insert statement */\n+ 1224#define SYBECOLSIZE 22000 /* Invalid column information structure size */\n+ 1225\n+ 1226int dbtds(DBPROCESS * dbprocess);\n+ 1227\n+ 1228#define DBTDS(a) dbtds(a)\n+ 1229DBINT dbtextsize(DBPROCESS * dbprocess);\n+ 1230DBBINARY *dbtxptr(DBPROCESS * dbproc, int column);\n+ 1231DBBINARY *dbtxtimestamp(DBPROCESS * dbproc, int column);\n+ 1232DBBINARY *dbtxtsnewval(DBPROCESS * dbprocess);\n+ 1233RETCODE dbtxtsput(DBPROCESS * dbprocess, DBBINARY newtxts, int colnum);\n+ 1234RETCODE dbuse(DBPROCESS * dbproc, const char *name);\n+ 1235const char *dbversion(void);\n+ 1236DBBOOL dbwillconvert(int srctype, int desttype);\n+ 1237RETCODE dbwritetext(DBPROCESS * dbproc, char *objname, DBBINARY * textptr,\n+DBTINYINT textptrlen, DBBINARY * timestamp,\n+ 1238 DBBOOL log, DBINT size, BYTE * text);\n+ 1239\n+ 1240/* LOGINREC manipulation */\n+ 1241RETCODE dbsetlname(LOGINREC * login, const char *value, int which);\n+ 1242RETCODE dbsetlbool(LOGINREC * login, int value, int which);\n+ 1243RETCODE dbsetlshort(LOGINREC * login, int value, int which);\n+ 1244RETCODE dbsetllong(LOGINREC * login, long value, int which);\n+ 1245RETCODE dbsetlversion (LOGINREC * login, BYTE version);\n+ 1246\n+ 1247#define DBSETHOST 1\n+ 1248#define DBSETLHOST(x,y) dbsetlname((x), (y), DBSETHOST)\n+ 1249#define dbsetlhost(x,y) dbsetlname((x), (y), DBSETHOST)\n+ 1250#define DBSETUSER 2\n+ 1251#define DBSETLUSER(x,y) dbsetlname((x), (y), DBSETUSER)\n+ 1252#define dbsetluser(x,y) dbsetlname((x), (y), DBSETUSER)\n+ 1253#define DBSETPWD 3\n+ 1254#define DBSETLPWD(x,y) dbsetlname((x), (y), DBSETPWD)\n+ 1255#define dbsetlpwd(x,y) dbsetlname((x), (y), DBSETPWD)\n+ 1256#if defined(DBLIB_UNIMPLEMENTED)\n+ 1257# define DBSETHID 4 /* not implemented */\n+ 1258# define DBSETLHID(x,y) dbsetlname((x), (y), DBSETHID)\n+ 1259#endif\n+ 1260#define DBSETAPP 5\n+ 1261#define DBSETLAPP(x,y) dbsetlname((x), (y), DBSETAPP)\n+ 1262#define dbsetlapp(x,y) dbsetlname((x), (y), DBSETAPP)\n+ 1263#define DBSETBCP 6\n+ 1264#define BCP_SETL(x,y) dbsetlbool((x), (y), DBSETBCP)\n+ 1265#define DBSETLSECURE(x) dbsetlbool((x), (1), DBSETBCP)\n+ 1266#define DBSETNATLANG 7\n+ 1267#define DBSETLNATLANG(x,y) dbsetlname((x), (y), DBSETNATLANG)\n+ 1268#define dbsetlnatlang(x,y) dbsetlname((x), (y), DBSETNATLANG)\n+ 1269#if defined(DBLIB_UNIMPLEMENTED)\n+ 1270# define DBSETNOSHORT 8 /* not implemented */\n+ 1271# define DBSETLNOSHORT(x,y) dbsetlbool((x), (y), DBSETNOSHORT)\n+ 1272# define DBSETHIER 9 /* not implemented */\n+ 1273# define DBSETLHIER(x,y) dbsetlshort((x), (y), DBSETHIER)\n+ 1274#endif\n+ 1275#define DBSETCHARSET 10\n+ 1276#define DBSETLCHARSET(x,y) dbsetlname((x), (y), DBSETCHARSET)\n+ 1277#define DBSETPACKET 11\n+ 1278#define DBSETLPACKET(x,y) dbsetllong((x), (y), DBSETPACKET)\n+ 1279#define dbsetlpacket(x,y) dbsetllong((x), (y), DBSETPACKET)\n+ 1280#define DBSETENCRYPT 12\n+ 1281#define DBSETLENCRYPT(x,y) dbsetlbool((x), (y), DBSETENCRYPT)\n+ 1282#define DBSETLABELED 13\n+ 1283#define DBSETLLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)\n+ 1284#define BCP_SETLABELED(x,y) dbsetlbool((x), (y), DBSETLABELED)\n+ 1285#define DBSETDBNAME 14\n+ 1286#define DBSETLDBNAME(x,y) dbsetlname((x), (y), DBSETDBNAME)\n+ 1287#define DBSETLVERSION(login, version) dbsetlversion((login), (version))\n+ 1288#define DBSETNETWORKAUTH 101\n+ 1289#define DBSETLNETWORKAUTH(x, y) dbsetlbool((x), (y), DBSETNETWORKAUTH)\n+ 1290#define DBSETMUTUALAUTH 102\n+ 1291#define DBSETLMUTUALAUTH(x, y) dbsetlbool((x), (y), DBSETMUTUALAUTH)\n+ 1292#define DBSETSERVERPRINCIPAL 103\n+ 1293#define DBSETLSERVERPRINCIPAL(x,y) dbsetlname((x), (y),\n+DBSETSERVERPRINCIPAL)\n+ 1294/* settings from here are purely FreeTDS extensions */\n+ 1295#define DBSETUTF16 1001\n+ 1296#define DBSETLUTF16(x,y) dbsetlbool((x), (y), DBSETUTF16)\n+ 1297#define DBSETNTLMV2 1002\n+ 1298#define DBSETLNTLMV2(x,y) dbsetlbool((x), (y), DBSETNTLMV2)\n+ 1299#define DBSETREADONLY 1003\n+ 1300#define DBSETLREADONLY(x,y) dbsetlbool((x), (y), DBSETREADONLY)\n+ 1301#define DBSETDELEGATION 1004\n+ 1302#define DBSETLDELEGATION(x, y) dbsetlbool((x), (y), DBSETDELEGATION)\n+ 1303\n+ 1304RETCODE bcp_init(DBPROCESS * dbproc, const char *tblname, const char\n+*hfile, const char *errfile, int direction);\n+ 1305DBINT bcp_done(DBPROCESS * dbproc);\n+ 1306\n+ 1307DBINT bcp_batch(DBPROCESS * dbproc);\n+ 1308RETCODE bcp_bind(DBPROCESS * dbproc, BYTE * varaddr, int prefixlen, DBINT\n+varlen, BYTE * terminator, int termlen, int type,\n+ 1309 int table_column);\n+ 1310RETCODE bcp_collen(DBPROCESS * dbproc, DBINT varlen, int table_column);\n+ 1311RETCODE bcp_columns(DBPROCESS * dbproc, int host_colcount);\n+ 1312RETCODE bcp_colfmt(DBPROCESS * dbproc, int host_column, int host_type, int\n+host_prefixlen, DBINT host_collen,\n+ 1313 const BYTE * host_term, int host_termlen, int colnum);\n+ 1314RETCODE bcp_colfmt_ps(DBPROCESS * dbproc, int host_column, int host_type,\n+int host_prefixlen, DBINT host_collen,\n+ 1315 BYTE * host_term, int host_termlen, int colnum, DBTYPEINFO * typeinfo);\n+ 1316RETCODE bcp_colptr(DBPROCESS * dbproc, BYTE * colptr, int table_column);\n+ 1317RETCODE bcp_control(DBPROCESS * dbproc, int field, DBINT value);\n+ 1318int bcp_getbatchsize(DBPROCESS * dbproc); /* FreeTDS only */\n+ 1319RETCODE bcp_exec(DBPROCESS * dbproc, DBINT * rows_copied);\n+ 1320DBBOOL bcp_getl(LOGINREC * login);\n+ 1321RETCODE bcp_options(DBPROCESS * dbproc, int option, BYTE * value, int\n+valuelen);\n+ 1322RETCODE bcp_readfmt(DBPROCESS * dbproc, const char filename[]);\n+ 1323RETCODE bcp_sendrow(DBPROCESS * dbproc);\n+ 1324\n+ 1325#ifdef __cplusplus\n+ 1326#if 0\n+ 1327{\n+ 1328#endif\n+ 1329}\n+ 1330#endif\n+ 1331\n+ 1332#endif\n+dbcolinfo\n+RETCODE dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT\n+computeid, DBCOL *pdbcol)\n+Get a bunch of column attributes with a single call (Microsoft-compatibility\n+feature).\n+Definition dblib.c:3045\n+dbpivot\n+RETCODE dbpivot(DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols,\n+DBPIVOT_FUNC func, int val)\n+Pivot the rows, creating a new resultset.\n+Definition dbpivot.c:914\n+dbclrbuf\n+void dbclrbuf(DBPROCESS *dbproc, DBINT n)\n+Clear n rows from the row buffer.\n+Definition dblib.c:2844\n+dbcoltypeinfo\n+DBTYPEINFO * dbcoltypeinfo(DBPROCESS *dbproc, int column)\n+Get precision and scale information for a regular result column.\n+Definition dblib.c:3016\n+dblogin\n+LOGINREC * dblogin(void)\n+Allocate a LOGINREC structure.\n+Definition dblib.c:705\n+dbfreebuf\n+void dbfreebuf(DBPROCESS *dbproc)\n+Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().\n+Definition dblib.c:6081\n+dbdata\n+BYTE * dbdata(DBPROCESS *dbproc, int column)\n+Get address of data in a regular result column.\n+Definition dblib.c:3352\n+dbstrlen\n+int dbstrlen(DBPROCESS *dbproc)\n+Get size of the command buffer, in bytes.\n+Definition dblib.c:6312\n+dbadata\n+BYTE * dbadata(DBPROCESS *dbproc, int computeid, int column)\n+Get address of compute column data.\n+Definition dblib.c:4436\n+dbspid\n+int dbspid(DBPROCESS *dbproc)\n+Get server process ID for a DBPROCESS.\n+Definition dblib.c:5941\n+dbtxtimestamp\n+DBBINARY * dbtxtimestamp(DBPROCESS *dbproc, int column)\n+Get text timestamp for a column in the current row.\n+Definition dblib.c:6548\n+dbbylist\n+BYTE * dbbylist(DBPROCESS *dbproc, int computeid, int *size)\n+Get bylist for a compute row.\n+Definition dblib.c:5020\n+dbservcharset\n+char * dbservcharset(DBPROCESS *dbprocess)\n+Get syscharset name of the server character set.\n+Definition dblib.c:7044\n+dbspr1rowlen\n+DBINT dbspr1rowlen(DBPROCESS *dbproc)\n+Determine size buffer required to hold the results returned by dbsprhead(),\n+dbsprline(),...\n+Definition dblib.c:3419\n+dbconvert\n+DBINT dbconvert(DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen,\n+int desttype, BYTE *dest, DBINT destlen)\n+cf.\n+Definition dblib.c:2593\n+dbadlen\n+DBINT dbadlen(DBPROCESS *dbproc, int computeid, int column)\n+Get size of data in a compute column.\n+Definition dblib.c:4331\n+dbsetinterrupt\n+void dbsetinterrupt(DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr,\n+DB_DBHNDLINTR_FUNC hndlintr)\n+Set interrupt handler for db-lib to use while blocked against a read from the\n+server.\n+Definition dblib.c:4652\n+dbsetnull\n+RETCODE dbsetnull(DBPROCESS *dbprocess, int bindtype, int bindlen, BYTE\n+*bindval)\n+Define substitution values to be used when binding null values.\n+Definition dblib.c:1962\n+dbcolname\n+char * dbcolname(DBPROCESS *dbproc, int column)\n+Return name of a regular result column.\n+Definition dblib.c:1872\n+dbfcmd\n+RETCODE dbfcmd(DBPROCESS *dbproc, const char *fmt,...)\n+printf-like way to form SQL to send to the server.\n+Definition dblib.c:1334\n+dbdatecrack\n+RETCODE dbdatecrack(DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *dt)\n+Break a DBDATETIME value into useful pieces.\n+Definition dblib.c:5868\n+dbresults\n+RETCODE dbresults(DBPROCESS *dbproc)\n+Set up query results.\n+Definition dblib.c:1694\n+dbwritetext\n+RETCODE dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr,\n+DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)\n+Send text or image data to the server.\n+Definition dblib.c:6615\n+dbcanquery\n+RETCODE dbcanquery(DBPROCESS *dbproc)\n+Cancel the query currently being retrieved, discarding all pending rows.\n+Definition dblib.c:6052\n+dbinit\n+RETCODE dbinit(void)\n+Initialize db-lib.\n+Definition dblib.c:660\n+dbvarylen\n+DBINT dbvarylen(DBPROCESS *dbproc, int column)\n+Determine whether a column can vary in size.\n+Definition dblib.c:3218\n+dbcancel\n+RETCODE dbcancel(DBPROCESS *dbproc)\n+Cancel the current command batch.\n+Definition dblib.c:3394\n+dbsetlogintime\n+RETCODE dbsetlogintime(int seconds)\n+Set maximum seconds db-lib waits for a server response to a login attempt.\n+Definition dblib.c:4260\n+dbgetrow\n+RETCODE dbgetrow(DBPROCESS *dbproc, DBINT row)\n+Read a row from the row buffer.\n+Definition dblib.c:1930\n+dbcoltype\n+int dbcoltype(DBPROCESS *dbproc, int column)\n+Get the datatype of a regular result set column.\n+Definition dblib.c:2970\n+dbsetifile\n+void dbsetifile(char *filename)\n+set name and location of the interfaces file FreeTDS should use to look up a\n+servername.\n+Definition dblib.c:2711\n+dbuse\n+RETCODE dbuse(DBPROCESS *dbproc, const char *name)\n+Change current database.\n+Definition dblib.c:1445\n+dbnumalts\n+int dbnumalts(DBPROCESS *dbproc, int computeid)\n+Get count of columns in a compute row.\n+Definition dblib.c:4961\n+dbiscount\n+BOOL dbiscount(DBPROCESS *dbproc)\n+Indicates whether or not the count returned by dbcount is real (Microsoft-\n+compatibility feature).\n+Definition dblib.c:2804\n+dbgettime\n+int dbgettime(void)\n+Get maximum seconds db-lib waits for a server response to query.\n+Definition dblib.c:4244\n+dbmoretext\n+RETCODE dbmoretext(DBPROCESS *dbproc, DBINT size, const BYTE text[])\n+Send chunk of a text/image value to the server.\n+Definition dblib.c:6753\n+dbprtype\n+const char * dbprtype(int token)\n+Print a token value's name to a buffer.\n+Definition dblib.c:6468\n+dbcolsource\n+char * dbcolsource(DBPROCESS *dbproc, int colnum)\n+Get base database column name for a result set column.\n+Definition dblib.c:3144\n+dbchange\n+char * dbchange(DBPROCESS *dbprocess)\n+See if a command caused the current database to change.\n+Definition dblib.c:7008\n+dbacolname\n+const char * dbacolname(DBPROCESS *dbproc, int computeid, int column)\n+Return name of a computed result column.\n+Definition dblib.c:1898\n+dbnullbind\n+RETCODE dbnullbind(DBPROCESS *dbproc, int column, DBINT *indicator)\n+Tie a null-indicator to a regular result column.\n+Definition dblib.c:2740\n+dbbind\n+RETCODE dbbind(DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE\n+*varaddr)\n+Tie a host variable to a resultset column.\n+Definition dblib.c:2634\n+dbversion\n+const char * dbversion(void)\n+See which version of db-lib is in use.\n+Definition dblib.c:6861\n+dbcmd\n+RETCODE dbcmd(DBPROCESS *dbproc, const char cmdstring[])\n+Append SQL to the command buffer.\n+Definition dblib.c:1373\n+dbcollen\n+DBINT dbcollen(DBPROCESS *dbproc, int column)\n+Get size of a regular result column.\n+Definition dblib.c:3169\n+dbconvert_ps\n+DBINT dbconvert_ps(DBPROCESS *dbprocess, int srctype, const BYTE *src, DBINT\n+srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)\n+Convert one datatype to another.\n+Definition dblib.c:2300\n+dbgetchar\n+char * dbgetchar(DBPROCESS *dbprocess, int n)\n+Get address of a position in the command buffer.\n+Definition dblib.c:6331\n+dbanullbind\n+RETCODE dbanullbind(DBPROCESS *dbprocess, int computeid, int column, DBINT\n+*indicator)\n+Tie a null-indicator to a compute result column.\n+Definition dblib.c:2776\n+dbclropt\n+RETCODE dbclropt(DBPROCESS *dbproc, int option, const char param[])\n+Reset an option.\n+Definition dblib.c:6116\n+dbcount\n+DBINT dbcount(DBPROCESS *dbproc)\n+Get count of rows processed.\n+Definition dblib.c:2824\n+dbaltop\n+int dbaltop(DBPROCESS *dbproc, int computeid, int column)\n+Get aggregation operator for a compute column.\n+Definition dblib.c:4465\n+dbtablecolinfo\n+RETCODE dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)\n+describe table column attributes with a single call (Freetds-only API function\n+modelled on dbcolinfo)\n+Definition dblib.c:6485\n+dbaltlen\n+DBINT dbaltlen(DBPROCESS *dbproc, int computeid, int column)\n+Get size of data in compute column.\n+Definition dblib.c:7158\n+dbsetopt\n+RETCODE dbsetopt(DBPROCESS *dbproc, int option, const char *char_param, int\n+int_param)\n+Set db-lib or server option.\n+Definition dblib.c:4492\n+dbprhead\n+void dbprhead(DBPROCESS *dbproc)\n+Print result set headings to stdout.\n+Definition dblib.c:3980\n+dbsetlversion\n+RETCODE dbsetlversion(LOGINREC *login, BYTE version)\n+Set TDS version for future connections.\n+Definition dblib.c:947\n+dbprrow\n+RETCODE dbprrow(DBPROCESS *dbproc)\n+Print a result set to stdout.\n+Definition dblib.c:3540\n+dbname\n+char * dbname(DBPROCESS *dbproc)\n+Get name of current database.\n+Definition dblib.c:7028\n+dbalttype\n+int dbalttype(DBPROCESS *dbproc, int computeid, int column)\n+Get datatype for a compute column.\n+Definition dblib.c:4361\n+dbsprhead\n+RETCODE dbsprhead(DBPROCESS *dbproc, char *buffer, DBINT buf_len)\n+Print result set headings to a buffer.\n+Definition dblib.c:3916\n+dbsqlexec\n+RETCODE dbsqlexec(DBPROCESS *dbproc)\n+send the SQL command to the server and wait for an answer.\n+Definition dblib.c:1419\n+dbwillconvert\n+DBBOOL dbwillconvert(int srctype, int desttype)\n+Test whether or not a datatype can be converted to another datatype.\n+Definition dblib.c:2874\n+dbcolutype\n+DBINT dbcolutype(DBPROCESS *dbprocess, int column)\n+Get user-defined datatype of a regular result column.\n+Definition dblib.c:2993\n+dbstrbuild\n+int dbstrbuild(DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char\n+*formats,...)\n+Build a printable string from text containing placeholders for variables.\n+Definition dblib.c:7321\n+dberrhandle\n+EHANDLEFUNC dberrhandle(EHANDLEFUNC handler)\n+Set an error handler, for messages from db-lib.\n+Definition dblib.c:5142\n+dbsetversion\n+RETCODE dbsetversion(DBINT version)\n+Specify a db-lib version level.\n+Definition dblib.c:5997\n+dbgetpacket\n+int dbgetpacket(DBPROCESS *dbproc)\n+Get TDS packet size for the connection.\n+Definition dblib.c:4096\n+dbrecftos\n+void dbrecftos(const char filename[])\n+Record to a file all SQL commands sent to the server.\n+Definition dblib.c:6788\n+dbgetuserdata\n+BYTE * dbgetuserdata(DBPROCESS *dbproc)\n+Get address of user-allocated data from a DBPROCESS.\n+Definition dblib.c:5979\n+dbsetuserdata\n+void dbsetuserdata(DBPROCESS *dbproc, BYTE *ptr)\n+Associate client-allocated (and defined) data with a DBPROCESS.\n+Definition dblib.c:5961\n+dbprcollen\n+DBINT dbprcollen(DBPROCESS *dbproc, int column)\n+Get size of a result column needed to print column.\n+Definition dblib.c:3192\n+dbloginfree\n+void dbloginfree(LOGINREC *login)\n+free the LOGINREC\n+Definition dblib.c:737\n+dbmorecmds\n+RETCODE dbmorecmds(DBPROCESS *dbproc)\n+See if more commands are to be processed.\n+Definition dblib.c:6258\n+dbisopt\n+DBBOOL dbisopt(DBPROCESS *dbproc, int option, const char param[])\n+Get value of an option.\n+Definition dblib.c:6184\n+dbnumcompute\n+int dbnumcompute(DBPROCESS *dbprocess)\n+Get count of COMPUTE clauses for a result set.\n+Definition dblib.c:4994\n+dbsqlsend\n+RETCODE dbsqlsend(DBPROCESS *dbproc)\n+Transmit the command buffer to the server.\n+Definition dblib.c:7064\n+dbsprline\n+RETCODE dbsprline(DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR\n+line_char)\n+Get formatted string for underlining dbsprhead() column names.\n+Definition dblib.c:3858\n+dbexit\n+void dbexit(void)\n+Close server connections and free all related structures.\n+Definition dblib.c:1552\n+dbsafestr\n+RETCODE dbsafestr(DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest,\n+DBINT destlen, int quotetype)\n+safely quotes character values in SQL text.\n+Definition dblib.c:6407\n+dbaltcolid\n+int dbaltcolid(DBPROCESS *dbproc, int computeid, int column)\n+Get column ID of a compute column.\n+Definition dblib.c:4305\n+dbanydatecrack\n+RETCODE dbanydatecrack(DBPROCESS *dbproc, DBDATEREC2 *di, int type, const void\n+*data)\n+Break any kind of date or time value into useful pieces.\n+Definition dblib.c:5889\n+dbsettime\n+RETCODE dbsettime(int seconds)\n+Set maximum seconds db-lib waits for a server response to query.\n+Definition dblib.c:4213\n+dbnumcols\n+int dbnumcols(DBPROCESS *dbproc)\n+Return number of regular columns in a result set.\n+Definition dblib.c:1848\n+dbgetmaxprocs\n+int dbgetmaxprocs(void)\n+get maximum simultaneous connections db-lib will open to the server.\n+Definition dblib.c:4192\n+dbtxptr\n+DBBINARY * dbtxptr(DBPROCESS *dbproc, int column)\n+Get text pointer for a column in the current row.\n+Definition dblib.c:6578\n+dbmsghandle\n+MHANDLEFUNC dbmsghandle(MHANDLEFUNC handler)\n+Set a message handler, for messages from the server.\n+Definition dblib.c:5161\n+dbreadtext\n+STATUS dbreadtext(DBPROCESS *dbproc, void *buf, DBINT bufsize)\n+Fetch part of a text or image value from the server.\n+Definition dblib.c:6684\n+dbsqlok\n+RETCODE dbsqlok(DBPROCESS *dbproc)\n+Wait for results of a query from the server.\n+Definition dblib.c:4835\n+dbdatlen\n+DBINT dbdatlen(DBPROCESS *dbproc, int column)\n+Get size of current row's data in a regular result column.\n+Definition dblib.c:3324\n+dbsetrow\n+STATUS dbsetrow(DBPROCESS *dbprocess, DBINT row)\n+Make a buffered row \"current\" without fetching it into bound variables.\n+Definition dblib.c:2045\n+dbclose\n+void dbclose(DBPROCESS *dbproc)\n+Close a connection to the server and free associated resources.\n+Definition dblib.c:1485\n+dbstrcpy\n+RETCODE dbstrcpy(DBPROCESS *dbproc, int start, int numbytes, char *dest)\n+Get a copy of a chunk of the command buffer.\n+Definition dblib.c:6363\n+dbaltutype\n+DBINT dbaltutype(DBPROCESS *dbproc, int computeid, int column)\n+Get user-defined datatype of a compute column.\n+Definition dblib.c:7135\n+dbsetmaxprocs\n+RETCODE dbsetmaxprocs(int maxprocs)\n+Set maximum simultaneous connections db-lib will open to the server.\n+Definition dblib.c:4120\n+dbspr1row\n+RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len)\n+Print a regular result row to a buffer.\n+Definition dblib.c:3457\n+dbaltbind\n+RETCODE dbaltbind(DBPROCESS *dbprocess, int computeid, int column, int vartype,\n+DBINT varlen, BYTE *varaddr)\n+Bind a compute column to a program variable.\n+Definition dblib.c:4390\n+dbretstatus\n+DBINT dbretstatus(DBPROCESS *dbproc)\n+Fetch status value returned by query or remote procedure call.\n+Definition dblib.c:4695\n+dbrpcinit\n+RETCODE dbrpcinit(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)\n+Initialize a remote procedure call.\n+Definition rpc.c:72\n+dbretdata\n+BYTE * dbretdata(DBPROCESS *dbproc, int retnum)\n+Get value of an output parameter filled by a stored procedure.\n+Definition dblib.c:4774\n+dbretname\n+char * dbretname(DBPROCESS *dbproc, int retnum)\n+Get name of an output parameter filled by a stored procedure.\n+Definition dblib.c:4745\n+dbhasretstat\n+DBBOOL dbhasretstat(DBPROCESS *dbproc)\n+Determine if query generated a return status number.\n+Definition dblib.c:4671\n+dbrettype\n+int dbrettype(DBPROCESS *dbproc, int retnum)\n+Get datatype of a stored procedure's return parameter.\n+Definition dblib.c:6287\n+dbretlen\n+int dbretlen(DBPROCESS *dbproc, int retnum)\n+Get size of an output parameter filled by a stored procedure.\n+Definition dblib.c:4800\n+dbrpcparam\n+RETCODE dbrpcparam(DBPROCESS *dbproc, const char paramname[], BYTE status, int\n+type, DBINT maxlen, DBINT datalen, BYTE *value)\n+Add a parameter to a remote procedure call.\n+Definition rpc.c:155\n+dbrpcsend\n+RETCODE dbrpcsend(DBPROCESS *dbproc)\n+Execute the procedure and free associated memory.\n+Definition rpc.c:281\n+dbnumrets\n+int dbnumrets(DBPROCESS *dbproc)\n+Get count of output parameters filled by a stored procedure.\n+Definition dblib.c:4713\n+bcp_colfmt\n+RETCODE bcp_colfmt(DBPROCESS *dbproc, int host_column, int host_type, int\n+host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int\n+colnum)\n+Specify the format of a datafile prior to writing to a table.\n+Definition bcp.c:377\n+bcp_getl\n+DBBOOL bcp_getl(LOGINREC *login)\n+See if BCP_SETL() was used to set the LOGINREC for BCP work.\n+Definition bcp.c:707\n+bcp_control\n+RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)\n+Set BCP options for uploading a datafile.\n+Definition bcp.c:544\n+bcp_columns\n+RETCODE bcp_columns(DBPROCESS *dbproc, int host_colcount)\n+Indicate how many columns are to be found in the datafile.\n+Definition bcp.c:301\n+bcp_colptr\n+RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)\n+Override bcp_bind() by pointing to a different host variable.\n+Definition bcp.c:671\n+bcp_bind\n+RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen,\n+BYTE *terminator, int termlen, int type, int table_column)\n+Bind a program host variable to a database column.\n+Definition bcp.c:2079\n+bcp_exec\n+RETCODE bcp_exec(DBPROCESS *dbproc, DBINT *rows_copied)\n+Write a datafile to a table.\n+Definition bcp.c:1617\n+bcp_done\n+DBINT bcp_done(DBPROCESS *dbproc)\n+Conclude the transfer of data from program variables.\n+Definition bcp.c:2037\n+bcp_readfmt\n+RETCODE bcp_readfmt(DBPROCESS *dbproc, const char filename[])\n+Read a format definition file.\n+Definition bcp.c:1678\n+bcp_batch\n+DBINT bcp_batch(DBPROCESS *dbproc)\n+Commit a set of rows to the table.\n+Definition bcp.c:2010\n+bcp_init\n+RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile,\n+const char *errfile, int direction)\n+Prepare for bulk copy operation on a table.\n+Definition bcp.c:167\n+bcp_collen\n+RETCODE bcp_collen(DBPROCESS *dbproc, DBINT varlen, int table_column)\n+Set the length of a host variable to be written to a table.\n+Definition bcp.c:267\n+bcp_sendrow\n+RETCODE bcp_sendrow(DBPROCESS *dbproc)\n+Write data in host variables to the table.\n+Definition bcp.c:1381\n+bcp_colfmt_ps\n+RETCODE bcp_colfmt_ps(DBPROCESS *dbproc, int host_column, int host_type, int\n+host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int\n+colnum, DBTYPEINFO *typeinfo)\n+Specify the format of a host file for bulk copy purposes, with precision and\n+scale support for numeri...\n+Definition bcp.c:509\n+bcp_options\n+RETCODE bcp_options(DBPROCESS *dbproc, int option, BYTE *value, int valuelen)\n+Set \"hints\" for uploading a file.\n+Definition bcp.c:622\n+dbmny4zero\n+RETCODE dbmny4zero(DBPROCESS *dbproc, DBMONEY4 *dest)\n+Zero a DBMONEY4 value.\n+Definition dblib.c:5591\n+dbmny4add\n+RETCODE dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)\n+Add two DBMONEY4 values.\n+Definition dblib.c:5614\n+dbmny4cmp\n+int dbmny4cmp(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)\n+Compare two DBMONEY4 values.\n+Definition dblib.c:5733\n+dbmnymaxpos\n+RETCODE dbmnymaxpos(DBPROCESS *dbproc, DBMONEY *dest)\n+Get maximum positive DBMONEY value supported.\n+Definition dblib.c:5366\n+dbmny4minus\n+RETCODE dbmny4minus(DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)\n+Negate a DBMONEY4 value.\n+Definition dblib.c:5567\n+dbmnyminus\n+RETCODE dbmnyminus(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)\n+Negate a DBMONEY value.\n+Definition dblib.c:5540\n+dbmny4sub\n+RETCODE dbmny4sub(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4\n+*diff)\n+Subtract two DBMONEY4 values.\n+Definition dblib.c:5645\n+dbmnyzero\n+RETCODE dbmnyzero(DBPROCESS *dbproc, DBMONEY *dest)\n+Set a DBMONEY value to zero.\n+Definition dblib.c:5345\n+dbmnycopy\n+RETCODE dbmnycopy(DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)\n+Copy a DBMONEY value.\n+Definition dblib.c:6031\n+dbmny4copy\n+RETCODE dbmny4copy(DBPROCESS *dbprocess, DBMONEY4 *m1, DBMONEY4 *m2)\n+Copy a DBMONEY4 value.\n+Definition dblib.c:5761\n+dbmnymaxneg\n+RETCODE dbmnymaxneg(DBPROCESS *dbproc, DBMONEY *dest)\n+Get maximum negative DBMONEY value supported.\n+Definition dblib.c:5387\n+dbmnydec\n+RETCODE dbmnydec(DBPROCESS *dbproc, DBMONEY *mnyptr)\n+Subtract $0.0001 from a DBMONEY value.\n+Definition dblib.c:5512\n+dbmnyinc\n+RETCODE dbmnyinc(DBPROCESS *dbproc, DBMONEY *mnyptr)\n+Add $0.0001 to a DBMONEY value.\n+Definition dblib.c:5484\n+dbmnycmp\n+int dbmnycmp(DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)\n+Compare two DBMONEY values.\n+Definition dblib.c:5287\n+dbdatecmp\n+int dbdatecmp(DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)\n+Compare DBDATETIME values, similar to strcmp(3).\n+Definition dblib.c:5786\n+dbmonthname\n+const char * dbmonthname(DBPROCESS *dbproc, char *language, int monthnum,\n+DBBOOL shortform)\n+Get name of a month, in some human language.\n+Definition dblib.c:6979\n+dbcurcmd\n+int dbcurcmd(DBPROCESS *dbproc)\n+Get number of the row just returned.\n+Definition dblib.c:6241\n+dbsetlbool\n+RETCODE dbsetlbool(LOGINREC *login, int value, int which)\n+Set a boolean value in a LOGINREC structure.\n+Definition dblib.c:896\n+dblastrow\n+DBINT dblastrow(DBPROCESS *dbproc)\n+Get number of the last row in the row buffer.\n+Definition dblib.c:7228\n+dbcmdrow\n+RETCODE dbcmdrow(DBPROCESS *dbproc)\n+See if the current command can return rows.\n+Definition dblib.c:4281\n+dbrows\n+RETCODE dbrows(DBPROCESS *dbproc)\n+Indicate whether a query returned rows.\n+Definition dblib.c:4055\n+dbsetavail\n+void dbsetavail(DBPROCESS *dbprocess)\n+Mark a DBPROCESS as \"available\".\n+Definition dblib.c:7296\n+dbiowdesc\n+int dbiowdesc(DBPROCESS *dbproc)\n+Get file descriptor of the socket used by a DBPROCESS to write data coming to\n+the server....\n+Definition dblib.c:7268\n+dbtds\n+int dbtds(DBPROCESS *dbprocess)\n+Get the TDS version in use for dbproc.\n+Definition dblib.c:6822\n+dbcurrow\n+DBINT dbcurrow(DBPROCESS *dbproc)\n+Get number of the row currently being read.\n+Definition dblib.c:6207\n+dbrowtype\n+STATUS dbrowtype(DBPROCESS *dbprocess)\n+Get returned row's type.\n+Definition dblib.c:6224\n+dbiordesc\n+int dbiordesc(DBPROCESS *dbproc)\n+Get file descriptor of the socket used by a DBPROCESS to read data coming from\n+the server....\n+Definition dblib.c:7252\n+dbsetllong\n+RETCODE dbsetllong(LOGINREC *login, long value, int which)\n+Set an integer value in a LOGINREC structure.\n+Definition dblib.c:825\n+dbsetlname\n+RETCODE dbsetlname(LOGINREC *login, const char *value, int which)\n+Set the value of a string in a LOGINREC structure.\n+Definition dblib.c:759\n+tdsdbopen\n+DBPROCESS * tdsdbopen(LOGINREC *login, const char *server, int msdblib)\n+Form a connection with the server.\n+Definition dblib.c:1179\n+dbdead\n+DBBOOL dbdead(DBPROCESS *dbproc)\n+Check if dbproc is an ex-parrot.\n+Definition dblib.c:5079\n+dbfirstrow\n+DBINT dbfirstrow(DBPROCESS *dbproc)\n+See if a server response has arrived.\n+Definition dblib.c:7213\n+LOGINREC\n+Definition bsqlodbc.c:100\n+col_t\n+Definition dbpivot.c:77\n+pivot_t\n+Definition dbpivot.c:772\n+tds_dblib_loginrec\n+Definition dblib.h:44\n+tds_dblib_dbprocess\n+Definition dblib.h:123\n+DBVARYCHAR\n+Definition sybdb.h:263\n+DBVARYBIN\n+Definition sybdb.h:269\n+DBNUMERIC\n+Definition sybdb.h:275\n+DBMONEY\n+Definition sybdb.h:284\n+DBMONEY4\n+Definition sybdb.h:290\n+DBDATETIME\n+Definition sybdb.h:295\n+DBDATETIME4\n+Definition sybdb.h:301\n+DBDATETIMEALL\n+Definition sybdb.h:307\n+DBDATETIMEALL::offset\n+DBSMALLINT offset\n+time offset\n+Definition sybdb.h:310\n+DBDATETIMEALL::time\n+DBUBIGINT time\n+time, 7 digit precision\n+Definition sybdb.h:308\n+DBDATETIMEALL::date\n+DBINT date\n+date, 0 = 1900-01-01\n+Definition sybdb.h:309\n+dbtypeinfo\n+Definition sybdb.h:336\n+dbstring\n+Definition sybdb.h:342\n+DBCOL\n+Definition sybdb.h:355\n+DBCOL2\n+Definition sybdb.h:374\n+tds_microsoft_dbdaterec\n+Definition sybdb.h:458\n+tds_sybase_dbdaterec\n+Definition sybdb.h:474\n+tds_microsoft_dbdaterec2\n+Definition sybdb.h:490\n+tds_sybase_dbdaterec2\n+Definition sybdb.h:506\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00494_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00494_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/syberror.h Source File\n+FreeTDS API: include/odbcss.h Source File\n \n \n \n \n \n \n \n@@ -74,19 +74,19 @@\n \n
    \n \n
    \n
    \n
    \n-
    syberror.h
    \n+
    odbcss.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 1998-1999 Brian Bruns
    \n+
    2 * Copyright (C) 2008 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,49 +96,381 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _syberror_h_
    \n-
    21#define _syberror_h_
    \n+
    20#ifndef _odbcss_h_
    \n+
    21#define _odbcss_h_
    \n
    22
    \n-
    23#ifdef __cplusplus
    \n-
    24extern "C"
    \n-
    25{
    \n-
    26#if 0
    \n-
    27}
    \n-
    28#endif
    \n+
    23#ifdef TDSODBC_BCP
    \n+
    24#include <sql.h>
    \n+
    25#endif
    \n+
    26
    \n+
    27#ifdef __cplusplus
    \n+
    28extern "C" {
    \n
    29#endif
    \n
    30
    \n-
    31static const char rcsid_syberror_h[] = "$Id: syberror.h,v 1.4 2004-10-28 12:42:12 freddy77 Exp $";
    \n-
    32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h, no_unused_syberror_h_warn };
    \n+
    31#define SQL_DIAG_SS_MSGSTATE (-1150)
    \n+
    32#define SQL_DIAG_SS_LINE (-1154)
    \n
    33
    \n-
    34/* severity levels, gleaned from google */
    \n-
    35#define EXINFO 1
    \n-
    36#define EXUSER 2
    \n-
    37#define EXNONFATAL 3
    \n-
    38#define EXCONVERSION 4
    \n-
    39#define EXSERVER 5
    \n-
    40#define EXTIME 6
    \n-
    41#define EXPROGRAM 7
    \n-
    42#define EXRESOURCE 8
    \n-
    43#define EXCOMM 9
    \n-
    44#define EXFATAL 10
    \n-
    45#define EXCONSISTENCY 11
    \n-
    46
    \n-
    47#ifdef __cplusplus
    \n-
    48#if 0
    \n-
    49{
    \n-
    50#endif
    \n-
    51}
    \n+
    34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233
    \n+
    35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234
    \n+
    36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235
    \n+
    37
    \n+
    38#ifndef SQL_SS_LENGTH_UNLIMITED
    \n+
    39#define SQL_SS_LENGTH_UNLIMITED 0
    \n+
    40#endif
    \n+
    41
    \n+
    42#ifndef SQL_COPT_SS_BASE
    \n+
    43#define SQL_COPT_SS_BASE 1200
    \n+
    44#endif
    \n+
    45
    \n+
    46#ifndef SQL_COPT_SS_MARS_ENABLED
    \n+
    47#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
    \n+
    48#endif
    \n+
    49
    \n+
    50#ifndef SQL_COPT_SS_OLDPWD
    \n+
    51#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
    \n
    52#endif
    \n
    53
    \n-
    54#endif
    \n+
    54#define SQL_INFO_FREETDS_TDS_VERSION 1300
    \n+
    55#define SQL_INFO_FREETDS_SOCKET 1301
    \n+
    56
    \n+
    57#ifndef SQL_MARS_ENABLED_NO
    \n+
    58#define SQL_MARS_ENABLED_NO 0
    \n+
    59#endif
    \n+
    60
    \n+
    61#ifndef SQL_MARS_ENABLED_YES
    \n+
    62#define SQL_MARS_ENABLED_YES 1
    \n+
    63#endif
    \n+
    64
    \n+
    65#ifndef SQL_SS_VARIANT
    \n+
    66#define SQL_SS_VARIANT (-150)
    \n+
    67#endif
    \n+
    68
    \n+
    69#ifndef SQL_SS_UDT
    \n+
    70#define SQL_SS_UDT (-151)
    \n+
    71#endif
    \n+
    72
    \n+
    73#ifndef SQL_SS_XML
    \n+
    74#define SQL_SS_XML (-152)
    \n+
    75#endif
    \n+
    76
    \n+
    77#ifndef SQL_SS_TABLE
    \n+
    78#define SQL_SS_TABLE (-153)
    \n+
    79#endif
    \n+
    80
    \n+
    81#ifndef SQL_SS_TIME2
    \n+
    82#define SQL_SS_TIME2 (-154)
    \n+
    83#endif
    \n+
    84
    \n+
    85#ifndef SQL_SS_TIMESTAMPOFFSET
    \n+
    86#define SQL_SS_TIMESTAMPOFFSET (-155)
    \n+
    87#endif
    \n+
    88
    \n+
    89/*
    \n+
    90 * these types are used from conversion from client to server
    \n+
    91 */
    \n+
    92#ifndef SQL_C_SS_TIME2
    \n+
    93#define SQL_C_SS_TIME2 (0x4000)
    \n+
    94#endif
    \n+
    95
    \n+
    96#ifndef SQL_C_SS_TIMESTAMPOFFSET
    \n+
    97#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
    \n+
    98#endif
    \n+
    99
    \n+
    100#ifndef SQL_CA_SS_BASE
    \n+
    101#define SQL_CA_SS_BASE 1200
    \n+
    102#endif
    \n+
    103
    \n+
    104#ifndef SQL_CA_SS_UDT_CATALOG_NAME
    \n+
    105#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
    \n+
    106#endif
    \n+
    107
    \n+
    108#ifndef SQL_CA_SS_UDT_SCHEMA_NAME
    \n+
    109#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
    \n+
    110#endif
    \n+
    111
    \n+
    112#ifndef SQL_CA_SS_UDT_TYPE_NAME
    \n+
    113#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
    \n+
    114#endif
    \n+
    115
    \n+
    116#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
    \n+
    117#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
    \n+
    118#endif
    \n+
    119
    \n+
    120#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
    \n+
    121#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
    \n+
    122#endif
    \n+
    123
    \n+
    124#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
    \n+
    125#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
    \n+
    126#endif
    \n+
    127
    \n+
    128#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
    \n+
    129#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
    \n+
    130#endif
    \n+
    131
    \n+
    \n+
    132typedef struct tagSS_TIME2_STRUCT {
    \n+
    133 SQLUSMALLINT hour;
    \n+
    134 SQLUSMALLINT minute;
    \n+
    135 SQLUSMALLINT second;
    \n+
    136 SQLUINTEGER fraction;
    \n+\n+
    \n+
    138
    \n+
    \n+\n+
    140 SQLSMALLINT year;
    \n+
    141 SQLUSMALLINT month;
    \n+
    142 SQLUSMALLINT day;
    \n+
    143 SQLUSMALLINT hour;
    \n+
    144 SQLUSMALLINT minute;
    \n+
    145 SQLUSMALLINT second;
    \n+
    146 SQLUINTEGER fraction;
    \n+
    147 SQLSMALLINT timezone_hour;
    \n+
    148 SQLSMALLINT timezone_minute;
    \n+\n+
    \n+
    150
    \n+
    151
    \n+
    152#ifdef TDSODBC_BCP
    \n+
    153
    \n+
    154#ifndef SUCCEED
    \n+
    155#define SUCCEED 1
    \n+
    156#endif
    \n+
    157#ifndef FAIL
    \n+
    158#define FAIL 0
    \n+
    159#endif
    \n+
    160
    \n+
    161#ifndef BCPKEEPIDENTITY
    \n+
    162#define BCPKEEPIDENTITY 8
    \n+
    163#endif
    \n+
    164#ifndef BCPHINTS
    \n+
    165#define BCPHINTS 6
    \n+
    166#endif
    \n+
    167
    \n+
    168#define BCP_DIRECTION_IN 1
    \n+
    169
    \n+
    170#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
    \n+
    171#define SQL_BCP_OFF 0
    \n+
    172#define SQL_BCP_ON 1
    \n+
    173
    \n+
    174#define SQL_COPT_TDSODBC_IMPL_BASE 1500
    \n+
    175#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
    \n+
    176#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)
    \n+
    177#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
    \n+
    178#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
    \n+
    179#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
    \n+
    180#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
    \n+
    181#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
    \n+
    182#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
    \n+
    183
    \n+
    184#define SQL_VARLEN_DATA -10
    \n+
    185
    \n+
    186/* copied from sybdb.h which was copied from tds.h */
    \n+
    187/* TODO find a much better way... */
    \n+
    188enum
    \n+
    189{
    \n+
    190 BCP_TYPE_SQLCHAR = 47, /* 0x2F */
    \n+
    191#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
    \n+
    192 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */
    \n+
    193#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
    \n+
    194 BCP_TYPE_SQLINTN = 38, /* 0x26 */
    \n+
    195#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
    \n+
    196 BCP_TYPE_SQLINT1 = 48, /* 0x30 */
    \n+
    197#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
    \n+
    198 BCP_TYPE_SQLINT2 = 52, /* 0x34 */
    \n+
    199#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
    \n+
    200 BCP_TYPE_SQLINT4 = 56, /* 0x38 */
    \n+
    201#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
    \n+
    202 BCP_TYPE_SQLINT8 = 127, /* 0x7F */
    \n+
    203#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
    \n+
    204 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */
    \n+
    205#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
    \n+
    206 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */
    \n+
    207#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
    \n+
    208 BCP_TYPE_SQLBIT = 50, /* 0x32 */
    \n+
    209#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
    \n+
    210 BCP_TYPE_SQLBITN = 104, /* 0x68 */
    \n+
    211#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
    \n+
    212 BCP_TYPE_SQLTEXT = 35, /* 0x23 */
    \n+
    213#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
    \n+
    214 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */
    \n+
    215#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
    \n+
    216 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */
    \n+
    217#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
    \n+
    218 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */
    \n+
    219#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
    \n+
    220 BCP_TYPE_SQLMONEY = 60, /* 0x3C */
    \n+
    221#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
    \n+
    222 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */
    \n+
    223#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
    \n+
    224 BCP_TYPE_SQLREAL = 59, /* 0x3B */
    \n+
    225 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */
    \n+
    226#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
    \n+
    227#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
    \n+
    228 BCP_TYPE_SQLBINARY = 45, /* 0x2D */
    \n+
    229#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
    \n+
    230 BCP_TYPE_SQLVOID = 31, /* 0x1F */
    \n+
    231#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
    \n+
    232 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */
    \n+
    233#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
    \n+
    234 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */
    \n+
    235#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
    \n+
    236 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */
    \n+
    237#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
    \n+
    238 BCP_TYPE_SQLFLTN = 109, /* 0x6D */
    \n+
    239#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
    \n+
    240 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */
    \n+
    241#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
    \n+
    242 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */
    \n+
    243#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
    \n+
    244 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */
    \n+
    245#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
    \n+
    246 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */
    \n+
    247#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
    \n+
    248 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */
    \n+
    249#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
    \n+
    250};
    \n+
    251
    \n+
    252typedef struct
    \n+
    253{
    \n+
    254 int dtdays;
    \n+
    255 int dttime;
    \n+
    256} DBDATETIME;
    \n+
    257
    \n+
    258#ifdef _MSC_VER
    \n+
    259#define TDSODBC_INLINE __inline
    \n+
    260#else
    \n+
    261#define TDSODBC_INLINE __inline__
    \n+
    262#endif
    \n+
    263
    \n+
    264struct tdsodbc_impl_bcp_init_params
    \n+
    265{
    \n+
    266 const void *tblname;
    \n+
    267 const void *hfile;
    \n+
    268 const void *errfile;
    \n+
    269 int direction;
    \n+
    270};
    \n+
    271
    \n+
    272static TDSODBC_INLINE RETCODE SQL_API
    \n+
    273bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char *errfile, int direction)
    \n+
    274{
    \n+
    275 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
    \n+
    276 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    277}
    \n+
    278
    \n+
    279static TDSODBC_INLINE RETCODE SQL_API
    \n+
    280bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const SQLWCHAR *errfile, int direction)
    \n+
    281{
    \n+
    282 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
    \n+
    283 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    284}
    \n+
    285
    \n+
    286struct tdsodbc_impl_bcp_control_params
    \n+
    287{
    \n+
    288 int field;
    \n+
    289 void *value;
    \n+
    290};
    \n+
    291
    \n+
    292static TDSODBC_INLINE RETCODE SQL_API
    \n+
    293bcp_control(HDBC hdbc, int field, void *value)
    \n+
    294{
    \n+
    295 struct tdsodbc_impl_bcp_control_params params = {field, value};
    \n+
    296 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    297}
    \n+
    298
    \n+
    299struct tdsodbc_impl_bcp_colptr_params
    \n+
    300{
    \n+
    301 const unsigned char * colptr;
    \n+
    302 int table_column;
    \n+
    303};
    \n+
    304
    \n+
    305static TDSODBC_INLINE RETCODE SQL_API
    \n+
    306bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)
    \n+
    307{
    \n+
    308 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
    \n+
    309 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    310}
    \n+
    311
    \n+
    312static TDSODBC_INLINE RETCODE SQL_API
    \n+
    313bcp_sendrow(HDBC hdbc)
    \n+
    314{
    \n+
    315 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    316}
    \n+
    317
    \n+
    318struct tdsodbc_impl_bcp_batch_params
    \n+
    319{
    \n+
    320 int rows;
    \n+
    321};
    \n+
    322
    \n+
    323static TDSODBC_INLINE int SQL_API
    \n+
    324bcp_batch(HDBC hdbc)
    \n+
    325{
    \n+
    326 struct tdsodbc_impl_bcp_batch_params params = {-1};
    \n+
    327 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, &params, SQL_IS_POINTER)) ? params.rows : -1;
    \n+
    328}
    \n+
    329
    \n+
    330struct tdsodbc_impl_bcp_done_params
    \n+
    331{
    \n+
    332 int rows;
    \n+
    333};
    \n+
    334
    \n+
    335static TDSODBC_INLINE int SQL_API
    \n+
    336bcp_done(HDBC hdbc)
    \n+
    337{
    \n+
    338 struct tdsodbc_impl_bcp_done_params params = {-1};
    \n+
    339 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, &params, SQL_IS_POINTER)) ? params.rows : -1;
    \n+
    340}
    \n+
    341
    \n+
    342struct tdsodbc_impl_bcp_bind_params
    \n+
    343{
    \n+
    344 const unsigned char * varaddr;
    \n+
    345 int prefixlen;
    \n+
    346 int varlen;
    \n+
    347 const unsigned char * terminator;
    \n+
    348 int termlen;
    \n+
    349 int vartype;
    \n+
    350 int table_column;
    \n+
    351};
    \n+
    352
    \n+
    353static TDSODBC_INLINE RETCODE SQL_API
    \n+
    354bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int varlen,
    \n+
    355 const unsigned char * terminator, int termlen, int vartype, int table_column)
    \n+
    356{
    \n+
    357 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
    \n+
    358 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, &params, SQL_IS_POINTER)) ? SUCCEED : FAIL;
    \n+
    359}
    \n+
    360
    \n+
    361#ifdef UNICODE
    \n+
    362#define bcp_init bcp_initW
    \n+
    363#else
    \n+
    364#define bcp_init bcp_initA
    \n+
    365#endif
    \n+
    366
    \n+
    367#endif /* TDSODBC_BCP */
    \n+
    368
    \n+
    369#ifdef __cplusplus
    \n+
    370}
    \n+
    371#endif
    \n+
    372
    \n+
    373#endif /* _odbcss_h_ */
    \n+
    RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
    Set BCP options for uploading a datafile.
    Definition bcp.c:544
    \n+
    RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
    Override bcp_bind() by pointing to a different host variable.
    Definition bcp.c:671
    \n+
    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:2079
    \n+
    DBINT bcp_done(DBPROCESS *dbproc)
    Conclude the transfer of data from program variables.
    Definition bcp.c:2037
    \n+
    DBINT bcp_batch(DBPROCESS *dbproc)
    Commit a set of rows to the table.
    Definition bcp.c:2010
    \n+
    RETCODE bcp_sendrow(DBPROCESS *dbproc)
    Write data in host variables to the table.
    Definition bcp.c:1381
    \n+
    Definition odbcss.h:132
    \n+
    Definition odbcss.h:139
    \n+
    Definition sybdb.h:295
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,17 +6,17 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * include\n-syberror.h\n+odbcss.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 1998-1999 Brian Bruns\n+ 2 * Copyright (C) 2008 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -26,47 +26,410 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _syberror_h_\n- 21#define _syberror_h_\n+ 20#ifndef _odbcss_h_\n+ 21#define _odbcss_h_\n 22\n- 23#ifdef __cplusplus\n- 24extern \"C\"\n- 25{\n- 26#if 0\n- 27}\n- 28#endif\n+ 23#ifdef TDSODBC_BCP\n+ 24#include \n+ 25#endif\n+ 26\n+ 27#ifdef __cplusplus\n+ 28extern \"C\" {\n 29#endif\n 30\n- 31static const char rcsid_syberror_h[] = \"$Id: syberror.h,v 1.4 2004-10-28 12:\n-42:12 freddy77 Exp $\";\n- 32static const void *const no_unused_syberror_h_warn[] = { rcsid_syberror_h,\n-no_unused_syberror_h_warn };\n+ 31#define SQL_DIAG_SS_MSGSTATE (-1150)\n+ 32#define SQL_DIAG_SS_LINE (-1154)\n 33\n- 34/* severity levels, gleaned from google */\n- 35#define EXINFO 1\n- 36#define EXUSER 2\n- 37#define EXNONFATAL 3\n- 38#define EXCONVERSION 4\n- 39#define EXSERVER 5\n- 40#define EXTIME 6\n- 41#define EXPROGRAM 7\n- 42#define EXRESOURCE 8\n- 43#define EXCOMM 9\n- 44#define EXFATAL 10\n- 45#define EXCONSISTENCY 11\n- 46\n- 47#ifdef __cplusplus\n- 48#if 0\n- 49{\n- 50#endif\n- 51}\n+ 34#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233\n+ 35#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234\n+ 36#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235\n+ 37\n+ 38#ifndef SQL_SS_LENGTH_UNLIMITED\n+ 39#define SQL_SS_LENGTH_UNLIMITED 0\n+ 40#endif\n+ 41\n+ 42#ifndef SQL_COPT_SS_BASE\n+ 43#define SQL_COPT_SS_BASE 1200\n+ 44#endif\n+ 45\n+ 46#ifndef SQL_COPT_SS_MARS_ENABLED\n+ 47#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)\n+ 48#endif\n+ 49\n+ 50#ifndef SQL_COPT_SS_OLDPWD\n+ 51#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)\n 52#endif\n 53\n- 54#endif\n+ 54#define SQL_INFO_FREETDS_TDS_VERSION 1300\n+ 55#define SQL_INFO_FREETDS_SOCKET 1301\n+ 56\n+ 57#ifndef SQL_MARS_ENABLED_NO\n+ 58#define SQL_MARS_ENABLED_NO 0\n+ 59#endif\n+ 60\n+ 61#ifndef SQL_MARS_ENABLED_YES\n+ 62#define SQL_MARS_ENABLED_YES 1\n+ 63#endif\n+ 64\n+ 65#ifndef SQL_SS_VARIANT\n+ 66#define SQL_SS_VARIANT (-150)\n+ 67#endif\n+ 68\n+ 69#ifndef SQL_SS_UDT\n+ 70#define SQL_SS_UDT (-151)\n+ 71#endif\n+ 72\n+ 73#ifndef SQL_SS_XML\n+ 74#define SQL_SS_XML (-152)\n+ 75#endif\n+ 76\n+ 77#ifndef SQL_SS_TABLE\n+ 78#define SQL_SS_TABLE (-153)\n+ 79#endif\n+ 80\n+ 81#ifndef SQL_SS_TIME2\n+ 82#define SQL_SS_TIME2 (-154)\n+ 83#endif\n+ 84\n+ 85#ifndef SQL_SS_TIMESTAMPOFFSET\n+ 86#define SQL_SS_TIMESTAMPOFFSET (-155)\n+ 87#endif\n+ 88\n+ 89/*\n+ 90 * these types are used from conversion from client to server\n+ 91 */\n+ 92#ifndef SQL_C_SS_TIME2\n+ 93#define SQL_C_SS_TIME2 (0x4000)\n+ 94#endif\n+ 95\n+ 96#ifndef SQL_C_SS_TIMESTAMPOFFSET\n+ 97#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)\n+ 98#endif\n+ 99\n+ 100#ifndef SQL_CA_SS_BASE\n+ 101#define SQL_CA_SS_BASE 1200\n+ 102#endif\n+ 103\n+ 104#ifndef SQL_CA_SS_UDT_CATALOG_NAME\n+ 105#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)\n+ 106#endif\n+ 107\n+ 108#ifndef SQL_CA_SS_UDT_SCHEMA_NAME\n+ 109#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)\n+ 110#endif\n+ 111\n+ 112#ifndef SQL_CA_SS_UDT_TYPE_NAME\n+ 113#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)\n+ 114#endif\n+ 115\n+ 116#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME\n+ 117#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)\n+ 118#endif\n+ 119\n+ 120#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME\n+ 121#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)\n+ 122#endif\n+ 123\n+ 124#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME\n+ 125#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)\n+ 126#endif\n+ 127\n+ 128#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME\n+ 129#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)\n+ 130#endif\n+ 131\n+132typedef struct tagSS_TIME2_STRUCT {\n+ 133 SQLUSMALLINT hour;\n+ 134 SQLUSMALLINT minute;\n+ 135 SQLUSMALLINT second;\n+ 136 SQLUINTEGER fraction;\n+ 137} SQL_SS_TIME2_STRUCT;\n+ 138\n+139typedef struct tagSS_TIMESTAMPOFFSET_STRUCT {\n+ 140 SQLSMALLINT year;\n+ 141 SQLUSMALLINT month;\n+ 142 SQLUSMALLINT day;\n+ 143 SQLUSMALLINT hour;\n+ 144 SQLUSMALLINT minute;\n+ 145 SQLUSMALLINT second;\n+ 146 SQLUINTEGER fraction;\n+ 147 SQLSMALLINT timezone_hour;\n+ 148 SQLSMALLINT timezone_minute;\n+ 149} SQL_SS_TIMESTAMPOFFSET_STRUCT;\n+ 150\n+ 151\n+ 152#ifdef TDSODBC_BCP\n+ 153\n+ 154#ifndef SUCCEED\n+ 155#define SUCCEED 1\n+ 156#endif\n+ 157#ifndef FAIL\n+ 158#define FAIL 0\n+ 159#endif\n+ 160\n+ 161#ifndef BCPKEEPIDENTITY\n+ 162#define BCPKEEPIDENTITY 8\n+ 163#endif\n+ 164#ifndef BCPHINTS\n+ 165#define BCPHINTS 6\n+ 166#endif\n+ 167\n+ 168#define BCP_DIRECTION_IN 1\n+ 169\n+ 170#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)\n+ 171#define SQL_BCP_OFF 0\n+ 172#define SQL_BCP_ON 1\n+ 173\n+ 174#define SQL_COPT_TDSODBC_IMPL_BASE 1500\n+ 175#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)\n+ 176#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)\n+ 177#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)\n+ 178#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)\n+ 179#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)\n+ 180#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)\n+ 181#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)\n+ 182#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)\n+ 183\n+ 184#define SQL_VARLEN_DATA -10\n+ 185\n+ 186/* copied from sybdb.h which was copied from tds.h */\n+ 187/* TODO find a much better way... */\n+ 188enum\n+ 189{\n+ 190 BCP_TYPE_SQLCHAR = 47, /* 0x2F */\n+ 191#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR\n+ 192 BCP_TYPE_SQLVARCHAR = 39, /* 0x27 */\n+ 193#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR\n+ 194 BCP_TYPE_SQLINTN = 38, /* 0x26 */\n+ 195#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN\n+ 196 BCP_TYPE_SQLINT1 = 48, /* 0x30 */\n+ 197#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1\n+ 198 BCP_TYPE_SQLINT2 = 52, /* 0x34 */\n+ 199#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2\n+ 200 BCP_TYPE_SQLINT4 = 56, /* 0x38 */\n+ 201#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4\n+ 202 BCP_TYPE_SQLINT8 = 127, /* 0x7F */\n+ 203#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8\n+ 204 BCP_TYPE_SQLFLT8 = 62, /* 0x3E */\n+ 205#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8\n+ 206 BCP_TYPE_SQLDATETIME = 61, /* 0x3D */\n+ 207#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME\n+ 208 BCP_TYPE_SQLBIT = 50, /* 0x32 */\n+ 209#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT\n+ 210 BCP_TYPE_SQLBITN = 104, /* 0x68 */\n+ 211#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN\n+ 212 BCP_TYPE_SQLTEXT = 35, /* 0x23 */\n+ 213#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT\n+ 214 BCP_TYPE_SQLNTEXT = 99, /* 0x63 */\n+ 215#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT\n+ 216 BCP_TYPE_SQLIMAGE = 34, /* 0x22 */\n+ 217#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE\n+ 218 BCP_TYPE_SQLMONEY4 = 122, /* 0x7A */\n+ 219#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4\n+ 220 BCP_TYPE_SQLMONEY = 60, /* 0x3C */\n+ 221#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY\n+ 222 BCP_TYPE_SQLDATETIME4 = 58, /* 0x3A */\n+ 223#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4\n+ 224 BCP_TYPE_SQLREAL = 59, /* 0x3B */\n+ 225 BCP_TYPE_SQLFLT4 = 59, /* 0x3B */\n+ 226#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL\n+ 227#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4\n+ 228 BCP_TYPE_SQLBINARY = 45, /* 0x2D */\n+ 229#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY\n+ 230 BCP_TYPE_SQLVOID = 31, /* 0x1F */\n+ 231#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID\n+ 232 BCP_TYPE_SQLVARBINARY = 37, /* 0x25 */\n+ 233#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY\n+ 234 BCP_TYPE_SQLNUMERIC = 108, /* 0x6C */\n+ 235#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC\n+ 236 BCP_TYPE_SQLDECIMAL = 106, /* 0x6A */\n+ 237#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL\n+ 238 BCP_TYPE_SQLFLTN = 109, /* 0x6D */\n+ 239#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN\n+ 240 BCP_TYPE_SQLMONEYN = 110, /* 0x6E */\n+ 241#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN\n+ 242 BCP_TYPE_SQLDATETIMN = 111, /* 0x6F */\n+ 243#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN\n+ 244 BCP_TYPE_SQLNVARCHAR = 103, /* 0x67 */\n+ 245#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR\n+ 246 BCP_TYPE_SQLUNIQUEID = 36, /* 0x24 */\n+ 247#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID\n+ 248 BCP_TYPE_SQLDATETIME2 = 42, /* 0x2a */\n+ 249#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2\n+ 250};\n+ 251\n+ 252typedef struct\n+ 253{\n+ 254 int dtdays;\n+ 255 int dttime;\n+ 256} DBDATETIME;\n+ 257\n+ 258#ifdef _MSC_VER\n+ 259#define TDSODBC_INLINE __inline\n+ 260#else\n+ 261#define TDSODBC_INLINE __inline__\n+ 262#endif\n+ 263\n+ 264struct tdsodbc_impl_bcp_init_params\n+ 265{\n+ 266 const void *tblname;\n+ 267 const void *hfile;\n+ 268 const void *errfile;\n+ 269 int direction;\n+ 270};\n+ 271\n+ 272static TDSODBC_INLINE RETCODE SQL_API\n+ 273bcp_initA(HDBC hdbc, const char *tblname, const char *hfile, const char\n+*errfile, int direction)\n+ 274{\n+ 275 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile,\n+direction};\n+ 276 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 277}\n+ 278\n+ 279static TDSODBC_INLINE RETCODE SQL_API\n+ 280bcp_initW(HDBC hdbc, const SQLWCHAR *tblname, const SQLWCHAR *hfile, const\n+SQLWCHAR *errfile, int direction)\n+ 281{\n+ 282 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile,\n+direction};\n+ 283 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 284}\n+ 285\n+ 286struct tdsodbc_impl_bcp_control_params\n+ 287{\n+ 288 int field;\n+ 289 void *value;\n+ 290};\n+ 291\n+ 292static TDSODBC_INLINE RETCODE SQL_API\n+ 293bcp_control(HDBC hdbc, int field, void *value)\n+ 294{\n+ 295 struct tdsodbc_impl_bcp_control_params params = {field, value};\n+ 296 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 297}\n+ 298\n+ 299struct tdsodbc_impl_bcp_colptr_params\n+ 300{\n+ 301 const unsigned char * colptr;\n+ 302 int table_column;\n+ 303};\n+ 304\n+ 305static TDSODBC_INLINE RETCODE SQL_API\n+ 306bcp_colptr(HDBC hdbc, const unsigned char * colptr, int table_column)\n+ 307{\n+ 308 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};\n+ 309 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 310}\n+ 311\n+ 312static TDSODBC_INLINE RETCODE SQL_API\n+ 313bcp_sendrow(HDBC hdbc)\n+ 314{\n+ 315 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 316}\n+ 317\n+ 318struct tdsodbc_impl_bcp_batch_params\n+ 319{\n+ 320 int rows;\n+ 321};\n+ 322\n+ 323static TDSODBC_INLINE int SQL_API\n+ 324bcp_batch(HDBC hdbc)\n+ 325{\n+ 326 struct tdsodbc_impl_bcp_batch_params params = {-1};\n+ 327 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;\n+ 328}\n+ 329\n+ 330struct tdsodbc_impl_bcp_done_params\n+ 331{\n+ 332 int rows;\n+ 333};\n+ 334\n+ 335static TDSODBC_INLINE int SQL_API\n+ 336bcp_done(HDBC hdbc)\n+ 337{\n+ 338 struct tdsodbc_impl_bcp_done_params params = {-1};\n+ 339 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;\n+ 340}\n+ 341\n+ 342struct tdsodbc_impl_bcp_bind_params\n+ 343{\n+ 344 const unsigned char * varaddr;\n+ 345 int prefixlen;\n+ 346 int varlen;\n+ 347 const unsigned char * terminator;\n+ 348 int termlen;\n+ 349 int vartype;\n+ 350 int table_column;\n+ 351};\n+ 352\n+ 353static TDSODBC_INLINE RETCODE SQL_API\n+ 354bcp_bind(HDBC hdbc, const unsigned char * varaddr, int prefixlen, int\n+varlen,\n+ 355 const unsigned char * terminator, int termlen, int vartype, int\n+table_column)\n+ 356{\n+ 357 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen,\n+terminator, termlen, vartype, table_column};\n+ 358 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc,\n+SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;\n+ 359}\n+ 360\n+ 361#ifdef UNICODE\n+ 362#define bcp_init bcp_initW\n+ 363#else\n+ 364#define bcp_init bcp_initA\n+ 365#endif\n+ 366\n+ 367#endif /* TDSODBC_BCP */\n+ 368\n+ 369#ifdef __cplusplus\n+ 370}\n+ 371#endif\n+ 372\n+ 373#endif /* _odbcss_h_ */\n+bcp_control\n+RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)\n+Set BCP options for uploading a datafile.\n+Definition bcp.c:544\n+bcp_colptr\n+RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)\n+Override bcp_bind() by pointing to a different host variable.\n+Definition bcp.c:671\n+bcp_bind\n+RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen,\n+BYTE *terminator, int termlen, int db_vartype, int table_column)\n+Bind a program host variable to a database column.\n+Definition bcp.c:2079\n+bcp_done\n+DBINT bcp_done(DBPROCESS *dbproc)\n+Conclude the transfer of data from program variables.\n+Definition bcp.c:2037\n+bcp_batch\n+DBINT bcp_batch(DBPROCESS *dbproc)\n+Commit a set of rows to the table.\n+Definition bcp.c:2010\n+bcp_sendrow\n+RETCODE bcp_sendrow(DBPROCESS *dbproc)\n+Write data in host variables to the table.\n+Definition bcp.c:1381\n+tagSS_TIME2_STRUCT\n+Definition odbcss.h:132\n+tagSS_TIMESTAMPOFFSET_STRUCT\n+Definition odbcss.h:139\n+DBDATETIME\n+Definition sybdb.h:295\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00497_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00497_source.html", "unified_diff": "@@ -265,15 +265,15 @@\n
    166 dblib_msdblib = 0
    \n
    167#endif
    \n
    168};
    \n
    169
    \n
    170/*
    \n
    171 * internal prototypes
    \n
    172 */
    \n-
    173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* varaddr);
    \n+
    173RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* varaddr);
    \n
    174void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, const BYTE * src, DBINT srclen,
    \n
    175 BYTE * dest, DBINT destlen,
    \n
    176 int bindtype, DBINT *indicator);
    \n
    177
    \n
    178int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...);
    \n
    179int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
    \n
    180int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
    \n@@ -306,15 +306,15 @@\n
    207#endif
    \n
    208}
    \n
    209#endif
    \n
    210
    \n
    211#include <freetds/popvis.h>
    \n
    212
    \n
    213#endif
    \n-
    RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    Definition dblib.c:529
    \n+
    RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
    Definition dblib.c:529
    \n
    int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...)
    Call client-installed error handler.
    Definition dblib.c:8148
    \n
    int _dblib_check_and_handle_interrupt(void *vdbproc)
    check interrupts for libtds.
    Definition dbutil.c:192
    \n
    Definition buffering.h:1
    \n
    Definition dblib.h:44
    \n
    Definition dblib.h:52
    \n
    Definition dblib.h:62
    \n
    Definition dblib.h:74
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00503_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00503_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: vms/stdint.h Source File\n+FreeTDS API: vms/vargdefs.h Source File\n \n \n \n \n \n \n \n@@ -74,18 +74,87 @@\n \n
    \n \n
    \n \n
    \n-
    stdint.h
    \n+
    vargdefs.h
    \n
    \n
    \n-
    1#include <inttypes.h>
    \n+
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n+
    2 * Copyright (C) 2010 Craig A. Berry craigberry@mac.com
    \n+
    3 *
    \n+
    4 * This library is free software; you can redistribute it and/or
    \n+
    5 * modify it under the terms of the GNU Library General Public
    \n+
    6 * License as published by the Free Software Foundation; either
    \n+
    7 * version 2 of the License, or (at your option) any later version.
    \n+
    8 *
    \n+
    9 * This library is distributed in the hope that it will be useful,
    \n+
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    \n+
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    \n+
    12 * Library General Public License for more details.
    \n+
    13 *
    \n+
    14 * You should have received a copy of the GNU Library General Public
    \n+
    15 * License along with this library; if not, write to the
    \n+
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n+
    17 * Boston, MA 02111-1307, USA.
    \n+
    18
    \n+
    19/*
    \n+
    20 * Definitions used by the VMSARG parsing and mapping routines.
    \n+
    21 *
    \n+
    22 * Based on VMSARG Version 2.0 by Tom Wade <t.wade@vms.eurokom.ei>
    \n+
    23 *
    \n+
    24 * Extensively revised for inclusion in FreeTDS by Craig A. Berry.
    \n+
    25 *
    \n+
    26 * From the VMSARG 2.0 documentation:
    \n+
    27 *
    \n+
    28 * The product is aimed at . . . people who are porting a package from
    \n+
    29 * Unix to VMS. This software is made freely available for inclusion in
    \n+
    30 * such products, whether they are freeware, public domain or commercial.
    \n+
    31 * No licensing is required.
    \n+
    32 */
    \n+
    33
    \n+
    34#if __CRTL_VER >= 70302000 && !defined(__VAX)
    \n+
    35#define QUAL_LENGTH (4000+1)
    \n+
    36#define S_LENGTH (4096+1)
    \n+
    37#else
    \n+
    38#define QUAL_LENGTH (255+1)
    \n+
    39#define S_LENGTH (1024+1)
    \n+
    40#endif
    \n+
    41
    \n+
    42#define MAX_ARGS 255
    \n+
    43
    \n+
    44/* bit fields for arg flags.
    \n+
    45*/
    \n+
    46
    \n+
    47#define VARG_M_AFFIRM 1
    \n+
    48#define VARG_M_NEGATIVE 2
    \n+
    49#define VARG_M_KEYWORDS 4
    \n+
    50#define VARG_M_SEPARATOR 8
    \n+
    51#define VARG_M_DATE 16
    \n+
    52#define VARG_M_APPEND 32
    \n+
    53#define VARG_M_HELP 64
    \n+
    54
    \n+
    55/* bit fields for action flags.
    \n+
    56*/
    \n+
    57
    \n+
    58#define VARGACT_M_UPPER 1
    \n+
    59#define VARGACT_M_LOWER 2
    \n+
    60#define VARGACT_M_SPECIAL 4
    \n+
    61#define VARGACT_M_ESCAPE 8
    \n+
    62#define VARGACT_M_DOUBLE 16
    \n+
    63#define VARGACT_M_IMAGE 32
    \n+
    64#define VARGACT_M_SYMBOL 64
    \n+
    65#define VARGACT_M_COMMAND 128
    \n+
    66#define VARGACT_M_RETURN 256
    \n+
    67#define VARGACT_M_PROTECT 512
    \n+
    68#define VARGACT_M_UNIXARG 1024
    \n+
    69
    \n+
    70#define VARGACT_M_PROTMASK 1+2+4+8+16
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,12 +6,81 @@\n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n * vms\n-stdint.h\n- 1#include \n+vargdefs.h\n+ 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n+ 2 * Copyright (C) 2010 Craig A. Berry craigberry@mac.com\n+ 3 *\n+ 4 * This library is free software; you can redistribute it and/or\n+ 5 * modify it under the terms of the GNU Library General Public\n+ 6 * License as published by the Free Software Foundation; either\n+ 7 * version 2 of the License, or (at your option) any later version.\n+ 8 *\n+ 9 * This library is distributed in the hope that it will be useful,\n+ 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ 12 * Library General Public License for more details.\n+ 13 *\n+ 14 * You should have received a copy of the GNU Library General Public\n+ 15 * License along with this library; if not, write to the\n+ 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+ 17 * Boston, MA 02111-1307, USA.\n+ 18\n+ 19/*\n+ 20 * Definitions used by the VMSARG parsing and mapping routines.\n+ 21 *\n+ 22 * Based on VMSARG Version 2.0 by Tom Wade \n+ 23 *\n+ 24 * Extensively revised for inclusion in FreeTDS by Craig A. Berry.\n+ 25 *\n+ 26 * From the VMSARG 2.0 documentation:\n+ 27 *\n+ 28 * The product is aimed at . . . people who are porting a package from\n+ 29 * Unix to VMS. This software is made freely available for inclusion in\n+ 30 * such products, whether they are freeware, public domain or commercial.\n+ 31 * No licensing is required.\n+ 32 */\n+ 33\n+ 34#if __CRTL_VER >= 70302000 && !defined(__VAX)\n+ 35#define QUAL_LENGTH (4000+1)\n+ 36#define S_LENGTH (4096+1)\n+ 37#else\n+ 38#define QUAL_LENGTH (255+1)\n+ 39#define S_LENGTH (1024+1)\n+ 40#endif\n+ 41\n+ 42#define MAX_ARGS 255\n+ 43\n+ 44/* bit fields for arg flags.\n+ 45*/\n+ 46\n+ 47#define VARG_M_AFFIRM 1\n+ 48#define VARG_M_NEGATIVE 2\n+ 49#define VARG_M_KEYWORDS 4\n+ 50#define VARG_M_SEPARATOR 8\n+ 51#define VARG_M_DATE 16\n+ 52#define VARG_M_APPEND 32\n+ 53#define VARG_M_HELP 64\n+ 54\n+ 55/* bit fields for action flags.\n+ 56*/\n+ 57\n+ 58#define VARGACT_M_UPPER 1\n+ 59#define VARGACT_M_LOWER 2\n+ 60#define VARGACT_M_SPECIAL 4\n+ 61#define VARGACT_M_ESCAPE 8\n+ 62#define VARGACT_M_DOUBLE 16\n+ 63#define VARGACT_M_IMAGE 32\n+ 64#define VARGACT_M_SYMBOL 64\n+ 65#define VARGACT_M_COMMAND 128\n+ 66#define VARGACT_M_RETURN 256\n+ 67#define VARGACT_M_PROTECT 512\n+ 68#define VARGACT_M_UNIXARG 1024\n+ 69\n+ 70#define VARGACT_M_PROTMASK 1+2+4+8+16\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00524.html", "source2": "./usr/share/doc/freetds-doc/reference/a00524.html", "unified_diff": "@@ -78,15 +78,15 @@\n
    Member bcp_options (DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
    \n
    Simplify. Remove valuelen, and dbproc->bcpinfo->hint = strdup(hints[i])
    \n
    Member dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
    \n
    Never fails, but only because failure conditions aren't checked.
    \n
    \n
    Member dbcancel (DBPROCESS *dbproc)
    \n
    Check for failure and return accordingly.
    \n-
    Member dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
    \n+
    Member dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
    \n
    Support cursor rows.
    \n
    Member dbconvert_ps (DBPROCESS *dbproc, int db_srctype, const BYTE *src, DBINT srclen, int db_desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
    \n

    What happens if client does not reset values?

    \n

    \n

    Microsoft and Sybase define this function differently.
    \n

    \n
    \n@@ -118,15 +118,15 @@\n

    \n

    \n

    Support alternative to '?' for the replacement character.
    \n

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

    use asprintf() to avoid buffer overflow.

    \n

    \n

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

    \n
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527.html", "source2": "./usr/share/doc/freetds-doc/reference/a00527.html", "unified_diff": "@@ -4514,15 +4514,15 @@\n columnNth in the result set, starting from 1. \n pdbcoladdress of structure to be populated by this function.
    \n \n \n \n \n
    Returns
    SUCCEED or FAIL.
    \n-
    See also
    dbcolinfo().
    \n+
    See also
    dbcolinfo().
    \n
    \n Here is the call graph for this function:
    \n
    \n
    \n
    \n \n
    \n@@ -4737,15 +4737,15 @@\n \n \n
    \n \n

    See which version of db-lib is in use.

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

    ◆ dbwillconvert()

    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga0b5ca7723f370dac9fe1f6db35e331a0_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga0b5ca7723f370dac9fe1f6db35e331a0_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga0fcfcf6846442dac9dd5584d270ec72a_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga0fcfcf6846442dac9dd5584d270ec72a_icgraph.dot", "unified_diff": "@@ -9,15 +9,15 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbclose\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaef740b394b44eb33925c2718f7b30d69\",tooltip=\"Close a connection to the server and free associated resources.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbexit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gad0044401c8c83205583f93a4764f2d8b\",tooltip=\"Close server connections and free all related structures.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node5 [id=\"Node000005\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbcmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga87b39d9863316b4ba85654b0885d53a0\",tooltip=\"Append SQL to the command buffer.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"dbfcmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga43727b10d4cbb7708b374811abe6eadb\",tooltip=\"printf-like way to form SQL to send to the server.\"];\n Node6 -> Node8 [id=\"edge7_Node000006_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"dbuse\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga66ea891910f0a357cc78107d6ab7d962\",tooltip=\"Change current database.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga32eb72f6fb3edb130e59fb3dd0766e7e_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga32eb72f6fb3edb130e59fb3dd0766e7e_cgraph.dot", "unified_diff": "@@ -5,16 +5,16 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"dbconvert\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"cf.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbperror\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node2 -> Node4 [id=\"edge4_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node7 [id=\"edge5_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node2 -> Node8 [id=\"edge6_Node000002_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga3bcdc8f584537b8278483f2cee59f130_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga3bcdc8f584537b8278483f2cee59f130_icgraph.dot", "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00527_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot", "source2": "a00527_ga548153eb2eae76c48aa9d4b72258dc1c_cgraph.dot", "unified_diff": "@@ -7,22 +7,22 @@\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga32eb72f6fb3edb130e59fb3dd0766e7e\",tooltip=\"cf.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node4 [id=\"Node000004\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbperror\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node8 [id=\"edge6_Node000003_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node3 -> Node9 [id=\"edge7_Node000003_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node1 -> Node5 [id=\"edge8_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node10 [id=\"edge9_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"dbresults\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga4e26d949be2c3bf71b1a33c75b11d931\",tooltip=\"Set up query results.\"];\n Node10 -> Node11 [id=\"edge10_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"_dbresults\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaf1879b85e8238c015b9648d077665285\",tooltip=\" \"];\n Node11 -> Node5 [id=\"edge11_Node000011_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 -> Node12 [id=\"edge12_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -30,20 +30,20 @@\n Node1 -> Node106 [id=\"edge13_Node000001_Node000106\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node106 [id=\"Node000106\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node106 -> Node71 [id=\"edge14_Node000106_Node000071\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node71 [id=\"Node000071\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node106 -> Node12 [id=\"edge15_Node000106_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node12 [id=\"edge16_Node000001_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node107 [id=\"edge17_Node000001_Node000107\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node107 [id=\"Node000107\",label=\"tds_writetext_continue\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab68dead99a2ebec55895a10cd3db5202\",tooltip=\"Send some data in the writetext request started by tds_writetext_start.\"];\n+ Node107 [id=\"Node000107\",label=\"tds_writetext_continue\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab68dead99a2ebec55895a10cd3db5202\",tooltip=\"Send some data in the writetext request started by tds_writetext_start.\"];\n Node1 -> Node108 [id=\"edge18_Node000001_Node000108\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node108 [id=\"Node000108\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n+ Node108 [id=\"Node000108\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n Node108 -> Node71 [id=\"edge19_Node000108_Node000071\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node109 [id=\"edge20_Node000001_Node000109\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node109 [id=\"Node000109\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node109 [id=\"Node000109\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node109 -> Node73 [id=\"edge21_Node000109_Node000073\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node73 [id=\"Node000073\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node73 -> Node12 [id=\"edge22_Node000073_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node109 -> Node110 [id=\"edge23_Node000109_Node000110\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node110 [id=\"Node000110\",label=\"tds_submit_queryf\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gad695defcbf663b0023851a198206a772\",tooltip=\"Format and submit a query.\"];\n Node110 -> Node111 [id=\"edge24_Node000110_Node000111\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node111 [id=\"Node000111\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga57c856964a9a0b4cc43f5192647c51e7_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga57c856964a9a0b4cc43f5192647c51e7_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga636e6f1b64743f3cf22158a56eef371f_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga636e6f1b64743f3cf22158a56eef371f_icgraph.dot", "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga6f13381522a1fa0b6ce2c15378088cdd_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga6f13381522a1fa0b6ce2c15378088cdd_cgraph.dot", "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_writetext_continue\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab68dead99a2ebec55895a10cd3db5202\",tooltip=\"Send some data in the writetext request started by tds_writetext_start.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_writetext_continue\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab68dead99a2ebec55895a10cd3db5202\",tooltip=\"Send some data in the writetext request started by tds_writetext_start.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga85dcc40c3615f94be96b09b2ec043533_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga85dcc40c3615f94be96b09b2ec043533_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node2 [id=\"Node000002\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga873bc0f4663165e711655ade1dfae795_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga873bc0f4663165e711655ade1dfae795_cgraph.dot", "unified_diff": "@@ -11,11 +11,11 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbwillconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaaf8349999c16b3c36caf5947747a2915\",tooltip=\"Test whether or not a datatype can be converted to another datatype.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node5 -> Node7 [id=\"edge6_Node000005_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_willconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga80487b313213f60d8be71a50a002bb2c\",tooltip=\"Test if a conversion is possible.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga873bc0f4663165e711655ade1dfae795_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga873bc0f4663165e711655ade1dfae795_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node2 [id=\"Node000002\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga89fc5589b4bf41932324d2cfc6ad6433_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga89fc5589b4bf41932324d2cfc6ad6433_icgraph.dot", "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node3 [id=\"Node000003\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga8b00d5cdcaa20cba13fa2e03d52a443e_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga8b00d5cdcaa20cba13fa2e03d52a443e_cgraph.dot", "unified_diff": "@@ -3,20 +3,20 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbperror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node3 -> Node5 [id=\"edge4_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node3 [id=\"edge5_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node1 -> Node7 [id=\"edge7_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_ga9a35c8d3cd0e35c10555baf8f6a01e93_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_ga9a35c8d3cd0e35c10555baf8f6a01e93_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot", "source2": "a00527_gaa30be3414a97aac6139af2e928db91ca_cgraph.dot", "unified_diff": "@@ -15,22 +15,22 @@\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbalttype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaa85171e020dc606f2bd3395ad1d3ab4f\",tooltip=\"Get datatype for a compute column.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga32eb72f6fb3edb130e59fb3dd0766e7e\",tooltip=\"cf.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node8 [id=\"Node000008\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbperror\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node7 -> Node9 [id=\"edge9_Node000007_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node12 [id=\"edge10_Node000007_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node7 -> Node13 [id=\"edge11_Node000007_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node1 -> Node14 [id=\"edge12_Node000001_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"dbdata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga1137a30014c6ebb6d6e9836581a09cff\",tooltip=\"Get address of data in a regular result column.\"];\n Node14 -> Node15 [id=\"edge13_Node000014_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"_dbcoldata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga3c6f474c0662158f3100fe464bf077d9\",tooltip=\"Return data from a column.\"];\n Node14 -> Node16 [id=\"edge14_Node000014_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"dbcolptr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga45d1c0fba44eafde5e156a70af5d6126\",tooltip=\"Sanity checks for column-oriented functions.\"];\n Node16 -> Node9 [id=\"edge15_Node000016_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaa85171e020dc606f2bd3395ad1d3ab4f_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaa85171e020dc606f2bd3395ad1d3ab4f_icgraph.dot", "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbprrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaa30be3414a97aac6139af2e928db91ca\",tooltip=\"Print a result set to stdout.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_cgraph.dot", "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_willconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga80487b313213f60d8be71a50a002bb2c\",tooltip=\"Test if a conversion is possible.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaaf8349999c16b3c36caf5947747a2915_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbaltbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gafefd17e15b22adda84366c817178dd7d\",tooltip=\"Bind a compute column to a program variable.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga873bc0f4663165e711655ade1dfae795\",tooltip=\"Tie a host variable to a resultset column.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gab33d2f4fd44f50e55b6c71902db4fdae_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gab33d2f4fd44f50e55b6c71902db4fdae_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaef740b394b44eb33925c2718f7b30d69_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaef740b394b44eb33925c2718f7b30d69_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbexit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gad0044401c8c83205583f93a4764f2d8b\",tooltip=\"Close server connections and free all related structures.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaf1c00d83dfa88dc99a3fb449c49660ea_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaf1c00d83dfa88dc99a3fb449c49660ea_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot", "source2": "a00527_gaf641c8e3d34607ca8b7ac2afed3e6d67_cgraph.dot", "unified_diff": "@@ -7,22 +7,22 @@\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga32eb72f6fb3edb130e59fb3dd0766e7e\",tooltip=\"cf.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node4 [id=\"Node000004\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbperror\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node8 [id=\"edge6_Node000003_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node3 -> Node9 [id=\"edge7_Node000003_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node1 -> Node10 [id=\"edge8_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"dbdata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga1137a30014c6ebb6d6e9836581a09cff\",tooltip=\"Get address of data in a regular result column.\"];\n Node10 -> Node11 [id=\"edge9_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"_dbcoldata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga3c6f474c0662158f3100fe464bf077d9\",tooltip=\"Return data from a column.\"];\n Node10 -> Node12 [id=\"edge10_Node000010_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"dbcolptr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga45d1c0fba44eafde5e156a70af5d6126\",tooltip=\"Sanity checks for column-oriented functions.\"];\n Node12 -> Node5 [id=\"edge11_Node000012_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00527_gafefd17e15b22adda84366c817178dd7d_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00527_gafefd17e15b22adda84366c817178dd7d_cgraph.dot", "unified_diff": "@@ -11,11 +11,11 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbwillconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaaf8349999c16b3c36caf5947747a2915\",tooltip=\"Test whether or not a datatype can be converted to another datatype.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_prdatatype\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#ac7a199aaeb82935f6d1dda2be551a089\",tooltip=\"Returns type in string.\"];\n Node5 -> Node7 [id=\"edge6_Node000005_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_willconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga80487b313213f60d8be71a50a002bb2c\",tooltip=\"Test if a conversion is possible.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00529_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00529_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00529_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot", "source2": "a00529_ga7a184158b27a50f713e9cfae3b746209_cgraph.dot", "unified_diff": "@@ -5,58 +5,58 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#ad53f508d8f2177a898f8022736834afd\",tooltip=\"Function to read data from file.\"];\n+ Node3 [id=\"Node000003\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#ad53f508d8f2177a898f8022736834afd\",tooltip=\"Function to read data from file.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node5 [id=\"Node000005\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node4 -> Node7 [id=\"edge6_Node000004_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"dbperror\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node4 -> Node10 [id=\"edge8_Node000004_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node10 [id=\"Node000010\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node2 -> Node7 [id=\"edge9_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node20 [id=\"edge10_Node000002_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node20 [id=\"Node000020\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node20 -> Node21 [id=\"edge11_Node000020_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node20 -> Node22 [id=\"edge12_Node000020_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge13_Node000022_Node000023\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node2 -> Node111 [id=\"edge14_Node000002_Node000111\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node111 [id=\"Node000111\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n+ Node111 [id=\"Node000111\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n Node2 -> Node112 [id=\"edge15_Node000002_Node000112\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node112 [id=\"Node000112\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node112 [id=\"Node000112\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node112 -> Node113 [id=\"edge16_Node000112_Node000113\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node113 [id=\"Node000113\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node113 [id=\"Node000113\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node113 -> Node8 [id=\"edge17_Node000113_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node112 -> Node22 [id=\"edge18_Node000112_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node112 -> Node116 [id=\"edge19_Node000112_Node000116\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node116 [id=\"Node000116\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node2 -> Node136 [id=\"edge20_Node000002_Node000136\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node136 [id=\"Node000136\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node136 [id=\"Node000136\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node136 -> Node137 [id=\"edge21_Node000136_Node000137\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node137 [id=\"Node000137\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n+ Node137 [id=\"Node000137\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n Node136 -> Node112 [id=\"edge22_Node000136_Node000112\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node136 -> Node138 [id=\"edge23_Node000136_Node000138\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node138 [id=\"Node000138\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node138 [id=\"Node000138\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node138 -> Node8 [id=\"edge24_Node000138_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node140 [id=\"edge25_Node000001_Node000140\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node140 [id=\"Node000140\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node140 -> Node141 [id=\"edge26_Node000140_Node000141\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node141 [id=\"Node000141\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node141 [id=\"Node000141\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n Node141 -> Node6 [id=\"edge27_Node000141_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node141 -> Node142 [id=\"edge28_Node000141_Node000142\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node142 [id=\"Node000142\",label=\"tds_datecrack\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga883855e6e3793de6684b21db39c756c4\",tooltip=\"Convert from db date format to a structured date format.\"];\n Node141 -> Node143 [id=\"edge29_Node000141_Node000143\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node143 [id=\"Node000143\",label=\"tds_strftime\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d\",tooltip=\"format a date string according to an \\\"extended\\\" strftime(3) formatting definition.\"];\n Node140 -> Node7 [id=\"edge30_Node000140_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node140 -> Node8 [id=\"edge31_Node000140_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00529_ga8b85f79f53a62ac7a728fe626d609b65_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00529_ga8b85f79f53a62ac7a728fe626d609b65_cgraph.dot", "unified_diff": "@@ -7,15 +7,15 @@\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_free_storage\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gaa134c1c3ccc4326e693adb8357272f1d\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_free_columns\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gacf69ac4cbe8e3c3e6ea665e31e5e85b8\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node4 -> Node6 [id=\"edge5_Node000004_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00529_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00529_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00529_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot", "source2": "a00529_gaa23f8e5c7f437a94746c90292dd1cb01_cgraph.dot", "unified_diff": "@@ -3,25 +3,25 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node1 -> Node99 [id=\"edge5_Node000001_Node000099\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node99 [id=\"Node000099\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node99 [id=\"Node000099\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node99 -> Node100 [id=\"edge6_Node000099_Node000100\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node100 [id=\"Node000100\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node100 [id=\"Node000100\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node100 -> Node101 [id=\"edge7_Node000100_Node000101\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node101 [id=\"Node000101\",label=\"tds_convert_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gad5b76c688898b86984d09628f030d01c\",tooltip=\"Convert a string in an allocated buffer.\"];\n Node100 -> Node14 [id=\"edge8_Node000100_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node100 -> Node102 [id=\"edge9_Node000100_Node000102\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node102 [id=\"Node000102\",label=\"tds_dstr_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga396f139e4f886ac1b224a735138e73dd\",tooltip=\"Returns the length of the string in bytes.\"];\n Node99 -> Node4 [id=\"edge10_Node000099_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00529_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00529_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00529_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot", "source2": "a00529_gada8e987c4a6225b9276c05ba3a4f47a0_cgraph.dot", "unified_diff": "@@ -13,17 +13,17 @@\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbperror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node4 -> Node6 [id=\"edge5_Node000004_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n Node7 -> Node5 [id=\"edge8_Node000007_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node9 [id=\"edge9_Node000007_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_dstr_dup\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga4e6d9fa6f9b9551a5a3390e10a5322e6\",tooltip=\"Duplicate a string from another dynamic string.\"];\n Node9 -> Node10 [id=\"edge10_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"tds_dstr_copyn\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga656718f240d7403f986ae887d84a6ca1\",tooltip=\"Set string to a given buffer of characters.\"];\n Node7 -> Node11 [id=\"edge11_Node000007_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot", "source2": "a00529_gaf1130ac97f6af55e86ec70b0aa4f5b40_cgraph.dot", "unified_diff": "@@ -5,40 +5,40 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Write data in host variables to the table.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga0f8def4cad04c5c1e27c2b653d482dd8\",tooltip=\"For a bcp in from program variables, get the data from the host variable.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node3 [id=\"Node000003\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"_bcp_get_term_var\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga4f936fa1cb8e4373bf7b7f8a6ab96bc7\",tooltip=\"Get the data for bcp-in from program variables, where the program data have been identified as charac...\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbperror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node6 -> Node8 [id=\"edge7_Node000006_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node9 [id=\"edge8_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n Node1 -> Node10 [id=\"edge9_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node10 -> Node11 [id=\"edge10_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n Node10 -> Node12 [id=\"edge11_Node000010_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node12 -> Node13 [id=\"edge12_Node000012_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node13 [id=\"Node000013\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node13 -> Node7 [id=\"edge13_Node000013_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 -> Node19 [id=\"edge14_Node000012_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node12 -> Node110 [id=\"edge15_Node000012_Node000110\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node110 [id=\"Node000110\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node10 -> Node130 [id=\"edge16_Node000010_Node000130\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node130 [id=\"Node000130\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node130 [id=\"Node000130\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node130 -> Node131 [id=\"edge17_Node000130_Node000131\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node131 [id=\"Node000131\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node131 [id=\"Node000131\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node131 -> Node7 [id=\"edge18_Node000131_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node130 -> Node7 [id=\"edge19_Node000130_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00530_ga0f8def4cad04c5c1e27c2b653d482dd8_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00530_ga0f8def4cad04c5c1e27c2b653d482dd8_cgraph.dot", "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"_bcp_get_col_data\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"For a bcp in from program variables, get the data from the host variable.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_get_term_var\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga4f936fa1cb8e4373bf7b7f8a6ab96bc7\",tooltip=\"Get the data for bcp-in from program variables, where the program data have been identified as charac...\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot", "source2": "a00530_ga1b57d952a9d72f375c3296124affa908_cgraph.dot", "unified_diff": "@@ -3,31 +3,31 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\" \"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbperror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node4 -> Node6 [id=\"edge5_Node000004_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node7 [id=\"Node000007\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node7 -> Node12 [id=\"edge9_Node000007_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n Node7 -> Node13 [id=\"edge10_Node000007_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n Node13 -> Node14 [id=\"edge11_Node000013_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n Node7 -> Node16 [id=\"edge12_Node000007_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n+ Node16 [id=\"Node000016\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot", "source2": "a00530_ga7370f1223f13510d6b33e98f2de09fb5_cgraph.dot", "unified_diff": "@@ -3,70 +3,70 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\" \"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#ad53f508d8f2177a898f8022736834afd\",tooltip=\"Function to read data from file.\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#ad53f508d8f2177a898f8022736834afd\",tooltip=\"Function to read data from file.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node4 [id=\"Node000004\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node3 -> Node6 [id=\"edge5_Node000003_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbperror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#ga302a4ce6559b81808e3be51615cd1b67\",tooltip=\"Call client-installed error handler.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node6 -> Node8 [id=\"edge7_Node000006_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_dstr_isempty\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga197c6af67f2e7469d06c2aa055917b1e\",tooltip=\"test if string is empty\"];\n Node3 -> Node9 [id=\"edge8_Node000003_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node9 [id=\"Node000009\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node9 -> Node14 [id=\"edge10_Node000009_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n Node9 -> Node15 [id=\"edge11_Node000009_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node15 [id=\"Node000015\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n+ Node15 [id=\"Node000015\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n Node9 -> Node18 [id=\"edge12_Node000009_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n Node1 -> Node6 [id=\"edge13_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node19 [id=\"edge14_Node000001_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node19 -> Node20 [id=\"edge15_Node000019_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node19 -> Node21 [id=\"edge16_Node000019_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node21 -> Node22 [id=\"edge17_Node000021_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node1 -> Node110 [id=\"edge18_Node000001_Node000110\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node110 [id=\"Node000110\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n+ Node110 [id=\"Node000110\",label=\"tds_bcp_send_record\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ad9e44450025cbcee1ad81d7e5a2cc099\",tooltip=\"Send one row of data to server.\"];\n Node1 -> Node111 [id=\"edge19_Node000001_Node000111\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node111 [id=\"Node000111\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node111 [id=\"Node000111\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node111 -> Node112 [id=\"edge20_Node000111_Node000112\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node112 [id=\"Node000112\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node112 [id=\"Node000112\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node112 -> Node113 [id=\"edge21_Node000112_Node000113\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node113 [id=\"Node000113\",label=\"tds_convert_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gad5b76c688898b86984d09628f030d01c\",tooltip=\"Convert a string in an allocated buffer.\"];\n Node112 -> Node7 [id=\"edge22_Node000112_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node112 -> Node114 [id=\"edge23_Node000112_Node000114\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node114 [id=\"Node000114\",label=\"tds_dstr_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga396f139e4f886ac1b224a735138e73dd\",tooltip=\"Returns the length of the string in bytes.\"];\n Node111 -> Node21 [id=\"edge24_Node000111_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node111 -> Node115 [id=\"edge25_Node000111_Node000115\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node115 [id=\"Node000115\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node115 -> Node116 [id=\"edge26_Node000115_Node000116\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node116 [id=\"Node000116\",label=\"tds_submit_query_params\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga95e0fccedc459a4404f496eec74a369a\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node116 -> Node113 [id=\"edge27_Node000116_Node000113\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node116 -> Node8 [id=\"edge28_Node000116_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node135 [id=\"edge29_Node000001_Node000135\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node135 [id=\"Node000135\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node135 [id=\"Node000135\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node135 -> Node136 [id=\"edge30_Node000135_Node000136\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node136 [id=\"Node000136\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n+ Node136 [id=\"Node000136\",label=\"tds_bcp_row_free\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7c4f2b050cd1a747604aa305d6877de7\",tooltip=\"Free row data allocated in the result set.\"];\n Node135 -> Node111 [id=\"edge31_Node000135_Node000111\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node135 -> Node137 [id=\"edge32_Node000135_Node000137\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node137 [id=\"Node000137\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node137 [id=\"Node000137\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node137 -> Node138 [id=\"edge33_Node000137_Node000138\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node138 [id=\"Node000138\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node138 [id=\"Node000138\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node138 -> Node7 [id=\"edge34_Node000138_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node138 -> Node114 [id=\"edge35_Node000138_Node000114\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node137 -> Node7 [id=\"edge36_Node000137_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00530_gae67546338cb9542a4902aa914f57f314_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00530_gae67546338cb9542a4902aa914f57f314_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00530_gae67546338cb9542a4902aa914f57f314_cgraph.dot", "source2": "a00530_gae67546338cb9542a4902aa914f57f314_cgraph.dot", "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\" \"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_datecrack\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga883855e6e3793de6684b21db39c756c4\",tooltip=\"Convert from db date format to a structured date format.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_strftime\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d\",tooltip=\"format a date string according to an \\\"extended\\\" strftime(3) formatting definition.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00533_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00533_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00533_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot", "source2": "a00533_ga302a4ce6559b81808e3be51615cd1b67_icgraph.dot", "unified_diff": "@@ -46,26 +46,26 @@\n Node1 -> Node18 [id=\"edge22_Node000001_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n Node1 -> Node19 [id=\"edge23_Node000001_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"dbaltbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gafefd17e15b22adda84366c817178dd7d\",tooltip=\"Bind a compute column to a program variable.\"];\n Node1 -> Node20 [id=\"edge24_Node000001_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"dbbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga873bc0f4663165e711655ade1dfae795\",tooltip=\"Tie a host variable to a resultset column.\"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node21 [id=\"Node000021\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n Node1 -> Node22 [id=\"edge26_Node000001_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"dbbylist\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga29b0e22f5b5b8a1dae9ea59f09f279c9\",tooltip=\"Get bylist for a compute row.\"];\n Node1 -> Node23 [id=\"edge27_Node000001_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"dbcmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga87b39d9863316b4ba85654b0885d53a0\",tooltip=\"Append SQL to the command buffer.\"];\n Node23 -> Node24 [id=\"edge28_Node000023_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node24 [id=\"Node000024\",label=\"dbfcmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga43727b10d4cbb7708b374811abe6eadb\",tooltip=\"printf-like way to form SQL to send to the server.\"];\n Node23 -> Node10 [id=\"edge29_Node000023_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node25 [id=\"edge30_Node000001_Node000025\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node25 [id=\"Node000025\",label=\"dbcolptr\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00533.html#ga45d1c0fba44eafde5e156a70af5d6126\",tooltip=\"Sanity checks for column-oriented functions.\"];\n Node25 -> Node26 [id=\"edge31_Node000025_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node26 [id=\"Node000026\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node26 [id=\"Node000026\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node25 -> Node27 [id=\"edge32_Node000025_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node27 [id=\"Node000027\",label=\"dbcollen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433\",tooltip=\"Get size of a regular result column.\"];\n Node27 -> Node26 [id=\"edge33_Node000027_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node27 -> Node21 [id=\"edge34_Node000027_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node25 -> Node28 [id=\"edge35_Node000025_Node000028\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node28 [id=\"Node000028\",label=\"dbcolname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga3bcdc8f584537b8278483f2cee59f130\",tooltip=\"Return name of a regular result column.\"];\n Node28 -> Node26 [id=\"edge36_Node000028_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -79,15 +79,15 @@\n Node25 -> Node31 [id=\"edge42_Node000025_Node000031\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node31 [id=\"Node000031\",label=\"dbcoltypeinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga0b5ca7723f370dac9fe1f6db35e331a0\",tooltip=\"Get precision and scale information for a regular result column.\"];\n Node31 -> Node26 [id=\"edge43_Node000031_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node43 [id=\"edge44_Node000001_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node43 [id=\"Node000043\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node1 -> Node24 [id=\"edge45_Node000001_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node45 [id=\"edge46_Node000001_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node45 [id=\"Node000045\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n+ Node45 [id=\"Node000045\",label=\"dbgetnull\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#aea6a865806d454280126de940478c214\",tooltip=\" \"];\n Node45 -> Node43 [id=\"edge47_Node000045_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node46 [id=\"edge48_Node000001_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 [id=\"Node000046\",label=\"dblogin\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga0c66b475d359cb3e69cdf4b163a07eeb\",tooltip=\"Allocate a LOGINREC structure.\"];\n Node1 -> Node21 [id=\"edge49_Node000001_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node34 [id=\"edge50_Node000001_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node34 [id=\"Node000034\",label=\"dbprrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaa30be3414a97aac6139af2e928db91ca\",tooltip=\"Print a result set to stdout.\"];\n Node1 -> Node47 [id=\"edge51_Node000001_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00533_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00533_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00533_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot", "source2": "a00533_ga45d1c0fba44eafde5e156a70af5d6126_icgraph.dot", "unified_diff": "@@ -3,20 +3,20 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node2 [id=\"Node000002\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbcollen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433\",tooltip=\"Get size of a regular result column.\"];\n Node3 -> Node2 [id=\"edge3_Node000003_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge4_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n Node1 -> Node5 [id=\"edge5_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbcolname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga3bcdc8f584537b8278483f2cee59f130\",tooltip=\"Return name of a regular result column.\"];\n Node5 -> Node2 [id=\"edge6_Node000005_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node4 [id=\"edge7_Node000005_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge8_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbcolsource\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga7be8b405d5416bf0361f65dbb5942faa\",tooltip=\"Get base database column name for a result set column.\"];\n Node1 -> Node7 [id=\"edge9_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00533_gae6da75d7b9e7b567890fc83c9459d824_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00533_gae6da75d7b9e7b567890fc83c9459d824_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node2 [id=\"Node000002\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538.html", "source2": "./usr/share/doc/freetds-doc/reference/a00538.html", "unified_diff": "@@ -137,15 +137,15 @@\n  \n \n static const void * tds_find (const void *key, const void *base, size_t nelem, size_t width, int(*compar)(const void *, const void *))\n  \n void tds_fix_login (TDSLOGIN *login)\n  Fix configuration after reading it.
    \n  \n-const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void)\n+const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void)\n  Return a structure capturing the compile-time settings provided to the configure script.
    \n  \n char * tds_get_home_file (const char *file)\n  Return filename from HOME directory.
    \n  \n struct addrinfo * tds_lookup_host (const char *servername)\n  Get the IP address for a hostname.
    \n@@ -400,15 +400,15 @@\n \n

    ◆ tds_get_compiletime_settings()

    \n \n
    \n
    \n \n \n- \n+ \n \n \n \n \n \n
    const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings (void )
    \n
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_ga0f9a22fb6744c5224a97ec3f83af4e15_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_ga0f9a22fb6744c5224a97ec3f83af4e15_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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...\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_ga44fdbe16827097d947f900d96003de98_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_ga44fdbe16827097d947f900d96003de98_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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)\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_get_locale\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00032.html#a41390fa6e1083ba84fb523797e6b5275\",tooltip=\"Get locale information.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_get_locale\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00224.html#a41390fa6e1083ba84fb523797e6b5275\",tooltip=\"Get locale information.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_ga4799b423b5d982dbc8f31b7738255eef_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_ga4799b423b5d982dbc8f31b7738255eef_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_ga6631af35ee817f93827c62bbda41674a_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_ga6631af35ee817f93827c62bbda41674a_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_ga9ff2436ea56ddcdecf984acf46ce4b90_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_ga9ff2436ea56ddcdecf984acf46ce4b90_icgraph.dot", "unified_diff": "@@ -5,9 +5,9 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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...\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node3 [id=\"Node000003\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00538_gacee4f06ba749b10ee9f2e5bb1c4a8910_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00538_gacee4f06ba749b10ee9f2e5bb1c4a8910_icgraph.dot", "unified_diff": "@@ -7,10 +7,10 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n Node1 -> Node3 [id=\"edge4_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00539.html", "source2": "./usr/share/doc/freetds-doc/reference/a00539.html", "unified_diff": "@@ -258,21 +258,21 @@\n  \n \n static TDS_INT tds_convert_uint8 (const TDS_UINT8 *src, int desttype, CONV_RESULT *cr)\n  \n \n static TDS_INT tds_convert_unique (const TDS_CHAR *src, int desttype, CONV_RESULT *cr)\n  \n-TDSRET tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr)\n+TDSRET tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr)\n  Convert from db date format to a structured date format.
    \n  \n TDS_SERVER_TYPE tds_get_null_type (TDS_SERVER_TYPE srctype)\n  Get same type but nullable.
    \n  \n-size_t tds_strftime (char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec)\n+size_t tds_strftime (char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec)\n  format a date string according to an \"extended\" strftime(3) formatting definition.
    \n  \n unsigned char tds_willconvert (int srctype, int desttype)\n  Test if a conversion is possible.
    \n  \n \n static void two_digit (char *out, int num)\n@@ -830,15 +830,15 @@\n \n const void * \n di, \n \n \n \n \n- TDSDATEREC * \n+ TDSDATEREC * \n dr \n \n \n \n )\n \n \n@@ -913,15 +913,15 @@\n \n const char * \n format, \n \n \n \n \n- const TDSDATEREC * \n+ const TDSDATEREC * \n dr, \n \n \n \n \n int \n prec \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00539_ga80487b313213f60d8be71a50a002bb2c_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00539_ga80487b313213f60d8be71a50a002bb2c_icgraph.dot", "unified_diff": "@@ -9,9 +9,9 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbwillconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaaf8349999c16b3c36caf5947747a2915\",tooltip=\"Test whether or not a datatype can be converted to another datatype.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbaltbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gafefd17e15b22adda84366c817178dd7d\",tooltip=\"Bind a compute column to a program variable.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga873bc0f4663165e711655ade1dfae795\",tooltip=\"Tie a host variable to a resultset column.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node5 [id=\"Node000005\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00539_ga883855e6e3793de6684b21db39c756c4_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00539_ga883855e6e3793de6684b21db39c756c4_icgraph.dot", "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_datecrack\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Convert from db date format to a structured date format.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbprrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaa30be3414a97aac6139af2e928db91ca\",tooltip=\"Print a result set to stdout.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00539_ga8c9652e8b1f3e56a3289fd71b12cee1d_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00539_ga8c9652e8b1f3e56a3289fd71b12cee1d_icgraph.dot", "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_strftime\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"format a date string according to an \\\"extended\\\" strftime(3) formatting definition.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbprrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaa30be3414a97aac6139af2e928db91ca\",tooltip=\"Print a result set to stdout.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot", "source2": "a00539_gad83c146aa5ba3f1515557d6b5248494a_icgraph.dot", "unified_diff": "@@ -3,27 +3,27 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_convert\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"tds_convert convert a type to another.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_convert_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85\",tooltip=\"Convert column for input to a table.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_get_col_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga0f8def4cad04c5c1e27c2b653d482dd8\",tooltip=\"For a bcp in from program variables, get the data from the host variable.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node8 [id=\"edge7_Node000001_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node8 [id=\"Node000008\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html#a230fa5b56ae4e3509a69bd266495732b\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node9 -> Node7 [id=\"edge9_Node000009_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node10 [id=\"edge10_Node000001_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"dbconvert_ps\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga8b00d5cdcaa20cba13fa2e03d52a443e\",tooltip=\"Convert one datatype to another.\"];\n Node10 -> Node11 [id=\"edge11_Node000010_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"dbconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga32eb72f6fb3edb130e59fb3dd0766e7e\",tooltip=\"cf.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00540.html", "source2": "./usr/share/doc/freetds-doc/reference/a00540.html", "unified_diff": "@@ -169,15 +169,15 @@\n  \n \n static int put_utf16le (unsigned char *buf, size_t buf_len, ICONV_CHAR c)\n  \n \n static int put_utf8 (unsigned char *buf, size_t buf_len, ICONV_CHAR c)\n  \n-static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size)\n+static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size)\n  Move the input sequence pointer to the next valid position.
    \n  \n \n void tds7_srv_charset_changed (TDSCONNECTION *conn, TDS_UCHAR collation[5])\n  \n int tds_canonical_charset (const char *charset_name)\n  Determine canonical iconv character set.
    \n@@ -269,15 +269,15 @@\n (\n iconv_t \n cd, \n \n \n \n \n- const TDS_ENCODING * \n+ const TDS_ENCODING * \n charset, \n \n \n \n \n const char ** \n input, \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot", "source2": "a00540_ga3380140fc6eb9f2090c430f40e846876_icgraph.dot", "unified_diff": "@@ -7,32 +7,32 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"odbc_set_string_flag\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00536.html#gadba4490bf3183799a70c9e2f44fab331\",tooltip=\"Copy a string to client setting size according to ODBC convenction.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node4 -> Node65 [id=\"edge5_Node000004_Node000065\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node65 [id=\"Node000065\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node65 [id=\"Node000065\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node4 -> Node67 [id=\"edge6_Node000004_Node000067\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node67 [id=\"Node000067\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node67 -> Node73 [id=\"edge7_Node000067_Node000073\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node73 [id=\"Node000073\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node67 -> Node74 [id=\"edge8_Node000067_Node000074\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node74 [id=\"Node000074\",label=\"tds_submit_prepare\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga74eb08c3a1c85be8ac9db428842c8b9d\",tooltip=\"Creates a temporary stored procedure in the server.\"];\n Node67 -> Node75 [id=\"edge9_Node000067_Node000075\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node75 [id=\"Node000075\",label=\"tds_submit_query_params\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga95e0fccedc459a4404f496eec74a369a\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node2 -> Node93 [id=\"edge10_Node000002_Node000093\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node93 [id=\"Node000093\",label=\"tds_convert_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gad5b76c688898b86984d09628f030d01c\",tooltip=\"Convert a string in an allocated buffer.\"];\n Node93 -> Node72 [id=\"edge11_Node000093_Node000072\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node72 [id=\"Node000072\",label=\"tds71_submit_prepexec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga08877c101704bebe4fa57e0849dc272d\",tooltip=\"Creates a temporary stored procedure in the server and execute it.\"];\n Node93 -> Node94 [id=\"edge12_Node000093_Node000094\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node94 [id=\"Node000094\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node94 [id=\"Node000094\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node93 -> Node63 [id=\"edge13_Node000093_Node000063\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node63 [id=\"Node000063\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node63 [id=\"Node000063\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node93 -> Node73 [id=\"edge14_Node000093_Node000073\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node93 -> Node74 [id=\"edge15_Node000093_Node000074\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node93 -> Node75 [id=\"edge16_Node000093_Node000075\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00540_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00540_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00540_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot", "source2": "a00540_ga87db49044919f1bc84c0ff5e9ab00304_icgraph.dot", "unified_diff": "@@ -5,25 +5,25 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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).\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"odbc_set_string_flag\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00536.html#gadba4490bf3183799a70c9e2f44fab331\",tooltip=\"Copy a string to client setting size according to ODBC convenction.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node4 -> Node7 [id=\"edge5_Node000004_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node7 -> Node62 [id=\"edge6_Node000007_Node000062\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node62 [id=\"Node000062\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node62 [id=\"Node000062\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node3 -> Node64 [id=\"edge7_Node000003_Node000064\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node64 [id=\"Node000064\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node64 [id=\"Node000064\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node64 -> Node65 [id=\"edge8_Node000064_Node000065\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node65 [id=\"Node000065\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node3 -> Node66 [id=\"edge9_Node000003_Node000066\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node66 [id=\"Node000066\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node66 -> Node67 [id=\"edge10_Node000066_Node000067\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node67 [id=\"Node000067\",label=\"tds4_send_emulated_rpc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga2d0a06c1a30dd2470dc7a788de21b080\",tooltip=\"Send RPC as string query.\"];\n Node67 -> Node68 [id=\"edge11_Node000067_Node000068\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -77,15 +77,15 @@\n Node66 -> Node68 [id=\"edge45_Node000066_Node000068\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node66 -> Node91 [id=\"edge46_Node000066_Node000091\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node91 [id=\"Node000091\",label=\"tds_submit_unprepare\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gaf573d8d4d2660c8c27770573fca05ff5\",tooltip=\"Send a unprepare request for a prepared query.\"];\n Node1 -> Node92 [id=\"edge47_Node000001_Node000092\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node92 [id=\"Node000092\",label=\"tds_convert_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gad5b76c688898b86984d09628f030d01c\",tooltip=\"Convert a string in an allocated buffer.\"];\n Node92 -> Node71 [id=\"edge48_Node000092_Node000071\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node92 -> Node93 [id=\"edge49_Node000092_Node000093\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node93 [id=\"Node000093\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node93 [id=\"Node000093\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node93 -> Node38 [id=\"edge50_Node000093_Node000038\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node38 [id=\"Node000038\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node38 [id=\"Node000038\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node92 -> Node62 [id=\"edge51_Node000092_Node000062\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node92 -> Node72 [id=\"edge52_Node000092_Node000072\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node92 -> Node73 [id=\"edge53_Node000092_Node000073\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node92 -> Node74 [id=\"edge54_Node000092_Node000074\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00540_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00540_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00540_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot", "source2": "a00540_ga900b0bce08c6bfc2e7c988f4b5970516_icgraph.dot", "unified_diff": "@@ -9,15 +9,15 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"skip_one_input_sequence\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3380140fc6eb9f2090c430f40e846876\",tooltip=\"Move the input sequence pointer to the next valid position.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"odbc_set_string_flag\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00536.html#gadba4490bf3183799a70c9e2f44fab331\",tooltip=\"Copy a string to client setting size according to ODBC convenction.\"];\n Node3 -> Node5 [id=\"edge4_Node000003_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node5 [id=\"Node000005\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node94 [id=\"edge5_Node000003_Node000094\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node94 [id=\"Node000094\",label=\"tds_convert_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gad5b76c688898b86984d09628f030d01c\",tooltip=\"Convert a string in an allocated buffer.\"];\n Node1 -> Node3 [id=\"edge6_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node96 [id=\"edge7_Node000001_Node000096\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node96 [id=\"Node000096\",label=\"tds_iconv_info_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3a7a7b4d6ed344127e164dd0b443d790\",tooltip=\"Open iconv descriptors to convert between character sets (both directions).\"];\n Node96 -> Node97 [id=\"edge8_Node000096_Node000097\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node97 [id=\"Node000097\",label=\"tds_iconv_get_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga1639ccaa7e17c07457bcb37f313bc52f\",tooltip=\"Get a iconv info structure, allocate and initialize if needed.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00541.html", "source2": "./usr/share/doc/freetds-doc/reference/a00541.html", "unified_diff": "@@ -132,17 +132,17 @@\n \n TDSRET tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)\n  \n \n TDSCONTEXTtds_alloc_context (void *parent)\n  \n \n-TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)\n+TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)\n  \n-TDSDYNAMICtds_alloc_dynamic (TDSCONNECTION *conn, const char *id)\n+TDSDYNAMICtds_alloc_dynamic (TDSCONNECTION *conn, const char *id)\n  Allocate a dynamic statement.
    \n  \n \n TDSLOCALEtds_alloc_locale (void)\n  \n \n TDSLOGINtds_alloc_login (int use_environment)\n@@ -156,18 +156,18 @@\n void * tds_alloc_param_data (TDSCOLUMN *curparam)\n  Allocate data for a parameter.
    \n  \n TDSPARAMINFOtds_alloc_param_result (TDSPARAMINFO *old_param)\n  Adds a output parameter to TDSPARAMINFO.
    \n  \n \n-TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols)\n+TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols)\n  \n \n-TDSRET tds_alloc_row (TDSRESULTINFO *res_info)\n+TDSRET tds_alloc_row (TDSRESULTINFO *res_info)\n  Allocate space for row store return NULL on out of memory.
    \n  \n \n TDSSOCKETtds_alloc_socket (TDSCONTEXT *context, unsigned int bufsize)\n  \n \n  TDS_COMPILE_CHECK (tds_cap_len, sizeof(defaultcaps)==TDS_MAX_CAPABILITY)\n@@ -175,28 +175,28 @@\n \n  TDS_COMPILE_CHECK (tds_values_len, sizeof(defaultcaps.types[0].values)==14)\n  \n \n static void tds_connection_remove_socket (TDSCONNECTION *conn, TDSSOCKET *tds)\n  \n \n-void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor)\n+void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor)\n  \n \n void tds_deinit_bcpinfo (TDSBCPINFO *bcpinfo)\n  \n \n static void tds_deinit_connection (TDSCONNECTION *conn)\n  \n \n-void tds_detach_results (TDSRESULTINFO *info)\n+void tds_detach_results (TDSRESULTINFO *info)\n  Detach result info from it current socket.
    \n  \n \n-void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n+void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n  \n \n void tds_free_all_results (TDSSOCKET *tds)\n  \n \n void tds_free_bcp_column_data (BCPCOLDATA *coldata)\n  \n@@ -214,15 +214,15 @@\n  \n \n void tds_free_context (TDSCONTEXT *context)\n  \n \n static void tds_free_env (TDSCONNECTION *conn)\n  \n-void tds_free_input_params (TDSDYNAMIC *dyn)\n+void tds_free_input_params (TDSDYNAMIC *dyn)\n  Frees all allocated input parameters of a dynamic statement.
    \n  \n \n void tds_free_locale (TDSLOCALE *locale)\n  \n \n void tds_free_login (TDSLOGIN *login)\n@@ -237,18 +237,18 @@\n void tds_free_param_result (TDSPARAMINFO *param_info)\n  Delete latest parameter.
    \n  \n \n void tds_free_param_results (TDSPARAMINFO *param_info)\n  \n \n-void tds_free_results (TDSRESULTINFO *res_info)\n+void tds_free_results (TDSRESULTINFO *res_info)\n  \n \n-void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)\n+void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)\n  \n \n void tds_free_socket (TDSSOCKET *tds)\n  \n static char * tds_get_dynid (TDSCONNECTION *conn, char *id)\n  Get an id for dynamic query based on TDS information.
    \n  \n@@ -270,24 +270,24 @@\n \n TDSPACKETtds_realloc_packet (TDSPACKET *packet, unsigned len)\n  \n \n TDSSOCKETtds_realloc_socket (TDSSOCKET *tds, size_t bufsize)\n  \n \n-void tds_release_cursor (TDSCURSOR **pcursor)\n+void tds_release_cursor (TDSCURSOR **pcursor)\n  \n-void tds_release_dynamic (TDSDYNAMIC **pdyn)\n+void tds_release_dynamic (TDSDYNAMIC **pdyn)\n  Frees dynamic statement.
    \n  \n \n-static void tds_row_free (TDSRESULTINFO *res_info, unsigned char *row)\n+static void tds_row_free (TDSRESULTINFO *res_info, unsigned char *row)\n  \n \n-void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info)\n+void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info)\n  \n \n static int winsock_initialized (void)\n  \n \n \n@@ -338,15 +338,15 @@\n \n

    ◆ tds_alloc_dynamic()

    \n \n
    \n
    \n

    \n Variables

    \n \n- \n+ \n \n \n \n \n \n \n \n@@ -454,15 +454,15 @@\n \n
    \n
    \n
    TDSDYNAMIC * tds_alloc_dynamic TDSDYNAMIC * tds_alloc_dynamic (TDSCONNECTIONconn,
    \n \n \n \n- \n+ \n \n \n \n
    void tds_free_input_params (TDSDYNAMICTDSDYNAMICdyn)
    \n
    \n \n

    Frees all allocated input parameters of a dynamic statement.

    \n@@ -626,15 +626,15 @@\n \n
    \n
    \n \n \n \n \n- \n+ \n \n \n \n
    void tds_release_dynamic (TDSDYNAMIC ** TDSDYNAMIC ** pdyn)
    \n
    \n \n

    Frees dynamic statement.

    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00541_ga4f7b22f681e7160ac03dfe8d2ae8bd39_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00541_ga4f7b22f681e7160ac03dfe8d2ae8bd39_icgraph.dot", "unified_diff": "@@ -7,9 +7,9 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node4 [id=\"Node000004\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00541_ga8645f5abc49db03d14b66f72b83a9a4c_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00541_ga8645f5abc49db03d14b66f72b83a9a4c_icgraph.dot", "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node4 [id=\"Node000004\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542.html", "source2": "./usr/share/doc/freetds-doc/reference/a00542.html", "unified_diff": "@@ -118,24 +118,24 @@\n  \n static char * tds5_fix_dot_query (const char *query, size_t *query_len, TDSPARAMINFO *params)\n  Substitute ?-style placeholders with named (@param) ones.
    \n  \n static TDSRET tds5_put_params (TDSSOCKET *tds, TDSPARAMINFO *info, int flags)\n  Send parameters to server.
    \n  \n-TDSRET tds71_submit_prepexec (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n+TDSRET tds71_submit_prepexec (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n  Creates a temporary stored procedure in the server and execute it.
    \n  \n \n static void tds7_put_cursor_fetch (TDSSOCKET *tds, TDS_INT cursor_id, TDS_TINYINT fetch_type, TDS_INT i_row, TDS_INT num_rows)\n  \n static void tds7_put_query_params (TDSSOCKET *tds, const char *query, size_t query_len)\n  Output params types and query (required by sp_prepare/sp_executesql/sp_prepexec)
    \n  \n-static TDSRET tds7_send_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+static TDSRET tds7_send_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n  Send dynamic request on TDS 7+ to be executed.
    \n  \n static TDSRET tds7_write_param_def_from_params (TDSSOCKET *tds, const char *query, size_t query_len, TDSPARAMINFO *params)\n  Write string with parameters definition, useful for TDS7+.
    \n  \n static TDSRET tds7_write_param_def_from_query (TDSSOCKET *tds, const char *converted_query, size_t converted_query_len, TDSPARAMINFO *params)\n  Write string with parameters definition, useful for TDS7+.
    \n@@ -148,49 +148,49 @@\n  \n int tds_count_placeholders (const char *query)\n  Count the number of placeholders ('?') in a query.
    \n  \n static int tds_count_placeholders_ucs2le (const char *query, const char *query_end)\n  Count the number of placeholders ('?') in a query.
    \n  \n-static bool tds_cursor_check_allocated (TDSCONNECTION *conn, TDSCURSOR *cursor)\n+static bool tds_cursor_check_allocated (TDSCONNECTION *conn, TDSCURSOR *cursor)\n  Check if a cursor is allocated into the server.
    \n  \n \n-TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)\n+TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)\n  \n \n-TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)\n+TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)\n  Send a deallocation request to server.
    \n  \n \n-TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *something_to_send)\n+TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *something_to_send)\n  \n \n-TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)\n+TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)\n  \n \n-TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *prow_number, TDS_UINT *prow_count)\n+TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *prow_number, TDS_UINT *prow_count)\n  \n \n-TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *something_to_send)\n+TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *something_to_send)\n  \n \n-TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)\n+TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)\n  \n \n-TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, int *something_to_send)\n+TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, int *something_to_send)\n  \n \n-TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params)\n+TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params)\n  \n-TDSRET tds_deferred_cursor_dealloc (TDSCONNECTION *conn, TDSCURSOR *cursor)\n+TDSRET tds_deferred_cursor_dealloc (TDSCONNECTION *conn, TDSCURSOR *cursor)\n  Deallocate cursor on idle.
    \n  \n-TDSRET tds_deferred_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n+TDSRET tds_deferred_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n  Unprepare dynamic on idle.
    \n  \n \n TDSRET tds_disconnect (TDSSOCKET *tds)\n  \n \n size_t tds_fix_column_size (TDSSOCKET *tds, TDSCOLUMN *curcol)\n@@ -199,23 +199,23 @@\n TDSRET tds_get_column_declaration (TDSSOCKET *tds, TDSCOLUMN *curcol, char *out)\n  Return declaration for column (like \"varchar(20)\").
    \n  \n \n TDSRET tds_multiple_done (TDSSOCKET *tds, TDSMULTIPLE *multiple)\n  \n \n-TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)\n+TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)\n  \n \n TDSRET tds_multiple_init (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS *head)\n  \n \n TDSRET tds_multiple_query (TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO *params)\n  \n-int tds_needs_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n+int tds_needs_unprepare (TDSCONNECTION *conn, TDSDYNAMIC *dyn)\n  Check if dynamic request must be unprepared.
    \n  \n const char * tds_next_placeholder (const char *start)\n  Get position of next placeholder.
    \n  \n static const char * tds_next_placeholder_ucs2le (const char *start, const char *end, int named)\n  Found the next placeholder (? or @param) in a string.
    \n@@ -259,18 +259,18 @@\n TDSRET tds_send_cancel (TDSSOCKET *tds)\n  tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called directly after this.
    \n  \n \n static TDSRET tds_send_emulated_execute (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params)\n  Emulate prepared execute traslating to a normal language.
    \n  \n-static void tds_set_cur_cursor (TDSSOCKET *tds, TDSCURSOR *cursor)\n+static void tds_set_cur_cursor (TDSSOCKET *tds, TDSCURSOR *cursor)\n  Set current cursor.
    \n  \n-void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n  Set current dynamic.
    \n  \n const char * tds_skip_comment (const char *s)\n  Skip a comment in a query.
    \n  \n static const char * tds_skip_comment_ucs2le (const char *s, const char *end)\n  Skip a comment in a query.
    \n@@ -292,21 +292,21 @@\n  \n TDSRET tds_submit_commit (TDSSOCKET *tds, int cont)\n  Send a commit request.
    \n  \n TDSRET tds_submit_execdirect (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)\n  Submit a prepared query with parameters.
    \n  \n-TDSRET tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+TDSRET tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n  Sends a previously prepared dynamic statement to the server.
    \n  \n TDSRET tds_submit_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size)\n  Send option commands to server.
    \n  \n-TDSRET tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n+TDSRET tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)\n  Creates a temporary stored procedure in the server.
    \n  \n TDSRET tds_submit_query (TDSSOCKET *tds, const char *query)\n  Sends a language string to the database server for processing.
    \n  \n TDSRET tds_submit_query_params (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head)\n  Sends a language string to the database server for processing.
    \n@@ -316,15 +316,15 @@\n  \n TDSRET tds_submit_rollback (TDSSOCKET *tds, int cont)\n  Send a rollback request.
    \n  \n TDSRET tds_submit_rpc (TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)\n  Calls a RPC from server.
    \n  \n-TDSRET tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n+TDSRET tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn)\n  Send a unprepare request for a prepared query.
    \n  \n \n \n \n@@ -588,15 +588,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -705,15 +705,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1107,15 +1107,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1154,15 +1154,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1196,15 +1196,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1299,15 +1299,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -2019,15 +2019,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -2066,15 +2066,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -2513,15 +2513,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -2630,15 +2630,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -2947,15 +2947,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot", "source2": "a00542_ga08877c101704bebe4fa57e0849dc272d_cgraph.dot", "unified_diff": "@@ -12,21 +12,21 @@\n Node3 [id=\"Node000003\",label=\"tds_count_placeholders\\l_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga0cd19215e9169ea299a6c9cbf5b2fb60\",tooltip=\"Count the number of placeholders ('?') in a query.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_next_placeholder\\l_ucs2le\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gaaa97f8535a2babe642024a0744d271d5\",tooltip=\"Found the next placeholder (? or @param) in a string.\"];\n Node2 -> Node4 [id=\"edge4_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node7 [id=\"edge5_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node7 -> Node8 [id=\"edge6_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node8 -> Node9 [id=\"edge7_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node7 -> Node12 [id=\"edge8_Node000007_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node7 -> Node14 [id=\"edge9_Node000007_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node1 -> Node16 [id=\"edge10_Node000001_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds7_write_param_def\\l_from_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga24345856c16b15aa3e84459c2f551320\",tooltip=\"Write string with parameters definition, useful for TDS7+.\"];\n Node16 -> Node3 [id=\"edge11_Node000016_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 -> Node17 [id=\"edge12_Node000016_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_freeze_abort\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga7274d9c5dc75c58bb7d1f1c29e03a73e\",tooltip=\"Discard all data written after the freeze.\"];\n Node16 -> Node18 [id=\"edge13_Node000016_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga0da385231bfa3dc49377e1fb2bea2c07_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga0da385231bfa3dc49377e1fb2bea2c07_cgraph.dot", "unified_diff": "@@ -11,13 +11,13 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_freeze_written\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga528cc96da09c11bc2930daae64e33e83\",tooltip=\"Compute how many bytes has been written from freeze.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node5 -> Node10 [id=\"edge6_Node000005_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node5 -> Node12 [id=\"edge7_Node000005_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga0e2e7230c425e925402d7856ff5b4b18_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga0e2e7230c425e925402d7856ff5b4b18_cgraph.dot", "unified_diff": "@@ -7,22 +7,22 @@\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node8 [id=\"edge5_Node000003_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node8 -> Node9 [id=\"edge6_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node3 -> Node10 [id=\"edge7_Node000003_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node10 -> Node11 [id=\"edge8_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n Node1 -> Node12 [id=\"edge9_Node000001_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_quote_and_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga26b26296d060dca75f6a43e9ac41e58d\",tooltip=\"Send a string to server while quoting it.\"];\n Node12 -> Node3 [id=\"edge10_Node000012_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga24345856c16b15aa3e84459c2f551320_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga24345856c16b15aa3e84459c2f551320_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga24345856c16b15aa3e84459c2f551320_cgraph.dot", "source2": "a00542_ga24345856c16b15aa3e84459c2f551320_cgraph.dot", "unified_diff": "@@ -23,19 +23,19 @@\n Node1 -> Node9 [id=\"edge8_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_get_column_declaration\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga50d62edeb2a432e2dc668263f3f958ff\",tooltip=\"Return declaration for column (like \\\"varchar(20)\\\").\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"tds_fix_column_size\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga440f0f469afad1eac4c008979873ccdd\",tooltip=\"Get column size for wire.\"];\n Node1 -> Node11 [id=\"edge10_Node000001_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node11 -> Node12 [id=\"edge11_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node12 -> Node13 [id=\"edge12_Node000012_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node11 -> Node16 [id=\"edge13_Node000011_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node16 [id=\"Node000016\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node16 -> Node17 [id=\"edge14_Node000016_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node17 [id=\"Node000017\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node11 -> Node18 [id=\"edge15_Node000011_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node18 -> Node19 [id=\"edge16_Node000018_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga24345856c16b15aa3e84459c2f551320_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga24345856c16b15aa3e84459c2f551320_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga24345856c16b15aa3e84459c2f551320_icgraph.dot", "source2": "a00542_ga24345856c16b15aa3e84459c2f551320_icgraph.dot", "unified_diff": "@@ -17,15 +17,15 @@\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node6 -> Node9 [id=\"edge7_Node000006_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node6 -> Node12 [id=\"edge8_Node000006_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node6 -> Node17 [id=\"edge9_Node000006_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node6 -> Node18 [id=\"edge10_Node000006_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node6 -> Node3 [id=\"edge11_Node000006_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node19 [id=\"edge12_Node000006_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga26b26296d060dca75f6a43e9ac41e58d_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga26b26296d060dca75f6a43e9ac41e58d_cgraph.dot", "unified_diff": "@@ -5,19 +5,19 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node2 -> Node7 [id=\"edge4_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node7 -> Node8 [id=\"edge5_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node2 -> Node9 [id=\"edge6_Node000002_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node9 -> Node10 [id=\"edge7_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot", "source2": "a00542_ga2d0a06c1a30dd2470dc7a788de21b080_cgraph.dot", "unified_diff": "@@ -19,19 +19,19 @@\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_put_param_as_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga0e2e7230c425e925402d7856ff5b4b18\",tooltip=\"Send a parameter to server.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00539.html#gad83c146aa5ba3f1515557d6b5248494a\",tooltip=\"tds_convert convert a type to another.\"];\n Node7 -> Node9 [id=\"edge8_Node000007_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node9 -> Node14 [id=\"edge10_Node000009_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node9 -> Node16 [id=\"edge11_Node000009_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node16 [id=\"Node000016\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node7 -> Node18 [id=\"edge12_Node000007_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_quote_and_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga26b26296d060dca75f6a43e9ac41e58d\",tooltip=\"Send a string to server while quoting it.\"];\n Node18 -> Node9 [id=\"edge13_Node000018_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node9 [id=\"edge14_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node19 [id=\"edge15_Node000001_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"tds_query_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gada27f4cfce925240ad33b71b63ca692d\",tooltip=\"Flush query packet.\"];\n Node19 -> Node20 [id=\"edge16_Node000019_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot", "source2": "a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_cgraph.dot", "unified_diff": "@@ -24,13 +24,13 @@\n Node7 -> Node9 [id=\"edge9_Node000007_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_dstr_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga396f139e4f886ac1b224a735138e73dd\",tooltip=\"Returns the length of the string in bytes.\"];\n Node7 -> Node4 [id=\"edge10_Node000007_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node5 [id=\"edge11_Node000007_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node10 [id=\"edge12_Node000007_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node10 -> Node11 [id=\"edge13_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node10 -> Node15 [id=\"edge14_Node000010_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node15 [id=\"Node000015\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node15 [id=\"Node000015\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node10 -> Node17 [id=\"edge15_Node000010_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node17 [id=\"Node000017\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot", "source2": "a00542_ga4f1f0a4f77bc4ea1440dfdebc19a157c_icgraph.dot", "unified_diff": "@@ -15,15 +15,15 @@\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node5 -> Node8 [id=\"edge6_Node000005_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node5 -> Node11 [id=\"edge7_Node000005_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node5 -> Node16 [id=\"edge8_Node000005_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node5 -> Node17 [id=\"edge9_Node000005_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node5 -> Node2 [id=\"edge10_Node000005_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node18 [id=\"edge11_Node000005_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot", "source2": "a00542_ga50d62edeb2a432e2dc668263f3f958ff_icgraph.dot", "unified_diff": "@@ -11,19 +11,19 @@\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds4_send_emulated_rpc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga2d0a06c1a30dd2470dc7a788de21b080\",tooltip=\"Send RPC as string query.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_submit_rpc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5f071b94ad7889690762dc85646c74ab\",tooltip=\"Calls a RPC from server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbrpcsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00528.html#gafa4dfd181be21e49c397f7daaa9cf96c\",tooltip=\"Execute the procedure and free associated memory.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node6 [id=\"Node000006\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node1 -> Node12 [id=\"edge8_Node000001_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds7_write_param_def\\l_from_params\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga6513afd79629f7a928e1d3da9f56dee1\",tooltip=\"Write string with parameters definition, useful for TDS7+.\"];\n Node12 -> Node13 [id=\"edge9_Node000012_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_submit_query_params\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga95e0fccedc459a4404f496eec74a369a\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node13 -> Node14 [id=\"edge10_Node000013_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node14 -> Node23 [id=\"edge11_Node000014_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot", "source2": "a00542_ga5a29ae7f99d089dc3cea85ec6ee5f3ab_icgraph.dot", "unified_diff": "@@ -13,22 +13,22 @@\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbsqlexec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaae889abeb145ec41f7361aa8f597fe46\",tooltip=\"send the SQL command to the server and wait for an answer.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbuse\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga66ea891910f0a357cc78107d6ab7d962\",tooltip=\"Change current database.\"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node8 -> Node3 [id=\"edge8_Node000008_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node9 [id=\"edge9_Node000007_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node7 -> Node10 [id=\"edge10_Node000007_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node10 -> Node8 [id=\"edge11_Node000010_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 -> Node11 [id=\"edge12_Node000010_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n Node1 -> Node12 [id=\"edge13_Node000001_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node1 -> Node13 [id=\"edge14_Node000001_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n@@ -36,17 +36,17 @@\n Node14 [id=\"Node000014\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node1 -> Node15 [id=\"edge16_Node000001_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node1 -> Node16 [id=\"edge17_Node000001_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_submit_queryf\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gad695defcbf663b0023851a198206a772\",tooltip=\"Format and submit a query.\"];\n Node16 -> Node2 [id=\"edge18_Node000016_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 -> Node17 [id=\"edge19_Node000016_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node17 [id=\"Node000017\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node17 -> Node18 [id=\"edge20_Node000017_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node16 -> Node19 [id=\"edge21_Node000016_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node19 -> Node20 [id=\"edge22_Node000019_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node1 -> Node21 [id=\"edge23_Node000001_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_submit_rollback\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga9c1cdcc388506a2ca3c0aaee8c461ba6\",tooltip=\"Send a rollback request.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot", "source2": "a00542_ga6513afd79629f7a928e1d3da9f56dee1_cgraph.dot", "unified_diff": "@@ -27,19 +27,19 @@\n Node10 -> Node11 [id=\"edge10_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_skip_comment_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gac3124fe439d9c96236fc33af7793ffcf\",tooltip=\"Skip a comment in a query.\"];\n Node10 -> Node12 [id=\"edge11_Node000010_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_skip_quoted_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gab42efeaf6c795435a03de1835b3de1c6\",tooltip=\"Return pointer to end of a quoted string.\"];\n Node1 -> Node13 [id=\"edge12_Node000001_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node13 -> Node14 [id=\"edge13_Node000013_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node14 -> Node15 [id=\"edge14_Node000014_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node13 -> Node18 [id=\"edge15_Node000013_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node18 -> Node19 [id=\"edge16_Node000018_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node13 -> Node20 [id=\"edge17_Node000013_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node20 [id=\"Node000020\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node20 -> Node21 [id=\"edge18_Node000020_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node21 [id=\"Node000021\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot", "source2": "a00542_ga6513afd79629f7a928e1d3da9f56dee1_icgraph.dot", "unified_diff": "@@ -11,15 +11,15 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node3 -> Node6 [id=\"edge4_Node000003_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node3 -> Node9 [id=\"edge5_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node3 -> Node14 [id=\"edge6_Node000003_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node3 -> Node15 [id=\"edge7_Node000003_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node3 -> Node16 [id=\"edge8_Node000003_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node3 -> Node17 [id=\"edge9_Node000003_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot", "source2": "a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_cgraph.dot", "unified_diff": "@@ -14,19 +14,19 @@\n Node4 [id=\"Node000004\",label=\"tds_skip_comment_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gac3124fe439d9c96236fc33af7793ffcf\",tooltip=\"Skip a comment in a query.\"];\n Node3 -> Node5 [id=\"edge4_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_skip_quoted_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gab42efeaf6c795435a03de1835b3de1c6\",tooltip=\"Return pointer to end of a quoted string.\"];\n Node1 -> Node3 [id=\"edge5_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node6 -> Node7 [id=\"edge7_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node7 -> Node8 [id=\"edge8_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node6 -> Node11 [id=\"edge9_Node000006_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node11 -> Node12 [id=\"edge10_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node6 -> Node13 [id=\"edge11_Node000006_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node13 -> Node14 [id=\"edge12_Node000013_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot", "source2": "a00542_ga6e42b4a1d1d3898229ea2fe4afc2ecec_icgraph.dot", "unified_diff": "@@ -17,15 +17,15 @@\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node6 -> Node9 [id=\"edge7_Node000006_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node6 -> Node12 [id=\"edge8_Node000006_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node6 -> Node17 [id=\"edge9_Node000006_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node6 -> Node18 [id=\"edge10_Node000006_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node6 -> Node3 [id=\"edge11_Node000006_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node19 [id=\"edge12_Node000006_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot", "source2": "a00542_ga74eb08c3a1c85be8ac9db428842c8b9d_cgraph.dot", "unified_diff": "@@ -12,21 +12,21 @@\n Node3 [id=\"Node000003\",label=\"tds_count_placeholders\\l_ucs2le\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga0cd19215e9169ea299a6c9cbf5b2fb60\",tooltip=\"Count the number of placeholders ('?') in a query.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_next_placeholder\\l_ucs2le\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gaaa97f8535a2babe642024a0744d271d5\",tooltip=\"Found the next placeholder (? or @param) in a string.\"];\n Node2 -> Node4 [id=\"edge4_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node7 [id=\"edge5_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node7 -> Node8 [id=\"edge6_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node8 -> Node9 [id=\"edge7_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node7 -> Node12 [id=\"edge8_Node000007_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node7 -> Node14 [id=\"edge9_Node000007_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node1 -> Node16 [id=\"edge10_Node000001_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds7_write_param_def\\l_from_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga24345856c16b15aa3e84459c2f551320\",tooltip=\"Write string with parameters definition, useful for TDS7+.\"];\n Node16 -> Node3 [id=\"edge11_Node000016_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 -> Node17 [id=\"edge12_Node000016_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_freeze_abort\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga7274d9c5dc75c58bb7d1f1c29e03a73e\",tooltip=\"Discard all data written after the freeze.\"];\n Node16 -> Node18 [id=\"edge13_Node000016_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga7efaa23c3b21158ffc963f85fbc3fdf4_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga7efaa23c3b21158ffc963f85fbc3fdf4_icgraph.dot", "unified_diff": "@@ -11,15 +11,15 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbuse\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga66ea891910f0a357cc78107d6ab7d962\",tooltip=\"Change current database.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds71_read_table_names\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga7482b5730d880fcedbe9fcd609a550ce\",tooltip=\"Reads table names for TDS 7.1+.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_process_tabname\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeec59bca9bd0c5388e245f0d19d9c81a\",tooltip=\"Process list of table from network.\"];\n Node2 -> Node40 [id=\"edge5_Node000002_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node40 [id=\"Node000040\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node40 [id=\"Node000040\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node40 -> Node41 [id=\"edge6_Node000040_Node000041\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node41 [id=\"Node000041\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node41 [id=\"Node000041\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node1 -> Node42 [id=\"edge7_Node000001_Node000042\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node42 [id=\"Node000042\",label=\"tds_quote_id_rpc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga691e8752f4f84ed51b7f4d1447cb3d25\",tooltip=\"Quote an id for a RPC call.\"];\n Node1 -> Node43 [id=\"edge8_Node000001_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node43 [id=\"Node000043\",label=\"tds_quote_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga737b9fb9971fb425af5c722415ef0eac\",tooltip=\"Quote a string.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga8853354723094c8efcd87fabf675c64f_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga8853354723094c8efcd87fabf675c64f_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga8853354723094c8efcd87fabf675c64f_icgraph.dot", "source2": "a00542_ga8853354723094c8efcd87fabf675c64f_icgraph.dot", "unified_diff": "@@ -11,15 +11,15 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node3 -> Node6 [id=\"edge4_Node000003_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node3 -> Node9 [id=\"edge5_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node3 -> Node14 [id=\"edge6_Node000003_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node3 -> Node15 [id=\"edge7_Node000003_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node3 -> Node16 [id=\"edge8_Node000003_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node3 -> Node17 [id=\"edge9_Node000003_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga8d8f2f1c91635ee95f30722208ae3043_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga8d8f2f1c91635ee95f30722208ae3043_icgraph.dot", "unified_diff": "@@ -14,13 +14,13 @@\n Node4 [id=\"Node000004\",label=\"tds_process_tabname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeec59bca9bd0c5388e245f0d19d9c81a\",tooltip=\"Process list of table from network.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_process_default\\l_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga39453d084f3f780ac4602d4abf2839f7\",tooltip=\"tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot...\"];\n Node5 -> Node7 [id=\"edge5_Node000005_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node4 -> Node7 [id=\"edge6_Node000004_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node39 [id=\"edge7_Node000001_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node39 [id=\"Node000039\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node39 [id=\"Node000039\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node39 -> Node40 [id=\"edge8_Node000039_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node40 [id=\"Node000040\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node40 [id=\"Node000040\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node40 -> Node32 [id=\"edge9_Node000040_Node000032\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node32 [id=\"Node000032\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node32 [id=\"Node000032\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot", "source2": "a00542_ga95e0fccedc459a4404f496eec74a369a_icgraph.dot", "unified_diff": "@@ -13,34 +13,34 @@\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbsqlexec\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gaae889abeb145ec41f7361aa8f597fe46\",tooltip=\"send the SQL command to the server and wait for an answer.\"];\n Node2 -> Node8 [id=\"edge6_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node8 -> Node9 [id=\"edge7_Node000008_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node9 -> Node4 [id=\"edge8_Node000009_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 -> Node10 [id=\"edge9_Node000008_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node8 -> Node11 [id=\"edge10_Node000008_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node11 -> Node9 [id=\"edge11_Node000011_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node13 [id=\"edge12_Node000002_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_submit_begin_tran\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga7bf3670d3d6dabed469b9eb117298079\",tooltip=\"Send a rollback request.\"];\n Node2 -> Node14 [id=\"edge13_Node000002_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 [id=\"Node000014\",label=\"tds_submit_commit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga530538c4c975524cf0b771a550fc94a3\",tooltip=\"Send a commit request.\"];\n Node2 -> Node15 [id=\"edge14_Node000002_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node2 -> Node16 [id=\"edge15_Node000002_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node2 -> Node17 [id=\"edge16_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_submit_queryf\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gad695defcbf663b0023851a198206a772\",tooltip=\"Format and submit a query.\"];\n Node17 -> Node3 [id=\"edge17_Node000017_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 -> Node18 [id=\"edge18_Node000017_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node17 -> Node20 [id=\"edge19_Node000017_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node20 [id=\"Node000020\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node2 -> Node22 [id=\"edge20_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_submit_rollback\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga9c1cdcc388506a2ca3c0aaee8c461ba6\",tooltip=\"Send a rollback request.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga9ad2e6defce530a8778791cce0166ccd_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga9ad2e6defce530a8778791cce0166ccd_cgraph.dot", "unified_diff": "@@ -9,19 +9,19 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_freeze_written\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga528cc96da09c11bc2930daae64e33e83\",tooltip=\"Compute how many bytes has been written from freeze.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node5 [id=\"Node000005\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node4 -> Node9 [id=\"edge6_Node000004_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node9 -> Node10 [id=\"edge7_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node4 -> Node11 [id=\"edge8_Node000004_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node11 -> Node12 [id=\"edge9_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot", "source2": "a00542_ga9ad2e6defce530a8778791cce0166ccd_icgraph.dot", "unified_diff": "@@ -31,15 +31,15 @@\n Node46 -> Node47 [id=\"edge12_Node000046_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node47 [id=\"Node000047\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node47 -> Node15 [id=\"edge13_Node000047_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 [id=\"Node000015\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node47 -> Node29 [id=\"edge14_Node000047_Node000029\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node29 [id=\"Node000029\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node47 -> Node39 [id=\"edge15_Node000047_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node39 [id=\"Node000039\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node39 [id=\"Node000039\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node47 -> Node4 [id=\"edge16_Node000047_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node47 -> Node5 [id=\"edge17_Node000047_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node47 -> Node45 [id=\"edge18_Node000047_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node47 -> Node42 [id=\"edge19_Node000047_Node000042\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node42 [id=\"Node000042\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node47 -> Node48 [id=\"edge20_Node000047_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_submit_queryf\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gad695defcbf663b0023851a198206a772\",tooltip=\"Format and submit a query.\"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_ga9f6f25dd405f45e75420e6e084bf2d85_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_ga9f6f25dd405f45e75420e6e084bf2d85_cgraph.dot", "unified_diff": "@@ -17,13 +17,13 @@\n Node3 -> Node6 [id=\"edge5_Node000003_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n Node3 -> Node7 [id=\"edge6_Node000003_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_freeze_written\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga528cc96da09c11bc2930daae64e33e83\",tooltip=\"Compute how many bytes has been written from freeze.\"];\n Node3 -> Node8 [id=\"edge7_Node000003_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node8 -> Node13 [id=\"edge9_Node000008_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node8 -> Node15 [id=\"edge10_Node000008_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node15 [id=\"Node000015\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node15 [id=\"Node000015\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gad5b76c688898b86984d09628f030d01c_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_gad5b76c688898b86984d09628f030d01c_icgraph.dot", "source2": "a00542_gad5b76c688898b86984d09628f030d01c_icgraph.dot", "unified_diff": "@@ -5,26 +5,26 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds71_submit_prepexec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga08877c101704bebe4fa57e0849dc272d\",tooltip=\"Creates a temporary stored procedure in the server and execute it.\"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n+ Node3 [id=\"Node000003\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a4daaa551e54dbd978650e2eef89e09ff\",tooltip=\"Send BCP metadata to server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node4 -> Node7 [id=\"edge5_Node000004_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node4 -> Node8 [id=\"edge6_Node000004_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node8 -> Node5 [id=\"edge7_Node000008_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node10 [id=\"edge8_Node000001_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node1 -> Node11 [id=\"edge9_Node000001_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_submit_execdirect\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae603aed795a4c5bb26ab159a11256996\",tooltip=\"Submit a prepared query with parameters.\"];\n Node1 -> Node12 [id=\"edge10_Node000001_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_submit_prepare\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga74eb08c3a1c85be8ac9db428842c8b9d\",tooltip=\"Creates a temporary stored procedure in the server.\"];\n Node1 -> Node13 [id=\"edge11_Node000001_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_submit_query_params\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga95e0fccedc459a4404f496eec74a369a\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node13 -> Node14 [id=\"edge12_Node000013_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gad695defcbf663b0023851a198206a772_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gad695defcbf663b0023851a198206a772_icgraph.dot", "unified_diff": "@@ -7,15 +7,15 @@\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot", "source2": "a00542_gada27f4cfce925240ad33b71b63ca692d_icgraph.dot", "unified_diff": "@@ -37,15 +37,15 @@\n Node47 -> Node48 [id=\"edge15_Node000047_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_submit_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga5a29ae7f99d089dc3cea85ec6ee5f3ab\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node48 -> Node12 [id=\"edge16_Node000048_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n Node48 -> Node26 [id=\"edge17_Node000048_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node26 [id=\"Node000026\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node48 -> Node36 [id=\"edge18_Node000048_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node48 -> Node42 [id=\"edge19_Node000048_Node000042\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node43 [id=\"edge20_Node000048_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node44 [id=\"edge21_Node000048_Node000044\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node39 [id=\"edge22_Node000048_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node49 [id=\"edge23_Node000048_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 [id=\"Node000049\",label=\"tds_submit_queryf\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#gad695defcbf663b0023851a198206a772\",tooltip=\"Format and submit a query.\"];\n Node49 -> Node12 [id=\"edge24_Node000049_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot", "source2": "a00542_gae8b7db85af16701fc0604eb117cbd4e4_icgraph.dot", "unified_diff": "@@ -42,33 +42,33 @@\n Node17 -> Node8 [id=\"edge18_Node000017_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 -> Node9 [id=\"edge19_Node000016_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node18 [id=\"edge20_Node000003_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node18 -> Node17 [id=\"edge21_Node000018_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node9 [id=\"edge22_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node19 [id=\"edge23_Node000003_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node19 -> Node20 [id=\"edge24_Node000019_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node3 -> Node21 [id=\"edge25_Node000003_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node21 -> Node22 [id=\"edge26_Node000021_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node3 -> Node23 [id=\"edge27_Node000003_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node23 -> Node24 [id=\"edge28_Node000023_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node24 [id=\"Node000024\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node24 [id=\"Node000024\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node23 -> Node28 [id=\"edge29_Node000023_Node000028\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node28 [id=\"Node000028\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node28 [id=\"Node000028\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node23 -> Node31 [id=\"edge30_Node000023_Node000031\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node31 [id=\"Node000031\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node23 -> Node36 [id=\"edge31_Node000023_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node36 [id=\"Node000036\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node23 -> Node37 [id=\"edge32_Node000023_Node000037\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node37 [id=\"Node000037\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node37 [id=\"Node000037\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node37 -> Node9 [id=\"edge33_Node000037_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node36 [id=\"edge34_Node000003_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node38 [id=\"edge35_Node000001_Node000038\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node38 [id=\"Node000038\",label=\"tds_submit_execute\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga3e7b4793c6f799fbc6c174f673bb5b32\",tooltip=\"Sends a previously prepared dynamic statement to the server.\"];\n Node1 -> Node39 [id=\"edge36_Node000001_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node39 [id=\"Node000039\",label=\"tds_submit_prepare\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga74eb08c3a1c85be8ac9db428842c8b9d\",tooltip=\"Creates a temporary stored procedure in the server.\"];\n Node1 -> Node40 [id=\"edge37_Node000001_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot", "source2": "a00542_gaf573d8d4d2660c8c27770573fca05ff5_cgraph.dot", "unified_diff": "@@ -5,25 +5,25 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node2 -> Node7 [id=\"edge4_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node7 -> Node8 [id=\"edge5_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node2 -> Node9 [id=\"edge6_Node000002_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node9 -> Node10 [id=\"edge7_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n Node1 -> Node11 [id=\"edge8_Node000001_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_query_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gada27f4cfce925240ad33b71b63ca692d\",tooltip=\"Flush query packet.\"];\n Node11 -> Node12 [id=\"edge9_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_flush_packet\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga5feb53554e8917a81bbbc332163a61fb\",tooltip=\"Flush packet to server.\"];\n Node1 -> Node13 [id=\"edge10_Node000001_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"tds_set_cur_dyn\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gae8b7db85af16701fc0604eb117cbd4e4\",tooltip=\"Set current dynamic.\"];\n Node1 -> Node14 [id=\"edge11_Node000001_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00542_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00542_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00542_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot", "source2": "a00542_gafd74652c4722ddce4d642cc4209449d4_cgraph.dot", "unified_diff": "@@ -13,19 +13,19 @@\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_freeze_close_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2660b893ae2bf36fe1b63b354e748bad\",tooltip=\"Stop keeping data for this specific freeze.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_freeze_written\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga528cc96da09c11bc2930daae64e33e83\",tooltip=\"Compute how many bytes has been written from freeze.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node6 -> Node11 [id=\"edge8_Node000006_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node11 -> Node12 [id=\"edge9_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node6 -> Node13 [id=\"edge10_Node000006_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node13 -> Node14 [id=\"edge11_Node000013_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot", "source2": "a00543_ga017c427e9599c031be5c555cb32abe2c_cgraph.dot", "unified_diff": "@@ -19,14 +19,14 @@\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_close_socket\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e\",tooltip=\"Close current socket.\"];\n Node1 -> Node8 [id=\"edge7_Node000001_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node9 -> Node14 [id=\"edge10_Node000009_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node9 -> Node16 [id=\"edge11_Node000009_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node16 [id=\"Node000016\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node8 -> Node5 [id=\"edge12_Node000008_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot", "source2": "a00543_ga0cb72d3f6943795c39db1fa692be0a58_icgraph.dot", "unified_diff": "@@ -43,17 +43,17 @@\n Node44 -> Node5 [id=\"edge23_Node000044_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node43 -> Node45 [id=\"edge24_Node000043_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node45 [id=\"Node000045\",label=\"tds7_process_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaca56fc22d65a24a96d1bef310ade73aa\",tooltip=\"tds7_process_result() is the TDS 7.0 result set processing routine.\"];\n Node45 -> Node3 [id=\"edge25_Node000045_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node45 -> Node5 [id=\"edge26_Node000045_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node44 [id=\"edge27_Node000001_Node000044\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node46 [id=\"edge28_Node000001_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node46 [id=\"Node000046\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node46 [id=\"Node000046\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node1 -> Node47 [id=\"edge29_Node000001_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node47 [id=\"Node000047\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node47 [id=\"Node000047\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node1 -> Node48 [id=\"edge30_Node000001_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_get_data_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gad9b6b86f48be077fb44ac603845a0c27\",tooltip=\"Reads data metadata from wire.\"];\n Node48 -> Node39 [id=\"edge31_Node000048_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node49 [id=\"edge32_Node000048_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 [id=\"Node000049\",label=\"tds_process_dyn_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga416cf119c1d4a0fca27dc5b50c261358\",tooltip=\"Process results from dynamic.\"];\n Node49 -> Node3 [id=\"edge33_Node000049_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 -> Node5 [id=\"edge34_Node000049_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga1fcaf8d488cc1390f106ce3ad0bf37b4_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga1fcaf8d488cc1390f106ce3ad0bf37b4_cgraph.dot", "unified_diff": "@@ -3,24 +3,24 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"skip_one_input_sequence\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3380140fc6eb9f2090c430f40e846876\",tooltip=\"Move the input sequence pointer to the next valid position.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_sys_iconv_open\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516\",tooltip=\"Inputs are FreeTDS canonical names, no other.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node6 -> Node7 [id=\"edge7_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n Node1 -> Node8 [id=\"edge8_Node000001_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node8 -> Node9 [id=\"edge9_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node9 [id=\"Node000009\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot", "source2": "a00543_ga3e3f76009fce5ceedb2f42bb2c9aed2e_icgraph.dot", "unified_diff": "@@ -9,15 +9,15 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbclose\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaef740b394b44eb33925c2718f7b30d69\",tooltip=\"Close a connection to the server and free associated resources.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbexit\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gad0044401c8c83205583f93a4764f2d8b\",tooltip=\"Close server connections and free all related structures.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node5 [id=\"Node000005\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n Node1 -> Node3 [id=\"edge5_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_goodread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga6f2ae00407f59fb1ab280fa44a56295e\",tooltip=\"Loops until we have received some characters return -1 on failure.\"];\n Node1 -> Node7 [id=\"edge7_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_goodwrite\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga2734407109c834c5dda7ff8a45c71230\",tooltip=\" \"];\n Node1 -> Node8 [id=\"edge8_Node000001_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_process_default\\l_tokens\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga39453d084f3f780ac4602d4abf2839f7\",tooltip=\"tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot...\"];\n@@ -61,17 +61,17 @@\n Node45 -> Node52 [id=\"edge34_Node000045_Node000052\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node52 [id=\"Node000052\",label=\"tds7_get_data_info\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga07cee55fd522cca16fb59b7a8f0b1376\",tooltip=\"Reads data information from wire.\"];\n Node52 -> Node53 [id=\"edge35_Node000052_Node000053\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node53 [id=\"Node000053\",label=\"tds7_process_compute\\l_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga6728e344caa20aea1def85f58dea138b\",tooltip=\"tds7_process_compute_result() processes compute result sets for TDS 7/8.\"];\n Node53 -> Node10 [id=\"edge36_Node000053_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node45 -> Node53 [id=\"edge37_Node000045_Node000053\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node45 -> Node55 [id=\"edge38_Node000045_Node000055\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node55 [id=\"Node000055\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node55 [id=\"Node000055\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node45 -> Node56 [id=\"edge39_Node000045_Node000056\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node56 [id=\"Node000056\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node56 [id=\"Node000056\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node45 -> Node57 [id=\"edge40_Node000045_Node000057\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node57 [id=\"Node000057\",label=\"tds_get_data_info\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gad9b6b86f48be077fb44ac603845a0c27\",tooltip=\"Reads data metadata from wire.\"];\n Node57 -> Node48 [id=\"edge41_Node000057_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node57 -> Node58 [id=\"edge42_Node000057_Node000058\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node58 [id=\"Node000058\",label=\"tds_process_dyn_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga416cf119c1d4a0fca27dc5b50c261358\",tooltip=\"Process results from dynamic.\"];\n Node58 -> Node8 [id=\"edge43_Node000058_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node58 -> Node10 [id=\"edge44_Node000058_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -110,15 +110,15 @@\n Node44 -> Node69 [id=\"edge70_Node000044_Node000069\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 [id=\"Node000069\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node69 -> Node46 [id=\"edge71_Node000069_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node47 [id=\"edge72_Node000069_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node48 [id=\"edge73_Node000069_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node49 [id=\"edge74_Node000069_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node70 [id=\"edge75_Node000069_Node000070\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node70 [id=\"Node000070\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node70 [id=\"Node000070\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node69 -> Node76 [id=\"edge76_Node000069_Node000076\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node76 [id=\"Node000076\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node76 -> Node46 [id=\"edge77_Node000076_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node76 -> Node49 [id=\"edge78_Node000076_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node76 -> Node52 [id=\"edge79_Node000076_Node000052\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node76 -> Node57 [id=\"edge80_Node000076_Node000057\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node76 -> Node62 [id=\"edge81_Node000076_Node000062\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot", "source2": "a00543_ga410619783bdf2bb60b0f27a5578e0e07_icgraph.dot", "unified_diff": "@@ -45,17 +45,17 @@\n Node45 -> Node6 [id=\"edge24_Node000045_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node44 -> Node46 [id=\"edge25_Node000044_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 [id=\"Node000046\",label=\"tds7_process_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaca56fc22d65a24a96d1bef310ade73aa\",tooltip=\"tds7_process_result() is the TDS 7.0 result set processing routine.\"];\n Node46 -> Node4 [id=\"edge26_Node000046_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 -> Node6 [id=\"edge27_Node000046_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node45 [id=\"edge28_Node000002_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node47 [id=\"edge29_Node000002_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node47 [id=\"Node000047\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node47 [id=\"Node000047\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node2 -> Node48 [id=\"edge30_Node000002_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node48 [id=\"Node000048\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node48 [id=\"Node000048\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node2 -> Node49 [id=\"edge31_Node000002_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 [id=\"Node000049\",label=\"tds_get_data_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gad9b6b86f48be077fb44ac603845a0c27\",tooltip=\"Reads data metadata from wire.\"];\n Node49 -> Node40 [id=\"edge32_Node000049_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 -> Node50 [id=\"edge33_Node000049_Node000050\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node50 [id=\"Node000050\",label=\"tds_process_dyn_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga416cf119c1d4a0fca27dc5b50c261358\",tooltip=\"Process results from dynamic.\"];\n Node50 -> Node4 [id=\"edge34_Node000050_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node50 -> Node6 [id=\"edge35_Node000050_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -107,17 +107,17 @@\n Node1 -> Node62 [id=\"edge70_Node000001_Node000062\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 [id=\"Node000062\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node62 -> Node3 [id=\"edge71_Node000062_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node39 [id=\"edge72_Node000062_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node40 [id=\"edge73_Node000062_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node41 [id=\"edge74_Node000062_Node000041\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node63 [id=\"edge75_Node000062_Node000063\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node63 [id=\"Node000063\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node63 [id=\"Node000063\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node63 -> Node64 [id=\"edge76_Node000063_Node000064\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node64 [id=\"Node000064\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node64 [id=\"Node000064\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node64 -> Node47 [id=\"edge77_Node000064_Node000047\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node69 [id=\"edge78_Node000062_Node000069\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 [id=\"Node000069\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node69 -> Node3 [id=\"edge79_Node000069_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node41 [id=\"edge80_Node000069_Node000041\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node44 [id=\"edge81_Node000069_Node000044\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node69 -> Node49 [id=\"edge82_Node000069_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot", "source2": "a00543_ga5feb53554e8917a81bbbc332163a61fb_icgraph.dot", "unified_diff": "@@ -11,15 +11,15 @@\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"dbsqlexec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaae889abeb145ec41f7361aa8f597fe46\",tooltip=\"send the SQL command to the server and wait for an answer.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"dbuse\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga66ea891910f0a357cc78107d6ab7d962\",tooltip=\"Change current database.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node6 -> Node7 [id=\"edge6_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node6 -> Node9 [id=\"edge8_Node000006_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node6 -> Node10 [id=\"edge9_Node000006_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -67,12 +67,12 @@\n Node53 [id=\"Node000053\",label=\"tds_send_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga11338742dc30fd0c2711f58eb830316f\",tooltip=\"tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called dire...\"];\n Node53 -> Node35 [id=\"edge34_Node000053_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node53 -> Node54 [id=\"edge35_Node000053_Node000054\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node54 [id=\"Node000054\",label=\"tdserror\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01392.html#abf18b98efef6ce2dc0b97d658a3a1918\",tooltip=\"Call the client library's error handler (for library-generated errors only)\"];\n Node1 -> Node45 [id=\"edge36_Node000001_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node55 [id=\"edge37_Node000001_Node000055\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node55 [id=\"Node000055\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n+ Node55 [id=\"Node000055\",label=\"tds_writetext_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac1e460551f1188620ea478238864ac4b\",tooltip=\"Finish sending writetext data.\"];\n Node55 -> Node56 [id=\"edge38_Node000055_Node000056\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node56 [id=\"Node000056\",label=\"dbmoretext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga6f13381522a1fa0b6ce2c15378088cdd\",tooltip=\"Send chunk of a text/image value to the server.\"];\n Node55 -> Node5 [id=\"edge39_Node000055_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga676c4dee6522815b16fdc8e448e43590_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga676c4dee6522815b16fdc8e448e43590_cgraph.dot", "unified_diff": "@@ -3,26 +3,26 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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...\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"skip_one_input_sequence\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3380140fc6eb9f2090c430f40e846876\",tooltip=\"Move the input sequence pointer to the next valid position.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_sys_iconv_open\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516\",tooltip=\"Inputs are FreeTDS canonical names, no other.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node6 -> Node7 [id=\"edge7_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node7 -> Node8 [id=\"edge8_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node1 -> Node11 [id=\"edge9_Node000001_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node11 [id=\"Node000011\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node11 -> Node12 [id=\"edge10_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot", "source2": "a00543_ga676c4dee6522815b16fdc8e448e43590_icgraph.dot", "unified_diff": "@@ -5,15 +5,15 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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...\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_alloc_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gafb26aba5d935e40b87b95e21a5185848\",tooltip=\"Reads a string from wire in a new allocated buffer.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds71_read_table_names\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga7482b5730d880fcedbe9fcd609a550ce\",tooltip=\"Reads table names for TDS 7.1+.\"];\n Node5 -> Node43 [id=\"edge6_Node000005_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -32,12 +32,12 @@\n Node47 -> Node50 [id=\"edge13_Node000047_Node000050\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node50 [id=\"Node000050\",label=\"tds7_get_data_info\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga07cee55fd522cca16fb59b7a8f0b1376\",tooltip=\"Reads data information from wire.\"];\n Node47 -> Node53 [id=\"edge14_Node000047_Node000053\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node53 [id=\"Node000053\",label=\"tds_get_data_info\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gad9b6b86f48be077fb44ac603845a0c27\",tooltip=\"Reads data metadata from wire.\"];\n Node47 -> Node58 [id=\"edge15_Node000047_Node000058\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node58 [id=\"Node000058\",label=\"tds_process_colinfo\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga22c7f413d43fc0d511e122a3de389166\",tooltip=\"Reads column information.\"];\n Node4 -> Node59 [id=\"edge16_Node000004_Node000059\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node59 [id=\"Node000059\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node59 [id=\"Node000059\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node4 -> Node60 [id=\"edge17_Node000004_Node000060\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node60 [id=\"Node000060\",label=\"tds_process_dynamic\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga5cfc0340d8d717e67f60037e029b2142\",tooltip=\"tds_process_dynamic() finds the element of the dyns array for the id\"];\n Node60 -> Node10 [id=\"edge18_Node000060_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga8d214089b6e97fc0da5e0be09f216d73_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga8d214089b6e97fc0da5e0be09f216d73_cgraph.dot", "unified_diff": "@@ -5,22 +5,22 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node2 -> Node7 [id=\"edge4_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node7 -> Node8 [id=\"edge5_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node8 -> Node9 [id=\"edge6_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node2 -> Node12 [id=\"edge7_Node000002_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node12 -> Node13 [id=\"edge8_Node000012_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n Node1 -> Node9 [id=\"edge9_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga8d214089b6e97fc0da5e0be09f216d73_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga8d214089b6e97fc0da5e0be09f216d73_icgraph.dot", "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga90f080e6e9448feac15dee1370d66802_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga90f080e6e9448feac15dee1370d66802_cgraph.dot", "unified_diff": "@@ -5,22 +5,22 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node2 -> Node7 [id=\"edge4_Node000002_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node7 -> Node8 [id=\"edge5_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node8 -> Node9 [id=\"edge6_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node2 -> Node12 [id=\"edge7_Node000002_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node12 -> Node13 [id=\"edge8_Node000012_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n Node1 -> Node9 [id=\"edge9_Node000001_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_ga90f080e6e9448feac15dee1370d66802_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_ga90f080e6e9448feac15dee1370d66802_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_ga90f080e6e9448feac15dee1370d66802_icgraph.dot", "source2": "a00543_ga90f080e6e9448feac15dee1370d66802_icgraph.dot", "unified_diff": "@@ -63,12 +63,12 @@\n Node53 [id=\"Node000053\",label=\"tds_process_param_result\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gacb3354443bcefe7a500a500a4904cc05\",tooltip=\"process output parameters of a stored procedure.\"];\n Node53 -> Node7 [id=\"edge37_Node000053_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node44 -> Node55 [id=\"edge38_Node000044_Node000055\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node55 [id=\"Node000055\",label=\"tds_process_colinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga22c7f413d43fc0d511e122a3de389166\",tooltip=\"Reads column information.\"];\n Node55 -> Node5 [id=\"edge39_Node000055_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node55 -> Node4 [id=\"edge40_Node000055_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node56 [id=\"edge41_Node000001_Node000056\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node56 [id=\"Node000056\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node56 [id=\"Node000056\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node1 -> Node57 [id=\"edge42_Node000001_Node000057\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node57 [id=\"Node000057\",label=\"tds_process_dynamic\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga5cfc0340d8d717e67f60037e029b2142\",tooltip=\"tds_process_dynamic() finds the element of the dyns array for the id\"];\n Node57 -> Node7 [id=\"edge43_Node000057_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00543_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00543_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00543_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot", "source2": "a00543_gae777dd57e8d1bb40349d7d7d8434fddf_icgraph.dot", "unified_diff": "@@ -27,23 +27,23 @@\n Node39 -> Node3 [id=\"edge12_Node000039_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node39 -> Node5 [id=\"edge13_Node000039_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node40 [id=\"edge14_Node000001_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node40 [id=\"Node000040\",label=\"tds5_process_result2\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gabe2bdd5a41ce067cb31aef18ff81cb1c\",tooltip=\"tds5_process_result2() is the new TDS 5.0 result set processing routine.\"];\n Node40 -> Node3 [id=\"edge15_Node000040_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node40 -> Node5 [id=\"edge16_Node000040_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node41 [id=\"edge17_Node000001_Node000041\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node41 [id=\"Node000041\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node41 [id=\"Node000041\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node41 -> Node42 [id=\"edge18_Node000041_Node000042\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node42 [id=\"Node000042\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node42 [id=\"Node000042\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node42 -> Node43 [id=\"edge19_Node000042_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node43 [id=\"Node000043\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node43 -> Node44 [id=\"edge20_Node000043_Node000044\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node44 [id=\"Node000044\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node44 -> Node45 [id=\"edge21_Node000044_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node45 [id=\"Node000045\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node45 [id=\"Node000045\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node43 -> Node46 [id=\"edge22_Node000043_Node000046\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 [id=\"Node000046\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node46 -> Node54 [id=\"edge23_Node000046_Node000054\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node54 [id=\"Node000054\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node54 -> Node2 [id=\"edge24_Node000054_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node54 -> Node40 [id=\"edge25_Node000054_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node54 -> Node58 [id=\"edge26_Node000054_Node000058\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n@@ -57,15 +57,15 @@\n Node62 [id=\"Node000062\",label=\"tds_process_colinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga22c7f413d43fc0d511e122a3de389166\",tooltip=\"Reads column information.\"];\n Node62 -> Node3 [id=\"edge32_Node000062_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node62 -> Node49 [id=\"edge33_Node000062_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 [id=\"Node000049\",label=\"tds_process_tabname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeec59bca9bd0c5388e245f0d19d9c81a\",tooltip=\"Process list of table from network.\"];\n Node49 -> Node3 [id=\"edge34_Node000049_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node49 -> Node5 [id=\"edge35_Node000049_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 -> Node63 [id=\"edge36_Node000046_Node000063\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node63 [id=\"Node000063\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node63 [id=\"Node000063\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node46 -> Node64 [id=\"edge37_Node000046_Node000064\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node64 [id=\"Node000064\",label=\"tds_process_dynamic\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga5cfc0340d8d717e67f60037e029b2142\",tooltip=\"tds_process_dynamic() finds the element of the dyns array for the id\"];\n Node64 -> Node5 [id=\"edge38_Node000064_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node42 -> Node45 [id=\"edge39_Node000042_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node54 [id=\"edge40_Node000001_Node000054\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node45 [id=\"edge41_Node000001_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node63 [id=\"edge42_Node000001_Node000063\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544.html", "source2": "./usr/share/doc/freetds-doc/reference/a00544.html", "unified_diff": "@@ -130,15 +130,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -168,15 +168,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -920,15 +920,15 @@\n \n

    ◆ tds_lookup_dynamic()

    \n \n
    \n
    \n

    \n Variables

    \n 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 TDSRET tds_get_data_info (TDSSOCKET *tds, TDSCOLUMN *curcol, int is_param)
     Reads data metadata from wire.
     
    int tds_get_token_size (int marker)
     tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determine how to read past a token
     
    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, 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.
    \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1505,15 +1505,15 @@\n
    \n
    \n
    TDSDYNAMIC * tds_lookup_dynamic TDSDYNAMIC * tds_lookup_dynamic (TDSCONNECTIONconn,
    \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot", "source2": "a00544_ga07cee55fd522cca16fb59b7a8f0b1376_icgraph.dot", "unified_diff": "@@ -24,15 +24,15 @@\n Node16 [id=\"Node000016\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node16 -> Node9 [id=\"edge9_Node000016_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node3 -> Node18 [id=\"edge10_Node000003_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node3 -> Node9 [id=\"edge11_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node19 [id=\"edge12_Node000003_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node3 -> Node21 [id=\"edge13_Node000003_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node3 -> Node23 [id=\"edge14_Node000003_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node23 -> Node36 [id=\"edge15_Node000023_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node36 [id=\"Node000036\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node3 -> Node36 [id=\"edge16_Node000003_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot", "source2": "a00544_ga307f949194204f71f1a7e574424048b1_icgraph.dot", "unified_diff": "@@ -42,9 +42,9 @@\n Node47 -> Node7 [id=\"edge21_Node000047_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node46 -> Node7 [id=\"edge22_Node000046_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node48 [id=\"edge23_Node000001_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_process_col_fmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga4e3dd9d3614f5f0433b78b761dd68741\",tooltip=\"tds_process_col_fmt() is the other half of result set processing under TDS 4.2.\"];\n Node48 -> Node37 [id=\"edge24_Node000048_Node000037\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 -> Node7 [id=\"edge25_Node000048_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node49 [id=\"edge26_Node000001_Node000049\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node49 [id=\"Node000049\",label=\"tdsdump_col\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00035.html#aaee3fe5c514ce5570c9548de9b16e0d9\",tooltip=\"Write a column value to the debug log.\"];\n+ Node49 [id=\"Node000049\",label=\"tdsdump_col\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00161.html#aaee3fe5c514ce5570c9548de9b16e0d9\",tooltip=\"Write a column value to the debug log.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot", "source2": "a00544_ga39453d084f3f780ac4602d4abf2839f7_icgraph.dot", "unified_diff": "@@ -25,15 +25,15 @@\n Node16 [id=\"Node000016\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node16 -> Node9 [id=\"edge10_Node000016_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node3 -> Node18 [id=\"edge11_Node000003_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node3 -> Node9 [id=\"edge12_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node19 [id=\"edge13_Node000003_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node3 -> Node21 [id=\"edge14_Node000003_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node3 -> Node23 [id=\"edge15_Node000003_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node23 -> Node33 [id=\"edge16_Node000023_Node000033\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 [id=\"Node000033\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node3 -> Node33 [id=\"edge17_Node000003_Node000033\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot", "source2": "a00544_ga4a45cadd06ae1b886459dcc1f8e482c6_icgraph.dot", "unified_diff": "@@ -32,15 +32,15 @@\n Node20 [id=\"Node000020\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node20 -> Node13 [id=\"edge13_Node000020_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node13 [id=\"Node000013\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node7 -> Node22 [id=\"edge14_Node000007_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node7 -> Node13 [id=\"edge15_Node000007_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node23 [id=\"edge16_Node000007_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node7 -> Node25 [id=\"edge17_Node000007_Node000025\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node25 [id=\"Node000025\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node7 -> Node27 [id=\"edge18_Node000007_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node27 [id=\"Node000027\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node27 -> Node40 [id=\"edge19_Node000027_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node40 [id=\"Node000040\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node7 -> Node40 [id=\"edge20_Node000007_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot", "source2": "a00544_ga5cfc0340d8d717e67f60037e029b2142_cgraph.dot", "unified_diff": "@@ -16,19 +16,19 @@\n Node5 [id=\"Node000005\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node5 -> Node3 [id=\"edge5_Node000005_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node6 -> Node7 [id=\"edge7_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node7 -> Node8 [id=\"edge8_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node7 -> Node12 [id=\"edge9_Node000007_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node12 [id=\"Node000012\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node7 -> Node14 [id=\"edge10_Node000007_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node6 -> Node5 [id=\"edge11_Node000006_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node16 [id=\"edge12_Node000001_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"tds_get_usmallint\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gad38aa5b9547817854ccba1fcc7855861\",tooltip=\"Get an int16 from the server.\"];\n Node16 -> Node5 [id=\"edge13_Node000016_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node17 [id=\"edge14_Node000001_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"tds_lookup_dynamic\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga4a45cadd06ae1b886459dcc1f8e482c6\",tooltip=\"Finds a dynamic given string id.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot", "source2": "a00544_ga5cfc0340d8d717e67f60037e029b2142_icgraph.dot", "unified_diff": "@@ -40,29 +40,29 @@\n Node16 -> Node7 [id=\"edge17_Node000016_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node8 [id=\"edge18_Node000015_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node17 [id=\"edge19_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node17 -> Node16 [id=\"edge20_Node000017_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node8 [id=\"edge21_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node18 [id=\"edge22_Node000002_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node18 -> Node19 [id=\"edge23_Node000018_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node2 -> Node20 [id=\"edge24_Node000002_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node2 -> Node22 [id=\"edge26_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node27 [id=\"edge28_Node000022_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node22 -> Node30 [id=\"edge29_Node000022_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node22 -> Node35 [id=\"edge30_Node000022_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node22 -> Node36 [id=\"edge31_Node000022_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node36 -> Node8 [id=\"edge32_Node000036_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node35 [id=\"edge33_Node000002_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot", "source2": "a00544_ga62dc14d21453e88e24880ee0acaca73a_icgraph.dot", "unified_diff": "@@ -24,15 +24,15 @@\n Node16 [id=\"Node000016\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node16 -> Node9 [id=\"edge9_Node000016_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node3 -> Node18 [id=\"edge10_Node000003_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node3 -> Node9 [id=\"edge11_Node000003_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 -> Node19 [id=\"edge12_Node000003_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node19 [id=\"Node000019\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node3 -> Node21 [id=\"edge13_Node000003_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node3 -> Node23 [id=\"edge14_Node000003_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node23 -> Node36 [id=\"edge15_Node000023_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node36 [id=\"Node000036\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node3 -> Node36 [id=\"edge16_Node000003_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga65a2316369529731732f200c190d05d6_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga65a2316369529731732f200c190d05d6_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga65a2316369529731732f200c190d05d6_icgraph.dot", "source2": "a00544_ga65a2316369529731732f200c190d05d6_icgraph.dot", "unified_diff": "@@ -27,15 +27,15 @@\n Node17 [id=\"Node000017\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node17 -> Node10 [id=\"edge11_Node000017_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node4 -> Node19 [id=\"edge12_Node000004_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node4 -> Node10 [id=\"edge13_Node000004_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 -> Node20 [id=\"edge14_Node000004_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node20 [id=\"Node000020\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node4 -> Node22 [id=\"edge15_Node000004_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node4 -> Node24 [id=\"edge16_Node000004_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node24 [id=\"Node000024\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node24 -> Node34 [id=\"edge17_Node000024_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node34 [id=\"Node000034\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node4 -> Node34 [id=\"edge18_Node000004_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga6728e344caa20aea1def85f58dea138b_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga6728e344caa20aea1def85f58dea138b_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga6728e344caa20aea1def85f58dea138b_icgraph.dot", "source2": "a00544_ga6728e344caa20aea1def85f58dea138b_icgraph.dot", "unified_diff": "@@ -40,29 +40,29 @@\n Node16 -> Node7 [id=\"edge17_Node000016_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node8 [id=\"edge18_Node000015_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node17 [id=\"edge19_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node17 -> Node16 [id=\"edge20_Node000017_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node8 [id=\"edge21_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node18 [id=\"edge22_Node000002_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node18 -> Node19 [id=\"edge23_Node000018_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node2 -> Node20 [id=\"edge24_Node000002_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node2 -> Node22 [id=\"edge26_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node27 [id=\"edge28_Node000022_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node22 -> Node30 [id=\"edge29_Node000022_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node22 -> Node35 [id=\"edge30_Node000022_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node22 -> Node36 [id=\"edge31_Node000022_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node36 -> Node8 [id=\"edge32_Node000036_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node35 [id=\"edge33_Node000002_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot", "source2": "a00544_ga69902dffb299d62a799888e0fa3ccd68_cgraph.dot", "unified_diff": "@@ -121,19 +121,19 @@\n Node84 -> Node86 [id=\"edge76_Node000084_Node000086\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node86 [id=\"Node000086\",label=\"tds_free_input_params\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00541.html#gabdc5fee73b22345c02ab894e49ad7f95\",tooltip=\"Frees all allocated input parameters of a dynamic statement.\"];\n Node1 -> Node87 [id=\"edge77_Node000001_Node000087\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node87 [id=\"Node000087\",label=\"tds_submit_unprepare\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf573d8d4d2660c8c27770573fca05ff5\",tooltip=\"Send a unprepare request for a prepared query.\"];\n Node87 -> Node88 [id=\"edge78_Node000087_Node000088\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node88 [id=\"Node000088\",label=\"tds_put_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4\",tooltip=\"Output a string to wire automatic translate string to unicode if needed.\"];\n Node88 -> Node27 [id=\"edge79_Node000088_Node000027\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node88 -> Node89 [id=\"edge80_Node000088_Node000089\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node89 [id=\"Node000089\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n+ Node89 [id=\"Node000089\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa038a9125979f8f0915dbd53cbf27e5a\",tooltip=\"Initialize a data output stream.\"];\n Node88 -> Node91 [id=\"edge81_Node000088_Node000091\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node91 [id=\"Node000091\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n+ Node91 [id=\"Node000091\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#aa9e1e45f0305622dd6aed9f8fe158581\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node87 -> Node4 [id=\"edge82_Node000087_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node87 -> Node83 [id=\"edge83_Node000087_Node000083\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node87 -> Node93 [id=\"edge84_Node000087_Node000093\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node93 [id=\"Node000093\",label=\"tds_start_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga0da385231bfa3dc49377e1fb2bea2c07\",tooltip=\"Start query packet of a given type.\"];\n Node93 -> Node94 [id=\"edge85_Node000093_Node000094\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node94 [id=\"Node000094\",label=\"tds_start_query_head\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga9ad2e6defce530a8778791cce0166ccd\",tooltip=\"Start query packet of a given type.\"];\n Node94 -> Node88 [id=\"edge86_Node000094_Node000088\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot", "source2": "a00544_ga6fcb37d5addebdc1af9f34ebc59fd7a8_icgraph.dot", "unified_diff": "@@ -40,29 +40,29 @@\n Node16 -> Node7 [id=\"edge17_Node000016_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node8 [id=\"edge18_Node000015_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node17 [id=\"edge19_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node17 -> Node16 [id=\"edge20_Node000017_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node8 [id=\"edge21_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node18 [id=\"edge22_Node000002_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node18 -> Node19 [id=\"edge23_Node000018_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node2 -> Node20 [id=\"edge24_Node000002_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node2 -> Node22 [id=\"edge26_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node27 [id=\"edge28_Node000022_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node22 -> Node30 [id=\"edge29_Node000022_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node22 -> Node35 [id=\"edge30_Node000022_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node22 -> Node36 [id=\"edge31_Node000022_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node36 -> Node8 [id=\"edge32_Node000036_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node35 [id=\"edge33_Node000002_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot", "source2": "a00544_gabfc9de1d1fe718818caf63a4be4035a6_icgraph.dot", "unified_diff": "@@ -38,44 +38,44 @@\n Node15 -> Node6 [id=\"edge16_Node000015_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 -> Node7 [id=\"edge17_Node000014_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node16 [id=\"edge18_Node000001_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 [id=\"Node000016\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node16 -> Node15 [id=\"edge19_Node000016_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node7 [id=\"edge20_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node17 [id=\"edge21_Node000001_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node17 [id=\"Node000017\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node17 -> Node18 [id=\"edge22_Node000017_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 [id=\"Node000018\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node1 -> Node19 [id=\"edge23_Node000001_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node19 -> Node20 [id=\"edge24_Node000019_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node1 -> Node21 [id=\"edge25_Node000001_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node21 -> Node22 [id=\"edge26_Node000021_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node22 [id=\"Node000022\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node22 [id=\"Node000022\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node23 [id=\"Node000023\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node23 -> Node3 [id=\"edge28_Node000023_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 -> Node24 [id=\"edge29_Node000022_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node24 [id=\"Node000024\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node22 -> Node25 [id=\"edge30_Node000022_Node000025\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node25 [id=\"Node000025\",label=\"bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga8b85f79f53a62ac7a728fe626d609b65\",tooltip=\"Conclude the transfer of data from program variables.\"];\n Node21 -> Node26 [id=\"edge31_Node000021_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node26 [id=\"Node000026\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node26 [id=\"Node000026\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node26 -> Node23 [id=\"edge32_Node000026_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node26 -> Node24 [id=\"edge33_Node000026_Node000024\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node26 -> Node27 [id=\"edge34_Node000026_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node27 -> Node23 [id=\"edge35_Node000027_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 -> Node29 [id=\"edge36_Node000021_Node000029\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node29 [id=\"Node000029\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node29 -> Node30 [id=\"edge37_Node000029_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_end\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga7a081cf9bb8f04ead12f0299fb7c4cd9\",tooltip=\"tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens.\"];\n Node30 -> Node1 [id=\"edge38_Node000030_Node000001\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 -> Node34 [id=\"edge39_Node000021_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node34 [id=\"Node000034\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node21 -> Node35 [id=\"edge40_Node000021_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node35 [id=\"Node000035\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node35 [id=\"Node000035\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node35 -> Node7 [id=\"edge41_Node000035_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node34 [id=\"edge42_Node000001_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot", "source2": "a00544_gae3368ea80d0d8b13791ceb13ee5f19c9_icgraph.dot", "unified_diff": "@@ -40,29 +40,29 @@\n Node16 -> Node7 [id=\"edge17_Node000016_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node8 [id=\"edge18_Node000015_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node17 [id=\"edge19_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node17 -> Node16 [id=\"edge20_Node000017_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node8 [id=\"edge21_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node18 [id=\"edge22_Node000002_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node18 -> Node19 [id=\"edge23_Node000018_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node2 -> Node20 [id=\"edge24_Node000002_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node2 -> Node22 [id=\"edge26_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node27 [id=\"edge28_Node000022_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node22 -> Node30 [id=\"edge29_Node000022_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node22 -> Node35 [id=\"edge30_Node000022_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node22 -> Node36 [id=\"edge31_Node000022_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node36 -> Node8 [id=\"edge32_Node000036_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node35 [id=\"edge33_Node000002_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot", "source2": "a00544_gae5b3e01f3d665f9e377de091f46f1ab9_icgraph.dot", "unified_diff": "@@ -40,29 +40,29 @@\n Node16 -> Node7 [id=\"edge17_Node000016_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node8 [id=\"edge18_Node000015_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node17 [id=\"edge19_Node000002_Node000017\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node17 [id=\"Node000017\",label=\"dbsqlsend\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gac980139b9cea03cf93e373d425991481\",tooltip=\"Transmit the command buffer to the server.\"];\n Node17 -> Node16 [id=\"edge20_Node000017_Node000016\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node8 [id=\"edge21_Node000002_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node18 [id=\"edge22_Node000002_Node000018\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node18 [id=\"Node000018\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node18 -> Node19 [id=\"edge23_Node000018_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 [id=\"Node000019\",label=\"bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gada8e987c4a6225b9276c05ba3a4f47a0\",tooltip=\"Prepare for bulk copy operation on a table.\"];\n Node2 -> Node20 [id=\"edge24_Node000002_Node000020\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 [id=\"Node000020\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node20 -> Node21 [id=\"edge25_Node000020_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 [id=\"Node000021\",label=\"dbcancel\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga5ea23272124fff03b8d87538c1ec3ee5\",tooltip=\"Cancel the current command batch.\"];\n Node2 -> Node22 [id=\"edge26_Node000002_Node000022\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 [id=\"Node000022\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node22 -> Node23 [id=\"edge27_Node000022_Node000023\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node23 [id=\"Node000023\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node22 -> Node27 [id=\"edge28_Node000022_Node000027\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node27 [id=\"Node000027\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node22 -> Node30 [id=\"edge29_Node000022_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node22 -> Node35 [id=\"edge30_Node000022_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node35 [id=\"Node000035\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node22 -> Node36 [id=\"edge31_Node000022_Node000036\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node36 [id=\"Node000036\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node36 -> Node8 [id=\"edge32_Node000036_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node35 [id=\"edge33_Node000002_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00544_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00544_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot", "source2": "a00544_gaeeb1562044786ea17bea361ed83e6946_icgraph.dot", "unified_diff": "@@ -3,29 +3,29 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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,...\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ade7df2db455b61edc83819ad60edb339\",tooltip=\"Tell we finished sending BCP data to server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node2 -> Node6 [id=\"edge5_Node000002_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"bcp_done\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga8b85f79f53a62ac7a728fe626d609b65\",tooltip=\"Conclude the transfer of data from program variables.\"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node7 -> Node3 [id=\"edge7_Node000007_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node5 [id=\"edge8_Node000007_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 -> Node8 [id=\"edge9_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node8 -> Node3 [id=\"edge10_Node000008_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 -> Node9 [id=\"edge11_Node000008_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n Node1 -> Node10 [id=\"edge12_Node000001_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"tds_process_pending\\l_closes\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga69902dffb299d62a799888e0fa3ccd68\",tooltip=\"Attempt to close all deferred closes (dynamics and cursors).\"];\n Node10 -> Node11 [id=\"edge13_Node000010_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node11 [id=\"Node000011\",label=\"tds_process_end\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga7a081cf9bb8f04ead12f0299fb7c4cd9\",tooltip=\"tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens.\"];\n@@ -37,10 +37,10 @@\n Node19 [id=\"Node000019\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node14 -> Node1 [id=\"edge17_Node000014_Node000001\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node14 -> Node33 [id=\"edge18_Node000014_Node000033\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 [id=\"Node000033\",label=\"tds_submit_optioncmd\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#gaf0da49585d39e99780a004ee2ca23479\",tooltip=\"Send option commands to server.\"];\n Node11 -> Node14 [id=\"edge19_Node000011_Node000014\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node33 [id=\"edge20_Node000001_Node000033\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node35 [id=\"edge21_Node000001_Node000035\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node35 [id=\"Node000035\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n+ Node35 [id=\"Node000035\",label=\"tds_writetext_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a7711612cc544a7da2c7aa212b870acb2\",tooltip=\"Start writing writetext request.\"];\n Node35 -> Node19 [id=\"edge22_Node000035_Node000019\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00544_gafb26aba5d935e40b87b95e21a5185848_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00544_gafb26aba5d935e40b87b95e21a5185848_cgraph.dot", "unified_diff": "@@ -7,15 +7,15 @@\n rankdir=\"LR\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node3 -> Node8 [id=\"edge4_Node000003_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node3 -> Node13 [id=\"edge5_Node000003_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node13 [id=\"Node000013\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node2 -> Node10 [id=\"edge6_Node000002_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot", "source2": "a00545_ga4e6d9fa6f9b9551a5a3390e10a5322e6_icgraph.dot", "unified_diff": "@@ -12,20 +12,20 @@\n Node3 [id=\"Node000003\",label=\"tds_process_default\\l_tokens\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga39453d084f3f780ac4602d4abf2839f7\",tooltip=\"tds_process_default_tokens() is a catch all function that is called to process tokens not known to ot...\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_process_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga65a2316369529731732f200c190d05d6\",tooltip=\"tds_process_info() is called for INFO, ERR, or EED tokens and is responsible for calling the CLI's me...\"];\n Node4 -> Node3 [id=\"edge4_Node000004_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 -> Node5 [id=\"edge5_Node000004_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node5 -> Node21 [id=\"edge6_Node000005_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node21 [id=\"Node000021\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node3 -> Node37 [id=\"edge7_Node000003_Node000037\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node37 [id=\"Node000037\",label=\"tds_process_login_tokens\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga93945b42d45ee28ae1296b35a1c1e9bb\",tooltip=\"tds_process_login_tokens() is called after sending the login packet to the server.\"];\n Node3 -> Node5 [id=\"edge8_Node000003_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 -> Node5 [id=\"edge9_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node21 [id=\"edge10_Node000001_Node000021\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node38 [id=\"edge11_Node000001_Node000038\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node38 [id=\"Node000038\",label=\"tds_read_config_info\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90\",tooltip=\"tds_read_config_info() will fill the tds connection structure based on configuration information gath...\"];\n Node38 -> Node39 [id=\"edge12_Node000038_Node000039\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node39 [id=\"Node000039\",label=\"tdsdbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00533.html#gae6da75d7b9e7b567890fc83c9459d824\",tooltip=\"Form a connection with the server.\"];\n Node39 -> Node40 [id=\"edge13_Node000039_Node000040\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node40 [id=\"Node000040\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00173.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n+ Node40 [id=\"Node000040\",label=\"dbopen\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3\",tooltip=\"Normally not used.\"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00545_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00545_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00545_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot", "source2": "a00545_ga656718f240d7403f986ae887d84a6ca1_icgraph.dot", "unified_diff": "@@ -29,15 +29,15 @@\n Node11 -> Node12 [id=\"edge12_Node000011_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node12 [id=\"Node000012\",label=\"tds_submit_query_params\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00542.html#ga95e0fccedc459a4404f496eec74a369a\",tooltip=\"Sends a language string to the database server for processing.\"];\n Node6 -> Node33 [id=\"edge13_Node000006_Node000033\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 [id=\"Node000033\",label=\"tds7_process_compute\\l_result\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00544.html#ga6728e344caa20aea1def85f58dea138b\",tooltip=\"tds7_process_compute_result() processes compute result sets for TDS 7/8.\"];\n Node33 -> Node34 [id=\"edge14_Node000033_Node000034\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node34 [id=\"Node000034\",label=\"tds_process_tokens\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gabfc9de1d1fe718818caf63a4be4035a6\",tooltip=\"process all streams.\"];\n Node34 -> Node29 [id=\"edge15_Node000034_Node000029\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node29 [id=\"Node000029\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node29 [id=\"Node000029\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node29 -> Node7 [id=\"edge16_Node000029_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node54 [id=\"edge17_Node000006_Node000054\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node54 [id=\"Node000054\",label=\"tds_dstr_set\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gab78cc59b110df2817b00f9bed74c6ff1\",tooltip=\"set a string from another buffer.\"];\n Node6 -> Node55 [id=\"edge18_Node000006_Node000055\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node55 [id=\"Node000055\",label=\"tds_init_login\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00541.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39\",tooltip=\"Initialize login structure with locale information and other stuff for connection.\"];\n Node55 -> Node3 [id=\"edge19_Node000055_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node56 [id=\"edge20_Node000006_Node000056\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot", "source2": "a00545_gad96366d9fa93bfc283cef1299fbe97ab_icgraph.dot", "unified_diff": "@@ -49,15 +49,15 @@\n Node33 -> Node42 [id=\"edge22_Node000033_Node000042\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node42 [id=\"Node000042\",label=\"dbsqlok\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00527.html#gae1f50a6a2c31fda57cb481922b06841e\",tooltip=\"Wait for results of a query from the server.\"];\n Node42 -> Node30 [id=\"edge23_Node000042_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node30 [id=\"Node000030\",label=\"dbwritetext\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c\",tooltip=\"Send text or image data to the server.\"];\n Node33 -> Node15 [id=\"edge24_Node000033_Node000015\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 -> Node30 [id=\"edge25_Node000033_Node000030\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 -> Node28 [id=\"edge26_Node000033_Node000028\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node28 [id=\"Node000028\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n+ Node28 [id=\"Node000028\",label=\"tds_bcp_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ac6610c72bd31bad5378f760fa9b12d66\",tooltip=\"Initialize BCP information.\"];\n Node28 -> Node2 [id=\"edge27_Node000028_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 -> Node43 [id=\"edge28_Node000033_Node000043\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node43 [id=\"Node000043\",label=\"tds_process_cancel\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaf233e79967f82f4e0dd4d11524917a34\",tooltip=\" \"];\n Node33 -> Node45 [id=\"edge29_Node000033_Node000045\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node45 [id=\"Node000045\",label=\"tds_process_simple\\l_query\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gaeeb1562044786ea17bea361ed83e6946\",tooltip=\"Process results for simple query as \\\"SET TEXTSIZE\\\" or \\\"USE dbname\\\" If the statement returns results,...\"];\n Node45 -> Node26 [id=\"edge30_Node000045_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node33 -> Node26 [id=\"edge31_Node000033_Node000026\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00545_gae092e53680d954bcf4f19334987d43c7_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00545_gae092e53680d954bcf4f19334987d43c7_icgraph.dot.gz", "unified_diff": null, "details": [{"source1": "a00545_gae092e53680d954bcf4f19334987d43c7_icgraph.dot", "source2": "a00545_gae092e53680d954bcf4f19334987d43c7_icgraph.dot", "unified_diff": "@@ -5,17 +5,17 @@\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"dbcolname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga3bcdc8f584537b8278483f2cee59f130\",tooltip=\"Return name of a regular result column.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n+ Node3 [id=\"Node000003\",label=\"dbcolinfo\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a9b73fd1afa2c3ccfca481635212d2e43\",tooltip=\"Get a bunch of column attributes with a single call (Microsoft-compatibility feature).\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node4 [id=\"Node000004\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"dbcolsource\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga7be8b405d5416bf0361f65dbb5942faa\",tooltip=\"Get base database column name for a result set column.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"dbretname\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00528.html#ga63dc384b5c0ee3086a171337e8c78317\",tooltip=\"Get name of an output parameter filled by a stored procedure.\"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00582.html", "source2": "./usr/share/doc/freetds-doc/reference/a00582.html", "unified_diff": "@@ -232,15 +232,15 @@\n \n \n \n
    \n \n \n- \n+ \n \n \n \n \n \n
    static TDSDYNAMIC * tds_process_dynamic static TDSDYNAMIC * tds_process_dynamic (TDSSOCKETtds)
    \n
     
    \n int vflag
     
    \n
    The documentation for this struct was generated from the following files:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00590.html", "source2": "./usr/share/doc/freetds-doc/reference/a00590.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    \n
    \n
    [legend]
    \n \n \n \n+TDSRESULTINFO * \n \n \n \n \n \n \n \n \n \n

    \n Public Attributes

    \n-TDSRESULTINFOresinfo
    resinfo
     pointer to result informations
     
    \n DBINT row
     row number
     
    \n@@ -97,15 +97,15 @@\n
     
    \n TDS_INT * sizes
     save old sizes
     
    \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00594.html", "source2": "./usr/share/doc/freetds-doc/reference/a00594.html", "unified_diff": "@@ -118,15 +118,15 @@\n int tds_ctx_ref_count\n  libTDS context reference counter
    \n  \n \n

    Detailed Description

    \n

    \\dblib_internal

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

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00598.html", "source2": "./usr/share/doc/freetds-doc/reference/a00598.html", "unified_diff": "@@ -91,15 +91,15 @@\n

    Detailed Description

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

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00662.html", "source2": "./usr/share/doc/freetds-doc/reference/a00662.html", "unified_diff": "@@ -87,15 +87,15 @@\n TDS_POOL_EXECUTE execute\n  \n \n TDS_POOL_EVENTnext\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00666.html", "source2": "./usr/share/doc/freetds-doc/reference/a00666.html", "unified_diff": "@@ -90,15 +90,15 @@\n bool poll_send\n  \n \n TDSSOCKETtds\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00670.html", "source2": "./usr/share/doc/freetds-doc/reference/a00670.html", "unified_diff": "@@ -100,15 +100,15 @@\n TDS_POOL_SOCKET sock\n  \n \n TDS_USER_STATE user_state\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00674.html", "source2": "./usr/share/doc/freetds-doc/reference/a00674.html", "unified_diff": "@@ -100,15 +100,15 @@\n time_t last_used_tm\n  \n \n TDS_POOL_SOCKET sock\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00678.html", "source2": "./usr/share/doc/freetds-doc/reference/a00678.html", "unified_diff": "@@ -157,15 +157,15 @@\n  users in wait state
    \n  \n \n TDS_SYS_SOCKET wakeup_fd\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00690.html", "source2": "./usr/share/doc/freetds-doc/reference/a00690.html", "unified_diff": "@@ -93,15 +93,15 @@\n char * pb\n  buffer
    \n  \n \n

    Detailed Description

    \n

    Holds clause buffer.

    \n

    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00694.html", "source2": "./usr/share/doc/freetds-doc/reference/a00694.html", "unified_diff": "@@ -109,15 +109,15 @@\n const char * terminator\n  terminator
    \n  \n \n

    Detailed Description

    \n

    input stream to read a file

    \n

    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00722.html", "source2": "./usr/share/doc/freetds-doc/reference/a00722.html", "unified_diff": "@@ -90,15 +90,15 @@\n TDSINSTREAM stream\n  \n \n TDSSOCKETtds\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00750.html", "source2": "./usr/share/doc/freetds-doc/reference/a00750.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n gcry_mpi_t num\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00754.html", "source2": "./usr/share/doc/freetds-doc/reference/a00754.html", "unified_diff": "@@ -88,15 +88,15 @@\n unsigned long length\n  \n \n unsigned long type\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00758.html", "source2": "./usr/share/doc/freetds-doc/reference/a00758.html", "unified_diff": "@@ -90,15 +90,15 @@\n mpz_t n\n  \n \n unsigned size\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00762.html", "source2": "./usr/share/doc/freetds-doc/reference/a00762.html", "unified_diff": "@@ -94,15 +94,15 @@\n struct namelistnext\n  next element in the list
    \n  \n \n

    Detailed Description

    \n

    Holds list of names.

    \n

    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00778.html", "source2": "./usr/share/doc/freetds-doc/reference/a00778.html", "unified_diff": "@@ -106,15 +106,15 @@\n CS_VOID * thread\n  \n \n CS_INT threadlen\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00782.html", "source2": "./usr/share/doc/freetds-doc/reference/a00782.html", "unified_diff": "@@ -96,15 +96,15 @@\n CS_COMMANDcommand\n  \n \n CS_CONNECTIONconnection\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00786.html", "source2": "./usr/share/doc/freetds-doc/reference/a00786.html", "unified_diff": "@@ -85,15 +85,15 @@\n unsigned char precision\n  \n \n unsigned char scale\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00790.html", "source2": "./usr/share/doc/freetds-doc/reference/a00790.html", "unified_diff": "@@ -82,15 +82,15 @@\n CS_CHAR array [256]\n  \n \n CS_SMALLINT len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00794.html", "source2": "./usr/share/doc/freetds-doc/reference/a00794.html", "unified_diff": "@@ -82,15 +82,15 @@\n CS_SMALLINT len\n  \n \n CS_CHAR str [256]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00798.html", "source2": "./usr/share/doc/freetds-doc/reference/a00798.html", "unified_diff": "@@ -120,15 +120,15 @@\n CS_INT total_txtlen\n  \n \n CS_INT usertype\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00802.html", "source2": "./usr/share/doc/freetds-doc/reference/a00802.html", "unified_diff": "@@ -114,15 +114,15 @@\n CS_INT status\n  \n \n CS_INT usertype\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00806.html", "source2": "./usr/share/doc/freetds-doc/reference/a00806.html", "unified_diff": "@@ -82,15 +82,15 @@\n CS_INT mnyhigh\n  \n \n CS_UINT mnylow\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00810.html", "source2": "./usr/share/doc/freetds-doc/reference/a00810.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n CS_INT mny4\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00814.html", "source2": "./usr/share/doc/freetds-doc/reference/a00814.html", "unified_diff": "@@ -82,15 +82,15 @@\n CS_INT dtdays\n  \n \n CS_INT dttime\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00818.html", "source2": "./usr/share/doc/freetds-doc/reference/a00818.html", "unified_diff": "@@ -82,15 +82,15 @@\n CS_USHORT days\n  \n \n CS_USHORT minutes\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00822.html", "source2": "./usr/share/doc/freetds-doc/reference/a00822.html", "unified_diff": "@@ -112,15 +112,15 @@\n CS_INT datetzone\n  \n \n CS_INT dateyear\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00826.html", "source2": "./usr/share/doc/freetds-doc/reference/a00826.html", "unified_diff": "@@ -106,15 +106,15 @@\n CS_INT sqlstatelen\n  \n \n CS_INT status\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00830.html", "source2": "./usr/share/doc/freetds-doc/reference/a00830.html", "unified_diff": "@@ -115,15 +115,15 @@\n CS_CHAR text [CS_MAX_MSG]\n  \n \n CS_INT textlen\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00834.html", "source2": "./usr/share/doc/freetds-doc/reference/a00834.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n short cs_expose_formats\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00838.html", "source2": "./usr/share/doc/freetds-doc/reference/a00838.html", "unified_diff": "@@ -87,15 +87,15 @@\n CS_CLIENTMSGclientmsg\n  \n \n struct cs_diag_msg_clientnext\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00842.html", "source2": "./usr/share/doc/freetds-doc/reference/a00842.html", "unified_diff": "@@ -87,15 +87,15 @@\n struct cs_diag_msg_svrnext\n  \n \n CS_SERVERMSGservermsg\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00846.html", "source2": "./usr/share/doc/freetds-doc/reference/a00846.html", "unified_diff": "@@ -87,15 +87,15 @@\n CS_CLIENTMSGmsg\n  \n \n struct cs_diag_msgnext\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00850.html", "source2": "./usr/share/doc/freetds-doc/reference/a00850.html", "unified_diff": "@@ -137,15 +137,15 @@\n void * userdata\n  \n \n int userdata_len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00854.html", "source2": "./usr/share/doc/freetds-doc/reference/a00854.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n TDS_SMALLINT * indicator\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00858.html", "source2": "./usr/share/doc/freetds-doc/reference/a00858.html", "unified_diff": "@@ -117,15 +117,15 @@\n void * userdata\n  \n \n int userdata_len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00862.html", "source2": "./usr/share/doc/freetds-doc/reference/a00862.html", "unified_diff": "@@ -120,15 +120,15 @@\n int status\n  \n \n CS_BYTE * value\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00866.html", "source2": "./usr/share/doc/freetds-doc/reference/a00866.html", "unified_diff": "@@ -90,15 +90,15 @@\n CS_SMALLINT options\n  \n \n CSREMOTE_PROC_PARAMparam_list\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00870.html", "source2": "./usr/share/doc/freetds-doc/reference/a00870.html", "unified_diff": "@@ -92,19 +92,19 @@\n \n CS_DYNAMIC_PARAMparam_list\n  \n \n char * stmt\n  \n \n-TDSDYNAMICtdsdyn\n+TDSDYNAMICtdsdyn\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00874.html", "source2": "./usr/share/doc/freetds-doc/reference/a00874.html", "unified_diff": "@@ -101,15 +101,15 @@\n \n CS_CONNECTIONcon\n  \n \n int curr_result_type\n  \n \n-TDSCURSORcursor\n+TDSCURSORcursor\n  \n \n CS_INT cursor_state\n  \n \n CS_DYNAMICdyn\n  \n@@ -150,15 +150,15 @@\n void * userdata\n  \n \n int userdata_len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00878.html", "source2": "./usr/share/doc/freetds-doc/reference/a00878.html", "unified_diff": "@@ -84,15 +84,15 @@\n

    \n Public Attributes

    \n \n TDSBCPINFO bcpinfo\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00882.html", "source2": "./usr/share/doc/freetds-doc/reference/a00882.html", "unified_diff": "@@ -88,15 +88,15 @@\n char * language\n  \n \n char * time\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00922.html", "source2": "./usr/share/doc/freetds-doc/reference/a00922.html", "unified_diff": "@@ -85,15 +85,15 @@\n uint32_t ui\n  \n \n uint16_t usi\n  \n \n
    The documentation for this union was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00926.html", "source2": "./usr/share/doc/freetds-doc/reference/a00926.html", "unified_diff": "@@ -82,15 +82,15 @@\n short int alias_pos\n  \n \n short int canonic\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00930.html", "source2": "./usr/share/doc/freetds-doc/reference/a00930.html", "unified_diff": "@@ -1198,15 +1198,15 @@\n char stringpool_str94 [sizeof("iso84")]\n  \n \n char stringpool_str95 [sizeof("ISO8859-6")]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00934.html", "source2": "./usr/share/doc/freetds-doc/reference/a00934.html", "unified_diff": "@@ -161,15 +161,15 @@\n TDS_UINT ui\n  \n \n TDS_USMALLINT usi\n  \n \n
    The documentation for this union was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00938.html", "source2": "./usr/share/doc/freetds-doc/reference/a00938.html", "unified_diff": "@@ -86,15 +86,15 @@\n TDS_CHAR * c\n  \n \n TDS_UINT len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00942.html", "source2": "./usr/share/doc/freetds-doc/reference/a00942.html", "unified_diff": "@@ -86,15 +86,15 @@\n TDS_CHAR * ib\n  \n \n TDS_UINT len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00946.html", "source2": "./usr/share/doc/freetds-doc/reference/a00946.html", "unified_diff": "@@ -82,15 +82,15 @@\n const char * alias\n  \n \n int canonic\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00950.html", "source2": "./usr/share/doc/freetds-doc/reference/a00950.html", "unified_diff": "@@ -85,15 +85,15 @@\n unsigned int eilseq:1\n  \n \n unsigned int einval:1\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00954.html", "source2": "./usr/share/doc/freetds-doc/reference/a00954.html", "unified_diff": "@@ -83,19 +83,19 @@\n \n \n \n \n \n+TDS_ENCODING \n \n

    \n Public Attributes

    \n iconv_t cd
     
    \n-TDS_ENCODING charset
    charset
     
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00958.html", "source2": "./usr/share/doc/freetds-doc/reference/a00958.html", "unified_diff": "@@ -90,15 +90,15 @@\n struct tdsiconvdir to from\n  \n \n TDS_ERRNO_MESSAGE_FLAGS suppress\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00962.html", "source2": "./usr/share/doc/freetds-doc/reference/a00962.html", "unified_diff": "@@ -100,15 +100,15 @@\n char state2 [6]\n  \n \n char state3 [6]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00966.html", "source2": "./usr/share/doc/freetds-doc/reference/a00966.html", "unified_diff": "@@ -93,15 +93,15 @@\n int num_errors\n  \n \n char ranked\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00970.html", "source2": "./usr/share/doc/freetds-doc/reference/a00970.html", "unified_diff": "@@ -97,15 +97,15 @@\n SQLSMALLINT sql_desc_count\n  \n \n SQLULEN * sql_desc_rows_processed_ptr\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00974.html", "source2": "./usr/share/doc/freetds-doc/reference/a00974.html", "unified_diff": "@@ -183,15 +183,15 @@\n SQLSMALLINT sql_desc_unsigned\n  \n \n SQLSMALLINT sql_desc_updatable\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00978.html", "source2": "./usr/share/doc/freetds-doc/reference/a00978.html", "unified_diff": "@@ -102,15 +102,15 @@\n struct _drecordrecords\n  \n \n int type\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00982.html", "source2": "./usr/share/doc/freetds-doc/reference/a00982.html", "unified_diff": "@@ -88,15 +88,15 @@\n SQLINTEGER odbc_version\n  \n \n SQLINTEGER output_nts\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00986.html", "source2": "./usr/share/doc/freetds-doc/reference/a00986.html", "unified_diff": "@@ -90,15 +90,15 @@\n SQLSMALLINT htype\n  \n \n tds_mutex mtx\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00990.html", "source2": "./usr/share/doc/freetds-doc/reference/a00990.html", "unified_diff": "@@ -96,15 +96,15 @@\n tds_mutex mtx\n  \n \n TDSCONTEXTtds_ctx\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00994.html", "source2": "./usr/share/doc/freetds-doc/reference/a00994.html", "unified_diff": "@@ -135,15 +135,15 @@\n SQLUINTEGER translate_option\n  \n \n SQLUINTEGER txn_isolation\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00998.html", "source2": "./usr/share/doc/freetds-doc/reference/a00998.html", "unified_diff": "@@ -150,15 +150,15 @@\n \n

    Statement executing.

    \n

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

    \n \n \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01002.html", "source2": "./usr/share/doc/freetds-doc/reference/a01002.html", "unified_diff": "@@ -141,15 +141,15 @@\n SQLUINTEGER simulate_cursor\n  \n \n SQLUINTEGER use_bookmarks\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01006.html", "source2": "./usr/share/doc/freetds-doc/reference/a01006.html", "unified_diff": "@@ -92,24 +92,24 @@\n \n struct _hsattr attr\n  \n \n unsigned int curr_param_row\n  \n \n-TDSCURSORcursor\n+TDSCURSORcursor\n  \n \n DSTR cursor_name\n  \n \n struct _hdbcdbc\n  \n \n-TDSDYNAMICdyn\n+TDSDYNAMICdyn\n  \n \n struct _sql_errors errs\n  \n \n SQLSMALLINT htype\n  \n@@ -211,15 +211,15 @@\n \n

    Prepared statement needs to be prepared again.

    \n

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

    \n \n \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01010.html", "source2": "./usr/share/doc/freetds-doc/reference/a01010.html", "unified_diff": "@@ -87,15 +87,15 @@\n TDSCOLUMNFUNCS common\n  \n \n void(* set_type_info )(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01014.html", "source2": "./usr/share/doc/freetds-doc/reference/a01014.html", "unified_diff": "@@ -82,15 +82,15 @@\n size_t len\n  \n \n const char * p\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01018.html", "source2": "./usr/share/doc/freetds-doc/reference/a01018.html", "unified_diff": "@@ -85,15 +85,15 @@\n unsigned char precision\n  \n \n unsigned char scale\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01022.html", "source2": "./usr/share/doc/freetds-doc/reference/a01022.html", "unified_diff": "@@ -82,15 +82,15 @@\n TDS_INT mnyhigh\n  \n \n TDS_UINT mnylow\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01026.html", "source2": "./usr/share/doc/freetds-doc/reference/a01026.html", "unified_diff": "@@ -87,15 +87,15 @@\n TDS_INT8 mny\n  \n \n TDS_OLD_MONEY tdsoldmoney\n  \n \n
    The documentation for this union was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01030.html", "source2": "./usr/share/doc/freetds-doc/reference/a01030.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n TDS_INT mny4\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01034.html", "source2": "./usr/share/doc/freetds-doc/reference/a01034.html", "unified_diff": "@@ -82,15 +82,15 @@\n TDS_INT dtdays\n  \n \n TDS_INT dttime\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01038.html", "source2": "./usr/share/doc/freetds-doc/reference/a01038.html", "unified_diff": "@@ -82,15 +82,15 @@\n TDS_USMALLINT days\n  \n \n TDS_USMALLINT minutes\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01042.html", "source2": "./usr/share/doc/freetds-doc/reference/a01042.html", "unified_diff": "@@ -88,15 +88,15 @@\n TDS_USMALLINT Data3\n  \n \n TDS_UCHAR Data4 [8]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01046.html", "source2": "./usr/share/doc/freetds-doc/reference/a01046.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    TDS71_COLLATION Struct Reference
    \n \n
    \n \n

    TDS 7.1 collation informations. \n More...

    \n \n-

    #include <proto.h>

    \n+

    #include <proto.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

    \n TDS_UCHAR charset_id
     
    \n@@ -92,15 +92,15 @@\n
    \n TDS_USMALLINT locale_id
     
    \n

    Detailed Description

    \n

    TDS 7.1 collation informations.

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01050.html", "source2": "./usr/share/doc/freetds-doc/reference/a01050.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    TDS72_SMP_HEADER Struct Reference
    \n \n
    \n \n

    TDS 7.2 SMP packet header. \n More...

    \n \n-

    #include <proto.h>

    \n+

    #include <proto.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

    \n TDS_UINT seq
     
    \n@@ -101,15 +101,15 @@\n
    \n TDS_UINT wnd
     
    \n

    Detailed Description

    \n

    TDS 7.2 SMP packet header.

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01054.html", "source2": "./usr/share/doc/freetds-doc/reference/a01054.html", "unified_diff": "@@ -105,15 +105,15 @@\n int ai_protocol\n  \n \n int ai_socktype\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01058.html", "source2": "./usr/share/doc/freetds-doc/reference/a01058.html", "unified_diff": "@@ -85,15 +85,15 @@\n int fd\n  \n \n short revents\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/replacements/poll.h
    • \n+
    • include/freetds/replacements/poll.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01062.html", "source2": "./usr/share/doc/freetds-doc/reference/a01062.html", "unified_diff": "@@ -75,27 +75,27 @@\n
    tds_input_stream Struct Reference
    \n \n
    \n \n

    define a stream of data used for input \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n \n \n \n \n \n

    \n Public Attributes

    \n 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)
     
    \n

    Detailed Description

    \n

    define a stream of data used for input

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01066.html", "source2": "./usr/share/doc/freetds-doc/reference/a01066.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_output_stream Struct Reference
    \n \n
    \n \n

    define a stream of data used for output \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n \n \n \n \n \n@@ -111,15 +111,15 @@\n \n

    write buffer.

    \n

    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.

    \n \n \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01070.html", "source2": "./usr/share/doc/freetds-doc/reference/a01070.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_datain_stream Struct Reference
    \n \n
    \n \n

    input stream to read data from tds protocol \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n
    \n Collaboration diagram for tds_datain_stream:
    \n
    \n
    \n
    [legend]
    \n

    \n Public Attributes

    \n size_t buf_len
     
    char * buffer
    \n \n \n \n

    \n@@ -98,15 +98,15 @@\n size_t 

    wire_size
     bytes still to read
     
    \n

    Detailed Description

    \n

    input stream to read data from tds protocol

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01074.html", "source2": "./usr/share/doc/freetds-doc/reference/a01074.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_dataout_stream Struct Reference
    \n \n
    \n \n

    output stream to write data to tds protocol \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n
    \n Collaboration diagram for tds_dataout_stream:
    \n
    \n
    \n
    [legend]
    \n \n \n \n

    \n@@ -97,15 +97,15 @@\n

    \n size_t written
     
    \n

    Detailed Description

    \n

    output stream to write data to tds protocol

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01078.html", "source2": "./usr/share/doc/freetds-doc/reference/a01078.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_staticin_stream Struct Reference
    \n \n
    \n \n

    input stream to read data from a static buffer \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n
    \n Collaboration diagram for tds_staticin_stream:
    \n
    \n
    \n
    [legend]
    \n \n \n \n

    \n@@ -97,15 +97,15 @@\n

    \n TDSINSTREAM stream
     
    \n

    Detailed Description

    \n

    input stream to read data from a static buffer

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01082.html", "source2": "./usr/share/doc/freetds-doc/reference/a01082.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_staticout_stream Struct Reference
    \n \n
    \n \n

    output stream to write data to a static buffer. \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n
    \n Collaboration diagram for tds_staticout_stream:
    \n
    \n
    \n
    [legend]
    \n \n \n \n

    \n@@ -92,15 +92,15 @@\n TDSOUTSTREAM 

    stream
     
    \n

    Detailed Description

    \n

    output stream to write data to a static buffer.

    \n

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

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01086.html", "source2": "./usr/share/doc/freetds-doc/reference/a01086.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_dynamic_stream Struct Reference
    \n \n
    \n \n

    output stream to write data to a dynamic buffer \n More...

    \n \n-

    #include <stream.h>

    \n+

    #include <stream.h>

    \n
    \n Collaboration diagram for tds_dynamic_stream:
    \n
    \n
    \n
    [legend]
    \n \n \n \n

    \n@@ -103,15 +103,15 @@\n

    \n TDSOUTSTREAM stream
     
    \n

    Detailed Description

    \n

    output stream to write data to a dynamic buffer

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01090.html", "source2": "./usr/share/doc/freetds-doc/reference/a01090.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_compiletime_settings Struct Reference
    \n \n
    \n \n

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

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

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

    Detailed Description

    \n

    A structure to hold all the compile-time settings.

    \n

    This structure is returned by tds_get_compiletime_settings

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01094.html", "source2": "./usr/share/doc/freetds-doc/reference/a01094.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    TDS_DATETIMEALL Struct Reference
    \n \n
    \n \n

    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

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

    Detailed Description

    \n

    this structure is not directed connected to a TDS protocol but keeps any DATE/TIME information.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01098.html", "source2": "./usr/share/doc/freetds-doc/reference/a01098.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tdsdaterec Struct Reference
    \n \n
    \n \n

    Used by tds_datecrack. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n@@ -127,15 +127,15 @@\n TDS_INT \n \n \n

    \n Public Attributes

    \n TDS_INT day
     day of month (1-31)
     
    year
     year
     
    \n

    Detailed Description

    \n

    Used by tds_datecrack.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01102.html", "source2": "./usr/share/doc/freetds-doc/reference/a01102.html", "unified_diff": "@@ -85,15 +85,15 @@\n TDS_INT i\n  \n \n TDS_TINYINT ti\n  \n \n
    The documentation for this union was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01106.html", "source2": "./usr/share/doc/freetds-doc/reference/a01106.html", "unified_diff": "@@ -85,15 +85,15 @@\n void * p\n  \n \n int64_t ui\n  \n \n
    The documentation for this union was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01110.html", "source2": "./usr/share/doc/freetds-doc/reference/a01110.html", "unified_diff": "@@ -85,15 +85,15 @@\n unsigned char type\n  \n \n unsigned char values [TDS_MAX_CAPABILITY/2-2]\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01114.html", "source2": "./usr/share/doc/freetds-doc/reference/a01114.html", "unified_diff": "@@ -84,15 +84,15 @@\n

    \n Public Attributes

    \n \n TDS_CAPABILITY_TYPE types [2]\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01118.html", "source2": "./usr/share/doc/freetds-doc/reference/a01118.html", "unified_diff": "@@ -256,15 +256,15 @@\n \n

    charset of server e.g.

    \n

    iso_1

    \n \n \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01122.html", "source2": "./usr/share/doc/freetds-doc/reference/a01122.html", "unified_diff": "@@ -85,15 +85,15 @@\n const char * qn_options\n  \n \n TDS_INT qn_timeout\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01126.html", "source2": "./usr/share/doc/freetds-doc/reference/a01126.html", "unified_diff": "@@ -85,15 +85,15 @@\n char * language\n  \n \n char * server_charset\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01130.html", "source2": "./usr/share/doc/freetds-doc/reference/a01130.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_blob Struct Reference
    \n \n
    \n \n

    Information about blobs (e.g. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

    \n TDS_CHAR textptr [16]
     
    \n@@ -96,15 +96,15 @@\n unsigned char valid_ptr
     
    \n

    Detailed Description

    \n

    Information about blobs (e.g.

    \n

    text or image). current_row contains this structure.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01134.html", "source2": "./usr/share/doc/freetds-doc/reference/a01134.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_variant Struct Reference
    \n \n
    \n \n

    Store variant informations. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

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

    Detailed Description

    \n

    Store variant informations.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01138.html", "source2": "./usr/share/doc/freetds-doc/reference/a01138.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_encoding Struct Reference
    \n \n
    \n \n

    Information relevant to libiconv. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n \n \n \n \n \n@@ -98,15 +98,15 @@\n \n \n

    \n Public Attributes

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

    Detailed Description

    \n

    Information relevant to libiconv.

    \n

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

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01142.html", "source2": "./usr/share/doc/freetds-doc/reference/a01142.html", "unified_diff": "@@ -85,15 +85,15 @@\n TDS_INT datalen\n  \n \n bool is_null\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01146.html", "source2": "./usr/share/doc/freetds-doc/reference/a01146.html", "unified_diff": "@@ -139,15 +139,15 @@\n \n \n \n \n \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01150.html", "source2": "./usr/share/doc/freetds-doc/reference/a01150.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_column Struct Reference
    \n \n
    \n \n

    Metadata about columns in regular and compute rows. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n
    \n Collaboration diagram for tds_column:
    \n
    \n
    \n
    [legend]
    \n \n \n \n \n \n

    \n@@ -297,15 +297,15 @@\n

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

    \n

    type of data, saved from wire

    \n

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

    \n \n \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01158.html", "source2": "./usr/share/doc/freetds-doc/reference/a01158.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_result_info Struct Reference
    \n \n
    \n \n

    Hold information for any results. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n
    \n Collaboration diagram for tds_result_info:
    \n
    \n
    \n
    [legend]
    \n \n \n \n

    \n@@ -124,15 +124,15 @@\n

    \n bool rows_exist
     
    \n

    Detailed Description

    \n

    Hold information for any results.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01162.html", "source2": "./usr/share/doc/freetds-doc/reference/a01162.html", "unified_diff": "@@ -106,15 +106,15 @@\n TDS_CHAR * 

    sql_state
     
    \n TDS_SMALLINT state
     
    \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01166.html", "source2": "./usr/share/doc/freetds-doc/reference/a01166.html", "unified_diff": "@@ -90,15 +90,15 @@\n char * columnname\n  \n \n struct tds_upd_colnext\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01170.html", "source2": "./usr/share/doc/freetds-doc/reference/a01170.html", "unified_diff": "@@ -94,15 +94,15 @@\n TDS_CURSOR_STATE fetch\n  \n \n TDS_CURSOR_STATE open\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01174.html", "source2": "./usr/share/doc/freetds-doc/reference/a01174.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_cursor Struct Reference
    \n \n
    \n \n

    Holds informations about a cursor. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

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

    < number of updatable columns

    \n

    < updatable column list number of cursor rows to fetch

    \n \n \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01178.html", "source2": "./usr/share/doc/freetds-doc/reference/a01178.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_env Struct Reference
    \n \n
    \n \n

    Current environment as reported by the server. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n

    \n@@ -119,15 +119,15 @@\n

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

    \n Public Attributes

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

    Detailed Description

    \n

    Current environment as reported by the server.

    \n

    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01182.html", "source2": "./usr/share/doc/freetds-doc/reference/a01182.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_dynamic Struct Reference
    \n \n
    \n \n

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

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

    \n
    \n Collaboration diagram for tds_dynamic:
    \n
    \n
    \n
    [legend]
    \n \n \n \n \n \n

    \n@@ -173,15 +173,15 @@\n \n

    query parameters.

    \n

    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.

    \n \n \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01186.html", "source2": "./usr/share/doc/freetds-doc/reference/a01186.html", "unified_diff": "@@ -82,15 +82,15 @@\n unsigned int 

    flags
     
    \n TDS_MULTIPLE_TYPE type
     
    \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01190.html", "source2": "./usr/share/doc/freetds-doc/reference/a01190.html", "unified_diff": "@@ -99,15 +99,15 @@\n int(* msg_handler )(const TDSCONTEXT *, TDSSOCKET *, TDSMESSAGE *)\n  \n \n void * parent\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01194.html", "source2": "./usr/share/doc/freetds-doc/reference/a01194.html", "unified_diff": "@@ -91,15 +91,15 @@\n uint8_t * packet\n  \n \n int packet_len\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01198.html", "source2": "./usr/share/doc/freetds-doc/reference/a01198.html", "unified_diff": "@@ -97,15 +97,15 @@\n struct tds_packetnext\n  \n \n uint16_t sid\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01202.html", "source2": "./usr/share/doc/freetds-doc/reference/a01202.html", "unified_diff": "@@ -82,15 +82,15 @@\n TDS_SYS_SOCKET s_signal\n  \n \n TDS_SYS_SOCKET s_signaled\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01206.html", "source2": "./usr/share/doc/freetds-doc/reference/a01206.html", "unified_diff": "@@ -98,26 +98,26 @@\n \n int client_spid\n  \n \n TDS_UCHAR collation [5]\n  \n \n-TDSCURSORcursors\n+TDSCURSORcursors\n  linked list of cursors allocated for this connection contains only cursors allocated on the server
    \n  \n \n-TDSDYNAMICdyns\n+TDSDYNAMICdyns\n  list of dynamic allocated for this connection contains only dynamic allocated on the server
    \n  \n \n unsigned int encrypt_single_packet:1\n  \n \n-TDSENV env\n+TDSENV env\n  environment is shared between all sessions
    \n  \n \n tds_mutex list_mtx\n  \n \n unsigned num_cached_packets\n@@ -168,15 +168,15 @@\n unsigned int use_iconv:1\n  \n \n TDSPOLLWAKEUP wakeup\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01210.html", "source2": "./usr/share/doc/freetds-doc/reference/a01210.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    tds_socket Struct Reference
    \n \n
    \n \n

    Information for a server connection. \n More...

    \n \n-

    #include <tds.h>

    \n+

    #include <tds.h>

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

    \n@@ -95,25 +95,25 @@\n

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

    Detailed Description

    \n

    Information for a server connection.

    \n@@ -211,15 +211,15 @@\n \n

    ◆ current_results

    \n \n
    \n
    \n \n \n- \n+ \n \n
    TDSRESULTINFO* tds_socket::current_resultsTDSRESULTINFO* tds_socket::current_results
    \n
    \n \n

    Current query information.

    \n

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

    \n \n@@ -307,15 +307,15 @@\n \n

    Maximum size of packet pointed by out_buf.

    \n

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

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01214.html", "source2": "./usr/share/doc/freetds-doc/reference/a01214.html", "unified_diff": "@@ -87,15 +87,15 @@\n struct tdsdump_off_itemnext\n  \n \n tds_thread_id thread_id\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01218.html", "source2": "./usr/share/doc/freetds-doc/reference/a01218.html", "unified_diff": "@@ -97,15 +97,15 @@\n  \n \n TDSSOCKETtds\n  which socket we refer to
    \n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01222.html", "source2": "./usr/share/doc/freetds-doc/reference/a01222.html", "unified_diff": "@@ -83,15 +83,15 @@\n \n \n \n \n \n+TDSRESULTINFO * \n \n \n \n \n \n@@ -108,15 +108,15 @@\n DSTR \n \n \n \n

    \n Public Attributes

    \n TDS_INT bind_count
     
    \n-TDSRESULTINFObindinfo
    bindinfo
     
    \n TDS_INT direction
     
    \n const char * hint
     
    tablename
     
    \n TDS_INT xfer_init
     
    \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/tds.h
    • \n+
    • include/freetds/tds.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01226.html", "source2": "./usr/share/doc/freetds-doc/reference/a01226.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n char dummy [0]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01230.html", "source2": "./usr/share/doc/freetds-doc/reference/a01230.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n char dummy [0]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01234.html", "source2": "./usr/share/doc/freetds-doc/reference/a01234.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n char dummy [0]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01238.html", "source2": "./usr/share/doc/freetds-doc/reference/a01238.html", "unified_diff": "@@ -88,15 +88,15 @@\n uint8_t kn [16][8]\n  \n \n uint32_t sp [8][64]\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/utils/des.h
    • \n+
    • include/freetds/utils/des.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01242.html", "source2": "./usr/share/doc/freetds-doc/reference/a01242.html", "unified_diff": "@@ -87,15 +87,15 @@\n struct dlist_ringnext\n  \n \n struct dlist_ringprev\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01246.html", "source2": "./usr/share/doc/freetds-doc/reference/a01246.html", "unified_diff": "@@ -84,15 +84,15 @@\n

    \n Public Attributes

    \n \n dlist_ring ring\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01250.html", "source2": "./usr/share/doc/freetds-doc/reference/a01250.html", "unified_diff": "@@ -85,15 +85,15 @@\n uint64_t bytes\n  \n \n uint32_t in [16]\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/utils/md4.h
    • \n+
    • include/freetds/utils/md4.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01254.html", "source2": "./usr/share/doc/freetds-doc/reference/a01254.html", "unified_diff": "@@ -85,15 +85,15 @@\n uint64_t bytes\n  \n \n uint32_t in [16]\n  \n \n
    The documentation for this struct was generated from the following file:
      \n-
    • include/freetds/utils/md5.h
    • \n+
    • include/freetds/utils/md5.h
    • \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01258.html", "source2": "./usr/share/doc/freetds-doc/reference/a01258.html", "unified_diff": "@@ -75,30 +75,30 @@\n
    tds_dstr Struct Reference
    \n \n
    \n \n

    Structure to hold a string. \n More...

    \n \n-

    #include <string.h>

    \n+

    #include <string.h>

    \n \n \n \n \n \n \n

    \n Public Attributes

    \n char dstr_s [1]
     
    \n size_t dstr_size
     
    \n

    Detailed Description

    \n

    Structure to hold a string.

    \n

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

    \n

    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01262.html", "source2": "./usr/share/doc/freetds-doc/reference/a01262.html", "unified_diff": "@@ -88,15 +88,15 @@\n SQLUSMALLINT minute\n  \n \n SQLUSMALLINT second\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01266.html", "source2": "./usr/share/doc/freetds-doc/reference/a01266.html", "unified_diff": "@@ -103,15 +103,15 @@\n SQLSMALLINT timezone_minute\n  \n \n SQLSMALLINT year\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01270.html", "source2": "./usr/share/doc/freetds-doc/reference/a01270.html", "unified_diff": "@@ -82,15 +82,15 @@\n DBSMALLINT len\n  \n \n char str [256]\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01274.html", "source2": "./usr/share/doc/freetds-doc/reference/a01274.html", "unified_diff": "@@ -82,15 +82,15 @@\n unsigned char array [256]\n  \n \n DBSMALLINT len\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01278.html", "source2": "./usr/share/doc/freetds-doc/reference/a01278.html", "unified_diff": "@@ -85,15 +85,15 @@\n unsigned char precision\n  \n \n unsigned char scale\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01282.html", "source2": "./usr/share/doc/freetds-doc/reference/a01282.html", "unified_diff": "@@ -82,15 +82,15 @@\n DBINT mnyhigh\n  \n \n DBUINT mnylow\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01286.html", "source2": "./usr/share/doc/freetds-doc/reference/a01286.html", "unified_diff": "@@ -79,15 +79,15 @@\n

    \n Public Attributes

    \n \n DBINT mny4\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01290.html", "source2": "./usr/share/doc/freetds-doc/reference/a01290.html", "unified_diff": "@@ -82,15 +82,15 @@\n DBINT dtdays\n  \n \n DBINT dttime\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01294.html", "source2": "./usr/share/doc/freetds-doc/reference/a01294.html", "unified_diff": "@@ -82,15 +82,15 @@\n DBUSMALLINT days\n  \n \n DBUSMALLINT minutes\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01298.html", "source2": "./usr/share/doc/freetds-doc/reference/a01298.html", "unified_diff": "@@ -103,15 +103,15 @@\n  time, 7 digit precision
    \n  \n \n DBUSMALLINT time_prec:3\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01302.html", "source2": "./usr/share/doc/freetds-doc/reference/a01302.html", "unified_diff": "@@ -82,15 +82,15 @@\n DBINT precision\n  \n \n DBINT scale\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01306.html", "source2": "./usr/share/doc/freetds-doc/reference/a01306.html", "unified_diff": "@@ -90,15 +90,15 @@\n BYTE * strtext\n  \n \n DBINT strtotlen\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01310.html", "source2": "./usr/share/doc/freetds-doc/reference/a01310.html", "unified_diff": "@@ -118,15 +118,15 @@\n DBINT UserType\n  \n \n BOOL VarLength\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01314.html", "source2": "./usr/share/doc/freetds-doc/reference/a01314.html", "unified_diff": "@@ -127,15 +127,15 @@\n DBINT UserType\n  \n \n BOOL VarLength\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01318.html", "source2": "./usr/share/doc/freetds-doc/reference/a01318.html", "unified_diff": "@@ -112,15 +112,15 @@\n DBINT weekday\n  \n \n DBINT year\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01322.html", "source2": "./usr/share/doc/freetds-doc/reference/a01322.html", "unified_diff": "@@ -112,15 +112,15 @@\n DBINT quarter\n  \n \n DBINT week\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01326.html", "source2": "./usr/share/doc/freetds-doc/reference/a01326.html", "unified_diff": "@@ -112,15 +112,15 @@\n DBINT weekday\n  \n \n DBINT year\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01330.html", "source2": "./usr/share/doc/freetds-doc/reference/a01330.html", "unified_diff": "@@ -112,15 +112,15 @@\n DBINT quarter\n  \n \n DBINT week\n  \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01331.html", "source2": "./usr/share/doc/freetds-doc/reference/a01331.html", "unified_diff": "@@ -76,40 +76,40 @@\n Introduction\n

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

    \n

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

    \n

    \n libTDS changes

    \n
      \n
    • \n-

      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.
      \n+

      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.
      \n Cfr commit id a74a06e1f97f3137f6cf1bc7319dd7a2cfb52b1f.

      \n

      \n
    • \n
    • \n

      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.
      \n Cfr commit id 680cb3371e042bb372cbc5e6feb4054e50d40c1a.

      \n

      \n
    • \n
    • \n-

      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.
      \n+

      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.
      \n Cfr commit id 680cb3371e042bb372cbc5e6feb4054e50d40c1a.

      \n

      \n
    • \n
    • \n

      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).
      \n Cfr commit id a498703ff9e309c656b19dd990f4cad0283a47c7.

      \n

      \n
    • \n
    • \n-

      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).
      \n+

      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).
      \n Cfr commit id 9ed52cb78f725607ac109c8c284ca7c4658d87a9.

      \n

      \n
    • \n
    • \n-

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

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

      \n

      \n
    • \n
    • \n

      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.
      \n Cfr commit id abcc09c9a88acd0e9a45b46dab3ca44309917a02.

      \n

      \n@@ -157,28 +157,28 @@\n 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.
      \n Cfr commit id e69f7d564dac44884f7c5f0106cceafce4af168b.
    • \n
    \n

    \n CT-Library changes

    \n

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

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

    Cfr commit id c5e71e5ad4a557038ecedcec457e2531ab02a77b.

    \n

    \n DB-Library changes

    \n

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

      \n
    • \n-add type and binding type to include/sybdb.h
    • \n+add type and binding type to include/sybdb.h \n
    • \n-add NULL handling in dbgetnull, dbsetnull and default_null_representation in src/dblib/dblib.c
    • \n+add NULL handling in dbgetnull, dbsetnull and default_null_representation in src/dblib/dblib.c \n
    • \n add binding to dbbindtype
    • \n
    • \n add support for conversion from/to server
    • \n
    • \n add printable size
    • \n
    • \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01365.html", "source2": "./usr/share/doc/freetds-doc/reference/a01365.html", "unified_diff": "@@ -84,15 +84,15 @@\n
      \n \n

      This file implements a very simple iconv. \n More...

      \n
      #include <config.h>
      \n #include <assert.h>
      \n #include <ctype.h>
      \n-#include <freetds/tds.h>
      \n+#include <freetds/tds.h>
      \n #include <freetds/bytes.h>
      \n #include <freetds/iconv.h>
      \n #include <freetds/utils/bjoern-utf8.h>
      \n #include "iconv_charsets.h"
      \n
      \n Include dependency graph for iconv.c:
      \n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01366.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a01366.dot.gz", "unified_diff": null, "details": [{"source1": "a01366.dot", "source2": "a01366.dot", "unified_diff": "@@ -2,73 +2,73 @@\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n Node1 [id=\"Node000001\",label=\"src/replacements/iconv.c\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"This file implements a very simple iconv.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00485_source.html\",tooltip=\" \"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"assert.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"ctype.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368.html\",tooltip=\"Main include file for libtds.\"];\n+ Node5 [id=\"Node000005\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00425.html\",tooltip=\"Main include file for libtds.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"stdarg.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node5 -> Node7 [id=\"edge6_Node000005_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"stdio.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node5 -> Node8 [id=\"edge7_Node000005_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n+ Node8 [id=\"Node000008\",label=\"time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00389_source.html\",tooltip=\" \"];\n Node8 -> Node8 [id=\"edge8_Node000008_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node9 [id=\"edge9_Node000005_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00461_source.html\",tooltip=\" \"];\n+ Node9 [id=\"Node000009\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n Node5 -> Node10 [id=\"edge10_Node000005_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00455_source.html\",tooltip=\" \"];\n+ Node10 [id=\"Node000010\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368_source.html\",tooltip=\" \"];\n Node5 -> Node11 [id=\"edge11_Node000005_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n+ Node11 [id=\"Node000011\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00437_source.html\",tooltip=\" \"];\n Node11 -> Node12 [id=\"edge12_Node000011_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00476_source.html\",tooltip=\" \"];\n+ Node12 [id=\"Node000012\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00350_source.html\",tooltip=\" \"];\n Node5 -> Node14 [id=\"edge13_Node000005_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395_source.html\",tooltip=\" \"];\n+ Node14 [id=\"Node000014\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00371_source.html\",tooltip=\" \"];\n Node5 -> Node15 [id=\"edge14_Node000005_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node15 [id=\"Node000015\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00452_source.html\",tooltip=\" \"];\n+ Node15 [id=\"Node000015\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n Node15 -> Node12 [id=\"edge15_Node000015_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node16 [id=\"edge16_Node000005_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00410_source.html\",tooltip=\" \"];\n+ Node16 [id=\"Node000016\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n Node16 -> Node15 [id=\"edge17_Node000016_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node16 -> Node17 [id=\"edge18_Node000016_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n+ Node17 [id=\"Node000017\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n Node16 -> Node18 [id=\"edge19_Node000016_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00458_source.html\",tooltip=\" \"];\n+ Node18 [id=\"Node000018\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00359_source.html\",tooltip=\" \"];\n Node5 -> Node19 [id=\"edge20_Node000005_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n+ Node19 [id=\"Node000019\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n Node19 -> Node6 [id=\"edge21_Node000019_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node12 [id=\"edge22_Node000019_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node10 [id=\"edge23_Node000019_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node20 [id=\"edge24_Node000019_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00377_source.html\",tooltip=\" \"];\n+ Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00392_source.html\",tooltip=\" \"];\n Node20 -> Node17 [id=\"edge25_Node000020_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 -> Node18 [id=\"edge26_Node000020_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node21 [id=\"edge27_Node000019_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00374.html\",tooltip=\"Provide poll call where missing.\"];\n+ Node21 [id=\"Node000021\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395.html\",tooltip=\"Provide poll call where missing.\"];\n Node21 -> Node2 [id=\"edge28_Node000021_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 -> Node17 [id=\"edge29_Node000021_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node21 -> Node18 [id=\"edge30_Node000021_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node17 [id=\"edge31_Node000019_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node18 [id=\"edge32_Node000019_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node17 [id=\"edge33_Node000005_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node22 [id=\"edge34_Node000005_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node22 [id=\"Node000022\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00440_source.html\",tooltip=\" \"];\n+ Node22 [id=\"Node000022\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00419_source.html\",tooltip=\" \"];\n Node5 -> Node18 [id=\"edge35_Node000005_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node23 [id=\"edge36_Node000001_Node000023\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"freetds/bytes.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n+ Node23 [id=\"Node000023\",label=\"freetds/bytes.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00356_source.html\",tooltip=\" \"];\n Node1 -> Node24 [id=\"edge37_Node000001_Node000024\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node24 [id=\"Node000024\",label=\"freetds/iconv.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00398_source.html\",tooltip=\" \"];\n+ Node24 [id=\"Node000024\",label=\"freetds/iconv.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00374_source.html\",tooltip=\" \"];\n Node24 -> Node17 [id=\"edge38_Node000024_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node24 -> Node18 [id=\"edge39_Node000024_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node25 [id=\"edge40_Node000001_Node000025\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node25 [id=\"Node000025\",label=\"freetds/utils/bjoern\\l-utf8.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00401_source.html\",tooltip=\" \"];\n+ Node25 [id=\"Node000025\",label=\"freetds/utils/bjoern\\l-utf8.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00452_source.html\",tooltip=\" \"];\n Node25 -> Node12 [id=\"edge41_Node000025_Node000012\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node26 [id=\"edge42_Node000001_Node000026\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node26 [id=\"Node000026\",label=\"iconv_charsets.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00113_source.html\",tooltip=\" \"];\n+ Node26 [id=\"Node000026\",label=\"iconv_charsets.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00263_source.html\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a01368.html", "source2": "./usr/share/doc/freetds-doc/reference/a01368.html", "unified_diff": "@@ -84,15 +84,15 @@\n \n

      Handle character conversions to/from server. \n More...

      \n
      #include <config.h>
      \n #include <stdarg.h>
      \n #include <stdio.h>
      \n #include <assert.h>
      \n-#include <freetds/tds.h>
      \n+#include <freetds/tds.h>
      \n #include <freetds/iconv.h>
      \n #include <freetds/bool.h>
      \n #include <freetds/bytes.h>
      \n #include <freetds/encodings.h>
      \n #include <freetds/charset_lookup.h>
      \n
      \n Include dependency graph for iconv.c:
      \n@@ -124,15 +124,15 @@\n Functions\n \n static void _iconv_close (iconv_t *cd)\n  \n \n static int collate2charset (TDSCONNECTION *conn, TDS_UCHAR collate[5])\n  \n-static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size)\n+static size_t skip_one_input_sequence (iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size)\n  Move the input sequence pointer to the next valid position.
      \n  \n \n void tds7_srv_charset_changed (TDSCONNECTION *conn, TDS_UCHAR collation[5])\n  \n int tds_canonical_charset (const char *charset_name)\n  Determine canonical iconv character set.
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01369.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a01369.dot.gz", "unified_diff": null, "details": [{"source1": "a01369.dot", "source2": "a01369.dot", "unified_diff": "@@ -2,73 +2,73 @@\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n Node1 [id=\"Node000001\",label=\"src/tds/iconv.c\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Handle character conversions to/from server.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00485_source.html\",tooltip=\" \"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"stdarg.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"stdio.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"assert.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368.html\",tooltip=\"Main include file for libtds.\"];\n+ Node6 [id=\"Node000006\",label=\"freetds/tds.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00425.html\",tooltip=\"Main include file for libtds.\"];\n Node6 -> Node3 [id=\"edge6_Node000006_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node4 [id=\"edge7_Node000006_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node7 [id=\"edge8_Node000006_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n+ Node7 [id=\"Node000007\",label=\"time.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00389_source.html\",tooltip=\" \"];\n Node7 -> Node7 [id=\"edge9_Node000007_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node8 [id=\"edge10_Node000006_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00461_source.html\",tooltip=\" \"];\n+ Node8 [id=\"Node000008\",label=\"freetds/version.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00434_source.html\",tooltip=\" \"];\n Node6 -> Node9 [id=\"edge11_Node000006_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00455_source.html\",tooltip=\" \"];\n+ Node9 [id=\"Node000009\",label=\"freetds/sysdep_private.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00368_source.html\",tooltip=\" \"];\n Node6 -> Node10 [id=\"edge12_Node000006_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n+ Node10 [id=\"Node000010\",label=\"freetds/thread.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00437_source.html\",tooltip=\" \"];\n Node10 -> Node11 [id=\"edge13_Node000010_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00476_source.html\",tooltip=\" \"];\n+ Node11 [id=\"Node000011\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00350_source.html\",tooltip=\" \"];\n Node6 -> Node13 [id=\"edge14_Node000006_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395_source.html\",tooltip=\" \"];\n+ Node13 [id=\"Node000013\",label=\"freetds/bool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00371_source.html\",tooltip=\" \"];\n Node6 -> Node14 [id=\"edge15_Node000006_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00452_source.html\",tooltip=\" \"];\n+ Node14 [id=\"Node000014\",label=\"freetds/macros.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00431_source.html\",tooltip=\" \"];\n Node14 -> Node11 [id=\"edge16_Node000014_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node15 [id=\"edge17_Node000006_Node000015\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node15 [id=\"Node000015\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00410_source.html\",tooltip=\" \"];\n+ Node15 [id=\"Node000015\",label=\"freetds/utils/string.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n Node15 -> Node14 [id=\"edge18_Node000015_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node15 -> Node16 [id=\"edge19_Node000015_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node16 [id=\"Node000016\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n+ Node16 [id=\"Node000016\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n Node15 -> Node17 [id=\"edge20_Node000015_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node17 [id=\"Node000017\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00458_source.html\",tooltip=\" \"];\n+ Node17 [id=\"Node000017\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00359_source.html\",tooltip=\" \"];\n Node6 -> Node18 [id=\"edge21_Node000006_Node000018\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node18 [id=\"Node000018\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00446_source.html\",tooltip=\" \"];\n+ Node18 [id=\"Node000018\",label=\"freetds/replacements.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n Node18 -> Node3 [id=\"edge22_Node000018_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node11 [id=\"edge23_Node000018_Node000011\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node9 [id=\"edge24_Node000018_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node19 [id=\"edge25_Node000018_Node000019\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node19 [id=\"Node000019\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00377_source.html\",tooltip=\" \"];\n+ Node19 [id=\"Node000019\",label=\"freetds/replacements\\l/readpassphrase.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00392_source.html\",tooltip=\" \"];\n Node19 -> Node16 [id=\"edge26_Node000019_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node19 -> Node17 [id=\"edge27_Node000019_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node20 [id=\"edge28_Node000018_Node000020\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00374.html\",tooltip=\"Provide poll call where missing.\"];\n+ Node20 [id=\"Node000020\",label=\"freetds/replacements\\l/poll.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00395.html\",tooltip=\"Provide poll call where missing.\"];\n Node20 -> Node2 [id=\"edge29_Node000020_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 -> Node16 [id=\"edge30_Node000020_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node20 -> Node17 [id=\"edge31_Node000020_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node16 [id=\"edge32_Node000018_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node18 -> Node17 [id=\"edge33_Node000018_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node16 [id=\"edge34_Node000006_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node21 [id=\"edge35_Node000006_Node000021\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node21 [id=\"Node000021\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00440_source.html\",tooltip=\" \"];\n+ Node21 [id=\"Node000021\",label=\"freetds/proto.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00419_source.html\",tooltip=\" \"];\n Node6 -> Node17 [id=\"edge36_Node000006_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node22 [id=\"edge37_Node000001_Node000022\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node22 [id=\"Node000022\",label=\"freetds/iconv.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00398_source.html\",tooltip=\" \"];\n+ Node22 [id=\"Node000022\",label=\"freetds/iconv.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00374_source.html\",tooltip=\" \"];\n Node22 -> Node16 [id=\"edge38_Node000022_Node000016\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node22 -> Node17 [id=\"edge39_Node000022_Node000017\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node13 [id=\"edge40_Node000001_Node000013\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node23 [id=\"edge41_Node000001_Node000023\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node23 [id=\"Node000023\",label=\"freetds/bytes.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n+ Node23 [id=\"Node000023\",label=\"freetds/bytes.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00356_source.html\",tooltip=\" \"];\n Node1 -> Node24 [id=\"edge42_Node000001_Node000024\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node24 [id=\"Node000024\",label=\"freetds/encodings.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00359_source.html\",tooltip=\" \"];\n+ Node24 [id=\"Node000024\",label=\"freetds/encodings.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00404_source.html\",tooltip=\" \"];\n Node1 -> Node25 [id=\"edge43_Node000001_Node000025\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node25 [id=\"Node000025\",label=\"freetds/charset_lookup.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00392_source.html\",tooltip=\" \"];\n+ Node25 [id=\"Node000025\",label=\"freetds/charset_lookup.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00407_source.html\",tooltip=\" \"];\n }\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_0.js", "source2": "./usr/share/doc/freetds-doc/reference/all_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,18 +1,18 @@\n var searchData = [\n- ['_5fbcp_5fconvert_5fin_0', ['_bcp_convert_in', ['../a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85', 1, 'bcp.c']]],\n- ['_5fbcp_5fconvert_5fout_1', ['_bcp_convert_out', ['../a01353.html#a230fa5b56ae4e3509a69bd266495732b', 1, 'bcp.c']]],\n+ ['_5fbcp_5fconvert_5fin_0', ['_bcp_convert_in', ['../a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85', 1, 'bcp.c']]],\n+ ['_5fbcp_5fconvert_5fout_1', ['_bcp_convert_out', ['../a01344.html#a230fa5b56ae4e3509a69bd266495732b', 1, 'bcp.c']]],\n ['_5fbcp_5fexec_5fin_2', ['_bcp_exec_in', ['../a00530.html#ga7370f1223f13510d6b33e98f2de09fb5', 1, 'bcp.c']]],\n ['_5fbcp_5fexec_5fout_3', ['_bcp_exec_out', ['../a00530.html#gae67546338cb9542a4902aa914f57f314', 1, 'bcp.c']]],\n ['_5fbcp_5ffgets_4', ['_bcp_fgets', ['../a00530.html#gab672799007e720bf918caa1b33c989ea', 1, 'bcp.c']]],\n ['_5fbcp_5ffree_5fcolumns_5', ['_bcp_free_columns', ['../a00530.html#gacf69ac4cbe8e3c3e6ea665e31e5e85b8', 1, 'bcp.c']]],\n ['_5fbcp_5ffree_5fstorage_6', ['_bcp_free_storage', ['../a00530.html#gaa134c1c3ccc4326e693adb8357272f1d', 1, 'bcp.c']]],\n ['_5fbcp_5fget_5fcol_5fdata_7', ['_bcp_get_col_data', ['../a00530.html#ga0f8def4cad04c5c1e27c2b653d482dd8', 1, 'bcp.c']]],\n ['_5fbcp_5fget_5fterm_5fvar_8', ['_bcp_get_term_var', ['../a00530.html#ga4f936fa1cb8e4373bf7b7f8a6ab96bc7', 1, 'bcp.c']]],\n- ['_5fbcp_5fno_5fget_5fcol_5fdata_9', ['_bcp_no_get_col_data', ['../a01353.html#ad53f508d8f2177a898f8022736834afd', 1, 'bcp.c']]],\n+ ['_5fbcp_5fno_5fget_5fcol_5fdata_9', ['_bcp_no_get_col_data', ['../a01344.html#ad53f508d8f2177a898f8022736834afd', 1, 'bcp.c']]],\n ['_5fbcp_5fread_5fhostfile_10', ['_bcp_read_hostfile', ['../a00530.html#ga1b57d952a9d72f375c3296124affa908', 1, 'bcp.c']]],\n ['_5fbcp_5freadfmt_5fcolinfo_11', ['_bcp_readfmt_colinfo', ['../a00530.html#gafc23d62bc86b38fb757e3ac4aadca0a4', 1, 'bcp.c']]],\n ['_5fcharacter_5fset_5falias_12', ['_character_set_alias', ['../a00946.html', 1, '']]],\n ['_5fcs_5fblkdesc_13', ['_cs_blkdesc', ['../a00878.html', 1, '']]],\n ['_5fcs_5fclientmsg_14', ['_cs_clientmsg', ['../a00826.html', 1, '']]],\n ['_5fcs_5fcommand_15', ['_cs_command', ['../a00874.html', 1, '']]],\n ['_5fcs_5fconfig_16', ['_cs_config', ['../a00834.html', 1, '']]],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_10.js", "source2": "./usr/share/doc/freetds-doc/reference/all_10.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n ['read_0', ['read', ['../a01062.html#a2f0be7677a1bf9c730e3c697bfba21c9', 1, 'tds_input_stream']]],\n- ['read_2ec_1', ['read.c', ['../a00017.html', 1, '']]],\n+ ['read_2ec_1', ['read.c', ['../a00158.html', 1, '']]],\n ['read_5fand_5fconvert_2', ['read_and_convert', ['../a00543.html#ga676c4dee6522815b16fdc8e448e43590', 1, 'read.c']]],\n ['ref_5fcount_3', ['ref_count', ['../a00594.html#a812580afdfca53b6d54a7d09938c65c2', 1, 'dblib_context::ref_count'],\n ['../a01174.html#a692ccceff71d836df0d084ec26123c2d', 1, 'tds_cursor::ref_count'],\n ['../a01182.html#a2798c66fb3c8637c7fb29c6d1efebfa4', 1, 'tds_dynamic::ref_count']\n ]],\n ['remote_20procedure_20functions_4', ['Remote Procedure functions', ['../a00528.html', 1, '']]],\n ['res_5finfo_5', ['res_info', ['../a01182.html#ac736e163c0d4cdbca980a861214d99e7', 1, 'tds_dynamic']]],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_11.js", "source2": "./usr/share/doc/freetds-doc/reference/all_11.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -14,19 +14,19 @@\n ['size_5flen_12', ['size_len', ['../a01218.html#ae857ba89e4d2b249da64e0e7287da962', 1, 'tds_freeze']]],\n ['sizes_13', ['sizes', ['../a00590.html#abe1aa9f8ea96dda1400654813e68130a', 1, 'dblib_buffer_row']]],\n ['skip_5fone_5finput_5fsequence_14', ['skip_one_input_sequence', ['../a00540.html#ga3380140fc6eb9f2090c430f40e846876', 1, 'iconv.c']]],\n ['status_15', ['status', ['../a01174.html#ab5d6a587ac5780f001d383d4b874852f', 1, 'tds_cursor']]],\n ['stmt_5flist_16', ['stmt_list', ['../a00998.html#a4a9f3e8f1eba573df79a1ed300d8fc91', 1, '_hdbc']]],\n ['store_5fmonthname_17', ['store_monthname', ['../a00539.html#ga17a0597ec3522c7f1ddb54956226dbfc', 1, 'convert.c']]],\n ['stream_18', ['stream', ['../a00694.html#abb6db59e849d11de92f4c55c61d51744', 1, 'tds_file_stream']]],\n- ['stream_2ec_19', ['stream.c', ['../a00026.html', 1, '']]],\n+ ['stream_2ec_19', ['stream.c', ['../a00236.html', 1, '']]],\n ['string_20functions_20', ['Dynamic string functions', ['../a00545.html', 1, '']]],\n ['string_5flinked_5flist_21', ['string_linked_list', ['../a00770.html', 1, '']]],\n ['string_5fto_5fint_22', ['string_to_int', ['../a00539.html#ga0176fafd412b5b8005bf1202fbc13b00', 1, 'convert.c']]],\n ['string_5fto_5fint8_23', ['string_to_int8', ['../a00539.html#ga933f87cca76156648e91f472650b98f3', 1, 'convert.c']]],\n ['string_5fto_5fnumeric_24', ['string_to_numeric', ['../a00539.html#ga28c75aff2615032005257af7455ed70d', 1, 'convert.c']]],\n ['string_5fto_5fresult_25', ['string_to_result', ['../a00539.html#ga46a5a00dfa70cad4a02d7cc73b314c31', 1, 'convert.c']]],\n ['string_5fto_5fuint8_26', ['string_to_uint8', ['../a00539.html#gae8e173a9f8d2e3f152ada9f48d3d5f28', 1, 'convert.c']]],\n ['stringpool_5ft_27', ['stringpool_t', ['../a00930.html', 1, '']]],\n ['stringz_5fto_5fnumeric_28', ['stringz_to_numeric', ['../a00539.html#ga467401163bf05ed167f7b2b7e8bd875a', 1, 'convert.c']]],\n- ['sybdb_2eh_29', ['sybdb.h', ['../a00479.html', 1, '']]]\n+ ['sybdb_2eh_29', ['sybdb.h', ['../a00491.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_12.js", "source2": "./usr/share/doc/freetds-doc/reference/all_12.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,31 +1,31 @@\n var searchData = [\n ['tagss_5ftime2_5fstruct_0', ['tagSS_TIME2_STRUCT', ['../a01262.html', 1, '']]],\n ['tagss_5ftimestampoffset_5fstruct_1', ['tagSS_TIMESTAMPOFFSET_STRUCT', ['../a01266.html', 1, '']]],\n ['tds_2', ['tds', ['../a01218.html#a182ed346382edef2962aca11c7cabc22', 1, 'tds_freeze::tds'],\n ['../a01006.html#ad357e33164f46fce2bc70267d71a1959', 1, '_hstmt::tds']\n ]],\n- ['tds_2eh_3', ['tds.h', ['../a00368.html', 1, '']]],\n+ ['tds_2eh_3', ['tds.h', ['../a00425.html', 1, '']]],\n ['tds4_5fsend_5femulated_5frpc_4', ['tds4_send_emulated_rpc', ['../a00542.html#ga2d0a06c1a30dd2470dc7a788de21b080', 1, 'query.c']]],\n- ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_5', ['tds5_bcp_add_fixed_columns', ['../a00092.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]],\n- ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_6', ['tds5_bcp_add_variable_columns', ['../a00092.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]],\n+ ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_5', ['tds5_bcp_add_fixed_columns', ['../a00176.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]],\n+ ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_6', ['tds5_bcp_add_variable_columns', ['../a00176.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]],\n ['tds5_5ffix_5fdot_5fquery_7', ['tds5_fix_dot_query', ['../a00542.html#ga8853354723094c8efcd87fabf675c64f', 1, 'query.c']]],\n ['tds5_5fprocess_5fdyn_5fresult2_8', ['tds5_process_dyn_result2', ['../a00544.html#gae688b515631141acfbc41bbb91c8b921', 1, 'token.c']]],\n ['tds5_5fprocess_5foptioncmd_9', ['tds5_process_optioncmd', ['../a00544.html#gaa6a7e5aeb10a1322911c47be9c43e2d2', 1, 'token.c']]],\n ['tds5_5fprocess_5fresult_10', ['tds5_process_result', ['../a00544.html#ga547b2f48659f77a69aa802d861ac827d', 1, 'token.c']]],\n ['tds5_5fprocess_5fresult2_11', ['tds5_process_result2', ['../a00544.html#gabe2bdd5a41ce067cb31aef18ff81cb1c', 1, 'token.c']]],\n ['tds5_5fput_5fparams_12', ['tds5_put_params', ['../a00542.html#ga4f1f0a4f77bc4ea1440dfdebc19a157c', 1, 'query.c']]],\n ['tds71_5fcollation_13', ['TDS71_COLLATION', ['../a01046.html', 1, '']]],\n ['tds71_5fread_5ftable_5fnames_14', ['tds71_read_table_names', ['../a00544.html#ga7482b5730d880fcedbe9fcd609a550ce', 1, 'token.c']]],\n ['tds71_5fsubmit_5fprepexec_15', ['tds71_submit_prepexec', ['../a00542.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c'],\n ['../a00542.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c']\n ]],\n ['tds72_5fsmp_5fheader_16', ['TDS72_SMP_HEADER', ['../a01050.html', 1, '']]],\n- ['tds7_5fbcp_5fsend_5fcolmetadata_17', ['tds7_bcp_send_colmetadata', ['../a00092.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]],\n- ['tds7_5fbuild_5fbulk_5finsert_5fstmt_18', ['tds7_build_bulk_insert_stmt', ['../a00092.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]],\n+ ['tds7_5fbcp_5fsend_5fcolmetadata_17', ['tds7_bcp_send_colmetadata', ['../a00176.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]],\n+ ['tds7_5fbuild_5fbulk_5finsert_5fstmt_18', ['tds7_build_bulk_insert_stmt', ['../a00176.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]],\n ['tds7_5fget_5fdata_5finfo_19', ['tds7_get_data_info', ['../a00544.html#ga07cee55fd522cca16fb59b7a8f0b1376', 1, 'token.c']]],\n ['tds7_5fget_5finstance_5fport_20', ['tds7_get_instance_port', ['../a00543.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c'],\n ['../a00543.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c']\n ]],\n ['tds7_5fget_5finstance_5fports_21', ['tds7_get_instance_ports', ['../a00543.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c'],\n ['../a00543.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c']\n ]],\n@@ -51,35 +51,35 @@\n ['tds_5falloc_5frow_35', ['tds_alloc_row', ['../a00541.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c'],\n ['../a00541.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c']\n ]],\n ['tds_5fanswer_36', ['tds_answer', ['../a00698.html', 1, '']]],\n ['tds_5fanswer_5fchallenge_37', ['tds_answer_challenge', ['../a00537.html#ga8adf4e719762fef6fdb091d15d4d5d7f', 1, 'challenge.c']]],\n ['tds_5fascii_5fto_5fucs2_38', ['tds_ascii_to_ucs2', ['../a00542.html#gad05fc65e1d505c68d14c82b99a00e4eb', 1, 'query.c']]],\n ['tds_5fauthentication_39', ['tds_authentication', ['../a01194.html', 1, '']]],\n- ['tds_5fbcp_5fdirections_40', ['tds_bcp_directions', ['../a00368.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]],\n- ['tds_5fbcp_5fdone_41', ['tds_bcp_done', ['../a00368.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'],\n- ['../a00092.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c']\n+ ['tds_5fbcp_5fdirections_40', ['tds_bcp_directions', ['../a00425.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]],\n+ ['tds_5fbcp_5fdone_41', ['tds_bcp_done', ['../a00425.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'],\n+ ['../a00176.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c']\n ]],\n- ['tds_5fbcp_5ffread_42', ['tds_bcp_fread', ['../a00092.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'],\n- ['../a00368.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']\n+ ['tds_5fbcp_5ffread_42', ['tds_bcp_fread', ['../a00176.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'],\n+ ['../a00425.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']\n ]],\n- ['tds_5fbcp_5finit_43', ['tds_bcp_init', ['../a00092.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5finit_43', ['tds_bcp_init', ['../a00176.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5frow_5ffree_44', ['tds_bcp_row_free', ['../a00092.html#a7c4f2b050cd1a747604aa305d6877de7', 1, 'bulk.c']]],\n- ['tds_5fbcp_5fsend_5frecord_45', ['tds_bcp_send_record', ['../a00092.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'],\n- ['../a00368.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']\n+ ['tds_5fbcp_5frow_5ffree_44', ['tds_bcp_row_free', ['../a00176.html#a7c4f2b050cd1a747604aa305d6877de7', 1, 'bulk.c']]],\n+ ['tds_5fbcp_5fsend_5frecord_45', ['tds_bcp_send_record', ['../a00176.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'],\n+ ['../a00425.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']\n ]],\n- ['tds_5fbcp_5fstart_46', ['tds_bcp_start', ['../a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5fstart_46', ['tds_bcp_start', ['../a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5fstart_5fcopy_5fin_47', ['tds_bcp_start_copy_in', ['../a00092.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5fstart_5fcopy_5fin_47', ['tds_bcp_start_copy_in', ['../a00176.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5fstart_5finsert_5fstmt_48', ['tds_bcp_start_insert_stmt', ['../a00092.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]],\n+ ['tds_5fbcp_5fstart_5finsert_5fstmt_48', ['tds_bcp_start_insert_stmt', ['../a00176.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]],\n ['tds_5fbcpcoldata_49', ['tds_bcpcoldata', ['../a01142.html', 1, '']]],\n ['tds_5fbcpinfo_50', ['tds_bcpinfo', ['../a01222.html', 1, '']]],\n ['tds_5fblob_51', ['tds_blob', ['../a01130.html', 1, '']]],\n ['tds_5fcanonical_5fcharset_52', ['tds_canonical_charset', ['../a00540.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c'],\n ['../a00540.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c']\n ]],\n ['tds_5fcanonical_5fcharset_5fname_53', ['tds_canonical_charset_name', ['../a00540.html#ga22c61ca41f64c7fe368659ed1eebdb56', 1, 'tds_canonical_charset_name(const char *charset_name): iconv.c'],\n@@ -88,73 +88,73 @@\n ['tds_5fcapabilities_54', ['tds_capabilities', ['../a01114.html', 1, '']]],\n ['tds_5fcapability_5ftype_55', ['tds_capability_type', ['../a01110.html', 1, '']]],\n ['tds_5fclose_5fsocket_56', ['tds_close_socket', ['../a00543.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e', 1, 'tds_close_socket(TDSSOCKET *tds): net.c'],\n ['../a00543.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e', 1, 'tds_close_socket(TDSSOCKET *tds): net.c']\n ]],\n ['tds_5fcolumn_57', ['tds_column', ['../a01150.html', 1, '']]],\n ['tds_5fcolumn_5ffuncs_58', ['tds_column_funcs', ['../a01146.html', 1, '']]],\n- ['tds_5fcompiletime_5fsettings_59', ['tds_compiletime_settings', ['../a00368.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'TDS_COMPILETIME_SETTINGS: tds.h'],\n+ ['tds_5fcompiletime_5fsettings_59', ['tds_compiletime_settings', ['../a00425.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'TDS_COMPILETIME_SETTINGS: tds.h'],\n ['../a01090.html', 1, 'tds_compiletime_settings']\n ]],\n ['tds_5fcondition_60', ['tds_condition', ['../a01230.html', 1, '']]],\n ['tds_5fconfig_5fverstr_61', ['tds_config_verstr', ['../a00538.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c'],\n ['../a00538.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c']\n ]],\n ['tds_5fconnection_62', ['tds_connection', ['../a01206.html', 1, '']]],\n ['tds_5fcontext_63', ['tds_context', ['../a01190.html', 1, '']]],\n ['tds_5fconvert_64', ['tds_convert', ['../a00539.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *tds_ctx, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c'],\n ['../a00539.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c']\n ]],\n- ['tds_5fconvert_5fstream_65', ['tds_convert_stream', ['../a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]],\n+ ['tds_5fconvert_5fstream_65', ['tds_convert_stream', ['../a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]],\n ['tds_5fconvert_5fstring_66', ['tds_convert_string', ['../a00542.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c'],\n ['../a00542.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c']\n ]],\n- ['tds_5fcopy_5fstream_67', ['tds_copy_stream', ['../a00026.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]],\n+ ['tds_5fcopy_5fstream_67', ['tds_copy_stream', ['../a00236.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]],\n ['tds_5fcount_5fplaceholders_68', ['tds_count_placeholders', ['../a00542.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c'],\n ['../a00542.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c']\n ]],\n ['tds_5fcount_5fplaceholders_5fucs2le_69', ['tds_count_placeholders_ucs2le', ['../a00542.html#ga0cd19215e9169ea299a6c9cbf5b2fb60', 1, 'query.c']]],\n ['tds_5fctx_70', ['tds_ctx', ['../a00594.html#afb3fb2d591c0f75b9412f8ca77e2629d', 1, 'dblib_context']]],\n ['tds_5fctx_5fref_5fcount_71', ['tds_ctx_ref_count', ['../a00594.html#ad01d901acbc92e8c369e6a6c784d7446', 1, 'dblib_context']]],\n ['tds_5fcursor_72', ['tds_cursor', ['../a01174.html', 1, '']]],\n ['tds_5fcursor_5fcheck_5fallocated_73', ['tds_cursor_check_allocated', ['../a00542.html#ga2a64baaf4aa50ef601a49b801dfdaaf6', 1, 'query.c']]],\n ['tds_5fcursor_5fdealloc_74', ['tds_cursor_dealloc', ['../a00542.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c'],\n ['../a00542.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c']\n ]],\n ['tds_5fcursor_5fstatus_75', ['tds_cursor_status', ['../a01170.html', 1, '']]],\n ['tds_5fdatain_5fstream_76', ['tds_datain_stream', ['../a01070.html', 1, '']]],\n- ['tds_5fdatain_5fstream_5finit_77', ['tds_datain_stream_init', ['../a00026.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]],\n- ['tds_5fdatain_5fstream_5fread_78', ['tds_datain_stream_read', ['../a00026.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]],\n+ ['tds_5fdatain_5fstream_5finit_77', ['tds_datain_stream_init', ['../a00236.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]],\n+ ['tds_5fdatain_5fstream_5fread_78', ['tds_datain_stream_read', ['../a00236.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]],\n ['tds_5fdataout_5fstream_79', ['tds_dataout_stream', ['../a01074.html', 1, '']]],\n- ['tds_5fdataout_5fstream_5finit_80', ['tds_dataout_stream_init', ['../a00026.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]],\n- ['tds_5fdataout_5fstream_5fwrite_81', ['tds_dataout_stream_write', ['../a00026.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]],\n+ ['tds_5fdataout_5fstream_5finit_80', ['tds_dataout_stream_init', ['../a00236.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]],\n+ ['tds_5fdataout_5fstream_5fwrite_81', ['tds_dataout_stream_write', ['../a00236.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]],\n ['tds_5fdatecrack_82', ['tds_datecrack', ['../a00539.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c'],\n ['../a00539.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c']\n ]],\n ['tds_5fdatetimeall_83', ['TDS_DATETIMEALL', ['../a01094.html', 1, '']]],\n ['tds_5fdblib_5fdbprocess_84', ['tds_dblib_dbprocess', ['../a00918.html', 1, '']]],\n ['tds_5fdblib_5floginrec_85', ['tds_dblib_loginrec', ['../a00886.html', 1, '']]],\n- ['tds_5fdead_86', ['TDS_DEAD', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]],\n+ ['tds_5fdead_86', ['TDS_DEAD', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]],\n ['tds_5fdeferred_5fcursor_5fdealloc_87', ['tds_deferred_cursor_dealloc', ['../a00542.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c'],\n ['../a00542.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c']\n ]],\n ['tds_5fdeferred_5funprepare_88', ['tds_deferred_unprepare', ['../a00542.html#ga9f80fdf732b084aef7de7a323261aa61', 1, 'tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#ga9f80fdf732b084aef7de7a323261aa61', 1, 'tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c']\n ]],\n ['tds_5fdetach_5fresults_89', ['tds_detach_results', ['../a00541.html#ga1d60bf443e274797b1d1a9e7418ab962', 1, 'tds_detach_results(TDSRESULTINFO *info): mem.c'],\n ['../a00541.html#ga1d60bf443e274797b1d1a9e7418ab962', 1, 'tds_detach_results(TDSRESULTINFO *info): mem.c']\n ]],\n- ['tds_5fdone_5fcancelled_90', ['TDS_DONE_CANCELLED', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86', 1, 'tds.h']]],\n- ['tds_5fdone_5fcount_91', ['TDS_DONE_COUNT', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519caf17d0c6591e318014c806a10c2f0270b', 1, 'tds.h']]],\n- ['tds_5fdone_5ferror_92', ['TDS_DONE_ERROR', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d', 1, 'tds.h']]],\n- ['tds_5fdone_5ffinal_93', ['TDS_DONE_FINAL', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca7ed9046db24ad78bb94c2b12d6e11f46', 1, 'tds.h']]],\n- ['tds_5fdone_5finxact_94', ['TDS_DONE_INXACT', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519cac79a30d1a0bac125e77d87f5d87bc2b2', 1, 'tds.h']]],\n- ['tds_5fdone_5fmore_5fresults_95', ['TDS_DONE_MORE_RESULTS', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca688b8bf555ce6ae72f3e047177bfc966', 1, 'tds.h']]],\n- ['tds_5fdone_5fproc_96', ['TDS_DONE_PROC', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519cae170f368306f421d507c6f08e4d48d9a', 1, 'tds.h']]],\n- ['tds_5fdone_5fsrverror_97', ['TDS_DONE_SRVERROR', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca7bfe89d6f8fc309eae412ad0a503e34c', 1, 'tds.h']]],\n+ ['tds_5fdone_5fcancelled_90', ['TDS_DONE_CANCELLED', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86', 1, 'tds.h']]],\n+ ['tds_5fdone_5fcount_91', ['TDS_DONE_COUNT', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519caf17d0c6591e318014c806a10c2f0270b', 1, 'tds.h']]],\n+ ['tds_5fdone_5ferror_92', ['TDS_DONE_ERROR', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d', 1, 'tds.h']]],\n+ ['tds_5fdone_5ffinal_93', ['TDS_DONE_FINAL', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca7ed9046db24ad78bb94c2b12d6e11f46', 1, 'tds.h']]],\n+ ['tds_5fdone_5finxact_94', ['TDS_DONE_INXACT', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519cac79a30d1a0bac125e77d87f5d87bc2b2', 1, 'tds.h']]],\n+ ['tds_5fdone_5fmore_5fresults_95', ['TDS_DONE_MORE_RESULTS', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca688b8bf555ce6ae72f3e047177bfc966', 1, 'tds.h']]],\n+ ['tds_5fdone_5fproc_96', ['TDS_DONE_PROC', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519cae170f368306f421d507c6f08e4d48d9a', 1, 'tds.h']]],\n+ ['tds_5fdone_5fsrverror_97', ['TDS_DONE_SRVERROR', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca7bfe89d6f8fc309eae412ad0a503e34c', 1, 'tds.h']]],\n ['tds_5fdstr_98', ['tds_dstr', ['../a01258.html', 1, '']]],\n ['tds_5fdstr_5falloc_99', ['tds_dstr_alloc', ['../a00545.html#ga6aa14b8b717b51afcfb65bd55143689d', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fbuf_100', ['tds_dstr_buf', ['../a00545.html#gae092e53680d954bcf4f19334987d43c7', 1, 'string.h']]],\n ['tds_5fdstr_5fcopy_101', ['tds_dstr_copy', ['../a00545.html#gad96366d9fa93bfc283cef1299fbe97ab', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fcopyn_102', ['tds_dstr_copyn', ['../a00545.html#ga656718f240d7403f986ae887d84a6ca1', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fcstr_103', ['tds_dstr_cstr', ['../a00545.html#gac536f0e4d77d3cff5702719362ec1766', 1, 'string.h']]],\n ['tds_5fdstr_5fdup_104', ['tds_dstr_dup', ['../a00545.html#ga4e6d9fa6f9b9551a5a3390e10a5322e6', 1, 'tdsstring.c']]],\n@@ -167,25 +167,25 @@\n ['tds_5fdstr_5fisempty_109', ['tds_dstr_isempty', ['../a00545.html#ga197c6af67f2e7469d06c2aa055917b1e', 1, 'string.h']]],\n ['tds_5fdstr_5flen_110', ['tds_dstr_len', ['../a00545.html#ga396f139e4f886ac1b224a735138e73dd', 1, 'string.h']]],\n ['tds_5fdstr_5fset_111', ['tds_dstr_set', ['../a00545.html#gab78cc59b110df2817b00f9bed74c6ff1', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fsetlen_112', ['tds_dstr_setlen', ['../a00545.html#ga0cd7863ba7c2d2da4a193234472a3d14', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fzero_113', ['tds_dstr_zero', ['../a00545.html#ga339ba30216e2bd5bd076aa9dcd26f3c4', 1, 'tdsstring.c']]],\n ['tds_5fdynamic_114', ['tds_dynamic', ['../a01182.html', 1, '']]],\n ['tds_5fdynamic_5fstream_115', ['tds_dynamic_stream', ['../a01086.html', 1, '']]],\n- ['tds_5fdynamic_5fstream_5finit_116', ['tds_dynamic_stream_init', ['../a00026.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]],\n- ['tds_5fdynamic_5fstream_5fwrite_117', ['tds_dynamic_stream_write', ['../a00026.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]],\n- ['tds_5fencoding_118', ['tds_encoding', ['../a00368.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'TDS_ENCODING: tds.h'],\n+ ['tds_5fdynamic_5fstream_5finit_116', ['tds_dynamic_stream_init', ['../a00236.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]],\n+ ['tds_5fdynamic_5fstream_5fwrite_117', ['tds_dynamic_stream_write', ['../a00236.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]],\n+ ['tds_5fencoding_118', ['tds_encoding', ['../a00425.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'TDS_ENCODING: tds.h'],\n ['../a01138.html', 1, 'tds_encoding']\n ]],\n- ['tds_5fend_119', ['tds_end', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519c', 1, 'tds.h']]],\n+ ['tds_5fend_119', ['tds_end', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519c', 1, 'tds.h']]],\n ['tds_5fenv_120', ['tds_env', ['../a01178.html', 1, '']]],\n ['tds_5ferrno_5fmessage_5fflags_121', ['tds_errno_message_flags', ['../a00950.html', 1, '']]],\n ['tds_5ferror_5fmessage_122', ['tds_error_message', ['../a00766.html', 1, '']]],\n ['tds_5ffile_5fstream_123', ['tds_file_stream', ['../a00694.html', 1, '']]],\n- ['tds_5ffile_5fstream_5fread_124', ['tds_file_stream_read', ['../a00092.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]],\n+ ['tds_5ffile_5fstream_5fread_124', ['tds_file_stream_read', ['../a00176.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]],\n ['tds_5ffix_5fcolumn_5fsize_125', ['tds_fix_column_size', ['../a00542.html#ga440f0f469afad1eac4c008979873ccdd', 1, 'tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol): query.c'],\n ['../a00542.html#ga440f0f469afad1eac4c008979873ccdd', 1, 'tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol): query.c']\n ]],\n ['tds_5ffix_5flogin_126', ['tds_fix_login', ['../a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c'],\n ['../a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c']\n ]],\n ['tds_5fflush_5fpacket_127', ['tds_flush_packet', ['../a00543.html#ga5feb53554e8917a81bbbc332163a61fb', 1, 'tds_flush_packet(TDSSOCKET *tds): write.c'],\n@@ -211,43 +211,43 @@\n ['tds_5ffreeze_5fclose_5flen_134', ['tds_freeze_close_len', ['../a00543.html#ga2660b893ae2bf36fe1b63b354e748bad', 1, 'tds_freeze_close_len(TDSFREEZE *freeze, int32_t size): packet.c'],\n ['../a00543.html#ga2660b893ae2bf36fe1b63b354e748bad', 1, 'tds_freeze_close_len(TDSFREEZE *freeze, int32_t size): packet.c']\n ]],\n ['tds_5ffreeze_5fwritten_135', ['tds_freeze_written', ['../a00543.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c'],\n ['../a00543.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c']\n ]],\n ['tds_5ffuncs_136', ['TDS_FUNCS', ['../a01010.html', 1, '']]],\n- ['tds_5fgeneric_5fget_137', ['tds_generic_get', ['../a00080.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]],\n- ['tds_5fgeneric_5fput_138', ['tds_generic_put', ['../a00080.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]],\n- ['tds_5fgeneric_5fput_5finfo_139', ['tds_generic_put_info', ['../a00080.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fget_137', ['tds_generic_get', ['../a00179.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fput_138', ['tds_generic_put', ['../a00179.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fput_5finfo_139', ['tds_generic_put_info', ['../a00179.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]],\n ['tds_5fget_5fbyte_140', ['tds_get_byte', ['../a00543.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fget_5fchar_5fdata_141', ['tds_get_char_data', ['../a00543.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *row_buffer, size_t wire_size, TDSCOLUMN *curcol): read.c'],\n ['../a00543.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol): read.c']\n ]],\n ['tds_5fget_5fcolumn_5fdeclaration_142', ['tds_get_column_declaration', ['../a00542.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c'],\n ['../a00542.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c']\n ]],\n ['tds_5fget_5fcompiletime_5fsettings_143', ['tds_get_compiletime_settings', ['../a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c'],\n ['../a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c']\n ]],\n- ['tds_5fget_5fconversion_5ftype_144', ['tds_get_conversion_type', ['../a00368.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fconversion_5ftype_144', ['tds_get_conversion_type', ['../a00425.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]],\n ['tds_5fget_5fdata_5finfo_145', ['tds_get_data_info', ['../a00544.html#gad9b6b86f48be077fb44ac603845a0c27', 1, 'token.c']]],\n ['tds_5fget_5fdynid_146', ['tds_get_dynid', ['../a00541.html#ga93503e64091b51add0801abebe22abf4', 1, 'mem.c']]],\n ['tds_5fget_5fhome_5ffile_147', ['tds_get_home_file', ['../a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa', 1, 'tds_get_home_file(const char *file): config.c'],\n ['../a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa', 1, 'tds_get_home_file(const char *file): config.c']\n ]],\n- ['tds_5fget_5flocale_148', ['tds_get_locale', ['../a00368.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]],\n+ ['tds_5fget_5flocale_148', ['tds_get_locale', ['../a00425.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]],\n ['tds_5fget_5fn_149', ['tds_get_n', ['../a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t n): read.c'],\n ['../a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t need): read.c']\n ]],\n ['tds_5fget_5fnull_5ftype_150', ['tds_get_null_type', ['../a00539.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c'],\n ['../a00539.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c']\n ]],\n- ['tds_5fget_5fsize_5fby_5ftype_151', ['tds_get_size_by_type', ['../a00368.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fsize_5fby_5ftype_151', ['tds_get_size_by_type', ['../a00425.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]],\n ['tds_5fget_5fsocket_5ferror_152', ['tds_get_socket_error', ['../a00543.html#ga4a2418e0a4533d616ef3da526236f2b8', 1, 'net.c']]],\n ['tds_5fget_5fstring_153', ['tds_get_string', ['../a00543.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c'],\n ['../a00543.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c']\n ]],\n ['tds_5fget_5ftoken_5fsize_154', ['tds_get_token_size', ['../a00544.html#ga995b82e53aeac5bede01ef16e9aeaa65', 1, 'tds_get_token_size(int marker): token.c'],\n ['../a00544.html#ga995b82e53aeac5bede01ef16e9aeaa65', 1, 'tds_get_token_size(int marker): token.c']\n ]],\n@@ -256,88 +256,88 @@\n ]],\n ['tds_5fget_5fuint8_156', ['tds_get_uint8', ['../a00543.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fget_5fusmallint_157', ['tds_get_usmallint', ['../a00543.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c'],\n ['../a00543.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c']\n ]],\n- ['tds_5fget_5fvarint_5fsize_158', ['tds_get_varint_size', ['../a00368.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fvarint_5fsize_158', ['tds_get_varint_size', ['../a00425.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]],\n ['tds_5fgoodread_159', ['tds_goodread', ['../a00543.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c'],\n ['../a00543.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c']\n ]],\n ['tds_5fgoodwrite_160', ['tds_goodwrite', ['../a00543.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c'],\n ['../a00543.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c']\n ]],\n ['tds_5fheaders_161', ['tds_headers', ['../a01122.html', 1, '']]],\n ['tds_5ficonv_162', ['tds_iconv', ['../a00540.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'],\n ['../a00540.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']\n ]],\n ['tds_5ficonv_5falloc_163', ['tds_iconv_alloc', ['../a01368.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'],\n- ['../a00368.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c']\n+ ['../a00425.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c']\n ]],\n ['tds_5ficonv_5ffrom_5fcollate_164', ['tds_iconv_from_collate', ['../a00540.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c'],\n ['../a00540.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c']\n ]],\n ['tds_5ficonv_5fget_5finfo_165', ['tds_iconv_get_info', ['../a00540.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c'],\n ['../a00540.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c']\n ]],\n ['tds_5ficonv_5finfo_5finit_166', ['tds_iconv_info_init', ['../a00540.html#ga3a7a7b4d6ed344127e164dd0b443d790', 1, 'iconv.c']]],\n ['tds_5ficonv_5finit_167', ['tds_iconv_init', ['../a01368.html#a89de4d12be43b135ad355236717e9cbb', 1, 'iconv.c']]],\n- ['tds_5fidle_168', ['TDS_IDLE', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]],\n+ ['tds_5fidle_168', ['TDS_IDLE', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]],\n ['tds_5finit_5flogin_169', ['tds_init_login', ['../a00541.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39', 1, 'tds_init_login(TDSLOGIN *login, TDSLOCALE *locale): mem.c'],\n ['../a00541.html#ga4f7b22f681e7160ac03dfe8d2ae8bd39', 1, 'tds_init_login(TDSLOGIN *login, TDSLOCALE *locale): mem.c']\n ]],\n ['tds_5finput_5fstream_170', ['tds_input_stream', ['../a01062.html', 1, '']]],\n- ['tds_5fis_5fmssql_171', ['TDS_IS_MSSQL', ['../a00368.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]],\n- ['tds_5fis_5fsybase_172', ['TDS_IS_SYBASE', ['../a00368.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]],\n+ ['tds_5fis_5fmssql_171', ['TDS_IS_MSSQL', ['../a00425.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]],\n+ ['tds_5fis_5fsybase_172', ['TDS_IS_SYBASE', ['../a00425.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]],\n ['tds_5flocale_173', ['tds_locale', ['../a01126.html', 1, '']]],\n ['tds_5flogin_174', ['tds_login', ['../a01118.html', 1, '']]],\n ['tds_5flookup_5fdynamic_175', ['tds_lookup_dynamic', ['../a00544.html#ga4a45cadd06ae1b886459dcc1f8e482c6', 1, 'tds_lookup_dynamic(TDSCONNECTION *conn, const char *id): token.c'],\n ['../a00544.html#ga4a45cadd06ae1b886459dcc1f8e482c6', 1, 'tds_lookup_dynamic(TDSCONNECTION *conn, const char *id): token.c']\n ]],\n ['tds_5flookup_5fhost_176', ['tds_lookup_host', ['../a00538.html#ga3945f760ceb97e8854e18589d6f0d241', 1, 'tds_lookup_host(const char *servername): config.c'],\n ['../a00538.html#ga3945f760ceb97e8854e18589d6f0d241', 1, 'tds_lookup_host(const char *servername): config.c']\n ]],\n ['tds_5flookup_5fport_177', ['tds_lookup_port', ['../a00538.html#ga45281d1cb2ac649db65d80bb3ff06b66', 1, 'config.c']]],\n ['tds_5fmay_5falias_178', ['TDS_MAY_ALIAS', ['../a00922.html', 1, '']]],\n ['tds_5fmessage_179', ['tds_message', ['../a01162.html', 1, '']]],\n ['tds_5fmicrosoft_5fdbdaterec_180', ['tds_microsoft_dbdaterec', ['../a01318.html', 1, '']]],\n ['tds_5fmicrosoft_5fdbdaterec2_181', ['tds_microsoft_dbdaterec2', ['../a01326.html', 1, '']]],\n- ['tds_5fms_5fver_182', ['TDS_MS_VER', ['../a00368.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]],\n+ ['tds_5fms_5fver_182', ['TDS_MS_VER', ['../a00425.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]],\n ['tds_5fmultiple_183', ['tds_multiple', ['../a01186.html', 1, '']]],\n ['tds_5fneeds_5funprepare_184', ['tds_needs_unprepare', ['../a00542.html#ga05ac7bab753d19b6ba1ffc7505d8fcd0', 1, 'tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#ga05ac7bab753d19b6ba1ffc7505d8fcd0', 1, 'tds_needs_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c']\n ]],\n ['tds_5fnext_5fplaceholder_185', ['tds_next_placeholder', ['../a00542.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c'],\n ['../a00542.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c']\n ]],\n ['tds_5fnext_5fplaceholder_5fucs2le_186', ['tds_next_placeholder_ucs2le', ['../a00542.html#gaaa97f8535a2babe642024a0744d271d5', 1, 'query.c']]],\n ['tds_5fntlm_5fauth_187', ['tds_ntlm_auth', ['../a00706.html', 1, '']]],\n ['tds_5fntlm_5fget_5fauth_188', ['tds_ntlm_get_auth', ['../a00537.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c'],\n ['../a00537.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c']\n ]],\n- ['tds_5fnumeric_5fbytes_5fper_5fprec_189', ['tds_numeric_bytes_per_prec', ['../a00368.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]],\n- ['tds_5fnumeric_5fto_5fstring_190', ['tds_numeric_to_string', ['../a00368.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]],\n+ ['tds_5fnumeric_5fbytes_5fper_5fprec_189', ['tds_numeric_bytes_per_prec', ['../a00425.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]],\n+ ['tds_5fnumeric_5fto_5fstring_190', ['tds_numeric_to_string', ['../a00425.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]],\n ['tds_5foption_5farg_191', ['tds_option_arg', ['../a01102.html', 1, '']]],\n ['tds_5foutput_5fstream_192', ['tds_output_stream', ['../a01066.html', 1, '']]],\n ['tds_5fpacket_193', ['tds_packet', ['../a01198.html', 1, '']]],\n ['tds_5fparsed_5fparam_194', ['TDS_PARSED_PARAM', ['../a01014.html', 1, '']]],\n ['tds_5fpbcb_195', ['tds_pbcb', ['../a00690.html', 1, '']]],\n ['tds_5fpeek_196', ['tds_peek', ['../a00543.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c']\n ]],\n- ['tds_5fpending_197', ['TDS_PENDING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]],\n+ ['tds_5fpending_197', ['TDS_PENDING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]],\n ['tds_5fpoll_5fwakeup_198', ['tds_poll_wakeup', ['../a01202.html', 1, '']]],\n ['tds_5fpool_199', ['tds_pool', ['../a00678.html', 1, '']]],\n ['tds_5fpool_5fevent_200', ['tds_pool_event', ['../a00662.html', 1, '']]],\n ['tds_5fpool_5fmember_201', ['tds_pool_member', ['../a00674.html', 1, '']]],\n ['tds_5fpool_5fsocket_202', ['tds_pool_socket', ['../a00666.html', 1, '']]],\n ['tds_5fpool_5fuser_203', ['tds_pool_user', ['../a00670.html', 1, '']]],\n ['tds_5fpr_5fop_204', ['tds_pr_op', ['../a00544.html#ga62dc14d21453e88e24880ee0acaca73a', 1, 'token.c']]],\n- ['tds_5fprdatatype_205', ['tds_prdatatype', ['../a00170.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]],\n+ ['tds_5fprdatatype_205', ['tds_prdatatype', ['../a00080.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]],\n ['tds_5fprocess_5fauth_206', ['tds_process_auth', ['../a00544.html#ga4e1e52e09b0c27a9b9f53eb6b539afce', 1, 'token.c']]],\n ['tds_5fprocess_5fcancel_207', ['tds_process_cancel', ['../a00544.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c'],\n ['../a00544.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c']\n ]],\n ['tds_5fprocess_5fcol_5ffmt_208', ['tds_process_col_fmt', ['../a00544.html#ga4e3dd9d3614f5f0433b78b761dd68741', 1, 'token.c']]],\n ['tds_5fprocess_5fcol_5fname_209', ['tds_process_col_name', ['../a00544.html#ga905d2fa5e1b602817bd16bb0fcf9eadb', 1, 'token.c']]],\n ['tds_5fprocess_5fcolinfo_210', ['tds_process_colinfo', ['../a00544.html#ga22c7f413d43fc0d511e122a3de389166', 1, 'token.c']]],\n@@ -373,15 +373,15 @@\n ['tds_5fput_5fdata_232', ['tds_put_data', ['../a00542.html#ga9fcc0a3932dcad530511395ef8a767fb', 1, 'query.c']]],\n ['tds_5fput_5fdata_5finfo_233', ['tds_put_data_info', ['../a00542.html#gafd74652c4722ddce4d642cc4209449d4', 1, 'query.c']]],\n ['tds_5fput_5fn_5fas_5fucs2_234', ['TDS_PUT_N_AS_UCS2', ['../a00542.html#ga62c3dc9946acb3ffd1b7ae43424f5b47', 1, 'query.c']]],\n ['tds_5fput_5fparam_5fas_5fstring_235', ['tds_put_param_as_string', ['../a00542.html#ga0e2e7230c425e925402d7856ff5b4b18', 1, 'query.c']]],\n ['tds_5fput_5fstring_236', ['tds_put_string', ['../a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4', 1, 'tds_put_string(TDSSOCKET *tds, const char *s, int len): write.c'],\n ['../a00543.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4', 1, 'tds_put_string(TDSSOCKET *tds, const char *buf, int len): write.c']\n ]],\n- ['tds_5fput_5ftinyint_237', ['tds_put_tinyint', ['../a00368.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]],\n+ ['tds_5fput_5ftinyint_237', ['tds_put_tinyint', ['../a00425.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]],\n ['tds_5fquery_5fflush_5fpacket_238', ['tds_query_flush_packet', ['../a00542.html#gada27f4cfce925240ad33b71b63ca692d', 1, 'query.c']]],\n ['tds_5fquote_239', ['tds_quote', ['../a00542.html#ga7efaa23c3b21158ffc963f85fbc3fdf4', 1, 'query.c']]],\n ['tds_5fquote_5fand_5fput_240', ['tds_quote_and_put', ['../a00542.html#ga26b26296d060dca75f6a43e9ac41e58d', 1, 'query.c']]],\n ['tds_5fquote_5fid_241', ['tds_quote_id', ['../a00542.html#ga8d8f2f1c91635ee95f30722208ae3043', 1, 'tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c'],\n ['../a00542.html#ga8d8f2f1c91635ee95f30722208ae3043', 1, 'tds_quote_id(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c']\n ]],\n ['tds_5fquote_5fid_5frpc_242', ['tds_quote_id_rpc', ['../a00542.html#ga691e8752f4f84ed51b7f4d1447cb3d25', 1, 'tds_quote_id_rpc(TDSSOCKET *tds, char *buffer, const char *id, int idlen): query.c'],\n@@ -402,15 +402,15 @@\n ['../a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90', 1, 'tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale): config.c']\n ]],\n ['tds_5fread_5finterfaces_249', ['tds_read_interfaces', ['../a00538.html#ga6631af35ee817f93827c62bbda41674a', 1, 'config.c']]],\n ['tds_5fread_5fnamelist_250', ['tds_read_namelist', ['../a00544.html#gaeaaed2ea1d8c827da1a0f5b419524ae1', 1, 'token.c']]],\n ['tds_5fread_5fpacket_251', ['tds_read_packet', ['../a00543.html#ga410619783bdf2bb60b0f27a5578e0e07', 1, 'tds_read_packet(TDSSOCKET *tds): packet.c'],\n ['../a00543.html#ga410619783bdf2bb60b0f27a5578e0e07', 1, 'tds_read_packet(TDSSOCKET *tds): packet.c']\n ]],\n- ['tds_5freading_252', ['TDS_READING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]],\n+ ['tds_5freading_252', ['TDS_READING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]],\n ['tds_5frealloc_253', ['tds_realloc', ['../a00541.html#ga8645f5abc49db03d14b66f72b83a9a4c', 1, 'tds_realloc(void **pp, size_t new_size): mem.c'],\n ['../a00541.html#ga8645f5abc49db03d14b66f72b83a9a4c', 1, 'tds_realloc(void **pp, size_t new_size): mem.c']\n ]],\n ['tds_5frelease_5fdynamic_254', ['tds_release_dynamic', ['../a00541.html#gabf2fdb0def5388508602ee7dd2f49506', 1, 'tds_release_dynamic(TDSDYNAMIC **dyn): mem.c'],\n ['../a00541.html#gabf2fdb0def5388508602ee7dd2f49506', 1, 'tds_release_dynamic(TDSDYNAMIC **pdyn): mem.c']\n ]],\n ['tds_5fresult_5finfo_255', ['tds_result_info', ['../a01158.html', 1, '']]],\n@@ -420,31 +420,31 @@\n ['tds_5fselect_259', ['tds_select', ['../a00543.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c'],\n ['../a00543.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c']\n ]],\n ['tds_5fsend_5fcancel_260', ['tds_send_cancel', ['../a00542.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c'],\n ['../a00542.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c']\n ]],\n ['tds_5fsend_5femulated_5fexecute_261', ['tds_send_emulated_execute', ['../a00542.html#ga02c6ce3ff96369603a6ee4efee64caae', 1, 'query.c']]],\n- ['tds_5fsending_262', ['TDS_SENDING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]],\n- ['tds_5fset_5fcolumn_5ftype_263', ['tds_set_column_type', ['../a00368.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n- ['../a00080.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n+ ['tds_5fsending_262', ['TDS_SENDING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]],\n+ ['tds_5fset_5fcolumn_5ftype_263', ['tds_set_column_type', ['../a00425.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n+ ['../a00179.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n ]],\n ['tds_5fset_5fcur_5fcursor_264', ['tds_set_cur_cursor', ['../a00542.html#ga34fb1084682cc31fe02a4a7946955a5a', 1, 'query.c']]],\n ['tds_5fset_5fcur_5fdyn_265', ['tds_set_cur_dyn', ['../a00542.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c']\n ]],\n ['tds_5fset_5ficonv_5fname_266', ['tds_set_iconv_name', ['../a01368.html#a585ebac61354ce540d28f6da2d771b5b', 1, 'iconv.c']]],\n ['tds_5fset_5finterfaces_5ffile_5floc_267', ['tds_set_interfaces_file_loc', ['../a00538.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interf): config.c'],\n ['../a00538.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interfloc): config.c']\n ]],\n- ['tds_5fset_5fparam_5ftype_268', ['tds_set_param_type', ['../a00368.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n- ['../a00080.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n+ ['tds_5fset_5fparam_5ftype_268', ['tds_set_param_type', ['../a00425.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n+ ['../a00179.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n ]],\n- ['tds_5fset_5fserver_269', ['tds_set_server', ['../a00368.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]],\n- ['tds_5fset_5fstate_270', ['tds_set_state', ['../a00368.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]],\n+ ['tds_5fset_5fserver_269', ['tds_set_server', ['../a00425.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]],\n+ ['tds_5fset_5fstate_270', ['tds_set_state', ['../a00425.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]],\n ['tds_5fsetup_5fsocket_271', ['tds_setup_socket', ['../a00543.html#gab604dd1d75afa8f852d1a6ee0b681974', 1, 'net.c']]],\n ['tds_5fskip_5fcomment_272', ['tds_skip_comment', ['../a00542.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c'],\n ['../a00542.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c']\n ]],\n ['tds_5fskip_5fcomment_5fucs2le_273', ['tds_skip_comment_ucs2le', ['../a00542.html#gac3124fe439d9c96236fc33af7793ffcf', 1, 'query.c']]],\n ['tds_5fskip_5fquoted_274', ['tds_skip_quoted', ['../a00542.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c'],\n ['../a00542.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c']\n@@ -459,29 +459,29 @@\n ['../a00543.html#gae36a2665a4183b4cb211d03e907112ee', 1, 'tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on): net.c']\n ]],\n ['tds_5fsocket_5fwrite_280', ['tds_socket_write', ['../a00543.html#gad6f81b48fbcfc18ce0b213dbbea47e30', 1, 'net.c']]],\n ['tds_5fstart_5fquery_281', ['tds_start_query', ['../a00542.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c'],\n ['../a00542.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c']\n ]],\n ['tds_5fstart_5fquery_5fhead_282', ['tds_start_query_head', ['../a00542.html#ga9ad2e6defce530a8778791cce0166ccd', 1, 'query.c']]],\n- ['tds_5fstate_283', ['TDS_STATE', ['../a00368.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]],\n- ['tds_5fstates_284', ['tds_states', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]],\n+ ['tds_5fstate_283', ['TDS_STATE', ['../a00425.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]],\n+ ['tds_5fstates_284', ['tds_states', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]],\n ['tds_5fstaticin_5fstream_285', ['tds_staticin_stream', ['../a01078.html', 1, '']]],\n- ['tds_5fstaticin_5fstream_5finit_286', ['tds_staticin_stream_init', ['../a00026.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]],\n- ['tds_5fstaticin_5fstream_5fread_287', ['tds_staticin_stream_read', ['../a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]],\n+ ['tds_5fstaticin_5fstream_5finit_286', ['tds_staticin_stream_init', ['../a00236.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]],\n+ ['tds_5fstaticin_5fstream_5fread_287', ['tds_staticin_stream_read', ['../a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]],\n ['tds_5fstaticout_5fstream_288', ['tds_staticout_stream', ['../a01082.html', 1, '']]],\n- ['tds_5fstaticout_5fstream_5finit_289', ['tds_staticout_stream_init', ['../a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]],\n- ['tds_5fstaticout_5fstream_5fwrite_290', ['tds_staticout_stream_write', ['../a00026.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]],\n+ ['tds_5fstaticout_5fstream_5finit_289', ['tds_staticout_stream_init', ['../a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]],\n+ ['tds_5fstaticout_5fstream_5fwrite_290', ['tds_staticout_stream_write', ['../a00236.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]],\n ['tds_5fstr_5fempty_291', ['tds_str_empty', ['../a00545.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'],\n ['../a00545.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c']\n ]],\n ['tds_5fstrftime_292', ['tds_strftime', ['../a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec): convert.c'],\n ['../a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *timeptr, int prec): convert.c']\n ]],\n- ['tds_5fstrndup_293', ['tds_strndup', ['../a00368.html#a0e1370e1c1f7ae1b2e0c304960c39161', 1, 'util.c']]],\n+ ['tds_5fstrndup_293', ['tds_strndup', ['../a00425.html#a0e1370e1c1f7ae1b2e0c304960c39161', 1, 'util.c']]],\n ['tds_5fsubmit_5fbegin_5ftran_294', ['tds_submit_begin_tran', ['../a00542.html#ga7bf3670d3d6dabed469b9eb117298079', 1, 'tds_submit_begin_tran(TDSSOCKET *tds): query.c'],\n ['../a00542.html#ga7bf3670d3d6dabed469b9eb117298079', 1, 'tds_submit_begin_tran(TDSSOCKET *tds): query.c']\n ]],\n ['tds_5fsubmit_5fcommit_295', ['tds_submit_commit', ['../a00542.html#ga530538c4c975524cf0b771a550fc94a3', 1, 'tds_submit_commit(TDSSOCKET *tds, int cont): query.c'],\n ['../a00542.html#ga530538c4c975524cf0b771a550fc94a3', 1, 'tds_submit_commit(TDSSOCKET *tds, int cont): query.c']\n ]],\n ['tds_5fsubmit_5fexecdirect_296', ['tds_submit_execdirect', ['../a00542.html#gae603aed795a4c5bb26ab159a11256996', 1, 'tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head): query.c'],\n@@ -510,16 +510,16 @@\n ]],\n ['tds_5fsubmit_5frpc_304', ['tds_submit_rpc', ['../a00542.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c'],\n ['../a00542.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c']\n ]],\n ['tds_5fsubmit_5funprepare_305', ['tds_submit_unprepare', ['../a00542.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c']\n ]],\n- ['tds_5fswap_5fnumeric_306', ['tds_swap_numeric', ['../a00080.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]],\n- ['tds_5fsyb_5fver_307', ['TDS_SYB_VER', ['../a00368.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]],\n+ ['tds_5fswap_5fnumeric_306', ['tds_swap_numeric', ['../a00179.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]],\n+ ['tds_5fsyb_5fver_307', ['TDS_SYB_VER', ['../a00425.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]],\n ['tds_5fsybase_5fdbdaterec_308', ['tds_sybase_dbdaterec', ['../a01322.html', 1, '']]],\n ['tds_5fsybase_5fdbdaterec2_309', ['tds_sybase_dbdaterec2', ['../a01330.html', 1, '']]],\n ['tds_5fsys_5ficonv_5fopen_310', ['tds_sys_iconv_open', ['../a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c'],\n ['../a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c']\n ]],\n ['tds_5fthread_311', ['tds_thread', ['../a01234.html', 1, '']]],\n ['tds_5ftime_312', ['tds_time', ['../a00718.html', 1, '']]],\n@@ -530,57 +530,57 @@\n ['tds_5fupd_5fcol_315', ['tds_upd_col', ['../a01166.html', 1, '']]],\n ['tds_5fvariant_316', ['tds_variant', ['../a01134.html', 1, '']]],\n ['tds_5fvarmax_5fstream_317', ['tds_varmax_stream', ['../a00722.html', 1, '']]],\n ['tds_5fversion_318', ['tds_version', ['../a01118.html#a8f9f756b25fd18916a6080f9c22f835d', 1, 'tds_login']]],\n ['tds_5fwillconvert_319', ['tds_willconvert', ['../a00539.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c'],\n ['../a00539.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c']\n ]],\n- ['tds_5fwrite_5fdump_320', ['tds_write_dump', ['../a00368.html#a4766b1a553077cb3257d36b9ac28f5b5', 1, 'log.c']]],\n- ['tds_5fwritetext_5fcontinue_321', ['tds_writetext_continue', ['../a00092.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'],\n- ['../a00368.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c']\n- ]],\n- ['tds_5fwritetext_5fend_322', ['tds_writetext_end', ['../a00092.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'],\n- ['../a00368.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c']\n- ]],\n- ['tds_5fwritetext_5fstart_323', ['tds_writetext_start', ['../a00092.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'],\n- ['../a00368.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']\n- ]],\n- ['tds_5fwriting_324', ['TDS_WRITING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]],\n- ['tdsblob_325', ['TDSBLOB', ['../a00368.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]],\n- ['tdscursor_326', ['TDSCURSOR', ['../a00368.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]],\n+ ['tds_5fwrite_5fdump_320', ['tds_write_dump', ['../a00425.html#a4766b1a553077cb3257d36b9ac28f5b5', 1, 'log.c']]],\n+ ['tds_5fwritetext_5fcontinue_321', ['tds_writetext_continue', ['../a00176.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'],\n+ ['../a00425.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c']\n+ ]],\n+ ['tds_5fwritetext_5fend_322', ['tds_writetext_end', ['../a00176.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'],\n+ ['../a00425.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c']\n+ ]],\n+ ['tds_5fwritetext_5fstart_323', ['tds_writetext_start', ['../a00176.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'],\n+ ['../a00425.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']\n+ ]],\n+ ['tds_5fwriting_324', ['TDS_WRITING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]],\n+ ['tdsblob_325', ['TDSBLOB', ['../a00425.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]],\n+ ['tdscursor_326', ['TDSCURSOR', ['../a00425.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]],\n ['tdsdaterec_327', ['tdsdaterec', ['../a01098.html', 1, 'tdsdaterec'],\n- ['../a00368.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'TDSDATEREC: tds.h']\n+ ['../a00425.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'TDSDATEREC: tds.h']\n ]],\n ['tdsdatetime_328', ['tdsdatetime', ['../a01034.html', 1, '']]],\n ['tdsdatetime4_329', ['tdsdatetime4', ['../a01038.html', 1, '']]],\n ['tdsdbopen_330', ['tdsdbopen', ['../a00533.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c'],\n ['../a00533.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c']\n ]],\n- ['tdsdump_5fclose_331', ['tdsdump_close', ['../a00368.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]],\n- ['tdsdump_5fcol_332', ['tdsdump_col', ['../a00368.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]],\n- ['tdsdump_5fdump_5fbuf_333', ['tdsdump_dump_buf', ['../a00368.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]],\n- ['tdsdump_5flog_334', ['tdsdump_log', ['../a00368.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]],\n- ['tdsdump_5foff_335', ['tdsdump_off', ['../a00368.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]],\n+ ['tdsdump_5fclose_331', ['tdsdump_close', ['../a00425.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]],\n+ ['tdsdump_5fcol_332', ['tdsdump_col', ['../a00425.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]],\n+ ['tdsdump_5fdump_5fbuf_333', ['tdsdump_dump_buf', ['../a00425.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]],\n+ ['tdsdump_5flog_334', ['tdsdump_log', ['../a00425.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]],\n+ ['tdsdump_5foff_335', ['tdsdump_off', ['../a00425.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]],\n ['tdsdump_5foff_5fitem_336', ['tdsdump_off_item', ['../a01214.html', 1, '']]],\n- ['tdsdump_5fon_337', ['tdsdump_on', ['../a00368.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]],\n- ['tdsdump_5fopen_338', ['tdsdump_open', ['../a00368.html#a24471508ddfde7cc0f8577801e70c42f', 1, 'log.c']]],\n- ['tdsdynamic_339', ['TDSDYNAMIC', ['../a00368.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]],\n- ['tdsenv_340', ['TDSENV', ['../a00368.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]],\n- ['tdserror_341', ['tdserror', ['../a00368.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]],\n- ['tdsfilestream_342', ['TDSFILESTREAM', ['../a00092.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]],\n+ ['tdsdump_5fon_337', ['tdsdump_on', ['../a00425.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]],\n+ ['tdsdump_5fopen_338', ['tdsdump_open', ['../a00425.html#a24471508ddfde7cc0f8577801e70c42f', 1, 'log.c']]],\n+ ['tdsdynamic_339', ['TDSDYNAMIC', ['../a00425.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]],\n+ ['tdsenv_340', ['TDSENV', ['../a00425.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]],\n+ ['tdserror_341', ['tdserror', ['../a00425.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]],\n+ ['tdsfilestream_342', ['TDSFILESTREAM', ['../a00176.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]],\n ['tdsiconvdir_343', ['tdsiconvdir', ['../a00954.html', 1, '']]],\n ['tdsiconvinfo_344', ['tdsiconvinfo', ['../a00958.html', 1, '']]],\n ['tdsmoney_345', ['tdsmoney', ['../a01026.html', 1, '']]],\n ['tdsmoney4_346', ['tdsmoney4', ['../a01030.html', 1, '']]],\n ['tdsnumeric_347', ['tdsnumeric', ['../a01018.html', 1, '']]],\n ['tdsoldmoney_348', ['tdsoldmoney', ['../a01022.html', 1, '']]],\n- ['tdspbcb_349', ['TDSPBCB', ['../a00092.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]],\n- ['tdsresultinfo_350', ['TDSRESULTINFO', ['../a00368.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]],\n+ ['tdspbcb_349', ['TDSPBCB', ['../a00176.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]],\n+ ['tdsresultinfo_350', ['TDSRESULTINFO', ['../a00425.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]],\n ['tdsunique_351', ['tdsunique', ['../a01042.html', 1, '']]],\n- ['tdsvariant_352', ['TDSVARIANT', ['../a00368.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]],\n+ ['tdsvariant_352', ['TDSVARIANT', ['../a00425.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]],\n ['tdsvername_5ft_353', ['tdsvername_t', ['../a00714.html', 1, '']]],\n ['term_5flen_354', ['term_len', ['../a00694.html#aae893302d33ee1e9d83c3d85d7390dca', 1, 'tds_file_stream']]],\n ['terminator_355', ['terminator', ['../a00694.html#a463c28a7d862c0a6d7bf3170dd614dc0', 1, 'tds_file_stream']]],\n ['the_20db_20lib_20api_356', ['The db-lib API', ['../a00526.html', 1, '']]],\n ['time_357', ['time', ['../a01094.html#afd6a58ec251f2c08a040917ba5a8cd3f', 1, 'TDS_DATETIMEALL::time'],\n ['../a01298.html#a6bb5dcd5b47813b71934546e0c60e035', 1, 'DBDATETIMEALL::time']\n ]],\n@@ -590,12 +590,12 @@\n ['tm_5fmin_361', ['tm_min', ['../a00718.html#ab50f30e05dc6b493d347918ab7ded1e9', 1, 'tds_time']]],\n ['tm_5fmon_362', ['tm_mon', ['../a00718.html#adce28126e9bbd4ef005e3bf181d59745', 1, 'tds_time']]],\n ['tm_5fns_363', ['tm_ns', ['../a00718.html#a386f1cfcabbe3ed86afe72bed75778cf', 1, 'tds_time']]],\n ['tm_5fsec_364', ['tm_sec', ['../a00718.html#adeb5e3f535662c0341d28f8d669cb59b', 1, 'tds_time']]],\n ['tm_5fyear_365', ['tm_year', ['../a00718.html#a3e27d50ebb5196356a6a8a9b495c8758', 1, 'tds_time']]],\n ['to_20add_20a_20new_20type_366', ['How to add a new type', ['../a01331.html', 1, '']]],\n ['todo_20list_367', ['Todo List', ['../a00524.html', 1, '']]],\n- ['token_2ec_368', ['token.c', ['../a00089.html', 1, '']]],\n+ ['token_2ec_368', ['token.c', ['../a00230.html', 1, '']]],\n ['type_369', ['type', ['../a01331.html', 1, 'How to add a new type'],\n ['../a01174.html#a889aafdde1d57c9be0585326022831f0', 1, 'tds_cursor::type']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_2.js", "source2": "./usr/share/doc/freetds-doc/reference/all_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n ['bcp_20functions_0', ['Internal bcp functions', ['../a00530.html', 1, '']]],\n- ['bcp_2ec_1', ['bcp.c', ['../a01353.html', 1, '']]],\n+ ['bcp_2ec_1', ['bcp.c', ['../a01344.html', 1, '']]],\n ['bcp_5fbatch_2', ['bcp_batch', ['../a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01', 1, 'bcp_batch(DBPROCESS *dbproc): bcp.c'],\n ['../a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01', 1, 'bcp_batch(DBPROCESS *dbproc): bcp.c']\n ]],\n ['bcp_5fbind_3', ['bcp_bind', ['../a00529.html#ga6cf03708baaf02eb016b9ee77160d879', 1, 'bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int type, int table_column): bcp.c'],\n ['../a00529.html#ga6cf03708baaf02eb016b9ee77160d879', 1, 'bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int db_vartype, int table_column): bcp.c']\n ]],\n ['bcp_5fcolfmt_4', ['bcp_colfmt', ['../a00529.html#ga0ed03c69e698336d015bb315ad755fd5', 1, '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): bcp.c'],\n@@ -51,11 +51,11 @@\n ]],\n ['binary_5fto_5fresult_20', ['binary_to_result', ['../a00539.html#gab09f8279ad6da8a0a6a935e5810d753a', 1, 'convert.c']]],\n ['block_5fsize_21', ['block_size', ['../a01178.html#aaad54522a6e04122eba4c37a200d3f20', 1, 'tds_env']]],\n ['buf_22', ['buf', ['../a01086.html#a1b4967f395da537910ded1b392dd5d9b', 1, 'tds_dynamic_stream']]],\n ['buffer_23', ['buffer', ['../a01066.html#a5ba4ad38fdcb68e7d0c7252be65a4ecc', 1, 'tds_output_stream']]],\n ['bug_20list_24', ['Bug List', ['../a00525.html', 1, '']]],\n ['bulk_20copy_20functions_25', ['Bulk copy functions', ['../a00529.html', 1, '']]],\n- ['bulk_2ec_26', ['bulk.c', ['../a00092.html', 1, '']]],\n+ ['bulk_2ec_26', ['bulk.c', ['../a00176.html', 1, '']]],\n ['bulk_5fcopy_27', ['bulk_copy', ['../a01118.html#ad0d5f6fc4c5a5d64f11efd2e11ecaaa4', 1, 'tds_login']]],\n ['bulk_5fquery_28', ['bulk_query', ['../a01210.html#ac6ed7b8d3a4bd98a03f8ddb43b2e66c2', 1, 'tds_socket']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_4.js", "source2": "./usr/share/doc/freetds-doc/reference/all_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n ['data_0', ['DATA', ['../a00554.html', 1, '']]],\n- ['data_2ec_1', ['data.c', ['../a00080.html', 1, '']]],\n+ ['data_2ec_1', ['data.c', ['../a00179.html', 1, '']]],\n ['data_5flen_2', ['data_len', ['../a01198.html#aa9a66245e3c629a07111067cd1fdd0d4', 1, 'tds_packet']]],\n ['database_3', ['database', ['../a01178.html#ad05b5a83816aee8ff9858ddb1eb172b8', 1, 'tds_env']]],\n ['date_4', ['date', ['../a01094.html#a4697c11cf7da815856eb96bae4d57bac', 1, 'TDS_DATETIMEALL::date'],\n ['../a01298.html#afa93266cde7ab536615bca3d904aabed', 1, 'DBDATETIMEALL::date']\n ]],\n ['datetime_20functions_5', ['Datetime functions', ['../a00532.html', 1, '']]],\n ['day_6', ['day', ['../a01098.html#a82d0cf263d8d4a3abcf84b9a146ddf83', 1, 'tdsdaterec']]],\n@@ -73,16 +73,16 @@\n ['../a00527.html#ga87b39d9863316b4ba85654b0885d53a0', 1, 'dbcmd(DBPROCESS *dbproc, const char cmdstring[]): dblib.c']\n ]],\n ['dbcmdrow_31', ['dbcmdrow', ['../a00533.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c'],\n ['../a00533.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbcol_32', ['DBCOL', ['../a01310.html', 1, '']]],\n ['dbcol2_33', ['DBCOL2', ['../a01314.html', 1, '']]],\n- ['dbcolinfo_34', ['dbcolinfo', ['../a00170.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'],\n- ['../a00479.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c']\n+ ['dbcolinfo_34', ['dbcolinfo', ['../a00080.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'],\n+ ['../a00491.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c']\n ]],\n ['dbcollen_35', ['dbcollen', ['../a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbcolname_36', ['dbcolname', ['../a00527.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n@@ -149,15 +149,15 @@\n ]],\n ['dbgetchar_60', ['dbgetchar', ['../a00527.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbprocess, int n): dblib.c'],\n ['../a00527.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbproc, int pos): dblib.c']\n ]],\n ['dbgetmaxprocs_61', ['dbgetmaxprocs', ['../a00527.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c'],\n ['../a00527.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c']\n ]],\n- ['dbgetnull_62', ['dbgetnull', ['../a00170.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]],\n+ ['dbgetnull_62', ['dbgetnull', ['../a00080.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]],\n ['dbgetpacket_63', ['dbgetpacket', ['../a00527.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c'],\n ['../a00527.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbgetrow_64', ['dbgetrow', ['../a00527.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c'],\n ['../a00527.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c']\n ]],\n ['dbgettime_65', ['dbgettime', ['../a00527.html#ga6ccffbb3f0cfb10883ad349f1e47c50e', 1, 'dbgettime(void): dblib.c'],\n@@ -183,19 +183,19 @@\n ]],\n ['dbisopt_72', ['dbisopt', ['../a00527.html#gac3eb8cb53f50998403ea9aebc6263df9', 1, 'dbisopt(DBPROCESS *dbproc, int option, const char param[]): dblib.c'],\n ['../a00527.html#gac3eb8cb53f50998403ea9aebc6263df9', 1, 'dbisopt(DBPROCESS *dbproc, int option, const char param[]): dblib.c']\n ]],\n ['dblastrow_73', ['dblastrow', ['../a00533.html#ga13ead146339b43b3a4d9049eb124ef4b', 1, 'dblastrow(DBPROCESS *dbproc): dblib.c'],\n ['../a00533.html#ga13ead146339b43b3a4d9049eb124ef4b', 1, 'dblastrow(DBPROCESS *dbproc): dblib.c']\n ]],\n- ['dblib_2ec_74', ['dblib.c', ['../a00170.html', 1, '']]],\n+ ['dblib_2ec_74', ['dblib.c', ['../a00080.html', 1, '']]],\n ['dblib_5fbuffer_5frow_75', ['dblib_buffer_row', ['../a00590.html', 1, '']]],\n ['dblib_5fcontext_76', ['dblib_context', ['../a00594.html', 1, '']]],\n ['dblib_5ferror_5fmessage_77', ['DBLIB_ERROR_MESSAGE', ['../a00533.html#ga8f2b5c6bcfed3eb54e97b42a6f8930f8', 1, 'dblib.c']]],\n- ['dblibcontext_78', ['DBLIBCONTEXT', ['../a00170.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]],\n+ ['dblibcontext_78', ['DBLIBCONTEXT', ['../a00080.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]],\n ['dblogin_79', ['dblogin', ['../a00527.html#ga0c66b475d359cb3e69cdf4b163a07eeb', 1, 'dblogin(void): dblib.c'],\n ['../a00527.html#ga0c66b475d359cb3e69cdf4b163a07eeb', 1, 'dblogin(void): dblib.c']\n ]],\n ['dbloginfree_80', ['dbloginfree', ['../a00527.html#gac1bdb1766b791153f37dceae8ff64ad6', 1, 'dbloginfree(LOGINREC *login): dblib.c'],\n ['../a00527.html#gac1bdb1766b791153f37dceae8ff64ad6', 1, 'dbloginfree(LOGINREC *login): dblib.c']\n ]],\n ['dbmny4add_81', ['dbmny4add', ['../a00531.html#ga0a384938a6586b7411fc42420ffad6ed', 1, 'dbmny4add(DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum): dblib.c'],\n@@ -269,20 +269,20 @@\n ['dbnumcompute_105', ['dbnumcompute', ['../a00527.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbprocess): dblib.c'],\n ['../a00527.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbnumeric_106', ['DBNUMERIC', ['../a01278.html', 1, '']]],\n ['dbnumrets_107', ['dbnumrets', ['../a00528.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c'],\n ['../a00528.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c']\n ]],\n- ['dbopen_108', ['dbopen', ['../a00479.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]],\n+ ['dbopen_108', ['dbopen', ['../a00491.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]],\n ['dboption_109', ['dboption', ['../a00910.html', 1, '']]],\n ['dbperror_110', ['dbperror', ['../a00533.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c'],\n ['../a00533.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c']\n ]],\n- ['dbpivot_111', ['dbpivot', ['../a00479.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]],\n+ ['dbpivot_111', ['dbpivot', ['../a00491.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]],\n ['dbprcollen_112', ['dbprcollen', ['../a00527.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbprhead_113', ['dbprhead', ['../a00527.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c'],\n ['../a00527.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbproc_5frowbuf_114', ['DBPROC_ROWBUF', ['../a00890.html', 1, '']]],\n@@ -420,15 +420,15 @@\n ]],\n ['dbtablecolinfo_161', ['dbtablecolinfo', ['../a00527.html#ga9804fc70ae6ed35c92cd75d410dad570', 1, 'dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol): dblib.c'],\n ['../a00527.html#ga9804fc70ae6ed35c92cd75d410dad570', 1, 'dbtablecolinfo(DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol): dblib.c']\n ]],\n ['dbtds_162', ['dbtds', ['../a00533.html#ga8d765d810a40dfa01b39995a8e7406f0', 1, 'dbtds(DBPROCESS *dbproc): dblib.c'],\n ['../a00533.html#ga8d765d810a40dfa01b39995a8e7406f0', 1, 'dbtds(DBPROCESS *dbprocess): dblib.c']\n ]],\n- ['dbtds_5funknown_163', ['DBTDS_UNKNOWN', ['../a00479.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]],\n+ ['dbtds_5funknown_163', ['DBTDS_UNKNOWN', ['../a00491.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]],\n ['dbtxptr_164', ['dbtxptr', ['../a00527.html#gadbda59e71ba33aae755c41c14c988976', 1, 'dbtxptr(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#gadbda59e71ba33aae755c41c14c988976', 1, 'dbtxptr(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbtxtimestamp_165', ['dbtxtimestamp', ['../a00527.html#ga24edbab5017b2a14c46b2cea8cc015d4', 1, 'dbtxtimestamp(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga24edbab5017b2a14c46b2cea8cc015d4', 1, 'dbtxtimestamp(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbtypeinfo_166', ['dbtypeinfo', ['../a01302.html', 1, '']]],\n@@ -439,15 +439,15 @@\n ['dbvarychar_169', ['DBVARYCHAR', ['../a01270.html', 1, '']]],\n ['dbvarylen_170', ['dbvarylen', ['../a00527.html#ga57c856964a9a0b4cc43f5192647c51e7', 1, 'dbvarylen(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga57c856964a9a0b4cc43f5192647c51e7', 1, 'dbvarylen(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbversion_171', ['dbversion', ['../a00527.html#ga876d4d179520f98629059d23a806397f', 1, 'dbversion(): dblib.c'],\n ['../a00527.html#ga876d4d179520f98629059d23a806397f', 1, 'dbversion(void): dblib.c']\n ]],\n- ['dbversion_5funknown_172', ['DBVERSION_UNKNOWN', ['../a00479.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]],\n+ ['dbversion_5funknown_172', ['DBVERSION_UNKNOWN', ['../a00491.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]],\n ['dbwillconvert_173', ['dbwillconvert', ['../a00527.html#gaaf8349999c16b3c36caf5947747a2915', 1, 'dbwillconvert(int srctype, int desttype): dblib.c'],\n ['../a00527.html#gaaf8349999c16b3c36caf5947747a2915', 1, 'dbwillconvert(int srctype, int desttype): dblib.c']\n ]],\n ['dbwritetext_174', ['dbwritetext', ['../a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c', 1, 'dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text): dblib.c'],\n ['../a00527.html#ga548153eb2eae76c48aa9d4b72258dc1c', 1, 'dbwritetext(DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text): dblib.c']\n ]],\n ['decimicrosecond_175', ['decimicrosecond', ['../a01098.html#a838e73fd12eec9e3b5368316198f4762', 1, 'tdsdaterec']]],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_8.js", "source2": "./usr/share/doc/freetds-doc/reference/all_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -9,9 +9,9 @@\n ['in_5flen_5', ['in_len', ['../a01210.html#a0b6e65b9d00b3a4efbf78b2d866cca20', 1, 'tds_socket']]],\n ['in_5fpos_6', ['in_pos', ['../a01210.html#a9d1b4fc8e1e801fdc703ee7bb68d9838', 1, 'tds_socket']]],\n ['in_5frow_7', ['in_row', ['../a01210.html#ab6a91be7f3b9966216e621c60e8151f2', 1, 'tds_socket']]],\n ['internal_20bcp_20functions_8', ['Internal bcp functions', ['../a00530.html', 1, '']]],\n ['internals_9', ['Internals', ['../a00533.html', 1, '']]],\n ['introduction_10', ['Introduction', ['../a01331.html#intro', 1, '']]],\n ['ip_5faddrs_11', ['ip_addrs', ['../a01118.html#a6e04f60eb1fae0e632ab6cddbb804a55', 1, 'tds_login']]],\n- ['is_5fdatetime_5ftype_12', ['is_datetime_type', ['../a00368.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]]\n+ ['is_5fdatetime_5ftype_12', ['is_datetime_type', ['../a00425.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/all_e.js", "source2": "./usr/share/doc/freetds-doc/reference/all_e.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -12,15 +12,15 @@\n ['pd_8', ['pd', ['../a00582.html', 1, '']]],\n ['pending_5fclose_9', ['pending_close', ['../a01206.html#a824fd854618d7d2005f2bec452247be7', 1, 'tds_connection']]],\n ['pivot_5ft_10', ['pivot_t', ['../a00570.html', 1, '_options::pivot_t'],\n ['../a00618.html', 1, 'pivot_t']\n ]],\n ['pkt_11', ['pkt', ['../a01218.html#af900a7df4b6adae34d37233c3fb4cc99', 1, 'tds_freeze']]],\n ['pkt_5fpos_12', ['pkt_pos', ['../a01218.html#a99de10b997fb8a417d1ba7123957a720', 1, 'tds_freeze']]],\n- ['poll_2eh_13', ['poll.h', ['../a00374.html', 1, '']]],\n+ ['poll_2eh_13', ['poll.h', ['../a00395.html', 1, '']]],\n ['pollfd_14', ['pollfd', ['../a01058.html', 1, '']]],\n ['port_15', ['port', ['../a01118.html#aec3fe0f3f17448018ae5c92cff3abb6d', 1, 'tds_login']]],\n ['prepared_5fpos_16', ['prepared_pos', ['../a01006.html#a45c0b5a3624186c84441d2e0f8a59c64', 1, '_hstmt']]],\n ['prev_17', ['prev', ['../a01006.html#ad36ac281bcfcc5a6b6af0c1428b41d5f', 1, '_hstmt']]],\n ['primary_20functions_18', ['Primary functions', ['../a00527.html', 1, '']]],\n ['procedure_20functions_19', ['Remote Procedure functions', ['../a00528.html', 1, '']]],\n ['processing_20', ['Results processing', ['../a00544.html', 1, '']]],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/defines_0.js", "source2": "./usr/share/doc/freetds-doc/reference/defines_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n- ['dbtds_5funknown_0', ['DBTDS_UNKNOWN', ['../a00479.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]],\n- ['dbversion_5funknown_1', ['DBVERSION_UNKNOWN', ['../a00479.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]]\n+ ['dbtds_5funknown_0', ['DBTDS_UNKNOWN', ['../a00491.html#a4e19c79341755a7c6666197d381e1ac6', 1, 'sybdb.h']]],\n+ ['dbversion_5funknown_1', ['DBVERSION_UNKNOWN', ['../a00491.html#adbc038c5d57c0ab4c1c9e081a664dc0f', 1, 'sybdb.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/defines_1.js", "source2": "./usr/share/doc/freetds-doc/reference/defines_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n- ['is_5fdatetime_5ftype_0', ['is_datetime_type', ['../a00368.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]]\n+ ['is_5fdatetime_5ftype_0', ['is_datetime_type', ['../a00425.html#a4a70a4d36139165f8be99ea6fffb57ce', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/defines_2.js", "source2": "./usr/share/doc/freetds-doc/reference/defines_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,7 +1,7 @@\n var searchData = [\n- ['tds_5fis_5fmssql_0', ['TDS_IS_MSSQL', ['../a00368.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]],\n- ['tds_5fis_5fsybase_1', ['TDS_IS_SYBASE', ['../a00368.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]],\n- ['tds_5fms_5fver_2', ['TDS_MS_VER', ['../a00368.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]],\n- ['tds_5fput_5ftinyint_3', ['tds_put_tinyint', ['../a00368.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]],\n- ['tds_5fsyb_5fver_4', ['TDS_SYB_VER', ['../a00368.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]]\n+ ['tds_5fis_5fmssql_0', ['TDS_IS_MSSQL', ['../a00425.html#a07e9371c3e72b9e319f4c14e6fc2c20f', 1, 'tds.h']]],\n+ ['tds_5fis_5fsybase_1', ['TDS_IS_SYBASE', ['../a00425.html#a4840433488d0c66601ff4002a54b41d7', 1, 'tds.h']]],\n+ ['tds_5fms_5fver_2', ['TDS_MS_VER', ['../a00425.html#a1f5fb9d2184949ed566c8ce308a4e91e', 1, 'tds.h']]],\n+ ['tds_5fput_5ftinyint_3', ['tds_put_tinyint', ['../a00425.html#adfc186758f4c1856c01746b5436aff74', 1, 'tds.h']]],\n+ ['tds_5fsyb_5fver_4', ['TDS_SYB_VER', ['../a00425.html#aca53a637849948c4b7a07f69e40c685c', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000000_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000000_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n
      \n
      \n-

      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
      \n+

      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
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000001_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000001_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n
      \n
      \n-

      ctlib → include Relation

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

      ctlib → include Relation

      File in src/ctlibIncludes file in include
      ctutil.cfreetds / tds.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000002_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000002_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      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
      \n+

      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
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000003_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000003_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      fisql → include Relation

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

      fisql → include Relation

      File in src/apps/fisqlIncludes file in include
      edit.csybdb.h
      fisql.csybdb.h
      handlers.csybdb.h
      interrupt.csybdb.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000004_000009.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000004_000009.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      freetds → replacements Relation

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

      freetds → replacements Relation

      File in include/freetdsIncludes file in include/freetds/replacements
      replacements.hpoll.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000006_000004.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000006_000004.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      include → freetds Relation

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

      include → freetds Relation

      File in includeIncludes file in include/freetds
      ctlib.htds.h
      freetds / replacements.hreplacements / poll.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000007_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000007_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      odbc → include Relation

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

      odbc → include Relation

      File in src/odbcIncludes file in include
      bcp.cfreetds / tds.h
      winlogin.cfreetds / tds.h
      winsetup.cfreetds / tds.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000008_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000008_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      pool → include Relation

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

      pool → include Relation

      File in src/poolIncludes file in include
      pool.hfreetds / tds.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000010_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000010_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      replacements → include Relation

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

      replacements → include Relation

      File in src/replacementsIncludes file in include
      iconv.cfreetds / tds.h
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000011_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000011_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      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
      \n+

      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
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_000013_000006.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_000013_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
      \n \n
      \n \n
      \n-

      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
      \n+

      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
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_0da4150d9fb2a5fe66d7630d7a98e2a8.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_0da4150d9fb2a5fe66d7630d7a98e2a8.html", "unified_diff": "@@ -80,29 +80,29 @@\n Directory dependency graph for utils:\n
      \n
      \n
      \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

      \n 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
       
       string.h
       string.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_53adf0b982dc8545998aae3f283a5a58.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_53adf0b982dc8545998aae3f283a5a58.html", "unified_diff": "@@ -85,15 +85,15 @@\n

      \n Directories

      \n  fisql\n  \n \n \n-\n+\n \n

      \n Files

       freebcp.h
       freebcp.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_807893467092ee3c78fdb68ff7be3fa1.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_807893467092ee3c78fdb68ff7be3fa1.html", "unified_diff": "@@ -80,21 +80,21 @@\n Directory dependency graph for odbc:\n
      \n
      \n
      \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

      \n Files

       error_export.h
       error_export.h
       
       odbc_export.h
       odbc_export.h
       
       resource.h
       resource.h
       
       sqlwparams.h
       sqlwparams.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_88c98ec7a422f3972a0293d4e4a2e62e.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_88c98ec7a422f3972a0293d4e4a2e62e.html", "unified_diff": "@@ -75,17 +75,17 @@\n
      \n
      vms Directory Reference
      \n
      \n
      \n \n \n-\n+\n \n-\n+\n \n

      \n Files

       stdint.h
       stdint.h
       
       vargdefs.h
       vargdefs.h
       
      \n
      \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_a40d3d1dfafadc5a5d3063931c3db36e.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_a40d3d1dfafadc5a5d3063931c3db36e.html", "unified_diff": "@@ -80,21 +80,21 @@\n Directory dependency graph for dblib:\n
      \n
      \n
      \n \n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n

      \n Files

       bcp.c
       Implementation of db-lib bulk copy functions.
       bcp.c
       Implementation of db-lib bulk copy functions.
       
       buffering.h
       buffering.h
       
       dblib.c
       Main implementation file for db-lib.
       dblib.c
       Main implementation file for db-lib.
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_b663d705931e630ae54c555929c6aaad.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_b663d705931e630ae54c555929c6aaad.html", "unified_diff": "@@ -80,18 +80,18 @@\n Directory dependency graph for replacements:\n
      \n
      \n
      \n \n \n-\n-\n+\n+\n \n-\n+\n \n

      \n Files

       poll.h
       Provide poll call where missing.
       poll.h
       Provide poll call where missing.
       
       readpassphrase.h
       readpassphrase.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_bee58700ce781bb55a015c4ff9b057cf.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_bee58700ce781bb55a015c4ff9b057cf.html", "unified_diff": "@@ -83,15 +83,15 @@\n \n \n \n \n \n \n-\n+\n \n

      \n Files

       iconv.c
       This file implements a very simple iconv.
       
       iconv_charsets.h
       iconv_charsets.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_cbfc6763032c97ce96998fb3f3059024.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_cbfc6763032c97ce96998fb3f3059024.html", "unified_diff": "@@ -80,21 +80,21 @@\n Directory dependency graph for fisql:\n
      \n
      \n
      \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

      \n Files

       edit.h
       edit.h
       
       handlers.h
       handlers.h
       
       interrupt.h
       interrupt.h
       
       terminal.h
       terminal.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_d44c64559bbebec7f509842c48db8b23.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_d44c64559bbebec7f509842c48db8b23.html", "unified_diff": "@@ -85,42 +85,42 @@\n

      \n Directories

      \n  freetds\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

      \n Files

       bkpublic.h
       bkpublic.h
       
       config.h
       config.h
       
       cspublic.h
       cspublic.h
       
       cstypes.h
       cstypes.h
       
       ctlib.h
       ctlib.h
       
       ctpublic.h
       ctpublic.h
       
       dblib.h
       
       odbcss.h
       odbcss.h
       
       sqldb.h
       sqldb.h
       
       sqlfront.h
       sqlfront.h
       
       sybdb.h
       Primary include file for db-lib applications.
       sybdb.h
       Primary include file for db-lib applications.
       
       syberror.h
       syberror.h
       
       sybfront.h
       sybfront.h
       
       tds_sysdep_public.h
       tds_sysdep_public.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_e2de76ba30642a92752881ffd21fbc7e.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_e2de76ba30642a92752881ffd21fbc7e.html", "unified_diff": "@@ -80,15 +80,15 @@\n Directory dependency graph for pool:\n
      \n
      \n
      \n \n \n-\n+\n \n

      \n Files

       pool.h
       pool.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_f46f2c05841018b6ef8dbd3316ddb41a.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_f46f2c05841018b6ef8dbd3316ddb41a.html", "unified_diff": "@@ -89,68 +89,68 @@\n  utils\n  \n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

      \n Files

       alloca.h
       
       bool.h
       bool.h
       
       bytes.h
       bytes.h
       
       charset_lookup.h
       charset_lookup.h
       
       checks.h
       checks.h
       
       configs.h
       configs.h
       
       convert.h
       convert.h
       
       data.h
       data.h
       
       encodings.h
       encodings.h
       
       enum_cap.h
       enum_cap.h
       
       iconv.h
       iconv.h
       
       macros.h
       macros.h
       
       odbc.h
       odbc.h
       
       popvis.h
       popvis.h
       
       proto.h
       proto.h
       
       pushvis.h
       pushvis.h
       
       replacements.h
       replacements.h
       
       server.h
       server.h
       
       stream.h
       stream.h
       
       sysconfdir.h
       
       sysdep_private.h
       sysdep_private.h
       
       tds.h
       Main include file for libtds.
       tds.h
       Main include file for libtds.
       
       thread.h
       thread.h
       
       time.h
       time.h
       
       tls.h
       tls.h
       
       utils.h
       utils.h
       
       version.h
       version.h
       
       windows.h
       windows.h
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/dir_f7308370ebb9c2ff76f3bdfe0748aabf.html", "source2": "./usr/share/doc/freetds-doc/reference/dir_f7308370ebb9c2ff76f3bdfe0748aabf.html", "unified_diff": "@@ -80,41 +80,41 @@\n Directory dependency graph for tds:\n
      \n
      \n
      \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n \n \n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n

      \n Files

       bulk.c
       Handle bulk copy.
       bulk.c
       Handle bulk copy.
       
       data.c
       Handle different data handling from network.
       data.c
       Handle different data handling from network.
       
       iconv.c
       Handle character conversions to/from server.
       
       num_limits.h
       num_limits.h
       
       read.c
       Grab data from TDS packets.
       read.c
       Grab data from TDS packets.
       
       sec_negotiate_gnutls.h
       sec_negotiate_gnutls.h
       
       sec_negotiate_openssl.h
       sec_negotiate_openssl.h
       
       stream.c
       Handle stream of data.
       stream.c
       Handle stream of data.
       
       tds_types.h
       tds_types.h
       
       tds_willconvert.h
       tds_willconvert.h
       
       token.c
       Contains all routines to get replies from server.
       token.c
       Contains all routines to get replies from server.
       
      \n \n \n
      \n Generated by \"doxygen\"/ 1.9.8\n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/enums_0.js", "source2": "./usr/share/doc/freetds-doc/reference/enums_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,5 @@\n var searchData = [\n- ['tds_5fbcp_5fdirections_0', ['tds_bcp_directions', ['../a00368.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]],\n- ['tds_5fend_1', ['tds_end', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519c', 1, 'tds.h']]],\n- ['tds_5fstates_2', ['tds_states', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]]\n+ ['tds_5fbcp_5fdirections_0', ['tds_bcp_directions', ['../a00425.html#ad5c5c8cb776334af4b0ebf7a0d740cb2', 1, 'tds.h']]],\n+ ['tds_5fend_1', ['tds_end', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519c', 1, 'tds.h']]],\n+ ['tds_5fstates_2', ['tds_states', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/enumvalues_0.js", "source2": "./usr/share/doc/freetds-doc/reference/enumvalues_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,16 +1,16 @@\n var searchData = [\n- ['tds_5fdead_0', ['TDS_DEAD', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]],\n- ['tds_5fdone_5fcancelled_1', ['TDS_DONE_CANCELLED', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86', 1, 'tds.h']]],\n- ['tds_5fdone_5fcount_2', ['TDS_DONE_COUNT', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519caf17d0c6591e318014c806a10c2f0270b', 1, 'tds.h']]],\n- ['tds_5fdone_5ferror_3', ['TDS_DONE_ERROR', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d', 1, 'tds.h']]],\n- ['tds_5fdone_5ffinal_4', ['TDS_DONE_FINAL', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca7ed9046db24ad78bb94c2b12d6e11f46', 1, 'tds.h']]],\n- ['tds_5fdone_5finxact_5', ['TDS_DONE_INXACT', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519cac79a30d1a0bac125e77d87f5d87bc2b2', 1, 'tds.h']]],\n- ['tds_5fdone_5fmore_5fresults_6', ['TDS_DONE_MORE_RESULTS', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca688b8bf555ce6ae72f3e047177bfc966', 1, 'tds.h']]],\n- ['tds_5fdone_5fproc_7', ['TDS_DONE_PROC', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519cae170f368306f421d507c6f08e4d48d9a', 1, 'tds.h']]],\n- ['tds_5fdone_5fsrverror_8', ['TDS_DONE_SRVERROR', ['../a00368.html#aa8d8044be84bcde003f28ec25a77519ca7bfe89d6f8fc309eae412ad0a503e34c', 1, 'tds.h']]],\n- ['tds_5fidle_9', ['TDS_IDLE', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]],\n- ['tds_5fpending_10', ['TDS_PENDING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]],\n- ['tds_5freading_11', ['TDS_READING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]],\n- ['tds_5fsending_12', ['TDS_SENDING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]],\n- ['tds_5fwriting_13', ['TDS_WRITING', ['../a00368.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]]\n+ ['tds_5fdead_0', ['TDS_DEAD', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33af087b64970a1fb35bbcf1bc6ea7a643d', 1, 'tds.h']]],\n+ ['tds_5fdone_5fcancelled_1', ['TDS_DONE_CANCELLED', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86', 1, 'tds.h']]],\n+ ['tds_5fdone_5fcount_2', ['TDS_DONE_COUNT', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519caf17d0c6591e318014c806a10c2f0270b', 1, 'tds.h']]],\n+ ['tds_5fdone_5ferror_3', ['TDS_DONE_ERROR', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d', 1, 'tds.h']]],\n+ ['tds_5fdone_5ffinal_4', ['TDS_DONE_FINAL', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca7ed9046db24ad78bb94c2b12d6e11f46', 1, 'tds.h']]],\n+ ['tds_5fdone_5finxact_5', ['TDS_DONE_INXACT', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519cac79a30d1a0bac125e77d87f5d87bc2b2', 1, 'tds.h']]],\n+ ['tds_5fdone_5fmore_5fresults_6', ['TDS_DONE_MORE_RESULTS', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca688b8bf555ce6ae72f3e047177bfc966', 1, 'tds.h']]],\n+ ['tds_5fdone_5fproc_7', ['TDS_DONE_PROC', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519cae170f368306f421d507c6f08e4d48d9a', 1, 'tds.h']]],\n+ ['tds_5fdone_5fsrverror_8', ['TDS_DONE_SRVERROR', ['../a00425.html#aa8d8044be84bcde003f28ec25a77519ca7bfe89d6f8fc309eae412ad0a503e34c', 1, 'tds.h']]],\n+ ['tds_5fidle_9', ['TDS_IDLE', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33ad1586abc1f75b7f3d640b994afe310e9', 1, 'tds.h']]],\n+ ['tds_5fpending_10', ['TDS_PENDING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8', 1, 'tds.h']]],\n+ ['tds_5freading_11', ['TDS_READING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a36ddbc8f326d6b297009a8fafd958529', 1, 'tds.h']]],\n+ ['tds_5fsending_12', ['TDS_SENDING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a2bad5be30bd85edc9495dae3d199d2c1', 1, 'tds.h']]],\n+ ['tds_5fwriting_13', ['TDS_WRITING', ['../a00425.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files.html", "source2": "./usr/share/doc/freetds-doc/reference/files.html", "unified_diff": "@@ -73,104 +73,104 @@\n \n
      \n
      Here is a list of all documented files with brief descriptions:
      \n
      [detail level 1234]
      \n \n \n \n-\n-\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n \n \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n \n-\n-\n-\n+\n+\n+\n \n-\n-\n-\n-\n+\n+\n+\n+\n \n-\n+\n \n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n+\n+\n \n \n \n \n
        include
        freetds
        replacements
       poll.hProvide poll call where missing
       readpassphrase.h
       poll.hProvide poll call where missing
       readpassphrase.h
        utils
       bjoern-utf8.h
       des.h
       dlist.h
       dlist.tmpl.h
       hmac_md5.h
       md4.h
       md5.h
       string.h
       bjoern-utf8.h
       des.h
       dlist.h
       dlist.tmpl.h
       hmac_md5.h
       md4.h
       md5.h
       string.h
       alloca.h
       bool.h
       bytes.h
       charset_lookup.h
       checks.h
       configs.h
       convert.h
       data.h
       encodings.h
       enum_cap.h
       iconv.h
       macros.h
       odbc.h
       popvis.h
       proto.h
       pushvis.h
       replacements.h
       server.h
       stream.h
       bool.h
       bytes.h
       charset_lookup.h
       checks.h
       configs.h
       convert.h
       data.h
       encodings.h
       enum_cap.h
       iconv.h
       macros.h
       odbc.h
       popvis.h
       proto.h
       pushvis.h
       replacements.h
       server.h
       stream.h
       sysconfdir.h
       sysdep_private.h
       tds.hMain include file for libtds
       thread.h
       time.h
       tls.h
       utils.h
       version.h
       windows.h
       bkpublic.h
       config.h
       cspublic.h
       cstypes.h
       ctlib.h
       ctpublic.h
       sysdep_private.h
       tds.hMain include file for libtds
       thread.h
       time.h
       tls.h
       utils.h
       version.h
       windows.h
       bkpublic.h
       config.h
       cspublic.h
       cstypes.h
       ctlib.h
       ctpublic.h
       dblib.h
       odbcss.h
       sqldb.h
       sqlfront.h
       sybdb.hPrimary include file for db-lib applications
       syberror.h
       sybfront.h
       tds_sysdep_public.h
       odbcss.h
       sqldb.h
       sqlfront.h
       sybdb.hPrimary include file for db-lib applications
       syberror.h
       sybfront.h
       tds_sysdep_public.h
        src
        apps
        fisql
       edit.h
       handlers.h
       interrupt.h
       terminal.h
       freebcp.h
       edit.h
       handlers.h
       interrupt.h
       terminal.h
       freebcp.h
        dblib
       bcp.cImplementation of db-lib bulk copy functions
       buffering.h
       dblib.cMain implementation file for db-lib
       bcp.cImplementation of db-lib bulk copy functions
       buffering.h
       dblib.cMain implementation file for db-lib
        odbc
       error_export.h
       odbc_export.h
       resource.h
       sqlwparams.h
       error_export.h
       odbc_export.h
       resource.h
       sqlwparams.h
        pool
       pool.h
       pool.h
        replacements
       iconv.cThis file implements a very simple iconv
       iconv_charsets.h
       iconv_charsets.h
        tds
       bulk.cHandle bulk copy
       data.cHandle different data handling from network
       bulk.cHandle bulk copy
       data.cHandle different data handling from network
       iconv.cHandle character conversions to/from server
       num_limits.h
       read.cGrab data from TDS packets
       sec_negotiate_gnutls.h
       sec_negotiate_openssl.h
       stream.cHandle stream of data
       tds_types.h
       tds_willconvert.h
       token.cContains all routines to get replies from server
       num_limits.h
       read.cGrab data from TDS packets
       sec_negotiate_gnutls.h
       sec_negotiate_openssl.h
       stream.cHandle stream of data
       tds_types.h
       tds_willconvert.h
       token.cContains all routines to get replies from server
        vms
       stdint.h
       vargdefs.h
       stdint.h
       vargdefs.h
        win32
        freetds
       sysconfdir.h
       initnet.c
      \n
      \n
      \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/files_0.js", "source2": "./usr/share/doc/freetds-doc/reference/files_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n- ['bcp_2ec_0', ['bcp.c', ['../a01353.html', 1, '']]],\n- ['bulk_2ec_1', ['bulk.c', ['../a00092.html', 1, '']]]\n+ ['bcp_2ec_0', ['bcp.c', ['../a01344.html', 1, '']]],\n+ ['bulk_2ec_1', ['bulk.c', ['../a00176.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files_1.js", "source2": "./usr/share/doc/freetds-doc/reference/files_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n- ['data_2ec_0', ['data.c', ['../a00080.html', 1, '']]],\n- ['dblib_2ec_1', ['dblib.c', ['../a00170.html', 1, '']]]\n+ ['data_2ec_0', ['data.c', ['../a00179.html', 1, '']]],\n+ ['dblib_2ec_1', ['dblib.c', ['../a00080.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files_3.js", "source2": "./usr/share/doc/freetds-doc/reference/files_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n- ['poll_2eh_0', ['poll.h', ['../a00374.html', 1, '']]]\n+ ['poll_2eh_0', ['poll.h', ['../a00395.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files_4.js", "source2": "./usr/share/doc/freetds-doc/reference/files_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n- ['read_2ec_0', ['read.c', ['../a00017.html', 1, '']]]\n+ ['read_2ec_0', ['read.c', ['../a00158.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files_5.js", "source2": "./usr/share/doc/freetds-doc/reference/files_5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n- ['stream_2ec_0', ['stream.c', ['../a00026.html', 1, '']]],\n- ['sybdb_2eh_1', ['sybdb.h', ['../a00479.html', 1, '']]]\n+ ['stream_2ec_0', ['stream.c', ['../a00236.html', 1, '']]],\n+ ['sybdb_2eh_1', ['sybdb.h', ['../a00491.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/files_6.js", "source2": "./usr/share/doc/freetds-doc/reference/files_6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n- ['tds_2eh_0', ['tds.h', ['../a00368.html', 1, '']]],\n- ['token_2ec_1', ['token.c', ['../a00089.html', 1, '']]]\n+ ['tds_2eh_0', ['tds.h', ['../a00425.html', 1, '']]],\n+ ['token_2ec_1', ['token.c', ['../a00230.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/functions_0.js", "source2": "./usr/share/doc/freetds-doc/reference/functions_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,18 +1,18 @@\n var searchData = [\n- ['_5fbcp_5fconvert_5fin_0', ['_bcp_convert_in', ['../a01353.html#a4e7740b6f755d7d3f2502a47b7d71a85', 1, 'bcp.c']]],\n- ['_5fbcp_5fconvert_5fout_1', ['_bcp_convert_out', ['../a01353.html#a230fa5b56ae4e3509a69bd266495732b', 1, 'bcp.c']]],\n+ ['_5fbcp_5fconvert_5fin_0', ['_bcp_convert_in', ['../a01344.html#a4e7740b6f755d7d3f2502a47b7d71a85', 1, 'bcp.c']]],\n+ ['_5fbcp_5fconvert_5fout_1', ['_bcp_convert_out', ['../a01344.html#a230fa5b56ae4e3509a69bd266495732b', 1, 'bcp.c']]],\n ['_5fbcp_5fexec_5fin_2', ['_bcp_exec_in', ['../a00530.html#ga7370f1223f13510d6b33e98f2de09fb5', 1, 'bcp.c']]],\n ['_5fbcp_5fexec_5fout_3', ['_bcp_exec_out', ['../a00530.html#gae67546338cb9542a4902aa914f57f314', 1, 'bcp.c']]],\n ['_5fbcp_5ffgets_4', ['_bcp_fgets', ['../a00530.html#gab672799007e720bf918caa1b33c989ea', 1, 'bcp.c']]],\n ['_5fbcp_5ffree_5fcolumns_5', ['_bcp_free_columns', ['../a00530.html#gacf69ac4cbe8e3c3e6ea665e31e5e85b8', 1, 'bcp.c']]],\n ['_5fbcp_5ffree_5fstorage_6', ['_bcp_free_storage', ['../a00530.html#gaa134c1c3ccc4326e693adb8357272f1d', 1, 'bcp.c']]],\n ['_5fbcp_5fget_5fcol_5fdata_7', ['_bcp_get_col_data', ['../a00530.html#ga0f8def4cad04c5c1e27c2b653d482dd8', 1, 'bcp.c']]],\n ['_5fbcp_5fget_5fterm_5fvar_8', ['_bcp_get_term_var', ['../a00530.html#ga4f936fa1cb8e4373bf7b7f8a6ab96bc7', 1, 'bcp.c']]],\n- ['_5fbcp_5fno_5fget_5fcol_5fdata_9', ['_bcp_no_get_col_data', ['../a01353.html#ad53f508d8f2177a898f8022736834afd', 1, 'bcp.c']]],\n+ ['_5fbcp_5fno_5fget_5fcol_5fdata_9', ['_bcp_no_get_col_data', ['../a01344.html#ad53f508d8f2177a898f8022736834afd', 1, 'bcp.c']]],\n ['_5fbcp_5fread_5fhostfile_10', ['_bcp_read_hostfile', ['../a00530.html#ga1b57d952a9d72f375c3296124affa908', 1, 'bcp.c']]],\n ['_5fbcp_5freadfmt_5fcolinfo_11', ['_bcp_readfmt_colinfo', ['../a00530.html#gafc23d62bc86b38fb757e3ac4aadca0a4', 1, 'bcp.c']]],\n ['_5fdbcoldata_12', ['_dbcoldata', ['../a00533.html#ga3c6f474c0662158f3100fe464bf077d9', 1, 'dblib.c']]],\n ['_5fdblib_5fcheck_5fand_5fhandle_5finterrupt_13', ['_dblib_check_and_handle_interrupt', ['../a00533.html#gadf15185b0d417edc0bb8a6a4f0bae727', 1, '_dblib_check_and_handle_interrupt(void *vdbproc): dbutil.c'],\n ['../a00533.html#gadf15185b0d417edc0bb8a6a4f0bae727', 1, '_dblib_check_and_handle_interrupt(void *vdbproc): dbutil.c']\n ]],\n ['_5fdbresults_14', ['_dbresults', ['../a00527.html#gaf1879b85e8238c015b9648d077665285', 1, 'dblib.c']]]\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/functions_3.js", "source2": "./usr/share/doc/freetds-doc/reference/functions_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -58,16 +58,16 @@\n ]],\n ['dbcmd_19', ['dbcmd', ['../a00527.html#ga87b39d9863316b4ba85654b0885d53a0', 1, 'dbcmd(DBPROCESS *dbproc, const char cmdstring[]): dblib.c'],\n ['../a00527.html#ga87b39d9863316b4ba85654b0885d53a0', 1, 'dbcmd(DBPROCESS *dbproc, const char cmdstring[]): dblib.c']\n ]],\n ['dbcmdrow_20', ['dbcmdrow', ['../a00533.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c'],\n ['../a00533.html#ga196f6d67de47f34a32fcc2103ab0f416', 1, 'dbcmdrow(DBPROCESS *dbproc): dblib.c']\n ]],\n- ['dbcolinfo_21', ['dbcolinfo', ['../a00170.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'],\n- ['../a00479.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c']\n+ ['dbcolinfo_21', ['dbcolinfo', ['../a00080.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c'],\n+ ['../a00491.html#a9b73fd1afa2c3ccfca481635212d2e43', 1, 'dbcolinfo(DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol): dblib.c']\n ]],\n ['dbcollen_22', ['dbcollen', ['../a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga89fc5589b4bf41932324d2cfc6ad6433', 1, 'dbcollen(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbcolname_23', ['dbcolname', ['../a00527.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#ga3bcdc8f584537b8278483f2cee59f130', 1, 'dbcolname(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n@@ -131,15 +131,15 @@\n ]],\n ['dbgetchar_44', ['dbgetchar', ['../a00527.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbproc, int pos): dblib.c'],\n ['../a00527.html#ga8e3b1a5305a222b3c8ea7662e7685caf', 1, 'dbgetchar(DBPROCESS *dbprocess, int n): dblib.c']\n ]],\n ['dbgetmaxprocs_45', ['dbgetmaxprocs', ['../a00527.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c'],\n ['../a00527.html#gadb34c5c2aae50ac9f2a26d8984136997', 1, 'dbgetmaxprocs(void): dblib.c']\n ]],\n- ['dbgetnull_46', ['dbgetnull', ['../a00170.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]],\n+ ['dbgetnull_46', ['dbgetnull', ['../a00080.html#aea6a865806d454280126de940478c214', 1, 'dblib.c']]],\n ['dbgetpacket_47', ['dbgetpacket', ['../a00527.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c'],\n ['../a00527.html#gabaf9aa756f7cb8bbec80d1c7201c6238', 1, 'dbgetpacket(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbgetrow_48', ['dbgetrow', ['../a00527.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c'],\n ['../a00527.html#ga60fe544491c760f8bc6c37bc7f777d70', 1, 'dbgetrow(DBPROCESS *dbproc, DBINT row): dblib.c']\n ]],\n ['dbgettime_49', ['dbgettime', ['../a00527.html#ga6ccffbb3f0cfb10883ad349f1e47c50e', 1, 'dbgettime(void): dblib.c'],\n@@ -243,19 +243,19 @@\n ]],\n ['dbnumcompute_82', ['dbnumcompute', ['../a00527.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbproc): dblib.c'],\n ['../a00527.html#gac554d2cb2da0c9f9fd3d4867998edcc4', 1, 'dbnumcompute(DBPROCESS *dbprocess): dblib.c']\n ]],\n ['dbnumrets_83', ['dbnumrets', ['../a00528.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c'],\n ['../a00528.html#gaff09873008411a0573f6d1a9e6c7cf4b', 1, 'dbnumrets(DBPROCESS *dbproc): dblib.c']\n ]],\n- ['dbopen_84', ['dbopen', ['../a00479.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]],\n+ ['dbopen_84', ['dbopen', ['../a00491.html#af2b7a0ebad53fe7e4e0eda3bbdb89de3', 1, 'dbopen.c']]],\n ['dbperror_85', ['dbperror', ['../a00533.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c'],\n ['../a00533.html#ga302a4ce6559b81808e3be51615cd1b67', 1, 'dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...): dblib.c']\n ]],\n- ['dbpivot_86', ['dbpivot', ['../a00479.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]],\n+ ['dbpivot_86', ['dbpivot', ['../a00491.html#af8ada101cd189eff87b3533cbeaaa23b', 1, 'dbpivot.c']]],\n ['dbprcollen_87', ['dbprcollen', ['../a00527.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c'],\n ['../a00527.html#gac0cb0584f6500d61a2ac95a891da73eb', 1, 'dbprcollen(DBPROCESS *dbproc, int column): dblib.c']\n ]],\n ['dbprhead_88', ['dbprhead', ['../a00527.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c'],\n ['../a00527.html#ga9dfc2ee533e5e48a7aa8ca22f8d9ed79', 1, 'dbprhead(DBPROCESS *dbproc): dblib.c']\n ]],\n ['dbprrow_89', ['dbprrow', ['../a00527.html#gaa30be3414a97aac6139af2e928db91ca', 1, 'dbprrow(DBPROCESS *dbproc): dblib.c'],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/functions_8.js", "source2": "./usr/share/doc/freetds-doc/reference/functions_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,23 +1,23 @@\n var searchData = [\n ['tds4_5fsend_5femulated_5frpc_0', ['tds4_send_emulated_rpc', ['../a00542.html#ga2d0a06c1a30dd2470dc7a788de21b080', 1, 'query.c']]],\n- ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_1', ['tds5_bcp_add_fixed_columns', ['../a00092.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]],\n- ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_2', ['tds5_bcp_add_variable_columns', ['../a00092.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]],\n+ ['tds5_5fbcp_5fadd_5ffixed_5fcolumns_1', ['tds5_bcp_add_fixed_columns', ['../a00176.html#a91cf6a009e823417d6c8849256cb211c', 1, 'bulk.c']]],\n+ ['tds5_5fbcp_5fadd_5fvariable_5fcolumns_2', ['tds5_bcp_add_variable_columns', ['../a00176.html#a5c906a8b65694148ad530a22ce019f06', 1, 'bulk.c']]],\n ['tds5_5ffix_5fdot_5fquery_3', ['tds5_fix_dot_query', ['../a00542.html#ga8853354723094c8efcd87fabf675c64f', 1, 'query.c']]],\n ['tds5_5fprocess_5fdyn_5fresult2_4', ['tds5_process_dyn_result2', ['../a00544.html#gae688b515631141acfbc41bbb91c8b921', 1, 'token.c']]],\n ['tds5_5fprocess_5foptioncmd_5', ['tds5_process_optioncmd', ['../a00544.html#gaa6a7e5aeb10a1322911c47be9c43e2d2', 1, 'token.c']]],\n ['tds5_5fprocess_5fresult_6', ['tds5_process_result', ['../a00544.html#ga547b2f48659f77a69aa802d861ac827d', 1, 'token.c']]],\n ['tds5_5fprocess_5fresult2_7', ['tds5_process_result2', ['../a00544.html#gabe2bdd5a41ce067cb31aef18ff81cb1c', 1, 'token.c']]],\n ['tds5_5fput_5fparams_8', ['tds5_put_params', ['../a00542.html#ga4f1f0a4f77bc4ea1440dfdebc19a157c', 1, 'query.c']]],\n ['tds71_5fread_5ftable_5fnames_9', ['tds71_read_table_names', ['../a00544.html#ga7482b5730d880fcedbe9fcd609a550ce', 1, 'token.c']]],\n ['tds71_5fsubmit_5fprepexec_10', ['tds71_submit_prepexec', ['../a00542.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c'],\n ['../a00542.html#ga08877c101704bebe4fa57e0849dc272d', 1, 'tds71_submit_prepexec(TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params): query.c']\n ]],\n- ['tds7_5fbcp_5fsend_5fcolmetadata_11', ['tds7_bcp_send_colmetadata', ['../a00092.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]],\n- ['tds7_5fbuild_5fbulk_5finsert_5fstmt_12', ['tds7_build_bulk_insert_stmt', ['../a00092.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]],\n+ ['tds7_5fbcp_5fsend_5fcolmetadata_11', ['tds7_bcp_send_colmetadata', ['../a00176.html#a4daaa551e54dbd978650e2eef89e09ff', 1, 'bulk.c']]],\n+ ['tds7_5fbuild_5fbulk_5finsert_5fstmt_12', ['tds7_build_bulk_insert_stmt', ['../a00176.html#a3118c7232bc9c3e47f8ba872bb39e967', 1, 'bulk.c']]],\n ['tds7_5fget_5fdata_5finfo_13', ['tds7_get_data_info', ['../a00544.html#ga07cee55fd522cca16fb59b7a8f0b1376', 1, 'token.c']]],\n ['tds7_5fget_5finstance_5fport_14', ['tds7_get_instance_port', ['../a00543.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c'],\n ['../a00543.html#gac23c12ccb3e8599f10f305e993e216f6', 1, 'tds7_get_instance_port(struct addrinfo *addr, const char *instance): net.c']\n ]],\n ['tds7_5fget_5finstance_5fports_15', ['tds7_get_instance_ports', ['../a00543.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c'],\n ['../a00543.html#ga954dcc3b0332fa9448d9edf59c0fe439', 1, 'tds7_get_instance_ports(FILE *output, struct addrinfo *addr): net.c']\n ]],\n@@ -39,34 +39,34 @@\n ['../a00541.html#ga314c65c067570dc1ef3e58bbfc4eb763', 1, 'tds_alloc_param_result(TDSPARAMINFO *old_param): mem.c']\n ]],\n ['tds_5falloc_5frow_27', ['tds_alloc_row', ['../a00541.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c'],\n ['../a00541.html#ga1224fb9277112dc2ce12531d2b73b145', 1, 'tds_alloc_row(TDSRESULTINFO *res_info): mem.c']\n ]],\n ['tds_5fanswer_5fchallenge_28', ['tds_answer_challenge', ['../a00537.html#ga8adf4e719762fef6fdb091d15d4d5d7f', 1, 'challenge.c']]],\n ['tds_5fascii_5fto_5fucs2_29', ['tds_ascii_to_ucs2', ['../a00542.html#gad05fc65e1d505c68d14c82b99a00e4eb', 1, 'query.c']]],\n- ['tds_5fbcp_5fdone_30', ['tds_bcp_done', ['../a00092.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'],\n- ['../a00368.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c']\n+ ['tds_5fbcp_5fdone_30', ['tds_bcp_done', ['../a00176.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c'],\n+ ['../a00425.html#ade7df2db455b61edc83819ad60edb339', 1, 'tds_bcp_done(TDSSOCKET *tds, int *rows_copied): bulk.c']\n ]],\n- ['tds_5fbcp_5ffread_31', ['tds_bcp_fread', ['../a00092.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'],\n- ['../a00368.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']\n+ ['tds_5fbcp_5ffread_31', ['tds_bcp_fread', ['../a00176.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'],\n+ ['../a00425.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']\n ]],\n- ['tds_5fbcp_5finit_32', ['tds_bcp_init', ['../a00092.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5finit_32', ['tds_bcp_init', ['../a00176.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#ac6610c72bd31bad5378f760fa9b12d66', 1, 'tds_bcp_init(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5frow_5ffree_33', ['tds_bcp_row_free', ['../a00092.html#a7c4f2b050cd1a747604aa305d6877de7', 1, 'bulk.c']]],\n- ['tds_5fbcp_5fsend_5frecord_34', ['tds_bcp_send_record', ['../a00368.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'],\n- ['../a00092.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']\n+ ['tds_5fbcp_5frow_5ffree_33', ['tds_bcp_row_free', ['../a00176.html#a7c4f2b050cd1a747604aa305d6877de7', 1, 'bulk.c']]],\n+ ['tds_5fbcp_5fsend_5frecord_34', ['tds_bcp_send_record', ['../a00425.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'],\n+ ['../a00176.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']\n ]],\n- ['tds_5fbcp_5fstart_35', ['tds_bcp_start', ['../a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5fstart_35', ['tds_bcp_start', ['../a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#a8208eef2a3974ae1f0cf3c8c8ab011ce', 1, 'tds_bcp_start(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5fstart_5fcopy_5fin_36', ['tds_bcp_start_copy_in', ['../a00092.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n- ['../a00368.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n+ ['tds_5fbcp_5fstart_5fcopy_5fin_36', ['tds_bcp_start_copy_in', ['../a00176.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c'],\n+ ['../a00425.html#a5eec23828b0610c58de248c4edb53879', 1, 'tds_bcp_start_copy_in(TDSSOCKET *tds, TDSBCPINFO *bcpinfo): bulk.c']\n ]],\n- ['tds_5fbcp_5fstart_5finsert_5fstmt_37', ['tds_bcp_start_insert_stmt', ['../a00092.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]],\n+ ['tds_5fbcp_5fstart_5finsert_5fstmt_37', ['tds_bcp_start_insert_stmt', ['../a00176.html#ab4d7e5309152f54613d52c8469a07fd8', 1, 'bulk.c']]],\n ['tds_5fcanonical_5fcharset_38', ['tds_canonical_charset', ['../a00540.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c'],\n ['../a00540.html#gac01180352db7052e786463e3b07a8a9e', 1, 'tds_canonical_charset(const char *charset_name): iconv.c']\n ]],\n ['tds_5fcanonical_5fcharset_5fname_39', ['tds_canonical_charset_name', ['../a00540.html#ga22c61ca41f64c7fe368659ed1eebdb56', 1, 'tds_canonical_charset_name(const char *charset_name): iconv.c'],\n ['../a00540.html#ga22c61ca41f64c7fe368659ed1eebdb56', 1, 'tds_canonical_charset_name(const char *charset_name): iconv.c']\n ]],\n ['tds_5fclose_5fsocket_40', ['tds_close_socket', ['../a00543.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e', 1, 'tds_close_socket(TDSSOCKET *tds): net.c'],\n@@ -74,31 +74,31 @@\n ]],\n ['tds_5fconfig_5fverstr_41', ['tds_config_verstr', ['../a00538.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c'],\n ['../a00538.html#ga05c73c963f4d8904869c739c556c58a2', 1, 'tds_config_verstr(const char *tdsver, TDSLOGIN *login): config.c']\n ]],\n ['tds_5fconvert_42', ['tds_convert', ['../a00539.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *tds_ctx, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c'],\n ['../a00539.html#gad83c146aa5ba3f1515557d6b5248494a', 1, 'tds_convert(const TDSCONTEXT *context, int srctype, const void *src, TDS_UINT srclen, int desttype, CONV_RESULT *cr): convert.c']\n ]],\n- ['tds_5fconvert_5fstream_43', ['tds_convert_stream', ['../a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]],\n+ ['tds_5fconvert_5fstream_43', ['tds_convert_stream', ['../a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564', 1, 'stream.c']]],\n ['tds_5fconvert_5fstring_44', ['tds_convert_string', ['../a00542.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c'],\n ['../a00542.html#gad5b76c688898b86984d09628f030d01c', 1, 'tds_convert_string(TDSSOCKET *tds, TDSICONV *char_conv, const char *s, int len, size_t *out_len): query.c']\n ]],\n- ['tds_5fcopy_5fstream_45', ['tds_copy_stream', ['../a00026.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]],\n+ ['tds_5fcopy_5fstream_45', ['tds_copy_stream', ['../a00236.html#a50bc3749988d1c3c441044fc07ab44e4', 1, 'stream.c']]],\n ['tds_5fcount_5fplaceholders_46', ['tds_count_placeholders', ['../a00542.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c'],\n ['../a00542.html#gaaa7b4d37bf796019e72f25c6e7fe7bea', 1, 'tds_count_placeholders(const char *query): query.c']\n ]],\n ['tds_5fcount_5fplaceholders_5fucs2le_47', ['tds_count_placeholders_ucs2le', ['../a00542.html#ga0cd19215e9169ea299a6c9cbf5b2fb60', 1, 'query.c']]],\n ['tds_5fcursor_5fcheck_5fallocated_48', ['tds_cursor_check_allocated', ['../a00542.html#ga2a64baaf4aa50ef601a49b801dfdaaf6', 1, 'query.c']]],\n ['tds_5fcursor_5fdealloc_49', ['tds_cursor_dealloc', ['../a00542.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c'],\n ['../a00542.html#gab25de0567ac096e8f8e88490eeddf562', 1, 'tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor): query.c']\n ]],\n- ['tds_5fdatain_5fstream_5finit_50', ['tds_datain_stream_init', ['../a00026.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]],\n- ['tds_5fdatain_5fstream_5fread_51', ['tds_datain_stream_read', ['../a00026.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]],\n- ['tds_5fdataout_5fstream_5finit_52', ['tds_dataout_stream_init', ['../a00026.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]],\n- ['tds_5fdataout_5fstream_5fwrite_53', ['tds_dataout_stream_write', ['../a00026.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]],\n+ ['tds_5fdatain_5fstream_5finit_50', ['tds_datain_stream_init', ['../a00236.html#abc3a77c8aa28842e7f28583cbabc1415', 1, 'stream.c']]],\n+ ['tds_5fdatain_5fstream_5fread_51', ['tds_datain_stream_read', ['../a00236.html#a04b537d889f7d4c9b9701eb81baf7efd', 1, 'stream.c']]],\n+ ['tds_5fdataout_5fstream_5finit_52', ['tds_dataout_stream_init', ['../a00236.html#aa038a9125979f8f0915dbd53cbf27e5a', 1, 'stream.c']]],\n+ ['tds_5fdataout_5fstream_5fwrite_53', ['tds_dataout_stream_write', ['../a00236.html#ae38a590ee08cf398e7adef536ac94538', 1, 'stream.c']]],\n ['tds_5fdatecrack_54', ['tds_datecrack', ['../a00539.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c'],\n ['../a00539.html#ga883855e6e3793de6684b21db39c756c4', 1, 'tds_datecrack(TDS_INT datetype, const void *di, TDSDATEREC *dr): convert.c']\n ]],\n ['tds_5fdeferred_5fcursor_5fdealloc_55', ['tds_deferred_cursor_dealloc', ['../a00542.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c'],\n ['../a00542.html#ga57bd0fabe5bcdeb3ef091259b3a7c1fc', 1, 'tds_deferred_cursor_dealloc(TDSCONNECTION *conn, TDSCURSOR *cursor): query.c']\n ]],\n ['tds_5fdeferred_5funprepare_56', ['tds_deferred_unprepare', ['../a00542.html#ga9f80fdf732b084aef7de7a323261aa61', 1, 'tds_deferred_unprepare(TDSCONNECTION *conn, TDSDYNAMIC *dyn): query.c'],\n@@ -119,17 +119,17 @@\n ]],\n ['tds_5fdstr_5finit_66', ['tds_dstr_init', ['../a00545.html#ga6c0aba5c6da921898768e7f6cf177ca7', 1, 'string.h']]],\n ['tds_5fdstr_5fisempty_67', ['tds_dstr_isempty', ['../a00545.html#ga197c6af67f2e7469d06c2aa055917b1e', 1, 'string.h']]],\n ['tds_5fdstr_5flen_68', ['tds_dstr_len', ['../a00545.html#ga396f139e4f886ac1b224a735138e73dd', 1, 'string.h']]],\n ['tds_5fdstr_5fset_69', ['tds_dstr_set', ['../a00545.html#gab78cc59b110df2817b00f9bed74c6ff1', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fsetlen_70', ['tds_dstr_setlen', ['../a00545.html#ga0cd7863ba7c2d2da4a193234472a3d14', 1, 'tdsstring.c']]],\n ['tds_5fdstr_5fzero_71', ['tds_dstr_zero', ['../a00545.html#ga339ba30216e2bd5bd076aa9dcd26f3c4', 1, 'tdsstring.c']]],\n- ['tds_5fdynamic_5fstream_5finit_72', ['tds_dynamic_stream_init', ['../a00026.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]],\n- ['tds_5fdynamic_5fstream_5fwrite_73', ['tds_dynamic_stream_write', ['../a00026.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]],\n- ['tds_5ffile_5fstream_5fread_74', ['tds_file_stream_read', ['../a00092.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]],\n+ ['tds_5fdynamic_5fstream_5finit_72', ['tds_dynamic_stream_init', ['../a00236.html#a4f9e40da6941cb9407d0da5bc3030517', 1, 'stream.c']]],\n+ ['tds_5fdynamic_5fstream_5fwrite_73', ['tds_dynamic_stream_write', ['../a00236.html#abaf688c85ea04a2392103d519a55d04e', 1, 'stream.c']]],\n+ ['tds_5ffile_5fstream_5fread_74', ['tds_file_stream_read', ['../a00176.html#a1b83c9db016b481aa1fa0352f976d50d', 1, 'bulk.c']]],\n ['tds_5ffix_5fcolumn_5fsize_75', ['tds_fix_column_size', ['../a00542.html#ga440f0f469afad1eac4c008979873ccdd', 1, 'tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol): query.c'],\n ['../a00542.html#ga440f0f469afad1eac4c008979873ccdd', 1, 'tds_fix_column_size(TDSSOCKET *tds, TDSCOLUMN *curcol): query.c']\n ]],\n ['tds_5ffix_5flogin_76', ['tds_fix_login', ['../a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c'],\n ['../a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910', 1, 'tds_fix_login(TDSLOGIN *login): config.c']\n ]],\n ['tds_5fflush_5fpacket_77', ['tds_flush_packet', ['../a00543.html#ga5feb53554e8917a81bbbc332163a61fb', 1, 'tds_flush_packet(TDSSOCKET *tds): write.c'],\n@@ -153,43 +153,43 @@\n ]],\n ['tds_5ffreeze_5fclose_5flen_84', ['tds_freeze_close_len', ['../a00543.html#ga2660b893ae2bf36fe1b63b354e748bad', 1, 'tds_freeze_close_len(TDSFREEZE *freeze, int32_t size): packet.c'],\n ['../a00543.html#ga2660b893ae2bf36fe1b63b354e748bad', 1, 'tds_freeze_close_len(TDSFREEZE *freeze, int32_t size): packet.c']\n ]],\n ['tds_5ffreeze_5fwritten_85', ['tds_freeze_written', ['../a00543.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c'],\n ['../a00543.html#ga528cc96da09c11bc2930daae64e33e83', 1, 'tds_freeze_written(TDSFREEZE *freeze): packet.c']\n ]],\n- ['tds_5fgeneric_5fget_86', ['tds_generic_get', ['../a00080.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]],\n- ['tds_5fgeneric_5fput_87', ['tds_generic_put', ['../a00080.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]],\n- ['tds_5fgeneric_5fput_5finfo_88', ['tds_generic_put_info', ['../a00080.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fget_86', ['tds_generic_get', ['../a00179.html#abac4d689e0e31e80587f89247c6395a4', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fput_87', ['tds_generic_put', ['../a00179.html#a84e17808683ba2dd956e811a42e23176', 1, 'data.c']]],\n+ ['tds_5fgeneric_5fput_5finfo_88', ['tds_generic_put_info', ['../a00179.html#aabd0e5f15615b5c141c525b76e746520', 1, 'data.c']]],\n ['tds_5fget_5fbyte_89', ['tds_get_byte', ['../a00543.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga0cb72d3f6943795c39db1fa692be0a58', 1, 'tds_get_byte(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fget_5fchar_5fdata_90', ['tds_get_char_data', ['../a00543.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *row_buffer, size_t wire_size, TDSCOLUMN *curcol): read.c'],\n ['../a00543.html#ga8d214089b6e97fc0da5e0be09f216d73', 1, 'tds_get_char_data(TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol): read.c']\n ]],\n ['tds_5fget_5fcolumn_5fdeclaration_91', ['tds_get_column_declaration', ['../a00542.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c'],\n ['../a00542.html#ga50d62edeb2a432e2dc668263f3f958ff', 1, 'tds_get_column_declaration(TDSSOCKET *tds, TDSCOLUMN *curcol, char *out): query.c']\n ]],\n ['tds_5fget_5fcompiletime_5fsettings_92', ['tds_get_compiletime_settings', ['../a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c'],\n ['../a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b', 1, 'tds_get_compiletime_settings(void): config.c']\n ]],\n- ['tds_5fget_5fconversion_5ftype_93', ['tds_get_conversion_type', ['../a00368.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fconversion_5ftype_93', ['tds_get_conversion_type', ['../a00425.html#a0383d5dcb629582266a442f0f0dbd13a', 1, 'tds_types.h']]],\n ['tds_5fget_5fdata_5finfo_94', ['tds_get_data_info', ['../a00544.html#gad9b6b86f48be077fb44ac603845a0c27', 1, 'token.c']]],\n ['tds_5fget_5fdynid_95', ['tds_get_dynid', ['../a00541.html#ga93503e64091b51add0801abebe22abf4', 1, 'mem.c']]],\n ['tds_5fget_5fhome_5ffile_96', ['tds_get_home_file', ['../a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa', 1, 'tds_get_home_file(const char *file): config.c'],\n ['../a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa', 1, 'tds_get_home_file(const char *file): config.c']\n ]],\n- ['tds_5fget_5flocale_97', ['tds_get_locale', ['../a00368.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]],\n+ ['tds_5fget_5flocale_97', ['tds_get_locale', ['../a00425.html#a41390fa6e1083ba84fb523797e6b5275', 1, 'locale.c']]],\n ['tds_5fget_5fn_98', ['tds_get_n', ['../a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t need): read.c'],\n ['../a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf', 1, 'tds_get_n(TDSSOCKET *tds, void *dest, size_t n): read.c']\n ]],\n ['tds_5fget_5fnull_5ftype_99', ['tds_get_null_type', ['../a00539.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c'],\n ['../a00539.html#ga68e3a76fd7b0a77614765826a8ab5be8', 1, 'tds_get_null_type(TDS_SERVER_TYPE srctype): convert.c']\n ]],\n- ['tds_5fget_5fsize_5fby_5ftype_100', ['tds_get_size_by_type', ['../a00368.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fsize_5fby_5ftype_100', ['tds_get_size_by_type', ['../a00425.html#a4c070147d189dede5e08a2dc66852678', 1, 'tds_types.h']]],\n ['tds_5fget_5fsocket_5ferror_101', ['tds_get_socket_error', ['../a00543.html#ga4a2418e0a4533d616ef3da526236f2b8', 1, 'net.c']]],\n ['tds_5fget_5fstring_102', ['tds_get_string', ['../a00543.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c'],\n ['../a00543.html#ga90f080e6e9448feac15dee1370d66802', 1, 'tds_get_string(TDSSOCKET *tds, size_t string_len, char *dest, size_t dest_size): read.c']\n ]],\n ['tds_5fget_5ftoken_5fsize_103', ['tds_get_token_size', ['../a00544.html#ga995b82e53aeac5bede01ef16e9aeaa65', 1, 'tds_get_token_size(int marker): token.c'],\n ['../a00544.html#ga995b82e53aeac5bede01ef16e9aeaa65', 1, 'tds_get_token_size(int marker): token.c']\n ]],\n@@ -198,26 +198,26 @@\n ]],\n ['tds_5fget_5fuint8_105', ['tds_get_uint8', ['../a00543.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga8ab6c87318eaf15ea17a9575763f7809', 1, 'tds_get_uint8(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fget_5fusmallint_106', ['tds_get_usmallint', ['../a00543.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c'],\n ['../a00543.html#gad38aa5b9547817854ccba1fcc7855861', 1, 'tds_get_usmallint(TDSSOCKET *tds): read.c']\n ]],\n- ['tds_5fget_5fvarint_5fsize_107', ['tds_get_varint_size', ['../a00368.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]],\n+ ['tds_5fget_5fvarint_5fsize_107', ['tds_get_varint_size', ['../a00425.html#a68855f1251759a6b7338635306ab0041', 1, 'tds_types.h']]],\n ['tds_5fgoodread_108', ['tds_goodread', ['../a00543.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c'],\n ['../a00543.html#ga6f2ae00407f59fb1ab280fa44a56295e', 1, 'tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen): net.c']\n ]],\n ['tds_5fgoodwrite_109', ['tds_goodwrite', ['../a00543.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c'],\n ['../a00543.html#ga2734407109c834c5dda7ff8a45c71230', 1, 'tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen): net.c']\n ]],\n ['tds_5ficonv_110', ['tds_iconv', ['../a00540.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'],\n ['../a00540.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']\n ]],\n ['tds_5ficonv_5falloc_111', ['tds_iconv_alloc', ['../a01368.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c'],\n- ['../a00368.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c']\n+ ['../a00425.html#a026957dbbd994b48b571a63405f427cd', 1, 'tds_iconv_alloc(TDSCONNECTION *conn): iconv.c']\n ]],\n ['tds_5ficonv_5ffrom_5fcollate_112', ['tds_iconv_from_collate', ['../a00540.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c'],\n ['../a00540.html#ga9d433c15ab3738aa2a477a416330f49f', 1, 'tds_iconv_from_collate(TDSCONNECTION *conn, TDS_UCHAR collate[5]): iconv.c']\n ]],\n ['tds_5ficonv_5fget_5finfo_113', ['tds_iconv_get_info', ['../a00540.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c'],\n ['../a00540.html#ga1639ccaa7e17c07457bcb37f313bc52f', 1, 'tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int canonic_server): iconv.c']\n ]],\n@@ -239,20 +239,20 @@\n ['tds_5fnext_5fplaceholder_121', ['tds_next_placeholder', ['../a00542.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c'],\n ['../a00542.html#ga8f3b00c34af2484eccb169e60a37dc36', 1, 'tds_next_placeholder(const char *start): query.c']\n ]],\n ['tds_5fnext_5fplaceholder_5fucs2le_122', ['tds_next_placeholder_ucs2le', ['../a00542.html#gaaa97f8535a2babe642024a0744d271d5', 1, 'query.c']]],\n ['tds_5fntlm_5fget_5fauth_123', ['tds_ntlm_get_auth', ['../a00537.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c'],\n ['../a00537.html#gac0f33825721aa985805d21540a254b87', 1, 'tds_ntlm_get_auth(TDSSOCKET *tds): challenge.c']\n ]],\n- ['tds_5fnumeric_5fto_5fstring_124', ['tds_numeric_to_string', ['../a00368.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]],\n+ ['tds_5fnumeric_5fto_5fstring_124', ['tds_numeric_to_string', ['../a00425.html#a622da936832b0337742da956be123719', 1, 'numeric.c']]],\n ['tds_5fpeek_125', ['tds_peek', ['../a00543.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c'],\n ['../a00543.html#ga221e98a9c8be96ec6c8547891e1b53af', 1, 'tds_peek(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fpr_5fop_126', ['tds_pr_op', ['../a00544.html#ga62dc14d21453e88e24880ee0acaca73a', 1, 'token.c']]],\n- ['tds_5fprdatatype_127', ['tds_prdatatype', ['../a00170.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]],\n+ ['tds_5fprdatatype_127', ['tds_prdatatype', ['../a00080.html#ac7a199aaeb82935f6d1dda2be551a089', 1, 'dblib.c']]],\n ['tds_5fprocess_5fauth_128', ['tds_process_auth', ['../a00544.html#ga4e1e52e09b0c27a9b9f53eb6b539afce', 1, 'token.c']]],\n ['tds_5fprocess_5fcancel_129', ['tds_process_cancel', ['../a00544.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c'],\n ['../a00544.html#gaf233e79967f82f4e0dd4d11524917a34', 1, 'tds_process_cancel(TDSSOCKET *tds): token.c']\n ]],\n ['tds_5fprocess_5fcol_5ffmt_130', ['tds_process_col_fmt', ['../a00544.html#ga4e3dd9d3614f5f0433b78b761dd68741', 1, 'token.c']]],\n ['tds_5fprocess_5fcol_5fname_131', ['tds_process_col_name', ['../a00544.html#ga905d2fa5e1b602817bd16bb0fcf9eadb', 1, 'token.c']]],\n ['tds_5fprocess_5fcolinfo_132', ['tds_process_colinfo', ['../a00544.html#ga22c7f413d43fc0d511e122a3de389166', 1, 'token.c']]],\n@@ -326,30 +326,30 @@\n ['tds_5fselect_172', ['tds_select', ['../a00543.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c'],\n ['../a00543.html#gad7aae89e32444ab30852fee056231403', 1, 'tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds): net.c']\n ]],\n ['tds_5fsend_5fcancel_173', ['tds_send_cancel', ['../a00542.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c'],\n ['../a00542.html#ga11338742dc30fd0c2711f58eb830316f', 1, 'tds_send_cancel(TDSSOCKET *tds): query.c']\n ]],\n ['tds_5fsend_5femulated_5fexecute_174', ['tds_send_emulated_execute', ['../a00542.html#ga02c6ce3ff96369603a6ee4efee64caae', 1, 'query.c']]],\n- ['tds_5fset_5fcolumn_5ftype_175', ['tds_set_column_type', ['../a00368.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n- ['../a00080.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n+ ['tds_5fset_5fcolumn_5ftype_175', ['tds_set_column_type', ['../a00425.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n+ ['../a00179.html#a31604382d8b77257aad203f409155a29', 1, 'tds_set_column_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n ]],\n ['tds_5fset_5fcur_5fcursor_176', ['tds_set_cur_cursor', ['../a00542.html#ga34fb1084682cc31fe02a4a7946955a5a', 1, 'query.c']]],\n ['tds_5fset_5fcur_5fdyn_177', ['tds_set_cur_dyn', ['../a00542.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#gae8b7db85af16701fc0604eb117cbd4e4', 1, 'tds_set_cur_dyn(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c']\n ]],\n ['tds_5fset_5ficonv_5fname_178', ['tds_set_iconv_name', ['../a01368.html#a585ebac61354ce540d28f6da2d771b5b', 1, 'iconv.c']]],\n ['tds_5fset_5finterfaces_5ffile_5floc_179', ['tds_set_interfaces_file_loc', ['../a00538.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interf): config.c'],\n ['../a00538.html#ga57cea6e376d7c2d28b811a5b0053210c', 1, 'tds_set_interfaces_file_loc(const char *interfloc): config.c']\n ]],\n- ['tds_5fset_5fparam_5ftype_180', ['tds_set_param_type', ['../a00080.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n- ['../a00368.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n+ ['tds_5fset_5fparam_5ftype_180', ['tds_set_param_type', ['../a00179.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c'],\n+ ['../a00425.html#a86768d86059c5addf9a3f89edb1ef44e', 1, 'tds_set_param_type(TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type): data.c']\n ]],\n- ['tds_5fset_5fserver_181', ['tds_set_server', ['../a00368.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]],\n- ['tds_5fset_5fstate_182', ['tds_set_state', ['../a00368.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]],\n+ ['tds_5fset_5fserver_181', ['tds_set_server', ['../a00425.html#a3ab8874994a0776acdaff797afdb710a', 1, 'login.c']]],\n+ ['tds_5fset_5fstate_182', ['tds_set_state', ['../a00425.html#a16db200d2281f76fe46fc1cbe37ca9df', 1, 'util.c']]],\n ['tds_5fsetup_5fsocket_183', ['tds_setup_socket', ['../a00543.html#gab604dd1d75afa8f852d1a6ee0b681974', 1, 'net.c']]],\n ['tds_5fskip_5fcomment_184', ['tds_skip_comment', ['../a00542.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c'],\n ['../a00542.html#gacf0a4f2a1c2166588f4d232eda737cf5', 1, 'tds_skip_comment(const char *s): query.c']\n ]],\n ['tds_5fskip_5fcomment_5fucs2le_185', ['tds_skip_comment_ucs2le', ['../a00542.html#gac3124fe439d9c96236fc33af7793ffcf', 1, 'query.c']]],\n ['tds_5fskip_5fquoted_186', ['tds_skip_quoted', ['../a00542.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c'],\n ['../a00542.html#ga0856776b63a475de7cd3fb62b1af2411', 1, 'tds_skip_quoted(const char *s): query.c']\n@@ -363,22 +363,22 @@\n ['../a00543.html#gae36a2665a4183b4cb211d03e907112ee', 1, 'tds_socket_set_nosigpipe(TDS_SYS_SOCKET sock, int on): net.c']\n ]],\n ['tds_5fsocket_5fwrite_191', ['tds_socket_write', ['../a00543.html#gad6f81b48fbcfc18ce0b213dbbea47e30', 1, 'net.c']]],\n ['tds_5fstart_5fquery_192', ['tds_start_query', ['../a00542.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c'],\n ['../a00542.html#ga0da385231bfa3dc49377e1fb2bea2c07', 1, 'tds_start_query(TDSSOCKET *tds, unsigned char packet_type): query.c']\n ]],\n ['tds_5fstart_5fquery_5fhead_193', ['tds_start_query_head', ['../a00542.html#ga9ad2e6defce530a8778791cce0166ccd', 1, 'query.c']]],\n- ['tds_5fstaticin_5fstream_5finit_194', ['tds_staticin_stream_init', ['../a00026.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]],\n- ['tds_5fstaticin_5fstream_5fread_195', ['tds_staticin_stream_read', ['../a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]],\n- ['tds_5fstaticout_5fstream_5finit_196', ['tds_staticout_stream_init', ['../a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]],\n- ['tds_5fstaticout_5fstream_5fwrite_197', ['tds_staticout_stream_write', ['../a00026.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]],\n+ ['tds_5fstaticin_5fstream_5finit_194', ['tds_staticin_stream_init', ['../a00236.html#aa9e1e45f0305622dd6aed9f8fe158581', 1, 'stream.c']]],\n+ ['tds_5fstaticin_5fstream_5fread_195', ['tds_staticin_stream_read', ['../a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7', 1, 'stream.c']]],\n+ ['tds_5fstaticout_5fstream_5finit_196', ['tds_staticout_stream_init', ['../a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d', 1, 'stream.c']]],\n+ ['tds_5fstaticout_5fstream_5fwrite_197', ['tds_staticout_stream_write', ['../a00236.html#a1d92ebe06f18378ac17ccfd20db05126', 1, 'stream.c']]],\n ['tds_5fstrftime_198', ['tds_strftime', ['../a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *dr, int prec): convert.c'],\n ['../a00539.html#ga8c9652e8b1f3e56a3289fd71b12cee1d', 1, 'tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC *timeptr, int prec): convert.c']\n ]],\n- ['tds_5fstrndup_199', ['tds_strndup', ['../a00368.html#a0e1370e1c1f7ae1b2e0c304960c39161', 1, 'util.c']]],\n+ ['tds_5fstrndup_199', ['tds_strndup', ['../a00425.html#a0e1370e1c1f7ae1b2e0c304960c39161', 1, 'util.c']]],\n ['tds_5fsubmit_5fbegin_5ftran_200', ['tds_submit_begin_tran', ['../a00542.html#ga7bf3670d3d6dabed469b9eb117298079', 1, 'tds_submit_begin_tran(TDSSOCKET *tds): query.c'],\n ['../a00542.html#ga7bf3670d3d6dabed469b9eb117298079', 1, 'tds_submit_begin_tran(TDSSOCKET *tds): query.c']\n ]],\n ['tds_5fsubmit_5fcommit_201', ['tds_submit_commit', ['../a00542.html#ga530538c4c975524cf0b771a550fc94a3', 1, 'tds_submit_commit(TDSSOCKET *tds, int cont): query.c'],\n ['../a00542.html#ga530538c4c975524cf0b771a550fc94a3', 1, 'tds_submit_commit(TDSSOCKET *tds, int cont): query.c']\n ]],\n ['tds_5fsubmit_5fexecdirect_202', ['tds_submit_execdirect', ['../a00542.html#gae603aed795a4c5bb26ab159a11256996', 1, 'tds_submit_execdirect(TDSSOCKET *tds, const char *query, TDSPARAMINFO *params, TDSHEADERS *head): query.c'],\n@@ -407,39 +407,39 @@\n ]],\n ['tds_5fsubmit_5frpc_210', ['tds_submit_rpc', ['../a00542.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c'],\n ['../a00542.html#ga5f071b94ad7889690762dc85646c74ab', 1, 'tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head): query.c']\n ]],\n ['tds_5fsubmit_5funprepare_211', ['tds_submit_unprepare', ['../a00542.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c'],\n ['../a00542.html#gaf573d8d4d2660c8c27770573fca05ff5', 1, 'tds_submit_unprepare(TDSSOCKET *tds, TDSDYNAMIC *dyn): query.c']\n ]],\n- ['tds_5fswap_5fnumeric_212', ['tds_swap_numeric', ['../a00080.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]],\n+ ['tds_5fswap_5fnumeric_212', ['tds_swap_numeric', ['../a00179.html#aa818c1cbf4d16e609b7e4895cc7ed74f', 1, 'data.c']]],\n ['tds_5fsys_5ficonv_5fopen_213', ['tds_sys_iconv_open', ['../a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c'],\n ['../a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516', 1, 'tds_sys_iconv_open(const char *tocode, const char *fromcode): iconv.c']\n ]],\n ['tds_5ftoken_5fname_214', ['tds_token_name', ['../a00544.html#ga7f24a7af985cd320788122e98072b7af', 1, 'token.c']]],\n ['tds_5funget_5fbyte_215', ['tds_unget_byte', ['../a00543.html#gad70d59fb317d098b0c9fd29dd77131a8', 1, 'tds_unget_byte(TDSSOCKET *tds): read.c'],\n ['../a00543.html#gad70d59fb317d098b0c9fd29dd77131a8', 1, 'tds_unget_byte(TDSSOCKET *tds): read.c']\n ]],\n ['tds_5fwillconvert_216', ['tds_willconvert', ['../a00539.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c'],\n ['../a00539.html#ga80487b313213f60d8be71a50a002bb2c', 1, 'tds_willconvert(int srctype, int desttype): convert.c']\n ]],\n- ['tds_5fwritetext_5fcontinue_217', ['tds_writetext_continue', ['../a00092.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'],\n- ['../a00368.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c']\n+ ['tds_5fwritetext_5fcontinue_217', ['tds_writetext_continue', ['../a00176.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c'],\n+ ['../a00425.html#ab68dead99a2ebec55895a10cd3db5202', 1, 'tds_writetext_continue(TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size): bulk.c']\n ]],\n- ['tds_5fwritetext_5fend_218', ['tds_writetext_end', ['../a00092.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'],\n- ['../a00368.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c']\n+ ['tds_5fwritetext_5fend_218', ['tds_writetext_end', ['../a00176.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c'],\n+ ['../a00425.html#ac1e460551f1188620ea478238864ac4b', 1, 'tds_writetext_end(TDSSOCKET *tds): bulk.c']\n ]],\n- ['tds_5fwritetext_5fstart_219', ['tds_writetext_start', ['../a00092.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'],\n- ['../a00368.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']\n+ ['tds_5fwritetext_5fstart_219', ['tds_writetext_start', ['../a00176.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'],\n+ ['../a00425.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']\n ]],\n ['tdsdbopen_220', ['tdsdbopen', ['../a00533.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c'],\n ['../a00533.html#gae6da75d7b9e7b567890fc83c9459d824', 1, 'tdsdbopen(LOGINREC *login, const char *server, int msdblib): dblib.c']\n ]],\n- ['tdsdump_5fclose_221', ['tdsdump_close', ['../a00368.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]],\n- ['tdsdump_5fcol_222', ['tdsdump_col', ['../a00368.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]],\n- ['tdsdump_5fdump_5fbuf_223', ['tdsdump_dump_buf', ['../a00368.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]],\n- ['tdsdump_5flog_224', ['tdsdump_log', ['../a00368.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]],\n- ['tdsdump_5foff_225', ['tdsdump_off', ['../a00368.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]],\n- ['tdsdump_5fon_226', ['tdsdump_on', ['../a00368.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]],\n- ['tdsdump_5fopen_227', ['tdsdump_open', ['../a00368.html#a24471508ddfde7cc0f8577801e70c42f', 1, 'log.c']]],\n- ['tdserror_228', ['tdserror', ['../a00368.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]]\n+ ['tdsdump_5fclose_221', ['tdsdump_close', ['../a00425.html#a2f00fc0907d3bb04ce0eeb9738e08d0c', 1, 'log.c']]],\n+ ['tdsdump_5fcol_222', ['tdsdump_col', ['../a00425.html#aaee3fe5c514ce5570c9548de9b16e0d9', 1, 'log.c']]],\n+ ['tdsdump_5fdump_5fbuf_223', ['tdsdump_dump_buf', ['../a00425.html#a79449d2f35a8acc8ed0585044f75524d', 1, 'log.c']]],\n+ ['tdsdump_5flog_224', ['tdsdump_log', ['../a00425.html#ab45c291105027e69836002e1dd586141', 1, 'log.c']]],\n+ ['tdsdump_5foff_225', ['tdsdump_off', ['../a00425.html#ae3e5e04822595c54f86db66d9e40b93a', 1, 'log.c']]],\n+ ['tdsdump_5fon_226', ['tdsdump_on', ['../a00425.html#ae5f50062ebebe46b951e5308cb2f5d7e', 1, 'log.c']]],\n+ ['tdsdump_5fopen_227', ['tdsdump_open', ['../a00425.html#a24471508ddfde7cc0f8577801e70c42f', 1, 'log.c']]],\n+ ['tdserror_228', ['tdserror', ['../a00425.html#abf18b98efef6ce2dc0b97d658a3a1918', 1, 'util.c']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/globals.html", "source2": "./usr/share/doc/freetds-doc/reference/globals.html", "unified_diff": "@@ -68,24 +68,24 @@\n \n \n \n
      \n
      Here is a list of all documented file members with links to the documentation:
      \n \n

      - _ -

        \n-
      • _bcp_convert_in() : bcp.c
      • \n-
      • _bcp_convert_out() : bcp.c
      • \n+
      • _bcp_convert_in() : bcp.c
      • \n+
      • _bcp_convert_out() : bcp.c
      • \n
      • _bcp_exec_in() : bcp.c
      • \n
      • _bcp_exec_out() : bcp.c
      • \n
      • _bcp_fgets() : bcp.c
      • \n
      • _bcp_free_columns() : bcp.c
      • \n
      • _bcp_free_storage() : bcp.c
      • \n
      • _bcp_get_col_data() : bcp.c
      • \n
      • _bcp_get_term_var() : bcp.c
      • \n-
      • _bcp_no_get_col_data() : bcp.c
      • \n+
      • _bcp_no_get_col_data() : bcp.c
      • \n
      • _bcp_read_hostfile() : bcp.c
      • \n
      • _bcp_readfmt_colinfo() : bcp.c
      • \n
      • _dbcoldata() : dblib.c
      • \n
      • _dbresults() : dblib.c
      • \n
      \n
      \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_d.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_d.html", "unified_diff": "@@ -89,15 +89,15 @@\n
    • dbcanquery() : dblib.c, sybdb.h
    • \n
    • dbchange() : dblib.c, sybdb.h
    • \n
    • dbclose() : dblib.c, sybdb.h
    • \n
    • dbclrbuf() : dblib.c, sybdb.h
    • \n
    • dbclropt() : dblib.c, sybdb.h
    • \n
    • dbcmd() : dblib.c, sybdb.h
    • \n
    • dbcmdrow() : dblib.c, sybdb.h
    • \n-
    • dbcolinfo() : dblib.c, sybdb.h
    • \n+
    • dbcolinfo() : dblib.c, sybdb.h
    • \n
    • dbcollen() : dblib.c, sybdb.h
    • \n
    • dbcolname() : dblib.c, sybdb.h
    • \n
    • dbcolptr() : dblib.c
    • \n
    • dbcolsource() : dblib.c, sybdb.h
    • \n
    • dbcoltype() : dblib.c, sybdb.h
    • \n
    • dbcoltypeinfo() : dblib.c, sybdb.h
    • \n
    • dbcolutype() : dblib.c, sybdb.h
    • \n@@ -114,28 +114,28 @@\n
    • dberrhandle() : dblib.c, sybdb.h
    • \n
    • dbexit() : dblib.c, sybdb.h
    • \n
    • dbfcmd() : dblib.c, sybdb.h
    • \n
    • dbfirstrow() : dblib.c, sybdb.h
    • \n
    • dbfreebuf() : dblib.c, sybdb.h
    • \n
    • dbgetchar() : dblib.c, sybdb.h
    • \n
    • dbgetmaxprocs() : sybdb.h, dblib.c
    • \n-
    • dbgetnull() : dblib.c
    • \n+
    • dbgetnull() : dblib.c
    • \n
    • dbgetpacket() : dblib.c, sybdb.h
    • \n
    • dbgetrow() : dblib.c, sybdb.h
    • \n
    • dbgettime() : dblib.c, sybdb.h
    • \n
    • dbgetuserdata() : dblib.c, sybdb.h
    • \n
    • dbhasretstat() : dblib.c, sybdb.h
    • \n
    • dbinit() : dblib.c, sybdb.h
    • \n
    • dbiordesc() : dblib.c, sybdb.h
    • \n
    • dbiowdesc() : dblib.c, sybdb.h
    • \n
    • dbiscount() : dblib.c, sybdb.h
    • \n
    • dbisopt() : dblib.c, sybdb.h
    • \n
    • dblastrow() : dblib.c, sybdb.h
    • \n
    • DBLIB_ERROR_MESSAGE : dblib.c
    • \n-
    • DBLIBCONTEXT : dblib.c
    • \n+
    • DBLIBCONTEXT : dblib.c
    • \n
    • dblogin() : dblib.c, sybdb.h
    • \n
    • dbloginfree() : dblib.c, sybdb.h
    • \n
    • dbmny4add() : dblib.c, sybdb.h
    • \n
    • dbmny4cmp() : dblib.c, sybdb.h
    • \n
    • dbmny4copy() : dblib.c, sybdb.h
    • \n
    • dbmny4minus() : dblib.c, sybdb.h
    • \n
    • dbmny4sub() : dblib.c, sybdb.h
    • \n@@ -154,17 +154,17 @@\n
    • dbmsghandle() : dblib.c, sybdb.h
    • \n
    • dbname() : dblib.c, sybdb.h
    • \n
    • dbnullbind() : dblib.c, sybdb.h
    • \n
    • dbnumalts() : sybdb.h, dblib.c
    • \n
    • dbnumcols() : dblib.c, sybdb.h
    • \n
    • dbnumcompute() : dblib.c, sybdb.h
    • \n
    • dbnumrets() : dblib.c, sybdb.h
    • \n-
    • dbopen() : sybdb.h
    • \n+
    • dbopen() : sybdb.h
    • \n
    • dbperror() : dblib.c
    • \n-
    • dbpivot() : sybdb.h
    • \n+
    • dbpivot() : sybdb.h
    • \n
    • dbprcollen() : dblib.c, sybdb.h
    • \n
    • dbprhead() : dblib.c, sybdb.h
    • \n
    • dbprrow() : dblib.c, sybdb.h
    • \n
    • dbprtype() : dblib.c, sybdb.h
    • \n
    • dbreadtext() : dblib.c, sybdb.h
    • \n
    • dbrecftos() : dblib.c, sybdb.h
    • \n
    • dbresults() : dblib.c, sybdb.h
    • \n@@ -204,21 +204,21 @@\n
    • dbsqlok() : dblib.c, sybdb.h
    • \n
    • dbsqlsend() : dblib.c, sybdb.h
    • \n
    • dbstrbuild() : dblib.c, sybdb.h
    • \n
    • dbstrcpy() : dblib.c, sybdb.h
    • \n
    • dbstrlen() : dblib.c, sybdb.h
    • \n
    • dbtablecolinfo() : dblib.c, sybdb.h
    • \n
    • dbtds() : dblib.c, sybdb.h
    • \n-
    • DBTDS_UNKNOWN : sybdb.h
    • \n+
    • DBTDS_UNKNOWN : sybdb.h
    • \n
    • dbtxptr() : sybdb.h, dblib.c
    • \n
    • dbtxtimestamp() : dblib.c, sybdb.h
    • \n
    • dbuse() : dblib.c, sybdb.h
    • \n
    • dbvarylen() : dblib.c, sybdb.h
    • \n
    • dbversion() : dblib.c, sybdb.h
    • \n-
    • DBVERSION_UNKNOWN : sybdb.h
    • \n+
    • DBVERSION_UNKNOWN : sybdb.h
    • \n
    • dbwillconvert() : dblib.c, sybdb.h
    • \n
    • dbwritetext() : dblib.c, sybdb.h
    • \n
    • default_err_handler() : dblib.c
    • \n
    • determine_adjusted_size() : token.c
    • \n
    \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_defs.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_defs.html", "unified_diff": "@@ -66,22 +66,22 @@\n \n \n \n \n \n
    \n
    Here is a list of all documented macros with links to the documentation:
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_enum.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_enum.html", "unified_diff": "@@ -66,17 +66,17 @@\n \n \n \n \n \n
    \n
    Here is a list of all documented enums with links to the documentation:
      \n-
    • tds_bcp_directions : tds.h
    • \n-
    • tds_end : tds.h
    • \n-
    • tds_states : tds.h
    • \n+
    • tds_bcp_directions : tds.h
    • \n+
    • tds_end : tds.h
    • \n+
    • tds_states : tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_eval.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_eval.html", "unified_diff": "@@ -66,28 +66,28 @@\n \n \n \n \n \n
    \n
    Here is a list of all documented enum values with links to the documentation:
      \n-
    • TDS_DEAD : tds.h
    • \n-
    • TDS_DONE_CANCELLED : tds.h
    • \n-
    • TDS_DONE_COUNT : tds.h
    • \n-
    • TDS_DONE_ERROR : tds.h
    • \n-
    • TDS_DONE_FINAL : tds.h
    • \n-
    • TDS_DONE_INXACT : tds.h
    • \n-
    • TDS_DONE_MORE_RESULTS : tds.h
    • \n-
    • TDS_DONE_PROC : tds.h
    • \n-
    • TDS_DONE_SRVERROR : tds.h
    • \n-
    • TDS_IDLE : tds.h
    • \n-
    • TDS_PENDING : tds.h
    • \n-
    • TDS_READING : tds.h
    • \n-
    • TDS_SENDING : tds.h
    • \n-
    • TDS_WRITING : tds.h
    • \n+
    • TDS_DEAD : tds.h
    • \n+
    • TDS_DONE_CANCELLED : tds.h
    • \n+
    • TDS_DONE_COUNT : tds.h
    • \n+
    • TDS_DONE_ERROR : tds.h
    • \n+
    • TDS_DONE_FINAL : tds.h
    • \n+
    • TDS_DONE_INXACT : tds.h
    • \n+
    • TDS_DONE_MORE_RESULTS : tds.h
    • \n+
    • TDS_DONE_PROC : tds.h
    • \n+
    • TDS_DONE_SRVERROR : tds.h
    • \n+
    • TDS_IDLE : tds.h
    • \n+
    • TDS_PENDING : tds.h
    • \n+
    • TDS_READING : tds.h
    • \n+
    • TDS_SENDING : tds.h
    • \n+
    • TDS_WRITING : tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_func.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_func.html", "unified_diff": "@@ -68,24 +68,24 @@\n \n \n \n
    \n
    Here is a list of all documented functions with links to the documentation:
    \n \n

    - _ -

      \n-
    • _bcp_convert_in() : bcp.c
    • \n-
    • _bcp_convert_out() : bcp.c
    • \n+
    • _bcp_convert_in() : bcp.c
    • \n+
    • _bcp_convert_out() : bcp.c
    • \n
    • _bcp_exec_in() : bcp.c
    • \n
    • _bcp_exec_out() : bcp.c
    • \n
    • _bcp_fgets() : bcp.c
    • \n
    • _bcp_free_columns() : bcp.c
    • \n
    • _bcp_free_storage() : bcp.c
    • \n
    • _bcp_get_col_data() : bcp.c
    • \n
    • _bcp_get_term_var() : bcp.c
    • \n-
    • _bcp_no_get_col_data() : bcp.c
    • \n+
    • _bcp_no_get_col_data() : bcp.c
    • \n
    • _bcp_read_hostfile() : bcp.c
    • \n
    • _bcp_readfmt_colinfo() : bcp.c
    • \n
    • _dbcoldata() : dblib.c
    • \n
    • _dbresults() : dblib.c
    • \n
    \n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_func_d.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_func_d.html", "unified_diff": "@@ -89,15 +89,15 @@\n
  • dbcanquery() : dblib.c, sybdb.h
  • \n
  • dbchange() : dblib.c, sybdb.h
  • \n
  • dbclose() : dblib.c, sybdb.h
  • \n
  • dbclrbuf() : dblib.c, sybdb.h
  • \n
  • dbclropt() : sybdb.h, dblib.c
  • \n
  • dbcmd() : dblib.c, sybdb.h
  • \n
  • dbcmdrow() : dblib.c, sybdb.h
  • \n-
  • dbcolinfo() : dblib.c, sybdb.h
  • \n+
  • dbcolinfo() : dblib.c, sybdb.h
  • \n
  • dbcollen() : dblib.c, sybdb.h
  • \n
  • dbcolname() : dblib.c, sybdb.h
  • \n
  • dbcolptr() : dblib.c
  • \n
  • dbcolsource() : dblib.c, sybdb.h
  • \n
  • dbcoltype() : dblib.c, sybdb.h
  • \n
  • dbcoltypeinfo() : dblib.c, sybdb.h
  • \n
  • dbcolutype() : dblib.c, sybdb.h
  • \n@@ -114,15 +114,15 @@\n
  • dberrhandle() : dblib.c, sybdb.h
  • \n
  • dbexit() : dblib.c, sybdb.h
  • \n
  • dbfcmd() : dblib.c, sybdb.h
  • \n
  • dbfirstrow() : dblib.c, sybdb.h
  • \n
  • dbfreebuf() : dblib.c, sybdb.h
  • \n
  • dbgetchar() : sybdb.h, dblib.c
  • \n
  • dbgetmaxprocs() : dblib.c, sybdb.h
  • \n-
  • dbgetnull() : dblib.c
  • \n+
  • dbgetnull() : dblib.c
  • \n
  • dbgetpacket() : dblib.c, sybdb.h
  • \n
  • dbgetrow() : dblib.c, sybdb.h
  • \n
  • dbgettime() : dblib.c, sybdb.h
  • \n
  • dbgetuserdata() : dblib.c, sybdb.h
  • \n
  • dbhasretstat() : dblib.c, sybdb.h
  • \n
  • dbinit() : dblib.c, sybdb.h
  • \n
  • dbiordesc() : dblib.c, sybdb.h
  • \n@@ -152,17 +152,17 @@\n
  • dbmsghandle() : dblib.c, sybdb.h
  • \n
  • dbname() : dblib.c, sybdb.h
  • \n
  • dbnullbind() : dblib.c, sybdb.h
  • \n
  • dbnumalts() : dblib.c, sybdb.h
  • \n
  • dbnumcols() : dblib.c, sybdb.h
  • \n
  • dbnumcompute() : dblib.c, sybdb.h
  • \n
  • dbnumrets() : dblib.c, sybdb.h
  • \n-
  • dbopen() : sybdb.h
  • \n+
  • dbopen() : sybdb.h
  • \n
  • dbperror() : dblib.c
  • \n-
  • dbpivot() : sybdb.h
  • \n+
  • dbpivot() : sybdb.h
  • \n
  • dbprcollen() : dblib.c, sybdb.h
  • \n
  • dbprhead() : dblib.c, sybdb.h
  • \n
  • dbprrow() : sybdb.h, dblib.c
  • \n
  • dbprtype() : dblib.c, sybdb.h
  • \n
  • dbreadtext() : dblib.c, sybdb.h
  • \n
  • dbrecftos() : dblib.c, sybdb.h
  • \n
  • dbresults() : dblib.c, sybdb.h
  • \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_func_t.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_func_t.html", "unified_diff": "@@ -68,111 +68,111 @@\n \n \n \n
    \n
    Here is a list of all documented functions with links to the documentation:
    \n \n

    - t -

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

    - i -

      \n-
    • is_datetime_type : tds.h
    • \n+
    • is_datetime_type : tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_t.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_t.html", "unified_diff": "@@ -68,130 +68,130 @@\n \n \n \n
    \n
    Here is a list of all documented file members with links to the documentation:
    \n \n

    - t -

      \n-
    • tds5_bcp_add_fixed_columns() : bulk.c
    • \n-
    • tds5_bcp_add_variable_columns() : bulk.c
    • \n+
    • tds5_bcp_add_fixed_columns() : bulk.c
    • \n+
    • tds5_bcp_add_variable_columns() : bulk.c
    • \n
    • tds5_process_dyn_result2() : token.c
    • \n
    • tds5_process_optioncmd() : token.c
    • \n
    • tds5_process_result() : token.c
    • \n
    • tds5_process_result2() : token.c
    • \n
    • tds71_read_table_names() : token.c
    • \n
    • tds71_submit_prepexec() : tds.h
    • \n-
    • tds7_bcp_send_colmetadata() : bulk.c
    • \n-
    • tds7_build_bulk_insert_stmt() : bulk.c
    • \n+
    • tds7_bcp_send_colmetadata() : bulk.c
    • \n+
    • tds7_build_bulk_insert_stmt() : bulk.c
    • \n
    • tds7_get_data_info() : token.c
    • \n
    • tds7_get_instance_port() : tds.h
    • \n
    • tds7_get_instance_ports() : tds.h
    • \n
    • tds7_process_compute_result() : token.c
    • \n
    • tds7_process_result() : token.c
    • \n
    • tds_alloc_dynamic() : tds.h
    • \n
    • tds_alloc_get_string() : token.c
    • \n
    • tds_alloc_param_data() : tds.h
    • \n
    • tds_alloc_param_result() : tds.h
    • \n
    • tds_alloc_row() : tds.h
    • \n-
    • tds_bcp_directions : tds.h
    • \n-
    • tds_bcp_done() : bulk.c, tds.h
    • \n-
    • tds_bcp_fread() : bulk.c, tds.h
    • \n-
    • tds_bcp_init() : bulk.c, tds.h
    • \n-
    • tds_bcp_row_free() : bulk.c
    • \n-
    • tds_bcp_send_record() : bulk.c, tds.h
    • \n-
    • tds_bcp_start() : bulk.c, tds.h
    • \n-
    • tds_bcp_start_copy_in() : tds.h, bulk.c
    • \n-
    • tds_bcp_start_insert_stmt() : bulk.c
    • \n+
    • tds_bcp_directions : tds.h
    • \n+
    • tds_bcp_done() : bulk.c, tds.h
    • \n+
    • tds_bcp_fread() : bulk.c, tds.h
    • \n+
    • tds_bcp_init() : bulk.c, tds.h
    • \n+
    • tds_bcp_row_free() : bulk.c
    • \n+
    • tds_bcp_send_record() : bulk.c, tds.h
    • \n+
    • tds_bcp_start() : bulk.c, tds.h
    • \n+
    • tds_bcp_start_copy_in() : tds.h, bulk.c
    • \n+
    • tds_bcp_start_insert_stmt() : bulk.c
    • \n
    • tds_canonical_charset() : iconv.c
    • \n
    • tds_canonical_charset_name() : iconv.c
    • \n
    • tds_close_socket() : tds.h
    • \n-
    • TDS_COMPILETIME_SETTINGS : tds.h
    • \n+
    • TDS_COMPILETIME_SETTINGS : tds.h
    • \n
    • tds_config_verstr() : tds.h
    • \n-
    • tds_convert_stream() : stream.c
    • \n+
    • tds_convert_stream() : stream.c
    • \n
    • tds_convert_string() : tds.h
    • \n-
    • tds_copy_stream() : stream.c
    • \n+
    • tds_copy_stream() : stream.c
    • \n
    • tds_count_placeholders() : tds.h
    • \n
    • tds_cursor_dealloc() : tds.h
    • \n-
    • tds_datain_stream_init() : stream.c
    • \n-
    • tds_datain_stream_read() : stream.c
    • \n-
    • tds_dataout_stream_init() : stream.c
    • \n-
    • tds_dataout_stream_write() : stream.c
    • \n+
    • tds_datain_stream_init() : stream.c
    • \n+
    • tds_datain_stream_read() : stream.c
    • \n+
    • tds_dataout_stream_init() : stream.c
    • \n+
    • tds_dataout_stream_write() : stream.c
    • \n
    • tds_datecrack() : tds.h
    • \n-
    • TDS_DEAD : tds.h
    • \n+
    • TDS_DEAD : tds.h
    • \n
    • tds_deferred_cursor_dealloc() : tds.h
    • \n
    • tds_deferred_unprepare() : tds.h
    • \n
    • tds_detach_results() : tds.h
    • \n-
    • TDS_DONE_CANCELLED : tds.h
    • \n-
    • TDS_DONE_COUNT : tds.h
    • \n-
    • TDS_DONE_ERROR : tds.h
    • \n-
    • TDS_DONE_FINAL : tds.h
    • \n-
    • TDS_DONE_INXACT : tds.h
    • \n-
    • TDS_DONE_MORE_RESULTS : tds.h
    • \n-
    • TDS_DONE_PROC : tds.h
    • \n-
    • TDS_DONE_SRVERROR : tds.h
    • \n+
    • TDS_DONE_CANCELLED : tds.h
    • \n+
    • TDS_DONE_COUNT : tds.h
    • \n+
    • TDS_DONE_ERROR : tds.h
    • \n+
    • TDS_DONE_FINAL : tds.h
    • \n+
    • TDS_DONE_INXACT : tds.h
    • \n+
    • TDS_DONE_MORE_RESULTS : tds.h
    • \n+
    • TDS_DONE_PROC : tds.h
    • \n+
    • TDS_DONE_SRVERROR : tds.h
    • \n
    • tds_dstr_get() : tds.h, read.c
    • \n-
    • tds_dynamic_stream_init() : stream.c
    • \n-
    • tds_dynamic_stream_write() : stream.c
    • \n-
    • TDS_ENCODING : tds.h
    • \n-
    • tds_end : tds.h
    • \n-
    • tds_file_stream_read() : bulk.c
    • \n+
    • tds_dynamic_stream_init() : stream.c
    • \n+
    • tds_dynamic_stream_write() : stream.c
    • \n+
    • TDS_ENCODING : tds.h
    • \n+
    • tds_end : tds.h
    • \n+
    • tds_file_stream_read() : bulk.c
    • \n
    • tds_fix_column_size() : tds.h
    • \n
    • tds_fix_login() : tds.h
    • \n
    • tds_flush_packet() : tds.h
    • \n
    • tds_free_input_params() : tds.h
    • \n
    • tds_free_namelist() : token.c
    • \n
    • tds_free_param_result() : tds.h
    • \n
    • tds_freeze() : tds.h
    • \n
    • tds_freeze_abort() : tds.h
    • \n
    • tds_freeze_close() : tds.h
    • \n
    • tds_freeze_close_len() : tds.h
    • \n
    • tds_freeze_written() : tds.h
    • \n-
    • tds_generic_get() : data.c
    • \n-
    • tds_generic_put() : data.c
    • \n-
    • tds_generic_put_info() : data.c
    • \n+
    • tds_generic_get() : data.c
    • \n+
    • tds_generic_put() : data.c
    • \n+
    • tds_generic_put_info() : data.c
    • \n
    • tds_get_byte() : read.c, tds.h
    • \n
    • tds_get_char_data() : read.c, tds.h
    • \n
    • tds_get_column_declaration() : tds.h
    • \n
    • tds_get_compiletime_settings() : tds.h
    • \n-
    • tds_get_conversion_type() : tds.h
    • \n+
    • tds_get_conversion_type() : tds.h
    • \n
    • tds_get_data_info() : token.c
    • \n
    • tds_get_home_file() : tds.h
    • \n-
    • tds_get_locale() : tds.h
    • \n+
    • tds_get_locale() : tds.h
    • \n
    • tds_get_n() : read.c, tds.h
    • \n-
    • tds_get_size_by_type() : tds.h
    • \n+
    • tds_get_size_by_type() : tds.h
    • \n
    • tds_get_string() : read.c, tds.h
    • \n
    • tds_get_token_size() : token.c, tds.h
    • \n
    • tds_get_uint() : read.c, tds.h
    • \n
    • tds_get_uint8() : read.c, tds.h
    • \n
    • tds_get_usmallint() : read.c, tds.h
    • \n-
    • tds_get_varint_size() : tds.h
    • \n+
    • tds_get_varint_size() : tds.h
    • \n
    • tds_goodread() : tds.h
    • \n
    • tds_goodwrite() : tds.h
    • \n
    • tds_iconv() : iconv.c
    • \n-
    • tds_iconv_alloc() : iconv.c, tds.h
    • \n+
    • tds_iconv_alloc() : iconv.c, tds.h
    • \n
    • tds_iconv_from_collate() : iconv.c, tds.h
    • \n
    • tds_iconv_get_info() : iconv.c
    • \n
    • tds_iconv_info_init() : iconv.c
    • \n
    • tds_iconv_init() : iconv.c
    • \n-
    • TDS_IDLE : tds.h
    • \n+
    • TDS_IDLE : tds.h
    • \n
    • tds_init_login() : tds.h
    • \n-
    • TDS_IS_MSSQL : tds.h
    • \n-
    • TDS_IS_SYBASE : tds.h
    • \n+
    • TDS_IS_MSSQL : tds.h
    • \n+
    • TDS_IS_SYBASE : tds.h
    • \n
    • tds_lookup_dynamic() : token.c, tds.h
    • \n
    • tds_lookup_host() : tds.h
    • \n-
    • TDS_MS_VER : tds.h
    • \n+
    • TDS_MS_VER : tds.h
    • \n
    • tds_needs_unprepare() : tds.h
    • \n
    • tds_next_placeholder() : tds.h
    • \n
    • tds_ntlm_get_auth() : tds.h
    • \n-
    • tds_numeric_bytes_per_prec : tds.h
    • \n-
    • tds_numeric_to_string() : tds.h
    • \n+
    • tds_numeric_bytes_per_prec : tds.h
    • \n+
    • tds_numeric_to_string() : tds.h
    • \n
    • tds_peek() : read.c, tds.h
    • \n-
    • TDS_PENDING : tds.h
    • \n+
    • TDS_PENDING : tds.h
    • \n
    • tds_pr_op() : token.c
    • \n-
    • tds_prdatatype() : dblib.c
    • \n+
    • tds_prdatatype() : dblib.c
    • \n
    • tds_process_auth() : token.c
    • \n
    • tds_process_cancel() : token.c, tds.h
    • \n
    • tds_process_col_fmt() : token.c
    • \n
    • tds_process_col_name() : token.c
    • \n
    • tds_process_colinfo() : token.c
    • \n
    • tds_process_compute() : token.c
    • \n
    • tds_process_compute_names() : token.c
    • \n@@ -211,87 +211,87 @@\n
    • tds_process_pending_closes() : token.c
    • \n
    • tds_process_row() : token.c
    • \n
    • tds_process_simple_query() : token.c, tds.h
    • \n
    • tds_process_tabname() : token.c
    • \n
    • tds_process_tokens() : token.c, tds.h
    • \n
    • tds_prtype() : token.c, tds.h
    • \n
    • tds_put_string() : tds.h
    • \n-
    • tds_put_tinyint : tds.h
    • \n+
    • tds_put_tinyint : tds.h
    • \n
    • tds_quote_id() : tds.h
    • \n
    • tds_quote_id_rpc() : tds.h
    • \n
    • tds_quote_string() : tds.h
    • \n
    • tds_read_conf_file() : tds.h
    • \n
    • tds_read_conf_section() : tds.h
    • \n
    • tds_read_config_info() : tds.h
    • \n
    • tds_read_namelist() : token.c
    • \n
    • tds_read_packet() : tds.h
    • \n-
    • TDS_READING : tds.h
    • \n+
    • TDS_READING : tds.h
    • \n
    • tds_realloc() : tds.h
    • \n
    • tds_release_dynamic() : tds.h
    • \n
    • tds_select() : tds.h
    • \n
    • tds_send_cancel() : tds.h
    • \n-
    • TDS_SENDING : tds.h
    • \n-
    • tds_set_column_type() : data.c, tds.h
    • \n+
    • TDS_SENDING : tds.h
    • \n+
    • tds_set_column_type() : data.c, tds.h
    • \n
    • tds_set_cur_dyn() : tds.h
    • \n
    • tds_set_iconv_name() : iconv.c
    • \n
    • tds_set_interfaces_file_loc() : tds.h
    • \n-
    • tds_set_param_type() : data.c, tds.h
    • \n-
    • tds_set_server() : tds.h
    • \n-
    • tds_set_state() : tds.h
    • \n+
    • tds_set_param_type() : data.c, tds.h
    • \n+
    • tds_set_server() : tds.h
    • \n+
    • tds_set_state() : tds.h
    • \n
    • tds_skip_comment() : tds.h
    • \n
    • tds_skip_quoted() : tds.h
    • \n
    • tds_socket_set_nonblocking() : tds.h
    • \n
    • tds_start_query() : tds.h
    • \n-
    • TDS_STATE : tds.h
    • \n-
    • tds_states : tds.h
    • \n-
    • tds_staticin_stream_init() : stream.c
    • \n-
    • tds_staticin_stream_read() : stream.c
    • \n-
    • tds_staticout_stream_init() : stream.c
    • \n-
    • tds_staticout_stream_write() : stream.c
    • \n-
    • tds_strndup() : tds.h
    • \n+
    • TDS_STATE : tds.h
    • \n+
    • tds_states : tds.h
    • \n+
    • tds_staticin_stream_init() : stream.c
    • \n+
    • tds_staticin_stream_read() : stream.c
    • \n+
    • tds_staticout_stream_init() : stream.c
    • \n+
    • tds_staticout_stream_write() : stream.c
    • \n+
    • tds_strndup() : tds.h
    • \n
    • tds_submit_begin_tran() : tds.h
    • \n
    • tds_submit_commit() : tds.h
    • \n
    • tds_submit_execdirect() : tds.h
    • \n
    • tds_submit_execute() : tds.h
    • \n
    • tds_submit_optioncmd() : tds.h
    • \n
    • tds_submit_prepare() : tds.h
    • \n
    • tds_submit_query() : tds.h
    • \n
    • tds_submit_query_params() : tds.h
    • \n
    • tds_submit_queryf() : tds.h
    • \n
    • tds_submit_rollback() : tds.h
    • \n
    • tds_submit_rpc() : tds.h
    • \n
    • tds_submit_unprepare() : tds.h
    • \n-
    • tds_swap_numeric() : data.c
    • \n-
    • TDS_SYB_VER : tds.h
    • \n+
    • tds_swap_numeric() : data.c
    • \n+
    • TDS_SYB_VER : tds.h
    • \n
    • tds_sys_iconv_open() : iconv.c
    • \n
    • tds_token_name() : token.c
    • \n
    • tds_unget_byte() : read.c, tds.h
    • \n-
    • tds_write_dump : tds.h
    • \n-
    • tds_writetext_continue() : bulk.c, tds.h
    • \n-
    • tds_writetext_end() : bulk.c, tds.h
    • \n-
    • tds_writetext_start() : bulk.c, tds.h
    • \n-
    • TDS_WRITING : tds.h
    • \n-
    • TDSBLOB : tds.h
    • \n-
    • TDSCURSOR : tds.h
    • \n-
    • TDSDATEREC : tds.h
    • \n+
    • tds_write_dump : tds.h
    • \n+
    • tds_writetext_continue() : bulk.c, tds.h
    • \n+
    • tds_writetext_end() : bulk.c, tds.h
    • \n+
    • tds_writetext_start() : bulk.c, tds.h
    • \n+
    • TDS_WRITING : tds.h
    • \n+
    • TDSBLOB : tds.h
    • \n+
    • TDSCURSOR : tds.h
    • \n+
    • TDSDATEREC : tds.h
    • \n
    • tdsdbopen() : sybdb.h, dblib.c
    • \n-
    • tdsdump_close() : tds.h
    • \n-
    • tdsdump_col() : tds.h
    • \n-
    • tdsdump_dump_buf() : tds.h
    • \n-
    • tdsdump_log() : tds.h
    • \n-
    • tdsdump_off() : tds.h
    • \n-
    • tdsdump_on() : tds.h
    • \n-
    • tdsdump_open() : tds.h
    • \n-
    • TDSDYNAMIC : tds.h
    • \n-
    • TDSENV : tds.h
    • \n-
    • tdserror() : tds.h
    • \n-
    • TDSFILESTREAM : bulk.c
    • \n-
    • TDSPBCB : bulk.c
    • \n-
    • TDSRESULTINFO : tds.h
    • \n-
    • TDSVARIANT : tds.h
    • \n+
    • tdsdump_close() : tds.h
    • \n+
    • tdsdump_col() : tds.h
    • \n+
    • tdsdump_dump_buf() : tds.h
    • \n+
    • tdsdump_log() : tds.h
    • \n+
    • tdsdump_off() : tds.h
    • \n+
    • tdsdump_on() : tds.h
    • \n+
    • tdsdump_open() : tds.h
    • \n+
    • TDSDYNAMIC : tds.h
    • \n+
    • TDSENV : tds.h
    • \n+
    • tdserror() : tds.h
    • \n+
    • TDSFILESTREAM : bulk.c
    • \n+
    • TDSPBCB : bulk.c
    • \n+
    • TDSRESULTINFO : tds.h
    • \n+
    • TDSVARIANT : tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_type.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_type.html", "unified_diff": "@@ -67,27 +67,27 @@\n \n \n \n \n
    \n
    Here is a list of all documented typedefs with links to the documentation:
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/globals_vars.html", "source2": "./usr/share/doc/freetds-doc/reference/globals_vars.html", "unified_diff": "@@ -66,16 +66,16 @@\n \n \n \n \n \n
    \n
    Here is a list of all documented variables with links to the documentation:
      \n-
    • tds_numeric_bytes_per_prec : tds.h
    • \n-
    • tds_write_dump : tds.h
    • \n+
    • tds_numeric_bytes_per_prec : tds.h
    • \n+
    • tds_write_dump : tds.h
    • \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/typedefs_0.js", "source2": "./usr/share/doc/freetds-doc/reference/typedefs_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,5 @@\n var searchData = [\n ['dblib_5ferror_5fmessage_0', ['DBLIB_ERROR_MESSAGE', ['../a00533.html#ga8f2b5c6bcfed3eb54e97b42a6f8930f8', 1, 'dblib.c']]],\n- ['dblibcontext_1', ['DBLIBCONTEXT', ['../a00170.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]],\n+ ['dblibcontext_1', ['DBLIBCONTEXT', ['../a00080.html#a8ff1bdcccb992dd688bc35d178c4bf3b', 1, 'dblib.c']]],\n ['dstr_2', ['DSTR', ['../a00545.html#gafddddf5bd7ad223cadee3d3bdc899954', 1, 'string.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/typedefs_1.js", "source2": "./usr/share/doc/freetds-doc/reference/typedefs_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,14 +1,14 @@\n var searchData = [\n- ['tds_5fcompiletime_5fsettings_0', ['TDS_COMPILETIME_SETTINGS', ['../a00368.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'tds.h']]],\n- ['tds_5fencoding_1', ['TDS_ENCODING', ['../a00368.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'tds.h']]],\n- ['tds_5fstate_2', ['TDS_STATE', ['../a00368.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]],\n- ['tdsblob_3', ['TDSBLOB', ['../a00368.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]],\n- ['tdscursor_4', ['TDSCURSOR', ['../a00368.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]],\n- ['tdsdaterec_5', ['TDSDATEREC', ['../a00368.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'tds.h']]],\n- ['tdsdynamic_6', ['TDSDYNAMIC', ['../a00368.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]],\n- ['tdsenv_7', ['TDSENV', ['../a00368.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]],\n- ['tdsfilestream_8', ['TDSFILESTREAM', ['../a00092.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]],\n- ['tdspbcb_9', ['TDSPBCB', ['../a00092.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]],\n- ['tdsresultinfo_10', ['TDSRESULTINFO', ['../a00368.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]],\n- ['tdsvariant_11', ['TDSVARIANT', ['../a00368.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]]\n+ ['tds_5fcompiletime_5fsettings_0', ['TDS_COMPILETIME_SETTINGS', ['../a00425.html#a1de034b895312fc0cfae0e28f8921a47', 1, 'tds.h']]],\n+ ['tds_5fencoding_1', ['TDS_ENCODING', ['../a00425.html#ae21e9f12e8ee5219228ee6b6a41dec66', 1, 'tds.h']]],\n+ ['tds_5fstate_2', ['TDS_STATE', ['../a00425.html#ac0d502ab90609c39fe7713fe0dfbefad', 1, 'tds.h']]],\n+ ['tdsblob_3', ['TDSBLOB', ['../a00425.html#a47b154752431b2379988dbfdff394577', 1, 'tds.h']]],\n+ ['tdscursor_4', ['TDSCURSOR', ['../a00425.html#afe061eb245f3006d93940a20415692a7', 1, 'tds.h']]],\n+ ['tdsdaterec_5', ['TDSDATEREC', ['../a00425.html#a3b40b4faf314267146c2005e56eebe7b', 1, 'tds.h']]],\n+ ['tdsdynamic_6', ['TDSDYNAMIC', ['../a00425.html#a856d78b7438fef3d6e6c0a8e4566d978', 1, 'tds.h']]],\n+ ['tdsenv_7', ['TDSENV', ['../a00425.html#a42c559939ed16a39c0318a6f543c576e', 1, 'tds.h']]],\n+ ['tdsfilestream_8', ['TDSFILESTREAM', ['../a00176.html#ac2b7f7b7bb486f90e1053bfb829ca2ba', 1, 'bulk.c']]],\n+ ['tdspbcb_9', ['TDSPBCB', ['../a00176.html#af31a5af3c7480dc3a16576dfc84f3b06', 1, 'bulk.c']]],\n+ ['tdsresultinfo_10', ['TDSRESULTINFO', ['../a00425.html#a1efbb2f3844cb2ea89af03721ac67277', 1, 'tds.h']]],\n+ ['tdsvariant_11', ['TDSVARIANT', ['../a00425.html#a25488abe3449d4cdaaa97587d34f9174', 1, 'tds.h']]]\n ];\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/variables_10.js", "source2": "./usr/share/doc/freetds-doc/reference/variables_10.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,19 +1,19 @@\n var searchData = [\n ['tds_0', ['tds', ['../a01218.html#a182ed346382edef2962aca11c7cabc22', 1, 'tds_freeze::tds'],\n ['../a01006.html#ad357e33164f46fce2bc70267d71a1959', 1, '_hstmt::tds']\n ]],\n ['tds_5fctx_1', ['tds_ctx', ['../a00594.html#afb3fb2d591c0f75b9412f8ca77e2629d', 1, 'dblib_context']]],\n ['tds_5fctx_5fref_5fcount_2', ['tds_ctx_ref_count', ['../a00594.html#ad01d901acbc92e8c369e6a6c784d7446', 1, 'dblib_context']]],\n- ['tds_5fnumeric_5fbytes_5fper_5fprec_3', ['tds_numeric_bytes_per_prec', ['../a00368.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]],\n+ ['tds_5fnumeric_5fbytes_5fper_5fprec_3', ['tds_numeric_bytes_per_prec', ['../a00425.html#a4da9eedb6322f7dfca89d5d89be7b374', 1, 'numeric.c']]],\n ['tds_5fstr_5fempty_4', ['tds_str_empty', ['../a00545.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c'],\n ['../a00545.html#ga676fd3c5c489584d09c89d66c7a0af2d', 1, 'tds_str_empty: tdsstring.c']\n ]],\n ['tds_5fversion_5', ['tds_version', ['../a01118.html#a8f9f756b25fd18916a6080f9c22f835d', 1, 'tds_login']]],\n- ['tds_5fwrite_5fdump_6', ['tds_write_dump', ['../a00368.html#a4766b1a553077cb3257d36b9ac28f5b5', 1, 'log.c']]],\n+ ['tds_5fwrite_5fdump_6', ['tds_write_dump', ['../a00425.html#a4766b1a553077cb3257d36b9ac28f5b5', 1, 'log.c']]],\n ['term_5flen_7', ['term_len', ['../a00694.html#aae893302d33ee1e9d83c3d85d7390dca', 1, 'tds_file_stream']]],\n ['terminator_8', ['terminator', ['../a00694.html#a463c28a7d862c0a6d7bf3170dd614dc0', 1, 'tds_file_stream']]],\n ['time_9', ['time', ['../a01298.html#a6bb5dcd5b47813b71934546e0c60e035', 1, 'DBDATETIMEALL::time'],\n ['../a01094.html#afd6a58ec251f2c08a040917ba5a8cd3f', 1, 'TDS_DATETIMEALL::time']\n ]],\n ['timezone_10', ['timezone', ['../a01098.html#a624e21e65d0ae89797b3a7eadc48829f', 1, 'tdsdaterec']]],\n ['tm_5fhour_11', ['tm_hour', ['../a00718.html#a6ece03e77f69035da83d5739e16ef905', 1, 'tds_time']]],\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00017.html", "source2": "./usr/share/doc/freetds-doc/reference/a00158.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -79,15 +79,15 @@\n \n
    \n \n

    Grab data from TDS packets. \n More...

    \n
    #include <config.h>
    \n #include <assert.h>
    \n-#include <freetds/tds.h>
    \n+#include <freetds/tds.h>
    \n #include <freetds/iconv.h>
    \n #include <freetds/bytes.h>
    \n #include <freetds/stream.h>
    \n #include <freetds/utils/string.h>
    \n #include <freetds/checks.h>
    \n
    \n Include dependency graph for read.c:
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00020_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00149_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026.html", "source2": "./usr/share/doc/freetds-doc/reference/a00236.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -79,60 +79,60 @@\n
    \n
    \n \n

    Handle stream of data. \n More...

    \n
    #include <config.h>
    \n #include <assert.h>
    \n-#include <freetds/tds.h>
    \n+#include <freetds/tds.h>
    \n #include <freetds/iconv.h>
    \n #include <freetds/stream.h>
    \n
    \n Include dependency graph for stream.c:
    \n
    \n
    \n
    \n
    \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n

    \n Functions

    TDSRET tds_convert_stream (TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION direction, TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
    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.
     
    TDSRET tds_copy_stream (TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
    TDSRET tds_copy_stream (TDSINSTREAM *istream, TDSOUTSTREAM *ostream)
     Reads and writes from a stream to another.
     
    void tds_datain_stream_init (TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
    void tds_datain_stream_init (TDSDATAINSTREAM *stream, TDSSOCKET *tds, size_t wire_size)
     Initialize a data input stream.
     
    \n static int tds_datain_stream_read (TDSINSTREAM *stream, void *ptr, size_t len)
     Reads data from network for input stream.
     
    void tds_dataout_stream_init (TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
    void tds_dataout_stream_init (TDSDATAOUTSTREAM *stream, TDSSOCKET *tds)
     Initialize a data output stream.
     
    \n static int tds_dataout_stream_write (TDSOUTSTREAM *stream, size_t len)
     Writes data to network for output stream.
     
    TDSRET tds_dynamic_stream_init (TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
    TDSRET tds_dynamic_stream_init (TDSDYNAMICSTREAM *stream, void **ptr, size_t allocated)
     Initialize a dynamic output stream.
     
    \n static int tds_dynamic_stream_write (TDSOUTSTREAM *stream, size_t len)
     Writes data to a dynamic allocated buffer.
     
    void tds_staticin_stream_init (TDSSTATICINSTREAM *stream, const void *ptr, size_t len)
    void tds_staticin_stream_init (TDSSTATICINSTREAM *stream, const void *ptr, size_t len)
     Initialize an input stream for read from a static allocated buffer.
     
    \n static int tds_staticin_stream_read (TDSINSTREAM *stream, void *ptr, size_t len)
     Reads data from a static allocated buffer.
     
    void tds_staticout_stream_init (TDSSTATICOUTSTREAM *stream, void *ptr, size_t len)
    void tds_staticout_stream_init (TDSSTATICOUTSTREAM *stream, void *ptr, size_t len)
     Initialize an output stream for write into a static allocated buffer.
     
    \n static int tds_staticout_stream_write (TDSOUTSTREAM *stream, size_t len)
     Writes data to a static allocated buffer.
     
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_cgraph.dot", "comments": ["Files 9% similar despite different names"], "unified_diff": "@@ -3,11 +3,11 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize a dynamic output stream.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_realloc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00541.html#ga8645f5abc49db03d14b66f72b83a9a4c\",tooltip=\"Reallocate a pointer and update it if success.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a4f9e40da6941cb9407d0da5bc3030517_icgraph.dot", "comments": ["Files 6% similar despite different names"], "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize a dynamic output stream.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a50bc3749988d1c3c441044fc07ab44e4_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Reads and writes from a stream to another.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a9d8eb43a81ff58ab423dce0ce95b9564_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_cgraph.dot", "comments": ["Files 2% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_staticout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a1d92ebe06f18378ac17ccfd20db05126\",tooltip=\"Writes data to a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_a9fe0d3799d2e3bde49b614c9d0c3785d_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -7,19 +7,19 @@\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_alloc_get_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gafb26aba5d935e40b87b95e21a5185848\",tooltip=\"Reads a string from wire in a new allocated buffer.\"];\n Node5 -> Node48 [id=\"edge6_Node000005_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node5 -> Node60 [id=\"edge7_Node000005_Node000060\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node60 [id=\"Node000060\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node60 [id=\"Node000060\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node5 -> Node61 [id=\"edge8_Node000005_Node000061\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node61 [id=\"Node000061\",label=\"tds_process_dynamic\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga5cfc0340d8d717e67f60037e029b2142\",tooltip=\"tds_process_dynamic() finds the element of the dyns array for the id\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_cgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_dataout_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize a data output stream.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_dataout_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#ae38a590ee08cf398e7adef536ac94538\",tooltip=\"Writes data to network for output stream.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00236_aa038a9125979f8f0915dbd53cbf27e5a_icgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_cgraph.dot", "comments": ["Files 11% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_staticin_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize an input stream for read from a static allocated buffer.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_staticin_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a76b02f1fa5b79dc7e1ef2651a9afe3f7\",tooltip=\"Reads data from a static allocated buffer.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00236_aa9e1e45f0305622dd6aed9f8fe158581_icgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_cgraph.dot", "comments": ["Files 4% similar despite different names"], "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize a data input stream.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_read_packet\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga410619783bdf2bb60b0f27a5578e0e07\",tooltip=\"Read in one 'packet' from the server.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00026_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00236_abc3a77c8aa28842e7f28583cbabc1415_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -7,20 +7,20 @@\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Initialize a data input stream.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n+ Node4 [id=\"Node000004\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#abac4d689e0e31e80587f89247c6395a4\",tooltip=\"Read a data from wire.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_get_string\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga90f080e6e9448feac15dee1370d66802\",tooltip=\"Fetch a string from the wire.\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"tds_alloc_get_string\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#gafb26aba5d935e40b87b95e21a5185848\",tooltip=\"Reads a string from wire in a new allocated buffer.\"];\n Node5 -> Node48 [id=\"edge6_Node000005_Node000048\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node48 [id=\"Node000048\",label=\"tds_dstr_get\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga017c427e9599c031be5c555cb32abe2c\",tooltip=\"Reads a string from wire and put in a DSTR.\"];\n Node5 -> Node60 [id=\"edge7_Node000005_Node000060\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node60 [id=\"Node000060\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node60 [id=\"Node000060\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n Node5 -> Node61 [id=\"edge8_Node000005_Node000061\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node61 [id=\"Node000061\",label=\"tds_process_dynamic\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00544.html#ga5cfc0340d8d717e67f60037e029b2142\",tooltip=\"tds_process_dynamic() finds the element of the dyns array for the id\"];\n Node1 -> Node4 [id=\"edge9_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080_a31604382d8b77257aad203f409155a29_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00179_a31604382d8b77257aad203f409155a29_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a86768d86059c5addf9a3f89edb1ef44e\",tooltip=\"Set type of column initializing all dependency.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a86768d86059c5addf9a3f89edb1ef44e\",tooltip=\"Set type of column initializing all dependency.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a31604382d8b77257aad203f409155a29_icgraph.dot", "comments": ["Files 6% similar despite different names"], "unified_diff": "@@ -1,11 +1,11 @@\n-digraph \"tds_set_param_type\"\n+digraph \"tds_set_column_type\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- rankdir=\"LR\";\n- Node1 [id=\"Node000001\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n- Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a31604382d8b77257aad203f409155a29\",tooltip=\"Set type of column initializing all dependency.\"];\n+ rankdir=\"RL\";\n+ Node1 [id=\"Node000001\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n+ Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a86768d86059c5addf9a3f89edb1ef44e\",tooltip=\"Set type of column initializing all dependency.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00179_aa818c1cbf4d16e609b7e4895cc7ed74f_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_swap_numeric\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Converts numeric from Microsoft representation to internal one (Sybase).\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_generic_put\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a84e17808683ba2dd956e811a42e23176\",tooltip=\"Write data to wire.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080_aabd0e5f15615b5c141c525b76e746520_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00179_aabd0e5f15615b5c141c525b76e746520_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00080_abac4d689e0e31e80587f89247c6395a4_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00179_abac4d689e0e31e80587f89247c6395a4_cgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,29 +3,29 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_generic_get\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Read a data from wire.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_datain_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abc3a77c8aa28842e7f28583cbabc1415\",tooltip=\"Initialize a data input stream.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_datain_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a04b537d889f7d4c9b9701eb81baf7efd\",tooltip=\"Reads data from network for input stream.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_get_n\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#gae777dd57e8d1bb40349d7d7d8434fddf\",tooltip=\"Get N bytes from the buffer and return them in the already allocated space given to us.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_read_packet\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00543.html#ga410619783bdf2bb60b0f27a5578e0e07\",tooltip=\"Read in one 'packet' from the server.\"];\n Node1 -> Node7 [id=\"edge5_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"tds_get_byte\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga0cb72d3f6943795c39db1fa692be0a58\",tooltip=\"Return a single byte from the input buffer.\"];\n Node7 -> Node5 [id=\"edge6_Node000007_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node8 [id=\"edge7_Node000001_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"tds_get_char_data\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga8d214089b6e97fc0da5e0be09f216d73\",tooltip=\"Fetch character data the wire.\"];\n Node8 -> Node9 [id=\"edge8_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"read_and_convert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00543.html#ga676c4dee6522815b16fdc8e448e43590\",tooltip=\"For UTF-8 and similar, tds_iconv() may encounter a partial sequence when the chunk boundary is not al...\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node9 -> Node2 [id=\"edge10_Node000009_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 -> Node14 [id=\"edge11_Node000009_Node000014\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node14 [id=\"Node000014\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00026.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n+ Node14 [id=\"Node000014\",label=\"tds_staticout_stream_init\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00236.html#a9fe0d3799d2e3bde49b614c9d0c3785d\",tooltip=\"Initialize an output stream for write into a static allocated buffer.\"];\n Node8 -> Node4 [id=\"edge12_Node000008_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge13_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00089.html", "source2": "./usr/share/doc/freetds-doc/reference/a00230.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -81,15 +81,15 @@\n
    \n
    \n \n

    Contains all routines to get replies from server. \n More...

    \n
    #include <config.h>
    \n #include <assert.h>
    \n-#include <freetds/tds.h>
    \n+#include <freetds/tds.h>
    \n #include <freetds/utils/string.h>
    \n #include <freetds/convert.h>
    \n #include <freetds/iconv.h>
    \n #include <freetds/checks.h>
    \n #include <freetds/bytes.h>
    \n #include <freetds/alloca.h>
    \n #include <freetds/encodings.h>
    \n@@ -105,15 +105,15 @@\n Classes\n struct  namelist\n  Holds list of names. More...
    \n  \n \n \n-\n+\n \n

    \n Macros

    #define GET_STRING(dest, len_type)
    #define GET_STRING(dest, len_type)
     
    \n \n \n \n \n@@ -152,15 +152,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -190,15 +190,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092.html", "source2": "./usr/share/doc/freetds-doc/reference/a00176.html", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -81,15 +81,15 @@\n \n
    \n \n

    Handle bulk copy. \n More...

    \n
    #include <config.h>
    \n #include <assert.h>
    \n-#include <freetds/tds.h>
    \n+#include <freetds/tds.h>
    \n #include <freetds/checks.h>
    \n #include <freetds/bytes.h>
    \n #include <freetds/iconv.h>
    \n #include <freetds/stream.h>
    \n #include <freetds/utils/string.h>
    \n #include <freetds/replacements.h>
    \n
    \n@@ -116,70 +116,70 @@\n
    \n \n \n

    \n Functions

    static void adjust_character_column_size (TDSSOCKET *tds, TDSCOLUMN *curcol)
     Adjust column size according to client's encoding.
     
     
    static TDSRET tds_get_data_info (TDSSOCKET *tds, TDSCOLUMN *curcol, int is_param)
     Reads data metadata from wire.
     
    int tds_get_token_size (int marker)
     tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determine how to read past a token
     
    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, 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.
    \n typedef struct tds_pbcb TDSPBCB
     Holds clause buffer.
     
    \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n+static void \n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n

    \n Functions

    static int tds5_bcp_add_fixed_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, unsigned char *rowbuffer, int start)
    static int tds5_bcp_add_fixed_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, unsigned char *rowbuffer, int start)
     Add fixed size columns to the row.
     
    static int tds5_bcp_add_variable_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, TDS_UCHAR *rowbuffer, int start, int *pncols)
    static int tds5_bcp_add_variable_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, TDS_UCHAR *rowbuffer, int start, int *pncols)
     Add variable size columns to the row.
     
    \n static TDSRET tds5_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset)
     
    \n static void tds5_swap_data (const TDSCOLUMN *col, void *p)
     
    static TDSRET tds7_bcp_send_colmetadata (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    static TDSRET tds7_bcp_send_colmetadata (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Send BCP metadata to server.
     
    static TDSRET tds7_build_bulk_insert_stmt (TDSSOCKET *tds, TDSPBCB *clause, TDSCOLUMN *bcpcol, int first)
    static TDSRET tds7_build_bulk_insert_stmt (TDSSOCKET *tds, TDSPBCB *clause, TDSCOLUMN *bcpcol, int first)
     Help to build query to be sent to server.
     
    \n static TDSRET tds7_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, int offset)
     
    TDSRET tds_bcp_done (TDSSOCKET *tds, int *rows_copied)
    TDSRET tds_bcp_done (TDSSOCKET *tds, int *rows_copied)
     Tell we finished sending BCP data to server.
     
    TDSRET tds_bcp_fread (TDSSOCKET *tds, TDSICONV *char_conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes)
    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().
     
    TDSRET tds_bcp_init (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    TDSRET tds_bcp_init (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Initialize BCP information.
     
    \n-static void tds_bcp_row_free (TDSRESULTINFO *result, unsigned char *row)
    tds_bcp_row_free (TDSRESULTINFO *result, unsigned char *row)
     Free row data allocated in the result set.
     
    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)
    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)
    TDSRET tds_bcp_start (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Start sending BCP data to server.
     
    TDSRET tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    TDSRET tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Start bulk copy to server.
     
    static TDSRET tds_bcp_start_insert_stmt (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    static TDSRET tds_bcp_start_insert_stmt (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Prepare the query to be sent to server to request BCP information.
     
    static int tds_file_stream_read (TDSINSTREAM *stream, void *ptr, size_t len)
    static int tds_file_stream_read (TDSINSTREAM *stream, void *ptr, size_t len)
     Reads a chunk of data from file stream checking for terminator.
     
    TDSRET tds_writetext_continue (TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size)
    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)
    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)
    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.
     
    \n

    Detailed Description

    \n

    Handle bulk copy.

    \n

    Function Documentation

    \n \n@@ -408,15 +408,15 @@\n (\n TDSSOCKET * \n tds, \n \n \n \n \n- TDSPBCB * \n+ TDSPBCB * \n clause, \n \n \n \n \n TDSCOLUMN * \n bcpcol, \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a1b83c9db016b481aa1fa0352f976d50d_icgraph.dot", "comments": ["Files 5% similar despite different names"], "unified_diff": "@@ -3,13 +3,13 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a86ac92bd8a3c61a413d27150ec9bc202\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_read_hostfile\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga1b57d952a9d72f375c3296124affa908\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a3118c7232bc9c3e47f8ba872bb39e967_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Help to build query to be sent to server.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#ab4d7e5309152f54613d52c8469a07fd8\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node3 [id=\"Node000003\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"red\", fillcolor=\"#FFF0F0\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node3 -> Node6 [id=\"edge4_Node000003_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a4daaa551e54dbd978650e2eef89e09ff_icgraph.dot", "comments": ["Files 3% similar despite different names"], "unified_diff": "@@ -3,20 +3,20 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds7_bcp_send_colmetadata\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Send BCP metadata to server.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_start\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a8208eef2a3974ae1f0cf3c8c8ab011ce\",tooltip=\"Start sending BCP data to server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node2 -> Node6 [id=\"edge5_Node000002_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node6 -> Node3 [id=\"edge6_Node000006_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 -> Node7 [id=\"edge7_Node000006_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a5eec23828b0610c58de248c4edb53879_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a5eec23828b0610c58de248c4edb53879_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot", "comments": ["Files 2% similar despite different names"], "unified_diff": "@@ -9,12 +9,12 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node5 [id=\"Node000005\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node5 -> Node2 [id=\"edge5_Node000005_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node6 [id=\"edge6_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_cgraph.dot", "comments": ["Files 11% similar despite different names"], "unified_diff": "@@ -3,26 +3,26 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"skip_one_input_sequence\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3380140fc6eb9f2090c430f40e846876\",tooltip=\"Move the input sequence pointer to the next valid position.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_sys_iconv_open\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516\",tooltip=\"Inputs are FreeTDS canonical names, no other.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n Node1 -> Node7 [id=\"edge7_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n Node7 -> Node8 [id=\"edge8_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n Node8 -> Node9 [id=\"edge9_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_realloc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00541.html#ga8645f5abc49db03d14b66f72b83a9a4c\",tooltip=\"Reallocate a pointer and update it if success.\"];\n Node1 -> Node10 [id=\"edge10_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_a86ac92bd8a3c61a413d27150ec9bc202_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_cgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n+ Node2 [id=\"Node000002\",label=\"tds7_build_bulk_insert_stmt\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a3118c7232bc9c3e47f8ba872bb39e967\",tooltip=\"Help to build query to be sent to server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_dstr_cstr\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#gac536f0e4d77d3cff5702719362ec1766\",tooltip=\"Returns a C version (NUL terminated string) of dstr.\"];\n Node2 -> Node4 [id=\"edge3_Node000002_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"tds_dstr_len\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00545.html#ga396f139e4f886ac1b224a735138e73dd\",tooltip=\"Returns the length of the string in bytes.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_get_column_declaration\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00542.html#ga50d62edeb2a432e2dc668263f3f958ff\",tooltip=\"Return declaration for column (like \\\"varchar(20)\\\").\"];\n Node5 -> Node6 [id=\"edge5_Node000005_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ab4d7e5309152f54613d52c8469a07fd8_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -3,15 +3,15 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n Node1 [id=\"Node000001\",label=\"tds_bcp_start_insert_stmt\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Prepare the query to be sent to server to request BCP information.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node2 -> Node5 [id=\"edge4_Node000002_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ac1e460551f1188620ea478238864ac4b_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ac1e460551f1188620ea478238864ac4b_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00092_ade7df2db455b61edc83819ad60edb339_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00176_ade7df2db455b61edc83819ad60edb339_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00113_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00263_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00170_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00080_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00170_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00080_ac7a199aaeb82935f6d1dda2be551a089_icgraph.dot", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -19,9 +19,9 @@\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"dbwillconvert\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gaaf8349999c16b3c36caf5947747a2915\",tooltip=\"Test whether or not a datatype can be converted to another datatype.\"];\n Node7 -> Node8 [id=\"edge7_Node000007_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node8 [id=\"Node000008\",label=\"dbaltbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#gafefd17e15b22adda84366c817178dd7d\",tooltip=\"Bind a compute column to a program variable.\"];\n Node7 -> Node9 [id=\"edge8_Node000007_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"dbbind\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00527.html#ga873bc0f4663165e711655ade1dfae795\",tooltip=\"Tie a host variable to a resultset column.\"];\n Node9 -> Node10 [id=\"edge9_Node000009_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00167.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n+ Node10 [id=\"Node000010\",label=\"dbpivot\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00077.html#af8ada101cd189eff87b3533cbeaaa23b\",tooltip=\"Pivot the rows, creating a new resultset.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00170_aea6a865806d454280126de940478c214_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00080_aea6a865806d454280126de940478c214_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00239_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00023_source.html", "comments": ["Files 11% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: src/odbc/resource.h Source File\n+FreeTDS API: src/odbc/sqlwparams.h Source File\n \n \n \n \n \n \n \n@@ -74,44 +74,42 @@\n \n
    \n \n
    \n
    \n
    \n-
    resource.h
    \n+
    sqlwparams.h
    \n
    \n
    \n-
    1//{{NO_DEPENDENCIES}}
    \n-
    2// Microsoft Developer Studio generated include file.
    \n-
    3// Used by setup.rc
    \n-
    4//
    \n-
    5#define IDD_LOGIN 102
    \n-
    6#define IDD_DSN 106
    \n-
    7#define IDC_PROTOCOL 1003
    \n-
    8#define IDC_ADDRESS 1004
    \n-
    9#define IDC_PORT 1005
    \n-
    10#define IDC_DATABASE 1011
    \n-
    11#define IDC_DSNNAME 1015
    \n-
    12#define IDC_HINT 1017
    \n-
    13#define IDC_LOGINSERVER 1020
    \n-
    14#define IDC_LOGINUID 1021
    \n-
    15#define IDC_LOGINPWD 1022
    \n-
    16#define IDC_LOGINDUMP 1023
    \n-
    17
    \n-
    18// Next default values for new objects
    \n-
    19//
    \n-
    20#ifdef APSTUDIO_INVOKED
    \n-
    21#ifndef APSTUDIO_READONLY_SYMBOLS
    \n-
    22#define _APS_NEXT_RESOURCE_VALUE 103
    \n-
    23#define _APS_NEXT_COMMAND_VALUE 40001
    \n-
    24#define _APS_NEXT_CONTROL_VALUE 1024
    \n-
    25#define _APS_NEXT_SYMED_VALUE 101
    \n-
    26#endif
    \n-
    27#endif
    \n+
    1#if 0
    \n+
    2# ODBC_FUNC(SQLTest, (P(SQLSMALLINT, x), PCHAR(y) WIDE))
    \n+
    3#endif
    \n+
    4
    \n+
    5#undef WIDE
    \n+
    6#undef P
    \n+
    7#undef PCHAR
    \n+
    8#undef PCHARIN
    \n+
    9#undef PCHAROUT
    \n+
    10
    \n+
    11#ifdef ENABLE_ODBC_WIDE
    \n+
    12# define WIDE , int wide
    \n+
    13# define PCHAR(a) ODBC_CHAR* a
    \n+
    14#else
    \n+
    15# define WIDE
    \n+
    16# define PCHAR(a) SQLCHAR* a
    \n+
    17#endif
    \n+
    18
    \n+
    19#define P(a,b) a b
    \n+
    20#define PCHARIN(n,t) PCHAR(sz ## n), P(t, cb ## n)
    \n+
    21#define PCHAROUT(n,t) PCHAR(sz ## n), P(t, cb ## n ## Max), P(t FAR*, pcb ## n)
    \n+
    22
    \n+
    23#define ODBC_FUNC(name, params) \\
    \n+
    24 static SQLRETURN _ ## name params
    \n+
    25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,38 +7,37 @@\n \n \n Loading...\n Searching...\n No Matches\n * src\n * odbc\n-resource.h\n- 1//{{NO_DEPENDENCIES}}\n- 2// Microsoft Developer Studio generated include file.\n- 3// Used by setup.rc\n- 4//\n- 5#define IDD_LOGIN 102\n- 6#define IDD_DSN 106\n- 7#define IDC_PROTOCOL 1003\n- 8#define IDC_ADDRESS 1004\n- 9#define IDC_PORT 1005\n- 10#define IDC_DATABASE 1011\n- 11#define IDC_DSNNAME 1015\n- 12#define IDC_HINT 1017\n- 13#define IDC_LOGINSERVER 1020\n- 14#define IDC_LOGINUID 1021\n- 15#define IDC_LOGINPWD 1022\n- 16#define IDC_LOGINDUMP 1023\n- 17\n- 18// Next default values for new objects\n- 19//\n- 20#ifdef APSTUDIO_INVOKED\n- 21#ifndef APSTUDIO_READONLY_SYMBOLS\n- 22#define _APS_NEXT_RESOURCE_VALUE 103\n- 23#define _APS_NEXT_COMMAND_VALUE 40001\n- 24#define _APS_NEXT_CONTROL_VALUE 1024\n- 25#define _APS_NEXT_SYMED_VALUE 101\n- 26#endif\n- 27#endif\n+sqlwparams.h\n+ 1#if 0\n+ 2# ODBC_FUNC(SQLTest, (P(SQLSMALLINT, x), PCHAR(y) WIDE))\n+ 3#endif\n+ 4\n+ 5#undef WIDE\n+ 6#undef P\n+ 7#undef PCHAR\n+ 8#undef PCHARIN\n+ 9#undef PCHAROUT\n+ 10\n+ 11#ifdef ENABLE_ODBC_WIDE\n+ 12# define WIDE , int wide\n+ 13# define PCHAR(a) ODBC_CHAR* a\n+ 14#else\n+ 15# define WIDE\n+ 16# define PCHAR(a) SQLCHAR* a\n+ 17#endif\n+ 18\n+ 19#define P(a,b) a b\n+ 20#define PCHARIN(n,t) PCHAR(sz ## n), P(t, cb ## n)\n+ 21#define PCHAROUT(n,t) PCHAR(sz ## n), P(t, cb ## n ## Max), P(t FAR*, pcb ##\n+n)\n+ 22\n+ 23#define ODBC_FUNC(name, params) \\\n+ 24 static SQLRETURN _ ## name params\n+ 25\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00296_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00107_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00302_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00104_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00314_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00119_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00317_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00125_source.html", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368.html", "source2": "./usr/share/doc/freetds-doc/reference/a00425.html", "comments": ["Files 1% similar despite different names"], "unified_diff": "@@ -106,15 +106,15 @@\n
    \n
    \n This graph shows which files directly or indirectly include this file:
    \n
    \n
    \n
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n \n \n \n \n@@ -268,15 +268,15 @@\n \n \n \n \n \n+#define \n \n \n \n \n \n@@ -285,17 +285,17 @@\n \n \n \n \n \n-\n+\n \n-\n+\n \n \n \n \n \n@@ -457,18 +457,18 @@\n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n@@ -481,15 +481,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -548,15 +548,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -734,27 +734,27 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -795,15 +795,15 @@\n \n \n \n \n \n+typedef enum tds_states \n \n \n \n \n \n@@ -822,15 +822,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -887,15 +887,15 @@\n \n \n \n \n \n+typedef TDSRESULTINFO \n \n \n \n \n \n@@ -942,15 +942,15 @@\n ,
    \n   TDS_TYPEFLAG_DATETIME = 128\n , TDS_TYPEFLAG_NUMERIC = 256\n , TDS_TYPEFLAG_VARIANT = 512\n
    \n }\n \n-\n \n \n \n \n \n-\n-\n+\n \n \n \n \n \n-\n-\n+\n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -1184,17 +1184,17 @@\n \n \n \n \n \n+TDSCURSOR * \n \n-\n+\n \n \n \n \n \n@@ -1208,39 +1208,39 @@\n \n \n \n \n \n \n \n+TDSRESULTINFO * \n \n \n+TDSRET \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n \n@@ -1269,68 +1269,68 @@\n \n \n \n \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n \n+void \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n+TDSRET \n \n \n+TDSRET \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n+void \n \n \n \n \n \n \n \n \n+void \n \n \n \n \n \n \n@@ -1346,15 +1346,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -1369,18 +1369,18 @@\n void \n \n \n \n \n \n+void \n \n \n+void \n \n \n \n \n \n \n@@ -1404,24 +1404,24 @@\n \n \n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -1481,15 +1481,15 @@\n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n@@ -1497,35 +1497,35 @@\n \n \n \n \n \n+TDSRET \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -1612,17 +1612,17 @@\n \n \n \n \n \n+void \n \n-\n+\n \n \n \n \n \n \n \n@@ -1632,22 +1632,22 @@\n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n+void \n \n \n \n \n \n@@ -1659,27 +1659,27 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n@@ -1698,33 +1698,33 @@\n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -1734,15 +1734,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n@@ -1761,49 +1761,49 @@\n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n

    \n Classes

    union  tds_align_struct
     
    struct  tds_authentication
     
    \n #define IS_TDS74_PLUS(x)   ((x)->tds_version>=0x704)
     
    \n #define IS_TDS7_PLUS(x)   ((x)->tds_version>=0x700)
     
    \n-#define IS_TDSDEAD(x)   (((x) == NULL) || (x)->state == TDS_DEAD)
    IS_TDSDEAD(x)   (((x) == NULL) || (x)->state == TDS_DEAD)
     
    \n #define is_unicode_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_UNICODE) != 0)
     
    \n #define is_variable_type(x)   ((tds_type_flags_ms[x] & TDS_TYPEFLAG_VARIABLE) != 0)
     
     
    \n #define MAXPRECISION   77
     
    \n #define TDS_ALIGN_SIZE   sizeof(tds_align_struct)
     
    #define TDS_BYTE_SWAP16(value)
    #define TDS_BYTE_SWAP16(value)
     
    #define TDS_BYTE_SWAP32(value)
    #define TDS_BYTE_SWAP32(value)
     
    \n #define TDS_CANCELLED   ((TDSRET)-2)
     
    \n #define tds_capability_has_req(conn, cap)   \ttds_capability_enabled(&conn->capabilities.types[0], cap)
     
     
    \n #define TDS_INT_TIMEOUT   3
     
    \n #define TDS_INVALID_TYPE   ((TDS_SERVER_TYPE) 0)
     
    #define TDS_IS_MSSQL(x)   (((x)->conn->product_version & 0x80000000u)!=0)
    #define TDS_IS_MSSQL(x)   (((x)->conn->product_version & 0x80000000u)!=0)
     Check if product is Microsft SQL Server.
     
    #define TDS_IS_SYBASE(x)   (!((x)->conn->product_version & 0x80000000u))
    #define TDS_IS_SYBASE(x)   (!((x)->conn->product_version & 0x80000000u))
     Check if product is Sybase (such as Adaptive Server Enterrprice).
     
    \n #define TDS_MAJOR(x)   ((x)->tds_version >> 8)
     
    \n #define TDS_MAX_CAPABILITY   32
     
    \n #define TDS_MAX_LOGIN_STR_SZ   128
     
    \n #define TDS_MINOR(x)   ((x)->tds_version & 0xff)
     
    #define TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
    #define TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
     Calc a version number for mssql.
     
    \n #define TDS_MSG_RESULT   4044
     
    \n #define tds_new(type, n)   ((type *) malloc(sizeof(type) * (n)))
     
    \n #define tds_set_parent(tds, val)   do { ((tds)->parent) = (val); } while(0)
     
    \n #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_GENERIC(tds_socket, len)
     
    \n #define TDS_START_LEN_TINYINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 1)
     
    \n #define TDS_START_LEN_UINT(tds_socket)   TDS_START_LEN_GENERIC(tds_socket, 4)
     
     
    \n typedef struct tds_capability_type TDS_CAPABILITY_TYPE
     
    \n typedef char TDS_CHAR
     
    typedef struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
    typedef struct tds_compiletime_settings TDS_COMPILETIME_SETTINGS
     A structure to hold all the compile-time settings.
     
    \n typedef enum tds_cursor_fetch TDS_CURSOR_FETCH
     
    \n typedef enum tds_cursor_operation TDS_CURSOR_OPERATION
     
    \n typedef struct tds_cursor_status TDS_CURSOR_STATUS
     
    typedef struct tds_encoding TDS_ENCODING
    typedef struct tds_encoding TDS_ENCODING
     Information relevant to libiconv.
     
    \n typedef enum tds_encryption_level TDS_ENCRYPTION_LEVEL
     
    \n typedef tds_sysdep_real64_type TDS_FLOAT
    \n typedef tds_sysdep_real32_type TDS_REAL
     
    \n typedef int16_t TDS_SMALLINT
     
    \n-typedef enum tds_states TDS_STATE
    TDS_STATE
     values for tds->state
     
    \n typedef uint8_t TDS_TINYINT
     
    \n typedef uint8_t TDS_UCHAR
     
    \n typedef struct tds_authentication TDSAUTHENTICATION
     
    \n typedef struct tds_bcpinfo TDSBCPINFO
     
    typedef struct tds_blob TDSBLOB
    typedef struct tds_blob TDSBLOB
     Information about blobs (e.g.
     
    \n typedef struct tds_column TDSCOLUMN
     
    \n typedef struct tds_column_funcs TDSCOLUMNFUNCS
    \n typedef struct tds_multiple TDSMULTIPLE
     
    \n typedef struct tds_packet TDSPACKET
     
    \n-typedef TDSRESULTINFO TDSPARAMINFO
    TDSPARAMINFO
     
    \n typedef struct tds_poll_wakeup TDSPOLLWAKEUP
     
    \n typedef struct tds_result_info TDSRESULTINFO
     Hold information for any results.
     
    enum  tds_bcp_directions { TDS_BCP_IN = 1\n+
    enum  tds_bcp_directions { TDS_BCP_IN = 1\n , TDS_BCP_OUT = 2\n , TDS_BCP_QUERYOUT = 3\n }
     bcp direction
     
    enum  tds_cursor_fetch {
    \n   TDS_CURSOR_FETCH_NEXT = 1\n@@ -977,35 +977,35 @@\n
     
    enum  tds_encryption_level { TDS_ENCRYPTION_DEFAULT\n , TDS_ENCRYPTION_OFF\n , TDS_ENCRYPTION_REQUEST\n , TDS_ENCRYPTION_REQUIRE\n }
     
    enum  tds_end {
    \n-  TDS_DONE_FINAL = 0x00\n-, TDS_DONE_MORE_RESULTS = 0x01\n-, TDS_DONE_ERROR = 0x02\n-, TDS_DONE_INXACT = 0x04\n-,
    \n-  TDS_DONE_PROC = 0x08\n-, TDS_DONE_COUNT = 0x10\n-, TDS_DONE_CANCELLED = 0x20\n+
    enum  tds_end {
    \n+  TDS_DONE_FINAL = 0x00\n+, TDS_DONE_MORE_RESULTS = 0x01\n+, TDS_DONE_ERROR = 0x02\n+, TDS_DONE_INXACT = 0x04\n+,
    \n+  TDS_DONE_PROC = 0x08\n+, TDS_DONE_COUNT = 0x10\n+, TDS_DONE_CANCELLED = 0x20\n , TDS_DONE_EVENT = 0x40\n ,
    \n-  TDS_DONE_SRVERROR = 0x100\n+  TDS_DONE_SRVERROR = 0x100\n , TDS_DONE_NO_TRAN = 0\n , TDS_DONE_TRAN_SUCCEED = 1\n , TDS_DONE_TRAN_PROGRESS = 2\n ,
    \n   TDS_DONE_STMT_ABORT = 3\n , TDS_DONE_TRAN_ABORT = 4\n
    \n }
     Flags returned in TDS_DONE token. More...
     Flags returned in TDS_DONE token. More...
     
    enum  TDS_ICONV_ENTRY { client2ucs2\n , client2server_chardata\n , initial_char_conv_count\n }
     
    enum  TDS_MULTIPLE_TYPE { TDS_MULTIPLE_QUERY\n@@ -1034,25 +1034,25 @@\n , TDS_OP_PREPEXECRPC = TDS_SP_PREPEXECRPC\n , TDS_OP_UNPREPARE = TDS_SP_UNPREPARE\n ,
    \n   TDS_OP_DYN_DEALLOC = 100\n
    \n }
     
    enum  tds_states {
    \n-  TDS_IDLE\n-, TDS_WRITING\n-, TDS_SENDING\n-, TDS_PENDING\n+
    enum  tds_states {
    \n+  TDS_IDLE\n+, TDS_WRITING\n+, TDS_SENDING\n+, TDS_PENDING\n ,
    \n-  TDS_READING\n-, TDS_DEAD\n+  TDS_READING\n+, TDS_DEAD\n
    \n }
     values for tds->state More...
     values for tds->state More...
     
    enum  tds_token_flags {
    \n   TDS_HANDLE_ALL = 0\n , TDS_TOKEN_FLAG =(OTHERS)\n , TDS_TOKEN_FLAG =(OTHERS)\n , TDS_TOKEN_FLAG =(OTHERS)\n ,
    \n@@ -1147,15 +1147,15 @@\n
     
    \n static void tds5_negotiate_set_msg_type (TDSAUTHENTICATION *tds_auth, unsigned msg_type)
     
    \n 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)
    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.
    \n TDSRET tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)
     
    \n TDSCONTEXTtds_alloc_context (void *parent)
     
    \n-TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)
    tds_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.
     
    \n TDSLOCALEtds_alloc_locale (void)
     
    \n TDSLOGINtds_alloc_login (int use_environment)
    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.
     
    \n-TDSRESULTINFOtds_alloc_results (TDS_USMALLINT num_cols)
    tds_alloc_results (TDS_USMALLINT num_cols)
     
    \n-TDSRET tds_alloc_row (TDSRESULTINFO *res_info)
    tds_alloc_row (TDSRESULTINFO *res_info)
     Allocate space for row store return NULL on out of memory.
     
    \n TDSSOCKETtds_alloc_socket (TDSCONTEXT *context, unsigned int bufsize)
     
    TDSRET tds_bcp_done (TDSSOCKET *tds, int *rows_copied)
    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)
    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)
    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)
    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)
    TDSRET tds_bcp_start (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Start sending BCP data to server.
     
    TDSRET tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
    TDSRET tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo)
     Start bulk copy to server.
     
    \n static bool tds_capability_enabled (const TDS_CAPABILITY_TYPE *cap, unsigned cap_num)
     
    void tds_close_socket (TDSSOCKET *tds)
     Close current socket.
    \n 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.
     
    \n-TDSRET tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)
    tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)
     
    \n-TDSRET tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)
    tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)
     Send a deallocation request to server.
     
    \n-void tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor)
    tds_cursor_deallocated (TDSCONNECTION *conn, TDSCURSOR *cursor)
     
    \n-TDSRET tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
    tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
     
    \n-TDSRET tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)
    tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)
     
    \n-TDSRET tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *row_number, TDS_UINT *row_count)
    tds_cursor_get_cursor_info (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_UINT *row_number, TDS_UINT *row_count)
     
    \n-TDSRET tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
    tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
     
    \n-TDSRET tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)
    tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)
     
    \n-TDSRET tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, int *send)
    tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, int *send)
     
    \n-TDSRET tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params)
    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)
    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)
    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.
     
    \n void tds_deinit_bcpinfo (TDSBCPINFO *bcpinfo)
     
    \n-void tds_detach_results (TDSRESULTINFO *info)
    tds_detach_results (TDSRESULTINFO *info)
     Detach result info from it current socket.
     
    \n 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.
     
    \n-void tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn)
    tds_dynamic_deallocated (TDSCONNECTION *conn, TDSDYNAMIC *dyn)
     
    \n size_t tds_fix_column_size (TDSSOCKET *tds, TDSCOLUMN *curcol)
     Get column size for wire.
     
    void tds_fix_login (TDSLOGIN *login)
     Fix configuration after reading it.
     
    \n void tds_free_bcpinfo (TDSBCPINFO *bcpinfo)
     
    \n void tds_free_context (TDSCONTEXT *locale)
     
    void tds_free_input_params (TDSDYNAMIC *dyn)
    void tds_free_input_params (TDSDYNAMIC *dyn)
     Frees all allocated input parameters of a dynamic statement.
     
    \n void tds_free_locale (TDSLOCALE *locale)
     
    \n void tds_free_login (TDSLOGIN *login)
    tds_free_param_result (TDSPARAMINFO *param_info)
     Delete latest parameter.
     
    \n void tds_free_param_results (TDSPARAMINFO *param_info)
     
    \n-void tds_free_results (TDSRESULTINFO *res_info)
    tds_free_results (TDSRESULTINFO *res_info)
     
    \n-void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)
    tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)
     
    \n 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_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)
    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)
    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)
     
    char * tds_get_home_file (const char *file)
     Return filename from HOME directory.
     
    TDSLOCALEtds_get_locale (void)
    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
    \n given to us.
     
    \n@@ -1459,15 +1459,15 @@\n
     Loops until we have received some characters return -1 on failure.
     
    int tds_goodwrite (TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)
     
    \n TDSAUTHENTICATIONtds_gss_get_auth (TDSSOCKET *tds)
     
    int tds_iconv_alloc (TDSCONNECTION *conn)
    int tds_iconv_alloc (TDSCONNECTION *conn)
     Allocate iconv stuff.
     
    \n void tds_iconv_close (TDSCONNECTION *conn)
     
    \n void tds_iconv_free (TDSCONNECTION *conn)
     
    TDSLOGINtds_init_login (TDSLOGIN *login, TDSLOCALE *locale)
     Initialize login structure with locale information and other stuff for connection.
     
    \n int tds_init_write_buf (TDSSOCKET *tds)
     
    TDSDYNAMICtds_lookup_dynamic (TDSCONNECTION *conn, const char *id)
    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.
     
    \n TDSRET tds_lookup_host_set (const char *servername, struct addrinfo **addr)
    \n char * tds_money_to_string (const TDS_MONEY *money, char *s, bool use_2_digits)
     
    \n TDSRET tds_multiple_done (TDSSOCKET *tds, TDSMULTIPLE *multiple)
     
    \n-TDSRET tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)
    tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)
     
    \n TDSRET tds_multiple_init (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type, TDSHEADERS *head)
     
    \n 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.
     
    TDSAUTHENTICATIONtds_ntlm_get_auth (TDSSOCKET *tds)
     Build a NTLMSPP packet to send to server.
     
    \n 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)
    TDS_INT tds_numeric_to_string (const TDS_NUMERIC *numeric, char *s)
     
    \n TDSERRNO tds_open_socket (TDSSOCKET *tds, struct addrinfo *ipaddr, unsigned int port, int timeout, int *p_oserr)
     
    \n int tds_parse_boolean (const char *value, int default_value)
     
    \n TDSSOCKETtds_realloc_socket (TDSSOCKET *tds, size_t bufsize)
     
    \n static void tds_release_cur_dyn (TDSSOCKET *tds)
     
    \n-void tds_release_cursor (TDSCURSOR **pcursor)
    tds_release_cursor (TDSCURSOR **pcursor)
     
    void tds_release_dynamic (TDSDYNAMIC **dyn)
    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.
     
    \n void tds_set_bulk (TDSLOGIN *tds_login, bool enabled)
     
    \n 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)
    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)
    void tds_set_cur_dyn (TDSSOCKET *tds, TDSDYNAMIC *dyn)
     Set current dynamic.
     
    \n-void tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info)
    tds_set_current_results (TDSSOCKET *tds, TDSRESULTINFO *info)
     
    \n static void tds_set_current_send_packet (TDSSOCKET *tds, TDSPACKET *pkt)
     
    \n bool tds_set_host (TDSLOGIN *tds_login, const char *hostname) TDS_WUR
     
     
    \n bool tds_set_library (TDSLOGIN *tds_login, const char *library) TDS_WUR
     
    \n void tds_set_packet (TDSLOGIN *tds_login, int packet_size)
     
    void tds_set_param_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
    void tds_set_param_type (TDSCONNECTION *conn, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
     Set type of column initializing all dependency.
     
    \n bool tds_set_passwd (TDSLOGIN *tds_login, const char *password) TDS_WUR
     
    \n void tds_set_port (TDSLOGIN *tds_login, int port)
     
    bool tds_set_server (TDSLOGIN *tds_login, const char *server) TDS_WUR
    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)
    TDS_STATE tds_set_state (TDSSOCKET *tds, TDS_STATE state)
     Set state of TDS connection, with logging and checking.
     
    \n bool tds_set_user (TDSLOGIN *tds_login, const char *username) TDS_WUR
     
    \n void tds_set_version (TDSLOGIN *tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver)
     
    \n 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.
     
    char * tds_strndup (const void *s, TDS_INTPTR len)
    char * tds_strndup (const void *s, TDS_INTPTR len)
     Copy a string of length len to a new allocated buffer This function does not read more than len bytes Please note that some system implementation of strndup do not assure they don't read past len bytes as they use still strlen to check length to copy limiting after strlen to size passed String returned is NUL terminated.
     
    TDSRET tds_submit_begin_tran (TDSSOCKET *tds)
     Send a rollback request.
     
    TDSRET tds_submit_commit (TDSSOCKET *tds, int 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.
     
    TDSRET tds_submit_rollback (TDSSOCKET *tds, int 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.
     
    \n 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.
     
    \n void tds_wakeup_send (TDSPOLLWAKEUP *wakeup, char cancel)
     
    \n TDSRET tds_write_packet (TDSSOCKET *tds, unsigned char final)
     
    TDSRET tds_writetext_continue (TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size)
    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)
    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)
    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.
     
    \n void tdsdump_close (void)
     Close the TDS dump log file.
     
    void tdsdump_col (const TDSCOLUMN *col)
    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)
    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.
     
    \n int tdsdump_isopen (void)
     
    void tdsdump_log (const char *file, unsigned int level_line, const char *fmt,...)
    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)
    void tdsdump_off (TDSDUMP_OFF_ITEM *off_item)
     Temporarily turn off logging for current thread.
     
    void tdsdump_on (TDSDUMP_OFF_ITEM *off_item)
    void tdsdump_on (TDSDUMP_OFF_ITEM *off_item)
     Turn logging back on for current thread.
     
    int tdsdump_open (const char *filename)
    int tdsdump_open (const 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)
    int tdserror (const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)
     Call the client library's error handler (for library-generated errors only)
     
    \n \n \n@@ -1813,15 +1813,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -1944,15 +1944,15 @@\n \n \n \n

    \n Variables

    \n const char STD_DATETIME_FMT []
     
    \n int tds_g_append_mode
     
    \n const char tds_hex_digits []
     
    const int 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 store the specified precision.
     
    \n const uint16_t tds_type_flags_ms [256]
     
    \n int tds_write_dump
    )   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
    \n
    \n \n

    Calc a version number for mssql.

    \n-

    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))

    \n+

    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))

    \n \n
    \n \n \n

    ◆ TDS_START_LEN_GENERIC

    \n \n
    \n@@ -1989,15 +1989,15 @@\n \n

    ◆ TDS_COMPILETIME_SETTINGS

    \n \n
    \n
    \n \n

    A structure to hold all the compile-time settings.

    \n

    This structure is returned by tds_get_compiletime_settings

    \n \n@@ -2006,15 +2006,15 @@\n \n

    ◆ TDS_ENCODING

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef struct tds_encoding TDS_ENCODINGtypedef struct tds_encoding TDS_ENCODING
    \n
    \n \n

    Information relevant to libiconv.

    \n

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

    \n \n@@ -2023,15 +2023,15 @@\n \n

    ◆ TDSBLOB

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef struct tds_blob TDSBLOBtypedef struct tds_blob TDSBLOB
    \n
    \n \n

    Information about blobs (e.g.

    \n

    text or image). current_row contains this structure.

    \n \n@@ -2041,15 +2041,15 @@\n \n

    ◆ tds_end

    \n \n
    \n
    \n \n \n- \n+ \n \n
    enum tds_endenum tds_end
    \n
    \n \n

    Flags returned in TDS_DONE token.

    \n \n
    Enumerator
    TDS_DONE_FINAL 

    final result set, command completed successfully.

    \n@@ -2075,15 +2075,15 @@\n \n

    ◆ tds_states

    \n \n
    \n
    \n \n \n- \n+ \n \n
    enum tds_statesenum tds_states
    \n
    \n \n

    values for tds->state

    \n \n
    Enumerator
    TDS_IDLE 

    no data expected

    \n@@ -2693,23 +2693,23 @@\n \n

    ◆ tds_set_state()

    \n \n
    \n
    \n \n \n- \n+ \n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -3191,15 +3191,15 @@\n

    \n

    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.
    \n

    \n
    Parameters
    \n
    TDS_STATE tds_set_state TDS_STATE tds_set_state (TDSSOCKETtds,
    TDS_STATE TDS_STATE state 
    )
    \n \n \n- \n+ \n \n
    tds_ctxpoints to a TDSCONTEXT structure
    tdsthe connection structure, may be NULL if not connected
    msgnoan enumerated libtds msgno, cf. tds.h
    msgnoan enumerated libtds msgno, cf. tds.h
    errnumthe OS errno, if it matters, else zero
    \n \n \n
    Returns
    client library function's return code
    \n
    \n Here is the call graph for this function:
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a16db200d2281f76fe46fc1cbe37ca9df_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a31604382d8b77257aad203f409155a29_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00179_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot", "comments": ["Files 15% similar despite different names"], "unified_diff": "@@ -1,11 +1,11 @@\n-digraph \"tds_set_column_type\"\n+digraph \"tds_set_param_type\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- rankdir=\"RL\";\n- Node1 [id=\"Node000001\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n- Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a86768d86059c5addf9a3f89edb1ef44e\",tooltip=\"Set type of column initializing all dependency.\"];\n+ rankdir=\"LR\";\n+ Node1 [id=\"Node000001\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n+ Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a31604382d8b77257aad203f409155a29\",tooltip=\"Set type of column initializing all dependency.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a3ab8874994a0776acdaff797afdb710a_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a3ab8874994a0776acdaff797afdb710a_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a41390fa6e1083ba84fb523797e6b5275_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a5eec23828b0610c58de248c4edb53879_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a5eec23828b0610c58de248c4edb53879_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a7711612cc544a7da2c7aa212b870acb2_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_cgraph.dot", "comments": ["Files 11% similar despite different names"], "unified_diff": "@@ -3,26 +3,26 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_bcp_fread\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Read a data file, passing the data through iconv().\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_convert_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a9d8eb43a81ff58ab423dce0ce95b9564\",tooltip=\"Reads and writes from a stream converting characters.\"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"tds_iconv\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga87db49044919f1bc84c0ff5e9ab00304\",tooltip=\"Wrapper around iconv(3).\"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"skip_one_input_sequence\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga3380140fc6eb9f2090c430f40e846876\",tooltip=\"Move the input sequence pointer to the next valid position.\"];\n Node4 -> Node5 [id=\"edge4_Node000004_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 [id=\"Node000005\",label=\"tds_sys_iconv_open\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00540.html#ga900b0bce08c6bfc2e7c988f4b5970516\",tooltip=\"Inputs are FreeTDS canonical names, no other.\"];\n Node3 -> Node5 [id=\"edge5_Node000003_Node000005\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge6_Node000001_Node000006\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n+ Node6 [id=\"Node000006\",label=\"tds_copy_stream\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a50bc3749988d1c3c441044fc07ab44e4\",tooltip=\"Reads and writes from a stream to another.\"];\n Node1 -> Node7 [id=\"edge7_Node000001_Node000007\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node7 [id=\"Node000007\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n+ Node7 [id=\"Node000007\",label=\"tds_dynamic_stream_init\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#a4f9e40da6941cb9407d0da5bc3030517\",tooltip=\"Initialize a dynamic output stream.\"];\n Node7 -> Node8 [id=\"edge8_Node000007_Node000008\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n+ Node8 [id=\"Node000008\",label=\"tds_dynamic_stream\\l_write\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html#abaf688c85ea04a2392103d519a55d04e\",tooltip=\"Writes data to a dynamic allocated buffer.\"];\n Node8 -> Node9 [id=\"edge9_Node000008_Node000009\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node9 [id=\"Node000009\",label=\"tds_realloc\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00541.html#ga8645f5abc49db03d14b66f72b83a9a4c\",tooltip=\"Reallocate a pointer and update it if success.\"];\n Node1 -> Node10 [id=\"edge10_Node000001_Node000010\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node10 [id=\"Node000010\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n+ Node10 [id=\"Node000010\",label=\"tds_file_stream_read\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a1b83c9db016b481aa1fa0352f976d50d\",tooltip=\"Reads a chunk of data from file stream checking for terminator.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a8184311543c685f2ee0bcccfb725ca02_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a8208eef2a3974ae1f0cf3c8c8ab011ce_icgraph.dot", "comments": ["Files 2% similar despite different names"], "unified_diff": "@@ -9,12 +9,12 @@\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node2 [id=\"Node000002\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node4 [id=\"Node000004\",label=\"bcp_batch\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaa23f8e5c7f437a94746c90292dd1cb01\",tooltip=\"Commit a set of rows to the table.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n+ Node5 [id=\"Node000005\",label=\"tds_bcp_start_copy_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html#a5eec23828b0610c58de248c4edb53879\",tooltip=\"Start bulk copy to server.\"];\n Node5 -> Node2 [id=\"edge5_Node000005_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node5 -> Node6 [id=\"edge6_Node000005_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node6 [id=\"Node000006\",label=\"bcp_sendrow\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#gaf1130ac97f6af55e86ec70b0aa4f5b40\",tooltip=\"Write data in host variables to the table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_a86768d86059c5addf9a3f89edb1ef44e_cgraph.dot", "comments": ["Files 10% similar despite different names"], "unified_diff": "@@ -3,9 +3,9 @@\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"LR\";\n Node1 [id=\"Node000001\",label=\"tds_set_param_type\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Set type of column initializing all dependency.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html#a31604382d8b77257aad203f409155a29\",tooltip=\"Set type of column initializing all dependency.\"];\n+ Node2 [id=\"Node000002\",label=\"tds_set_column_type\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html#a31604382d8b77257aad203f409155a29\",tooltip=\"Set type of column initializing all dependency.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_aaee3fe5c514ce5570c9548de9b16e0d9_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ab68dead99a2ebec55895a10cd3db5202_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_abf18b98efef6ce2dc0b97d658a3a1918_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ac1e460551f1188620ea478238864ac4b_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ac1e460551f1188620ea478238864ac4b_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ac6610c72bd31bad5378f760fa9b12d66_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ad9e44450025cbcee1ad81d7e5a2cc099_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00368_ade7df2db455b61edc83819ad60edb339_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00425_ade7df2db455b61edc83819ad60edb339_icgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00370.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00427.dot", "comments": ["Files 4% similar despite different names"], "unified_diff": "@@ -2,31 +2,31 @@\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n 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.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"include/ctlib.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00485_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"include/ctlib.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00488_source.html\",tooltip=\" \"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"include/freetds/odbc.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00386_source.html\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"include/freetds/odbc.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00428_source.html\",tooltip=\" \"];\n Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"src/dblib/bcp.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html\",tooltip=\"Implementation of db-lib bulk copy functions.\"];\n+ Node4 [id=\"Node000004\",label=\"src/dblib/bcp.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html\",tooltip=\"Implementation of db-lib bulk copy functions.\"];\n Node1 -> Node5 [id=\"edge4_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"src/dblib/dblib.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html\",tooltip=\"Main implementation file for db-lib.\"];\n+ Node5 [id=\"Node000005\",label=\"src/dblib/dblib.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html\",tooltip=\"Main implementation file for db-lib.\"];\n Node1 -> Node6 [id=\"edge5_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"src/pool/pool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00338_source.html\",tooltip=\" \"];\n+ Node6 [id=\"Node000006\",label=\"src/pool/pool.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00290_source.html\",tooltip=\" \"];\n Node1 -> Node7 [id=\"edge6_Node000001_Node000007\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node7 [id=\"Node000007\",label=\"src/replacements/iconv.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01365.html\",tooltip=\"This file implements a very simple iconv.\"];\n Node1 -> Node8 [id=\"edge7_Node000001_Node000008\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node8 [id=\"Node000008\",label=\"src/tds/bulk.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00092.html\",tooltip=\"Handle bulk copy.\"];\n+ Node8 [id=\"Node000008\",label=\"src/tds/bulk.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00176.html\",tooltip=\"Handle bulk copy.\"];\n Node1 -> Node9 [id=\"edge8_Node000001_Node000009\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node9 [id=\"Node000009\",label=\"src/tds/data.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html\",tooltip=\"Handle different data handling from network.\"];\n+ Node9 [id=\"Node000009\",label=\"src/tds/data.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00179.html\",tooltip=\"Handle different data handling from network.\"];\n Node1 -> Node10 [id=\"edge9_Node000001_Node000010\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node10 [id=\"Node000010\",label=\"src/tds/iconv.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01368.html\",tooltip=\"Handle character conversions to/from server.\"];\n Node1 -> Node11 [id=\"edge10_Node000001_Node000011\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node11 [id=\"Node000011\",label=\"src/tds/read.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00017.html\",tooltip=\"Grab data from TDS packets.\"];\n+ Node11 [id=\"Node000011\",label=\"src/tds/read.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00158.html\",tooltip=\"Grab data from TDS packets.\"];\n Node1 -> Node12 [id=\"edge11_Node000001_Node000012\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node12 [id=\"Node000012\",label=\"src/tds/stream.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00026.html\",tooltip=\"Handle stream of data.\"];\n+ Node12 [id=\"Node000012\",label=\"src/tds/stream.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00236.html\",tooltip=\"Handle stream of data.\"];\n Node1 -> Node13 [id=\"edge12_Node000001_Node000013\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node13 [id=\"Node000013\",label=\"src/tds/token.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00089.html\",tooltip=\"Contains all routines to get replies from server.\"];\n+ Node13 [id=\"Node000013\",label=\"src/tds/token.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00230.html\",tooltip=\"Contains all routines to get replies from server.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00374.html", "source2": "./usr/share/doc/freetds-doc/reference/a00395.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -94,15 +94,15 @@\n
    \n
    \n This graph shows which files directly or indirectly include this file:
    \n
    \n
    \n
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n \n \n

    \n Classes

    struct  pollfd
     
    \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -153,15 +153,15 @@\n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_cgraph.dot", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a01353_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a01344_ad53f508d8f2177a898f8022736834afd_icgraph.dot", "comments": ["Files 12% similar despite different names"], "unified_diff": "@@ -1,13 +1,13 @@\n-digraph \"_bcp_convert_out\"\n+digraph \"_bcp_no_get_col_data\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n rankdir=\"RL\";\n- Node1 [id=\"Node000001\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node1 [id=\"Node000001\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Function to read data from file.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01353_ad53f508d8f2177a898f8022736834afd_icgraph.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00396.dot", "comments": ["Files 20% similar despite different names"], "unified_diff": "@@ -1,13 +1,14 @@\n-digraph \"_bcp_no_get_col_data\"\n+digraph \"include/freetds/replacements/poll.h\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- rankdir=\"RL\";\n- Node1 [id=\"Node000001\",label=\"_bcp_no_get_col_data\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Function to read data from file.\"];\n- Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"_bcp_exec_in\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#ga7370f1223f13510d6b33e98f2de09fb5\",tooltip=\" \"];\n- Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n+ 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.\"];\n+ Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00485_source.html\",tooltip=\" \"];\n+ Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00380_source.html\",tooltip=\" \"];\n+ Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node4 [id=\"Node000004\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00359_source.html\",tooltip=\" \"];\n }\n"}]}]}]}]}

    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00375.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00492.dot", "comments": ["Files 12% similar despite different names"], "unified_diff": "@@ -1,14 +1,12 @@\n-digraph \"include/freetds/replacements/poll.h\"\n+digraph \"include/sybdb.h\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- 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.\"];\n+ Node1 [id=\"Node000001\",label=\"include/sybdb.h\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Primary include file for db-lib applications.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"config.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n- Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"freetds/pushvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00365_source.html\",tooltip=\" \"];\n- Node1 -> Node4 [id=\"edge3_Node000001_Node000004\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"freetds/popvis.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00458_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00350_source.html\",tooltip=\" \"];\n+ Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"float.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00398_source.html", "source2": "./usr/share/doc/freetds-doc/reference/a00143_source.html", "comments": ["Files 25% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-FreeTDS API: include/freetds/iconv.h Source File\n+FreeTDS API: src/tds/sec_negotiate_openssl.h Source File\n \n \n \n \n \n \n \n@@ -70,23 +70,23 @@\n \n \n \n \n \n
    \n \n+
  • src
  • tds
  • \n
    \n \n
    \n-
    iconv.h
    \n+
    sec_negotiate_openssl.h
    \n
    \n
    \n
    1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
    \n-
    2 * Copyright (C) 2002, 2003, 2004 Brian Bruns
    \n+
    2 * Copyright (C) 2015 Frediano Ziglio
    \n
    3 *
    \n
    4 * This library is free software; you can redistribute it and/or
    \n
    5 * modify it under the terms of the GNU Library General Public
    \n
    6 * License as published by the Free Software Foundation; either
    \n
    7 * version 2 of the License, or (at your option) any later version.
    \n
    8 *
    \n
    9 * This library is distributed in the hope that it will be useful,
    \n@@ -96,143 +96,86 @@\n
    13 *
    \n
    14 * You should have received a copy of the GNU Library General Public
    \n
    15 * License along with this library; if not, write to the
    \n
    16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    \n
    17 * Boston, MA 02111-1307, USA.
    \n
    18 */
    \n
    19
    \n-
    20#ifndef _tds_iconv_h_
    \n-
    21#define _tds_iconv_h_
    \n-
    22
    \n-
    23#if HAVE_ICONV
    \n-
    24#include <iconv.h>
    \n-
    25#else
    \n-
    26/* Define iconv_t for src/replacements/iconv.c. */
    \n-
    27#undef iconv_t
    \n-
    28typedef void *iconv_t;
    \n-
    29#endif /* HAVE_ICONV */
    \n-
    30
    \n-
    31#if HAVE_ERRNO_H
    \n-
    32#include <errno.h>
    \n-
    33#endif
    \n-
    34
    \n-
    35#if HAVE_WCHAR_H
    \n-
    36#include <wchar.h>
    \n-
    37#endif
    \n-
    38
    \n-
    39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */
    \n-
    40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,
    \n-
    41 have EILSEQ in a different header. On these systems, define EILSEQ
    \n-
    42 ourselves. */
    \n-
    43#ifndef EILSEQ
    \n-
    44# define EILSEQ ENOENT
    \n-
    45#endif
    \n-
    46
    \n-
    47#if HAVE_STDLIB_H
    \n-
    48#include <stdlib.h>
    \n-
    49#endif /* HAVE_STDLIB_H */
    \n-
    50
    \n-
    51#include <freetds/pushvis.h>
    \n-
    52
    \n-
    53#ifdef __cplusplus
    \n-
    54extern "C"
    \n-
    55{
    \n-
    56#endif
    \n+
    20#include <openssl/rand.h>
    \n+
    21#include <openssl/bio.h>
    \n+
    22#include <openssl/pem.h>
    \n+
    23#include <openssl/err.h>
    \n+
    24
    \n+
    36#ifndef HAVE_OPENSSL
    \n+
    37#error HAVE_OPENSSL not defines, this file should not be included
    \n+
    38#endif
    \n+
    39
    \n+
    40static inline const BIGNUM*
    \n+
    41rsa_get_n(const RSA *rsa)
    \n+
    42{
    \n+
    43#if HAVE_RSA_GET0_KEY
    \n+
    44 const BIGNUM *n, *e, *d;
    \n+
    45 RSA_get0_key(rsa, &n, &e, &d);
    \n+
    46 return n;
    \n+
    47#else
    \n+
    48 return rsa->n;
    \n+
    49#endif
    \n+
    50}
    \n+
    51
    \n+
    52static void*
    \n+
    53tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t nonce_len, const char *pwd, size_t *em_size)
    \n+
    54{
    \n+
    55 RSA *rsa = NULL;
    \n+
    56 BIO *keybio;
    \n
    57
    \n-
    58#if ! HAVE_ICONV
    \n-
    59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);
    \n-
    60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
    \n-
    61int tds_sys_iconv_close(iconv_t cd);
    \n-
    62#else
    \n-
    63#define tds_sys_iconv_open iconv_open
    \n-
    64#define tds_sys_iconv iconv
    \n-
    65#define tds_sys_iconv_close iconv_close
    \n-
    66#endif /* !HAVE_ICONV */
    \n+
    58 uint8_t *message = NULL;
    \n+
    59 size_t message_len, pwd_len;
    \n+
    60 uint8_t *em = NULL;
    \n+
    61
    \n+
    62 int result;
    \n+
    63
    \n+
    64 keybio = BIO_new_mem_buf((void*) key, key_len);
    \n+
    65 if (keybio == NULL)
    \n+
    66 goto error;
    \n
    67
    \n-
    68
    \n-
    69typedef enum
    \n-
    70{ to_server, to_client } TDS_ICONV_DIRECTION;
    \n+
    68 rsa = PEM_read_bio_RSAPublicKey(keybio, &rsa, NULL, NULL);
    \n+
    69 if (!rsa)
    \n+
    70 goto error;
    \n
    71
    \n-
    \n-\n-
    73{
    \n-
    74 const char *alias;
    \n-
    75 int canonic;
    \n-\n-
    \n-
    77
    \n-
    \n-\n-
    79 unsigned int e2big:1;
    \n-
    80 unsigned int eilseq:1;
    \n-
    81 unsigned int einval:1;
    \n-\n-
    \n+
    72 pwd_len = strlen(pwd);
    \n+
    73 message_len = nonce_len + pwd_len;
    \n+
    74 message = tds_new(uint8_t, message_len);
    \n+
    75 if (!message)
    \n+
    76 goto error;
    \n+
    77 memcpy(message, nonce, nonce_len);
    \n+
    78 memcpy(message + nonce_len, pwd, pwd_len);
    \n+
    79
    \n+
    80 em = tds_new(uint8_t, BN_num_bytes(rsa_get_n(rsa)));
    \n+
    81 if (!em)
    \n+
    82 goto error;
    \n
    83
    \n-
    \n-
    84typedef struct tdsiconvdir
    \n-
    85{
    \n-
    86 TDS_ENCODING charset;
    \n+
    84 result = RSA_public_encrypt(message_len, message, em, rsa, RSA_PKCS1_OAEP_PADDING);
    \n+
    85 if (result < 0)
    \n+
    86 goto error;
    \n
    87
    \n-
    88 iconv_t cd;
    \n-\n-
    \n-
    90
    \n-
    \n-\n-
    92{
    \n-
    93 struct tdsiconvdir to, from;
    \n+
    88 free(message);
    \n+
    89 RSA_free(rsa);
    \n+
    90 BIO_free(keybio);
    \n+
    91
    \n+
    92 *em_size = result;
    \n+
    93 return em;
    \n
    94
    \n-
    95#define TDS_ENCODING_MEMCPY 1
    \n-
    96 unsigned int flags;
    \n-
    97
    \n-
    98 /*
    \n-
    99 * Suppress error messages that would otherwise be emitted by tds_iconv().
    \n-
    100 * Functions that process large buffers ask tds_iconv to convert it in "chunks".
    \n-
    101 * We don't want to emit spurious EILSEQ errors or multiple errors for one
    \n-
    102 * buffer. tds_iconv() checks this structure before emiting a message, and
    \n-
    103 * adds to it whenever it emits one. Callers that handle a particular situation themselves
    \n-
    104 * can prepopulate it.
    \n-
    105 */
    \n-\n-
    107
    \n-
    108};
    \n-
    \n-
    109
    \n-
    110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */
    \n-
    111#ifndef ICONV_CONST
    \n-
    112# define ICONV_CONST const
    \n-
    113#endif
    \n-
    114
    \n-
    115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION io,
    \n-
    116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t * outbytesleft);
    \n-
    117int tds_canonical_charset(const char *charset_name);
    \n-
    118const char *tds_canonical_charset_name(const char *charset_name);
    \n-
    119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset, const char *server_charset);
    \n-
    120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int canonic_server);
    \n-
    121
    \n-
    122#ifdef __cplusplus
    \n-
    123}
    \n-
    124#endif
    \n-
    125
    \n-
    126#include <freetds/popvis.h>
    \n-
    127
    \n-
    128#endif /* _tds_iconv_h_ */
    \n-
    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:758
    \n-
    const char * tds_canonical_charset_name(const char *charset_name)
    Determine canonical iconv character set name.
    Definition iconv.c:982
    \n-
    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:592
    \n-
    iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)
    Inputs are FreeTDS canonical names, no other.
    Definition iconv.c:344
    \n-
    int tds_canonical_charset(const char *charset_name)
    Determine canonical iconv character set.
    Definition iconv.c:970
    \n-
    Definition iconv.h:73
    \n-
    Definition iconv.h:78
    \n-
    Definition iconv.h:85
    \n-
    Definition iconv.h:92
    \n-
    Information relevant to libiconv.
    Definition tds.h:618
    \n-
    Definition tds.h:1091
    \n-
    Information for a server connection.
    Definition tds.h:1163
    \n+
    95error:
    \n+
    96 free(message);
    \n+
    97 free(em);
    \n+
    98 RSA_free(rsa);
    \n+
    99 BIO_free(keybio);
    \n+
    100 return NULL;
    \n+
    101}
    \n+
    102
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,19 +5,19 @@\n \n FreeTDS API\n \n \n Loading...\n Searching...\n No Matches\n- * include\n- * freetds\n-iconv.h\n+ * src\n+ * tds\n+sec_negotiate_openssl.h\n 1/* FreeTDS - Library of routines accessing Sybase and Microsoft databases\n- 2 * Copyright (C) 2002, 2003, 2004 Brian Bruns\n+ 2 * Copyright (C) 2015 Frediano Ziglio\n 3 *\n 4 * This library is free software; you can redistribute it and/or\n 5 * modify it under the terms of the GNU Library General Public\n 6 * License as published by the Free Software Foundation; either\n 7 * version 2 of the License, or (at your option) any later version.\n 8 *\n 9 * This library is distributed in the hope that it will be useful,\n@@ -27,164 +27,84 @@\n 13 *\n 14 * You should have received a copy of the GNU Library General Public\n 15 * License along with this library; if not, write to the\n 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n 17 * Boston, MA 02111-1307, USA.\n 18 */\n 19\n- 20#ifndef _tds_iconv_h_\n- 21#define _tds_iconv_h_\n- 22\n- 23#if HAVE_ICONV\n- 24#include \n- 25#else\n- 26/* Define iconv_t for src/replacements/iconv.c. */\n- 27#undef iconv_t\n- 28typedef void *iconv_t;\n- 29#endif /* HAVE_ICONV */\n- 30\n- 31#if HAVE_ERRNO_H\n- 32#include \n- 33#endif\n- 34\n- 35#if HAVE_WCHAR_H\n- 36#include \n- 37#endif\n- 38\n- 39/* The following EILSEQ advice is borrowed verbatim from GNU iconv. */\n- 40/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,\n- 41 have EILSEQ in a different header. On these systems, define EILSEQ\n- 42 ourselves. */\n- 43#ifndef EILSEQ\n- 44# define EILSEQ ENOENT\n- 45#endif\n- 46\n- 47#if HAVE_STDLIB_H\n- 48#include \n- 49#endif /* HAVE_STDLIB_H */\n- 50\n- 51#include \n- 52\n- 53#ifdef __cplusplus\n- 54extern \"C\"\n- 55{\n- 56#endif\n+ 20#include \n+ 21#include \n+ 22#include \n+ 23#include \n+ 24\n+ 36#ifndef HAVE_OPENSSL\n+ 37#error HAVE_OPENSSL not defines, this file should not be included\n+ 38#endif\n+ 39\n+ 40static inline const BIGNUM*\n+ 41rsa_get_n(const RSA *rsa)\n+ 42{\n+ 43#if HAVE_RSA_GET0_KEY\n+ 44 const BIGNUM *n, *e, *d;\n+ 45 RSA_get0_key(rsa, &n, &e, &d);\n+ 46 return n;\n+ 47#else\n+ 48 return rsa->n;\n+ 49#endif\n+ 50}\n+ 51\n+ 52static void*\n+ 53tds5_rsa_encrypt(const void *key, size_t key_len, const void *nonce, size_t\n+nonce_len, const char *pwd, size_t *em_size)\n+ 54{\n+ 55 RSA *rsa = NULL;\n+ 56 BIO *keybio;\n 57\n- 58#if ! HAVE_ICONV\n- 59iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode);\n- 60size_t tds_sys_iconv(iconv_t cd, const char **inbuf, size_t * inbytesleft,\n-char **outbuf, size_t * outbytesleft);\n- 61int tds_sys_iconv_close(iconv_t cd);\n- 62#else\n- 63#define tds_sys_iconv_open iconv_open\n- 64#define tds_sys_iconv iconv\n- 65#define tds_sys_iconv_close iconv_close\n- 66#endif /* !HAVE_ICONV */\n+ 58 uint8_t *message = NULL;\n+ 59 size_t message_len, pwd_len;\n+ 60 uint8_t *em = NULL;\n+ 61\n+ 62 int result;\n+ 63\n+ 64 keybio = BIO_new_mem_buf((void*) key, key_len);\n+ 65 if (keybio == NULL)\n+ 66 goto error;\n 67\n- 68\n- 69typedef enum\n- 70{ to_server, to_client } TDS_ICONV_DIRECTION;\n+ 68 rsa = PEM_read_bio_RSAPublicKey(keybio, &rsa, NULL, NULL);\n+ 69 if (!rsa)\n+ 70 goto error;\n 71\n-72typedef struct _character_set_alias\n- 73{\n- 74 const char *alias;\n- 75 int canonic;\n- 76} CHARACTER_SET_ALIAS;\n- 77\n-78typedef struct tds_errno_message_flags {\n- 79 unsigned int e2big:1;\n- 80 unsigned int eilseq:1;\n- 81 unsigned int einval:1;\n- 82} TDS_ERRNO_MESSAGE_FLAGS;\n+ 72 pwd_len = strlen(pwd);\n+ 73 message_len = nonce_len + pwd_len;\n+ 74 message = tds_new(uint8_t, message_len);\n+ 75 if (!message)\n+ 76 goto error;\n+ 77 memcpy(message, nonce, nonce_len);\n+ 78 memcpy(message + nonce_len, pwd, pwd_len);\n+ 79\n+ 80 em = tds_new(uint8_t, BN_num_bytes(rsa_get_n(rsa)));\n+ 81 if (!em)\n+ 82 goto error;\n 83\n-84typedef struct tdsiconvdir\n- 85{\n- 86 TDS_ENCODING charset;\n+ 84 result = RSA_public_encrypt(message_len, message, em, rsa,\n+RSA_PKCS1_OAEP_PADDING);\n+ 85 if (result < 0)\n+ 86 goto error;\n 87\n- 88 iconv_t cd;\n- 89} TDSICONVDIR;\n- 90\n-91struct tdsiconvinfo\n- 92{\n- 93 struct tdsiconvdir to, from;\n+ 88 free(message);\n+ 89 RSA_free(rsa);\n+ 90 BIO_free(keybio);\n+ 91\n+ 92 *em_size = result;\n+ 93 return em;\n 94\n- 95#define TDS_ENCODING_MEMCPY 1\n- 96 unsigned int flags;\n- 97\n- 98 /*\n- 99 * Suppress error messages that would otherwise be emitted by tds_iconv().\n- 100 * Functions that process large buffers ask tds_iconv to convert it in\n-\"chunks\".\n- 101 * We don't want to emit spurious EILSEQ errors or multiple errors for one\n- 102 * buffer. tds_iconv() checks this structure before emiting a message, and\n- 103 * adds to it whenever it emits one. Callers that handle a particular\n-situation themselves\n- 104 * can prepopulate it.\n- 105 */\n- 106 TDS_ERRNO_MESSAGE_FLAGS suppress;\n- 107\n- 108};\n- 109\n- 110/* We use ICONV_CONST for tds_iconv(), even if we don't have iconv() */\n- 111#ifndef ICONV_CONST\n- 112# define ICONV_CONST const\n- 113#endif\n- 114\n- 115size_t tds_iconv(TDSSOCKET * tds, TDSICONV * char_conv, TDS_ICONV_DIRECTION\n-io,\n- 116 const char **inbuf, size_t * inbytesleft, char **outbuf, size_t *\n-outbytesleft);\n- 117int tds_canonical_charset(const char *charset_name);\n- 118const char *tds_canonical_charset_name(const char *charset_name);\n- 119TDSICONV *tds_iconv_get(TDSCONNECTION * conn, const char *client_charset,\n-const char *server_charset);\n- 120TDSICONV *tds_iconv_get_info(TDSCONNECTION * conn, int canonic_client, int\n-canonic_server);\n- 121\n- 122#ifdef __cplusplus\n- 123}\n- 124#endif\n- 125\n- 126#include \n- 127\n- 128#endif /* _tds_iconv_h_ */\n-tds_iconv_get_info\n-TDSICONV * tds_iconv_get_info(TDSCONNECTION *conn, int canonic_client, int\n-canonic_server)\n-Get a iconv info structure, allocate and initialize if needed.\n-Definition iconv.c:758\n-tds_canonical_charset_name\n-const char * tds_canonical_charset_name(const char *charset_name)\n-Determine canonical iconv character set name.\n-Definition iconv.c:982\n-tds_iconv\n-size_t tds_iconv(TDSSOCKET *tds, TDSICONV *char_conv, TDS_ICONV_DIRECTION io,\n-const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)\n-Wrapper around iconv(3).\n-Definition iconv.c:592\n-tds_sys_iconv_open\n-iconv_t tds_sys_iconv_open(const char *tocode, const char *fromcode)\n-Inputs are FreeTDS canonical names, no other.\n-Definition iconv.c:344\n-tds_canonical_charset\n-int tds_canonical_charset(const char *charset_name)\n-Determine canonical iconv character set.\n-Definition iconv.c:970\n-_character_set_alias\n-Definition iconv.h:73\n-tds_errno_message_flags\n-Definition iconv.h:78\n-tdsiconvdir\n-Definition iconv.h:85\n-tdsiconvinfo\n-Definition iconv.h:92\n-tds_encoding\n-Information relevant to libiconv.\n-Definition tds.h:618\n-tds_connection\n-Definition tds.h:1091\n-tds_socket\n-Information for a server connection.\n-Definition tds.h:1163\n+ 95error:\n+ 96 free(message);\n+ 97 free(em);\n+ 98 RSA_free(rsa);\n+ 99 BIO_free(keybio);\n+ 100 return NULL;\n+ 101}\n+ 102\n \n ===============================================================================\n Generated by\u00a0[doxygen] 1.9.8\n"}]}, {"source1": "./usr/share/doc/freetds-doc/reference/a00479.html", "source2": "./usr/share/doc/freetds-doc/reference/a00491.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -93,15 +93,15 @@\n \n
    \n This graph shows which files directly or indirectly include this file:
    \n
    \n
    \n
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n \n \n \n \n@@ -594,15 +594,15 @@\n \n \n \n \n \n-\n+\n \n \n \n \n \n@@ -2176,15 +2176,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -2382,18 +2382,18 @@\n \n \n \n \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n \n \n@@ -2727,15 +2727,15 @@\n \n \n

    \n Classes

    struct  DBCOL
     
    struct  DBCOL2
     
     
    \n #define DBTDS_8_0   9\t/* Microsoft SQL Server 2000 */
     
    \n #define DBTDS_9_0   10\t/* Microsoft SQL Server 2005 */
     
    #define DBTDS_UNKNOWN   0
    #define DBTDS_UNKNOWN   0
     DBTDS_xxx are returned by DBTDS() The integer values of the constants are poorly chosen.
     
    \n #define DBTEXTLIMIT   7
     
    \n #define DBTEXTSIZE   17
     
    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.
     
    int dbnumcompute (DBPROCESS *dbprocess)
     Get count of COMPUTE clauses for a result set.
     
    int dbnumrets (DBPROCESS *dbproc)
     Get count of output parameters filled by a stored procedure.
     
    DBPROCESSdbopen (LOGINREC *login, const char *server)
    DBPROCESSdbopen (LOGINREC *login, const char *server)
     Normally not used.
     
    RETCODE dbpivot (DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val)
    RETCODE dbpivot (DBPROCESS *dbproc, int nkeys, int *keys, int ncols, int *cols, DBPIVOT_FUNC func, int val)
     Pivot the rows, creating a new resultset.
     
    \n void dbpivot_count (struct col_t *output, const struct col_t *input)
     
    \n DBPIVOT_FUNC dbpivot_lookup_name (const char name[])
    \n
    \n \n

    Normally not used.

    \n

    The function is linked in only if the –enable-sybase-compat configure option is used.
    \n- Cf. sybdb.h dbopen() macros, and dbdatecrack().

    \n+ Cf. sybdb.h dbopen() macros, and dbdatecrack().

    \n
    \n Here is the call graph for this function:
    \n
    \n
    \n
    \n \n
    \n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00479_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00491_a9b73fd1afa2c3ccfca481635212d2e43_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00479_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz", "source2": "./usr/share/doc/freetds-doc/reference/a00491_af2b7a0ebad53fe7e4e0eda3bbdb89de3_cgraph.dot.gz", "comments": ["Files identical despite different names"], "unified_diff": null}, {"source1": "./usr/share/doc/freetds-doc/reference/a00480.dot", "source2": "./usr/share/doc/freetds-doc/reference/a01344_a230fa5b56ae4e3509a69bd266495732b_icgraph.dot", "comments": ["Files 13% similar despite different names"], "unified_diff": "@@ -1,12 +1,13 @@\n-digraph \"include/sybdb.h\"\n+digraph \"_bcp_convert_out\"\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n- Node1 [id=\"Node000001\",label=\"include/sybdb.h\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Primary include file for db-lib applications.\"];\n- Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"tds_sysdep_public.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00476_source.html\",tooltip=\" \"];\n- Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"float.h\",height=0.2,width=0.4,color=\"grey60\", fillcolor=\"#E0E0E0\", style=\"filled\",tooltip=\" \"];\n+ rankdir=\"RL\";\n+ Node1 [id=\"Node000001\",label=\"_bcp_convert_out\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Convert column for output (usually to a file) Conversion is slightly different from input as:\"];\n+ Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"_bcp_exec_out\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00530.html#gae67546338cb9542a4902aa914f57f314\",tooltip=\" \"];\n+ Node2 -> Node3 [id=\"edge2_Node000002_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"bcp_exec\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00529.html#ga7a184158b27a50f713e9cfae3b746209\",tooltip=\"Write a datafile to a table.\"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a00481.dot", "source2": "./usr/share/doc/freetds-doc/reference/a00493.dot", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -2,19 +2,19 @@\n {\n // LATEX_PDF_SIZE\n bgcolor=\"transparent\";\n edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];\n node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];\n Node1 [id=\"Node000001\",label=\"include/sybdb.h\",height=0.2,width=0.4,color=\"gray40\", fillcolor=\"grey60\", style=\"filled\", fontcolor=\"black\",tooltip=\"Primary include file for db-lib applications.\"];\n Node1 -> Node2 [id=\"edge1_Node000001_Node000002\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node2 [id=\"Node000002\",label=\"include/sqldb.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00350_source.html\",tooltip=\" \"];\n+ Node2 [id=\"Node000002\",label=\"include/sqldb.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00479_source.html\",tooltip=\" \"];\n Node1 -> Node3 [id=\"edge2_Node000001_Node000003\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node3 [id=\"Node000003\",label=\"include/sybfront.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00470_source.html\",tooltip=\" \"];\n+ Node3 [id=\"Node000003\",label=\"include/sybfront.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00344_source.html\",tooltip=\" \"];\n Node3 -> Node4 [id=\"edge3_Node000003_Node000004\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node4 [id=\"Node000004\",label=\"include/sqlfront.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00347_source.html\",tooltip=\" \"];\n+ Node4 [id=\"Node000004\",label=\"include/sqlfront.h\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00482_source.html\",tooltip=\" \"];\n Node3 -> Node5 [id=\"edge4_Node000003_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node5 [id=\"Node000005\",label=\"src/dblib/bcp.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01353.html\",tooltip=\"Implementation of db-lib bulk copy functions.\"];\n+ Node5 [id=\"Node000005\",label=\"src/dblib/bcp.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a01344.html\",tooltip=\"Implementation of db-lib bulk copy functions.\"];\n Node3 -> Node6 [id=\"edge5_Node000003_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n- Node6 [id=\"Node000006\",label=\"src/dblib/dblib.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00170.html\",tooltip=\"Main implementation file for db-lib.\"];\n+ Node6 [id=\"Node000006\",label=\"src/dblib/dblib.c\",height=0.2,width=0.4,color=\"grey40\", fillcolor=\"white\", style=\"filled\",URL=\"$a00080.html\",tooltip=\"Main implementation file for db-lib.\"];\n Node1 -> Node5 [id=\"edge6_Node000001_Node000005\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n Node1 -> Node6 [id=\"edge7_Node000001_Node000006\",dir=\"back\",color=\"steelblue1\",style=\"solid\",tooltip=\" \"];\n }\n"}, {"source1": "./usr/share/doc/freetds-doc/reference/a01353.html", "source2": "./usr/share/doc/freetds-doc/reference/a01344.html", "comments": ["Files 0% similar despite different names"], "unified_diff": "@@ -83,23 +83,23 @@\n \n

    Implementation of db-lib bulk copy functions. \n More...

    \n
    #include <config.h>
    \n #include <stdarg.h>
    \n #include <stdio.h>
    \n #include <assert.h>
    \n-#include <freetds/tds.h>
    \n+#include <freetds/tds.h>
    \n #include <freetds/iconv.h>
    \n #include <freetds/convert.h>
    \n #include <freetds/bytes.h>
    \n #include <freetds/utils/string.h>
    \n #include <freetds/encodings.h>
    \n #include <freetds/replacements.h>
    \n #include <sybfront.h>
    \n-#include <sybdb.h>
    \n+#include <sybdb.h>
    \n #include <syberror.h>
    \n #include <dblib.h>
    \n
    \n Include dependency graph for bcp.c:
    \n
    \n
    \n
    \n@@ -133,15 +133,15 @@\n

    \n static STATUS _bcp_check_eof (DBPROCESS *dbproc, FILE *file, int icol)
     
    \n static TDSRET _bcp_convert_in (DBPROCESS *dbproc, TDS_SERVER_TYPE srctype, const TDS_CHAR *src, TDS_UINT srclen, TDS_SERVER_TYPE desttype, BCPCOLDATA *coldata)
     Convert column for input to a table.
     
    static int _bcp_convert_out (DBPROCESS *dbproc, TDSCOLUMN *curcol, BCP_HOSTCOLINFO *hostcol, TDS_UCHAR **p_data, const char *bcpdatefmt)
    static int _bcp_convert_out (DBPROCESS *dbproc, TDSCOLUMN *curcol, BCP_HOSTCOLINFO *hostcol, TDS_UCHAR **p_data, const char *bcpdatefmt)
     Convert column for output (usually to a file) Conversion is slightly different from input as:
     
    static RETCODE _bcp_exec_in (DBPROCESS *dbproc, DBINT *rows_copied)
     
    static RETCODE _bcp_exec_out (DBPROCESS *dbproc, DBINT *rows_copied)
     
    static char * _bcp_fgets (char *buffer, int size, FILE *f)
    static TDSRET _bcp_get_col_data (TDSBCPINFO *bcpinfo, TDSCOLUMN *bindcol, int offset)
     For a bcp in from program variables, get the data from the host variable.
     
    static int _bcp_get_term_var (const BYTE *pdata, const BYTE *term, int term_len)
     Get the data for bcp-in from program variables, where the program data have been identified as character terminated,
    \n This is a low-level, internal function.
     
    static TDSRET _bcp_no_get_col_data (TDSBCPINFO *bcpinfo, TDSCOLUMN *bindcol, int offset)
    static TDSRET _bcp_no_get_col_data (TDSBCPINFO *bcpinfo, TDSCOLUMN *bindcol, int offset)
     Function to read data from file.
     
    \n static void _bcp_null_error (TDSBCPINFO *bcpinfo, int index, int offset)
     
    static STATUS _bcp_read_hostfile (DBPROCESS *dbproc, FILE *hostfile, int *row_error, bool skip)