vm_tiny_tds 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +20 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +20 -0
  5. data/.rubocop.yml +31 -0
  6. data/.travis.yml +24 -0
  7. data/BACKERS.md +32 -0
  8. data/CHANGELOG.md +255 -0
  9. data/CODE_OF_CONDUCT.md +31 -0
  10. data/Gemfile +9 -0
  11. data/ISSUE_TEMPLATE.md +38 -0
  12. data/MIT-LICENSE +23 -0
  13. data/README.md +504 -0
  14. data/Rakefile +53 -0
  15. data/VERSION +1 -0
  16. data/appveyor.yml +51 -0
  17. data/bin/defncopy-ttds +3 -0
  18. data/bin/tsql-ttds +3 -0
  19. data/exe/.keep +0 -0
  20. data/ext/tiny_tds/client.c +451 -0
  21. data/ext/tiny_tds/client.h +51 -0
  22. data/ext/tiny_tds/extconf.rb +69 -0
  23. data/ext/tiny_tds/extconsts.rb +15 -0
  24. data/ext/tiny_tds/result.c +619 -0
  25. data/ext/tiny_tds/result.h +32 -0
  26. data/ext/tiny_tds/tiny_tds_ext.c +12 -0
  27. data/ext/tiny_tds/tiny_tds_ext.h +17 -0
  28. data/lib/tiny_tds/bin.rb +104 -0
  29. data/lib/tiny_tds/client.rb +136 -0
  30. data/lib/tiny_tds/error.rb +14 -0
  31. data/lib/tiny_tds/gem.rb +32 -0
  32. data/lib/tiny_tds/result.rb +7 -0
  33. data/lib/tiny_tds/version.rb +3 -0
  34. data/lib/tiny_tds.rb +61 -0
  35. data/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff +34 -0
  36. data/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff +28 -0
  37. data/patches/libiconv/1.14/1-avoid-gets-error.patch +17 -0
  38. data/tasks/native_gem.rake +14 -0
  39. data/tasks/package.rake +8 -0
  40. data/tasks/ports/freetds.rb +37 -0
  41. data/tasks/ports/libiconv.rb +43 -0
  42. data/tasks/ports/openssl.rb +78 -0
  43. data/tasks/ports/recipe.rb +52 -0
  44. data/tasks/ports.rake +87 -0
  45. data/tasks/test.rake +9 -0
  46. data/test/appveyor/dbsetup.ps1 +27 -0
  47. data/test/appveyor/dbsetup.sql +9 -0
  48. data/test/benchmark/query.rb +77 -0
  49. data/test/benchmark/query_odbc.rb +106 -0
  50. data/test/benchmark/query_tinytds.rb +126 -0
  51. data/test/bin/install-freetds.sh +20 -0
  52. data/test/bin/install-openssl.sh +18 -0
  53. data/test/bin/setup.sh +19 -0
  54. data/test/client_test.rb +230 -0
  55. data/test/gem_test.rb +179 -0
  56. data/test/result_test.rb +773 -0
  57. data/test/schema/1px.gif +0 -0
  58. data/test/schema/sqlserver_2000.sql +140 -0
  59. data/test/schema/sqlserver_2005.sql +140 -0
  60. data/test/schema/sqlserver_2008.sql +140 -0
  61. data/test/schema/sqlserver_2014.sql +140 -0
  62. data/test/schema/sqlserver_2016.sql +140 -0
  63. data/test/schema/sqlserver_azure.sql +140 -0
  64. data/test/schema/sybase_ase.sql +138 -0
  65. data/test/schema_test.rb +443 -0
  66. data/test/test_helper.rb +217 -0
  67. data/test/thread_test.rb +98 -0
  68. data/tiny_tds.gemspec +29 -0
  69. metadata +225 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c4131f7f19d87174b150625023a2f6f965c37bac75d1348dc5af9966dcbf91c4
4
+ data.tar.gz: 16a97cd034ba5d786609fbc16330cdcc0fcdd641dd4ee138d4036f2ae6fe6f01
5
+ SHA512:
6
+ metadata.gz: 9f12aab7d756040c306c9dc0bc9f0314a4460adba501822e7eb2625ab2e9df2a40f78072b4787edd657ac5e63a60d163f44e6fa21cc458992d1ff2b86baa0df7
7
+ data.tar.gz: 604cdd427a353962568a550ab0e1ead4a7e0aa79b65bb1a8a0738e3014c84465c34117313ba07c1305ec315381b63111f67f4170e8a134ab22dbd0ec2a9c64e3
data/.codeclimate.yml ADDED
@@ -0,0 +1,20 @@
1
+ engines:
2
+ bundler-audit:
3
+ enabled: true
4
+ duplication:
5
+ enabled: true
6
+ config:
7
+ languages:
8
+ - ruby
9
+ fixme:
10
+ enabled: true
11
+ rubocop:
12
+ enabled: true
13
+ ratings:
14
+ paths:
15
+ - "**.rb"
16
+ exclude_paths:
17
+ - ext/
18
+ - ports/
19
+ - test/
20
+ - tmp/
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ *.diff eol=lf
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ Makefile
2
+ *.dSYM
3
+ *.o
4
+ *.bundle
5
+ *.so
6
+ *.a
7
+ *.rbc
8
+ mkmf.log
9
+ pkg/
10
+ tmp
11
+ vendor
12
+ lib/tiny_tds/tiny_tds.rb
13
+ .rvmrc
14
+ .rbenv-version
15
+ Gemfile.lock
16
+ misc
17
+ *.gem
18
+ /exe/*
19
+ /ports/*
20
+ !/ports/patches/
data/.rubocop.yml ADDED
@@ -0,0 +1,31 @@
1
+
2
+ AllCops:
3
+ Include:
4
+ - '**/Rakefile'
5
+ Exclude:
6
+ - 'ext/**/*'
7
+ - 'ports/**/*'
8
+ - 'test/**/*'
9
+ - 'tmp/**/*'
10
+
11
+ # Redefined
12
+
13
+ Metrics/LineLength:
14
+ Max: 120
15
+
16
+ Metrics/ClassLength:
17
+ Max: 200
18
+
19
+ # Disabled
20
+
21
+ Style/Documentation:
22
+ Enabled: false
23
+
24
+ Style/EmptyLinesAroundClassBody:
25
+ Enabled: false
26
+
27
+ Style/EmptyLinesAroundModuleBody:
28
+ Enabled: false
29
+
30
+ Style/EmptyLinesAroundBlockBody:
31
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,24 @@
1
+ sudo: required
2
+ cache: bundler
3
+ services:
4
+ - docker
5
+ env:
6
+ global:
7
+ - PATH=/opt/local/bin:$PATH
8
+ - TESTOPTS="-v"
9
+ - TINYTDS_UNIT_HOST=localhost
10
+ rvm:
11
+ - 2.1.9
12
+ - 2.2.5
13
+ - 2.3.1
14
+ before_install:
15
+ - docker info
16
+ - sudo ./test/bin/install-openssl.sh
17
+ - sudo ./test/bin/install-freetds.sh
18
+ - sudo ./test/bin/setup.sh
19
+ install:
20
+ - gem install bundler
21
+ - bundle --version
22
+ - bundle install
23
+ script:
24
+ - bundle exec rake
data/BACKERS.md ADDED
@@ -0,0 +1,32 @@
1
+ # Backers
2
+
3
+ You can join in supporting TinyTDS and the Rails SQL Server Adapter development by [pledging on Patreon](https://www.patreon.com/metaskills)! Backers in the same pledge level appear in the order of pledge date.
4
+
5
+ ### $2000
6
+
7
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611218)
8
+
9
+
10
+ ### $500
11
+
12
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611209)
13
+
14
+
15
+ ### $250
16
+
17
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611199)
18
+
19
+
20
+ ### $100
21
+
22
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611196)
23
+
24
+
25
+ ### $50+
26
+
27
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611186)
28
+
29
+
30
+ ### $10+
31
+
32
+ [It could be you!](https://www.patreon.com/bePatron?c=765225&rid=1611149)
data/CHANGELOG.md ADDED
@@ -0,0 +1,255 @@
1
+ ## 2.1.2
2
+
3
+ * Use Kernel.BigDecimal vs BigDecimal.new. Fixes #409.
4
+ * Change `DBSETUTF16` abscence warning message. Fixes #410.
5
+ * Add Windows binary for Ruby-2.5. Fixes #408.
6
+
7
+ ## 2.1.1
8
+
9
+ * Move message_handler from a shared value to userdata.
10
+
11
+
12
+ ## 2.1.0
13
+
14
+ * Support RubyInstaller2 for Windows. Fixes #365.
15
+ * Support the FREETDS_DIR environment variable. Fixes #371.
16
+ * Rename binstubs to tsql-ttds and defncopy-ttds
17
+ * Support separate timeout values per connection Fixes #348.
18
+ * Allow client proc to capture INFO messages. Fixes #352.
19
+ * Use official HTTP mirrors instead of FTP. Fixes #384.
20
+
21
+
22
+ ## 2.0.0
23
+
24
+ * Stop building FreeTDS as a part of the extension build.
25
+
26
+
27
+ ## 1.3.0
28
+
29
+ * FreeTDS: Link libgcc statically for Windows. (#351) Fixes #349.
30
+
31
+
32
+ ## 1.2.0
33
+
34
+ * Use OpenSSL v1.1.0e & FreeTDS v1.00.27 for Windows builds.
35
+
36
+
37
+ ## 1.1.0
38
+
39
+ * Use rake-compiler-dock v0.6.0
40
+ * Handle SYBVARIANT types from SQL function. Fixes #317. Fixed #321.
41
+ * Fix `use_utf16` optoin for booleans. Fixes #314
42
+ * Add `-q` check for bin puts. Fixes #318
43
+ * Use FreeTDS 1.00.21.
44
+ * Appveyor tests only 2012, 2014 with one Ruby, 23-x64.
45
+ * CircleCI & TravisCI both test 2016.
46
+
47
+
48
+ ## 1.0.5
49
+
50
+ * Windows Static Builds - Use FreeTDS 1.00.15, OpenSSL 1.0.2j.
51
+ * Appveyor tests 2012, 2014, 2016.
52
+ * Error messages greater than 1024 chars generates a buffer overflow. Fixes #293.
53
+ * Ensures numeric options are treated numerically Fixes #303.
54
+ * New `:contained` login option. May deprecate `:azure`. Fixes #292.
55
+ * New `:use_utf16` login option. Toggle UCS-2 or UTF-16. Default true.
56
+
57
+
58
+ ## 1.0.4
59
+
60
+ * Use FreeTDS 1.0 final
61
+
62
+
63
+ ## 1.0.3
64
+
65
+ * Use FreeTDS 1.0rc5 for cross compile windows gems.
66
+ * Ensure we only work with latest FreeTDS v0.95.x or higher.
67
+
68
+
69
+ ## 1.0.2
70
+
71
+ * Cross compile w/2.3.0 using rake-compiler-dock ~> 0.5.1. Fixes #268 #270.
72
+ * Use FreeTDS 1.0rc4 for cross compile windows gems.
73
+
74
+
75
+ ## 1.0.1
76
+
77
+ * Fix ruby exe's in non-platform gem.
78
+
79
+
80
+ ## 1.0.0
81
+
82
+ * Tested with FreeTDS 1.0.
83
+ * Add emoji support by default using FreeTDS v1.0 in docs.
84
+
85
+
86
+ * 0.9.5 * (release candidates only)
87
+
88
+ * Binstub wrappers for `tsql`. Fixes #227 #251
89
+ * Add support for 2008 data types. Must use TDSVER 7.3 or higher. Fixes #244 #251
90
+ - [date]
91
+ - [datetime2]
92
+ - [datetimeoffset]
93
+ - [time]
94
+ * Default FreeTDS to 0.95. Support 0.91 Alternate Fixes #233
95
+ - Allow our `tds_version` to mirror TDSVER env var. Ex '7.3' vs '73'.
96
+ - Change error handler for `SYBEICONVO` to hard return INT_CANCEL.
97
+ * Made sure Azure logins are user@short vs. long domain. Fixes #229
98
+ * Removed Ruby 1.9.3 from CI builds.
99
+ * CI now tests Azure too.
100
+ * Fixed compiler warnings on all platforms. Fixed #241
101
+ * FreeTDS - Remove support for bad iconv.
102
+
103
+
104
+ ## 0.7.0
105
+
106
+ * Refactor build of FreeTDS & Iconv recipes. Add OpenSSL. Merged #207.
107
+ * Ensure zero terminated strings, where C-str pointers are expected. Use StringValueCStr() Fixes #208.
108
+ * Revert 999fa571 so timeouts do not kill the client. Fixes #179.
109
+ * Remove `sspi_w_kerberos.diff` patch. Not needed anymore.
110
+ * Tested again on Azure. Added notes to README on recommended settings.
111
+ * Replace `rb_thread_blocking_region` (removed in Ruby 2.2.0) w/`rb_thread_call_without_gvl`. Fixes #182.
112
+ * Remove 30 char password warning. Fixes #172.
113
+ * Remove Ruby 1.8.6 support. We always use Time vs edge case DateTime.
114
+
115
+
116
+ ## 0.6.2
117
+
118
+ * Support an optional environment variable to find FreeTDS. Fixes #128.
119
+ * Allow Support for 31+ Character Usernames/Passwords. Fixes #134. Thanks @wbond.
120
+ * Stronger Global VM Lock support for nonblocking connections. Fixes #133. Thanks @wbond.
121
+ * Timeout fix for working with Azure SQL. Fixes #138.
122
+ * Correctly handle requests that return multiple results sets via `.do`, such
123
+ as backups and restores. Fixes #150.
124
+
125
+
126
+ ## 0.6.1
127
+
128
+ Use both dbsetversion() vs. dbsetlversion. Partially reverts #62.
129
+
130
+
131
+ ## 0.6.0
132
+
133
+ * Use dbsetversion() vs. dbsetlversion. Fixes #62.
134
+ * Remove Ruby 1.8 support.
135
+ * Implement misc rb_thread_blocking_region support. Fixes #121. Thanks @lepfhty.
136
+ * Test FreeTDS v0.91.89 patch release.
137
+ * Fix lost connection handling. Fixes #124. Thanks @krzcho.
138
+ * Remove unused variable. Fixes #103. Thanks @jeremyevans.
139
+ * Remove need to specify username for Windows Authentication.
140
+ * Use proper SQL for returning IDENTITY with Sybase. Fixes #95.
141
+ * Compile windows with `--enable-sspi`.
142
+ * Allow MiniPortile to build any FreeTDS version we need. Fixes #76.
143
+ * Always convert password option to string. Fixes #92.
144
+ * Move test system to real MiniTest::Spec. All tests pass on Azure too.
145
+ * Raise and handle encoding errors on DB writes. Fixes #89.
146
+
147
+
148
+ ## 0.5.1
149
+
150
+ * Change how we configure with iconv, basically it is always needed. Fixes #11 & #69.
151
+
152
+
153
+ ## 0.5.0
154
+
155
+ * Copy mysql2s handling of Time and Datetime so 64bit systems are leveraged. Fixes #46 and #47. Thanks @lsylvester!
156
+ * Add CFLAGS='-fPIC' for libtool. Fix TDS version configs in our ports file. Document. Fixes #45
157
+ * Update our TDS version constants to reflect changed 8.0/9.0 to 7.1/7.2 DBLIB versions in FreeTDS
158
+ while making it backward compatible, again like FreeTDS. Even tho you can not configure FreeTDS with
159
+ TDS version 7.2 or technically even use it, I added tests to prove that we correctly handle both
160
+ varchar(max) and nvarchar(max) with large amounts of data.
161
+ * FreeTDS 0.91 has been released. Update our port scripts.
162
+ * Add test for 0.91 and higher to handle incorrect syntax in sp_executesql.
163
+ * Returning empty result sets with a command batch that has multiple statements is now the default. Use :empty_sets => false to override.
164
+ * Do not raise a TinyTds::Error with our message handler unless the severity is greater than 10.
165
+
166
+
167
+ ## 0.4.5
168
+
169
+ * Includes precompiled Windows binaries for FreeTDS 0.91rc2 & LibIconv. No precompiled OpenSSL yet for Windows to SQL Azure.
170
+ * Fixed symbolized unicode column names.
171
+ * Use same bigint ruby functions to return identity. Hopefully fixes #19.
172
+ * Release static libs for Windows.
173
+ * Change how :host/:port are implemented. Now sending "host:port" to :dataserver.
174
+
175
+
176
+ ## 0.4.4
177
+
178
+ * New :host/:port connection options. Removes need for freetds.conf file.
179
+
180
+
181
+ ## 0.4.3
182
+
183
+ * New Client#active? method to check for good connection. Always use this abstract method.
184
+ * Better SYBEWRIT "Write to SQL Server failed." error handling. New Client#dead? check.
185
+ * Azure tested using latest FreeTDS with submitted patch. https://gist.github.com/889190
186
+
187
+
188
+ ## 0.4.2
189
+
190
+ * Iconv is a dep only when compiling locally. However, left in the ability to configure
191
+ it for native gem installation but you must use
192
+ --enable-iconv before using --with-iconv-dir=/some/dir
193
+ * Really fix what 0.4.1 was supposed to do, force SYBDBLIB compile.
194
+
195
+
196
+ ## 0.4.1
197
+
198
+ * Undefine MSDBLIB in case others have explicitly compiled FreeTDS with "MS db-lib source compatibility: yes".
199
+
200
+
201
+ ## 0.4.0
202
+
203
+ * Allow SYBEICONVI errors to pass thru so that bad data is converted to ? marks.
204
+ * Build native deps using MiniPortile [Luis Lavena]
205
+ * Allow Result#fields to be called before iterating over the results.
206
+ * Two new client helper methods, #sqlsent? and #canceled?. Possible to use these to determine current
207
+ state of the client and the need to use Result#cancel to stop processing active results. It is also
208
+ safe to call Result#cancel over and over again.
209
+ * Look for the syb headers only.
210
+
211
+
212
+ ## 0.3.2
213
+
214
+ * Small changes while testing JRuby. Using options hash for connect vs many args.
215
+
216
+
217
+ ## 0.3.1
218
+
219
+ * Fix bad gem build.
220
+
221
+
222
+ ## 0.3.0
223
+
224
+ * Access stored procedure return codes.
225
+ * Make sure dead or not enabled connections are handled.
226
+ * Fix bad client after timeout & read from server errors.
227
+
228
+
229
+ ## 0.2.3
230
+
231
+ * Do not use development ruby/version, but simple memoize an eval check on init to find out, for 1.8.6 reflection.
232
+
233
+
234
+ ## 0.2.2
235
+
236
+ * Fixed failing test in Ruby 1.8.6. DateTime doesn't support fractional seconds greater than 59.
237
+ See: http://redmine.ruby-lang.org/issues/show/1490 [Erik Bryn]
238
+
239
+
240
+ ## 0.2.1
241
+
242
+ * Compatibility with 32-bit systems. Better cross language testing. [Klaus Gundermann]
243
+
244
+
245
+ ## 0.2.0
246
+
247
+ * Convert GUID's in a more compatible way. [Klaus Gundermann]
248
+ * Handle multiple result sets in command buffer or stored procs. [Ken Collins]
249
+ * Fixed some compiler warnings. [Erik Bryn]
250
+ * Avoid segfault related to smalldatetime conversion. [Erik Bryn]
251
+ * Properly encode column names in 1.9. [Erik Bryn]
252
+
253
+
254
+ ## 0.1.0 Initial release!
255
+
@@ -0,0 +1,31 @@
1
+ Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, we pledge to respect all
4
+ people who contribute through reporting issues, posting feature requests,
5
+ updating documentation, submitting pull requests or patches, and other
6
+ activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, or religion.
12
+
13
+ Examples of unacceptable behavior by participants include the use of sexual
14
+ language or imagery, derogatory comments or personal attacks, trolling, public
15
+ or private harassment, insults, or other unprofessional conduct.
16
+
17
+ Project maintainers have the right and responsibility to remove, edit, or
18
+ reject comments, commits, code, wiki edits, issues, and other contributions
19
+ that are not aligned to this Code of Conduct. Project maintainers who do not
20
+ follow the Code of Conduct may be removed from the project team.
21
+
22
+ This code of conduct applies both within project spaces and in public spaces
23
+ when an individual is representing the project or its community.
24
+
25
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
26
+ reported by opening an issue or contacting one or more of the project
27
+ maintainers.
28
+
29
+ This Code of Conduct is adapted from the Contributor Covenant
30
+ (http://contributor-covenant.org), version 1.1.0, available at
31
+ http://contributor-covenant.org/version/1/1/0/
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ group :development do
5
+ end
6
+
7
+ group :test do
8
+ gem 'minitest'
9
+ end
data/ISSUE_TEMPLATE.md ADDED
@@ -0,0 +1,38 @@
1
+ ## Before submitting an issue please check these first!
2
+
3
+ * On Windows? If so, do you need devkit for your ruby install?
4
+ * Using Ubuntu? If so, you may have forgotten to install FreeTDS first.
5
+ * Are you using FreeTDS 0.95.80 or later? Check `$ tsql -C` to find out.
6
+ * If not, please update then uninstall the TinyTDS gem and re-install it.
7
+ * Have you made sure to [enable SQL Server authentication](http://bit.ly/1Kw3set)?
8
+ * Doing work with threads and the raw client? Use the ConnectionPool gem?
9
+
10
+ If none of these help. Please fill out the following:
11
+
12
+ ## Environment
13
+
14
+ **Operating System**
15
+
16
+ Please describe your operating system and version here.
17
+ If unsure please try the following from the command line:
18
+
19
+ * For Windows: `systeminfo | findstr /C:OS`
20
+ * For Linux: `lsb_release -a; uname -a`
21
+ * For Mac OSX: `sw_vers`
22
+
23
+ **TinyTDS Version and Information**
24
+
25
+ ```
26
+ Please paste the full output of `ttds-tsql -C` (or `tsql -C` for older versions
27
+ of TinyTDS) here. If TinyTDS does not install, please provide the gem version.
28
+ ```
29
+
30
+
31
+ **FreeTDS Version**
32
+
33
+ Please provide your system's FreeTDS version. If you are using the pre-compiled
34
+ windows gem you may omit this section.
35
+
36
+ ## Description
37
+
38
+ Please describe the bug or feature request here.
data/MIT-LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2010-2014 Ken Collins <ken@metaskills.net>,
2
+ Will Bond (Veracross LLC) <wbond@breuer.com>
3
+
4
+ Permission is hereby granted, free of charge, to any person
5
+ obtaining a copy of this software and associated documentation
6
+ files (the "Software"), to deal in the Software without
7
+ restriction, including without limitation the rights to use,
8
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the
10
+ Software is furnished to do so, subject to the following
11
+ conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
+ OTHER DEALINGS IN THE SOFTWARE.